var priceList = { "co.uk": "9.99", "org.uk": "9.99", "me.uk": "9.99", "ltd.uk": "9.99", "plc.uk": "9.99", "com": "14.99", "net": "14.99", "org": "14.99", "mobi": "19.99", "name": "14.99", "biz": "14.99", "info": "14.99", "eu.com": "29.99", "uk.com": "29.99", "uk.net": "29.99", "gb.com": "29.99", "gb.net": "29.99", "eu": "14.99", "tm": "29.99", "cn": "22.99", "cc": "22.99", "tv": "34.99", "co": "29.99" };


function doOnload() {
	if (window.innerHeight > 700) {
		//document.getElementById('nav').style.position = "fixed";
		//document.getElementById('nav').style.background.position = "fixed";
		//document.getElementById('footer').style.position = "fixed";
	}
	if ( navigator.appName != "Microsoft Internet Explorer") {
		document.getElementById('whois').removeChild(document.getElementById('checker'));
		if (document.getElementById('quickcheck')) {
			document.getElementById('quickcheck').removeChild(document.getElementById('quickcheckform'));
			createquickForm();
		}
		createForm();
	}
}

function makeQuery(url, callback_function, return_xml) {
    var http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {

            http_request.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!http_request) {
        alert('Unfortunatelly you browser doesn\'t support this feature.');
        return false;
    }
    http_request.onreadystatechange = function() {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                if (return_xml) {
                    eval(callback_function + '(http_request.responseXML)');
                } else {
                    eval(callback_function + '(http_request.responseText)');
                }
            } else {
                alert('There was a problem with the request.(Code: ' + http_request.status + ')');
            }
        }
    }
    http_request.open('GET', url, true);
    http_request.send(null);
}

function lookupDomain() {
	if (document.getElementById('quickcheck') && document.getElementById('quickdomain').value != "") {
		var quickdomain = document.getElementById("quickdomain").value;
		var dot = /\./;
		if (dot.test(quickdomain)) {
			var url = "/whois/ajax.php?full_domain=" + fixup(quickdomain);
			startWaiting();
			makeQuery(url,'showLookupResult',true);
		} else {
			var selectList = new Array('co.uk','org.uk','me.uk','ltd.uk','plc.uk','com','net','org','mobi','name','biz','info','eu.com','uk.com','uk.net','gb.com','gb.net','tm','eu', 'tv', 'co');
			clean();
	        	createResultTable(selectList,quickdomain)
			for ( keyVar in selectList ) {
				var url = "/whois/ajax.php?full_domain=" + fixup(quickdomain) + "." + selectList[keyVar];
				makeQuery(url,'updateResultTable',true);
			}
		}
		document.getElementById('domain').value = "";
		document.getElementById('quickdomain').value = "";
	} else {
		var domain = document.getElementById("domain").value;
		if ((domain == null) || (domain == "")) return;
		if (document.getElementById('all-yes').checked == 1) {
			var selectList = new Array('co.uk','org.uk','me.uk','ltd.uk','plc.uk','com','net','org','mobi','name','biz','info','eu.com','uk.com','uk.net','gb.com','gb.net','tm','eu','tv', 'co');
			clean();
	        	createResultTable(selectList,domain)
			for ( keyVar in selectList ) {
				var url = "/whois/ajax.php?full_domain=" + fixup(domain) + "." + selectList[keyVar];
				makeQuery(url,'updateResultTable',true);
		        }
		} else {
			var tld = document.getElementById("tld").value;
			if ((tld == null) || (tld == "")) return;
			var url = "/whois/ajax.php?full_domain=" + fixup(domain) + "." + escape(tld);
			startWaiting();
			makeQuery(url,'showLookupResult',true);
		};
		document.getElementById('domain').value = "";
		if (document.getElementById('quickcheck')) {
			document.getElementById('quickdomain').value = "";
		}
	}
}

function fixup(domain) {
	domain = domain.replace(/ /,"");
	domain = domain.replace(/\.+/,"");
	domain = escape(domain);
	return domain;
}

