/***************************************************
	Commands to run immediately
***************************************************/
addEvent(window, 'load', AddIconToPopupLinks);
addEvent(window, 'load', PopulateResorts);
//window.onload = AddIconToPopupLinks;

function AddIconToPopupLinks() {
	var objLink;
	var objImage;
	for (var i = 0; i < document.links.length; i++) {
		objLink = document.links[i];
		if (objLink.target != '') {
			objImage = document.createElement('IMG');
			objImage.src = 'images/popup.gif';
			objImage.border = 0;
			objImage.width = 12;
			objImage.height = 10;
			objLink.title = 'Link opens in a new window';
			if (objLink.childNodes.length > 1)
				objLink = objLink.childNodes[objLink.childNodes.length - 1];
			objLink.appendChild(objImage);
		}
	}
}

function PopulateResorts() {
	var frm, frmHidden;

	//alert('PopulateResorts');
	
	if (document.forms.length > 0) {
		frm = document.SearchForm;
		frmHidden = document.hiddendata
		//alert(frm);
		if (frm && frmHidden) {
				var lst = frm.country;
				//alert(lst);
				if (lst) {
					var strVal;
				
					strVal = frmHidden.resortpersist.value
					if (strVal == '' || strVal == 'any') {
						strVal = frm.resort.value;
					}
				
					if (frmHidden.notfirsttime.value == 1) {
						//alert('Check: ' + frmHidden.notfirsttime.value);
						
						//alert(lst.value);
						if (frmHidden.countrypersist.value != '') {
							frm.country.value = frmHidden.countrypersist.value;
						}

						ShowResorts(lst);
					} else {
						frmHidden.notfirsttime.value = 1;
						//alert('Set : ' + frmHidden.notfirsttime.value);
					}
						
					//alert(strVal);
					if (strVal != '' && strVal != 'any') {
						frm.resort.value = strVal;
					}
				}
		}
	}
}

function SaveResortSelection(lst) {
	document.hiddendata.resortpersist.value = lst.value;
}

function ShowResorts(lst) {
	var i, optFrom, optNew
	var lstAllResorts = document.hiddendata.resorts;
	var lstResorts = document.SearchForm.resort;
	var sCountryID = lst.value;

	//Savedata
	document.hiddendata.countrypersist.value = lst.value;
	//document.hiddendata.resortpersist.value = 'any';

	//Set no selection
	if (lstResorts.length > 0) {
		lstResorts.selectedIndex = -1;
	}
	//Clear list
	for (i = lstResorts.length - 1; i >= 0 ; i--) {
		lstResorts.options[i] = null;
	}
	
	if (lst.selectedIndex == 0) {
		//New option item
		optNew = new Option();
		optNew.text = 'Please choose a country above';
		optNew.value = 'any';
		//Add option
		lstResorts.options.add(optNew);
	} else {
		//Add items related to selected Country
		for (i = 0; i < lstAllResorts.length; i++) {
			optFrom = lstAllResorts.options[i];
			if (i == 0 //always get first item
				|| (optFrom.value == sCountryID) //Get items that match the start of the ID
				) {
				//New option item
				optNew = new Option();
				optNew.text = optFrom.text;
				if (i == 0)
					optNew.value = optFrom.value;
				else
					optNew.value = optFrom.text;
				//Add option
				lstResorts.options.add(optNew);
			}
		}
	}
}

function CateredChange(lstCatered) {
	var objRow, objList;
	
	objRow = document.getElementById('maxoccupancyrow');
	objList = document.SearchForm.max_occupancy;
	
	if (objRow && objList && objList.length > 0) {
		objRow.style.display = (lstCatered.value == 'Yes') ? 'none' : '';
		objList.selectedIndex = 0;
	}
}

function SubmitForm(frm) {
	if (frm) {
		frm.submit();
	}
}

function Contact_Details_Validator3(theForm)
{
  if (theForm.lastname.value == "")
  {
    alert("You must enter your last name.");
    theForm.lastname.focus();
    return (false);
  }
  if (theForm.firstname.value == "")
  {
    alert("You must enter your first name.");
    theForm.firstname.focus();
    return (false);
  }
  if (theForm.phone.value == "" && theForm.email.value=="")
  {
    alert("You must enter a phone number or an email address for us to contact you.");
    theForm.email.focus();
    return (false);
  }
  if (theForm.phone.value == "" && theForm.contactby.item(0).checked)
  {
    alert("You must enter a phone number if you prefer to be contacted by phone.");
    theForm.phone.focus();
    return (false);
  }
  if (theForm.email.value == "" && theForm.contactby.item(1).checked)
  {
    alert("You must enter an email address if you prefer to be contacted by email.");
    theForm.email.focus();
    return (false);
  }
  
  return true;
}


