// other.js - wedding form validation
// by: Daniel Willams
// Last Updated: 4/17/09
// version 1.5

function validate_required(idVal,alerttxt) {
// used to validate input into the wedding reserve date form

	// walk into element
	with (idVal) {
		// check for empty entry, then validation issues
		if (value==null||value=="") {
			// if empty issue alert
	    value = alerttxt;
	    return false;
	  }
		else if (id=="phone") {
			// check for valid phone number, and reformat
			if( value.match(/^\s*[\(]?\s*\d\d\d\s*[\)\-\.]?\s*\d\d\d\s*[\-\.]?\s*\d\d\d\d\s*$/) ) {
				// if valid 10-digit, phone number reformat
				value = value.replace(/^\s*[\(]?\s*(\d\d\d)\s*[\)\-\.]?\s*(\d\d\d)\s*[\-\.]?\s*(\d\d\d\d)\s*$/, "($1)$2\-$3");
			}
			else if (value.match(/^\s*\d\d\d\s*[\-\.]*\s*\d\d\d\d\s*$/) ) {
				// if valid 7-digit phone number, reformat with (513) prepended
				value = value.replace(/^\s*(\d\d\d)\s*[-\.]*\s*(\d\d\d\d)\s*$/, "(513)$1\-$2");
			}
			else {
				// if not a valid phone numbe issue alert
				value = "Please reenter phone number";
				return false;
			}
		} // end of phone validation
		else if (id=="desiredDate") {
			//check for valid date - 1/1/1 or 1.1.1 or 1-1-1
			if( value.match(/^\s*[\d]+\s*[-\/\.]\s*[\d]+\s*[-\/\.]\s*[\d]+\s*$/) ) {
				//split date values into an array
				var dateArr = value.split(/[-\/\.]/);
				// remove spaces and change string values into numbers
				for(x in dateArr) { 
					dateArr[x] = dateArr[x].replace(/\s/, "");
					dateArr[x] = dateArr[x] * 1; }
				//month needs to be set one back
				dateArr[0] = dateArr[0]-1;
				// check for yy and change to yyyy
				if(dateArr[2] < 15) { dateArr[2] = dateArr[2]+2000;}
				// make new date with tested date info
				var checkDate = new Date().setFullYear(dateArr[2],dateArr[0],dateArr[1]);
				// make new date for today				
				var present = new Date();
				// make sure date is in the future
				if(present < checkDate) {
					// if so reformat date
				//month needs to be set one back
					dateArr[0] = dateArr[0]+1;
					value = dateArr[0]+"/"+dateArr[1]+"/"+dateArr[2];
				}
				else {
					// if not, alert issue
					value = "Please reenter date";
					return false;
				} 
			}
			else {
				// date format is not valid, issue alert
				value = alerttxt;
				return false;
			} // end match if-else 
		} // end desiredDate validation
		else if (id=="brideName") {
			// check for valid name, and reformat
			if( value.match(/[\w \.\&\+\(\)]+/) ) {				
				if( value.match(/Name Required/) || value.match(/Please reenter name/) ) {
					// if valid 10-digit, phone number reformat
					value = "Please reenter name";
					return false;
				}
			}
			else {
				value = "Please Reenter name";
				return false;
			}
		} // end desiredDate validation
		else if (id=="groomName") {
			// check for valid name, and reformat
			if( value.match(/[\w \.\&\+\(\)]+/) ) {				
				if( value.match(/Name Required/) || value.match(/Please reenter name/) ) {
					// if valid 10-digit, phone number reformat
					value = "Please reenter name";
					return false;
				}
			}
			else {
				value = "Please Reenter name";
				return false;
			}
		} // end of name validation
		else {return true}
  }
}

function testDate() {
// used to test date against blocked dates

	var txtDate1 = document.getElementById("desiredDate");
	// test for valid date
  if ( txtDate1.value.match(/^\d+\/\d+\/\d+$/) ) {
  	// if date is valid split and test against blocked dates 
		var dateArr = txtDate1.value.split(/\//);
		// make the string into numbers
		for(x in dateArr) { dateArr[x] = dateArr[x] * 1; }
		// check for yy and change to yyyy
		if(dateArr[2] > 15) { dateArr[2] = dateArr[2]-2000;}
		// set variable to indicate it is a blocked date
		var badDate = 0;
		// step through all dates to make sure it is valid
		for (x in blockDates) {
			// if it is valid set bad date variable
	    if( blockDates[x][0]==dateArr[0] && 
	        blockDates[x][1]==dateArr[1] && 
	        blockDates[x][2]==dateArr[2] ) { badDate = 1; }
	  }
	  // if badDate is set issue alert, if not all systems go
	  if(badDate == 1) {
			txtDate1.value = "Please call for availability - (513)321-3399"
			txtDate1.focus();
			return false;
	  }
	  else { return true; }
	}
  else {
  	// if the date is not valid, then it was not validated
  	txtDate1.value = "Date required(ex. 7/16/98)"
		txtDate1.focus();
		return false;
  }
}

function validate_form(thisform) {
// used to validate the wedding reservation form

	var proceed = true;
	// check all the entries to ensure they are valid	
	with (thisform) {
		// validate the name for empty
		if (validate_required(brideName,"Name Required")==false) { 
	    brideName.focus();
	    proceed = false;
		}
		if (validate_required(groomName,"Name Required")==false) { 
	    groomName.focus();
	    proceed = false;
		}
		// validate the phone number
		if (validate_required(phone,"Phone Required")==false) { 
	    phone.focus();
	    proceed = false;
		}
		//validate the date.  if valid test it for blocked dates
		if (validate_required(desiredDate,"Date required")==false) { 
	    desiredDate.focus();
	    proceed =  false;
		}
		else if ( testDate() == false ) {
			proceed = false;
		}
		return proceed;
  }
}

