﻿function overloadpush(item){
this[this.length] = item;
}

function overloadsplice(x,n){
return(this.slice(0, x).concat(this.slice(x + n)));
}

/*
Array.prototype.push = overloadpush;
Array.prototype.splice = overloadsplice;
*/

function isArray(obj){
  return(typeof(obj.length)=="undefined")?false:true;
}





		   
function find(txt,arr){
  for(var i=0;i<arr.length;i++){
    if(arr[i]==txt) return(i);
  }
  return false;
}

function compare(fld,vals){
  if (vals=="NOT_NULL"){
    if (fld.value!="" && fld.value!="NULL") return true; else return false;
  } else {
    if(fld.type=="checkbox"){
	  if (vals.substr(0,1)=='!'){
        if(fld.checked) return false; else return true;
	  } else {
        if(fld.checked) return true; else return false;
	  }	
    }else{
	  if (vals.substr(0,1)=='!'){
	      if (vals.substr(1) != fld.value) return true; else return false;
		} else {
	    if (vals.indexOf(",")!=-1){
		  dat = vals;
		  pos = dat.indexOf(",");
		  while(pos > 0) {
		    if(fld.value==dat.substr(0,pos)){
		      return true;
		    }
     	    dat = dat.substr(pos+1);
     	    pos = dat.indexOf(",");
		  }
		  return false;
	    } else {
	      if (vals == fld.value) return true; else return false;
		} 
	  }
	}
  }
}

