//Only works in IE, links to this function should tell the user. 'title' is the link text.
function favourites(url,title){
if (document.all)
window.external.AddFavorite(url,title)
}



	function y2k(number) { return (number < 1000) ? number + 1900 : number; }



function isValidDateStart(theform) {
// checks if date passed is in valid dd/mm/yyyy format

            var date  = "";
            var month = "";
            var year  = "";
			
         date  = theform.selSDay.value;
         month = theform.selSMonth.value;
         year  = theform.selSYear.value;

            var test = new Date(year,month-1,date);

            if (year == y2k(test.getYear()) && (month-1 == test.getMonth()) && (date == test.getDate())) {

                return true;
            }
            else {
                alert("Sorry, the Start Date is invalid")
                return false;
            }
}

function padout(number) { return (number < 10) ? '0' + number : number; }

function isValidDateEnd(theform) {

            var Sdate  = "";
            var Smonth = "";
            var Syear  = "";
			
			var Edate  = "";
            var Emonth = "";
            var Eyear  = "";

           Sdate  = padout(theform.selSDay.value);
           Smonth = padout(theform.selSMonth.value);
           Syear  = padout(theform.selSYear.value);
			
			Edate  = padout(theform.selEDay.value);
        	Emonth = padout(theform.selEMonth.value);
        	Eyear  = padout(theform.selEYear.value);

            var test = new Date(Syear,Smonth-1,Sdate);
			var test2 = new Date(Eyear,Emonth-1,Edate);

            if (Syear != y2k(test.getYear()) || (Smonth-1 != test.getMonth()) || (Sdate != test.getDate())) {
              alert("Sorry, the End Date is invalid")
		
 
                return false;
				            }
							
			else if (Eyear != y2k(test2.getYear()) || (Emonth-1 != test2.getMonth()) || (Edate != test2.getDate())) {
              alert("Sorry the End Date is invalid")
                return false;
				            }
							
				else if 	(((Sdate > Edate)&&(Smonth == Emonth)&&(Syear == Eyear))|| ((Smonth > Emonth) && (Syear == Eyear)) || (Syear > Eyear))
				{
              alert("Sorry the Start Date is before the End Date")
                return false;
				            }
			
            else {
                    return true;
            }
}



//Takes desired form (internally 'which') and checks that all inputs suffixed with 'required' are filled in.
function checkrequired(which){
var pass=true;
if (document.images){
for (i=0;i<which.length;i++){
var tempobj=which.elements[i]
if (tempobj.name.substring(0,8)=="required"){
if (((tempobj.type=="text"||tempobj.type=="textarea")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.selectedIndex==-1)){
pass=false;
break;
}
}
if (tempobj.name.substring(0,6)=="reqnum"){
if (((tempobj.type=="text"||tempobj.type=="textarea")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.selectedIndex==-1)||(parseInt(tempobj.value) != tempobj.value)){
pass=false;
break;
}
}
}
}
if (!pass){
	alert("Please enter all required details.\nPlease use numeric values for all numbers.\n\(Required fields are marked with an asterix\).");
	return false;
} else {return true;}
}


function checkrequired2(which){
var pass=true;
if (document.images){
for (i=0;i<which.length;i++){
var tempobj=which.elements[i]
if (tempobj.name.substring(0,8)=="required"){
if (((tempobj.type=="text"||tempobj.type=="textarea")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.selectedIndex==-1)){
pass=false;
break;
}
}
}
}
if (!pass){
	alert("Please enter all required details before submitting this form. \n \(Required fields are marked with an asterix.\)");
	return false;
} //else {return detail_popup('terms.asp',450,485);}
}


function checkrequired3(which){
var pass=true;
if (document.images){
for (i=0;i<which.length;i++){
var tempobj=which.elements[i]
if (tempobj.name.substring(0,8)=="required"){
if (((tempobj.type=="text"||tempobj.type=="textarea")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.selectedIndex==-1)){
pass=false;
break;
}
}
}
}
if (!pass){
	alert("Please enter all required details before submitting this form. \n \(Required fields are marked with an asterix.\)");
	return false;
} //else {return detail_popup('terms_host_website.asp',450,350);}
}



 function validate(myForm) {
   // Initialize message variable
   var errmsg = "";
 // Now loop over radio button choices to make sure one is checked
   var rbchecked = false;
   for (var i=0;i<myForm.requiredrbid.length;i++) {
      if (myForm.requiredrbid[i].checked) {
          rbchecked = true
      };
   };
   if (!rbchecked) {
      errmsg = errmsg + "Please specify a booking to cancel.\n"
   };
  
  // If no error messages, return true, otherwise return false.
   if (errmsg == "") {
      return true;
   }
   else {
      alert(errmsg);
      return false;
   };
};






//A pair of functions - for switching the css class of block level html elements on the fly.
function switchClass(src,classOver){
	{if(!src.contains(event.fromElement)){src.className = classOver}}
}

