

	// used on travelguide.php to ensure at least one option is checked
	function validateCheckboxes(form, msg)
	{
		for (i = 0; i < form.elements.length; i++)
		{
			if (form.elements[i].type == "checkbox")
			{
				if (form.elements[i].checked)
				{
					return true;
				}
			}
		}

		alert(msg);
		return false;
	}

	function lockFields()
	{
		// stub for init step 2
	}


	// step 2
	function lockField(radio_element, status, textfield_element_name)
	{
		var form = document.forms['steps'];

		if (textfield_element_name==null) {
			// get corresponding _distance textfield name
			var radio_element_name = radio_element.name;			
			textfield_element_name = radio_element_name + '_distance';
		}

		// loop through all form elements and find the one that corresponds to this checkbox
		var i;
		for(i = 0; i < form.elements.length; i++)
		{
			if (form.elements[i].name == textfield_element_name)
			{
				form.elements[i].style.backgroundColor="";
				if (status == 'N')
				{
					form.elements[i].value = '';
					form.elements[i].readOnly = true;
					form.elements[i].disabled = true;
					form.elements[i].className = 'locked';
				}
				else {
					form.elements[i].readOnly = false;
					form.elements[i].disabled = false;
					form.elements[i].className = 'unlocked';
				}
			}
		}

	} // ef

	function controlDependency(form, control, dependent, invert) {
		var enable=control.checked;
		if (invert==true) enable= !enable;
		if (enable)  {
			enableControl(form,dependent);
		} else {
			disableControl(form,dependent);
		}
	}
	
	function disableControl(frm,controlName) {
		if (frm!=null) {
			frm.elements[controlName].disabled=true;
			frm.elements[controlName].style.backgroundColor='';
			frm.elements[controlName].className = 'locked';
		}
	}

	function enableControl(frm,controlName) {
		if (frm!=null) {
			frm.elements[controlName].disabled=false;
			frm.elements[controlName].style.backgroundColor='';
			frm.elements[controlName].className = 'unlocked';
		}
	}

	//Dynamically changes the style of elements for language translations in the hotel editing.
	function redOrGreen(id,green) {
	var elem=document.getElementById(id);
		if (green) {
			elem.style.backgroundColor="#C0DEC0";
			elem.style.color="black";		
		} else {
			elem.style.backgroundColor="#ED0000";
			elem.style.color="white";
		}
	}

	function popBilingual(property_id)
	{
		window.open('/contact_template/explorer-display.php?TEMPLATE_ID=12&property_id=' + property_id, 'bi_form','status=yes,resizable=yes,scrollbars=yes,width=850,height=600');
	}


	function validatePropertyId(form)
	{
		var text=form.property_id.value;
		if (!isNumeric(text) && !(text.substring(0,1).toUpperCase()=='H' && isNumeric(text.substring(1))))
		{
			alert ('Please enter a valid property reference number');
			return false;
		}
		else {
			return true;
		}
	}

	function pop_demo(url)
	{
		window.open(url, 'demo','status=yes,resizable=yes,scrollbars=yes,width=740,height=500');
	}


	/* used to set the travelguide_id that needs to be saved, call with 0 to save all */
	function save_form(travelguide_id)
	{
		document.forms['guides'].selected_travelguide_id.value = travelguide_id;
		document.forms['guides'].submit();
	}


	function save_pdf()
	{
		form = document.forms['guides'];
		var tg_travelguide_id = '';

		/* collect up which checkboxes have been ticked on form */
		for (i = 0; i < form.elements.length; i++)
		{
			if (form.elements[i].type == "checkbox")
			{
				if (form.elements[i].checked)
				{	
					/* build a csv string */
					tg_travelguide_id += form.elements[i].value + ',';
				}
			}
		}

		/* patch - tack an extra 0 on end of the csv to stop extra comma busitng the pdf query */
		tg_travelguide_id += '0';

		if (tg_travelguide_id != 0)
		{
			window.open('travelguide_save.php?tg_travelguide_id=' + tg_travelguide_id, 'save_tg','status=yes,resizable=yes,scrollbars=yes,width=640,height=400');
		}

	}


	function send_pdf()
	{
		form = document.forms['guides'];
		var tg_travelguide_id = '';

		/* collect up which checkboxes have been ticked on form */
		for (i = 0; i < form.elements.length; i++)
		{
			if (form.elements[i].type == "checkbox")
			{
				if (form.elements[i].checked)
				{	
					/* build a csv string */
					tg_travelguide_id += form.elements[i].value + ',';
				}
			}
		}

		/* patch - tack an extra 0 on end of the csv to stop extra comma busitng the pdf query */
		tg_travelguide_id += '0';

		if (tg_travelguide_id != 0)
		{
			window.open('travelguide_send.php?tg_travelguide_id=' + tg_travelguide_id, 'send_tg','status=yes,resizable=yes,scrollbars=yes,width=475,height=600');
		}

	}


	function setJumpPoint(jump_point)
	{
		var form = document.forms['steps'];
		form.jump_point.value = jump_point;
	}

	function submitSame()
	{
		var form = document.forms['steps'];
		form.redirect.value = 'same';

		form.submit();
	}


	function submitBack()
	{
		var form = document.forms['steps'];
		form.redirect.value = 'back';

		form.submit();
	}


	function submitNext()
	{
		var form = document.forms['steps'];
		form.redirect.value = 'next';

		form.submit();
	}


	function getMsg(message_id) {

		/* returns the request key from the languages array - called from advertiser section only */
		if (typeof language == 'undefined'){
			return 'JS language definition file missing, please create one';
		}
		else {
			return language[message_id];
		}

	}


	function map_high(url)
	{
		window.open(url, 'map_high','status=yes,resizable=yes,scrollbars=yes,width=490,height=490');
	}



	function pop_availability(url)
	{
		window.open(url, 'availability','status=yes,resizable=yes,scrollbars=yes,width=680,height=650');
	}



	function check_login(form, message)
	{
		if (is_string(form.email.value, 1, 128) && is_string(form.password.value, 1, 32))
		{
			return true;
		}
		else {
			alert(message);
			return false;
		}

	}


	function change_payment_type(action)
	{
		frm = document.forms['steps'];
		frm.action = action;
	}


	function locateRegion(region_id)
	{
		window.open('locate_region.php?region_id=' + region_id,'locate','status=yes,resizable=yes,scrollbars=yes,width=350,height=350');
	}


	function shortlist_send(url) {
		window.open(url,'shortlist_send','status=yes,resizable=yes,scrollbars=yes,width=475,height=600');
	}


	function openMap(location_x, location_y, language)
	{
		var form = document.forms['steps'];
		
		if (form.province_id.value < 0)
		{
			if (language == "es")
			{
				alert("Primero tienes que seleccionar una provincia.");
			}
			else {
				alert("Please select a province first");
			}
		}
		else {

			var province_id = form.province_id.value;

			url = 'locate.php?province_id=' + province_id + '&location_x=' + location_x + '&location_y=' + location_y;

			window.open(url, 'locate_me','status=yes,resizable=yes,scrollbars=yes,width=490,height=540');
		}

	}


	String.prototype.trim= function() {
		var sString=this;
		while (sString.substring(0,1)==' ') {
			sString = sString.substring(1, sString.length);
		}
		while (sString.substring(sString.length-1, sString.length)==' ') {
			sString = sString.substring(0,sString.length-1);
		}
		return sString;
	}
	
	String.prototype.replaceAll= function (from, to) {
		var text=this;
		var pos=text.indexOf(from);
		while (pos!=-1) {
			text = text.substring(0,pos)+text.substring(pos,text.length).replace(from,to);
			pos=text.indexOf(from,pos);
	  }
	  return text;
	}

	//Fix dumb-ass Americanism and crappy JavaScript Date class.
	Date.fromUKFormat = function(sUK) 
	{ 
		var A = sUK.split(/[\\\/]/); 
		if (A[0]<1 || A[1]<1 || A[2]<0) throw new Error(); //Reject 0 day or month numbers.
		if (A[0]>31) throw new Error(); //Reject a day number greater than 31.
		switch (A[2].length) {
			case 0: A[2]=(new Date()).getYear(); break;
			case 1: A[2]="200"+A[2]; break;
			case 2: A[2]="20"+A[2]; break;
			case 3: A[2]="2"+A[2]; break;
			case 4: break;
			default: throw new Error();
		}
		
		if (A[1]>12) { //Validate month number <=12.
			throw new Error();
		}
		A = [A[1],A[0],A[2]]; 
		return new Date(Date.parse(A.join('/'))); 
	}
	
	function count_words(tbox_input, maxlimit, language)
	{

		var msg = "";
		var c = 0;
		w = tbox_input.value.split(" ");
		no_words = w.length;
	
			for (x = 0; x < no_words; x++)
			{
				if (c >= maxlimit)
				{
					if (language == 'en')
					{
						alert("Only " + maxlimit + " words please.");
					}
					else {
					alert("Hay un límite de " + maxlimit + "  palabras en este artículo.");
					}
					 
					tbox_input.value = msg.trim();
					break;
				}
				msg = msg + w[x] + " ";
				c++;
			}

			return false;

	}


	function popup(url) {
		window.open(url,'refund_policy','status=yes,resizable=yes,scrollbars=yes,width=450,height=550');
	}


	function print_this() {
		if (window.print) window.print()
		void (null)
	}


	function toggle(element) {

			for (i = 0; i < element.length; i++) {

				if (element[i].style.display == 'none') {
					var status = '';
				} else {
					var status = 'none';
				}

			element[i].style.display = status;
			}

	}
	

	/* begin validation library -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */


	function is_email(email) {
		var index=email.indexOf("@");
		var index2=email.lastIndexOf(".");
		if (index>0 && index2>index+1 && index2<email.length-2) {
			return true;
		} else {
			//Bad e-mail addess.
			return false;
		}
	}


	function is_string(str, min_length, max_length) {

		if (str.length >= min_length && str.length <= max_length) {
		return true;
		} else {
		return false;
		}
	}


	function is_date(str) {

		var date_array;
		var d, m, y;

		if (!is_string(str, 6, 10)) {		// check if a string has been entered
		return false;
		} else {

			date_array = str.split("/");

			d	= parseInt(date_array[0],10);
			m	= parseInt(date_array[1],10);
			y	= parseInt(date_array[2],10);

			if (d < 1 && d > 31) {	// simply check for day range
			return false;
			}

			if (m < 1 && m > 12) {	// simply check for month range
			return false;
			}


			if (y < 1900) {		// add 1900 if year is supplied in two digits
				y = y + 1900;
			}
			
			if (y < 1900) {		// is valid year
			return false;
			}

			return true;
		}

	}


	/* end validation library -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
