function openPopup(URL, id, width, height) {
	window.open(URL, id, "toolbar=no,location=no,width="+width+",height="+height+",status=yes,scrollbars=yes,scrolling=yes,menubar=no,resizable=yes");
}

function setCookie(name, value, expires, path, domain, secure) {
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);

    if (begin == -1) {
        begin = dc.indexOf(prefix);

		if (begin != 0) return null; 
	} else {
        begin += 2;
	}

	var end = document.cookie.indexOf(";", begin);

	if (end == -1) {
        end = dc.length;
	}

    return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {

    if (getCookie(name)) {
        document.cookie = name + "=" + 
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }

}

function changeImage(graphic, title, subtitle) {
	document.forms[0].img_displayed.value = graphic;
	document['main_image'].src = graphic;
	document['main_image'].alt = title;
	document.getElementById("image_title").innerHTML = title + ', ' + subtitle;
//	document.getElementById("image_details").innerHTML = subtitle;
}

function updateImage() {
    if (document.forms[0].img_displayed.value != "") {
		document['main_image'].src = document.forms[0].img_displayed.value;
	}
}

function gotoPage(id, p, s) {
	if (document.forms[0].img_displayed.value == "") {
		location.href = p + "?id=" + id+ "&start=" + s;
	} else {
		location.href = p + "?id=" + id+ "&start=" + s + "&img=" + document.forms[0].img_displayed.value;
	}
}

function showTab(tabnum) {
	if (tabnum == 0) {
		tabnum = currtab;
	}
	
	if (window.document.layers) {  //Netscape Navigator
		handle="window.document.layers";
		stylevar="";
	} else {
		handle="document.all";  //Other browser
		stylevar=".style";
	}
	
	if (document.getElementById('menutab'+tabnum).className == 'booking') {
		document.getElementById('menutab'+currtab).className = '';
		document.getElementById('menutab'+tabnum).className = 'bookingselected';		
	} else if(document.getElementById('menutab'+currtab).className == 'bookingselected') {
		document.getElementById('menutab'+currtab).className = 'booking';
		document.getElementById('menutab'+tabnum).className = 'selected';		
	} else {
		document.getElementById('menutab'+currtab).className = '';
		document.getElementById('menutab'+tabnum).className = 'selected';
	}

	document.getElementById('tab'+currtab).style.display = 'none';
	document.getElementById('tab'+tabnum).style.display = 'inline';
	currtab = tabnum;
	
	if (tabnum == 6 && map != null) {
		map.checkResize();
		var point = new GLatLng(arguments[1],arguments[2]); 
		map.setCenter(point,arguments[3]);	
	}

}

function showHide(showid, hideid)  {
	if (showid != '') {
		var showid_array = showid.split(",");

		for (i = 0; i < showid_array.length; i++) {
			document.getElementById(showid_array[i]).style.display = 'inline';
		}
	}

	if (hideid != '') {
		var hideid_array = hideid.split(",");

		for (i = 0; i < hideid_array.length; i++) {
			document.getElementById(hideid_array[i]).style.display = 'none';
		}
	}
}

function manageLayers() {
	if(1) {
		document.property_1.style.display = 'none';
		document.property_1.style.display = 'none';
		document.property_1.style.display = 'none';
		document.property_1.style.display = 'none';		
	}
}

function startList() {

	if (document.all&&document.getElementById) {
		navRoot = document.getElementById("nav");

		for (i = 0; i < navRoot.childNodes.length; i++) {
			node = navRoot.childNodes[i];

			if (node.nodeName == "LI") {
				node.onmouseover = function() { 
					this.className += " over";
				}
				node.onmouseout = function() { 
					this.className = this.className.replace(" over", "");
				}
			}
		}
	}
}

function printMailtoLink(name, mailname, maildomain) {
	document.write('<a href="mailto:' + mailname + '@' + maildomain + '">' + name + '</a>');
}

function layerSelect(id, layers) {
	var expDays = 30;
	var exp = new Date();
	exp.setTime(exp.getTime() + (expDays*24*60*60*1000));
	
	setCookie('SCHselected', id, exp);
	showHide(id, layers);
}

function layerLoad(layers) {
// need to subtract id from layers...
	id = getCookie('SCHselected');
	showHide(id, layers);
}

function formIsChecked(id) {

	if (document.getElementById(id).checked == false) {
		alert('Please check the box to continue.');
		return false;
	} else {
		return true;
	}

}

function checkFields_bookings2(form) {
	field = "";
	if (form.firstname.value == "") {
		field = "First Name";
		form.firstname.focus();
	}	else if (form.lastname.value == "") {
		field = "Surname";
		form.lastname.focus();
	}	else if (form.street.value == "") {
		field = "Street";
		form.street.focus();
	}	else if (form.city.value == "") {
		field = "Town/City";
		form.city.focus();
	}	else if (form.state.value == "") {
		field = "State or County";
		form.state.focus();
	}	else if (form.postcode.value == "") {
		field = "Postcode";
		form.postcode.focus();
	}	else if (form.country.selectedIndex == 0) {
		field = "Country";
		form.country.focus();
	}	else if (form.telephone.value == "") {
		field = "Telephone";
		form.telephone.focus();
	}	else if (form.email.value == "") {
		field = "Email";
		form.email.focus();
	} else if (form.email.value != form.email2.value)	{
		form.email.focus();
		alert("Email and confirmed email are different.")
		return false;
	}		
	
	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
		
	return true;
}

/*
function checkFields_bookings3(form) {
	field = "";
	if (form.method1.selectedIndex == 0) {
		field = "Payment Method";
		form.method1.focus();
	}	

	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
		
	return true;
}
*/

function checkFields_bookings3(form) {
	
	var billingaddres_value = null;
	for (i=0;i<form.billingaddress.length;i++) {
		if (form.billingaddress[i].checked) {
			billingaddres_value = form.billingaddress[i].value;
		}
	}
	field = "";
	if (!form.accept.checked) {
		alert ("You must read and accept the booking terms of Selfcateringhols Ltd and confirm that you are over 18 years of age");
		form.accept.focus();
		return false;
	} else if (billingaddres_value == null) {
		alert ("Please enter the card holders' address (or use your contact details if appropriate)");
		return false;
	} else if (billingaddres_value == 0 && form.street.value == "") {
		field = "Street";
		form.street.focus();
	} else if (billingaddres_value == 0 && form.city.value == "") {
		field = "City";
		form.city.focus();
	} else if (billingaddres_value == 0 && form.state.value == "") {
		field = "State";
		form.state.focus();
	} else if (billingaddres_value == 0 && form.postcode.value == "") {
		field = "Postcode";
		form.postcode.focus();
	}	else if (billingaddres_value == 0 && form.country.selectedIndex == 0) {
		field = "Country";
		form.country.focus();
	} else if (form.cardHolder.value == "") {
		field = "Card holder";
		form.cardHolder.focus();
	} else if (form.method1.selectedIndex == 0) {
		field = "Card type";
		form.method1.focus();
	} else if (form.cardNumber.value == "") {
		field = "Card number";
		form.cardNumber.focus();
/*
	}	else if (!Mod10(form.cardNumber.value)) {
		alert ("Not a valid Card number. It must be a number without spaces or other separators");
		form.cardNumber.focus();
		return false;
*/
	} else if (form.monthExpiryDate.selectedIndex == 0) {
		field = "Expiry date";
		form.monthExpiryDate.focus();
	} else if (form.yearExpiryDate.selectedIndex == 0) {
		field = "Expiry date";
		form.yearExpiryDate.focus();
	/*
	} else if (form.expiryDate.value == "") {
		field = "Expiry date";
		form.expiryDate.focus();
	*/
	/*
	} else if (!checkExpiryDate(form.expiryDate.value)) {
		alert ("Expiry date not valid");
		form.expiryDate.focus();
		return false;
	*/
	}/*	else if (form.ccv.value == "") {
		field = "Card verification value";
		form.ccv.focus();
	}*/ else if (!isNumeric(form.ccv.value)) {
		alert ("Card verification value must be a numeric value");
		form.ccv.focus();
		return false;
	}

	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
		
	return true;
}

function isNumeric(value) {
	var strValid = "0123456789";
	
	for (i=0;i<value.length;i++) {
		strChar = value.charAt(i);
		if (strValid.indexOf(strChar) == -1) {
			return false;
		}
	}
	return true;
}