function c(source,values,reqfield,fieldtype,errmsg){
  if(compare(source,values)){
    if(!find(reqfield,fieldlist)){
 	  fieldlist.push(reqfield);
	  types.push(fieldtype);
	  errors.push(errmsg);
	}
  } else {
 	var x=find(reqfield,fieldlist);
	while(x){
	  fieldlist = fieldlist.splice(x,1);
	  types = types.splice(x,1);
	  errors = errors.splice(x,1);
	  x=find(reqfield,fieldlist);
	}
  }
}
function isdate(d,e,l,offset) {
  var sDate;
  var lDate;
  var eYear;
  var err=0;
  
  sDate = d;
  lDate = l;
  eYear = parseInt(e,10);
  


  if (sDate.length != 8) err=1;

  day = parseInt(sDate.substring(0, 2),10);
  month = parseInt(sDate.substring(2, 4),10);
  year = parseInt(sDate.substring(4, 8),10);




  lday = parseInt(lDate.substring(0, 2),10);
  lmonth = parseInt(lDate.substring(3, 5),10)+offset;
  lyear = parseInt(lDate.substring(6, 8),10)+2000;

  if (isNaN(day) || isNaN(month) || isNaN(year)) {
    err = 1;
  }
  
  if ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) {
    aryDays = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
  } else {
    aryDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
  } 

  if (lmonth>12) {
    lmonth = lmonth-12;
	lyear = lyear+1;
	if (lday > aryDays[parseInt(lmonth-1,10)]){
	  lday = aryDays[parseInt(lmonth-1,10)];
	}
  }

  if (year>lyear) {
    err = 1;
  } else {
    if ((year==lyear) && (month>lmonth)) {
	  err = 1;
	} else {
	  if ((year==lyear) && (month==lmonth) && (day>lday)) {
	    err = 1;
	  }
	}
  }
  
  
  
  if (month<1 || month>12) err = 1;
  if (day<1 || day>31) err = 1;
  if (year<eYear) err=1;
  if (day > aryDays[parseInt(month-1,10)]) err=1;
  if (err==1) {
     return false;
     } else {
     return true;
     }
  }
  
  
  function insertErrorMessage(objName,type,errorMessage)
 {
  if(!find(objName,fieldlist)){
	fieldlist.push(objName);
	types.push(type);
	errors.push(errorMessage);
  }	
 }


 function validate(today,btn,frmName){
    
  
 var msg = "";
 var cfld, i, j;

 for(i = 0; i < fieldlist.length; i++){

 cfld = eval("document."+frmName+"."+fieldlist[i]);


 switch(types[i]){
    case "num":
      if ((/[^0-9.]/i).test(cfld.value) || cfld.value=="" || cfld.value.indexOf(".",cfld.value.indexOf(".")+1)!=-1 || (cfld.value.indexOf(".")!=-1 && cfld.value.substr(cfld.value.indexOf(".")+1).length>2)){
	  	 if (msg=="") msg=errors[i];
		 else msg = msg+", "+errors[i];}
		 break;
    case "int":
      if ((/[^0-9]/i).test(cfld.value) || cfld.value==""){
	  	 if (msg=="") msg=errors[i];
		 else msg = msg+", "+errors[i];}
		 break;
    case "date":
	  if (!isdate(cfld.value,1990,today,0)){
	  	 if (msg=="") msg=errors[i];
		 else msg = msg+", "+errors[i];}
		 break;
    case "dateplus1":
	  if (!isdate(cfld.value,1990,today,1)){
	  	 if (msg=="") msg=errors[i];
		 else msg = msg+", "+errors[i];}
		 break;
    case "dateplus6":
	  if (!isdate(cfld.value,1990,today,6)){
	  	 if (msg=="") msg=errors[i];
		 else msg = msg+", "+errors[i];}
		 break;
    case "dob":
	  if (!isdate(cfld.value,1890,today,0)){
	  	 if (msg=="") msg=errors[i];
		 else msg = msg+", "+errors[i];}
		 break;
	case "text":
	  if (cfld.value=="" || cfld.value=="null"){
	  	 if (msg=="") msg=errors[i];
		 else msg = msg+", "+errors[i];}
		 break;
	case "alphanum":
	  if ((/[^a-z0-9 ]/i).test(cfld.value) || cfld.value==""){
	  	 if (msg=="") msg=errors[i];
		 else msg = msg+", "+errors[i];}
		 break;
	case "check":
	  if (cfld.checked==false){
	  	 if (msg=="") msg=errors[i];
		 else msg = msg+", "+errors[i];}
		 break;
	case "csv":

	  if (!isArray(cfld)) {
	    if (cfld.value=="" || cfld.value=="NULL"){
	  	   if (msg=="") msg=errors[i];
		   else msg = msg+", "+errors[i];
		 } else {
		   var arrS = cfld.value.split(",");
	  	   for (j=0; j < arrS.length; j++){
	  	   if (arrS[j]=="" || arrS[j]=="NULL"){
		     if (msg=="") msg=errors[i]+" "+(j+1);
		     else msg = msg+", "+errors[i]+" "+(j+1);
		     }
	  	   }
		 }
		 break;
	  } else {
	  if (cfld.type=="select-one" || cfld.type=="select-multiple"){
	     if(cfld.options[cfld.selectedIndex].value=="" || cfld.options[cfld.selectedIndex].value=="NULL"){
	  	 if (msg=="") msg=errors[i];
		 else msg = msg+", "+errors[i];}		 
	     break;
	  }
	  for (j=0; j < cfld.length; j++){
	  	  if (cfld[j].value=="" || cfld[j].value=="NULL"){
		     if (msg=="") msg=errors[i]+" "+(j+1);
		     else msg = msg+", "+errors[i]+" "+(j+1);
		    }
	  	  }
	  	  break;
	    }

	case "csvNum":
	  if (!isArray(cfld)) {
	    if (cfld.value=="" || cfld.value=="NULL"){
	  	   if (msg=="") msg=errors[i];
		   else msg = msg+", "+errors[i];
		 } else {
		   var arrS = cfld.value.split(",");
	  	   for (j=0; j < arrS.length; j++){
	  	   if (arrS[j]=="" || arrS[j]=="NULL" || (/[^0-9.]/i).test(arrS[j])){
		     if (msg=="") msg=errors[i]+" "+(j+1);
		     else msg = msg+", "+errors[i]+" "+(j+1);
		     }
	  	   }
		 }
		 break;
	  } else {
	  if (cfld.type=="select-one" || cfld.type=="select-multiple"){
	     if(cfld.options[cfld.selectedIndex].value=="" || cfld.options[cfld.selectedIndex].value=="NULL" || (/[^0-9.]/i).test(cfld.options[cfld.selectedIndex].value)){
	  	 if (msg=="") msg=errors[i];
		 else msg = msg+", "+errors[i];}		 
	     break;
	  }
	  for (j=0; j < cfld.length; j++){
	  	  if (cfld[j].value=="" || cfld[j].value=="NULL" || (/[^0-9.]/i).test(cfld[j].value)){
		     if (msg=="") msg=errors[i]+" "+(j+1);
		     else msg = msg+", "+errors[i]+" "+(j+1);
		    }
	  	  }
	  	  break;
	    }


	  }
    }

if(isArray(typealertfields)){
 for(var i = 0; i < typealertfields.length; i++){
 tfld = eval("document."+frmName+"."+typealertfields[i]);
   if (tfld.value!=""){

   switch(alerttypes[i]){
    case "num":
      if ((/[^0-9.]/i).test(tfld.value) || tfld.value=="" || tfld.value.indexOf(".",tfld.value.indexOf(".")+1)!=-1 || (tfld.value.indexOf(".")!=-1 && tfld.value.substr(tfld.value.indexOf(".")+1).length>2)){
	  	 if (msg=="") msg=typeerrors[i];
		 else msg = msg+", "+typeerrors[i];}
		 break;
    case "date":
	  if (!isdate(tfld.value,1990,today,0)){
	  	 if (msg=="") msg=typeerrors[i];
		 else msg = msg+", "+typeerrors[i];}
		 break;
    case "dateplus1":
	  if (!isdate(tfld.value,1990,today,1)){
	  	 if (msg=="") msg=typeerrors[i];
		 else msg = msg+", "+typeerrors[i];}
		 break;
    case "dateplus6":
	  if (!isdate(tfld.value,1990,today,6)){
	  	 if (msg=="") msg=typeerrors[i];
		 else msg = msg+", "+typeerrors[i];}
		 break;
    case "dob":
	  if (!isdate(tfld.value,1890,today,0)){
	  	 if (msg=="") msg=typeerrors[i];
		 else msg = msg+", "+typeerrors[i];}
		 break;
	case "text":
	  if (tfld.value=="" || tfld.value=="NULL"){
	  	 if (msg=="") msg=typeerrors[i];
		 else msg = msg+", "+typeerrors[i];}
		 break;
	case "alphanum":
	  if ((/[^a-z0-9 ]/i).test(tfld.value) || tfld.value==""){
	  	 if (msg=="") msg=typeerrors[i];
		 else msg = msg+", "+typeerrors[i];}
		 break;
	  }
	}
  } 	
}



var sPath = window.location.pathname;
var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);