function createResultTable(selectList,domain) {
	domain = fixup(domain);
	var resultDiv = document.createElement('div');
	resultDiv.id = "result";
	resultDiv.style.height = "56em";
	var h1 = document.createElement('h4');
	h1.appendChild(document.createTextNode('Please Wait, this may take some time'));
	var p1 = document.createElement('p');
	p1.appendChild(document.createTextNode('To order a domain parking package for any of these domains please '));
	var a1 = document.createElement('a');
	a1.href = "https://cp.domaincheck.co.uk";
	a1.appendChild(document.createTextNode('Click Here'));
	p1.appendChild(a1);
	var table1 = document.createElement('table');
	table1.style.width = "80%";
	table1.style.margin = "0 auto";
	for ( keyVar in selectList ) {
		var tld = selectList[keyVar];
		note = selectList[keyVar] == 'co.uk' ? ' [2]' : (selectList[keyVar] == 'me.uk' ? ' [2]' : (selectList[keyVar] == 'org.uk' ? ' [2]' : ''));
		note = selectList[keyVar] == 'plc.uk' ? ' [1] [2]' : (selectList[keyVar] == 'ltd.uk' ? ' [1] [2]' : note);
		note = selectList[keyVar] == 'tm' ? ' [10]' : note;
		var row = document.createElement('tr');
		var cell1 = document.createElement('td');
		var cell2 = document.createElement('td');
		cell1.appendChild(document.createTextNode(domain + "." + selectList[keyVar] + note ));
		cell1.style.width = "50%";
		cell2.id = selectList[keyVar];
		cell2.appendChild(document.createTextNode('Checking...'));
		cell2.style.width = "50%";
		row.appendChild(cell1);
		row.appendChild(cell2);
		table1.appendChild(row);
	}
	var footnote1 = document.createElement('p');
	footnote1.className = "footnote";
	footnote1.appendChild(document.createTextNode('[1] .ltd.uk and .plc.uk domains can only be registered by registered UK companies.  Please '));
	var a2 = document.createElement('a');
	a2.href = "http://www.nominet.org.uk/registrants/aboutdomainnames/sld/ltd.ukandplc.uk/";
	a2.appendChild(document.createTextNode('click here'));
	footnote1.appendChild(a2);
	footnote1.appendChild(document.createTextNode(' for more information.'));
	var footnote2 = document.createElement('p');
	footnote2.className = "footnote";
	footnote2.appendChild(document.createTextNode('[2] Minimum registration period of two years.'));
	var footnote3 = document.createElement('p');
	footnote3.className = "footnote";
	footnote3.appendChild(document.createTextNode('[10] Minimum registration period of ten years.'));
	resultDiv.appendChild(h1);
	resultDiv.appendChild(p1);
	resultDiv.appendChild(table1);
	resultDiv.appendChild(footnote1);
	resultDiv.appendChild(footnote2);
	resultDiv.appendChild(footnote3);
	document.getElementById('whois').appendChild(resultDiv);
}



function showLookupResult(lookupResult) {
    stopWaiting();
    var domainStatus = lookupResult.getElementsByTagName('status')[0].firstChild.nodeValue;
    if (domainStatus == "available") {
        createAvailableResultDiv(lookupResult);
    } else if (domainStatus == "registered") {
	createNotResultDiv(lookupResult);
    } else {
        alert ("error");
    }
}

function updateResultTable(lookupResult) {
	var tld = lookupResult.getElementsByTagName('tld')[0].firstChild.nodeValue
	var cell = document.getElementById(tld);
	var row = cell.parentNode;
	row.removeChild(cell);
	var newcell = document.createElement('td');
	newcell.style.width = "50%";
	var responseType = lookupResult.getElementsByTagName('responsetype')[0].firstChild.nodeValue;
	if (responseType == "invalid") {
		newcell.style.background = "#eb9e88";
		newcell.appendChild(document.createTextNode('ERROR - Invalid Domain'));
	} else {
		var domainStatus = lookupResult.getElementsByTagName('status')[0].firstChild.nodeValue;
		if (domainStatus == "available") {
			newcell.style.background = "#9feb88";
			var a1 = document.createElement('a');
			a1.href = "https://cp.domaincheck.co.uk/hspc/index.php?action=preselect&ps_dm_action=register_new&ps_domain_name=" + lookupResult.getElementsByTagName('domain')[0].firstChild.nodeValue;
		        a1.appendChild(document.createTextNode('Order NOW'));
		        newcell.appendChild(a1);
				var text = " - £" + priceList[tld] + " + VAT per year";
				newcell.appendChild(document.createTextNode(text));
		} else if (domainStatus == "registered") {
			newcell.style.background = "#eb9e88";
			var a1 = document.createElement('a');
			a1.href = "http://www.domaincheck.co.uk/search_results.htm?full_domain=" + lookupResult.getElementsByTagName('domain')[0].firstChild.nodeValue;
		        a1.appendChild(document.createTextNode('View Info'));
			newcell.appendChild(document.createTextNode('Not Available - '));
		        newcell.appendChild(a1);
		} else {
			alert ("error");
		}
	}
	row.appendChild(newcell);
}