function Mod10(ccNumb) {  
	// v2.0 Created by: David Leppek :: https://www.azcode.com/Mod10
var valid = "0123456789"  // Valid digits in a credit card number
var len = ccNumb.length;  // The length of the submitted cc number
var iCCN = parseInt(ccNumb);  // integer of ccNumb
var sCCN = ccNumb.toString();  // string of ccNumb
sCCN = sCCN.replace (/^\s+|\s+$/g,'');  // strip spaces
var iTotal = 0;  // integer total set at zero
var bNum = true;  // by default assume it is a number
var bResult = false;  // by default assume it is NOT a valid cc
var temp;  // temp variable for parsing string
var calc;  // used for calculation of each digit

// Determine if the ccNumb is in fact all numbers
for (var j=0; j<len; j++) {
  temp = "" + sCCN.substring(j, j+1);
  if (valid.indexOf(temp) == "-1"){bNum = false;}
}

// if it is NOT a number, you can either alert to the fact, or just pass a failure
if(!bNum){
  /*alert("Not a Number");*/bResult = false;
}

// Determine if it is the proper length 
if((len == 0)&&(bResult)){  // nothing, field is blank AND passed above # check
  bResult = false;
} else{  // ccNumb is a number and the proper length - let's see if it is a valid card number
  //if(len >= 15){  // 15 or 16 for Amex or V/MC
  if(len >= 13){  // 15 or 16 for Amex or V/MC (VISA can be a 13)
    for(var i=len;i>0;i--){  // LOOP throught the digits of the card
      calc = parseInt(iCCN) % 10;  // right most digit
      calc = parseInt(calc);  // assure it is an integer
      iTotal += calc;  // running total of the card number as we loop - Do Nothing to first digit
      i--;  // decrement the count - move to the next digit in the card
      iCCN = iCCN / 10;                               // subtracts right most digit from ccNumb
      calc = parseInt(iCCN) % 10 ;    // NEXT right most digit
      calc = calc *2;                                 // multiply the digit by two
      // Instead of some screwy method of converting 16 to a string and then parsing 1 and 6 and then adding them to make 7,
      // I use a simple switch statement to change the value of calc2 to 7 if 16 is the multiple.
      switch(calc){
        case 10: calc = 1; break;       //5*2=10 & 1+0 = 1
        case 12: calc = 3; break;       //6*2=12 & 1+2 = 3
        case 14: calc = 5; break;       //7*2=14 & 1+4 = 5
        case 16: calc = 7; break;       //8*2=16 & 1+6 = 7
        case 18: calc = 9; break;       //9*2=18 & 1+8 = 9
        default: calc = calc;           //4*2= 8 &   8 = 8  -same for all lower numbers
      }                                               
    iCCN = iCCN / 10;  // subtracts right most digit from ccNum
    iTotal += calc;  // running total of the card number as we loop
  }  // END OF LOOP
  if ((iTotal%10)==0){  // check to see if the sum Mod 10 is zero
    bResult = true;  // This IS (or could be) a valid credit card number.
  } else {
    bResult = false;  // This could NOT be a valid credit card number
    }
  }
}
/*
// change alert to on-page display or other indication as needed.
if(bResult) {
  alert("This IS a valid Credit Card Number!");
}
if(!bResult){
  alert("This is NOT a valid Credit Card Number!");
}
*/
  return bResult; // Return the results
}

function checkFields_register_new(form) {
	field = "";
	if (form.name.value == "") {
		field = "First Name";
		form.name.focus();
	}	else if (form.surname.value == "") {
		field = "Surname";
		form.surname.focus();
	}	else if (form.telephone.value == "") {
		field = "Telephone";
		form.telephone.focus();
	}	else if (form.email.value == "") {
		field = "Email";
		form.email.focus();
	}	else if (form.address.value == "") {
		field = "Address";
		form.address.focus();
	}	else if (form.city.value == "") {
		field = "Town/City";
		form.city.focus();
	}	else if (form.state.value == "") {
		field = "State or County";
		form.state.focus();
	}	else if (form.postcode.value == "") {
		field = "Postcode";
		form.postcode.focus();
	}	else if (form.country.selectedIndex == 0) {
		field = "Country";
		form.country.focus();
	} else if (form.email.value != form.email2.value)	{
		form.email.focus();
		alert("Email and confirmed email are different.")
		return false;
	}
	
	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
		
	return passwordcheck(false);
}

function checkFields_register_update(form) {
	field = "";
	if (form.name.value == "") {
		field = "First Name";
		form.name.focus();
	}	else if (form.surname.value == "") {
		field = "Surname";
		form.surname.focus();
	}	else if (form.telephone.value == "") {
		field = "Telephone";
		form.telephone.focus();
	}	else if (form.email.value == "") {
		field = "Email";
		form.email.focus();
	}	else if (form.username.value == "") {
		field = "Username";
		form.username.focus();
	}	else if (form.address.value == "") {
		field = "Address";
		form.address.focus();
	}	else if (form.city.value == "") {
		field = "Town/City";
		form.city.focus();
	}	else if (form.state.value == "") {
		field = "State or County";
		form.state.focus();
	}	else if (form.postcode.value == "") {
		field = "Postcode";
		form.postcode.focus();
	}	else if (form.country.selectedIndex == 0) {
		field = "Country";
		form.country.focus();
	} else if (form.email.value != form.email2.value)	{
		form.email.focus();
		alert("Email and confirmed email are different.")
		return false;
	}

	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
		
	return passwordcheck(false);
}

function checkFields_register_basic(form) {
	field = "";
	if (form.name.value == "") {
		field = "First Name";
		form.name.focus();
	}	else if (form.surname.value == "") {
		field = "Surname";
		form.surname.focus();
	}	else if (form.email.value == "") {
		field = "Email";
		form.email.focus();
	} else if (form.email.value != form.email2.value)	{
		form.email.focus();
		alert("Email and confirmed email are different.")
		return false;
	}	else if (form.sum_answer.value == "") {
		field = "Spam protection";
		form.sum_answer.focus();
	}
	
	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
		
	return passwordcheck(false);
}

function checkFields_register_basic_update(form) {
	field = "";
	if (form.name.value == "") {
		field = "First Name";
		form.name.focus();
	}	else if (form.surname.value == "") {
		field = "Surname";
		form.surname.focus();
	}	else if (form.email.value == "") {
		field = "Email";
		form.email.focus();
	}	else if (form.username.value == "") {
		field = "Username";
		form.username.focus();
	} else if (form.email.value != form.email2.value)	{
		form.email.focus();
		alert("Email and confirmed email are different.")
		return false;
	}		

	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
		
	return passwordcheck(false);
}

function checkFields_reminder(form) {
	field = "";
	if (form.email.value == "") {
		field = "Email";
		form.email.focus();
	}
	
	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
		
	return true;
}

function checkFields_review(form) {
	field = "";
	if (form.review.value == "") {
		field = "Review";
		form.review.focus();
	} else if (form.rating.selectedIndex == 0) {
		field = "Rating";
		form.rating.focus();
	}	else if (form.satisfied.selectedIndex == 0) {
		field = "Satisfied question";
		form.satisfied.focus();
	}
	
	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
		
	return true;
}

function selectedCC(totalprice, supplement_percentage,deposit) {	
	opt = document.getElementById("method1");
	si = opt.options[opt.selectedIndex].value;
	lbl_totalprice = document.getElementById("totalprice");	
	lbl_creditcardcharge = document.getElementById("creditcardcharge");	
	if (lbl_totalprice != null) {
		// days to go <= 60		
		if ((si == "1-Visa") || (si == "1-Mastercard") || (si == "1-American Express")) {			
			var result = totalprice * (1 + (supplement_percentage/100));
			var creditcardcharge = result - totalprice;
			lbl_totalprice.innerHTML = pad_with_zeros(Math.round(result*100)/100,2);
			lbl_creditcardcharge.innerHTML = pad_with_zeros(Math.round(creditcardcharge*100)/100,2);
		}
		else {
			lbl_totalprice.innerHTML = pad_with_zeros(Math.round(totalprice*100)/100,2);
			lbl_creditcardcharge.innerHTML = "0.00";
		}
	}
	else {
		var lbl_deposita = document.getElementById("deposita");
		var lbl_depositb = document.getElementById("depositb");
		var lbl_fullamounta = document.getElementById("fullamounta");
		var lbl_fullamountb = document.getElementById("fullamountb");
		var fullamount = totalprice;		
		if ((si == "1-Visa") || (si == "1-Mastercard") || (si == "1-American Express")) {			
			var result = deposit * (1 + (supplement_percentage/100));			
			lbl_deposita.innerHTML = pad_with_zeros(Math.round(result*100)/100,2);
			lbl_depositb.innerHTML = lbl_deposita.innerHTML;
			result = fullamount * (1 + (supplement_percentage/100));
			lbl_fullamounta.innerHTML = pad_with_zeros(Math.round(result*100)/100,2);
			lbl_fullamountb.innerHTML  = lbl_fullamounta.innerHTML;
			var creditcardcharge = result - totalprice;
			lbl_creditcardcharge.innerHTML = pad_with_zeros(Math.round(creditcardcharge*100)/100,2);
		}
		else {
			lbl_deposita.innerHTML = pad_with_zeros(Math.round(deposit*100)/100,2);
			lbl_depositb.innerHTML = lbl_deposita.innerHTML;
			lbl_fullamounta.innerHTML = pad_with_zeros(Math.round(fullamount*100)/100,2);
			lbl_fullamountb.innerHTML = lbl_fullamounta.innerHTML;
			lbl_creditcardcharge.innerHTML = "0.00";
		}
		var lbl_payement2 = document.getElementById("payment2");
		lbl_payement2.innerHTML = pad_with_zeros(Math.round((lbl_fullamounta.innerHTML - lbl_deposita.innerHTML)*100)/100,2);
	}
}

