/**
 * This file contains functions to check data entered into the name servers form.
 *
 * These are the requirements to use it:
 * Form name: name servers
 * Form fields:
 * - ns1
 * - ns1ip
 * - ns2
 * - ns2ip
 * - ns3
 * - ns3ip
 * - ns4
 * - ns4ip
 */

function CheckHostName (hostname)
{
	if (hostname == "")
	{
		return false;
	}

	var regCharsTest = /([a-zA-Z0-9\-\.])+/;
	var regHostName = /^(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	
	var result;
	var HostPartsArray;

	result = hostname.match(regCharsTest);

	if (result[0] != hostname)
	{
		return false;
	}
	
	result = regHostName.test(hostname);
	return result;
}

function CheckIPaddress (IPaddress)
{
	var regIP = /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/;

	var result;
	var IParray;

	result = IPaddress.match(regIP);

	if (result == IPaddress)
	{
		IParray = IPaddress.split(".");
		for (i = 0; i < IParray.length; i++)
		{
			if (Number(IParray[i]) < 0 || Number(IParray[i]) > 255)
			{
				return false;
			}
		}
	}
	else
	{
		return false;
	}

	return true;
}

function NameServersChecker() {

	var ns1 = document.nameservers.ns1.value.toLowerCase();
	var ns1ip = document.nameservers.ns1ip.value;
	var ns2 = document.nameservers.ns2.value.toLowerCase();
	var ns2ip = document.nameservers.ns2ip.value;
	var ns3 = document.nameservers.ns3.value.toLowerCase();
	var ns3ip = document.nameservers.ns3ip.value;
	var ns4 = document.nameservers.ns4.value.toLowerCase();
	var ns4ip = document.nameservers.ns4ip.value;

	var result;

	if (ns1=="" && ns1ip=="")
	{
		alert("You must enter a Primary Name Server\n Please try again.")
		document.nameservers.ns1ip.focus();
		return false;
	}

	if (CheckHostName(ns1) == false)
	{
		alert("Please enter a valid host name.");
		document.nameservers.ns1.focus();
		return false;
	}

	if (CheckIPaddress(ns1ip) == false)
	{
		alert("Please enter a valid IP address.");
		document.nameservers.ns1ip.focus();
		return false;
	}
	
	if (ns2=="" && ns2ip=="")
	{
		alert("You must enter a Secondary Name Server 1\n Please try again.")
		document.nameservers.ns2ip.focus();
		return false;
	}

	if (CheckHostName(ns2) == false)
	{
		alert("Please enter a valid host name.");
		document.nameservers.ns2.focus();
		return false;
	}

	if (CheckIPaddress(ns2ip) == false)
	{
		alert("Please enter a valid IP address.");
		document.nameservers.ns2ip.focus();
		return false;
	}

	/**
	 * Check if the name servers 1 and 2 are the same.
	 */
	if (ns1 == ns2)
	{
		alert("You've typed the same name server for primary and secondary 1.\nPlease try again.");
		document.nameservers.ns2.focus();
		return false;
	}

	 
	/**
	 * If either ns3 or ns3ip are not empty strings, check:
	 */

	if (!(ns3 == "" && ns3ip == "")) 
	{
		if (CheckHostName(ns3) == false)
		{
			alert("Please enter a valid host name.");
			document.nameservers.ns3.focus();
			return false;
		}

		if (CheckIPaddress(ns3ip) == false)
		{
			alert("Please enter a valid IP address.");
			document.nameservers.ns3ip.focus();
			return false;
		}

	}

	/**
	 * If either ns4 or ns4ip are not empty strings, check:
	 */
	if (!(ns4 == "" && ns4ip == ""))
	{
		if (CheckHostName(ns4) == false)
		{
			alert("Please enter a valid host name.");
			document.nameservers.ns4.focus();
			return false;
		}

		if (CheckIPaddress(ns4ip) == false)
		{
			alert("Please enter a valid IP address.");
			document.nameservers.ns4ip.focus();
			return false;
		}

	}

	/**
	 * Change all name servers to lower case.
	 */
	if (ns1 != "")
	{
		document.nameservers.ns1.value = ns1;
		document.nameservers.ns2.value = ns2;
	}
	if (ns3 != "")
	{
		document.nameservers.ns3.value = ns3;
	}
	if (ns4 != "")
	{
		document.nameservers.ns4.value = ns4;
	}

}

function SetDefaultNS (ns1, ns1ip, ns2, ns2ip, ns3, ns3ip, ns4, ns4ip, message)
{
	document.nameservers.ns1.value = ns1;
	document.nameservers.ns1ip.value = ns1ip;
	document.nameservers.ns2.value = ns2;
	document.nameservers.ns2ip.value = ns2ip;
	document.nameservers.ns3.value = ns3;
	document.nameservers.ns3ip.value = ns3ip;
	document.nameservers.ns4.value = ns4;
	document.nameservers.ns4ip.value = ns4ip;

	if (message != "")
	{
		alert(message);
	}
}
