// --------------------------------------------------------------------------------
// tp_EmployerProfile.js
// Simon Anderson 26-Jan-2005
// Contains Javascript relevant to the Employer create profile form.
// --------------------------------------------------------------------------------

var empProMode = document.getElementById("empProMode");
var fieldPrefix = ""

if (empProMode.value == "create")
	fieldPrefix = "tmpl_tpEmployerCreateProfile_tpEmployerCreateProfile_"
else if (empProMode.value == "update")
	fieldPrefix = "tmpl_tpEmployerUpdateProfile_tpEmployerUpdateProfile_"


// --- Attach JS to document elements and execute simple statements. ---
ow_f_AppendLoadEvent(
function() {

	if (document.getElementById(fieldPrefix + "ow_btnOK") != null)
		ow_f_AddEvent(document.getElementById(fieldPrefix + "ow_btnOK"), "click", employerProfileFormSubmitClicked, false);


	if (document.getElementById("hrEmpProfile_form") != null) {
		var inp = document.getElementById("hrEmpProfile_form").getElementsByTagName("input");
		for (var i = 0; i < inp.length; i++) {
			if (inp[i].type == "text") ow_f_AddEvent(inp[i], "keypress", employerProfileFormTextSubmit, false);
		}
	}
}
);

// --------------------------------------------------------------------------------
// employerProfileFormTextSubmit()
// Fires when a textfield had focus and ENTER was pressed.
// --------------------------------------------------------------------------------
// Arguments:
//	- none
// Returns:
//	- Nothing
// --------------------------------------------------------------------------------
function employerProfileFormTextSubmit(e) {

	var code;
	if (!e) var e = window.event;
	if (e.keyCode) code = e.keyCode;
	else if (e.which) code = e.which;

	if (code == 13) {
		document.getElementById(fieldPrefix + "ow_btnOK").click();
		if (e.preventDefault) e.preventDefault(); else e.returnValue = false;
	}
}

// --------------------------------------------------------------------------------
// employerProfileFormSubmitClicked()
// Fires when the submit button was clicked.
// --------------------------------------------------------------------------------
// Arguments:
//	- none
// Returns:
//	- Nothing
// --------------------------------------------------------------------------------
function employerProfileFormSubmitClicked(e) {

	if (!CheckEmployerProfileData()) {
		if (!e) var e = window.event;
		if (e.preventDefault) e.preventDefault(); else e.returnValue = false;
	} else {
		return;
	}
}