function pad_with_zeros(rounded_value, decimal_places) {

	// Convert the number to a string
	var value_string = rounded_value.toString()
	
	// Locate the decimal point
	var decimal_location = value_string.indexOf(".")
	
	// Is there a decimal point?
	if (decimal_location == -1) {
	    
		// If no, then all decimal places will be padded with 0s
		decimal_part_length = 0
		
		// If decimal_places is greater than zero, tack on a decimal point
		value_string += decimal_places > 0 ? "." : ""
	}
	else {
	
		// If yes, then only the extra decimal places will be padded with 0s
		decimal_part_length = value_string.length - decimal_location - 1
	}
	
	// Calculate the number of decimal places that need to be padded with 0s
	var pad_total = decimal_places - decimal_part_length
	
	if (pad_total > 0) {
	    
		// Pad the string with 0s
		for (var counter = 1; counter <= pad_total; counter++) 
			value_string += "0"
	}
	return value_string
}

function checkFields_contactus(form) {
	field = "";
	if (form.subject.value == "") {
		field = "Subject";
		form.subject.focus();
	}	else if (form.content.value == "") {
		field = "Message";
		form.content.focus();
	}	else if (form.firstname.value == "") {
		field = "First Name";
		form.firstname.focus();
	}	else if (form.lastname.value == "") {
		field = "Lastname";
		form.lastname.focus();
	}	else if (form.email.value == "") {
		field = "Email";
		form.email.focus();
	} else if (form.email.value != form.email2.value)	{
		form.email.focus();
		alert("Email and confirmed email are different.")
		return false;
	}	else if (form.sum_answer.value == "") {
		field = "Spam protection";
		form.sum_answer.focus();
	}
	
	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
		
	return true;
}

function checkFields_contactus_sch(form) {
	field = "";
	if (form.subject.value == "") {
		field = "Subject";
		form.subject.focus();
	}	else if (form.content.value == "") {
		field = "Message";
		form.content.focus();
	}		
	
	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
		
	return true;
}

function checkFields_updatedetails(form) {
	if (checkFields_register_new(form)) {
		field = "";
		if (form.username.value == "") {
			field = "Username";
			form.username.focus();
		}	
		
		if (field != "") { 
			alert (field + " is required"); 
			return false;
		}
		
		return passwordcheck(false);
	}
}

function checkFields_updatebasicdetails(form) {
	if (checkFields_register(form)) {
		field = "";
		if (form.username.value == "") {
			field = "Username";
			form.username.focus();
		}	
		
		if (field != "") { 
			alert (field + " is required"); 
			return false;
		}
		
		return passwordcheck(false);
	}
}

function passwordcheck(required) {	
	var password1 = document.form.password1.value;
	var password2 = document.form.password2.value;
	if (required) {
		if (password1 == "") {		
	   	alert("Password is required. Please complete this field.")
			document.form.password1.select();
	 		document.form.password1.focus();
	 		return false;
		} else if (password2 == "") {		
	   	alert("Password is required. Please complete this field.")
			document.form.password2.select();
	 		document.form.password2.focus();
	 		return false;
		}
	} else if (password1 != password2) {
		alert("Password and retyped password are different.")
		document.form.password1.select();
 		document.form.password1.focus();
 		return false;
	} else {
		for (i = 0; i < password1.length; i++) {
			if ((password1.charCodeAt(i) < 48) || (password1.charCodeAt(i) > 122)) {
		   	alert("Password must be a combination of numbers and letters without spaces or special characters. Please complete this field.")
				document.form.password1.select();
		 		document.form.password1.focus();
		 		return false;
			}
			else if ((password1.charCodeAt(i) == 58)  || (password1.charCodeAt(i) == 59)  || 
							 (password1.charCodeAt(i) == 60)  || (password1.charCodeAt(i) == 61)  || 
							 (password1.charCodeAt(i) == 62)  || (password1.charCodeAt(i) == 63)  || 		
							 (password1.charCodeAt(i) == 63)  || (password1.charCodeAt(i) == 64)  || 		
							 (password1.charCodeAt(i) == 91)  || (password1.charCodeAt(i) == 92)  || 		
							 (password1.charCodeAt(i) == 93)  || (password1.charCodeAt(i) == 94)  || 		
							 (password1.charCodeAt(i) == 95)  || (password1.charCodeAt(i) == 96)) {
		   	alert("Password must be a combination of numbers and letters without spaces or special characters. Please complete this field.")
				document.form.password1.select();
		 		document.form.password1.focus();
		 		return false;
			}
		}
	}
	return true;
}

function calculateCost(pets_allowed) {	
	opt = document.getElementById("bk_nights");	
	nights = opt.options[opt.selectedIndex].value;	
	opt = document.getElementById("bk_guests");	
	guests = opt.options[opt.selectedIndex].value;	
	if (pets_allowed) {
		opt = document.getElementById("bk_pets");	
		pets = opt.options[opt.selectedIndex].value;	
	} else {
		pets = 0;
	}

	x_calculateCost(nights, guests, pets, do_calculateCost_cb);
}

function do_calculateCost_cb(result) {
	pos = result.indexOf("|");
	price = result.substr(0,pos);
	pets_allowed = result.substr(pos+1);

	document.getElementById("totalprice").innerHTML = price;
	opt = document.getElementById("bk_guests");	
	guests = opt.options[opt.selectedIndex].value;	
	
	var guest_display;
	if (guests == "1") {
		guest_display = "1 person";
	} else {
		guest_display = parseInt(guests) + " people";
	}
	
	if (pets_allowed == "1") {
		opt = document.getElementById("bk_pets");	
		pets = opt.options[opt.selectedIndex].value;	
		
		if (pets == 1) {
			plural = "";
		} else {
			plural = "s";
		}
		guest_display += " and " + pets + " pet" + plural;
	}
	
	document.getElementById("guest_display").innerHTML = guest_display;
}

function selectedPM() {	
	opt = document.getElementById("paymentmethod");
	si = opt.options[opt.selectedIndex].value;
	var divid="";
	switch (si) {
		case "1": 			
			divid="ukbanktransfer";	
			toggleVisibleOff("intbanktransfer,paypal")
			break;
		case "2": 
			divid="intbanktransfer";	
			toggleVisibleOff("ukbanktransfer,paypal")
			break;
		case "3": 
			divid="paypal";	
			toggleVisibleOff("ukbanktransfer,intbanktransfer")
			break;
		default:
			toggleVisibleOff("ukbanktransfer,intbanktransfer,paypal")
			break;
	}
	if (divid != "") {
		toggleVisible(divid);
	}
}

function toggleVisible(id) {
	var id_array=id.split(",");

	for (i=0; i<id_array.length; i++) {
		if (document.getElementById(id_array[i]).style.display == 'none') {
			document.getElementById(id_array[i]).style.display = 'inline';
		} else {
		document.getElementById(id_array[i]).style.display = 'none';
		}
	}
} 

function toggleVisibleIcon(id,idIcon,pathExpand,pathCollapse) {
	
	if (document.getElementById(id).style.display == 'none') {
		document.getElementById(id).style.display = 'inline';
		document.getElementById(idIcon).src = pathCollapse;
	} else {
		document.getElementById(id).style.display = 'none';
		document.getElementById(idIcon).src = pathExpand;
	}
} 

function toggleVisibleOff(id) {
	var id_array=id.split(",");	

	for (i=0; i<id_array.length; i++) {
		if (document.getElementById(id_array[i]).style.display == 'inline') {
			document.getElementById(id_array[i]).style.display = 'none';
		}
	}
} 

