// Wedding Information Request Form Validation

function valButton(btn) {
	var cnt = -1;
	for (var i=0; i < btn.length; i++) {
	   if (btn[i].checked) {cnt = i; i = btn.length;}
	   }
	if (cnt > -1) return btn[cnt].value;
	else return null;
}

function trim(TRIM_VALUE){
	var w_space = String.fromCharCode(32);

	if(TRIM_VALUE.length < 1){
		return "";
	}

	TRIM_VALUE = RTrim(TRIM_VALUE);
	TRIM_VALUE = LTrim(TRIM_VALUE);

	return TRIM_VALUE;
} 

function RTrim(VALUE){
	var w_space = String.fromCharCode(32);
	var v_length = VALUE.length;
	var strTemp = "";
	if(v_length < 0){
		return "";
	}
	var iTemp = v_length -1;

	while(iTemp > -1){
		if(VALUE.charAt(iTemp) == w_space){
		}
		else{
			strTemp = VALUE.substring(0,iTemp +1);
			break;
		}
		iTemp = iTemp-1;

	} //End While
return strTemp;

} 

function LTrim(VALUE){
	var w_space = String.fromCharCode(32);
	if(v_length < 1){
		return "";
	}
	var v_length = VALUE.length;
	var strTemp = "";

	var iTemp = 0;

	while(iTemp < v_length){
		if(VALUE.charAt(iTemp) == w_space){
		}
		else{
			strTemp = VALUE.substring(iTemp,v_length);
			break;
		}
		iTemp = iTemp + 1;
	} //End While
return strTemp;
} 

function isValidPhone(str) { 
	// validate phone format
	if ( (str==null) || (str=="") ) return false;
	if (str.length < 10) return false;
	return true;
}

function isValidEmail(str) { 
	// validate email format
	if ( (str==null) || (str=="") ) return false;
	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;					
}

function isEmpty(str) {
	if (trim(str) == "") return true;
	else return false;
}

