var langtag = (typeof n_lang != 'undefined' ? n_lang.toUpperCase() : 'EN-US');
var isStage = (location.hostname.indexOf("stage") > 0 || location.hostname.indexOf("test") > 0) ? true : false;

function getFormPagePath() {
	var pagePath = location.pathname;
	if(typeof n_root != "undefined") {
		switch(n_root) {
			case "de-de" :
			case "es-es" :
			case "fr-fr" :
			case "it-it" :
			case "nl-nl" :
			case "cs-cz" :
			case "ja-jp" :
			case "zh-cn" :
			case "zh-tw" :
			case "hu-hu" :
			case "pl-pl" :
			case "pt-br" :
			case "ru-ru" :
			case "sv-se" :
			case "da-dk" :
			case "fi-fi" :
			case "no-no" :
				pagePath = pagePath.replace("/"+n_root, "");
				break;
		}
	}
	return pagePath;
}

function setMetrics() {
	cmCompletion(getFormPagePath(),'Request a Call');
	setOmnitureVars();
}

var set = false;
function setInit() {
	if(!set) {
		cmInitiation(getFormPagePath(),'Request a Call');
		set = true;
	}
	return;
}

function setOmnitureVars() {
	//s_linkTrackVars="";
	//s_linkTrackEvents="";
	s_linkType="o";
	s_channel = "Request a Call Form:"+langtag;
	s_prop13 = "Request a Call Form:"+langtag;
	s_linkName="Request a Call Form:"+langtag;
	s_pageName="";
	if (!isStage) {
		s_lnk=s_co(this);
		s_gs("novellcom");
	}
	return;
}

// Get Translated string if available
function gt(varname,defaultstring) {
	return ((eval("typeof "+varname) != 'undefined') ? eval(varname) : defaultstring)
}

// Convert characters above ascii 127 into html numeric character references (in decimal)
// See http://www.pinyin.info/tools/converter/chars2uninumbers.html for a useful implementation of this
function convertToEntities(input) {
	var output = "";
	for(var i=0; i<input.length; i++) {
		if (input.charCodeAt(i) <= 127) {
			output += input.charAt(i);
		}
		else {
			output += "&#" + input.charCodeAt(i) + ";";
		}
	}
	return output;
}

function convertFormTextToEntities() {
	for (var i = 0; i < allFormTextFields.length; i++) {
		theField = eval("document.getElementById('salescallrequest')." + allFormTextFields[i][0]);
		theField.value = convertToEntities(theField.value);
	}
}

// Trim whitespace from left and right sides of s.
function trim(s) {
	return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
}

// Phone prefill based on country
var phonechanged = false;
var prefill_default = '+00 000 0000000';
var prefill_us_canada = '000-000-0000';
function getPhonePrefill(country) {
	var prefillvalue = prefill_default;
	if (country && country != null && (country == 'United States' || country == 'Canada')) { prefillvalue = prefill_us_canada; }
	return prefillvalue;
}
function setPhonePrefill(country) {
	if (!phonechanged) document.getElementById('question_6177').value = getPhonePrefill(country);
}
function isPhonePrefill(phonenumber) {
	return (phonenumber == prefill_default || phonenumber == prefill_us_canada);
}
function setPhoneChanged() {
	phonechanged = true;
}

// Validation:
var formTextFields = new Array();
formTextFields[0] = new Array("question_6173",gt("firstname_translated","First Name"));
formTextFields[1] = new Array("question_6174",gt("lastname_translated","Last Name"));
formTextFields[2] = new Array("question_6175",gt("company_translated","Company"));
formTextFields[3] = new Array("question_6178",gt("country_translated","Country"));
formTextFields[4] = new Array("question_6181",gt("city_translated","City"));
formTextFields[5] = new Array("question_6177",gt("phone_translated","Phone Number"));
formTextFields[6] = new Array("question_6176",gt("email_translated","E-mail Address"));

var allFormTextFields = new Array();
allFormTextFields[0] = new Array("question_6173",gt("firstname_translated","First Name"));
allFormTextFields[1] = new Array("question_6174",gt("lastname_translated","Last Name"));
allFormTextFields[2] = new Array("question_6175",gt("company_translated","Company"));
allFormTextFields[3] = new Array("question_6178",gt("country_translated","Country"));
allFormTextFields[4] = new Array("question_6181",gt("city_translated","City"));
allFormTextFields[5] = new Array("question_6177",gt("phone_translated","Phone Number"));
allFormTextFields[6] = new Array("question_6176",gt("email_translated","E-mail Address"));

