function showDates(){
  datetype = document.getElementById("datetype").value;
  switch(datetype){
    case "A":
  	  Page.startDate.collapse();
	  Page.endDate.collapse();
    break;
    case "S":
  	  Page.startDate.showBlock();
	  Page.endDate.collapse();
	  document.getElementById("startLabel").innerHTML = "Event date";
    break;
    case "R":
  	  Page.startDate.showBlock();
	  Page.endDate.showBlock();
	  document.getElementById("startLabel").innerHTML = "From";
    break;
  }
}


function valEventSearch(form){
  var Event = new FormField(form.eventname);
  var Search = new FormField(form.tixSearch1);
  var Dept = new FormField(form.tixDept1);
  var Extra = new FormField(form.tixExtra);
  var DateType = new FormField(form.datetype);
  var DateRange1 = new FormField(form.daterange1);
  var DateRange2 = new FormField(form.daterange2);
  var now = new Date();
  var today = new Date(now.getFullYear(),now.getMonth(),now.getDate()).getTime();
  if((!Event.fieldValue) && (!Search.fieldValue) && (!DateRange1.fieldValue)){
	alert("Please enter at least an event name, city, or date to search."); return false;
  }
  if(Event.fieldValue){
    if(!Event.valAlphaNumExtra("Please enter a valid event name.")) return false;
    if(!Dept.valMaxLength(99,"Please limit your search to 99 characters in the event field.")) return false; 
  } 
  if(Search.fieldValue){
    if(!Search.valNotEmpty("Please enter a city.")) return false;
    if(!Search.valMaxLength(99,"Please limit your search to 99 characters in the city field.")) return false; 
  }
  if(Dept.fieldValue){
    if(!Dept.valAlpha("Invalid input. The system administrator has been notified")) return false;
    if(!Dept.valMaxLength(3,"Invalid input. The system administrator has been notified")) return false; 
  }
  if(Extra.fieldValue){
    if(!Extra.valPosNum("Invalid input. The system administrator has been notified")) return false; 
    if(!Extra.valMaxLength(5,"Invalid input. The system administrator has been notified")) return false; 
  }
  if(DateType.fieldValue == "S"){
    if(!DateRange1.valDate("Please enter dates in MM/DD/YYYY format.")) return false;
    DateArr1 = DateRange1.fieldValue.split("/");
    Stamp1 = new Date(DateArr1[2],DateArr1[0],DateArr1[1]).getTime();
    if(Stamp1 < today) {
      alert("Please enter a date that is in the future."); return false;
    }
  }
  if(DateType.fieldValue == "R"){
    if(!DateRange1.valDate("Please enter starting dates in MM/DD/YYYY format.")) return false;
    if(!DateRange2.valDate("Please enter ending dates in MM/DD/YYYY format.")) return false;
    DateArr1 = DateRange1.fieldValue.split("/");
    DateArr2 = DateRange2.fieldValue.split("/");
    Stamp1 = new Date(DateArr1[2],DateArr1[0],DateArr1[1]).getTime();
    Stamp2 = new Date(DateArr2[2],DateArr2[0],DateArr2[1]).getTime();
    if(Stamp1 > Stamp2) {
      alert("Please enter dates sequentially."); return false;
    }
    if(Stamp1 < today) {
      alert("Please enter a date that is in the future."); return false;
    }
  }  
  return true;
}


function valReview(form){
  var Name = new FormField(form.name);
  var Review = new FormField(form.review);
  if(!Name.valAlphaExtra("Please enter a valid name.")) return false;
  if(!Review.valAlphaNumExtra("Please enter a valid review.")) return false;
  if(!Review.valMinLength(10,"The review requires 10 characters.")) return false;
  if(!Review.valMaxLength(500,"The review is more than the allowed 500 characters.")) return false;
  return true;
}


function changeMap(){
  document.getElementById("mapImage").src = document.getElementById("mapDesc").value;
}