function toggleVisibleOn(id) {
	var id_array=id.split(",");	

	for (i=0; i<id_array.length; i++) {
		if (document.getElementById(id_array[i]).style.display == 'none') {
			document.getElementById(id_array[i]).style.display = 'inline';
		}
	}
} 

function changePropertyStatus(propertyid,currentStatus, newStatus) {
	if (confirm ("Are you sure you want to change property status from " + currentStatus + " to " + newStatus + "?")) {
		var input = document.createElement('INPUT');
		input.type = 'hidden';
		input.name = 'newStatus';
		input.value = newStatus;
		document.status.appendChild(input);
		document.status.submit();
	} 
}
function changePropertyPriority(propertyid,currentPriority, newPriority) {
	if (confirm ("Are you sure you want to change property priority from " + currentPriority + " to " + newPriority + "?")) {
		var input = document.createElement('INPUT');
		input.type = 'hidden';
		input.name = 'newPriority';
		input.value = newPriority;
		document.priority.appendChild(input);
		document.priority.submit();
	} 
}
function cancelOwnerBooking(propertyid,bookingid) {
	if (confirm ("Are you sure you want to cancel booking reference " + propertyid + "-" + bookingid + "?")) {
		form = document.getElementById(bookingid);
		form.submit();
	} 
}

function checkFields_addPrice(form) {
	field = "";
	
	if (form.dateFrom.value == "") {
		field = "Date from";
		form.dateFrom.focus();
	} else if (!validate(form.dateFrom)) {
		return false;
	} else if (form.dateTo.value == "") {
		field = "Date to";
		form.dateTo.focus();
	} else if (!validate(form.dateTo)) {
		return false;
	} else if (form.price.value == "") {
		field = "Price";
		form.price.focus();
	}	else if (!isFloat(form.price.value)) {
		form.price.focus();
		alert("Prices must be entered in British Pounds Sterling. The weekly rental field only accepts numerals, please remove any non-numeric characters and re-submit.");
		return false;
	}

	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
	
	var dateFrom = form.dateFrom.value;
	var dateTo = form.dateTo.value;
	var day = dateFrom.substr(0,2);
	var month = dateFrom.substr(3,2);
	var year = dateFrom.substr(6,4); 
	var d = month+"/"+day+"/"+year;
	var setdate = new Date(d);
	var d1 = Date.parse(setdate);
	var day = dateTo.substr(0,2);
	var month = dateTo.substr(3,2);
	var year = dateTo.substr(6,4); 
	var d = month+"/"+day+"/"+year;
	var setdate = new Date(d);
	var d2 = Date.parse(setdate);
	
	if (d1 > d2) {
		alert ("Date to has to be later than date from");
		form.dateFrom.focus();
		return false;
	}
		
	return true;
}

/*
function multistart(propid,startday_field,startday_prop) {
	var select_day_text=new Array("Friday", "Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
		 
	var startday = startday_field.value;
	var day = startday.substr(8,2);
	var month = startday.substr(5,2);
	var year = startday.substr(0,4); 
	var enterdate = (month+"/"+day+"/"+year);
	var setdate = new Date(enterdate);
	var day_entered = setdate.getDay();
	var start_day_value=select_day_text[parseInt(startday_prop)+2];
	var day_entered_value=select_day_text[day_entered+2];

	if ((day_entered_value) != start_day_value) {
		alert(day+"/"+month+"/"+year+" is a "+day_entered_value+".\n Please enter a "+start_day_value+"\n\n(This is the day you have \nselected as your start day)");
		startday_field.select();
		startday_field.focus();
		return false;
	}		
	return true;		
}

function multiend(propid,endday_field,startday_prop) {
	var select_day_text=new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "Monday", "Tuesday");
		 
	var endday = endday_field.value;
	var day = endday.substr(8,2);
	var month = endday.substr(5,2);
	var year = endday.substr(0,4); 
	var enterdate = (month+"/"+day+"/"+year);
	var setdate = new Date(enterdate);
	var day_entered = setdate.getDay();
	var day_entered_value=select_day_text[day_entered];
	
	if (startday_prop =="0") {
		var endday_prop = "6";
	}	else {
		var endday_prop = startday_prop-1;
	}
	var end_day_value=select_day_text[endday_prop];

	if ((day_entered_value) != (end_day_value)) {
		alert(day+"/"+month+"/"+year+" is a "+day_entered_value+".\n Please enter a "+end_day_value+"\n\n(Your price range must end\nthe day before your \nselected start day)");
		endday_field.select();
		endday_field.focus();
		return false;
	}		
	return true;		
}
*/
//validates field for correct date values - called by onBlur 
function validate(field_name){      /* brings in the field name and content */
	var checkstr = "0123456789";
	var Datevalue = "";
	var DateTemp = "";
	var separator = "/";
	var day ="";
	var month ="";
	var year = "";
	var leap = 0;
	var err = 0;
	var i;
	err = 0;
	var datevalue = field_name.value;       /* sets the content of the field for valuation */
	/* Delete all chars except 0..9 */
	for (i = 0; i < datevalue.length; i++) {
		if (checkstr.indexOf(datevalue.substr(i,1)) >= 0) {
			DateTemp = DateTemp + datevalue.substr(i,1);
		}
	}
	datevalue = DateTemp;
	/* Always change date to 8 digits - string*/
	/* if year is entered as 2-digit / always assume 20xx */
	if (datevalue.length == 6) {
	  datevalue = datevalue.substr(0,4) + '20' + datevalue.substr(4,2); 
	}
	if (datevalue.length != 8) {
	  err = 19;
	}
	/* year is wrong if year = 0000 */
	year = datevalue.substr(4,4);
	if (year == 0) {
	  err = 20;
	}
	/* Validation of month*/
	month = datevalue.substr(2,2);
	if ((month < 1) || (month > 12)) {
	  err = 21;
	}
	/* Validation of day*/
	day = datevalue.substr(0,2);
	if (day < 1) {
	 err = 22;
	}
	/* Validation leap-year / february / day */
	if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
	  leap = 1;
	}
	if ((month == 2) && (leap == 1) && (day > 29)) {
	  err = 23;
	}
	if ((month == 2) && (leap != 1) && (day > 28)) {
	  err = 24;
	}
	/* Validation of other months */
	if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
	  err = 25;
	}
	if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
	  err = 26;
	}
	/* if 00 ist entered, no error, deleting the entry */
	if ((day == 0) && (month == 0) && (year == 00)) {
	  err = 0; day = ""; month = ""; year = ""; separator = "";
	}
	/* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
	if (err == 0) {
	  field_name.value = day + separator + month + separator + year;
	  field_name.value = field_name.value;             /* sets the field content with the updated value */
	}
	/* Error-message if err != 0 */
	else {
	  alert("The date entered is incorrect\nPlease use the dd/mm/yyyy format");
	  field_name.focus();
	}
	return (err == 0);
}

function editDetails(form) {
	if (checkFields_updateProperty(form)) {
		document.edit_details.submit();
	}
}

function checkFields_updateProperty(form) {
	field = "";
	var bath = form.bath.value * 1;
	var shower = form.shower.value * 1;
	var bathShower = form.bathShower.value * 1;
	var bathWC = form.bathWC.value * 1;
	var showerWC = form.showerWC.value * 1;
	var bathShowerWC = form.bathShowerWC.value * 1;
	var WC = form.WC.value * 1;
	var kitchen = form.kitchen.value * 1;
	var lounge = form.lounge.value * 1;
	var dining = form.dining.value * 1;
	var office = form.office.value * 1;
	var gamesRoom = form.gamesRoom.value * 1;
	var kitchenDining = form.kitchenDining.value * 1;
	var kitchenDiningLounge = form.kitchenDiningLounge.value * 1;
	var loungeDining = form.loungeDining.value * 1;
	
	var totalBathrooms = bath+shower+bathShower+bathWC+showerWC+bathShowerWC+WC;
	var totalBathroomsField = form.totalBathrooms.value * 1;
	
	var totalLivingAreas = kitchen+lounge+dining+office+gamesRoom+kitchenDining+kitchenDiningLounge+loungeDining;
	var totalLivingAreasField = form.totalLivingAreas.value * 1;

	if ((!form.pets[0].checked) && (!form.pets[1].checked)) {
		field = "Pets";
		form.pets[0].focus();
	} else if ((!form.smoking[0].checked) && (!form.smoking[1].checked)) {
		field = "Smoking";
		form.smoking[0].focus();
	} else if (form.floorArea.value == "") {
		field = "Floor area";
		form.floorArea.focus();
	} else if (form.floorArea.value != "" && !isNumeric(form.floorArea.value)) {
		alert ("Floor area must be a numeric value");
		form.floorArea.focus();
		return false;
	} else if (form.stationDistance.value != "" && !isFloat(form.stationDistance.value)) {
		alert ("Station distance must be a numeric value");
		form.stationDistance.focus();
		return false;
	} else if (form.airportDistance.value != "" && !isFloat(form.airportDistance.value)) {
		alert ("Airport distance must be a numeric value");
		form.airportDistance.focus();
		return false;
	} else if (form.connectionDistance.value != "" && !isFloat(form.connectionDistance.value)) {
		alert ("Connection distance must be a numeric value");
		form.connectionDistance.focus();
		return false;
	} else if (form.propertyType.options[form.propertyType.selectedIndex].value == 0) {
		field = "Property type";
		form.propertyType.focus();
	} else if (totalBathroomsField != totalBathrooms) {
		alert("Please check the bathroom section\nThe number of rooms entered must\nequal the total number of bathrooms");
		form.propertyType.focus();
		return false;
	} else if (totalLivingAreasField != totalLivingAreas) {
		alert("Please check the living rooms section\nThe number of rooms entered must\nequal the total number of living rooms");
		form.propertyType.focus();
		return false;
	}
	
	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
	
	return true;
}

