// JavaScript Document

var btn_request, link_request, request, name, address, city, state, zip, phone_area, phone_prefix, phone_num, email, dob_mm, dob_dd, dob_yyyy, notes;
var btn_submit_disabled = "images/btn_submit_disabled.gif";
var btn_submit = "images/btn_submit.gif";
var tmpMenu;
var prevNum = 31;
var ddNum = 0;
var curSelectedIndex = 0;
var currentYear = 2007;//<?php echo date("Y"); ?>;

function updateDays(mmMenu,ddMenu) {
	switch (ddMenu) {
		case "dob_dd":
			tmpMenu = dob_dd;
			break;
	}
	
	switch (mmMenu.selectedIndex) {
		case 0:
			ddNum = 31;
			break;
		case 1:
			ddNum = 31;
			break;
		case 2:
			ddNum = 29;
			break;
		case 3:
			ddNum = 31;
			break;
		case 4:
			ddNum = 30;
			break;
		case 5:
			ddNum = 31;
			break;
		case 6:
			ddNum = 30;
			break;
		case 7:
			ddNum = 31;
			break;
		case 8:
			ddNum = 31;
			break;
		case 9:
			ddNum = 30;
			break;
		case 10:
			ddNum = 31;
			break;
		case 11:
			ddNum = 30;
			break;
		case 12:
			ddNum = 31;
			break;
	}
	
	if (ddNum != prevNum) { //don't change unless number of days changes
		curSelectedIndex = tmpMenu.selectedIndex;
		
		//remove all options
		for (var i=tmpMenu.options.length; i>1; i--) { //leave "DD"
			tmpMenu.remove(tmpMenu.options.length-1)
		}
		
		//add correct number of options
		for (var i=1; i<=ddNum; i++) {
			var curOption = document.createElement("option");
			var displayText = "";
			(i<10) ? displayText = "0" + i : displayText = i; // + ("... " + i)
			curOption.appendChild(document.createTextNode(displayText));
			curOption.setAttribute("value", displayText);
			
			if (i == curSelectedIndex) { //select day that was already selected
				curOption.setAttribute("selected", "selected");
			}
			
			tmpMenu.appendChild(curOption);
		}
		prevNum = ddNum;
	}
}

function showForm() {
	btn_request.className = "displayNone";
	request.className = "displayBlock";
	
	if (location.href.indexOf("#request") == -1) { location.href += "#request"; }
	
	name.focus();
}

