/*****************************************************
Function: copy data from one element to the other
		copy data from one select to another
		set text to an element
		enable/disable form element
******************************************************/

function copyData(from,to){
	var tempFrom = document.getElementById(from);
	var tempTo = document.getElementById(to);

	tempTo.value = tempFrom.value;
}

function copyDataSelect(form,from,to){
	document.forms[form][to].options.selectedIndex = document.forms[form][from].selectedIndex;
}

function setFormElementData(element,text){
	document.getElementById(element).value = text;
}

function enableDisableFormElement(form,element,type){ // type: true = disable ; false = enable
	var theForm = document.forms[form];
	var theElement = theForm[element];
	
	if(type){
		theElement.disabled = true;
	}else{
		theElement.disabled = false;
	}
}

function enableDisableForm(type){ // type: true = disable ; false = enable
	var inputs = document.getElementsByTagName('input');
	var selectbox = document.getElementsByTagName('select');
	var textbox = document.getElementsByTagName('textarea');
	var checkbox = document.getElementsByTagName('checkbox');
	var radio = document.getElementsByTagName('radio');
	
	if(inputs){
		for(i=0;i<inputs.length;i++){
			inputs[i].disabled = type;
		}
	}
	
	if(selectbox){
		for(i=0;i<selectbox.length;i++){
			selectbox[i].disabled = type;
		}
	}
	
	if(textbox){
		for(i=0;i<textbox.length;i++){
			textbox[i].disabled = type;
		}
	}
	
	if(checkbox){
		for(i=0;i<checkbox.length;i++){
			checkbox[i].disabled = type;
		}
	}
	
	if(radio){
		for(i=0;i<radio.length;i++){
			radio[i].disabled = type;
		}
	}
}

function setFieldFocus(form,sField){
	var theForm = document.forms[form][sField].focus();
}

function getSelectData(form,id){
	box = document.forms[form][id];
	alert(box.options[box.selectedIndex].value);	
}
/******************************************************
Function: check fields to make sure there is 
		something in it!  If fieldlist containts
		email, check to make sure the email address
		is valid!
******************************************************/
function CheckEmail(sEmail){
	str = document.getElementById(sEmail).value;
	var Errors = false;
	var Emailerrors = false;
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if(str == ""){
		Emailerrors = true;	
	}
	if (str.indexOf(at)==-1){
	  Emailerrors = true;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   Emailerrors = true;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		Emailerrors = true;
	}

	 if (str.indexOf(at,(lat+1))!=-1){
		Emailerrors = true;
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		Emailerrors = true;
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
		Emailerrors = true;
	 }
	
	 if (str.indexOf(" ")!=-1){
		Emailerrors = true;
	 }
	 if(Emailerrors){
		alert("Sorry, your email address is invalid!");
		return false;
	 }else{
		return true;	 
	 }
}
function CheckFields(sFields){
	var errors = false;
	var ErrorMsg = "Please enter a:\n\n";
	var temp = "";
	
	ElementArr = sFields.split("|");
	for(i=0; i<ElementArr.length; i++){
		//alert(ElementArr[i]+"/"+document.getElementById(ElementArr[i]).value);
		if(!document.getElementById(ElementArr[i]).value){
			ErrorMsg += ElementArr[i].replace(/([A-Z])/g," $1") + "\n";  //if a capital letter is found, seperate words with a space
			errors = true;
		}
	}
	if(errors == true){
		alert(ErrorMsg)
		return false;
	}else{
		if(sFields.indexOf("Email") != -1){
			var validEmail = CheckEmail("Email");
			if(!validEmail){
				return false;	
			}else{
				return true;	
			}
		}else{	
			return true;
		}
	}
}


/*****************************************************
Function: for mulitple selects, set the whole box as
		selected
******************************************************/
function selectAllSB(selectBox){
	var sb = document.getElementById(selectBox);
	
	for(i=0;i<sb.lenth;i++){
		sb[i].setAttribute('selected','selected');
	}	
}

