/**
 * Function to check date entered into contacts form.
 * It works for registrants and other contacts.
 * It requires the functions:
 * - checkPhone,
 * - checkEmailAddress,
 * - TrimFields
 * which are located in /ADMIN/includes/functions.js
 */


function checkContacts(strFieldFlag)
{

	if (strFieldFlag == null || strFieldFlag == undefined)
	{
		strFieldFlag = '';
	}
	else
	{
		//strFieldFlag = "-" + strFieldFlag;
	}


	/* Here we remove leading and trailing spaces for all these fields */

	if (document.contacts["company" + strFieldFlag].value == undefined)
	{
		var FieldsToTrim = new Array ("fname", "lname", "email", "address1", "address2", "suburb", "postcode", "state", "businessid");
	}
	else
	{
		var FieldsToTrim = new Array ("company", "fname", "lname", "email", "address1", "address2", "suburb", "postcode", "state", "businessid");
	}

	var fields = new Array("fname","lname","address1","suburb","postcode","state");
	var errmess = new Array("First Name","Last Name","Address1","Suburb","Postcode","State");

	if (strFieldFlag != '')
	{
		for (i = 0; i < FieldsToTrim.length; i++)
		{
			FieldsToTrim[i] = FieldsToTrim[i] + strFieldFlag;
		}
		for (i = 0; i < fields.length; i++)
		{
			fields[i] = fields[i] + strFieldFlag;
		}
	}

	TrimFields ("contacts", FieldsToTrim);

	var registryid = document.contacts["registryid" + strFieldFlag].value;
	var nicsource = document.contacts["nicsource" + strFieldFlag].value;

	// The idau variable is used to check if we need to force user to enter a registrant ID (abn/acn/rbn)
	// The value of idau can be 1 even when there are not idau domains as now registrants of .asn.au and org.au
	// do not have to submit registrant ID if they don't have one.
	var idau = document.contacts["idau" + strFieldFlag].value;

	var company = document.contacts["company" + strFieldFlag].value;
	var type = document.contacts["type" + strFieldFlag].value;

	var email = document.contacts["email" + strFieldFlag].value;
	var ccphone = document.contacts["ccphone" + strFieldFlag].value;
	var phone = document.contacts["phone" + strFieldFlag].value;
	var ccfax = document.contacts["ccfax" + strFieldFlag].value;
	var fax = document.contacts["fax" + strFieldFlag].value;
	var idtypeid = document.contacts["idtypeid" + strFieldFlag].value;
	var businessid = document.contacts["businessid" + strFieldFlag].value;
	var country = document.contacts["country" + strFieldFlag].value;

	if (nicsource == "#")
	{
		alert("You must select a NIC Source.\nPlease try again.");
		document.contacts["nicsource" + strFieldFlag].focus();
		return false;
	}

	if (ccphone == "" && phone == "")
	{
		alert ("You must enter a phone number.\nPlease try again.");
		document.contacts["ccphone" + strFieldFlag].focus();
		return false;
	}



	if (checkPhone(ccphone,phone,"ccphone" + strFieldFlag,"phone"  + strFieldFlag,"contacts") == false)
	{
		return false;
	}

	if (checkPhone(ccfax,fax,"ccfax"  + strFieldFlag,"fax"  + strFieldFlag,"contacts") == false)
	{
		return false;
	}

	/* A company name is required ONLY for registrants of .au domains (except .id.au) */

	if (type=="R" && registryid == "1" && idau!=1 && company=="")
	{
		alert("You must enter a Company Name.\nPlease try again.");
		document.contacts["company" + strFieldFlag].focus();
		return false;
	}
	else
	{

		/* If the company is not a mandatory field, we put the fname & lname values in it anyway */
		if (company == "")
		{
			document.contacts["company" + strFieldFlag].value = document.contacts["fname" + strFieldFlag].value + " " + document.contacts["lname" + strFieldFlag].value;
		}
	}

	if (checkEmailAddress(email) == false)
	{
		alert("You must enter a valid Email Address here.\nPlease try again.");
		document.contacts["email" + strFieldFlag].focus();
		return false;
	}


	var currentvar;
	var fieldlength = fields.length;
	var i = 0;
	while (i < fieldlength)
	{
		currentvar = eval("document.contacts['"+fields[i]+"'].value");
		// the blank spaces of this variable should be trimmed
		// I should create a function to do this is functions.js

		if (currentvar == "")
		{
			alert("You must enter a "+errmess[i]+".\nPlease try again.");
			eval("document.contacts['"+fields[i]+"'].focus();");
			return false;
		}
		i = i + 1;
	}

	if (country == "#")
	{
		alert("You must select a Country.\nPlease try again.");
		document.contacts["country" + strFieldFlag].focus();
		return false;
	}

	var res;

	if ((type == "R" && registryid == 1 && idau == 0 && idtypeid == "#") || (idtypeid == "#" && businessid != ""))
	{
		alert("You must select an organisation type (ABN/ACN/other).\nThis is required for .au domain names (except .id.au).\nPlease try again.");
		document.contacts["idtypeid" + strFieldFlag].focus();
		return false;
	}


	if ((type == "R" && registryid == 1 && idau == 0 && businessid == "") || (idtypeid != "#" && businessid == ""))
	{
		alert("You must enter your ABN/ACN/other number.\nPlease try again.");
                document.contacts["businessid" + strFieldFlag].focus();
		return false;
	}


	if (idtypeid == 1)
	{
		// delete spaces & check number of characters
		res = nospaces_cntchars(businessid,6,11);
		if (res=="false")
		{
			alert("The ABN should have between 6 and 11 characters.\nPlease try again.");
			document.contacts["businessid" + strFieldFlag].focus();
			return false;
		} else {
			document.contacts["businessid" + strFieldFlag].value = res;
		}
	}

	if (idtypeid == 2)
	{
		// delete spaces & check number of characters
		res = nospaces_cntchars(businessid,6,9);
		if (res=="false"){
			alert("The ACN should have between 6 and 9 characters.\nPlease try again.");
			document.contacts["businessid" + strFieldFlag].focus();
			return false;
		} else {
			document.contacts["businessid" + strFieldFlag].value = res;
		}
	}

	if (idtypeid == 12)
	{
		// delete spaces & check number of characters
		res = nospaces_cntchars(businessid,1,20);
		if (res=="false"){
			alert("The OTHER Business Number cannot be more than 20 characters.\nPlease try again.");
			document.contacts["businessid" + strFieldFlag].focus();
			return false;
		} else {
			document.contacts["businessid" + strFieldFlag].value = res;
		}
	}

	if (idtypeid >= 3 && idtypeid <= 10)
	{
		// delete spaces & check number of characters
		res = nospaces_cntchars(businessid,2,20);
		if (res=="false"){
			alert("The RBN should have between 2 and 20 characters.\nPlease try again.");
			document.contacts["businessid" + strFieldFlag].focus();
			return false;
		} else {
			document.contacts["businessid" + strFieldFlag].value = res;
		}
	}

	return true;
}