function editNameAddress(form) {
	if (checkFields_updateNameAddress(form)) {
		document.edit_nameaddress.submit();
	}
}

function checkFields_updateNameAddress(form) {
	field = "";
	
	if (form.propertyName.value == "") {
		field = "Property name";
		form.propertyName.focus();
	} else if (form.address1.value == "") {
		field = "Address";
		form.address1.focus();
	} else if (form.city.value == "") {
		field = "City";
		form.city.focus();
	} else if (form.locality.value == "") {
		field = "Locality";
		form.locality.focus();
	}
	
	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
	
	return true;
}

function checkFields_updateStartDay(form) {
	field = "";
	
	if (form.sleepsMax.value == "") {
		field = "Maximun number of people";
		form.sleepsMax.focus();
	} else if (form.personcharge.selectedIndex == 1) {
		if (form.sleepsMin.value == "" || form.sleepsMin.value == "0") {
			field = "Number of people included in the basic rental price";
			form.sleepsMin.focus();
		} else if (parseInt(form.sleepsMin.value) >= parseInt(form.sleepsMax.value)) {
			form.sleepsMin.focus();
			alert ("Number of people included in the basic rental price cannot be more than maximun number of people");
			return false;
		} else if (form.personPrice.value == "") {
			field = "Charge per additional person, per week";
			form.personPrice.focus();
		} else if (!isFloat(form.personPrice.value)) {
			alert ("Charge per additional person, per week must be a numeric value");
			form.personPrice.focus();
			return false;
		}
	}

	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
	
	return true;
}

function editStartDay(form) {
	if (checkFields_updateStartDay(form)) {
		document.edit_startday.submit();
	}
}

function editDescription(form, propertyname) {
	if (checkFields_updateDescription(form, propertyname)) {
		document.edit_description.submit();
	}
}

function checkFields_updateDescription(form, propertyname) {
	field = "";
	
	if (form.description.value == "") {
		field = "Description";
		form.description.focus();
	} else if (form.shortDescription.value == "") {
		field = "Short description";
		form.shortDescription.focus();
	} else if (form.description.value.toLowerCase().indexOf(propertyname.toLowerCase()) != -1) {
		alert ("It looks like you are trying to enter your property name, which is not allowed. If you think this message is being displayed incorrectly please send the text you are trying to save to technical@selfcateringhols.com");
		form.description.focus();
		return false;
	} else if (form.shortDescription.value.toLowerCase().indexOf(propertyname.toLowerCase()) != -1) {
		alert ("It looks like you are trying to enter your property name, which is not allowed. If you think this message is being displayed incorrectly please send the text you are trying to save to technical@selfcateringhols.com");
		form.shortDescription.focus();
		return false;
	} else if (form.description.value.toLowerCase().indexOf("www") != -1 ||
						form.description.value.toLowerCase().indexOf("@") != -1 ||
						form.description.value.toLowerCase().indexOf(".com") != -1 || 
						form.description.value.toLowerCase().indexOf(".co.uk") != -1) {
		alert ("It looks like you are trying to enter contact details, which is not allowed. If you think this message is being displayed incorrectly please send the text you are trying to save to technical@selfcateringhols.com");
		form.description.focus();
		return false;
	} else if (form.shortDescription.value.toLowerCase().indexOf("www") != -1 ||
						form.shortDescription.value.toLowerCase().indexOf("@") != -1 ||
						form.shortDescription.value.toLowerCase().indexOf(".com") != -1 || 
						form.shortDescription.value.toLowerCase().indexOf(".co.uk") != -1) {
		alert ("It looks like you are trying to enter contact details, which is not allowed. If you think this message is being displayed incorrectly please send the text you are trying to save to technical@selfcateringhols.com");
		form.shortDescription.focus();
		return false;
	}
	
	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
	
	return true;
}

function checkFields_addLog(form) {
	field = "";
	
	var adminStatus = form.adminStatus.options[form.adminStatus.selectedIndex].value;

	if (form.status.value == "") {
		field = "Status";
		form.status.focus();
	} else if (form.actionDateTime.value == "") {
		field = "Action Date";
		form.actionDateTime.focus();
	} else if (form.personid.selectedIndex == 0) {
		field = "Person";
		form.personid.focus();
	} else if (form.actionType.selectedIndex == 0) {
		field = "Action Type";
		form.actionType.focus();
	} else if (form.adminStatus.selectedIndex == 0) {
		field = "Admin Status";
		form.adminStatus.focus();
	} else if (adminStatus == 1) {
		if (form.chaseDate.value == "") {
			field = "Chase Date";
			form.chaseDate.focus();
		}
	}

	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
	
	return true;
}

function cancelBooking(bookingid) {
	if (confirm ("Are you sure?")) {
		var s = "cancelBooking" + bookingid;
		var f = document.getElementById(s);
		f.submit();
	}
}

function checkExpiryDate(date) {
	var dateSeparator = "/";
	var pos = date.indexOf(dateSeparator);
	var strMonth = date.substring(0,pos);
	var strYear = date.substring(pos+1);
	strYr = strYear;
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth = strMonth.substring(1);
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr = strYr.substring(1);
	}
	month = parseInt(strMonth);
	year = parseInt(strYr);
	if (pos == -1){
		//alert("The date format should be : mm/yyyy");
		return false;
	}
	if (strMonth.length<1 || month<1 || month>12){
		//alert("Please enter a valid month");
		return false;
	}
	if (strYear.length != 4 || year==0){
		//alert("Please enter a valid 4 digit year");
		return false;
	}
	if (date.indexOf(date,pos+1)!=-1 || isInteger(stripCharsInBag(date, dateSeparator))==false){
		//alert("Please enter a valid date");
		return false;
	}
	return true;
}

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++){   
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}
	return returnString;
}

function callTypeChanged() {	
	var opt = document.getElementById("callType");	
	var callType = opt.options[opt.selectedIndex].value;	
	
	if (callType == "") {
		// hides call info
		document.getElementById("callInfo").style.display = "none";	
	} else {
		if (callType == "1") {
			// incoming call, display input hides select for caller, opposite for receiver
			document.getElementById("input_caller").style.display = "inline";	
			document.getElementById("select_caller").style.display = "none";	
			document.getElementById("input_receiver").style.display = "none";	
			document.getElementById("select_receiver").style.display = "inline";	
		} else if (callType == "2") {
			// outgoing call, display select hides input for caller, opposite for receiver
			document.getElementById("input_caller").style.display = "none";	
			document.getElementById("select_caller").style.display = "inline";	
			document.getElementById("input_receiver").style.display = "inline";	
			document.getElementById("select_receiver").style.display = "none";	
		}
		// display both rows
		document.getElementById("callInfo").style.display = "block";	
	}
}

function checkFields_select_customer(form) {
	
	if ((form.firstname.value == "") & ((form.lastname.value == ""))) {
		alert ("First name or last name is required"); 
		form.firstname.focus();
		return false;
	}
	
	return true;
}

function getPersonId(form) {
	
	// search for element checked
	var personid = null;
	if (form.customer.length != null) {
		var i;
		for (i=0;i<form.customer.length;i++){
			if (form.customer[i].checked) {
				personid = form.customer[i].value;
				break;
			}
		}
	} else {
		// if only one in the list it's not an array
		if (form.customer.checked) {
			personid = form.customer.value;
		}
	}
	
	return personid;
}

