function valCruiseCallNow(i) {
	if(!valName(i)) return false;
	if(!valPhone(i)) return false;
	var Email = new FormField(document.getElementById("email"));
	var VerifyEmail = new FormField(document.getElementById("verifyemail"));
	var Comments = new FormField(document.getElementById("comments"));
	if(!Email.valEmail("Please enter a valid email address.")) return false;
	if(!Email.valMaxLength(80,"The email address you entered is longer than the 80 characters allowed.")) return false;
	if(!VerifyEmail.valEqualTo(Email.fieldValue,"Please make sure the email and verify email fields match.")) return false;
	if(Comments.isNotEmpty()) {
	  if(!Comments.valAlphaNumExtra("Please enter a valid comment.")) return false;
      if(!Comments.valMinLength(10,"The comment requires 10 characters.")) return false;
      if(!Comments.valMaxLength(500,"The comment is more than the allowed 500 characters.")) return false;
	}

  return true;
}


function valCruiseCamForm(form) {
	var Name = new FormField(form.name);
	var Email = new FormField(form.email);
	var Month = new FormField(form.month);
	var Day = new FormField(form.day);
	var Time = new FormField(form.time);
	var FriendEmail0 = new FormField(form.friendEmail0);
	var FriendEmail1 = new FormField(form.friendEmail1);
	var FriendEmail2 = new FormField(form.friendEmail2);
	var FriendEmail3 = new FormField(form.friendEmail3);
	if(!Name.valAlphaExtra("Please enter a valid name.")) return false;
	if(!Name.valMaxLength(80,"The name you entered is longer than the 80 characters allowed.")) return false;
	if(!Email.valEmail("Please enter a valid email address.")) return false;
	if(!Email.valMaxLength(80,"The email address you entered is longer than the 80 characters allowed.")) return false;
  	if(Month.fieldValue < 1) {
	  alert("Please select a sailing month."); return false;
	}
  	if(Day.fieldValue < 1) {
	  alert("Please select a sailing day."); return false;
	}
	if(!Time.valAlphaNumExtra("Please enter a valid time.")) return false;
	if(FriendEmail0.fieldValue){
	  if(!FriendEmail0.valEmail("Please enter a valid email address for friend #1.")) return false;
	  if(!FriendEmail0.valMaxLength(80,"The email address you entered is longer than the 80 characters allowed for friend #1.")) return false;
	}
	if(FriendEmail1.fieldValue){
	  if(!FriendEmail1.valEmail("Please enter a valid email address for friend #2.")) return false;
	  if(!FriendEmail1.valMaxLength(80,"The email address you entered is longer than the 80 characters allowed for friend #2.")) return false;
	}
	if(FriendEmail2.fieldValue){
	  if(!FriendEmail2.valEmail("Please enter a valid email address for friend #3.")) return false;
	  if(!FriendEmail2.valMaxLength(80,"The email address you entered is longer than the 80 characters allowed for friend #3.")) return false;
	}
	if(FriendEmail3.fieldValue){
	  if(!FriendEmail3.valEmail("Please enter a valid email address for friend #4.")) return false;
	  if(!FriendEmail3.valMaxLength(80,"The email address you entered is longer than the 80 characters allowed for friend #4.")) return false;
	}

  return true;
}


function changeCruiseShips(ids,names){
  var selValue = (document.getElementById("shipId").value) ? document.getElementById("shipId").value : "";
  selbox = document.getElementById("shipId");
  selbox.options.length = 0;
  selbox.options[selbox.options.length] = new Option("All cruise ships","-1");
  for(var i=0, len=ids.length; i<len; i++){
	var choose = (ids[i] == selValue) ? true : false;
    selbox.options[selbox.options.length] = new Option(names[i],ids[i],"",choose);
  }
}


function fillDate(deptDate,fill){
	var now = new Date();
	if(deptDate == "0"){
		fill.value = "";
	}else{
		fill.value = deptDate.substr(0,3) + "01" + deptDate.substr(2,deptDate.length);
	}
	document.getElementById("dateRange2").value = "";
}


function dateSwitch() {
	Page.dept1Box.toggleBlock();
	Page.dept1Box2.toggleBlock();
	document.getElementById("whichDate").value = (document.getElementById("whichDate").value == "drop") ? "range" : "drop";
}


function valCruiseSearch(form) {
  var RegionId = new FormField(form.regionId);
  var VendorId = new FormField(form.vendorId);
  var StartDt = new FormField(form.startDt);
  var WhichDate = new FormField(form.whichDate);
  var DateRange1 = new FormField(form.dateRange1);
  var DateRange2 = new FormField(form.dateRange2);
  var Duration = new FormField(form.duration);  
  var ShipId = new FormField(form.shipId);
  var PortId = new FormField(form.portId);  
  if((RegionId.fieldValue == -1) && (VendorId.fieldValue == -1) && (StartDt.fieldValue == -1 && WhichDate.isEqualTo("drop")) && (Duration.fieldValue == -1) && (ShipId.fieldValue == -1) && (PortId.fieldValue == -1)){
	alert("Please select at least one destination, cruise line, departure date, cruise duration, cruise ship, or departure port to search."); return false;
  }
  var now = new Date();
  var today = new Date(now.getFullYear(),now.getMonth(),now.getDate()).getTime(); 
  if(WhichDate.isEqualTo("drop")) {
	if(!StartDt.valMaxLength(7,"Please enter a valid date.")) return false;
  } else if(WhichDate.isEqualTo("range")) {
	if(!DateRange1.valDate("The starting departure range must be in MM/DD/YYYY format.")) return false;
	if(!DateRange1.valNotEmpty("Please enter a starting departure date range.")) return false;
	if(!DateRange2.valDate("The ending departure range must be in MM/DD/YYYY format.")) return false;
	if(!DateRange2.valNotEmpty("Please enter an ending departure date range.")) return false;
	var dateArr1 = DateRange1.fieldValue.split("/");
	var dateStr1 = new Date(dateArr1[2],dateArr1[0],dateArr1[1]).getTime();
  	if(dateStr1 < today) {
	  alert("Please enter a departure date that is in the future."); return false;
	}
	var dateArr2 = DateRange2.fieldValue.split("/");
	var dateStr2 = new Date(dateArr2[2],dateArr2[0],dateArr2[1]).getTime();
	if(dateStr1 > dateStr2) {
	  alert("Please enter a valid departure date range."); return false;
	}
  }

  return true;
}


