var xmlHttpRequestHandler = new Object();
xmlHttpRequestHandler.createXmlHttpRequest = function(){

  var XmlHttpRequestObject;
  if (typeof XMLHttpRequest != "undefined"){
   XmlHttpRequestObject = new XMLHttpRequest();
  }
  else if (window.ActiveXObject){
   // look up the highest possible MSXML version
   var tryPossibleVersions=["MSXML2.XMLHttp.5.0",
                          "MSXML2.XMLHttp.4.0",
                          "MSXML2.XMLHttp.3.0",
                          "MSXML2.XMLHttp",
                          "Microsoft.XMLHttp"];

  for (i=0; i< tryPossibleVersions.length; i++){
   try{
      XmlHttpRequestObject = new ActiveXObject(tryPossibleVersions[i]);
      break;
   }
   catch (xmlHttpRequestObjectError){
      //ignore
   }
  }
 }
 return XmlHttpRequestObject;
}

function showPoll(pollId) {

	var PAGE_SUCCESS = 200;
    var requestObject = xmlHttpRequestHandler.createXmlHttpRequest();

//	divPoll = document.getElementById('poll')
	var divPoll = document.getElementById(randId).previousSibling;
	while(divPoll.id != "poll") {
		divPoll = divPoll.previousSibling;
	}

	
    var showPollUrl = findChildElementById(divPoll, "poll_data_url").value;
	showPollUrl = showPollUrl.replace("POLL_ID", pollId);
    requestObject.open("Get",showPollUrl,false);
    requestObject.send(null);
   
    if (requestObject.status===PAGE_SUCCESS){
            generatePollView(requestObject.responseXML, pollId, randId);
    }
    else {
            //alert ("Request failed");
    }
}

function validateSubmit(form) {
    for(var i = 0; i < form.itemId.length; i++) {
        if(form.itemId[i].checked) {
            submitPoll(form);
            return false;
        }
    }
    alert('Phải chọn ít nhất một option');
    return false;
}

function submitPoll(form) {
    var PAGE_SUCCESS = 200;
    var requestObject = xmlHttpRequestHandler.createXmlHttpRequest();
    requestObject.open('POST', form.action, false);
    requestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    var postData = "pollId=" + form.pollId.value;
    for(var i = 0; i < form.itemId.length; i++) {
        if(form.itemId[i].checked) {
            postData += "&itemId="+form.itemId[i].value;
        }
    }

    requestObject.send(postData);
    
    if (requestObject.status===PAGE_SUCCESS){
        showPollResult(form.pollId.value, form.randId.value);
    }
    else {
        //alert ("Request failed");
    }
}
        
