dojo.require("dojo.parser");
function addChoice(parse){
    var table = document.getElementById('choiceTable');
    var cell1 = "<a href='' class=\"cancelbutton\" onclick=\"deleteChoice(" + buttonid + ",event)\" tabindex=-1> </a>";
    var cell2 = "";
    var cell3 = "<input name='cname' value='' " +
    "dojoType='dijit.form.TextBox'" +
    "required='false' >";
	var cell4 = "<a href='' class=\"moveupbutton\" onclick=\"moveupChoice(" + buttonid + ",event)\" tabindex=-1> </a>";
    table.insertRow(table.rows.length);
    var row = table.rows[table.rows.length - 1];
    row.valign = top;
    row.insertCell(0);
    row.insertCell(1);
    row.insertCell(2);
	row.insertCell(3);
    row.cells[0].innerHTML = cell1;
    row.cells[1].innerHTML = cell2;
    row.cells[2].innerHTML = cell3;
	if(buttonid>0)
		row.cells[3].innerHTML = cell4;
    row.id = buttonid + 'row';
    buttonid++;
    var newchoice = {
        name: "",
        type: -1,
        optid: -1,
        activ: 1
    };
    pollchoices[pollchoices.length] = newchoice;
    if (parse) {
        dojo.parser.parse(dojo.byId('choiceTable'));
    }
}

function create(){
	var poll = document.pollForm;
	var email_param = dojo.byId('emailDiv').innerHTML;
	if (poll.email) email_param = poll.email.value;
	if (!email_param || email_param == "") {
		dojo.requireLocalization("translate", "newPollNls", locale);
		var textResources = dojo.i18n.getLocalization("translate", "newPollNls", locale);
		dijit.byId("confirmMsg").show();
		dojo.byId("confirmText").innerHTML=textResources.noEmailConfirm;
	}
	else {
		confirmOk();
	}
}

function confirmOk(){
	var poll = document.pollForm;
	var email_param = "";
	if (poll.email) email_param = poll.email.value;
	
    var data = {
        title: poll.pollTitle.value,
        user: poll.name.value,
        userId: userId,
        adminId: pollAdminId,
        comments: poll.comments.checked,
        description: poll.description.value,
        email: email_param,
        ratings: poll.ratings.checked,
		edit: poll.edit.checked,
        locale: locale
    };
    var rows = document.pollForm.cname;
    var names = new Array();
    var ids = new Array();
	var sortids = new Array();
    var activ = new Array();
    var activeCt = 0;
    for (var i = 0; i < pollchoices.length; i++) {
		var choicename="";
        if (pollchoices[i].activ == 1) {
			if(rows.value)
            	choicename=rows.value;
			else 
				choicename=rows[activeCt].value;
            activeCt++;
			sortids.push(activeCt);
        }
        else {		
            choicename=pollchoices[i].name;
			sortids.push(-1);
        }
		if (pollchoices[i].optid != -1 || pollchoices[i].activ == 1) {
			//don't add if new choice and not active
			names.push(choicename);
			activ.push(pollchoices[i].activ);
			ids.push(pollchoices[i].optid);

		}
    }
    data.choices = names;
    data.choiceIds = ids;
    data.choiceActiv = activ;
	data.sortIds=sortids;
    if (pollAdminId == "") {
        dojo.xhrPost({
            handle: createCallback,
            url: '/resources/poll',
            handleAs: "json",
            content: data
        });
    }
    else {
        dojo.xhrPut({
            handle: createCallback,
            url: '/resources/poll/' + pollAdminId,
            handleAs: "json",
            content: data
        });
    }
}

function close(){
    if (pollAdminId == "") {
        
return;
    }
    var data = {
        adminId: pollAdminId
    };
    if (pollActive) {
        dojo.xhrPost({
            handle: closureCallback,
            url: '/resources/pollClosure',
            handleAs: "json",
            content: data
        });
    }
    else {
        dojo.xhrDelete({
            handle: closureCallback,
            url: '/resources/pollClosure',
            handleAs: "json",
            content: data
        });
    }
}

dojo.addOnLoad(function(){
	
    var params = window.location.search.split("?");
    for (var i = 0; i < params.length; i++) {
        if (params[i].indexOf("=") == -1) 
            pollAdminId = params[i];
        else {
            var par = params[i].split("=");
            if (par[0] == "loc") locale = par[1];
        }
    }
	dojo.byId('createTab').className='tabact';
    if (pollAdminId.length > 0) {

        getTable(pollAdminId);
    }
    else {

        addChoice(false);
        addChoice(false);
        dojo.parser.parse(dojo.byId('container'));
		dijit.byId("commentCb").setValue(true);
		dijit.byId("editCb").setValue(true);
        if (dijit.byId("closeButton")) dijit.byId('closeButton').destroyRecursive();
        
            dojo.xhrGet({
                handle: localeCallback,
                url: '/resources/Locale/0',
                handleAs: "json",
                content: locale
            });
  
    }
	logoBg();
    dojo.byId('titleTextBox').focus();
});
function getTable(pollAdminId){
    var res = dojo.xhrGet({
        handle: pollInfoCallback,
        url: '/resources/poll/' + pollAdminId,
        handleAs: "json",
        content: pollAdminId
    });
}

