///////////////////////////////////////////////////////////
// Asynchronous method call code START                   // 
///////////////////////////////////////////////////////////

var request;
var queryString;
var lblPoll;

/* If the "Image" submit button is present (pollSubmit2) disable it until a select is made */
if (document.getElementById('pollSubmit2')) {
	// Store the button's onclick function for later use since we are going to overwrite it
	var fnOldOnlick = document.getElementById("pollSubmit2").onclick 
	
	// Make sure it can't be clicked
	document.getElementById("pollSubmit2").onclick = function(){return false;}
	document.getElementById("pollSubmit2").style.cursor='default';
}

function pollSubmit()
{	
	sendData('/c/controls/poll/submitPoll.aspx');
}

// onSelectItem() enables the Submit button(s) for the poll once an answer is selected
function onSelectItem() {

	var strButtonImg = document.forms[0].pollSubmitButtonOn.value
	
	// Enable the standard button
	if(document.getElementById('pollSubmit1')) {
		document.getElementById('pollSubmit1').disabled = false
	}
	
	// Enable the image button
	if(document.getElementById('pollSubmit2')) {
		document.getElementById('pollSubmit2').disabled = false
		document.getElementById('pollSubmit2').src = strButtonImg
		//document.getElementById("pollSubmit2").onclick = fnOldOnlick;
		document.getElementById("pollSubmit2").style.cursor='hand';
	}
}

function sendData(url)
{
	// Read lblPoll's ClientID
	lblPoll = findControl("lblPoll_ClientID").value;

	if (setQueryString() > 0) {
		hideElement("pollErrorMessage");
		
		// Hide buttons
		if (elementExists("pollSubmit1")) hideElement("pollSubmit1");
		if (elementExists("pollSubmit2")) hideElement("pollSubmit2");
		
		httpRequest("POST", url, true);

//		setInnerHTML(lblPoll, "<span class='loadStyle'>Loading data...</span>")
	} else {
		// Nothing selected - show error message
		showElement("pollErrorMessage");
		
		// Show buttons
		if (elementExists("pollSubmit1")) showElement("pollSubmit1");
		if (elementExists("pollSubmit2")) showElement("pollSubmit2");
	}
}

function displayData()
{
	setInnerHTML(lblPoll, request.responseText);
}

function httpRequest(reqType, url, asynch)
{
	//Mozilla base browsers
	if(window.XMLHttpRequest){
		request = new XMLHttpRequest();
	// IE browsers
	}else if ( window.ActiveXObject ){
		request = new ActiveXObject("Msxml2.XMLHTTP");
		if( !request) {
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	if( request ){
		initReq(reqType,url,asynch);
	}else{
		alert("Your browser does not permit the use of all of this application's features");
	}
}

function initReq(reqType,url,isAsynch)
{
	request.onreadystatechange = handleResponse;
	request.open(reqType,url,isAsynch);
	request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	request.send(queryString);
}

// Creates the querystring and returns the number of items selected on the form
function setQueryString()
{
	queryString = "";
	var form = document.forms[0];
	var numberElements = form.elements.length;
	var sepString = "";
	var numSelected = 0;
	
	for (var i=0; i < numberElements; i++){
		if( (form.elements[i].name != "__VIEWSTATE") && (form.elements[i].type) )
		{
			ele = form.elements[i];			
			
			if( ( ele.type == "radio" || ele.type == "checkbox") && ele.checked == true ){
				queryString += sepString + form.elements[i].name+"="+encodeURIComponent(form.elements[i].value);
				sepString = "&";
				numSelected++;
			} 
			else if( ele.type.indexOf("select") == 0 ){
				queryString += sepString + form.elements[i].name+"="+encodeURIComponent(form.elements[i].value);
				sepString = "&";
				numSelected++;
			}
			else if(form.elements[i].name.substring(0,4) == "poll"){
				// Append only poll-related hidden input fields to querystring
				queryString += sepString + form.elements[i].name+"="+encodeURIComponent(form.elements[i].value);
				sepString = "&";
			}	
		}
	}
	return numSelected;
}

function handleResponse()
{
	if(request.readyState == 4){
 
		try {
			if(request.status == 200){			
				displayData();
			}else{			
				alert("A problem occured when attempting to communicate with the server. Error code: " + request.status);			
//				setInnerHTML(lblPoll, "")
			}
		
		} catch (err) {
			alert(err);
		}
	}
}

function findControl(name)
{
	var form = document.forms[0];
	var numberElements = form.elements.length;
	
	for (var i=0; i < numberElements; i++){
		if( form.elements[i].name == name)
		{
			return form.elements[i];			
		}
	}
}

function elementExists(id)
{
	if( document.getElementById ){
		return (document.getElementById(id) != null);
	}
}

function showElement(id)
{
	if( document.getElementById ){
		ele = document.getElementById(id);
		ele.style.display = "block";
	}
}

function hideElement(id)
{
	if( document.getElementById ){
		ele = document.getElementById(id);
		ele.style.display = "none";
	}
}

function setInnerHTML(id, value)
{
	if( document.getElementById ){
		ele = document.getElementById(id);
		ele.innerHTML = value;
	}
}

///////////////////////////////////////////////////////////
// Asynchronous method call code END                     // 
///////////////////////////////////////////////////////////