function generatePollView(pollData, pollId, randId) {
try {
    var progress = parseInt(pollData.getElementsByTagName('progress').item(0).childNodes.item(0).data);

    if(progress < 0)
		return;
    else {
        var title = pollData.getElementsByTagName('title').item(0).childNodes.item(0).data;
        var description = pollData.getElementsByTagName('description').item(0).childNodes.item(0).data;
        var rowType = pollData.getElementsByTagName('type').item(0).childNodes.item(0).data;
        var rowSet = pollData.getElementsByTagName('items').item(0);
        var rowNum = rowSet.getElementsByTagName('item').length;
    
        // Raw data here
        var rowID = new Array(rowNum);
        var rowDesc = new Array(rowNum);
        // Raw data end
        
        for(var i = 0; i < rowNum; i++) {
            var row = rowSet.getElementsByTagName('item').item(i);
            rowID[i] = row.getElementsByTagName('id').item(0).childNodes.item(0).data;
            rowDesc[i] = row.getElementsByTagName('description').item(0).childNodes.item(0).data;
        }
    
        // Write html to window
        var divPoll = document.getElementById(randId).previousSibling;
        while(divPoll.id != "poll") {
            divPoll = divPoll.previousSibling;
        }
        if(progress == 0) {
            var pollShowExpired = findChildElementById(divPoll, "poll_show_expired");
            var html = pollShowExpired.innerHTML;
            // Fill in data
            html= html.replace("POLL_TITLE", title);
            html= html.replace("POLL_DESCRIPTION", description);
            html= html.replace(/POLL_ID/g, pollId); 
            html= html.replace(/RAND_ID/g, randId);
            pollShowExpired.innerHTML = html;
        
            // Render poll items
            var pollItemsExpired = findChildElementById(pollShowExpired, "poll_show_items_expired");
            var sampleItem = pollItemsExpired.innerHTML;
            pollItemsExpired.innerHTML = "";
            
            // Insert new rows    
            for(var i = 0; i < rowNum; i++) {
              pollItemsExpired.innerHTML += sampleItem.replace("ITEM_DESCRIPTION", rowDesc[i]);      
            }
            pollShowExpired.style.display = "none";
			document.getElementById('poll').style.display="none";
        } else {
            var pollShow = findChildElementById(divPoll, "poll_show");
            var html = pollShow.innerHTML;
            // Fill in data
            html= html.replace("POLL_TITLE", title);
            html= html.replace("POLL_DESCRIPTION", description);
            html= html.replace(/POLL_ID/g, pollId);    
            html= html.replace(/RAND_ID/g, randId);
            pollShow.innerHTML = html;            
        
            // Render poll items
            var pollShowItems = findChildElementById(pollShow, "poll_show_items");
            var sampleItem = pollShowItems.innerHTML;
            pollShowItems.innerHTML = "";
            
            // Insert new rows    
            for(var i = 0; i < rowNum; i++) {
              var newItem = sampleItem;
              var inputHTML = "";
              if(rowType === "MULTIPLE_CHOICE") {
                inputHTML = "<div class=\"item\"><div class=\"radio\"><input type=\"checkbox\" id=\"input_"+rowID[i]+"\" name=\"itemId\" value=\""+rowID[i]+"\"></div>";
              } else {
                inputHTML = "<div class=\"item\"><div class=\"radio\"><input type=\"radio\" id=\"input_"+rowID[i]+"\" name=\"itemId\" value=\""+rowID[i]+"\"></div>";  
              }

             if (i== rowNum - 1)
             {
              newItem = newItem.replace("ITEM_DESCRIPTION", "<div class=\"description\"  id=\"input_"+rowID[i]+"\">"+rowDesc[i]+"</div><div class=\"clear\"></div></div>");
             }
		else
		{
              newItem = newItem.replace("ITEM_DESCRIPTION", "<div class=\"description\" id=\"input_"+rowID[i]+"\">"+rowDesc[i]+"</div><div class=\"clear\"></div></div>");
		}

              newItem = newItem.replace("INPUT_TYPE", inputHTML);

              pollShowItems.innerHTML += newItem;      
            }

            pollShow.style.display = "block";
        }
    }
} catch(err) {
    //alert(err);
}
}

function findChildElementById(parentNode, id) {
    for(var i = 0; i < parentNode.childNodes.length; i++) {
        if(parentNode.childNodes[i].id == id)
            return parentNode.childNodes[i];
        else {
            var n = findChildElementById(parentNode.childNodes[i], id);
            if(n)
                return n;
        }
    }
    return;
}

function showPollResult(pollId, randId){
    var PAGE_SUCCESS = 200;
    var requestObject = xmlHttpRequestHandler.createXmlHttpRequest();
    
    var divPoll = document.getElementById(randId).previousSibling;
    while(divPoll.id != "poll") {
            divPoll = divPoll.previousSibling;
    }
            
    var pollResultURL = findChildElementById(divPoll, "poll_result_url").value;
    pollResultURL = pollResultURL.replace("POLL_ID", pollId);
    requestObject.open("Get",pollResultURL,false);
    requestObject.send(null);
    
    if (requestObject.status===PAGE_SUCCESS){
            generatePollResult(requestObject.responseXML, randId);
    }
    else {
            //alert ("Request failed");
    }
}
        