function validateForm(example) {

	var field;
	
	field = example.iAm;
	if (field.value == "0") {
		field.focus();
		alert("Please select who you are.");
		return false;

	} else if (field.value == "Other") {
		field = example.iamOther
		if (isEmpty(field.value)) {
			field.focus();
			alert("You have selected 'I Am Other'. Please specify your relationship to the bride and groom.");
			return false;
			} 
	} 

	field = example.iAm;
	if (field.value == "Travel Agent") {

		// validate travel agent info

		field = example.aName;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please fill in your name.");
		return false;
		}

		field = example.aAgency;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please identify your agency.");
		return false;
		}

		field = example.aAddress;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please fill in the agency's address.");
		return false;
		}

		field = example.aCity;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please fill in the agency's city.");
		return false;
		}	

		field = example.aState;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please fill in the agency's state.");
		return false;
		}

		field = example.aZip;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please fill in the agency's zip code.");
		return false;
		}	

		field = example.aPhone;
		if (isEmpty(field.value)) {
			field.focus();
			alert("Please fill in the agency's phone number.");
			return false;
		} else if (! isValidPhone(trim(field.value))) {
			field.focus();
			alert("Please enter the agency's phone number including area code or country code.");
			return false;
		}	

		// agency fax not required, but if they do provide one, make sure it's valid
		field = example.aFax;
		if (trim(field.value) != "") {
			if (! isValidPhone(trim(field.value))) {
				field.focus();
				alert("Please enter the agency's fax number including area code or country code.");
				return false;
			}	
		}

		field = example.aEmail;
		if (! isValidEmail(trim(field.value))) {
		field.focus();
		alert("Please enter a valid email address.");
		return false;
		}

		field = example.aaEmail;
		if (isEmpty(field.value)) {
			field.focus();
			alert("Please retype your email address to verify.");
			return false;
		} else if (trim(field.value) != trim(example.aEmail.value)) {
			field.focus();
			alert("The email address must match the address you retyped to verify.");
			return false;
		}

		field = example.iata;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please fill in your IATA number.");
		return false;
		}

	} else { // validate non-travel agent info

		field = example.myName;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please fill in your name.");
		return false;
		}

		field = example.myEmail;
		if (! isValidEmail(trim(field.value))) {
		field.focus();
		alert("Please enter a valid email address.");
		return false;
		}

		field = example.mymyEmail;
		if (isEmpty(field.value)) {
			field.focus();
			alert("Please retype your email address to verify.");
			return false;
		} else if (trim(field.value) != trim(example.myEmail.value)) {
			field.focus();
			alert("The email address must match the address you retyped to verify.");
			return false;
		}	
	}

	field = example.booked;
	if (valButton(field) == null) {
		field[1].focus();
 		alert("Do the bride and groom currently have a reservation? Please select yes or no.");
		return false;
	
	} else if (valButton(field) == "yes") {

		//validate already booked

		field = example.inDate;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please provide your check-in date.");
		return false;
		}

		field = example.outDate;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please provide your check-out date.");
		return false;
		}

		field = example.resNum;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please provide a reservation number.");
		return false;
		} 

		field = example.ttoo;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please provide a tour operator.");
		return false;
		}

	} else { // validate not yet booked

		field = example.pinDate;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please enter your proposed check-in date.");
		return false;
		}

		field = example.poutDate;
		if (isEmpty(field.value)) {
		field.focus();
		alert("Please enter your proposed check-out date.");
		return false;
		}
	
		field = example.bookMeth;
		if (field.value == "0") {
			field.focus();
			alert("Please select how you plan to book.");
			return false;

		} else if (field.value == "Other") {

			// validate other booking method

			field = example.other;
			if (isEmpty(field.value)) {
			field.focus();
			alert("You have selected 'Other' for how the bride and groom plan to make the reservation. Please specify the booking method.");
			return false;
			}			
		}
	}

	
	field = example.brideName;
	if (isEmpty(field.value)) {
		field.focus();
		alert("Please enter the Bride's name.");
		return false;
	}
	
	field = example.brideStatus;
	if (field.value == "0") {
		field.focus();
		alert("Please select the Bride's ststus.");
		return false;
	}	
	
	field = example.groomName;
	if (isEmpty(field.value)) {
		field.focus();
		alert("Please enter the Groom's name.");
		return false;
	}	
	
	field = example.groomStatus;
	if (field.value == "0") {
		field.focus();
		alert("Please select the Groom's status.");
		return false;
	}	
	
	field = example.address;
	if (isEmpty(field.value)) {
		field.focus();
		alert("Please enter the Bride/Groom address.");
		return false;
	}	
	
	field = example.city;
	if (isEmpty(field.value)) {
		field.focus();
		alert("Please enter the Bride/Groom city.");
		return false;
	}	
	
	field = example.state;
	if (isEmpty(field.value)) {
		field.focus();
		alert("Please enter the Bride/Groom state.");
		return false;
	}	
	
	field = example.zip;
	if (isEmpty(field.value)) {
		field.focus();
		alert("Please enter the Bride/Groom zip code.");
		return false;
	}	
	
	field = example.phone;
	if (isEmpty(field.value)) {
		field.focus();
		alert("Please enter the Bride/Groom phone number.");
		return false;
	} else if (! isValidPhone(trim(field.value))) {
		field.focus();
		alert("Please enter the Bride/Groom phone number including area code or country code.");
		return false;
	}	
	
	field = example.bgEmail;
	if (! isValidEmail(trim(field.value))) {
		field.focus();
		alert("Please enter a valid Bride/Groom email address.");
		return false;
	}	
	
	field = example.bgbgEmail;
	if (isEmpty(field.value)) {
		field.focus();
		alert("Please retype the Bride/Groom email address to verify.");
		return false;
	} else if (trim(field.value) != trim(example.bgEmail.value)) {
		field.focus();
		alert("The Bride/Groom email address must match the address you retyped to verify.");
		return false;
	}	
	
	field = example.package;
	if (valButton(field) == null) {
		field[1].focus();
 		alert("Please choose a wedding package.");
		return false;
	}	
	
	field = example.firstDate;
	if (isEmpty(field.value)) {
		field.focus();
		alert("Please choose at least one wedding date.");
		return false;
	}	
	
	field = example.time1;
	if (isEmpty(field.value)) {
		field.focus();
		alert("Please include the desired ceremony time.");
		return false;
	}	
	
	field = example.numGuests;
	if (isEmpty(field.value)) {
		field.focus();
		alert("Please fill in the approximate number of guests.");
		return false;
	}	
	
	field = example.ceremonyType;
	if (valButton(field) == null) {
		field[1].focus();
 		alert("Please choose the type of ceremony.");
		return false;
	}	
	
	field = example.ceremonyLoc;
	if (valButton(field) == null) {
		field[1].focus();
 		alert("Please choose the ceremony location.");
		return false;
	}	
	
	field = example.receptionLoc;
	if (valButton(field) == null) {
		field[1].focus();
 		alert("Please choose the reception location.");
		return false;
	}	

	field = example.refer;
	if (field.value == "0") {
		field.focus();
		alert("Please select how you heard about our resort.");
		return false;

	} else if (field.value == "other") {

		field = example.otherRefer;
		if (isEmpty(field.value)) {
			field.focus();
			alert("You have selected 'Other' for how you heard about our resort.  Please specify how you heard about us.");
			return false;
		}

	} else if (field.value == "magazine") {
		field = example.otherRefer;
		if (isEmpty(field.value)) {
			field.focus();
			alert("You have selected 'Magazine' for how you heard about our resort.  Please specify how you heard about us.");
			return false;
		}
	}

	return true;
}