function pollInfoCallback(data, type, evt){
    if (type == 'error') {
		dojo.byId('errorText').innerHTML='Error retrieving data from the server!';
        dijit.byId('errorMsg').show();
	}
    else if (data != null && data.length == 1) {
				dojo.byId('errorText').innerHTML=data[0];
        dijit.byId('errorMsg').show();
    }
    else if (data != null && data.length > 1) {
        if (locale == "") locale = data[4];
        pollActive = (data[6] == 1);
        dojo.parser.parse(dojo.byId('container'));
        setLocalizedData();
        var poll = document.pollForm;
        poll.pollTitle.value = data[0];
        poll.name.value = data[1];
        poll.description.value = data[2];
        poll.email.value = data[5];
        poll.comments.checked = ((data[3][0].type % 4) >= 2);
        dojo.parser.parse(dojo.byId('descriptionDiv'));
        dijit.byId("descriptionDiv").setValue(poll.description.value);
        poll.ratings.checked = ((data[3][0].type % 2) >= 1);
		poll.edit.checked = ((data[3][0].type % 8) >= 4);
        document.getElementById('nameDiv').innerHTML = data[1];
        document.getElementById('emailDiv').innerHTML = data[5];
        dijit.byId("commentCb").setChecked(poll.comments.checked);
        dijit.byId("ratingCb").setChecked(poll.ratings.checked);
		dijit.byId("editCb").setChecked(poll.edit.checked);
        pollActive = (data[6] == 1);
        var choices = poll.cname;
        for (var i = 0; i < data[3].length; i++) {
            if (data[3][i].activ == 1) {
                addChoice(true);
                if (poll.cname.length) {
                    poll.cname[poll.cname.length - 1].value = data[3][i].name;
                }
                else {
                    poll.cname.value = data[3][i].name;
                }
            } else {
				buttonid++;
			}
        }
        pollchoices = data[3];
        dojo.byId("exceptionText").innerHTML = "";
    }
    loadFinished = true;
    dojo.byId('titleTextBox').focus();
}

function createCallback(data, type, evt){
   if (type == 'error') {
		dojo.byId('errorText').innerHTML='Error retrieving data from the server!';
        dijit.byId('errorMsg').show();
	}
    else if (data != null && data.length == 1 && data[0].search && data[0].search("exception") == 0) {
						dojo.byId('errorText').innerHTML=data[0];
        dijit.byId('errorMsg').show();
    }
    else if (data != null) {
        window.location.href = "poll.html?" + data[0] + "?loc=" + locale;
    }
}

function localeCallback(data, type, evt){
       if (type == 'error') {
		dojo.byId('errorText').innerHTML='Error retrieving data from the server!';
        dijit.byId('errorMsg').show();
	}
    else if (data != null && data.length == 1 && data[0].search && data[0].search("exception") == 0) {
        				dojo.byId('errorText').innerHTML=data[0];
        dijit.byId('errorMsg').show();
    }
    else if (data != null) {
		if(locale=="")
        	locale = data[0];
		if(data[1] && data[1]!=null && data[1]!=""){
			dojo.byId("userNameInput").innerHTML = data[1];
			dojo.byId("pwdInput").innerHTML = "<a href='' onclick='doLogout()'> logout </a>";
		} else {
			dojo.byId("userNameInput").innerHTML = "";
			dojo.byId("pwdInput").innerHTML = "";
		}
        dojo.byId("exceptionText").innerHTML = "";
    }
    setLocalizedData();
    loadFinished = true;
    dojo.byId('titleTextBox').focus();
}

function closureCallback(data, type, evt){
    if (type == 'error') {
		dojo.byId('errorText').innerHTML='Error retrieving data from the server!';
        dijit.byId('errorMsg').show();
	}
    else if (data != null && (data.length == 1 || (data.name && data.name == "Error"))) {
        var errorTxt = "error";
        if (data.length == 1) errorTxt = data[0];
        if (data.name && data.name == "Error") errorTxt = data;
    }
    else {
        var textResources = dojo.i18n.getLocalization("translate", "newPollNls", locale);
        pollActive = !pollActive;
        if (dijit.byId("closeButton")) if (pollActive) 
            dijit.byId("closeButton").setLabel(textResources.close);
        else 
            dijit.byId("closeButton").setLabel(textResources.reopen);
        if (pollActive) {
							dojo.byId('errorText').innerHTML=textResources.reopenMsg;
        dijit.byId('errorMsg').show();
		} else {
										dojo.byId('errorText').innerHTML=textResources.closedMsg;
        dijit.byId('errorMsg').show();
		}
    }
}