function createNotResultDiv(lookupResult) {
	var text1 = document.createElement('h4');
	text1.id = "resultinfo";
        text1.appendChild(document.createTextNode('This domain is not available to register.'));
	var warnPara = document.createElement('p');
	warnPara.id = "warn";
	warnPara.appendChild(document.createTextNode("Disclaimer:  The information below has been retreived from the global public whois database.  Domaincheck has no control over this information and accepts no responsibility for its accuracy or maintenance."));
	
	var resultDiv = document.createElement('div');
	resultDiv.id = "result";
	resultDiv.className = "registered";
        resultDiv.innerHTML = lookupResult.getElementsByTagName('info')[0].childNodes[1].nodeValue;
	var whois = document.getElementById('whois');

	whois.appendChild(text1);
	whois.appendChild(warnPara);
	whois.appendChild(resultDiv);
}

function createAvailableResultDiv(lookupResult) {
	var domain = lookupResult.getElementsByTagName('domain')[0].firstChild.nodeValue
	var tld = lookupResult.getElementsByTagName('tld')[0].firstChild.nodeValue
	var selectList = new Array('co.uk','org.uk','me.uk','ltd.uk','plc.uk','com','net','org','mobi','name','biz','info','eu.com','uk.com','uk.net','gb.com','gb.net','tm','eu', 'tv', 'co');

	var note;
	note = tld == 'co.uk' ? ' [2]' : (tld == 'me.uk' ? ' [2]' : (tld == 'org.uk' ? ' [2]' : ''));
	note = tld == 'plc.uk' ? ' [1] [2]' : (tld == 'ltd.uk' ? ' [1] [2]' : note);
	note = selectList[keyVar] == 'tm' ? ' [10]' : note;

	var footnote1 = document.createElement('p');
	footnote1.className = "footnote";
	footnote1.appendChild(document.createTextNode('[1] .ltd.uk and .plc.uk domains can only be registered by registered UK companies.  Please '));
	var a2 = document.createElement('a');
	a2.href = "http://www.nominet.org.uk/registrants/aboutdomainnames/sld/ltd.ukandplc.uk/";
	a2.appendChild(document.createTextNode('click here'));
	footnote1.appendChild(a2);
	footnote1.appendChild(document.createTextNode(' for more information.'));
	var footnote2 = document.createElement('p');
	footnote2.className = "footnote";
	footnote2.appendChild(document.createTextNode('[2] Minimum registration period of two years.'));
	var footnote3 = document.createElement('p');
	footnote3.className = "footnote";
	footnote3.appendChild(document.createTextNode('[10] Minimum registration period of ten years.'));

	var whois = document.getElementById('whois');
	var table = document.createElement('table');
	table.id = 'result';
	table.style.width = "90%";
	var row = document.createElement('tr');
	var cell1 = document.createElement('td');
	cell1.style.width = "50%";
	cell1.appendChild(document.createTextNode(domain + note));
	var cell2 = document.createElement('td');
	cell2.style.background = "#9feb88";
	cell2.style.width = "50%";
	var a1 = document.createElement('a');
	a1.href = "https://cp.domaincheck.co.uk/hspc/index.php?action=preselect&ps_dm_action=register_new&ps_domain_name=" + domain;
	a1.appendChild(document.createTextNode('Order NOW'));
	cell2.appendChild(document.createTextNode('Available - '));
	cell2.appendChild(a1);
	row.appendChild(cell1);
	row.appendChild(cell2);
	table.appendChild(row);
	whois.appendChild(table);
	whois.appendChild(footnote1);
	whois.appendChild(footnote2);
	whois.appendChild(footnote3);
}

