function loadPoll (pgroup) {
   if (document.getElementById('poll')) {
      s1 = 'option=getpoll&group=' + pgroup;
      doAjax('/pollprox.php',s1,'cbackgetpoll','get','1');
      //doAjax('/polls/pollprox.php',s1,'cbackgetpoll','get','1');
   }
}

function castVote (form, pid) {
   s1 = 'pollid=' + pid + '&option=vote';
   // extract the value from the selected radio button
   var i = getSelectedButton(form.group1);
   if (i > -1) {
      s1 = s1 + '&optionid=' + form.group1[i].value;
      doAjax('/pollprox.php',s1,'cbackshowresult','get','1');
      //doAjax('/polls/pollprox.php',s1,'cbackshowresult','get','1');
   }
}


function cbackgetpoll(xml) {
   // the callback function from ajax for 'getpoll' option
   var sFault = getText(xml, 'fault');
   if (sFault == "") {
      var node = xml.getElementsByTagName('poller');
      if (node[0].attributes == null)
         document.getElementById('poll').innerHTML = "Version incorrect";
      else {
         var sversion = node[0].attributes.getNamedItem("version").value;
         if (sversion != "v1.03")
            document.getElementById('poll').innerHTML = "Version incorrect (" + sversion + ")";
         else
            document.getElementById('poll').innerHTML = buildPoll(xml);
      }
   }
   else {
      document.getElementById('poll').innerHTML = sFault;
   }
}

function cbackshowresult(xml) {
   // the callback function from ajax for 'vote' option
   var sFault = getText(xml, 'fault');
   if (sFault == "") {
      var node = xml.getElementsByTagName('poller');
      if (node[0].attributes == null)
         document.getElementById('poll').innerHTML = "Version incorrect";
      else {
         var sversion = node[0].attributes.getNamedItem("version").value;
         if (sversion != "v1.03")
            document.getElementById('poll').innerHTML = "Version incorrect (" + sversion + ")";
         else
            document.getElementById('poll').innerHTML = showPoll(xml);
      }
   }
   else {
      document.getElementById('poll').innerHTML = sFault;
   }
}


function getSelectedButton(buttonGroup) {
   for (var i = 0; i < buttonGroup.length;i++) {
      if (buttonGroup[i].checked) {
         return i;
      }
   }
   return -1;
}

function buildPoll (xml) {
   var s1 = "<em>" + getText(xml, 'title') + "</em>";
   var nodes = xml.getElementsByTagName('option');
   var s2 = "";
   for (i=0;i<nodes.length;i++) {
      var node = nodes[i];
      var sid = node.attributes.getNamedItem("id").value;
      // order is not important as the list should be in order order
      // var sorder = node.attributes.getNamedItem("order").value;
      var sdefault = node.attributes.getNamedItem("default").value;
      if (sdefault == "1")
         sdefault = "default";
      else
         sdefault = "";
      s2 = s2 + '<input type="radio" name="group1" id="polloption' + sid + '" value="' + sid + '" ' + sdefault + ' />' +
           '<label for="polloption' + sid + '">' + node.childNodes[0].nodeValue + '</label><br>';
   }
   if (s2 != "") {
      s1 = s1 + '<form name="pollform">' + s2  +
           '<a href="#" onClick="castVote(document.forms.pollform, ' + getText(xml, 'id') + ')"><img alt="Cast vote" src="/jpg/vote.gif"></a>' +
      '</form>';
   }
   return s1;
}


function showPoll (xml) {
   var s1 = "<em>" + getText(xml, 'title') + "</em>";
   var nodes = xml.getElementsByTagName('option');
   var s2 = "";
   var nBase = 0;
   for (i=0;i<nodes.length;i++) {
      var node = nodes[i];
      var sid = node.attributes.getNamedItem("id").value;
      var svotespc = node.attributes.getNamedItem("votespc").value;
      s2 = s2 + '<tr><td class="tdpolloption">' + node.childNodes[0].nodeValue + '</td><td class="tdpollvalue">' + svotespc + '%</td></tr>';
      nBase = nBase + parseInt(node.attributes.getNamedItem("votes").value);
   }
   if (s2 != "") {
      s1 = s1 + '<table>' + s2 + '</table>';
   }
   if (nBase > 0) {
      s1 = s1 + '<span class="voterbase">Voter base: ' + nBase + '</span>';
   }
   return s1;
}


function getText(xml, sElement) {
   var nodes = xml.getElementsByTagName(sElement);
   if (nodes.length == 0) {
      return "";
   }
   else {
      return nodes[0].firstChild.nodeValue;
   }
}