function hotelSearchValidate(form) {
  var DeptDate = new FormField(form.deptdate1);
  var DestDate = new FormField(form.destdate1);
  var now = new Date();
  var today = new Date(now.getFullYear(),now.getMonth(),now.getDate()).getTime();

  if(!DeptDate.valDate("Please enter dates in MM/DD/YYYY format.")) return false;
  if(!DestDate.valDate("Please enter dates in MM/DD/YYYY format.")) return false;
  deptDateArray = DeptDate.fieldValue.split("/");
  destDateArray = DestDate.fieldValue.split("/");
  deptStamp = new Date(deptDateArray[2],deptDateArray[0],deptDateArray[1]).getTime();
  destStamp = new Date(destDateArray[2],destDateArray[0],destDateArray[1]).getTime();
  if(deptStamp > destStamp) {
    alert("You cannot check-out before you check-in to the hotel."); return false;
  }
  if(deptStamp < today) {
    alert("Please pick a check-in date that is in the future."); return false;
  }
  return true;
}


function AjaxEventSort(cache,sortid,rsltsId,rsltPrefix,orderPrefix){
  (!rsltsId) ? rsltsId = "defaultResults" : ""; 
  (!rsltPrefix) ? rsltPrefix = "defaultResultId" : "";
  (!orderPrefix) ? orderPrefix = "defaultResult" : "";
  document.getElementById("sortImg").style.visibility = "visible";
  xajax_AjaxEventSort(cache,sortid,rsltsId,rsltPrefix,orderPrefix);
}


function AjaxTicketSort(cache,sortid,rsltsId,rsltPrefix,orderPrefix){
  (!rsltsId) ? rsltsId = "defaultResults" : ""; 
  (!rsltPrefix) ? rsltPrefix = "defaultResultId" : "";
  (!orderPrefix) ? orderPrefix = "defaultResult" : "";
  document.getElementById("sortImg").style.visibility = "visible";
  xajax_AjaxTicketSort(cache,sortid,rsltsId,rsltPrefix,orderPrefix);
}


function enableNotes(){
  noteLinks = document.getElementsByClassName("tixNoteLink");
  notes = document.getElementsByClassName("tixNotes");
  for(var i=0; i<noteLinks.length; i++) {
	noteLink = new Dynamic(noteLinks[i]);
	note = new Dynamic(notes[i]); 
	noteLink.listen("click",linkListener(note));
	(note.el.style.display == "block") ? note.showBlock() : note.collapse();
  }
}


function linkListener(note) {
  return (function(){note.toggleBlock();});
}


function showAllNotes(){
  notes = document.getElementsByClassName("tixNotes");
  noteLinkObj = document.getElementById("showNotesLink");
  if(noteLinkObj.innerHTML == "Show notes"){
    for(var i=0; i<notes.length; i++) {
	  note = new Dynamic(notes[i]); 
      note.showBlock();
	  noteLinkObj.innerHTML = "Hide notes";
    }
  }else{
    for(var i=0; i<notes.length; i++) {
      note = new Dynamic(notes[i]); 
      note.collapse();
  	  noteLinkObj.innerHTML = "Show notes";
    }
  }
}


function valQuantity(form){
  var Residence = new FormField(form.residence);
  if(!Residence.valAlpha("Please select a state or province of residence.")) return false;
  return true;
}


function valEventCheckout(i) {
	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(!valPhone(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;
}


function selectCity() {
		var selectedItem = this.currResults[this.focusKey] ? this.currResults[this.focusKey] : false;
		if(selectedItem) {
				if(selectedItem.code != "") {
						this.Input.el.value = selectedItem.code + ": " + selectedItem.city + ", " + selectedItem.loc;
				} else {
						this.Input.el.value = selectedItem.city + ", " + selectedItem.loc;
				}
				document.getElementById(this.outputIds.hiddenInput).value = selectedItem.code;
				document.getElementById(this.outputIds.extra).value = selectedItem.portid;
		}
}

