var intervalToCheckForChange = 300; // in milliseconds
var request;
var	statusDivJS;
var	isAvailableDivJS;
var	domainInput;
var	extensionInput;
var domainsAvailableInput;
var isInProgress = false;
var prevCheckValue = ".com";
var whatDomainDivJS;
var intStartCheck;
var isLoaded = false;
var intFailedResponse;
var timesError = 0;
var ssajax = 'ss';
function checkDomain()
{
	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;'><img src='./check/prga.gif' height='13' width='40' alt='in progress'/> <\/span>";
		isInProgress = false;
		return;
	}
	statusDivJS.innerHTML = "<img src='./check/prgb.gif' height='13' width='40' alt='in progress'/>";
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		request = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) { // IE
		request = new ActiveXObject("Microsoft.XMLHTTP");
	}
	var requestUrl = "checker.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 = "<span style='color:red;'>Error connecting to server ("+timesError+"x)<\/span>";
	}
}
function failedResponse()
{
	if (!isInProgress) return;
	isInProgress = false;
	timesError++;
	statusDivJS.innerHTML = "<span style='color:red;'>Error connecting to server ("+timesError+"x)(<a href='#' onClick='checkDomain();return false;'>Retry<\/a>)<\/span>";
	request.abort();
	request = null;
}
function retryRequest()
{
	if (!isInProgress) return;
	request.abort();
	isInProgress = false;
	request = null;
	statusDivJS.innerHTML = "<span style='color:red;'>Retrying<\/span>";
	checkDomain();
}
function abortRequest()
{
	if (!isInProgress) return;
	request.abort();
	isInProgress = false;
	request = null;
	statusDivJS.innerHTML = "<span style='color:red;'>Aborted<\/span>";
}
function processResponse()
{
	statusDivJS = document.getElementById("statusDiv");
	if (request.readyState == 4)
	{
		clearTimeout(intFailedResponse);
		var requestXML = request.responseXML;
		if ((requestXML != null) && (typeof(requestXML) == "object") && (requestXML.getElementsByTagName("domainname")[0] != null))
		{
			statusDivJS.innerHTML = "<img src='./check/prga.gif' height='13' width='40' alt='in progress'>";
			isInProgress = false;
			var main = 'c'
			if (document.getElementById(main+'s'+'s') == null) return 'OK';
			var domain = requestXML.getElementsByTagName("domainname")[0].firstChild.data;
			var available = requestXML.getElementsByTagName("available")[0].firstChild.data;
			var errorMsg = "";
			var domainstring = domainInput.value;
			var tldExt = document.getElementById("extensionGen").value;
			if (requestXML.getElementsByTagName("errorMsg")[0].firstChild != null)
				errorMsg = requestXML.getElementsByTagName("errorMsg")[0].firstChild.data;
			if (available == "true")
			{
				available = "<a href='http://www.generationym.com/clients/cart.php?a=add&pid=1&carttpl=cart&sld=" + domainstring + "&tld=." + tldExt +"'><img border='0' src='http://generationym.com/images/seccure.png'></a>";
				if (domainsAvailableInput.value.indexOf(domain +" ") == -1)
					domainsAvailableInput.value = domainsAvailableInput.value + domain +" \n";
			
			}
			else
			{
				available = "<img src='http://generationym.com/images/noseccure.png'>	";
			}
			if (errorMsg != "")
			{
				statusDivJS.innerHTML = errorMsg;
			}
			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 (document.getElementById('c'+ssajax) == null)
		isInProgress = true;
	if (prevCheckValue != (domainInput.value+"."+extensionInput.value))
	{
		//intStartCheck = setTimeout("checkDomain()",intervalToCheckForChange);
		checkDomain();
	}
}
function bodyonLoad()
{
	statusDivJS = document.getElementById("statusDiv");
	isAvailableDivJS = document.getElementById("isAvailableDiv");
	domainInput =  document.getElementById("domain");
	extensionInput =  document.getElementById("extension");
	domainsAvailableInput = document.getElementById("domainsAvailable");
	whatDomainDivJS = document.getElementById("whatDomainDiv");
	isLoaded = true;
	setInterval("checkForChange()",intervalToCheckForChange);
}
window.onload=function(){
bodyonLoad();
}
