///////////////////////////////////////////////////////////
// Asynchronous method call code START                   // 
///////////////////////////////////////////////////////////

var request;
var queryString;
var lblTyk;

/* If the "Image" submit button is present (tykSubmit2) disable it until a select is made */
if(document.getElementById('tykSubmit2')) {
	// Store the button's onclick function for later use since we are going to overwrite it
	var fnOldOnlick = document.getElementById("tykSubmit2").onclick 
	
	// Make sure it can't be clicked
	document.getElementById("tykSubmit2").onclick = function(){return false;}
	document.getElementById("tykSubmit2").style.cursor='default';
}

function tykSubmit()
{		
  // commented out, don't wnat to send anything yet
	sendData('/c/controls/tyk/submitTyk.aspx');
	
}

// onSelectItem() enables the Submit button(s) for the tyk once an answer is selected
function onSelectItem() {

	var strButtonImg = document.forms[0].tykSubmitButtonOn.value
	
	// Enable the standard button
	if(document.getElementById('tykSubmit1')) {
		document.getElementById('tykSubmit1').disabled = false
	}
	
	// Enable the image button
	if(document.getElementById('tykSubmit2')) {
		document.getElementById('tykSubmit2').disabled = false
		document.getElementById('tykSubmit2').src = strButtonImg
		//document.getElementById("tykSubmit2").onclick = fnOldOnlick;
		document.getElementById("tykSubmit2").style.cursor='hand';
	}
}

function sendData(url)
{
	// Read lblTyk's ClientID
	lblTyk = findControl("lblTyk_ClientID").value;

	if (setQueryString() > 0) {
		hideElement("tykErrorMessage");
		
		// Hide buttons
		if (elementExists("tykSubmit1")) hideElement("tykSubmit1");
		if (elementExists("tykSubmit2")) hideElement("tykSubmit2");
		
		httpRequest("POST", url, true);

	} else {
		// Nothing selected - show error message
		showElement("tykErrorMessage");
		
		// Show buttons
		if (elementExists("tykSubmit1")) showElement("tykSubmit1");
		if (elementExists("tykSubmit2")) showElement("tykSubmit2");
	}
}

function displayData()
{
	setInnerHTML(lblTyk, 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")
		{
			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,3) == "tyk"){
				// Append only tyk-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);			
			}
		
		} 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                     // 
///////////////////////////////////////////////////////////