function SetDefaultPhonePrefix(formName, fieldName)
{
	var fieldValue = eval("document."+formName+".cc"+fieldName+".value");
	if (isNaN(fieldValue))
	{
		alert("Please enter a number here");
		eval("document."+formName+".cc"+fieldName+".focus();");
		return false;
	}

	/* This is to replace an Australian area code (0x) with the Australian country code (61) */
	if (fieldValue.substr(0,1) == "0")
	{
		eval("document."+formName+".cc"+fieldName+".value = 61;");
		var newnumber = eval("document."+formName+"."+fieldName+".value;");
		newnumber = fieldValue.substr(1)+newnumber;
		eval ("document."+formName+"."+fieldName+".value = "+newnumber+";");
	}

	/* Some users enter here the Australian country code (61) plus the area code.
	This causes problems to the Ausregistry scripts.
	Here, we remove the area code and put it in the correct field */
	if (fieldValue.substr(0,2) == "61" && fieldValue.length == 3)
	{
		eval("document."+formName+".cc"+fieldName+".value = 61;");
		var areaCode = fieldValue.substr(2,1);
		if (areaCode != "0")
		{
			var phoneNumber = eval("document."+formName+"."+fieldName+".value");
			eval("document."+formName+"."+fieldName+".value = "+areaCode+phoneNumber+";");
		}
	}
}
