var W3CDOM = (document.getElementsByTagName && document.createElement);

// Declaring required variables for check Phone numbers
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;



function ShowHide(mycombo){ 
	var i = mycombo.selectedIndex 

	if (mycombo.selectedIndex == 2) { 
		document.getElementById('ProductDiv').style.display = "block"; 
		document.getElementById('PositionDiv').style.display = "block"; 
	} 
	else { 
		document.getElementById('ProductDiv').style.display = "none"; 
		document.getElementById('PositionDiv').style.display = "none"; 
	} 
}


function ContactRequest()
{
	var fieldArray = new Array(13);
	fieldArray[0] = "EnquiryType";
	fieldArray[1] = "Product";
	fieldArray[2] = "FirstName";
	fieldArray[3] = "LastName";
	fieldArray[4] = "Position";
	fieldArray[5] = "EmailAddress";
	fieldArray[6] = "PhoneNumber";
	fieldArray[7] = "CompanyName";
	fieldArray[8] = "AddressLine1";
	fieldArray[9] = "AddressLine2";
	fieldArray[10] = "PostCode";
	fieldArray[11] = "country";
	fieldArray[12] = "Message";
	
	if (ContactRequestValidate()) {
		result = runAgent("ProcessContactRequest", BuildXMLVariables(fieldArray));

		window.location='../(ynDK_contentByKey)/Home';
	}
}


function ContactRequestValidate() {
	validForm = true;
	firstError = null;
	errorstring = '';
	var x = document.forms[2].elements;

	var y = new Array(5);
	y[0] = 11;
	y[1] = 2;
	y[2] = 3;
	y[3] = 5;
	y[4] = 6;
	for (var i=0;i<y.length;i++) {
		z=y[i]
		if (!x[z].value)
			writeError(x[z],'This field is required');
	}
	if (x['EmailAddress'].value.indexOf('@') == -1)
		writeError(x['EmailAddress'],'This is not a valid email address');
	if (checkInternationalPhone(x['PhoneNumber'].value) == false)
		writeError(x['PhoneNumber'],'Please enter a valid phone number in Australian or International format');
	if (!W3CDOM)
		alert(errorstring);
	if (firstError)
		firstError.focus();
	return validForm;
}



function WhitelistRequest()
{
	var fieldArray = new Array(5);
	fieldArray[0] = "FirstName";
	fieldArray[1] = "LastName";
	fieldArray[2] = "EmailAddress";
	fieldArray[3] = "PhoneNumber";
	fieldArray[4] = "CompanyName";
	
	if (WhitelistRequestValidate()) {
		result = runAgent("ProcessWhitelistRequest", BuildXMLVariables(fieldArray));

		window.location='../(ynDK_contentByKey)/UBEPolicy';
	}
}


function WhitelistRequestValidate() {
	validForm = true;
	firstError = null;
	errorstring = '';
	var x = document.forms[2].elements;
	for (var i=0;i<(x.length - 1);i++) {
		if (!x[i].value)
			writeError(x[i],'This field is required');
	}
	if (x['EmailAddress'].value.indexOf('@') == -1)
		writeError(x['EmailAddress'],'This is not a valid email address');
	if (checkInternationalPhone(x['PhoneNumber'].value) == false)
		writeError(x['PhoneNumber'],'Please enter a valid phone number in Australian or International format');
	if (!W3CDOM)
		alert(errorstring);
	if (firstError)
		firstError.focus();
	return validForm;
}

function writeError(obj,message) {
	validForm = false;
	if (obj.hasError) return;
	if (W3CDOM) {
		obj.className += ' error';
		obj.onchange = removeError;
		var sp = document.createElement('span');
		sp.className = 'error';
		sp.appendChild(document.createTextNode(message));
		obj.parentNode.appendChild(sp);
		obj.hasError = sp;
	}
	else {
		errorstring += obj.name + ': ' + message + '\n';
		obj.hasError = true;
	}
	if (!firstError)
		firstError = obj;
}

function removeError()
{
	this.className = this.className.substring(0,this.className.lastIndexOf(' '));
	this.parentNode.removeChild(this.hasError);
	this.hasError = null;
	this.onchange = null;
}