function checkFields_selected_customer(form,type) {
	
	var personid = getPersonId(form);
	
	if (personid == null) {
		alert ("Please select a person from the list"); 
		return false;
	}
	
	var doc = window.opener.document;
	
	if (type == 1) { // incoming
		var id = "caller";
		var name = "callerid";
	} else { // outgoing
		var id = "receiver";
		var name = "receiverid";
	}
	
	// display the name of the selected in the opener window
	doc.getElementById(id).value = document.getElementById("customerName"+personid).value;
	// add a hidden with the id of the selected
	var input = doc.createElement('INPUT');
	input.type = 'hidden';
	input.name = name;
	input.value = personid;
	doc.form1.appendChild(input);
	
	var objSel = doc.getElementById("enquiry");
	objSel.length = 0;
	var oOption;
	var objEnquiryId;
	var found = false;
	var i = 0;
	// is there any enquiryId input hidden?
	while (true) { // loop throught enquiry list
		objEnquiryId = document.getElementById("enquiryId_"+i);
		if (objEnquiryId != null) {
			found = true;
			if (i == 0) {
				// empty element
				oOption = doc.createElement("option");
				objSel.options.add(oOption);
				oOption.text = "";
				oOption.value = "";
				// new element
				oOption = doc.createElement("option");
				objSel.options.add(oOption);
				oOption.text = "New enquiry";
				oOption.value = "-1";
			}
			oOption = doc.createElement("option");
			objSel.options.add(oOption);
			oOption.text = document.getElementById("enquiryTitle_"+i).value;
			oOption.value = objEnquiryId.value;
			if (document.getElementById("enquiryCustomer_"+i).value == personid) {
				oOption.className = "option_highlight";
			}
		}	else {
			break;
		}
		i++;
	}
	// display title
	doc.getElementById("sectionEnquiryTitle").style.display = "block";
	if (i != 0) {
		// enquiries found
		doc.getElementById("row_enquiry").style.display = "block";
	} else {
		doc.getElementById("row_enquiry").style.display = "none";
		if (!found) { // no enquiries found for customer
			// show title & category
			doc.getElementById("sectionEnquiryTitle").style.display = "block";
			doc.getElementById("new_enquiry").style.display = "block";
		}		
	}
	
	// close the popup window
	window.opener.focus();
	window.close();
	
	return false;
}

function checkFields_selected_customer_search_enquiries(form,type) { // type is not needed but is easier 
																																		 // to have it here
	var personid = getPersonId(form);
	
	if (personid == null) {
		alert ("Please select a person from the list"); 
		return false;
	}
	
	var doc = window.opener.document;
	
	// display the name of the selected in the opener window
	doc.getElementById("person").value = document.getElementById("customerName"+personid).value;
	// add a hidden with the id of the selected
	var input = doc.createElement('INPUT');
	input.type = 'hidden';
	input.name = "personid";
	input.value = personid;
	doc.form1.appendChild(input);

	var input = doc.createElement('INPUT');
	input.type = 'hidden';
	input.name = "personname";
	input.value = document.getElementById("customerName"+personid).value;
	doc.form1.appendChild(input);
	
	// reset table without deleting the head
	var table = doc.getElementById("enquiriesTable");
	while (table.rows.length>1) {
		table.deleteRow(1);
	}
	
	// close the popup window
	window.opener.focus();
	window.close();
	
	return false;
}

function checkFields_selected_customer_send_message(form,type) { // type is not needed but is easier 
																																		 // to have it here
	var personid = getPersonId(form);
	
	if (personid == null) {
		alert ("Please select a person from the list"); 
		return false;
	}
	
	var doc = window.opener.document;
	
	// display the name of the selected in the opener window
	doc.getElementById("person").value = document.getElementById("customerName"+personid).value;
	
	// update and display link
	var anchor = doc.getElementById("linkMessage");
	
	// check host so it works on local as well
	var host = window.location.hostname;
	var url;
	if (host == "localhost") {
		url = "http://localhost/sch/";
	} else {
		url = "http://www.selfcateringhols.com/";
	}
	
	var enquiryid = doc.getElementById("enquiryid").value;
	
	anchor.setAttribute("href",url+"contact_us.html?type=0&resp=9&recipientid="+personid+"&enquiryid="+enquiryid);
	anchor.style.display = "inline";
	
	// close the popup window
	window.opener.focus();
	window.close();
	
	return false;
}

function checkFields_telephoneCall(form,type) {

	var field = "";
	
	if (form.callType.options[form.callType.selectedIndex].value == 1) { // incoming
		if (form.callerid == null) {
			if (type == "call") {
				field = "Caller";
			} else {
				field = "Sender";
			}
			form.caller.focus();
		} else if (form.select_receiver.selectedIndex == 0) {
			if (type == "call") {
				field = "Receiver";
			} else {
				field = "Recipient";
			}
			form.select_receiver.focus();
		} 
	} else { // outgoing
		if (form.receiverid == null) {
			if (type == "call") {
				field = "Receiver";
			} else {
				field = "Recipient";
			}
			form.receiver.focus();
		} else if (form.select_caller.selectedIndex == 0) {
			if (type == "call") {
				field = "Caller";
			} else {
				field = "Sender";
			}
			form.select_caller.focus();
		} 
	}
	if (field == "") {
		if (form.subject.value == "") {
			field = "Subject";
			form.subject.focus();
		} else 	if (form.message.value == "") {
			field = "Message";
			form.message.focus();
		} else if (document.getElementById("chaseDate") != null && form.chaseDate.selectedIndex == 0) {
			field = "Chase date";
			form.chaseDate.focus();
		} else if (document.getElementById("row_enquiry").style.display == "block" && form.enquiry.selectedIndex == 0) {
			field = "Assign to enquiry";
			form.enquiry.focus();
		} else if (document.getElementById("new_enquiry").style.display == "block") {
			if (form.enquiryTitle.value == "") {
				field = "Title";
				form.enquiryTitle.focus();
			} else if (form.enquiryCategory.selectedIndex == 0) {
				field = "Category";
				form.enquiryCategory.focus();
			}
		}
	}

	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
	
	return true;
}

function openCustomerWindow(url,referer) {
	
	var type = "";
	var jsfunction;
	switch (referer) {
		case "telephone_call":
			var opt = document.getElementById('callType');
			type = opt.options[opt.selectedIndex].value;
			jsfunction = "checkFields_selected_customer";
			break;
		case "search_enquiries_person":
			jsfunction = "checkFields_selected_customer_search_enquiries";
			break;
		case "send_message":
			jsfunction = "checkFields_selected_customer_send_message";
			break;
	}
	
	openPopup(url + "?type=" + type + "&jsfunction=" + jsfunction,'select_customer',700,500);
}

function enquiryChanged() {
	var opt = document.getElementById('enquiry');
	if (opt == null) {
		// unassigned enquiries page
		var i = 0;
		while (true) {
			opt = document.getElementById('enquiry_'+i);
			if (opt == null) {
				break;
			} else {
				displayHideEnquiryFields(opt, "_"+i);
			}
			i++;			
		}
	} else {
		displayHideEnquiryFields(opt, "");
	}
}

function displayHideEnquiryFields(opt, ind) {
	var enquiry = opt.options[opt.selectedIndex].value;
	if (enquiry != "") {
		if (enquiry == -1) { // new enquiry
			// display title and category fields
			document.getElementById("new_enquiry"+ind).style.display = "block";
		} else {
			document.getElementById("new_enquiry"+ind).style.display = "none";
		}
	} else {
		document.getElementById("new_enquiry"+ind).style.display = "none";
	}
}

function checkFields_unassignedEnquiries(form) {
	
	var i = 0;
	var title;
	var category;
	var field = "";
	while (true) {
		opt = document.getElementById('enquiry_'+i);
		if (opt == null) {
			break;
		} else {
			var enquiry = opt.options[opt.selectedIndex].value;
			if (enquiry == -1) { // new enquiry
				title = document.getElementById('enquiryTitle_'+i);
				category = document.getElementById('enquiryCategory_'+i);
				if (title.value == "") {
					field = "Title";
					title.focus();
				} else if (category.selectedIndex == 0) {
					field = "Category";
					category.focus();
				}
				if (field != "") { 
					alert (field + " is required"); 
					return false;
				}
			}
		}
		i++;			
	}
	return true;
}

function enquiryCategoryChanged() {
	/*
	var opt = document.getElementById("category");
	var category = opt.options[opt.selectedIndex].value;
	*/
	document.form.submit();	
}