function setLocalizedData(){
    dojo.requireLocalization("translate", "newPollNls", locale);
    var textResources = dojo.i18n.getLocalization("translate", "newPollNls", locale);
    dojo.byId("createDiv").innerHTML = textResources.create;
    dojo.byId("titleDiv").innerHTML = textResources.title;
    dojo.byId("descDDiv").innerHTML = textResources.description;
    dojo.parser.parse(dojo.byId('descriptionDiv'));
    if (trim(dijit.byId("descriptionDiv").getValue()) == "" || trim(dijit.byId("descriptionDiv").getValue()) == "\n") dijit.byId("descriptionDiv").setValue(textResources.descriptionText);
    dojo.byId("nameTooltip").innerHTML = textResources.name;
    dojo.byId("nameTTSpan").innerHTML = textResources.nameTT;
    dojo.byId("emailTooltip").innerHTML = textResources.email;
    dojo.byId("emailTTSpan").innerHTML = textResources.emailTT;
    dojo.byId("commentTooltip").innerHTML = textResources.comment;
    dojo.byId("commentTTSpan").innerHTML = textResources.commentTT;
    dojo.byId("ratingTooltip").innerHTML = textResources.rating;
    dojo.byId("ratingTTSpan").innerHTML = textResources.ratingTT;
	dojo.byId("editTooltip").innerHTML = textResources.edit;
    dojo.byId("editTTSpan").innerHTML = textResources.editTT;
    dojo.byId("choiceDiv").innerHTML = textResources.choices;
    dijit.byId("addButton").setLabel(textResources.addChoice);
    dijit.byId("submitButton").setLabel(textResources.submit);
    if (dijit.byId("closeButton")) if (pollActive) 
        dijit.byId("closeButton").setLabel(textResources.close);
    else 
        dijit.byId("closeButton").setLabel(textResources.reopen);
    dojo.requireLocalization("translate", "apolloNls", locale);
    var apolloResources = dojo.i18n.getLocalization("translate", "apolloNls", locale);
    dojo.byId("createTab").innerHTML = "<a href='newPoll.html?loc=" + locale + "'>" + apolloResources.create + "</a>";
    dojo.byId("participateTab").innerHTML = "<a href='choosepoll.html?loc=" + locale + "'>" +apolloResources.participate+ "</a>";
    dojo.byId("examplesTab").innerHTML = "<a href='example.html?loc=" + locale + "'>" + apolloResources.examples + "</a>";
    dojo.byId("aboutTab").innerHTML = "<a href='about.html?loc=" + locale + "'>" + apolloResources.about + "</a>";
	dojo.byId("whyTab").innerHTML = "<a href='why.html?loc=" + locale + "'>" + apolloResources.why + "</a>";
	dojo.byId("privacyTab").innerHTML = "<a href='policy.html?loc=" + locale + "'>" + apolloResources.privacy + "</a>";	
	dojo.byId("helpTab").innerHTML = "<a href='help.html?loc=" + locale + "'>" + apolloResources.help + "</a>";
	dojo.byId("sampleTab").innerHTML = "<a href='samplePolls.html?loc=" + locale + "'>" + apolloResources.sample + "</a>";	
	dojo.byId("bugTab").innerHTML = "<a href='bug.html?loc=" + locale + "'>" + apolloResources.bug + "</a>";	
    dojo.byId("datePickerTooltip").innerHTML = textResources.datePicker;
    dojo.byId("datePickerTTSpan").innerHTML = textResources.datePickerTT;
    dojo.byId("dateFormatTooltip").innerHTML = textResources.dateFormatText;
    dojo.byId("dateFormatTTSpan").innerHTML = textResources.dateFormatTT;
    dijit.byId("dateFormatInput").setValue(textResources.dateFormat);
    dateFormat = textResources.dateFormat;
    dojo.byId("dateFormatEx").innerHTML = textResources.example + displayDate(new Date());
    if (dojo.byId("welcomeDiv1")) {
        dojo.byId("welcomeDiv1").innerHTML = textResources.welcome1;
		dojo.byId("welcomeDiv2").innerHTML = textResources.welcome2;
		dojo.byId("welcomeDiv3").innerHTML = textResources.welcome3;
		dojo.byId("welcomeDiv4").innerHTML = textResources.welcome4;
    }
}