function validateAlpha(strValue) {
	var objRegExp = /(^[a-zA-Z',.\-\ ]+$)/;
	return objRegExp.test(strValue);
}
function validateAlphaNum(strValue) {
	var objRegExp = /(^[a-zA-Z0-9'\-\., ]+$)/;
	return objRegExp.test(strValue);
}

function validateNum(strValue) {
	var objRegExp =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
	return objRegExp.test(strValue);
}

function validateEmail(strValue) {
	var objRegExp = /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/i;
	return objRegExp.test(strValue);
}

function validateZip( strValue ) {
	var objRegExp = (/(^\d{5,9}$)|(^\d{5}-\d{4}$)/);
	return objRegExp.test(strValue);
}

function validateForm() {
	if (name.parentNode.className != "valid") {
		document.getElementById("btn_submit").disabled = true;
		document.getElementById("btn_submit").src = btn_submit_disabled;
		return false;
	}
	if (address.parentNode.className != "valid") {
		document.getElementById("btn_submit").disabled = true;
		document.getElementById("btn_submit").src = btn_submit_disabled;
		return false;
	}
	if (city.parentNode.className != "valid") {
		document.getElementById("btn_submit").disabled = true;
		document.getElementById("btn_submit").src = btn_submit_disabled;
		return false;
	}
	if (state.parentNode.className != "valid") {
		document.getElementById("btn_submit").disabled = true;
		document.getElementById("btn_submit").src = btn_submit_disabled;
		return false;
	}
	if (zip.parentNode.className != "valid") {
		document.getElementById("btn_submit").disabled = true;
		document.getElementById("btn_submit").src = btn_submit_disabled;
		return false;
	}
	if (phone_area.parentNode.className != "valid") {
		document.getElementById("btn_submit").disabled = true;
		document.getElementById("btn_submit").src = btn_submit_disabled;
		return false;
	}
	if (dob_mm.parentNode.className != "valid") {
		document.getElementById("btn_submit").disabled = true;
		document.getElementById("btn_submit").src = btn_submit_disabled;
		return false;
	}
	
	document.getElementById("btn_submit").disabled = false;
	document.getElementById("btn_submit").src = btn_submit;
	document.getElementById("btn_submit").focus();
	return true;
}

window.onload = function() {
	btn_request = document.getElementById("btn_request");
	/*link_request = document.getElementById("link_request");
	link_request.onmouseover = function() {
		btn_request.src = "images/btn_request_over.gif";
	};
	link_request.onmouseout = function() {
		btn_request.src = "images/btn_request.gif";
	};*/
	
	request = document.getElementById("request");
	
	name = document.getElementById("name");
	name.focus();
	name.onfocus = function() {
		(validateAlpha(this.value)) ? this.parentNode.className = "valid" : this.parentNode.className = "nostatus";
	}
	name.onblur = function() {
		(validateAlpha(this.value)) ? this.parentNode.className = "valid" : this.parentNode.className = "invalid";
		validateForm();
	};
	
	address = document.getElementById("address");
	address.onfocus = function() {
		(validateAlphaNum(this.value)) ? this.parentNode.className = "valid" : this.parentNode.className = "nostatus";
	}
	address.onblur = function() {
		(validateAlphaNum(this.value)) ? this.parentNode.className = "valid" : this.parentNode.className = "invalid";
		validateForm();
	};
	
	city = document.getElementById("city");
	city.onfocus = function() {
		(validateAlpha(this.value)) ? this.parentNode.className = "valid" : this.parentNode.className = "nostatus";
	}
	city.onblur = function() {
		(validateAlpha(this.value)) ? this.parentNode.className = "valid" : this.parentNode.className = "invalid";
		validateForm();
	};
	
	state = document.getElementById("state");
	state.onfocus = function() {
		(this.selectedIndex > 0) ? this.parentNode.className = "valid" : this.parentNode.className = "nostatus";
	};
	state.onchange = state.onblur = function() {
		(this.selectedIndex > 0) ? this.parentNode.className = "valid" : this.parentNode.className = "invalid";
		validateForm();
	};
	
	zip = document.getElementById("zip");
	zip.onfocus = function() {
		(validateZip(this.value)) ? this.parentNode.className = "valid" : this.parentNode.className = "nostatus";
	};
	zip.onkeyup = function(ev) {
		var ev = ev || window.event; // gets the event in ie or ns
		var kCode = ev.keyCode || ev.which;
		
		if (kCode != 9 && kCode != 16) { //tab key, SHIFT keys
			if (this.value.length == 5) {
				phone_area.focus();
			}
		}
	};
	zip.onblur = function() {
		(validateZip(this.value)) ? this.parentNode.className = "valid" : this.parentNode.className = "invalid";
		validateForm();
	};
	
	phone_area = document.getElementById("phone_area");
	phone_prefix = document.getElementById("phone_prefix");
	phone_num = document.getElementById("phone_num");
	phone_area.onkeyup = phone_prefix.onkeyup = phone_num.onkeyup = function(ev) {
		var ev = ev || window.event; // gets the event in ie or ns
		var kCode = ev.keyCode || ev.which;
		
		if (kCode != 9 && kCode != 16) { //tab key, SHIFT keys
			switch (this.id) {
				case "phone_area":
					if (this.value.length == 3) {
						phone_prefix.focus();
					}
					break;
				case "phone_prefix":
					if (this.value.length == 3) {
						phone_num.focus();
					}
					break;
				case "phone_num":
					if (this.value.length == 4) {
						email.focus();
					}
					break;
			}
		}
	};
	
	phone_area.onfocus = phone_prefix.onfocus = phone_num.onfocus = function() {
		(validateNum(phone_area.value) && phone_area.value.length == 3 && validateNum(phone_prefix.value) && phone_prefix.value.length == 3 && validateNum(phone_num.value) && phone_num.value.length == 4) ? this.parentNode.className = "valid" : this.parentNode.className = "nostatus";
	};
	phone_area.onblur = phone_prefix.onblur = function() {
		if (!validateNum(this.value) || this.value.length != 3) {
			this.parentNode.className = "invalid";
		} else if ((validateNum(phone_area.value) && phone_area.value.length == 3) && (validateNum(phone_prefix.value) && phone_prefix.value.length == 3) && (validateNum(phone_num.value) && phone_num.value.length == 4)) {
			this.parentNode.className = "valid";
		}
		validateForm();
	};
	phone_num.onblur = function() {
		if (!validateNum(this.value) || this.value.length != 4) {
			this.parentNode.className = "invalid";
		} else {
			if (validateNum(phone_area.value) && phone_area.value.length == 3 && validateNum(phone_prefix.value) && phone_prefix.value.length == 3) {
				this.parentNode.className = "valid";
			} else {
				this.parentNode.className = "invalid";
			}
		}
		validateForm();
	};
	
	email = document.getElementById("email");
	email.onfocus = function() {
		(validateEmail(this.value)) ? this.parentNode.className = "valid" : this.parentNode.className = "nostatus";
	};
	email.onblur = function() {
		if (this.value.length > 0) {
			(validateEmail(this.value)) ? this.parentNode.className = "valid" : this.parentNode.className = "invalid";
		} else {
			this.parentNode.className = "nostatus";
		}
		validateForm();
	};
	
	dob_mm = document.getElementById("dob_mm");
	dob_dd = document.getElementById("dob_dd");
	dob_yyyy = document.getElementById("dob_yyyy");
	
	dob_mm.onfocus = dob_dd.onfocus = dob_yyyy.onfocus = function() {
		if (dob_mm.selectedIndex == 0 || dob_dd.selectedIndex == 0 || dob_yyyy.selectedIndex == 0) {
			if (this.parentNode.className == "valid" || this.parentNode.className == "invalid") {
				this.parentNode.className = "nostatus";
			}
		}
	};
	dob_mm.onchange = function() {
		updateDays(this,"dob_dd");
	};
	dob_yyyy.onchange = function() {
		(dob_mm.selectedIndex != 0 && dob_dd.selectedIndex != 0 && this.selectedIndex != 0) ? this.parentNode.className='valid' : this.parentNode.className='nostatus';
		validateForm();
	};
	dob_yyyy.onblur = function() {
		(dob_mm.selectedIndex != 0 && dob_dd.selectedIndex != 0 && this.selectedIndex != 0) ? this.parentNode.className='valid' : this.parentNode.className='invalid';
		validateForm();
	};
};