function checkFields_EditBooking(form) {
	
	var field = "";
	
	if (form.enquiry.selectedIndex == 0) {
		field = "Assign to enquiry";
		form.enquiry.focus();
	} else if (document.getElementById("new_enquiry").style.display == "block") {
		if (form.enquiryTitle.value == "") {
			field = "Title";
			form.enquiryTitle.focus();
		} else if (form.enquiryCategory.selectedIndex == 0) {
			field = "Category";
			form.enquiryCategory.focus();
		}
	}
	
	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
	
	return true;

}

function setChaseDateEnquiry(anchor) {
	var input = document.createElement('INPUT');
	input.type = 'hidden';
	input.name = 'chaseDate';
	input.value = anchor.innerHTML;
	document.form.appendChild(input);
	document.form.submit();
}

function unsetNewAction() {
	var input = document.createElement('INPUT');
	input.type = 'hidden';
	input.name = 'request';
	input.value = 'request_unsetNewAction';
	document.form.appendChild(input);
	document.form.submit();
}

function checkFields_FAQ(form, admin) {
	
	field = "";
	if (form.question.value == "") {
		field = "Question";
		form.question.focus();
	}	else if (form.answer.value == "") {
		field = "Answer";
		form.answer.focus();
	}	else if (form.category.selectedIndex == 0) {
		field = "Category";
		form.category.focus();
	} else if ((form.category.options[form.category.selectedIndex].value == -1) && (form.categoryName.value == "")) {
		field = "Category name";
		form.categoryName.focus();
	}	else if ((form.recipient != null) && (form.recipient.selectedIndex == 0)) {
		field = "Recipient";
		form.recipient.focus();
	}	else if ((form.dataType != null) && (form.dataType.selectedIndex == 0)) {
		field = "Type";
		form.dataType.focus();
	} else if (((document.getElementById("row_propertyId") != null) && (document.getElementById("row_propertyId").style.display == "block") && (form.propId.value == "")) || ((document.getElementById("row_regionName") != null) && (document.getElementById("row_regionName").style.display == "block") && (form.regionName.value == ""))) {
		if (document.getElementById("row_propertyId").style.display == "block") {
			field = "ID";
			form.propId.focus();
		} else {
			field = "Name";
			form.regionName.focus();
		}
	} else if ((form.propertyid != null) && (form.propertyid.selectedIndex == 0)) {
			field = "Property";
			form.propertyid.focus();
	} else if (admin == 0) {
		if ((form.answer.value.indexOf("www") != -1) || (form.answer.value.indexOf("@") != -1) || numbersInAnswer(form)) {
			alert ("It looks like you are trying to enter your contact details, which is not allowed. Please edit these out before saving your FAQ. If you think this message is being displayed incorrectly please send the text you are trying to save to technical@selfcateringhols.com");
			form.answer.focus();
			return false;
		} else if (form.answer.value.toLowerCase().indexOf("www") != -1 ||
							form.answer.value.toLowerCase().indexOf("@") != -1 ||
							form.answer.value.toLowerCase().indexOf(".com") != -1 || 
							form.answer.value.toLowerCase().indexOf(".co.uk") != -1) {
			alert ("It looks like you are trying to enter contact details, which is not allowed. If you think this message is being displayed incorrectly please send the text you are trying to save to technical@selfcateringhols.com");
			form.answer.focus();
			return false;
		} else if (form.question.value.toLowerCase().indexOf("www") != -1 ||
							form.question.value.toLowerCase().indexOf("@") != -1 ||
							form.question.value.toLowerCase().indexOf(".com") != -1 || 
							form.question.value.toLowerCase().indexOf(".co.uk") != -1) {
			alert ("It looks like you are trying to enter contact details, which is not allowed. If you think this message is being displayed incorrectly please send the text you are trying to save to technical@selfcateringhols.com");
			form.question.focus();
			return false;
		}
	}
	
	if (field != "") { 
		alert (field + " is required"); 
		return false;
	}
		
	return true;
}

function faqTypeChanged() {
	var opt = document.getElementById("dataType");	
	var dataType = opt.options[opt.selectedIndex].value;
	// if bookings, country, property or region, display id field
	if (dataType == 1) {
		document.getElementById("row_regionName").style.display = "none";	
		document.getElementById("row_propertyId").style.display = "block";	
	} else if (dataType == 2) {
		document.getElementById("row_propertyId").style.display = "none";	
		document.getElementById("row_regionName").style.display = "block";	
	} else {
		document.getElementById("row_propertyId").style.display = "none";	
		document.getElementById("row_regionName").style.display = "none";	
	}
}

function faqRecipientChanged() {
	document.form.submit();	
}

function dataIdSelected(inputField,selectedItem) {
	var id = document.getElementById("id");
	if (id == null) {
		var input = document.createElement('INPUT');
		input.type = 'hidden';
		input.name = 'dataId';
		input.id = 'dataId';
		input.value = selectedItem.firstChild.innerHTML;
		document.form1.appendChild(input);
	} else {
		id.value = selectedItem.firstChild.innerHTML;
	}
}

function categoryChanged() {
	var opt = document.getElementById('category');
	var category = opt.options[opt.selectedIndex].value;
	if (category != "") {
		if (category == -1) { // new category
			// display title and category fields
			document.getElementById("new_category").style.display = "block";
		} else {
			document.getElementById("new_category").style.display = "none";
		}
	} else {
		document.getElementById("new_category").style.display = "none";
	}
}

function updatePreview() {
	document.getElementById("preview").innerHTML=document.getElementById("answer").value;
}

function showHideHelp(helpid, linkHelp, showHelpText)  {
	var help = document.getElementById(helpid);
	if (help.style.display == 'block') {
		help.style.display = 'none';
		if (showHelpText == null || showHelpText) {
			linkHelp.innerHTML = "Show help";
			
		} else {
			linkHelp.innerHTML = "&nbsp;";
		}
	} else {
		help.style.display = 'block';
		linkHelp.innerHTML = "Hide help";
	}
}

// sleepsMin and personPrice can be changed dinamically, so we get them by id
function checkPrice(form, booking_fee, currency_symbol, commission_rate, vat_rate, vatStatus, vatStatusDate, vatNumber) {
	
	var sleepsMin = document.getElementById("sleepsMin").innerHTML;
	var personPrice = document.getElementById("personPrice").innerHTML;
	var fadeFrom = "#CC6600";
	var fadeTo = "#FFF2E1";
	var oPrice = document.getElementById("price");
	if (oPrice.value == "") {
		oPrice.focus();
		alert ("Price is required"); 
	}	else if (!isFloat(oPrice.value)) {
		oPrice.focus();
		alert("Prices must be entered in British Pounds Sterling. The weekly rental field only accepts numerals, please remove any non-numeric characters and re-submit.");
	} else {
		price = oPrice.value;
		var people = form.people.options[form.people.selectedIndex].value;
		var nights = form.nights.options[form.nights.selectedIndex].value;
		var pets = 0;
		if (form.pets != null) {
			pets = form.pets.options[form.pets.selectedIndex].value;
		}
		var percentageBasicRental = 1;
		if (nights > 7) {
			percentageBasicRental = nights / 7;
		} else {
			if (nights < 4) {
				var percentageBasicRental = 0.7;
			} else if (nights == 4) {
				var percentageBasicRental = 0.8;
			} else if (nights == 5) {
				var percentageBasicRental = 0.9;
			}
		}
		price = price * percentageBasicRental;
		price+= booking_fee;
		var additionnalPersons = 0;
		if (people > sleepsMin) {
			additionnalPersons = personPrice * (people - sleepsMin) * percentageBasicRental;
		}
		price+= additionnalPersons;
		price = Math.round(price * 10) / 10;
		var basicRentalPrice = myRound((price - booking_fee - additionnalPersons),1);
		document.getElementById("clientPrice").innerHTML = currency_symbol + price + "&nbsp;&nbsp;&nbsp;(" + basicRentalPrice.toString() + " + " + additionnalPersons.toString() + " + " + booking_fee.toString() + ")";
		Fat.fade_element("clientPrice", 60, 2000, fadeFrom, fadeTo);
		
		var commission = (price - booking_fee) * (commission_rate / 100);
		var vatAmount = 0;
		if (chargeVAT(vatStatus, vatStatusDate, vatNumber)) {
			vatAmount = commission * (vat_rate / 100);
		}
		document.getElementById("dueToOwner").innerHTML = currency_symbol + myRound((price - booking_fee - commission - vatAmount),1) + "&nbsp;&nbsp;&nbsp;(" + basicRentalPrice.toString() + " + " + additionnalPersons.toString() + " - " + myRound(commission,1).toString() + " - " + myRound(vatAmount,1).toString() + ")";
		Fat.fade_element("dueToOwner", 60, 2000, fadeFrom, fadeTo);
		
		document.getElementById("percentageBasicRental").innerHTML = Math.round(percentageBasicRental * 100) + "%";
		Fat.fade_element("percentageBasicRental", 60, 2000, fadeFrom, fadeTo);
		
		document.getElementById("basicRental").innerHTML = currency_symbol + basicRentalPrice;
		Fat.fade_element("basicRental", 60, 2000, fadeFrom, fadeTo);
		
		document.getElementById("commission").innerHTML = currency_symbol + myRound(commission,1) + "-";
		Fat.fade_element("commission", 60, 2000, fadeFrom, fadeTo);
		
		document.getElementById("percentageAdditionalPersons").innerHTML = Math.round(percentageBasicRental * 100) + "%";
		Fat.fade_element("percentageAdditionalPersons", 60, 2000, fadeFrom, fadeTo);

		document.getElementById("additionalPersons").innerHTML = currency_symbol + myRound(additionnalPersons,1) + "+";
		Fat.fade_element("additionalPersons", 60, 2000, fadeFrom, fadeTo);
		
		document.getElementById("vat").innerHTML = currency_symbol + myRound(vatAmount,1) + "-";
		Fat.fade_element("vat", 60, 2000, fadeFrom, fadeTo);
		
		if (form.pets != null) {
			document.getElementById("pets").innerHTML = currency_symbol + myRound(pets,1) + "+";
			Fat.fade_element("pets", 60, 2000, fadeFrom, fadeTo);
		}

		document.getElementById("bookingFee").innerHTML = currency_symbol + myRound(booking_fee,1) + "+";
		Fat.fade_element("bookingFee", 60, 2000, fadeFrom, fadeTo);
	}
	
	return false;
}