// for the calendar
function calendarHandler(newDate){
    if (!loadFinished) 
return;
    var date = displayDate(newDate);
    var options = document.pollForm.cname;
    var inserted = false;
    var i = 0;
    while (!inserted && options && i < options.length) {
        if (options[i].value == "") {
            options[i].value = date;
            inserted = true;
        }
        i++;
    }
    if (!inserted && options && !options.length) {
        //options has exactly one element
        if (options.value == "") {
            options.value = date;
            inserted = true;
        }
    }
    if (!inserted) {
        addChoice(true);
        options = document.pollForm.cname;
        if (options.length) 
            options[options.length - 1].value = date;
        else 
            options.value = date;
    }
};
function displayDate(date){
    var textResources = dojo.i18n.getLocalization("translate", "newPollNls", locale);
    var months = textResources.months.split(",");
    var days = textResources.days.split(",");
    var dateString = dateFormat;
    dateString = dateString.replace("dd", date.getDate().toString());
    dateString = dateString.replace("DDD", days[date.getDay()]);
    dateString = dateString.replace("mm", (date.getMonth() + 1).toString());
    dateString = dateString.replace("MMM", months[date.getMonth()]);
    dateString = dateString.replace("yy", (date.getYear()).toString().substring(1));
    dateString = dateString.replace("YYYY", date.getFullYear().toString());
    
return dateString;
}

function deleteChoice(id, event){
    dojo.stopEvent(event);
    var table = document.getElementById('choiceTable');
    var rowId = id + 'row';
    for (var i = 0; i < table.rows.length; i++) {
        if (table.rows[i].id == rowId) table.deleteRow(i);
    }
	var activeCt=0;
	for (var i = 0; i < table.rows.length; i++) {
		
	}
    pollchoices[id].activ = 0;
}

function moveupChoice(id, event){
    dojo.stopEvent(event);
	var lastActive=-1;
	var activeCt=-1;
    for (var i = 0; i < id; i++) {
        if (pollchoices[i].activ == 1) {
            lastActive = i;
			activeCt++;
        }
    }
	if(activeCt<0)
		return;
	var rows = document.pollForm.cname;
	var tmpOptId=pollchoices[lastActive].optid;
	var tmpName=rows[activeCt].value;
	pollchoices[lastActive].optid=pollchoices[id].optid;
	pollchoices[lastActive].name=rows[activeCt+1].value;
	pollchoices[id].optid=tmpOptId
	pollchoices[id].name=tmpName;
	rows[activeCt].value=rows[activeCt+1].value;
	rows[activeCt+1].value=tmpName;
}

function changeLoc(loc, event){
    dojo.stopEvent(event);
    var oldRes = dojo.i18n.getLocalization("translate", "newPollNls", locale);
    if (dijit.byId("descriptionDiv").getValue() == oldRes.descriptionText) dijit.byId("descriptionDiv").setValue("");
    locale = loc;
    setLocalizedData();
}

function changeDateFormat(){
    var textResources = dojo.i18n.getLocalization("translate", "newPollNls", locale);
    dateFormat = dijit.byId("dateFormatInput").getValue();
    dojo.byId("dateFormatEx").innerHTML = textResources.example + " " + displayDate(new Date());
}

function trim(s){
    if (!s.length || s.length == 0) 
return s;
    while (s.substring(0, 1) == ' ') {
        s = s.substring(1, s.length);
    }
    while (s.substring(s.length - 1, s.length) == ' ') {
        s = s.substring(0, s.length - 1);
    }
    
return s;
}


function deleteDesc(){
	var textResources = dojo.i18n.getLocalization("translate", "newPollNls", locale);
	var area=dijit.byId('descriptionDiv');
	if(area.getValue()==textResources.descriptionText){
		area.setValue("");
	}
	area.focus();
	
}

function resetDesc(){
	var textResources = dojo.i18n.getLocalization("translate", "newPollNls", locale);
	var area=dijit.byId('descriptionDiv');
	if(area.getValue()==""){
		area.setValue(textResources.descriptionText);
	}
	
}

function doLogout(event){
	     dojo.xhrPost({
            url: '/resources/Logout',
            handleAs: "json",
            content: locale,
			handle: logoutCallback
        });
		dojo.byId("userNameInput").innerHTML = "";
		dojo.byId("pwdInput").innerHTML = "";
		
    	dojo.stopEvent(event);
	
}

function logoutCallback(){
}

function logoBg(){

    var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
    var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);
    var img = dojo.byId('logo');
    if (itsAllGood && img) {
        var div = document.createElement("DIV");
        div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.src + "', sizing='scale')"
        div.style.width = img.width + "px";
        div.style.height = img.height + "px";
        img.replaceNode(div);
    }
}

