var intervalToCheckForChange = 150; // in milliseconds
var request;
var	statusDivJS;
var	isAvailableDivJS;
var	domainInput;
var	extensionInput;
var isInProgress = false;
var prevCheckValue = ".com";
var whatDomainDivJS;
var intStartCheck;
var isLoaded = false;
var intFailedResponse;
var timesError = 0;
var genStr = "";
var chars = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
var nums = ['1','2','3','4','5','6','7','8','9','0'];
var	withNumbers;
var	withHyphens;
var	tldExt;
var	minChars;
var	maxChars;
function checkDomain()
{
	if (domainInput.value.length < 3)
	{
		statusDivJS.innerHTML = "";
		whatDomainDivJS.innerHTML = ""; 
		isAvailableDivJS.innerHTML = "";
		return;
	}
	if (isInProgress) return;
	isInProgress = true;
	prevCheckValue = domainInput.value+"."+extensionInput.value;
	re = new RegExp("^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)*[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?$"); 
	if (prevCheckValue.match(re) == null)
	{
		statusDivJS.innerHTML = "<span style='color:red;' id=\"invalid\">" + JS_INVALID_DOMAIN+ " <\/span>";
		isInProgress = false;	
		return;
	}
	statusDivJS.innerHTML = "<span style='color:green;'><img src='../../order/img/prg.gif' height='16' width='16' alt='in progress'>"+JS_CHECKING_DOMAIN +prevCheckValue+" <\/span>";
	if (window.XMLHttpRequest) { // Mozilla, Safari, ..
		request = new XMLHttpRequest();
	} 
	else if (window.ActiveXObject) { // IE
		request = new ActiveXObject("Microsoft.XMLHTTP");
	}
	var requestUrl = "../../order/query/domain.php?aj=&ma="+Math.random()+"&domain="+domainInput.value+"."+extensionInput.value;
	//document.location.href = requestUrl;return;
	request.open("GET",requestUrl,true);
	request.onreadystatechange = processResponse; 
	intFailedResponse = setTimeout("failedResponse()",15000);
	try {request.send(null); }
	catch (e) 
	{
		timesError++;
		statusDivJS.innerHTML = "";	
	}
}
function failedResponse()
{
	if (!isInProgress) return;
	isInProgress = false;	
	timesError++;
	statusDivJS.innerHTML = "";
	request.abort();
	request = null;
}

function processResponse()
{	
	statusDivJS = document.getElementById("statusDiv");

	prevCheckValue = domainInput.value+"."+extensionInput.value;
	re = new RegExp("^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)*[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?$"); 
	if (prevCheckValue.match(re) == null)
	{
		statusDivJS.innerHTML = "<span style='color:red;' id=\"invalid\">" + JS_INVALID_DOMAIN + " <\/span>";
		isInProgress = false;	
		return;
	}

	if (request.readyState == 4)
	{			
		clearTimeout(intFailedResponse);
		var requestXML = request.responseXML; 
		if ((requestXML != null) && (typeof(requestXML) == "object") && (requestXML.getElementsByTagName("domainname")[0] != null))
		{	
			//statusDivJS.innerHTML = "Done (<a href='#' onClick='checkDomain();return false;'>Force Check<\/a>)";
			//statusDivJS.innerHTML = "<a href='#' onClick='checkDomain();return false;'>Check again<\/a> ";
			statusDivJS.innerHTML = "";
			isInProgress = false;
			var domain = requestXML.getElementsByTagName("domainname")[0].firstChild.data;	
			var available = requestXML.getElementsByTagName("available")[0].firstChild.data;
			var errorMsg = "";
			if (requestXML.getElementsByTagName("errorMsg")[0].firstChild != null)
				errorMsg = requestXML.getElementsByTagName("errorMsg")[0].firstChild.data;
			if (available == "true") 
			{
				available = "<span style='color:green;'id=\"available\">&nbsp;"+ JS_DOMAIN_AVAILABLE +"<\/span>	";
			}
			else
			{
				available = "<span style='color:red;' id=\"unavailable\">&nbsp;"+ JS_DOMAIN_NOT_AVAILABLE +"</span>";
			}
			if (errorMsg != "")
			{
//				statusDivJS.innerHTML = errorMsg;
				statusDivJS.innerHTML = "";			
				whatDomainDivJS.innerHTML = ""; 
				isAvailableDivJS.innerHTML = "";
			}
			else 
			{
				whatDomainDivJS.innerHTML = domain;
				isAvailableDivJS.innerHTML = available;
			}
		}
		else
		{
			failedResponse();
			return;
		}		
	}
	else if (request.readyState == 3)
	{
		statusDivJS.innerHTML = "Request sent...";
	}
}
function checkForChange()

{
	if (!isLoaded) return;
	clearTimeout(intStartCheck);
	if ((get_domaintype_value() != "regdomain") && 
		(get_domaintype_value() != -1) ) return;

	if (prevCheckValue != (domainInput.value+"."+extensionInput.value))
	{
		intStartCheck = setTimeout("checkDomain()",intervalToCheckForChange);
//		checkDomain();	
	}
}

function stateChangedWhois() 
{ 
	if (xmlHttpWhois.readyState==4 || xmlHttpWhois.readyState=="complete")
	{ 
		document.getElementById("isAvailableDiv").innerHTML=xmlHttpWhois.responseText 
	} 
}

function showWhois(domain_name,domaintype)
{
	var url=""

	if ((domain_name ==  "") || (domaintype == "owndomain") || (domaintype == -1))
	{ 
	document.getElementById("isAvailableDiv").innerHTML=""
	return 
	}
	xmlHttpWhois=GetXmlHttpObject()
	if (xmlHttpWhois==null)
	{
	return
	}
	if ((domaintype == "regdomain") || (domaintype == ""))
	{
		checkForChange()
	}
}