function generatePollResult(pollData, randId) {
try {
    var poll = pollData.getElementsByTagName('poll').item(0);
    var title = poll.getElementsByTagName('title').item(0).childNodes.item(0).data;
    var description = poll.getElementsByTagName('description').item(0).childNodes.item(0).data;
    var rowSet = poll.getElementsByTagName('rowset').item(0);
    var rowNum = rowSet.getElementsByTagName('row').length;

    // Raw data here
    var rowDesc = new Array(rowNum);
    var rowScope = new Array(rowNum);
    var rowCount = new Array(rowNum);
    var rowPoint = new Array(rowNum);
    var rowPercent = new Array(rowNum);
    var rowPercentToFixed = new Array(rowNum);
    var totalPoint = 0;
    // Raw data end
    
    for(var i = 0; i < rowNum; i++) {
        var row = rowSet.getElementsByTagName('row').item(i);
        rowDesc[i] = row.getElementsByTagName('description').item(0).childNodes.item(0).data;
        rowScope[i] = row.getElementsByTagName('value').item(0).childNodes.item(0).data;
        rowCount[i] = row.getElementsByTagName('count').item(0).childNodes.item(0).data;
        rowPoint[i] = rowScope[i] * rowCount[i];
        totalPoint += rowPoint[i];        
    }
    
    //Tinh toan ket qua %
    var lastRowPercent = 100;
    for(var i = 0; i < rowNum; i++) {
        if(i < rowNum-1) {
            rowPercent[i] = rowPoint[i]*100/totalPoint;
            rowPercentToFixed[i] = rowPercent[i].toFixed(2);
            lastRowPercent -= rowPercent[i];
        } else {
			if(lastRowPercent < 0)
				lastRowPercent = 0;
            rowPercent[rowNum-1] = lastRowPercent;
            rowPercentToFixed[rowNum-1] = rowPercent[rowNum-1].toFixed(2);
        }
    }
    
    // Write html to window
    var divPoll = document.getElementById(randId).previousSibling;
    while(divPoll.id != "poll") {
        divPoll = divPoll.previousSibling;
    }
    
    var html = findChildElementById(divPoll, "poll_result").innerHTML;
    html = "<link rel=\"stylesheet\" type=\"text/css\" href=\"/common/v3/css/poll.css\" />\n" + html;
    html= html.replace("POLL_TITLE", title);
    html= html.replace("POLL_DESCRIPTION", description);
    html= html.replace("POLL_TOTAL", totalPoint);

    // Render poll items
    var pollItems = document.getElementById("poll_result_items");
    var sampleItem = pollItems.innerHTML;
    var newGeneratedPollItems = "";
    
    // Insert new rows    
    for(var i = 0; i < rowNum; i++) {
      var newItem = sampleItem;
      newItem = newItem.replace("POLL_OPTION", rowDesc[i]);
      newItem = newItem.replace("VOTE_PERCENT_BAR_W", parseInt(0.5+1.5*parseFloat(rowPercentToFixed[i])));
      newItem = newItem.replace("VOTE_PERCENT", rowPercentToFixed[i]);
      newItem = newItem.replace("VOTE_COUNT", rowPoint[i]);
      newGeneratedPollItems += newItem;      
    }
    html= html.replace(sampleItem, newGeneratedPollItems);
    // End render poll items

   // Write to new window
    vWH = 350;
    vWW = 643;
    vWN = 'AddNew';
    winDef = 'status=no,resizable=no,scrollbars=yes,toolbar=no,location=no,fullscreen=no,titlebar=yes,height='.concat(vWH).concat(',').concat('width=').concat(vWW).concat(',');
    winDef = winDef.concat('top=').concat((screen.height - vWH)/2).concat(',');
    winDef = winDef.concat('left=').concat((screen.width - vWW)/2);

    newwin = open('/tham-do-y-kien/', '', winDef);

    //newwin.document.open();
   // newwin.document.write(html);
    //newwin.document.close();
   // newwin.focus();

	setTimeout(function() {
		newwin.document.title = title + ' - ' + newwin.document.title;
		newwin.document.body.innerHTML = html + newwin.document.body.innerHTML.replace('hidden', 'visible');
	}, 1000);

} catch(err) {}

}