if(sPage.toUpperCase()=='Card_Details.aspx'.toUpperCase())
{

 var selectedYear,selectedMonth   
 selectedYear='20'+eval("document."+frmName+"."+"ccExpireYear").value
 selectedMonth=eval("document."+frmName+"."+"ccExpireMonth").value
  
 var curMonth = (new Date().getMonth()+1);
 var curYear = (new Date().getFullYear());
 
   
  if(selectedYear < curYear)
    msg=msg+", "+"Card expired,"
  else if(selectedYear==curYear && selectedMonth <curMonth)
        msg=msg+", "+"Card expired,"
      
   
   
  var selectedStartYear='20'+eval("document."+frmName+"."+"ccStartYear").value
  var selectedStartMonth=eval("document."+frmName+"."+"ccStartMonth").value
 
   
  if(selectedStartYear > curYear)
   {
        msg=msg+", "+"Card not yet valid,"
   } 
   else if(selectedStartYear==curYear && selectedStartMonth >curMonth)
   {
        msg=msg+", "+"Card not yet valid,"
   }
   
   
    var selectedCard=eval("document."+frmName+"."+"ccType").value
    var issueNumber = eval("document."+frmName+"."+"ccIssue").value
    var startYear = eval("document."+frmName+"."+"ccStartYear").value
    var startMonth = eval("document."+frmName+"."+"ccStartMonth").value
    
      
    if((selectedCard=="5657" || selectedCard=="5855")) 
    {
        if(startYear=='NULL' && startMonth=='NULL' && issueNumber=='')
            msg=msg+", "+"Card issue number or Start date required,"
    }
   
}



