//  check for valid numeric strings	
function IsNumeric(strString)
{
	var strValidChars = "0123456789";
	var strChar;
	var blnResult = true;

	if (strString.length == 0) return false;

	//  test strString consists of valid characters listed above
	for (i = 0; i < strString.length && blnResult == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
		{
		blnResult = false;
		}
	}
	return blnResult;
}


//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() 
{
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest(); //Not IE
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP"); //IE
	} else {
		//Display your error message here. 
		//and inform the user they might want to upgrade
		//their browser.
		alert("Your browser doesn't support the XmlHttpRequest object.  Better upgrade to Firefox.");
	}
}			
//Get our browser specific XmlHttpRequest object.
var receiveReq = getXmlHttpRequestObject();	
	
//Initiate the asyncronous request.
function subscribe() 
{
	document.getElementById("divErrorMobileInvalid").style.display = "none";
	document.getElementById("divErrorMobileEmpty").style.display = "none";
	document.getElementById("divErrorMobileFail").style.display = "none";
	document.getElementById("divSuccess").style.display = "none";
	
	//If our XmlHttpRequest object is not in the middle of a request, start the new asyncronous call.
	if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
	{
		var acceptTerms;
		var phone;
		var valid = false;
		
		acceptTerms = 1;
		/*if(document.getElementById('chkAcceptTerms').checked){
			acceptTerms = 1;
		}
		else{
			acceptTerms = 0;
		}*/
		
		if(IsNumeric(document.getElementById('txtMobile1').value) &&
		   IsNumeric(document.getElementById('txtMobile2').value) &&
		   IsNumeric(document.getElementById('txtMobile3').value) &&
		   document.getElementById('txtMobile1').value.length == 3 &&
		   document.getElementById('txtMobile2').value.length == 3 &&
		   document.getElementById('txtMobile3').value.length == 4) 
		{
		   valid = true;
		}
	
		if(valid)
		{
			phone = document.getElementById('txtMobile1').value + document.getElementById('txtMobile2').value + document.getElementById('txtMobile3').value;
			//True explicity sets the request to asyncronous (default).
			receiveReq.open("GET", 'http://www.cirquedusoleil.com/mobile/mobile.aspx?phone=' + phone + '&acceptterms=' + acceptTerms + '&keyword=WEB', true);
			//Set the function that will be called when the XmlHttpRequest objects state changes.
			receiveReq.onreadystatechange = handleSubscribe; 
			//Make the actual request.
			receiveReq.send(null);
		}
		else
		{	
			// Validate if mobile field are not empty
			if(document.getElementById('txtMobile1').value.length != 3 ||
			   document.getElementById('txtMobile2').value.length != 3 ||
		       document.getElementById('txtMobile3').value.length != 4)
			{
			  	document.getElementById("divErrorMobileInvalid").style.display = "none";
				document.getElementById("divErrorMobileEmpty").style.display = "block";
				document.getElementById("divErrorMobileFail").style.display = "none";
				document.getElementById("divSuccess").style.display = "none";
			} //Validate
			else if(IsNumeric(document.getElementById('txtMobile1').value) &&
					IsNumeric(document.getElementById('txtMobile2').value) &&
					IsNumeric(document.getElementById('txtMobile3').value))
			{
				document.getElementById("divErrorMobileInvalid").style.display = "block";
				document.getElementById("divErrorMobileEmpty").style.display = "none";
				document.getElementById("divErrorMobileFail").style.display = "none";
				document.getElementById("divSuccess").style.display = "none";
			}
		}
	}			
}
//Called every time our XmlHttpRequest objects state changes.
function handleSubscribe() {
	//Check to see if the XmlHttpRequests state is finished.
	if (receiveReq.readyState == 4) {
		//Set the contents of our span element to the result of the asyncronous call.
		var subscribeResult = receiveReq.responseText;
		subscribeResult = subscribeResult.substr(0,1);
		
		switch (subscribeResult)
		{
			case '1': 
				document.getElementById("divErrorMobileInvalid").style.display = "none";
				document.getElementById("divErrorMobileEmpty").style.display = "none";
				document.getElementById("divErrorMobileFail").style.display = "none";
				document.getElementById("divSuccess").style.display = "block";
				break; 
				
			case '0':
				document.getElementById("divErrorMobileInvalid").style.display = "none";
				document.getElementById("divErrorMobileEmpty").style.display = "none";
				document.getElementById("divErrorMobileFail").style.display = "block";
				document.getElementById("divSuccess").style.display = "none";
				break; 
				
			default: //-1
				document.getElementById("divErrorMobileInvalid").style.display = "none";
				document.getElementById("divErrorMobileEmpty").style.display = "none";
				document.getElementById("divErrorMobileFail").style.display = "block";
				document.getElementById("divSuccess").style.display = "none";
				break; 
		}
	}
}