function revertClass(src,classOut){
	{if(!src.contains(event.toElement)){src.className = classOut}}	
}

//Little window for snapshot data, allows width and height definitions on calling.
function detail_popup(popup_url,w,h){
if(popup_detail && !popup_detail.closed){
	popup_detail.location=popup_url;
	} else {
	var t = ((self.screen.availHeight/2) - (h/2));
	var l = ((self.screen.availWidth/2) - (w/2));
	settings ='width=' + w + ',height=' + h + ',left=' + l + ',top=' + t + ',toolbar=no,border=0,location=no,directories=no,status=no,menubar=no,scrollbars=yes,copyhistory=yes,resizable=no,dependent=no'
	var popup_detail = window.open(popup_url,'detail',settings);
	}
}

//Login window, if the login window isn't already open it will call 'openit' to get the required window.
var login_win = null;
function login(w,h){
{
if (login_win && !login_win.closed) login_win.close();
openit(w,h);
}
function openit(w,h){
var t = ((self.screen.availHeight/2) - (h/2));
var l = ((self.screen.availWidth/2) - (w/2));
settings ='width=' + w + ',height=' + h + ',left=' + l + ',top=' + t + ',toolbar=no,border=0,location=no,directories=no,status=no,menubar=no,scrollbars=no,copyhistory=yes,resizable=yes,dependent=no'
login_win = window.open('login.asp','login',settings);
}
}
  function closeit(){
if (login_win && !login_win.closed){login_win.close();}
}

//Searches through a given form and returns text alert (msg) if none of the supplied form's checkboxes are used.
//When using for validation, call 'return selectionMade(this.form,'message for user');'. The return value will allow/disallow submission of the form
function selectionMade(form,msg){
   var complete = false;
   for (i=0; i<form.elements.length; i++)
      {
      if (form.elements[i].type == "checkbox")
         {
         if (form.elements[i].checked)
            {
            complete = true;
            }
         }
      }
   if (!complete){
	alert(msg);
	return false;
	} else {return true;}
}

//Searches through a given form and returns text alert (msg) if ANY of the fields are empty. Call as above.
function hasValue(form,msg){
	var complete = true;
   	for (i=0; i<form.elements.length; i++){
		if ((form.elements[i].value == "")&&((form.elements[i].name.indexOf("numAdults")!=-1))){complete = false;}
	}
	if (!complete){
	alert(msg);
	return false;
	} else 
{return true;}
}

function selectionMade2(form,msg){
   var complete = false;
   for (i=0; i<form.elements.length; i++)
      {
      if (form.elements[i].type == "checkbox")
         {
         if (form.elements[i].checked)
            {
            complete = true;
            }
         }
      }
   if (!complete){
	alert(msg);
	return false;
	} else {return true;}
	
	//This will concatenate any values from the booking form into a period delimited string for chucking into the session.
		var compiledBookings2 = "";
	for(i=0; i<form.elements.length; i++){
		if (form.elements[i].type == "checkbox"){
         		if (form.elements[i].checked){
				compiledBookings2 = compiledBookings2 + form.elements[i].value + '.';
			}
            	}
	}
	return compiledBookings2;
}

//This will concatenate any values from the booking form into a period delimited string for chucking into the session.
function bookingCache(form){
	var compiledBookings = "";
	for(i=0; i<form.elements.length; i++){
		if (form.elements[i].type == "checkbox"){
         		if (form.elements[i].checked){
				compiledBookings = compiledBookings + form.elements[i].value + '.';
			}
            	}
	}
	return compiledBookings;
}

function bookingCache_2(form){
	var compiledBookings = "";
	for(i=0; i<form.elements.length; i++){
		if (form.elements[i].type == "checkbox"){
         		if (form.elements[i].checked){
				compiledBookings = compiledBookings + form.elements[i].value + '/';
			}
            	}
	}
	return compiledBookings;
}



function detail_popup_help(anchor,w,h,type){
if(popup_detail_help && !popup_detail_help.closed){
	popup_detail_help.location=popup_url;
	popup_detail_help.focus();
	} else {
	var t = ((self.screen.availHeight/2) - (h/2));
	var l = ((self.screen.availWidth/2) - (w/2));
	settings ='width=' + w + ',height=' + h + ',left=' + l + ',top=' + t + ',toolbar=no,border=0,location=no,directories=no,status=no,menubar=no,scrollbars=yes,copyhistory=yes,resizable=no,dependent=no'
	
	var access_type = type;
	
	switch(access_type){

	case 'agents':
	var popup_detail_help = window.open('helpframe_Agents.asp?' + escape(anchor),'help',settings);
	break;
	
	case 'guests':
	var popup_detail_help = window.open('helpframe_Guests.asp?' + escape(anchor),'help',settings);	
	break;
	
	case 'agencies':
	var popup_detail_help = window.open('helpframe_Agencies.asp?' + escape(anchor),'help',settings);	
	break;

		}
	}
}