if(sPage=='Your_Details.aspx')
{
  if(eval("document."+frmName+"."+"phone").value=='' && eval("document."+frmName+"."+"mobile").value=='')
    msg=msg+", "+"Contact Number"
          var fieldList,partOk,sexList,partyList
          partOk='';

	  partyListValue =eval("document."+frmName+"."+"paxTitle").value	
	  sexList = eval("document."+frmName+"."+"paxTitle").value.split(',');
 	  fieldList = eval("document."+frmName+"."+"paxAge").value.split(',');
	  for(i=0;i<fieldList.length;i++)
	  {
	    if (parseInt(fieldList[i]) >=18)
	      partOk = partOk+','+'true'
	    else
	      partOk = partOk+','+'false'
	  }
	  
	  


	  

/*
single sex party validation removed as boss said
	  if (partyListValue.indexOf('Prof') ==-1 && partyListValue.indexOf('Dr') ==-1)
	  {
		  partyList=''; 
		  male='Mr,Sir'.split(',')	 	
		  female='Miss,Mrs,Ms'.split(',')	 	
	 
		  for(i=0;i<sexList.length;i++)
		  {

			  for(l=0;l<male.length;l++)
			  {
			  	if(sexList[i]==male[l])
		  			partyList=partyList+','+'M'
			  }
			  for(j=0;j<female.length;j++)
			  {
			  	if(sexList[i]==female[j])
					partyList=partyList+','+'F'
			  }
		  }
	    }	*/			  
	

	  if(partOk.indexOf('true')==-1)  
 	    if (msg!='')
 	      msg=msg+", "+"There must be at least one adult (aged 18+) in the party"
 	    else
	      msg="There must be at least one adult (aged 18+) in the party"

/*
single sex party validation removed as boss said
	  if (partyListValue.indexOf('Prof') ==-1 && partyListValue.indexOf('Dr') ==-1 && sexList.length > 1)
	  {
	  
	  	  if((partyList.indexOf('F') > 0 && partyList.indexOf('M') < 0) || (partyList.indexOf('F') < 0 && partyList.indexOf('M') > 0))
		  {	
	 	    if (msg!='')
	 	      msg=msg+", "+"This is a single sex booking which can not be authorised online, please call 0871 641 0358 to complete this booking"
	 	    else
		      msg="This is a single sex booking which can not be authorised online, please call 0871 641 0358 to complete this booking"
		  }    
	   }      	*/      
	      
}

 if (msg != ""){
    document.getElementsByName(btn)[0].disabled = false;
    window.alert("Please check the following before you proceed: "+msg);
	return false;
    } else {
    return true;
    }
 }

/*
function daysInMonth(iMonth, iYear)
{
	return 32 - new Date(iYear, iMonth, 32).getDate();
}
*/




// code for email validation **********


function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   alert("Please enter a valid email address")
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Please enter a valid email address")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Please enter a valid email address")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Please enter a valid email address")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Please enter a valid email address")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Please enter a valid email address")
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Please enter a valid email address")
		    return false
		 }

 		 return true					
	}

function ValidateEmailForm(emailID){

	var emailID=document.getElementById(emailID)
	
	if ((emailID.value==null)||(emailID.value=="")){
		alert("Please enter your email address")
		emailID.focus()
		return false
	}
	if (echeck(emailID.value)==false){
		emailID.value=""
		emailID.focus()
		return false
	}
	return true
 }
 
 
 
 
 function Emailcheck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    return false
		 }

 		 return true					
	}