function Contact_Details_Validator2(theForm)
{
  if (theForm.l_name.value == "")
  {
    alert("You must enter your last name.");
    theForm.l_name.focus();
    return (false);
  }
  if (theForm.f_name.value == "")
  {
    alert("You must enter your first name.");
    theForm.f_name.focus();
    return (false);
  }
  if (theForm.phone1.value == "" && theForm.email.value=="")
  {
    alert("You must enter a phone number or an email address for us to contact you.");
    theForm.email.focus();
    return (false);
  }
  if (theForm.phone1.value == "" && theForm.contactby.item(0).checked)
  {
    alert("You must enter a phone number if you prefer to be contacted by phone.");
    theForm.phone1.focus();
    return (false);
  }
  if (theForm.email.value == "" && theForm.contactby.item(1).checked)
  {
    alert("You must enter an email address if you prefer to be contacted by email.");
    theForm.email.focus();
    return (false);
  }
  
  return true;
}
function Contact_Details_Validator_f(theForm)
{
  if (theForm.l_name.value == "")
  {
    alert("You must enter your last name.");
    theForm.l_name.focus();
    return (false);
  }
  if (theForm.f_name.value == "")
  {
    alert("You must enter your first name.");
    theForm.f_name.focus();
    return (false);
  }
  if (theForm.dates.value == "0")
  {
    alert("You must enter your required dates.");
    theForm.dates.focus();
    return (false);
  }
  if (theForm.phone1.value == "" && theForm.email.value=="")
  {
    alert("You must enter a phone number or an email address for us to contact you.");
    theForm.email.focus();
    return (false);
  }
  if (theForm.phone1.value == "" && theForm.contactby.item(0).checked)
  {
    alert("You must enter a phone number if you prefer to be contacted by phone.");
    theForm.phone1.focus();
    return (false);
  }
  if (theForm.email.value == "" && theForm.contactby.item(1).checked)
  {
    alert("You must enter an email address if you prefer to be contacted by email.");
    theForm.email.focus();
    return (false);
  }
  
  return true;
}



function Contact_Details_Validator(theForm)
{
  if (theForm.login.value == "")
  {
    alert("You must enter your login.");
    theForm.login.focus();
    return (false);
  }
  if (theForm.password.value == "")
  {
    alert("You must enter your password.");
    theForm.password.focus();
    return (false);
  }
    if (theForm.password.value != theForm.password2.value)
  {
    alert("Password not correct.");
    theForm.password.focus();
    return (false);
  }
    if (theForm.company.value == "")
  {
    alert("You must enter your company.");
    theForm.company.focus();
    return (false);
  }
  if (theForm.resort.value == "0")
  {
    alert("You must enter your resort.");
    theForm.resort.focus();
    return (false);
  }
  
  if (theForm.l_name.value == "")
  {
    alert("You must enter your last name.");
    theForm.l_name.focus();
    return (false);
  }
  if (theForm.f_name.value == "")
  {
    alert("You must enter your first name.");
    theForm.f_name.focus();
    return (false);
  }
  if (theForm.telephone.value == "" && theForm.email.value=="")
  {
    alert("You must enter a phone number or an email address for us to contact you.");
    theForm.email.focus();
    return (false);
  }
  if (theForm.telephone.value == "" && theForm.contactby.item(0).checked)
  {
    alert("You must enter a phone number if you prefer to be contacted by phone.");
    theForm.telephone.focus();
    return (false);
  }
  if (theForm.email.value == "" && theForm.contactby.item(1).checked)
  {
    alert("You must enter an email address if you prefer to be contacted by email.");
    theForm.email.focus();
    return (false);
  }
  
  return true;
}


/***************************************************
	Support for adding multiple events to an object
***************************************************/
function addEvent(obj, evType, fn) {
	if (obj.addEventListener){
		obj.addEventListener(evType, fn, true);
		return true;
	} else if (obj.attachEvent){
		var r = obj.attachEvent("on" + evType, fn);
		return r;
	} else {
		var r = fallbackAddEventListener(obj, evType, fn);
		return r
	}
	return false;
}

var Listeners;

function fallbackAddEventListener(obj, evType, fn) {
	var l = GetListener(obj, evType);

	if (!l) {
		l = new Listener(obj, evType);
		var intListener = Listeners.length;
		Listeners[intListener] = l;
		obj.listener = l;
		eval('obj.on' + evType + ' = function() {CallListeners(' + intListener + ')}');
	}

	if (l) {
		l.functions[l.functions.length] = fn;
		return true;
	}

	return false;
}

function GetListener(obj, evType) {
	var l, strName;
	
	if (!Listeners) Listeners = new Array();
	
	strName = ListenerName(obj, evType);
	
	for (var i = 0; i < Listeners.length; i++) {
		if (Listeners[i].name == strName) {
			l = Listeners[i];
			break;
		}
	}
	
	return l;
}

function Listener(obj, evType) {
	this.name = ListenerName(obj, evType);
	this.functions = new Array();
}

function ListenerName(obj, evType) {
	return '__' + obj.tagName + '_' + obj.id + '_' + obj.name + '_' + evType;
}

function CallListeners(intListener) {
	var l;
	
	l = Listeners[intListener];
	
	if (l) {
		for (var i = 0; i < l.functions.length; i++) {
			var func = l.functions[i];
			func();
		}
	}
}

