// show job buttons

function save_job(job_id)
{
	// Save Job Ad
	document.this_page.command.value = "save_job_ad";
	document.this_page.job_id.value = job_id;
	document.this_page.submit();
}


function show_tip_friend(job_id)
{
 var width = 460;
 var height = 260;
 var top = 50;
 var left = 50;
 window.open("tip_friend.asp?sa_id=" + job_id, "", "toolbar=no,directories=no,menubar=no,scrollbars=yes,status=yes,resizable=1,left=" + left + ",top=" + top + ",width=" + width + ",height=" + height);
}
 
 
 
function show_print_job(job_id)
{
 var width = 600;
 var height = 500;
 var top = 50;
 var left = 50;
 window.open("print.asp?sa_id=" + job_id, "", "toolbar=no,directories=no,menubar=no,scrollbars=yes,status=yes,resizable=1,left=" + left + ",top=" + top + ",width=" + width + ",height=" + height);
}


/////////////////
function search_jobs_changesort(rootURL, work_area, job_type) {
	var free_text = document.this_page.free_text.value;
	var location = document.this_page.location.value;
	var posted = document.this_page.posted.value;
	if (typeof(document.this_page.job_type)=='object') { job_type = get_multiple_list_selection(document.this_page.job_type); };
	try { var sort_by = document.this_page.sort_by.value; }	catch(e) { var sort_by = 0; }
	var SearchParm = 'free_text=' + free_text + '&work_area=' + work_area + '&location=' + location + '&job_type=' + job_type + '&posted=' + posted + '&sort_by=' + sort_by;
	if(rootURL != "" && rootURL != undefined) {	relocate(rootURL + "search_results.asp?" + SearchParm, "self"); }
	else { relocate("/search_results.asp?" + SearchParm, "self"); }
	return false;
}


function search_jobs(rootURL) {
	var free_text = document.this_page.free_text.value;
	var work_area = get_multiple_list_selection(document.this_page.work_area);
	var location = document.this_page.location.value;
	var job_type = "";
	if (typeof(document.this_page.job_type)=='object') { job_type = get_multiple_list_selection(document.this_page.job_type); };
	var posted = document.this_page.posted.value;
	try { var sort_by = document.this_page.sort_by.value; }	catch(e) { var sort_by = 0; }
	var SearchParm = 'free_text=' + free_text + '&work_area=' + work_area + '&location=' + location + '&job_type=' + job_type + '&posted=' + posted + '&sort_by=' + sort_by;
	if(rootURL != "" && rootURL != undefined) {	relocate(rootURL + "search_results.asp?" + SearchParm, "self"); }
	else { relocate("/search_results.asp?" + SearchParm, "self"); }
	return false;
}

// get_date_format
function get_date_format(year_string,date_string,month_string)
{
	// Get date created as object
	var today 			= new Date();
	var date_created	= new Date(year_string,month_string,date_string);
	var str_day	 	 	= new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
	var str_month	 	= new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
	var str_date 	 	= str_day[date_created.getDay()] + ", " + date_created.getDate() + " " + str_month[date_created.getMonth()];

	
	// Check today
	if (today.getDate() == date_created.getDate())
	{
		str_date = "Today ";// + str_hours + ":" + str_minutes;
	}
	// Check yesterday
	else if ( (today.getDate()-1 == date_created.getDate()) && 
			  (today.getMonth() == date_created.getMonth()) && 
			  (today.getFullYear() == date_created.getFullYear()) )
	{
		str_date = "Yesterday";// + str_hours + ":" + str_minutes;
	}

	document.write(str_date);
}

function validate_not_blank(field, name)
{
	// strip all spaces at start and end of line
	var regx_output = new String(field.value);
	var re1 = new RegExp("^[ ]*|([ ]*)\$", 'g');
	field.value = regx_output.replace(re1, "");
	
	if (field.value == "")
	{
		alert(format_str('The field "%s" can not be blank.', name));
		focus_field(field);
		return false;
	}
	return true;
}