function createquickForm() {
	var qlabel = document.createElement('a');
	qlabel.appendChild(document.createTextNode('Quick Check:'));
	document.getElementById('quickcheck').appendChild(qlabel);
	var qinput = document.createElement('input');
	qinput.type = 'text';
	qinput.id = 'quickdomain';
	qinput.name = 'full_domain';
	qinput.value = '';
	qinput.size = '17'
	qinput.maxlength = '63';
	qinput.addEventListener('keypress',keyWatch,false);
	document.getElementById('quickcheck').appendChild(qinput);
}
function createForm() {
	var formDiv = document.createElement('div');
	formDiv.id = "checker";

	var p1 = document.createElement('p');
	p1.appendChild(document.createTextNode('To check the availability of a domain name type it in the box and select the appropriate top level domain extension (TLD).'));
	formDiv.appendChild(p1);

	var p2 = document.createElement('p');
	p2.appendChild(document.createTextNode('Enter your domain name: '));
	var input1 = document.createElement('input');
	input1.type = 'text';
	input1.id = 'domain';
	input1.value = '';
	input1.size = '25';
	input1.maxlength = '63';
	input1.addEventListener('keypress',keyWatch,false);
	p2.appendChild(input1);
	var select1 = document.createElement('select');
	select1.name = 'tld';
	select1.id = 'tld';
	select1.style.marginLeft = '0';
	var selectList = new Array('co.uk','org.uk','me.uk','ltd.uk','plc.uk','com','net','org','mobi','name','biz','info','eu.com','uk.com','uk.net','gb.com','gb.net','cn','tm','cc','eu','tv', 'co');
	for ( keyVar in selectList ) {
		var option = document.createElement('option');
		option.value = selectList[keyVar];
		option.appendChild(document.createTextNode(selectList[keyVar]));
		select1.appendChild(option);
	}
	p2.appendChild(select1);
	var button = document.createElement('input');
	button.type = 'button';
	button.value = 'Check';
	button.style.clear = 'none';
	button.addEventListener('click',lookupDomain,false);
	p2.appendChild(button);
	formDiv.appendChild(p2);

	var p3 = document.createElement('p');
	p3.appendChild(document.createTextNode('Check All Domain Names?'));
	var input1 = document.createElement('input');
	input1.id = "all-yes";
	input1.type = "radio";
	input1.name = "all";
	input1.value = "yes";
	var label1 = document.createElement('label');
	//label1.for = "all-yes";
	label1.appendChild(document.createTextNode('Yes '));
	var input2 = document.createElement('input');
	input2.id = "all";
	input2.type = "radio";
	input2.name = "all";
	input2.value = "no";
	input2.checked = "checked";
	var label2 = document.createElement('label');
	//label2.for = "all-no";
	label2.appendChild(document.createTextNode('No '));
	p3.appendChild(input1);
	p3.appendChild(label1);
	p3.appendChild(input2);
	p3.appendChild(label2);
	formDiv.appendChild(p3);

	if (document.getElementById('warn')) {
		document.getElementById('whois').insertBefore(formDiv,document.getElementById('warn'));
	} else {	
		document.getElementById('whois').insertBefore(formDiv,document.getElementById('whois').childNodes[0].nextNode);
	}
}

function clean() {
	if (document.getElementById('resultinfo')) {
        	document.getElementById('whois').removeChild(document.getElementById('resultinfo'));
        }
	if (document.getElementById('resultbox')) {
        	document.getElementById('whois').removeChild(document.getElementById('resultbox'));
        }
	if (document.getElementById('result')) {
		document.getElementById('whois').removeChild(document.getElementById('result'));
	}
	if (document.getElementById('warn')) {
                document.getElementById('whois').removeChild(document.getElementById('warn'));
        }
}

function startWaiting() {
	clean();
	var waitDiv = document.createElement('div');
	waitDiv.id = "waiting";
	var waitTxt = document.createElement('h2');
	var waitImg = document.createElement('img');
	waitTxt.appendChild(document.createTextNode('Please Wait'));
	waitImg.src = "whois/wait.gif";
	waitDiv.appendChild(waitTxt);
	waitDiv.appendChild(waitImg);
	var checker = document.getElementById('checker');
	checker.style.display = "none";
	var whoisBox = document.getElementById('whois');
	whoisBox.appendChild(waitDiv);
}

function stopWaiting() {
        document.getElementById('domain').value = "";
	if (document.getElementById('quickcheck')) {
	        document.getElementById('quickdomain').value = "";
	}
	var whoisBox = document.getElementById('whois');
	var waitDiv = document.getElementById('waiting');
	whoisBox.removeChild(waitDiv);
	var checker = document.getElementById('checker');
	checker.style.display = "block";
	if (document.getElementById('quickcheck')) {
		document.getElementById('quickdomain').value = "";
	}
}

function keyWatch(e) {
	var keycode = e.which;
	if (keycode == 13) {
		lookupDomain();
		return false;
	} else {
		return true;
	}
}