function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}



// CrossBrowser Function - - - 
// Builds the XML variables that will be sent to the agent. 
function BuildXMLVariables(fieldArray) 
{ 
    // This "If" condition tests the browser (for Mozzilla, non IE). 
   //  If you have a specific browser test you'd like to do here, thats fine. 
if (document.implementation.createDocument) 
{ 
	 // Mozilla, create a new DOMParser 
        var parser = new DOMParser(); 
        xmlString = "<doc>" 
	var tmpOBJ;
	
        for (x in fieldArray)
        {
	tmpOBJ = eval("document.forms[0]." + fieldArray[x]);
	// add as many as you'd like to here. These variables will be accessible via the agent. 
	xmlString = xmlString + "<" + fieldArray[x] + ">" + tmpOBJ.value + "</" + fieldArray[x] + ">"
        }

       //OLD CODE
       //xmlString = xmlString + "<FirstName>" + document.forms[0].FirstName.value + "</FirstName>" 
       //
       // xmlString = xmlString + "<LastName>" + document.forms[0].LastName.value + "</LastName>" 
       //
       // xmlString = xmlString + "<EmailAddress>" + document.forms[0].EmailAddress.value + "</EmailAddress>" 


        xmlString = xmlString +  "</doc>" 

        objDOM = parser.parseFromString(xmlString, "text/xml"); 
} 



   // This "If" condition tests the browser (for IE).  If you have a specific 
   // browser test you'd like to do here, thats fine.   
else if (window.ActiveXObject) 
{ 
        // IE, create a new XML document using ActiveX 
        // and use loadXML as a DOM parser. 
        var objDOM = new ActiveXObject("Microsoft.XMLDOM") 
	var tmpOBJ;

        RootEl = objDOM.createNode(1, "RootElement", "") 
        objDOM.documentElement = RootEl 

        for (x in fieldArray)
        {
	//mpOBJ = eval("document.forms[0]." + fieldArray[x]);

	// add as many of these nodes as you need. 
	// these variables will be accessible via the agent. 
	objHeaders = objDOM.createNode(1, fieldArray[x], "") 
	//objHeaders.text = tmpOBJ.value 
	objHeaders.text = eval("document.all." + fieldArray[x] + ".value");    //alert(objHeaders.text);
	RootEl.appendChild(objHeaders) 
        }

       //OLD CODE
       // add as many of these nodes as you need. 
       // these variables will be accessible via the agent. 
       //        objHeaders = objDOM.createNode(1, "FirstName", "") 
       //        objHeaders.text = document.all.FirstName.value 
       //        RootEl.appendChild(objHeaders) 
       //
       //        objHeaders = objDOM.createNode(1, "LastName", "") 
       //        objHeaders.text = document.all.LastName.value 
       //        RootEl.appendChild(objHeaders) 
       //
       //        objHeaders = objDOM.createNode(1, "EmailAddress", "") 
       //        objHeaders.text = document.all.EmailAddress.value 
       //        RootEl.appendChild(objHeaders) 
} 

return objDOM; 
} 





// Cross-Browser ----- Calls the Agent 
function runAgent(strAgentName, strXMLvariables) 
{ 
	path = window.location.pathname.toLowerCase(); 
	nsfPos = path.indexOf(".nsf"); 
	path = path.substring(0, nsfPos+5); 
	// path now contains the relative url of the window upto ".nsf/" 

     strUrl = path + "/"+strAgentName+"?OpenAgent"; 

   // This "If" condition tests the browser (for Mozzilla, non IE). 
   //  If you have a specific browser test you'd like to do here, thats fine. 
if (document.implementation.createDocument) 
{ 
        objHTTP = new XMLHttpRequest(); 
        objHTTP.open("POST", strUrl, false); 
   } 
   else if (window.ActiveXObject) 
   { 
        objHTTP = new ActiveXObject("Microsoft.XMLHTTP"); 
        objHTTP.open("POST", strUrl, false, "", ""); 
   } 

   objHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

   objHTTP.send(strXMLvariables); 

   resp = objHTTP.responseText; 

   objHTTP = null; 

   return resp; 
}
