// Utility functions for ES

// Return true if phone number is in XXX-XXX-XXXX format
function ValidPhoneNumber(phone) {
     return phone.match(/^[0-9]{3}-[0-9]{3}-[0-9]{4,}$/)

}


// Return true if email format is valid
function ValidEmail(email) {
	return email.match(/^[0-9A-Za-z]([\-\_\.0-9A-Za-z])*@[0-9A-Za-z]([\-\_\.0-9A-Za-z])*\.[A-Za-z]{2,3}$/)
 
}


// Return true if zip code is 5 digit number
function ValidZipCode(zip) {
     return zip.match(/^[0-9]{5}$/)

}


// Remove spaces at beginning and end of string
function Trim(s) {
	return s.replace(/^\s+/,'').replace(/\s+$/,'')

}


// Returns true if dateStr is valid a numeric date string like 1/2/03, etc.
function IsValidDate(dateStr) {

	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/

	var matchArray = dateStr.match(datePat)
 // is the format ok?
	if (matchArray == null) {
		//alert("1")
		return false

	}
	month = matchArray[1]

	day = matchArray[3]

	year = matchArray[4]

	if (month < 1 || month > 12) {
		//alert("2")
		return false

	}
	if (day < 1 || day > 31) {
		//alert("3") 
		return false

	}
	if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) {
		//alert("4")
		return false

	}
	if (month == 2) {
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))

		if (day > 29 || (day == 29 && !isleap)) {
			//alert("5")
			return false

		}
	}
	// Is valid
	return true
  
}

String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

// Returns true if timeStr is valid, e.g. 7, 7:00, 7:30
function IsValidTime(timeStr) {

	timeArray = timeStr.split(" ");
	timeStr = timeArray[0];
	
	if (timeArray[1] != "AM" && timeArray[1] != "PM") {
		//alert("1");
		return false;
	}
	var timePat = /^(\d{1,2})(:)(\d{2})$/

	var matchAry = timeStr.match(timePat)

	if (matchAry == null) {
		return false

	}
	var hr = matchAry[1]

	var min = matchAry[3]

	if (hr < 1 || hr > 12) {
		//alert("2");
		return false;
	}

	if (min < 0 || min > 60) {
		//alert("3");
		return false;
	}

	// Is valid
	return true

}

// Return 1 if value is an integer >= min and <= max
// Return -1 if not a 1 to 5 digit integer
// Return -2 if out of range
function ValidSmallInt(val, min, max) {
	
	if (!val.match(/^[\-]?[0-9]{1,5}$/)) {
		return -1

	} else if (val < min || val > max) {
		return -2

	}		
	// Is OK
	return 1

}
