function relocate(url, target)
{
	eval(format_str("%s.location.href=url", target));
}

// show job buttons


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()
{
	var free_text = document.this_page.free_text.value;
	var work_area = get_multiple_list_selection(document.this_page.work_area);
	var location = get_multiple_location_selection(document.this_page.location);

	var job_type = "";
	var posted = "";
	try
	{
		job_type = get_multiple_list_selection(document.this_page.job_type);
		posted = document.this_page.posted.value;
	}
	catch (e)
	{
		job_type = "";
		posted = "";
	}

	var strSearchParm = "";
        var strExpr = "(strSearchParm == ''?'':'&')"

	strSearchParm += ((free_text != "" && free_text != undefined) ? (eval(strExpr) + "free_text=" + free_text) : "");
	strSearchParm += ((work_area != "" && work_area != undefined) ? (eval(strExpr) + "work_area=" + work_area) : "");
	strSearchParm += ((location != ""  && location != undefined)  ? (eval(strExpr) + "location="  + location) : "");
	strSearchParm += ((job_type != ""  && job_type != undefined)  ? (eval(strExpr) + "job_type="  + job_type) : "");
	strSearchParm += ((posted != ""  && posted != undefined)  ? (eval(strExpr) + "posted="  + posted) : "");

	relocate("search_results.asp?" + strSearchParm, "self");
}

//
// get_date_difference !!!pass on (MM/DD/YYYY) format!!!
//
function get_date_difference(start_date, end_date, unit)
{
	var unit_int = 0;
	var time_increment = 0;
	var date_obj = new Date();
		
	switch(unit)
	{
		case "days"	  : unit_int = 24*60*60*1000; break;
		case "hours"  :	unit_int = 60*60*1000; time_increment = date_obj.getHours()*60; break;
		case "minutes": unit_int = 60*1000; time_increment = (date_obj.getHours()*60) + date_obj.getMinutes(); break;
		case "seconds": unit_int = 1000; time_increment = (date_obj.getHours()*60) + (date_obj.getMinutes()*60); break;
		default		  : unit_int = 24*60*60*1000; break;
	}
		
	return parseInt(((Date.parse(end_date)-Date.parse(start_date))/unit_int) + time_increment);
}


// get_date_format
function get_date_format(year_string,month_string,date_string)
{
	// Get date created as object
	var today 		= new Date();
	var date_created	= new Date(year_string,(month_string-1),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()];

	var countMillisecondsPerDay	= 1000 * 60 * 60 * 24;	// (milliseconds * seconds * minutes * hours)
	var day_diff			= Math.floor((today.getTime() - date_created.getTime()) / countMillisecondsPerDay);

	// Check today
	if (day_diff == 0)
	{
		str_date = "Today ";// + str_hours + ":" + str_minutes;
	}
	// Check yesterday
	else if (day_diff == 1)
	{
		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 = "Username";
	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.myUsername, 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.myUsername.value.length < 6)
	{
		alert("Your username must contain at least 6 characters.");
		frm.myUsername.value = "";
		focus_field(frm.myUsername);
		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.myUsername.value == frm.myUsername.value.toUpperCase())
		if (frm.myUsername.value.toLowerCase() != frm.myUsername.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.myUsername.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 username_label  = "Username";
	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.myUsername, username_label))
	//	return false;
	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 validate_user_data_modified()
{
	var frm = document.this_page;
	var username_label  = "Username";
	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.myUsername, username_label))
	//	return false;
	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;
	
	// 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;
	}
	
	// Compare with email address 2 (stripping spaces at start and end)
	
	return true;
}



function logon()
{
	if (!validate_not_blank(document.this_page.loginUsername, "Username"))
		return false;
	if (!validate_not_blank(document.this_page.loginPassword, "Password"))
		return false;

	document.this_page.action = "register.asp";
	document.this_page.cmd.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.cmd.value = "user_logoff";
	document.this_page.submit();
}	

function save_job(job_id)
{
	// Save Job Ad
	document.this_page.command.value = "save_job_ad2";
	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(mail_agent_id)
{
	// Validate
	if (!validate_not_blank(document.this_page.mail_agent_name, 'Mail Agent Name'))
		return false;

	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				= new Array();
	agent_location 			= get_multiple_location_selection(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 agent_salary		= new Array();
	agent_salary 			= get_multiple_list_selection(document.this_page.salary);
	*/
	
	var search_params  		= new Array();
	search_params[search_params.length] = "command=save_mail_agent";
	if(mail_agent_id != "" && mail_agent_id != undefined) search_params[search_params.length] = "mail_agent_id=" + mail_agent_id;
	else search_params[search_params.length] = "mail_agent_id=";
	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=";
	/*
	if(agent_salary != "" && agent_salary != undefined) search_params[search_params.length] = "agent_salary=" + agent_salary;
	else search_params[search_params.length] = "agent_salary=";
	*/
				
	str_params = search_params.join("&");
	//alert(str_params);
	document.this_page.action = "search.asp?" + str_params;
	document.this_page.submit();
}


// get_multiple_list_selection

function get_multiple_location_selection(list_name)
{	
	var multiple_list_array	= new Array();

	for (var i=0; i < list_name.length; i++)
	{
		try {
		if (list_name[i].selected == 1)
		{
			multiple_list_array[multiple_list_array.length] = list_name[i].value;
		}
		} catch ( e ) {}
	}

	multiple_list_array = multiple_list_array.join(",");
	//alert (multiple_list_array);
	return multiple_list_array;
}



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++)
		{
			try {
			if (list_name[i].selected == 1)
			{
				multiple_list_array[multiple_list_array.length] = list_name[i].value;
			}
			} catch ( e ) {}
		}
	}
	multiple_list_array = multiple_list_array.join(",");
	return multiple_list_array;
}