function changePort(code,city,state,id) {
  document.getElementById("hotelSearch1").value = code + ": " + city + ", " + state;
  document.getElementById("hotelDept1").value = code;
  document.getElementById("hotelExtra").value = id;
}


function valDiscounts(form){
  var Citycode = new FormField(form.citycode);
  var Adults = new FormField(form.adults);
  var Seniors = new FormField(form.seniors);
  var Children = new FormField(form.children); 
  if(!Citycode.valNotEmpty("Please select a departure city.")) return false;
  if(!Citycode.valMaxLength(3,"Invalid input. The system administrator has been notified")) return false;
  if((parseInt(Adults.fieldValue) + parseInt(Seniors.fieldValue) + parseInt(Children.fieldValue)) > 5) {
	alert("The search is more than the allowed 5 passengers."); return false;
  } 

  return true;	
}


function changeDeck(deckId,deckName,deckMap){
  document.getElementById("deckSelect").value = deckId;
  document.getElementById("deckImg").src = "/common/images/cruise" + deckMap;
  document.getElementById("deckImg").title = deckName;
  document.getElementById("deckImg").alt = deckName;
}


function changeCoordinates(coords,cabins,descs,amens,pics){
  Page.frag = document.createDocumentFragment();
  for(var i=0, len=coords.length; i<len; i++){
    var area = Page.frag.appendChild(document.createElement("area"));
	var nuArea = new Dynamic(area);
    area.setAttribute("href","#");
    area.setAttribute("coords",coords[i]);
	area.setAttribute("onclick","return false");
	var action = getAction(cabins[i],descs[i],amens[i],pics[i]);
	nuArea.listen("click",action);
  }
  var newMap = new Dynamic("imagemap");
  newMap.empty();
  newMap.el.appendChild(Page.frag);
}


function getAction(cabin,desc,amen,pic){
  return function(event) { 
	po_Window.Show(event,"Stateroom #"+ cabin + "*","<img class='cabinImg' title='"+ desc +"' alt='"+ desc +"' src='/common/images/cruises/"+ pic +"' /><p>" + amen + "</p><div class='indent clear'><span class='note'>*Display images only</span> - actual staterooms may vary.</div>",350); return false;
  }
}


function emptyCoordinates(){
  var newMap = new Dynamic("imagemap");
  newMap.empty();
}


function countDown(){
  Page.sec--;
  if(Page.sec == -01){
    Page.sec = 59;
	Page.min = Page.min - 1; 
  }
  if(Page.timer){
    Page.timer.innerHTML = (Page.min <= 9 ? "0" + Page.min : Page.min) + " min and " + (Page.sec <= 9 ? "0" + Page.sec : Page.sec) + " sec";
  }
  var clock = window.setTimeout(countDown, 1000);
  if(Page.min == '00' && Page.sec == '00'){ 
	window.clearTimeout(clock);
	Page.timer.style.display = "none";
	alert("The cabin hold has expired. Please select a new stateroom category.");
	window.location = "/cruises/categoryResults.php";
  }
}


function changeInsurance(grandTotal,avgTotal,paxTotals,insChecked){
	try {
	for(var i=1, len=paxTotals.length; i<=len; i++){
		var paxTotal = new Dynamic("paxTotal" + i);
		paxTotal.el.innerHTML = "$" + paxTotals[i-1];
		var paxInsurance = new Dynamic("paxInsurance" + i);
		(insChecked) ? paxInsurance.showBlock() : paxInsurance.collapse();
	  }
	} catch(e) {}
	(insChecked) ? Page.insuranceTotal.showBlock() : Page.insuranceTotal.collapse();
	Page.grandTotal.el.innerHTML = "$" + grandTotal;
	Page.avgTotal.el.innerHTML = "(Avg. per person: $" + avgTotal + ")";
	try {
	  Page.payment.el.innerHTML = "Full Payment $" + grandTotal;
	} catch(e) {}
}


function valCruisesCheckout(i){
	var tripName = new FormField(document.getElementById("tripName"));
	if(!tripName.valNotEmpty("Please enter a valid trip name.")) return false;
	if(!tripName.valMaxLength(125,"The trip name you entered is longer than the 125 characters allowed.")) return false;

	var Email = new FormField(document.getElementById("email"));
	if(!Email.valEmail("Please enter a valid email address.")) return false;
	if(!Email.valMaxLength(80,"The email address you entered is longer than the 80 characters allowed")) return false;

	if(!valName(i)) return false;
	if(!valCard(i)) return false;
	if(!valBillAddress(i)) return false;
	if(document.getElementById("shipAddressLink").checked == true){
		if(!valShipAddress(i)) return false;
	}
	if(!valAgree()) return false;

  return true;
}