var xmlReq = null;
var doc = false;
var originalVoteButton = "";
var hasSelection = false;
var spanPollErrorMessage = null;
 
if (typeof DOMParser == "undefined") {
   DOMParser = function () {}

   DOMParser.prototype.parseFromString = function (str, contentType) {
      if (typeof ActiveXObject != "undefined") {
         var d = new ActiveXObject("MSXML.DomDocument");
         d.loadXML(str);
         return d;
      } else if (typeof XMLHttpRequest != "undefined") {
         var req = new XMLHttpRequest;
         req.open("GET", "data:" + (contentType || "application/xml") + ";charset=utf-8," + encodeURIComponent(str), false);
         if (req.overrideMimeType) {
            req.overrideMimeType(contentType);
         }
         req.send(null);
         return req.responseXML;
      }
   }
}

function sub(f)
{
   var file = '/gdml.dyn';
   var str = getFormValues(f);
   if(hasSelection) {
      if(spanPollErrorMessage) { spanPollErrorMessage.style.display = 'none';}
      originalVoteButton = document.getElementById("resulttext").innerHTML;
      document.getElementById("resulttext").innerHTML = "<b>Please wait...</b>";
      xmlReq = getXML(file,str);
   }
   else {
     throwNoSelectionError(f);
   }
}
function getXML(file,str)
{
   doc = null
   if (typeof window.ActiveXObject != 'undefined' )
   {
	   doc = new ActiveXObject("MSXML2.XMLHTTP");
	   doc.onreadystatechange = displayState;
   }
   else
   {
	   doc = new XMLHttpRequest();
	   doc.onload = displayState;
   }
   doc.open( "POST", file, true );
   doc.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
   doc.send(str);
   return doc;
}
function getFormValues(fobj)
{
   var str = "";
   var valueArr = null;
   var val = "";
   var cmd = "";
   var ans = "";
   
   for(var i = 0;i < fobj.elements.length;i++)
   {
	   switch(fobj.elements[i].type)
	   {
		   case "radio":
	               		if (fobj.elements[i].checked) {
							hasSelection = true;
		       			str += fobj.elements[i].name + "=" + fobj.elements[i].value + "&";
               			}
				break;
		   default: 
             			str += fobj.elements[i].name + "=" + fobj.elements[i].value + "&";
		     
	 }
   
   }
   str = str.substr(0,(str.length - 1));
   return str;
}

function errorAlert() {
	alert("We're sorry, there was an error. Please try your poll submission later.");
	document.getElementById("resulttext").innerHTML = originalVoteButton;
}

function displayState () {
	if (doc.readyState == 4) {
        	if (doc.status == 200) {
			result = doc.responseText;
			var xmlobject = (new DOMParser()).parseFromString(result, "text/xml");
			try {
			document.getElementById("resulttext").innerHTML = xmlobject.getElementsByTagName("resulttext")[0].firstChild.data;
			} catch (y) {
				errorAlert();
				return;
			}
			for (i = 1;i <= 10;i++) {
				try {
					document.getElementById("answ"+i).innerHTML = xmlobject.getElementsByTagName("answ"+i)[0].firstChild.data;
				} catch (x) {
				}
			}           
        	} else {
			errorAlert();
         	}
      	} else if (doc.readyState == 1 || doc.readyState == 2 || doc.readyState == 3) {
		try {
                	document.getElementById("resulttext").innerHTML = "Please wait...";
                } catch (y) {
                        errorAlert();
                }

	}
}

function throwNoSelectionError(fobj) {
	if(spanPollErrorMessage == null) {
		spanPollErrorMessage = document.createElement('span');
		spanPollErrorMessage.className = 'poll_error_message';
		spanPollErrorMessage.innerHTML = 'Please make a selection.';
		fobj.appendChild(spanPollErrorMessage);
	}
	else {
		spanPollErrorMessage.style.display = 'inline';
	}
}