function validate_email_address(field, name, allow_name_in_address, display_error)
{
	if (typeof display_error == "undefined")
	{
		display_error = true;
	}
	
	// Get field value
	var fieldval = field.value;
	
	// Remove spaces before and after email
	fieldval = fieldval.replace(/^\\s*/, "");
	fieldval = fieldval.replace(/\\s*\$/, "");
	
	// Update field
	field.value = fieldval;
	
	// If "name <email>" format is available - get email address
	if (allow_name_in_address)
	{
		var a = fieldval.indexOf("<");
		var b = fieldval.indexOf(">");
		if (a < b)
		{
			fieldval = fieldval.substring(a + 1, b);
		}
	}
	
	// Initialize
	var msg		= "";
	var last_at	= fieldval.lastIndexOf("\@");
	var before	= fieldval.substr(0, last_at);
	var after	= fieldval.substr(last_at + 1, fieldval.length - last_at - 1);
	var reg;
	
	// CHECK: the @ character must exist
	if (last_at < 0)
	{
		msg = "There is no @ in your e-mail address.";
	}
	
	// CHECK: there must be at least one character preceeding and one character following @
	if (!msg)
	{
		if ((before.length < 1) || (after.length < 1))
		{
			msg = "Your e-mail address must contain at least 1 character in front of @.";
		}
	}
	
	// CHECK: characters below 32 are illegal
	if (!msg)
	{
		for (var i = 0; i < fieldval.length; i++)
		{
			var code = fieldval.charCodeAt(i);
			if (code < 32)
			{
				msg = "You have used an invalid character in your email address.";
				break;
			}
		}
	}
	
	// CHECK: the ".@" combination is illegal
	if (!msg)
	{
		if (before.substr(before.length - 1, 1) == ".")
		{
			msg = "Du har skrevet et ulovligt tegn før @.";
		}
	}
	
	// CHECK: the "@." combination is illegal
	if (!msg)
	{
		if (after.substr(0, 1) == ".")
		{
			msg = "A full stop cannot be the first character after @.";
		}
	}
	
	// CHECK: at least one "." is required in the host section
	if (!msg)
	{
		if (after.indexOf(".") < 0)
		{
			msg = "There is no full stop in your e-mail address.";
		}
	}
	
	// CHECK: "." cannot be the last character
	if (!msg)
	{
		if (after.lastIndexOf(".") == (after.length - 1))
		{
			msg = "A full stop cannot be the last character in an e-mail address.";
		}
	}
	
	// CHECK: the "-." combination is illegal following @
	if (!msg)
	{
		reg = /\\-{1}\\.{1}/;
		if (reg.test(after))
		{
			msg = "A dash  (-) cannot be placed in front of a full stop (.)";
		}
	}
	
	// CHECK: "-" cannot be the last character
	if (!msg)
	{
		if (after.lastIndexOf("-") == (after.length - 1))
		{
			msg = "A dash (-) cannot be the last character in an e-mail address.";
		}
	}
	
	// CHECK: certain characters preceeding @ must be escaped
	if (!msg)
	{
		// 1) remove all escaped characters
		// 2) all remaining special characters were not escaped - which is illegal
		before = before.replace(/\\\\{1}.{1}/g, "");
		reg = /[\\s<>()\\[\\]\\\\,;:@\\"]{1,}/;
		if (reg.test(before))
		{
			msg = "You have used a character that cannot be used in front of the @.";
		}
	}
	
	// CHECK: the characters following @ are restricted
	// ASCII Characters below 32, not allowed
	if (!msg)
	{
		reg = new RegExp("^[\\x00-\\x20]*\$");
		if (reg.test(after))
		{
			msg = "You have used a character that cannot be used after the @.";
		}
	}
	
	// If the address is illegal
	if ((msg) && (display_error = true))
	{
		alert(format_str("The e-mail address '%s' is incorrect:\n%s\n\nE-mail addresses are usually formatted in the following way:\n - name.surname@company.co.uk\n - username@internetserviceprovider.com\n - initials@serviceprovider.com\n   etc.", name, msg));
		focus_field(field);
		return false;
	}
	
	// The address seems to be in order
	return true;
}


function validate_username_password()
{
	var frm = document.this_page;
	var username_label = "Email";
	var password_1_label = "Password";
	var password_2_label = "Confirm password";
	
	// Define illegal characters for usr + pwd
	var illegal_char_array = new Array("<", ">", "'", '"', "\\\\");
	
	// USERNAME
	if (!validate_not_blank(frm.myEmail, username_label))
		return false;
	
	// PASSWORD
	if (!validate_not_blank(frm.myPassword, password_1_label))
		return false;
	if (!validate_not_blank(frm.myPasswordConfirm, password_2_label))
		return false;
	
	if (frm.myPassword.value.indexOf(" ") >= 0)
	{
		alert("Password cannot contain spaces.");
		frm.myPassword.value = "";
		frm.myPasswordConfirm.value = "";
		focus_field(frm.myPassword);
		return false;
	}
	
	if (frm.myPassword.value.length > 10)
	{
		alert("Your password is too long. Max. 10 characters.");
		frm.myPassword.value = "";
		frm.myPasswordConfirm.value = "";
		focus_field(frm.myPassword);
		return false;
	}
	
	if (frm.myPassword.value.length < 6)
	{
		alert("Your password must contain at least 6 characters.");
		frm.myPassword.value = "";
		frm.myPasswordConfirm.value = "";
		focus_field(frm.myPassword);
		return false;
	}
	
	if (frm.myPassword.value != frm.myPasswordConfirm.value)
	{
		alert("Passwords were not identical.");
		frm.myPassword.value = "";
		frm.myPasswordConfirm.value = "";
		focus_field(frm.myPassword);
		return false;
	}
	
	for (var i = 0; i < illegal_char_array.length; i++)
	{
		if (frm.myPassword.value.indexOf(illegal_char_array[i]) >= 0)
		{
			alert(format_str("Your password cannot contain the character '%s'.", illegal_char_array[i]));
			frm.myPassword.value = "";
			frm.myPasswordConfirm.value = "";
			focus_field(frm.myPassword);
			return false;
		}
	}
	
	// CAPS-LOCK on both username and password is not accepted
	// - also handling extended characters like "æøå" which JavaScript ignores in Case functions
	if (frm.myEmail.value == frm.myEmail.value.toUpperCase())
		if (frm.myEmail.value.toLowerCase() != frm.myEmail.value.toUpperCase())
			if (frm.myPassword.value == frm.myPassword.value.toUpperCase())
				if (frm.myPassword.value.toLowerCase() != frm.myPassword.value.toUpperCase())
				{
					alert("Neither the user name nor the password can be written solely using upper-case letters.\\nTurn off the Caps-Lock facility by pressing the Caps-Lock key.");
					frm.myPassword.value = "";
					frm.myPasswordConfirm.value = "";
					focus_field(frm.myPassword);
					return false;
				}
	
	// USERNAME == PASSWORD
	if (frm.myEmail.value.toUpperCase() == frm.myPassword.value.toUpperCase())
	{
		alert("Your username and password cannot be identical.");
		frm.myPassword.value = "";
		frm.myPasswordConfirm.value = "";
		focus_field(frm.myPassword);
		return false;
	}
	
	// PASSWORD == "PASSWORD"
	if ( frm.myPassword.value.toUpperCase() == "PASSWORD" )
	{
		alert("Your password cannot be \"password\".");
		frm.myPassword.value = "";
		frm.myPasswordConfirm.value = "";
		focus_field(frm.myPassword);
		return false;
	}
	
	return true;
}

function page_username_taken(name_used, name_suggested)
{
	if (name_suggested == "")
	{
		alert("This user name is already in use. Please choose another username.");
	}
	
	else if (confirm(format_str("This user name is already in use. Would you like to use %s?", name_suggested)))
	{
		document.this_page.username.value = name_suggested;
		alert(format_str("This user name is know \'%s\'.", name_suggested));
		create_user();
	}
}


function validate_user_data()
{
	var frm = document.this_page;
	var firstname_label = "Firstname";
	var surname_label 	= "Surname";
	var address_label 	= "Address";
	var postcode_label	= "Postcode";
	var town_label		= "Town";
	var email_1_label 	= "Email";
	var email_2_label 	= "Repeat email";
	
	if (!validate_not_blank(frm.myFirstname, firstname_label))
		return false;
	if (!validate_not_blank(frm.mySurname, surname_label))
		return false;
	if (!validate_not_blank(frm.myAddress1, address_label))
		return false;
	if (!validate_not_blank(frm.myPostcode, postcode_label))
		return false;
	if (!validate_not_blank(frm.myTown, town_label))
		return false;
	if (!validate_not_blank(frm.myEmail, email_1_label))
		return false;
	if (!validate_not_blank(frm.myEmailConfirm, email_2_label))
		return false;
	
	// Validate email address 1
	if (!validate_email_address(frm.myEmail, frm.myEmail.value))
		return false;
	
	// Compare with email address 2 (stripping spaces at start and end)
	var txt = frm.myEmailConfirm.value;
	txt = txt.replace(/^\\s*/, "").replace(/\\s*\$/, "");
	if (frm.myEmail.value != txt)
	{
		alert("The e-mail adresses were not identical");
		focus_field(frm.myEmail);
		return false;
	}
	
	return true;
}


function logon()
{
	if (!validate_not_blank(document.this_page.loginEmail, "Email Address"))
		return false;
	if (!validate_not_blank(document.this_page.loginPassword, "Password"))
		return false;
		
	document.this_page.action = "register.asp";
	document.this_page.command.value = "logon";
	document.this_page.submit();
}


function forgot_password()
{
	if (!validate_not_blank(document.this_page.myForgotPassword, "E-mail"))
		return false;
	if (!validate_email_address(document.this_page.myForgotPassword, document.this_page.myForgotPassword.value))
		return false;
	
	document.this_page.command.value = "forgot_password";
	document.this_page.submit();
}

function forgot_password_pop () {
  	mywindow = window.open ("./forgot_password.asp", "tipWindow","location=0,status=0,scrollbars=0,width=520,height=350");
  	mywindow.moveTo(470,200);	
}


function user_logoff()
{
	document.this_page.action = "register.asp";
	document.this_page.command.value = "user_logoff";
	document.this_page.submit();
}	

function save_job(job_id)
{
	// Save Job Ad
	document.this_page.command.value = "save_job_ad";
	document.this_page.job_id.value = job_id;
	document.this_page.submit();
}

function remove_job(job_id)
{
	// Remove Job Ad
	document.this_page.command.value = "remove_job_ad";
	document.this_page.job_id.value = job_id;
	document.this_page.submit();
}

//
// save_mail_agent
//
function save_mail_agent()
{
	// Validate
	if (!validate_not_blank(document.this_page.mail_agent_name, 'Mail Agent Name'))
		return false;

	var id							= document.this_page.id.value;
	var mail_agent_name				= document.this_page.mail_agent_name.value;
	var agent_free_text				= document.this_page.free_text.value;
	agent_free_text					= escape(format_free_text(agent_free_text));
	var agent_location				= document.this_page.location.value;

	// get work_areas
	var agent_work_area		= new Array();
	agent_work_area 		= get_multiple_list_selection(document.this_page.work_area);

	// job_types
 	var agent_job_type		= new Array();
	agent_job_type 			= get_multiple_list_selection(document.this_page.job_type);
	
	var search_params  		= new Array();
	search_params[search_params.length] = "command=save_mail_agent";
	if(mail_agent_name != "" && mail_agent_name != undefined) search_params[search_params.length] = "mail_agent_name=" + escape(mail_agent_name);
	else search_params[search_params.length] = "mail_agent_name=";
	if(agent_free_text != "" && agent_free_text != undefined) search_params[search_params.length] = "agent_free_text=" + escape(agent_free_text);
	else search_params[search_params.length] = "agent_free_text=";
	if(agent_work_area != "" && agent_work_area != undefined) search_params[search_params.length] = "agent_work_area=" + agent_work_area;
	else search_params[search_params.length] = "agent_work_area=";
	if(agent_location != "" && agent_location != undefined) search_params[search_params.length] = "agent_location=" + agent_location;
	else search_params[search_params.length] = "agent_location=";
	if(agent_job_type != "" && agent_job_type != undefined) search_params[search_params.length] = "agent_job_type=" + agent_job_type;
	else search_params[search_params.length] = "agent_job_type=";
				
	str_params = search_params.join("&");

	document.this_page.action = "search.asp?" + str_params;
	document.this_page.submit();
}


// get_multiple_list_selection
function get_multiple_list_selection(list_name)
{	
	var multiple_list_array	= new Array();
	if (list_name[0].selected == 0)
	{
		for (var i=0; i < list_name.length; i++)
		{
			if (list_name[i].selected == 1)
			{
				multiple_list_array[multiple_list_array.length] = list_name[i].value;
			}
		}
	}
	multiple_list_array = multiple_list_array.join(",");
	return multiple_list_array;
}