/*****************************************************
Function: credit card validation
******************************************************/
function validateCC(ccType,ccNumber){
	var cardNumber = ccNumber;
	var isValid = false;
	var ccCheckRegExp = /[^\d ]/;
	isValid = !ccCheckRegExp.test(cardNumber);
	
	if (isValid)
	{
	var cardNumbersOnly = cardNumber.replace(/ /g,"");
	var cardNumberLength = cardNumbersOnly.length;
	var lengthIsValid = false;
	var prefixIsValid = false;
	var prefixRegExp;

	switch(ccType)
	{
	case "1": //ammex
	   lengthIsValid = (cardNumberLength == 15);
	   prefixRegExp = /^3(4|7)/;
	   break;
	
	case "3": //mastercard
	   lengthIsValid = (cardNumberLength == 16);
	   prefixRegExp = /^5[1-5]/;
	   break;
	
	 case "4": //visa
	   lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
	   prefixRegExp = /^4/;
	   break;
	
	 
	}
	
	prefixIsValid = prefixRegExp.test(cardNumbersOnly);
	isValid = prefixIsValid && lengthIsValid;
	}
	
	if (isValid)
	{
	var numberProduct;
	var numberProductDigitIndex;
	var checkSumTotal = 0;
	
	for (digitCounter = cardNumberLength - 1; digitCounter >= 0; digitCounter--)
	{
	 checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
	 digitCounter--;
	 numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
	 for (var productDigitCounter = 0;
	   productDigitCounter < numberProduct.length; 
	   productDigitCounter++)
	 {
	   checkSumTotal += 
		parseInt(numberProduct.charAt(productDigitCounter));
	 }
	}
	
	isValid = (checkSumTotal % 10 == 0);
	}
	return isValid;
}

/*****************************************************
Function: custom
******************************************************/


function CheckBookingForm(){
	var dayOfTravel = MM_findObj("DayOfTravel").value;
	var monthOfTravel = MM_findObj("MonthOfTravel").value;
	var yearOfTravel = MM_findObj("YearOfTravel").value;
	
	var travelDate = new Date();
	travelDate.setFullYear(yearOfTravel,monthOfTravel,dayOfTravel);
	
	var testDateTravel = new Date();
	testDateTravel.setFullYear(yearOfTravel,monthOfTravel-1,dayOfTravel);
	
	
	var currentDate = new Date();
	
	if(travelDate<currentDate){
		alert("Your travel date must be after today");
		return false;
	}
	
	var one_day = 1000*60*60*24;

	if( Math.floor( (testDateTravel.getTime()-currentDate.getTime())/ (one_day))<3){
		alert("Please note: A minimum of 48 hours is required to use this form. If you wish to travel in the next two days, please call us on 1800111346 (freecall) or (07)40411600 to book your trip.");
		return false;
	}
	
	var dayOfTravel = MM_findObj("AlernativeDayOfTravel").value;
	var monthOfTravel = MM_findObj("AlernativeMonthOfTravel").value;
	var yearOfTravel = MM_findObj("AlernativeYearOfTravel").value;
	
	var travelDate = new Date();
	travelDate.setFullYear(yearOfTravel,monthOfTravel,dayOfTravel);
	
	var currentDate = new Date();
	
	if(travelDate<currentDate){
		alert("Your alternative travel date must be after today");
		return false;
	}
	
	var testDateAlt = new Date();
	testDateTravel.setFullYear(yearOfTravel,monthOfTravel-1,dayOfTravel);
	
	if( Math.floor( (testDateTravel.getTime()-currentDate.getTime())/ (one_day))<3){
		alert("Please note: A minimum of 48 hours is required to use this form. If you wish to travel in the next two days, please call us on 1800111346 (freecall) or (07)40411600 to book your trip.");
		return false;
	}
	
	
	var fieldCheck = CheckFields('DayOfTravel|MonthOfTravel|YearOfTravel|NumberOfAdults|NumberOfChildren|FirstName|LastName|Country|Email|ReEnterEmail|Phone|PaymentType|CardNumber|NameOnCard|ExpiryMonth|ExpiryYear|Agree');	
	var email = MM_findObj("Email");
	var email2 = MM_findObj("ReEnterEmail");
	var ccType = MM_findObj("PaymentType");
	var ccNumber = MM_findObj("CardNumber");
	var creditCardCheck = true;//validateCC(ccType.value,ccNumber.value);
	var agree = MM_findObj("Agree");
	
	if(!ccType.value){
		alert("Please select a credit card type");
		return false;
	}
	
	if(!ccNumber.value){
		alert("Please enter a credit card number");
		return false;
	}
	
	if(fieldCheck){
		if(email.value != email2.value){
			alert("Your email addresses do not match");
			return false;
		}else{
			if(!creditCardCheck){
				alert("You have entered an invalid credit card number");
				return false;
			}else{
				if(agree.value != "Y"){
					alert("You m ust agree to our terms and conditions");
				}else{
					return true;	
				}
			}
		}
		
	}else{
		return false;	
	}
}