function chargeVAT(vatStatus, vatStatusDate, vatNumber) {
	var chargeVAT = true;
	if (vatStatus != '') { // vat details found
		if (vatStatus == '0') {
			if (vatNumber == '') {
				chargeVAT = true;
			} else {
				chargeVAT = (vatStatusDate == '');
			}
		} else {
			if (vatNumber == '') {
				chargeVAT = true;
			} else {
				chargeVAT = (vatStatusDate != '');
			}
		}
	}
	
	return chargeVAT;
}

function myRound(value, decimals) {
	
	var factor = Math.pow(10,decimals);
	return Math.round(value * factor) / factor;
}

function isFloat(floatValue) {
	return (+floatValue==floatValue);
}

function numbersInAnswer(form) {
	var answer = form.answer.value;
	var len = answer.length;
	var numbers = "0123456789";
	for (var j=0; j<len; j++) {
	  temp = "" + answer.substring(j, j+1);
	  if (numbers.indexOf(temp) != -1) {
	  	// it's a number: look for 5 next chars
	  	if (areFirstNCharsNumbers(5,answer.substring(j, len))) {
	  		return true;
	  	}
	  }
	}
	return false;
}

// checks if the n first chars are numbers
function areFirstNCharsNumbers(n,str) {
	var numbers = "0123456789";
	var len = n;
	if (str.length < n) {
		len = str.length;
	}
	var counter = 0;
	for (var i=0; i<len; i++) {
	  temp = "" + str.substring(i, i+1);
	  if (numbers.indexOf(temp) == -1) {
	  	if (temp == " ") {
	  		// avoid numbers separated by blank
  			len++;
  			if (len > str.length) {
  				break;
  			}
	  	} else {
		  	// not a number
		  	break;
		  }
	  } else {
	  	counter++;
	  }
	}
	
	return (counter == n);
}

function edit_image_text(id) {
	var div = document.getElementById(id);
	div.style.display = "block";
	var text = document.getElementById("text"+id);
	text.style.display = "none";
}

function cancel_edit_image_text(id) {
	var div = document.getElementById(id);
	div.style.display = "none";
	var text = document.getElementById("text"+id);
	text.style.display = "block";
}

function ok_edit_image_text(id) {
	var div = document.getElementById(id);
	div.style.display = "none";
	var text = document.getElementById("text"+id);
	text.style.display = "block";
	var newtext = document.getElementById("newtext"+id);
	text.innerHTML = newtext.value;
}

function checkPhotos(form) {
	
	var checked = false;
	for (i=0;i<form.elements.length;i++) {
		// looking for the frontpage elements
		if (form.elements[i].name.indexOf("frontpage") != -1) {
			if (form.elements[i].checked) {
				checked = true;
				// if it's checked, check delete it isn't selected
				id = form.elements[i].name.substr(9);
				var del = document.getElementById("delete"+id);
				if (del.checked) {
					alert ("You have chosen to delete the front page picture. Please choose another one.");
					return false;
				}
			}
		}
	}
	
	if (!checked) {
		alert ("Please select a picture to go on the front page");
		return false;
	}
	
	return true;
}

function checkUpload(form, propertyname) {
	for (i=0;i<form.elements.length;i++) {
		// looking for the file elements
		if (form.elements[i].name.indexOf("file") != -1) {
			if (form.elements[i].value != "") {
				id = form.elements[i].name.substr(4);
				var desc = document.getElementById("desc"+id);
				if (desc.value == "") {
					alert ("Description is required"); 
					desc.focus();
					return false;
				} else if (desc.value.toLowerCase().indexOf(propertyname.toLowerCase()) != -1) {
					alert ("It looks like you are trying to enter your property name, which is not allowed. If you think this message is being displayed incorrectly please send the text you are trying to save to technical@selfcateringhols.com");
					desc.focus();
					return false;
				}
			}
		}
	}

	return true;
}

function add_property_saveandcontinue(step) {
	var form = document.getElementById('form_steps');
	form.action = form.urlAddProperty.value + "?step=" + step;

	return true;
}

function add_property_nobookings(step) {
	var form = document.getElementById('form_steps');
	form.action = form.urlAddProperty.value + "?step=" + step;
	
	var input = document.createElement('INPUT');
	input.type = 'hidden';
	input.name = 'nocheck';
	input.value = true;
	form.appendChild(input);
	
	return true;
}

function checkFields_availability(form) {
	
	if (!form.nocheck) {
		field = "";
		
		if (form.dateFrom.value == "") {
			field = "Date from";
			form.dateFrom.focus();
		} else if (form.dateTo.value == "") {
			field = "Date to";
			form.dateTo.focus();
		}
	
		if (field != "") { 
			alert (field + " is required"); 
			return false;
		}
		
		var dateFrom = form.dateFrom.value;
		var dateTo = form.dateTo.value;
		var day = dateFrom.substr(0,2);
		var month = dateFrom.substr(3,2);
		var year = dateFrom.substr(6,4); 
		var d = month+"/"+day+"/"+year;
		var setdate = new Date(d);
		var d1 = Date.parse(setdate);
		var day = dateTo.substr(0,2);
		var month = dateTo.substr(3,2);
		var year = dateTo.substr(6,4); 
		var d = month+"/"+day+"/"+year;
		var setdate = new Date(d);
		var d2 = Date.parse(setdate);
		
		if (d1 > d2) {
			alert ("Date to has to be later than date from");
			form.dateFrom.focus();
			return false;
		}
	}
			
	return true;
}

function billing_address(field) {
	var section = document.getElementById("billingaddress_section");
	if (field.value == 1) { // same address as settings
		section.style.display = 'none';
	} else { // different address as settings
		section.style.display = 'block';
	}
}

function showHideDeletedProperties(id, linkDeletedProperties)  {
	var id = document.getElementById(id);
	if (id.style.display == 'block') {
		id.style.display = 'none';
		linkDeletedProperties.innerHTML = "Show deleted properties";
	} else {
		id.style.display = 'block';
		linkDeletedProperties.innerHTML = "Hide deleted properties";
	}
}

function goToAdd(selectid, step) {
	var opt = document.getElementById(selectid);
	if (opt.selectedIndex != 0) {
		var propertyid = opt.options[opt.selectedIndex].value;
		location.href = "add_property.php?propertyid=" + propertyid + "&step=" + step;
	}
}

function verifyEmail(url, email) {
	if (confirm("Your email address is showing as unverified - this means that we are not sure if our emails are getting through to you. Verifying your email address helps us to offer you a better service. Click OK to send a test email to " + email + ", then check your Inbox. If you cannot find our email please check your Spam or Bulk email folder. Once located click on the link to verify your email address.")) {
		location.href = url;
	}
}

window.onload=startList, manageLayers;