var formRegexFields = new Array();
formRegexFields[0] = new Array("question_6176","^.+@.+$",gt("emailerror_translated","Please enter an e-mail address with a valid format (i.e. \"username@domainname\")"));
formRegexFields[1] = new Array("question_6177","^.*\\d.*$",gt("phoneerror_translated","Please enter a phone number which contains one or more digits"));

var maxFieldLength = 2000;
var line = "___________________________________________________"
function formCheck() {
	var formOK = true;
	var errorMessage = "";
	var lengthExceeded = false;
	var blank = false;
	var frm = document.getElementById('salescallrequest');

	// Max Length:
	for (i = 0; i < allFormTextFields.length; i++) {
		theField = eval("document.getElementById('salescallrequest')." + allFormTextFields[i][0]);
		//alert("field name: "+allFormTextFields[i][0]+"  theField.value.length: "+theField.value.length+"  maxFieldLength: "+maxFieldLength);
		if(theField.value.length > maxFieldLength) {
			formOK = false;
			if(!lengthExceeded) {
				errorMessage += "\n"+gt("maxlengtherror_translated","The values entered in the following fields exceed the maximum length")+": " + maxFieldLength + " "+gt("characters_translated","characters")+":\n";
				lengthExceeded = true;
			}
			errorMessage += "\t" + allFormTextFields[i][1] + " (" + theField.value.length + " " + gt("characters_translated","characters") + ")\n";
		}
	}
	// Required (text)
	for (i = 0; i < formTextFields.length; i++) {
		theField = eval("document.getElementById('salescallrequest')." + formTextFields[i][0]);
		if(trim(theField.value).length == 0 || (theField.name == 'question_6177' && isPhonePrefill(trim(theField.value)))) {
			formOK = false;
			if(!blank) {
				errorMessage += "\n"+gt("blank_translated","The following required fields were left blank")+":\n ";
				blank = true;
			}
			errorMessage += "\t" + formTextFields[i][1] + "\n";
		}
	}
	// Regex
	for(i = 0; i < formRegexFields.length; i++) {
		theFieldValue = (eval("document.getElementById('salescallrequest')." + formRegexFields[i][0])).value;
		var regex = new RegExp(formRegexFields[i][1]);
		if (theFieldValue != "" && !regex.test(theFieldValue)) {
			formOK = false;
			errorMessage += "\n" + formRegexFields[i][2] + "\n";
		}
	}

	if (!formOK) {
		alert(line + "\n\n"+gt("error_translated","Your form was not submitted because of the following problems")+"\n" + line + "\n" + errorMessage);
		return false;
	}

	// set the subject
	var subject = "Novell.com Web Lead - Call Immediately (" + frm.question_6178.value + ")";
	frm.email_subject.value = subject;

	// set the pageencoding (charset)
	if(typeof n_enc != 'undefined') frm.charset.value = n_enc;

	// set the language
	var requestfrom = "Request a Call Form:"+langtag;
	frm.request_from.value = requestfrom;
	frm.question_6241.value = langtag;

	// set the refering url
	if(document.referrer && document.referrer.length > 0) frm.question_6243.value = document.referrer;

	// set the thankyou page
	if(typeof rc_thankyou_page != 'undefined') frm.thankyou_page.value = rc_thankyou_page;

	// Set the profile_url
	if(location.href.indexOf('/company/sales_call_request_popup.html') != -1) {
		// We are on the popup, so we got here through a link
		if (queryString('profile_url') != 'false') {
			//alert("profile_url was passed in: "+queryString('profile_url'));
			frm.profile_url.value = queryString('profile_url');
		}
		// don't do this for now.  Ryan prefers enforcing a profile_url parameter
		// for the sake of better accuracy in the numbers
		/*else if (document.referrer && document.referrer.length > 0) {
			//alert("getting profile_url from referrer: "+document.referrer);
			frm.profile_url.value = document.referrer;
		}*/
		else {
			// We don't know what page they came from, so it can't be tracked
			//alert("no referrer or profile_url.  Source page unknown.");
		}
	}
	else {
		// We are embedded in a page
		//alert("We are embedded in a page.\nSetting profile_url to location.href: "+location.href);
		frm.profile_url.value = location.href;
	}

	setMetrics();
	convertFormTextToEntities();
}
