
dojo.require("dojo.io.*");

var valid = 7;
var day = 86400;
var cn = "___srv";

function sendVote() {

    dojo.io.bind({
        load: showResults,
        error: errorHandler,
        formNode: dojo.byId("surveyForm"),
        mimetype: "text/json"
    });
  
}

function errorHandler(type, error) {
    //var msg = "Something went horribly wrong ...\n" +
    //error.message;
    //alert(msg);
}

function showResults(load, data, e) {
    if (readCookie(cn)) {
        cleanUpCookie(readCookie(cn));
    }
    var temp;
    var now = new Date();
    var date = Math.round(now.getTime() / 1000);
    var str = data.id + "-" + date;
    if (readCookie(cn)) {
        temp = readCookie(cn);
        temp += "," + str;
    } else {
        temp = str;
    }
    createCookie(cn, temp, valid);
    handleJSON(data);
    return data;
}


				
						function handleJSON(survey, otherDiv) {
							var root = dojo.byId('surveyDiv');
	
							if (!root) {
								root = dojo.byId(otherDiv);
								var other = document.createElement('div');
								other.id = 'surveyDiv';
								root.appendChild(other);
								root = other;
							}
	
							while (root.firstChild) {
								root.removeChild(root.firstChild);
							}
							var outer_ul = document.createElement('ul');
							if (survey.single) {
								outer_ul.id = "single";
							} else {
								outer_ul.id = "multi";
							}
							if (survey.questions) {
								for (var i = 0; i < survey.questions.length; i++) {
									var outer_li = document.createElement('li');
									var q = survey.questions[i];
									var h3 = document.createElement('h6');
									h3.appendChild(document.createTextNode(q.question));
									var inner_ul = document.createElement('ul');
									if (q.answers) {
										for (var j = 0; j < q.answers.length; j++) {
											var inner_li = document.createElement('li');
											var a = q.answers[j];
											var span = document.createElement('span');
											var text = document.createTextNode(a.percentage + '%');
											span.appendChild(text);
											text = document.createTextNode(a.answer);
											if (survey.single) {
												inner_li.appendChild(span);
												inner_li.appendChild(text);
											} else {
												inner_li.appendChild(text);
												inner_li.appendChild(span);
											}
											if (!survey.single) {
												var percentage = document.createElement('div');
												span.className = 'beam';
												var style = percentage.style;
												style.display = 'block';
												style.width = (10 + a.percentage * 2) + 'px';
												style.paddingLeft = '1em';
												percentage.className = 'vbar';
												percentage.appendChild(document.createTextNode('\u00a0'));
												inner_li.appendChild(percentage);
											}
											inner_ul.appendChild(inner_li);
										}
									}
									outer_li.appendChild(h3);
									outer_li.appendChild(inner_ul);
									outer_ul.appendChild(outer_li);
								}
							}
							var span = document.createElement('span');
							span.appendChild(document.createTextNode('Votes: ' + survey.votes));
							if (survey.single) {
								var li = document.createElement("li");
								li.appendChild(span);
								outer_ul.appendChild(li);
								root.appendChild(outer_ul);
							} else {
								root.appendChild(outer_ul);
								root.appendChild(span);
							}
						}
				
			



function loadSurvey(surveyId) {
    var cookie = checkCookie(surveyId);
    if (!cookie) {
      dojo.io.bind({
          url: unescape(displayURL) + "surveyId=" + surveyId,
          load: showSurvey,
          error: errorHandler,
          encoding: "utf8"
      });
    } else {
      dojo.io.bind({
          url: unescape(displayURL) + "surveyId=" + surveyId + (cookie ? "&cookie=true" : ""),
          load: intermediate,
          error: errorHandler,
          mimetype: "text/json",
          encoding: "utf8"
      });
    }
}

function intermediate(load, data, e) {
    handleJSON(data, 'surveyDisplay');
}

function showSurvey(load, data, e) {
		// JSON data starts with "{"
		if ((data.indexOf("{")>=0) && (data.indexOf("{")<3)) {
	    handleJSON(eval('('+data+')'), 'surveyDisplay');
		} else {
	    var div = dojo.byId('surveyDisplay');
	    while (div.firstChild) {
	        div.removeChild(div.firstChild);
	    }
	    div.innerHTML = data;
		}
}

function cleanUpCookie(val) {
    var lines = val.split(",");
    var temp;
    var resval;
    var now = new Date();
    var date = Math.round(now.getTime() / 1000);
    var result = new Array();
    for (var i = 0; i < lines.length; i++) {
        temp = lines[i].split("-");
        if (temp[1] > date - (valid * day)) {
            result.push(lines[i]);
        }
    }
    if (lines.length != result.length) {
        if (result[0]) {
            resval = result[0];
        }
        for (var i = 1; i < result.length; i++) {
            resval += "," + result[i];
        }
        createCookie(cn, resval, valid);
    }
}

function checkCookie(id) {
    if (readCookie(cn)) {
        var lines = readCookie(cn).split(",");
        for (i = 0; i < lines.length; i++) {
            temp = lines[i].split("-");
            if (temp[0] == id) {
                return true;
            }
        }
    }
    return false;
}

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    } else {
        var expires = "";
    }
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1,c.length);
        }
        if (c.indexOf(nameEQ) == 0) {
            return c.substring(nameEQ.length, c.length);
        }
    }
    return null;
}

var displayURL = encodeURIComponent("/surveys/survey?");