function CheckEmployerProfileData()
{
	// return if the cancel button is clicked
	//if (ow_cancelled)
	//	return true;

	var ow_txtFirstName = document.getElementById(fieldPrefix + "ow_txtFirstName");
	if (ow_txtFirstName != null)
		if (ow_txtFirstName.value.length == 0) {
			alert(document.getElementById(fieldPrefix + "ow_rfvFirstName").value);
			ow_txtFirstName.focus();
			return false;
		}

	var ow_txtLastName = document.getElementById(fieldPrefix + "ow_txtLastName");
	if (ow_txtLastName != null)
		if (ow_txtLastName.value.length == 0) {
			alert(document.getElementById(fieldPrefix + "ow_rfvLastName").value);
			ow_txtLastName.focus();
			return false;
		}
		
	var ow_txtTitle = document.getElementById(fieldPrefix + "ow_txtTitle");
	if (ow_txtTitle != null)
		if (ow_txtTitle.value.length == 0) {
			alert(document.getElementById(fieldPrefix + "ow_rfvTitle").value);
			ow_txtTitle.focus();
			return false;
		}		
		
	var ow_txtEmail = document.getElementById(fieldPrefix + "ow_txtEmail");
	if (ow_txtEmail != null)
		if (ow_txtEmail.value.length == 0)
		{
			alert(document.getElementById(fieldPrefix + "ow_rfvEmail").value);
			ow_txtEmail.focus();
			return false;
		}
		else
		{
			var em_re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if (!document.getElementById(fieldPrefix + "ow_txtEmail").value.match(em_re))
			{
				alert(document.getElementById(fieldPrefix + "ow_revEmail").value);
				document.getElementById(fieldPrefix + "ow_txtEmail").focus();
				return false;
			}
		}
		
	var ow_txtPassword = document.getElementById(fieldPrefix + "ow_txtPassword");
	if (ow_txtPassword != null)
		if (ow_txtPassword.value.length == 0) {
			alert(document.getElementById(fieldPrefix + "ow_rfvPassword").value);
			ow_txtPassword.focus();
			return false;
		}
		else 
		{
			var em_re = /^.{6,12}$/;
			//Match all alphanumeric character and predefined wild characters. 
			//Password must consists of at least 6 characters and not more than 12 characters. 
			// see: http://regexlib.com/DisplayPatterns.aspx?cattabindex=5&categoryId=6
			//var em_re = /^([a-zA-Z0-9@*#]{6,12})$/;
			if (!ow_txtPassword.value.match(em_re))
			{
				alert(document.getElementById(fieldPrefix + "ow_revPassword").value);
				ow_txtPassword.focus();
				return false;
			}
		}			
		
	var ow_txtPasswordAgain = document.getElementById(fieldPrefix + "ow_txtPasswordAgain");
	if (ow_txtPasswordAgain != null)
		if (ow_txtPasswordAgain.value.length == 0) {
			alert(document.getElementById(fieldPrefix + "ow_rfvPasswordAgain").value);
			ow_txtPasswordAgain.focus();
			return false;
		}		
		
	if (ow_txtPassword != null && ow_txtPasswordAgain != null)	
		if (ow_txtPassword.value != ow_txtPasswordAgain.value)	{
			alert(document.getElementById(fieldPrefix + "ow_cvPasswordAgain").value);
			ow_txtPasswordAgain.focus();
			return false;		
		}

	var ow_txtPhone = document.getElementById(fieldPrefix + "ow_txtPhone");
	if (ow_txtPhone != null)
		if (ow_txtPhone.value.length == 0) {
			alert(document.getElementById(fieldPrefix + "ow_rfvPhone").value);
			ow_txtPhone.focus();
			return false;
		}

	var ow_txtOrganizationName = document.getElementById(fieldPrefix + "ow_txtOrganizationName");
	if (ow_txtOrganizationName != null)
		if (ow_txtOrganizationName.value.length == 0) {
			alert(document.getElementById(fieldPrefix + "ow_rfvOrganizationName").value);
			ow_txtOrganizationName.focus();
			return false;
		}


	var ow_txtAddressLine1 = document.getElementById(fieldPrefix + "ow_txtAddressLine1");
	if (ow_txtAddressLine1 != null)
		if (ow_txtAddressLine1.value.length == 0) {
			alert(document.getElementById(fieldPrefix + "ow_rfvAddressLine1").value);
			ow_txtAddressLine1.focus();
			return false;
		}

	var ow_txtCity = document.getElementById(fieldPrefix + "ow_txtCity");
	if (ow_txtCity != null)
		if (ow_txtCity.value.length == 0) {
			alert(document.getElementById(fieldPrefix + "ow_rfvCity").value);
			ow_txtCity.focus();
			return false;
		}


	var ow_txtPostalZip = document.getElementById(fieldPrefix + "ow_txtPostalZip");
	if (ow_txtPostalZip != null)
		if (ow_txtPostalZip.value.length == 0) {
			alert(document.getElementById(fieldPrefix + "ow_rfvPostalZip").value);
			ow_txtPostalZip.focus();
			return false;
		}


	var ow_txtCompanyPhone = document.getElementById(fieldPrefix + "ow_txtCompanyPhone");
	if (ow_txtCompanyPhone != null)
		if (ow_txtCompanyPhone.value.length == 0) {
			alert(document.getElementById(fieldPrefix + "ow_rfvCompanyPhone").value);
			ow_txtCompanyPhone.focus();
			return false;
		}
		
		
	var ow_txtWebSiteAddress = document.getElementById(fieldPrefix + "ow_txtWebSiteAddress");
	var url_re = /^((?:ftp|http|https):\/\/)+([!-~])+([.])+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[A-Za-z][A-Za-z])\b(?:\:\d+)?(?:\/[!-~]*)?$/i;
	if (ow_txtWebSiteAddress != null && ow_txtWebSiteAddress.value != null && !ow_txtWebSiteAddress.value.match(url_re)) 
	{
		alert(document.getElementById(fieldPrefix + "ow_regvWebsite").value);
		ow_txtWebSiteAddress.focus();
		return false;
	}	

	var ow_lstIndustry = document.getElementById(fieldPrefix + "ow_lstIndustry");
	if (ow_lstIndustry != null)
		if (ow_lstIndustry.value == 0) {
			alert(document.getElementById(fieldPrefix + "ow_cvIndustry").value);
			ow_lstIndustry.focus();
			return false;
		}	


	var ow_lstCompanySize = document.getElementById(fieldPrefix + "ow_lstCompanySize");
	if (ow_lstCompanySize != null)
		if (ow_lstCompanySize.value == 0) {
			alert(document.getElementById(fieldPrefix + "ow_cvCompanySize").value);
			ow_lstCompanySize.focus();
			return false;
		}	


	//===============================================================================================================	
	// check for correct filenaming on the uploaded file and that it is one of the supported types
	// currently jpg,jpeg,gif,png
	var ow_filImage = document.getElementById(fieldPrefix + "ow_filImage");
	if (ow_filImage != null)
	{
		var filename = ow_filImage.value.substring(ow_filImage.value.lastIndexOf("\\") + 1, ow_filImage.value.length);
		
		if (filename.length != 0) {
			
			// check for allowed file types
			var ext_re = /(\.jpg|\.jpeg|\.gif|\.png)$/i;
			if (!ow_filImage.value.match(ext_re)) {
				alert(document.getElementById(fieldPrefix + "ow_regvImageFile").value);
				ow_filImage.focus;
				return false;
			}	
			
			// check for invalid characters in the filename
			//var fileNameChars_re = /^[\w\s0-9\-_:]+\.[a-z0-9]{2,6}$/i;
			var fileNameChars_re = /^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))+\.[a-zA-Z0-9]{2,6}$/i;

			if (!ow_filImage.value.match(fileNameChars_re)) {
				alert(document.getElementById(fieldPrefix + "ow_regvImageFileChars").value);
				ow_filImage.focus;
				return false;
			}
		
			// check if the file upload is present, and show the upload progress window
			//ow_OpenUploadWindow();

		} 
	}
	//===============================================================================================================	
		

	var ow_txtOverview = document.getElementById(fieldPrefix + "ow_txtOverview");
	if (ow_txtOverview != null)
	{
		if (ow_txtOverview.value.length == 0) {
			alert(document.getElementById(fieldPrefix + "ow_rfvOverview").value);
			ow_txtOverview.focus();
			return false;
		}
		else if (ow_txtOverview.value.length > 1200) {
			alert(document.getElementById(fieldPrefix + "ow_cvOverview").value);
			ow_txtOverview.focus();
			return false;
		}
	}	
	
  return true;

}	