window.onload = init;
function init()
{
	var counter = 0;
	var setFocus = false;
	while (counter < document.getElementsByTagName('input').length)
	{
		if (document.getElementsByTagName('input')[counter] &&  document.getElementsByTagName('input')[counter].className != "hidden")
		{
			document.getElementsByTagName('input')[counter].focus();
			setFocus = true;
			break;
		}
		counter++;
	}
	if (!setFocus)
	{
		if (document.getElementsByTagName('select')[0])
		{
			document.getElementsByTagName('select')[0].focus();
		}
	}
	setPopup();
	if (document.getElementById('filter')) {
		initFilter();
	}
	if (document.getElementById('paymentPage')) {
		YAHOO.util.Event.addListener('participantNumber', 'blur', function() {
			calcTotal();
		});
		YAHOO.util.Event.addListener('courseDate', 'blur', function() {
			calcTotal();
		});
	}
}
function calcTotal() {
	var coursePrice = document.getElementById('courseDate').value.split(":");
	document.getElementById('totalAmount').value = document.getElementById('participantNumber').value * coursePrice[0];
}
function initFilter() {
	YAHOO.util.Event.addListener('filteredBy', 'change', filteredBy);
}
var FILTEROBJ;
function filteredBy() {
	var divObj = document.getElementsByTagName('div');
	for (i=0; i<divObj.length; i++) {
		if (YAHOO.util.Dom.hasClass(divObj[i], 'ST')) {
			if (YAHOO.util.Dom.hasClass(divObj[i], 'accessAid')) {
				YAHOO.util.Dom.removeClass(divObj[i], 'accessAid');
			}
		}
	}
	for (ii=0; ii<divObj.length; ii++) {
		if (YAHOO.util.Dom.hasClass(divObj[ii], 'Month')) {
			if (YAHOO.util.Dom.hasClass(divObj[ii], 'accessAid')) {
				YAHOO.util.Dom.removeClass(divObj[ii], 'accessAid');
			}
		}
	}
	for (iii=0; iii<divObj.length; iii++) {
		if (YAHOO.util.Dom.hasClass(divObj[iii], 'Location')) {
			if (YAHOO.util.Dom.hasClass(divObj[iii], 'accessAid')) {
				YAHOO.util.Dom.removeClass(divObj[iii], 'accessAid');
			}
		}
	}
	for (i=1; i<4; i++) {
		if (!YAHOO.util.Dom.hasClass('filterBy'+i, 'accessAid')) {
			YAHOO.util.Dom.addClass('filterBy'+i, 'accessAid');
		}
	}
	var filteredBy = document.getElementById('filteredBy').value;
	YAHOO.util.Dom.removeClass(filteredBy, 'accessAid');
	if (FILTEROBJ != '') {
		YAHOO.util.Event.removeListener(FILTEROBJ, 'change', filtering);
	}
	switch (filteredBy) {
		case 'filterBy1' : document.getElementById('selection1').options[0].selected = 'selected'; YAHOO.util.Event.addListener('selection1', 'change', filtering); break;
		case 'filterBy2' : document.getElementById('selection2').options[0].selected = 'selected'; YAHOO.util.Event.addListener('selection2', 'change', filtering); break;
		case 'filterBy3' : document.getElementById('selection3').options[0].selected = 'selected'; YAHOO.util.Event.addListener('selection3', 'change', filtering); break;
	}
	FILTEROBJ = filteredBy;
}
function filtering() {
	if (this.parentNode.id == 'filterBy1') {
		filter1(this);
	}
	if (this.parentNode.id == 'filterBy2') {
		filter2(this);
		resetHeader();
	}
	if (this.parentNode.id == 'filterBy3') {
		filter3(this);
		resetHeader();
	}
}
function resetHeader() {
	var divObj = document.getElementsByTagName('div');
	for (var iii=0; iii<divObj.length; iii++) {
		if (YAHOO.util.Dom.hasClass(divObj[iii], 'ST')) {
			YAHOO.util.Dom.removeClass(divObj[iii], 'accessAid');
		}
	}
	for (var i=0; i<divObj.length; i++) {
		if (YAHOO.util.Dom.hasClass(divObj[i], 'ST')) {
			var countAccessAid = 0;
			var countAll = 0;
			for (var ii=0; ii<divObj[i].childNodes.length; ii++) {
				if (YAHOO.util.Dom.hasClass(divObj[i].childNodes[ii], 'Hotel') && YAHOO.util.Dom.hasClass(divObj[i].childNodes[ii], 'Month') && YAHOO.util.Dom.hasClass(divObj[i].childNodes[ii], 'Location')) {
					countAll++;
					if (YAHOO.util.Dom.hasClass(divObj[i].childNodes[ii], 'accessAid')) {
						countAccessAid++;
					}
				}
			}
			if (countAccessAid == countAll) {
				YAHOO.util.Dom.addClass(divObj[i], 'accessAid');
			}
		}
	}
}
function filter1(obj1) {
	var divObj = document.getElementsByTagName('div');
	for (ii=0; ii<divObj.length; ii++) {
		if (YAHOO.util.Dom.hasClass(divObj[ii], 'Month')) {
			if (!YAHOO.util.Dom.hasClass(divObj[ii], 'accessAid')) {
				YAHOO.util.Dom.removeClass(divObj[ii], 'accessAid');
			}
		}
	}
	for (iii=0; iii<divObj.length; iii++) {
		if (YAHOO.util.Dom.hasClass(divObj[iii], 'Location')) {
			if (YAHOO.util.Dom.hasClass(divObj[iii], 'accessAid')) {
				YAHOO.util.Dom.removeClass(divObj[iii], 'accessAid');
			}
		}
	}
	for (i=0; i<divObj.length; i++) {
		if (YAHOO.util.Dom.hasClass(divObj[i], 'ST')) {
			if (!YAHOO.util.Dom.hasClass(divObj[i], 'accessAid')) {
				YAHOO.util.Dom.addClass(divObj[i], 'accessAid');
			}
			if (YAHOO.util.Dom.hasClass(divObj[i], obj1.value)) {
				YAHOO.util.Dom.removeClass(divObj[i], 'accessAid');
			}
		}
	}
}
function filter2(obj1) {
	var divObj = document.getElementsByTagName('div');
	for (i=0; i<divObj.length; i++) {
		if (YAHOO.util.Dom.hasClass(divObj[i], 'ST')) {
			if (YAHOO.util.Dom.hasClass(divObj[i], 'accessAid')) {
				YAHOO.util.Dom.removeClass(divObj[i], 'accessAid');
			}
		}
	}
	for (iii=0; iii<divObj.length; iii++) {
		if (YAHOO.util.Dom.hasClass(divObj[iii], 'Location')) {
			if (YAHOO.util.Dom.hasClass(divObj[iii], 'accessAid')) {
				YAHOO.util.Dom.removeClass(divObj[iii], 'accessAid');
			}
		}
	}
	for (ii=0; ii<divObj.length; ii++) {
		if (YAHOO.util.Dom.hasClass(divObj[ii], 'Month')) {
			if (!YAHOO.util.Dom.hasClass(divObj[ii], 'accessAid')) {
				YAHOO.util.Dom.addClass(divObj[ii], 'accessAid');
			}
			if (YAHOO.util.Dom.hasClass(divObj[ii], obj1.value)) {
				YAHOO.util.Dom.removeClass(divObj[ii], 'accessAid');
			}
		}
	}
}
function filter3(obj1) {
	var divObj = document.getElementsByTagName('div');
	for (i=0; i<divObj.length; i++) {
		if (YAHOO.util.Dom.hasClass(divObj[i], 'ST')) {
			if (YAHOO.util.Dom.hasClass(divObj[i], 'accessAid')) {
				YAHOO.util.Dom.removeClass(divObj[i], 'accessAid');
			}
		}
	}
	for (ii=0; ii<divObj.length; ii++) {
		if (YAHOO.util.Dom.hasClass(divObj[ii], 'Month')) {
			if (YAHOO.util.Dom.hasClass(divObj[ii], 'accessAid')) {
				YAHOO.util.Dom.removeClass(divObj[ii], 'accessAid');
			}
		}
	}
	for (iii=0; iii<divObj.length; iii++) {
		if (YAHOO.util.Dom.hasClass(divObj[iii], 'Location')) {
			if (!YAHOO.util.Dom.hasClass(divObj[iii], 'accessAid')) {
				YAHOO.util.Dom.addClass(divObj[iii], 'accessAid');
			}
			if (YAHOO.util.Dom.hasClass(divObj[iii], obj1.value)) {
				YAHOO.util.Dom.removeClass(divObj[iii], 'accessAid');
			}
		}
	}
}
var fieldError = 0;
var globalFormObj;
function validateForm(formObj)
{
	document.getElementById("button-submit").setAttribute("class", "input-button-submit-selected");
	document.getElementById("button-submit").setAttribute("className", "input-button-submit-selected");
	globalFormObj = formObj;
	fieldError = 0;
	var counter = 0;
	while (counter < document.getElementsByTagName('input').length)
	{
		if (document.getElementsByTagName('input')[counter] &&  document.getElementsByTagName('input')[counter].className != "hidden")
		{		document.getElementsByTagName('input')[counter].setAttribute('autocomplete','off'); 
			document.getElementsByTagName('input')[counter].focus();
			document.getElementsByTagName('input')[counter].blur();
		}
		counter++;
	}
	counter = 0;
	while (counter < document.getElementsByTagName('select').length)
	{
		document.getElementsByTagName('select')[counter].setAttribute('autocomplete','off'); 
		document.getElementsByTagName('select')[counter].focus();
		document.getElementsByTagName('select')[counter].blur();
		counter++;
	}
	setTimeout(processForm, 2000);
	return false;
}
function processForm()
{
	if (fieldError == 0)
	{
		globalFormObj.onsubmit="";
		globalFormObj.action+=document.getElementById("form-url").value;
		globalFormObj.submit();
	}
	else
	{
		document.getElementById("button-submit").setAttribute("class", "input-button-submit");
		document.getElementById("button-submit").setAttribute("className", "input-button-submit");
	}
}
function validateField(thisObj)
{
	clearError(thisObj);
	for(var i=1; i<validateField.arguments.length; i++)
	{
		switch(validateField.arguments[i])
		{
			case "required" : checkRequired(thisObj);				break;
			case "selected" : checkSelected(thisObj);				break;
			case "camelCase" : checkCamelCase(thisObj);				break;
			case "firstLowerCase" : checkFirstLowerCase(thisObj);	break;
			case "email" : checkEmail(thisObj);						break;
			case "phone" : checkPhone(thisObj);						break;
			case "state" : checkState(thisObj);						break;
			case "zip" : checkZip(thisObj);							break;
			case "clientID" : checkClientID(thisObj);				break;
			case "userid" : checkUserID(thisObj);					break;
			case "password" : checkPassword(thisObj);				break;
			case "password2" : checkPassword2(thisObj);				break;
			case "url" : checkURL(thisObj);							break;
			case "date" : checkDate(thisObj);						break;
			case "num" : checkNumberOnly(thisObj);					break;
			case "creditcard" : checkCreditCard(thisObj);			break;
			case "cw2" : checkCW2(thisObj);							break;
			case "monthYear" : checkMonthYear(thisObj);				break;
			case "totalAmount" : checkTotalAmount(thisObj);			break;
			case "participantNumber" : checkParticipantNumber(thisObj);			break;
			case "participant" : checkParticipant(thisObj);			break;
		}
	}
}
function clearError(thisObj)
{
	for(var i=0; i<thisObj.parentNode.childNodes.length; i++)
	{
		if(thisObj.parentNode.childNodes[i].nodeName == "SPAN")
		{
			thisObj.parentNode.removeChild(thisObj.parentNode.childNodes[i]);
		}
	}
}
function displayError(thisObj, msg)
{
	clearError(thisObj);
	newElem = document.createElement("span");
	newElem.appendChild(document.createTextNode(msg));
	newElem.setAttribute("class", "error");
	newElem.setAttribute("className", "error");
	thisObj.parentNode.appendChild(newElem);
	fieldError++;
}
function checkRequired(thisObj)
{
	var str = thisObj.value;
	str = str.replace(/\s/g,"");
	if(str=="")
	{
		thisObj.value = thisObj.value.replace(/\s/g,"");
		displayError(thisObj, "Required");
	}
}
function checkSelected(thisObj)
{
	if(thisObj.value=="N/A")
	{
		displayError(thisObj, "Required");
	}
}
function checkCamelCase(thisObj)
{
	var str = "";
	for(var i=0; i<thisObj.value.length; i++)
	{
		if(thisObj.value.charAt(i) == " " || thisObj.value.charAt(i) == "_")
		{
			if(thisObj.value.charAt(i+1) != " " && thisObj.value.charAt(i) != "_")
			{
				str+=thisObj.value.charAt(i+1).toUpperCase();
				i++;
			}
		}
		else
		{
			str += (str!="") ? thisObj.value.charAt(i) : thisObj.value.charAt(i).toUpperCase();
		}
	}
	thisObj.value = str;
}
function checkFirstLowerCase(thisObj)
{
	var str = "";
	str = thisObj.value.charAt(0).toLowerCase()+thisObj.value.substr(1,thisObj.value.length-1);
	thisObj.value = str;
}
function checkCreditCard(thisObj)
{
	thisObj.value = thisObj.value.replace(/\D/g,"");
	if(thisObj.value.length < 15 || thisObj.value.length > 16)
	{
		displayError(thisObj, "Invalid");
	}
	if(thisObj.value.charAt(0) == 3 || thisObj.value.charAt(0) == 6) {
		displayError(thisObj, "Visa and Mastercard only");
	}
}
function checkTotalAmount(thisObj)
{
	if(thisObj.value == 0) {
		displayError(thisObj, "Invalid Amount");
	}
}
function checkParticipant(thisObj)
{
	thisObj.value = thisObj.value.replace(/\D/g,"");
	if(thisObj.value.length == 0)
	{
		displayError(thisObj, "Invalid");
	}
}
function checkParticipantNumber(thisObj)
{
	thisObj.value = thisObj.value.replace(/\D/g,"");
	if(thisObj.value.length == 0)
	{
		displayError(thisObj, "Invalid");
	}
	if(thisObj.value == 0) {
		displayError(thisObj, "Invalid Number");
	}
}
function checkCW2(thisObj)
{
	thisObj.value = thisObj.value.replace(/\D/g,"");
	if(thisObj.value.length < 3 || thisObj.value.length > 4)
	{
		displayError(thisObj, "Invalid");
	}
}
function checkNumberOnly(thisObj)
{
	var oldLength = thisObj.value.length;
	var newText = thisObj.value.replace(/\D/g,"");
	if(oldLength != newText.length)
	{
		displayError(thisObj, "Numbers Only");
	}
}
function checkEmail(thisObj)
{
	thisObj.value = thisObj.value.replace(/\s/g,"");
	var re = /^(\w|\.)+@(((\w|\.|\-)+(\w)+)|(\w+))\.(\w)+$/;
	if(!re.test(thisObj.value))
	{
		displayError(thisObj, "Invalid");
	}
}
function checkPhone(thisObj)
{
	thisObj.value = thisObj.value.replace(/\D/g,"");
	thisObj.value = thisObj.value.replace(/^1/,"");
	if(thisObj.value.length != 10 && thisObj.value.length != 0)
	{
		displayError(thisObj, "Invalid");
	}
	else if (thisObj.value.length != 0)
	{
		thisObj.value = "("+thisObj.value.substr(0,3)+") "+thisObj.value.substr(3,3)+"-"+thisObj.value.substr(6,4);
	}
}
function checkState(thisObj)
{
	var re = /^([a-z]{2})$/i;
	if(!re.test(thisObj.value))
	{
		displayError(thisObj, "Invalid");
	}
	thisObj.value = thisObj.value.toUpperCase();
}
function checkZip(thisObj)
{
	thisObj.value = thisObj.value.replace(/\D/g,"");
	if(thisObj.value.length != 5 && thisObj.value.length != 9)
	{
		displayError(thisObj, "Invalid");
	}
	else if(thisObj.value.length == 9)
	{
		thisObj.value = thisObj.value.substr(0,5)+"-"+thisObj.value.substr(5,8);
	}
}
function checkClientID(thisObj)
{
	var re = /^([a-z]{2}\d{4})|([a-z]{3,4}\d{3})$/i;
	if(!re.test(thisObj.value))
	{
		displayError(thisObj, "Invalid");
	}
}
function checkUserID(thisObj)
{
	var re = /^\w{5,15}$/;
	if(!re.test(thisObj.value))
	{
		displayError(thisObj, "5-15 characters");
	}
}
function checkPassword(thisObj)
{
	var re = /^\S{8,20}$/;
	if(!re.test(thisObj.value))
	{
		displayError(thisObj, "8-20 characters");
	}
}
function checkPassword2(thisObj)
{
	var passwordObj = document.getElementById("Password");
	if(passwordObj.value != thisObj.value)
	{
		displayError(thisObj, "Invalid");
	}
}
function checkURL(thisObj)
{
	var str = thisObj.value;
	var reProtocol = /^((http:\/\/)|(https:\/\/))/;
	var reWWW = /www\./;
	var reTLD = /((\.com|\.net|\.org|\.gov)$)|(\.com\/|\.net\/|\.org\/|\.gov\/)/;
	var reStr = /^\/|\.|&|=|\?|\w$/;
	str = str.replace(reProtocol,"");
	str = str.replace(reWWW,"");
	str = str.replace(reTLD,"");
	if(!reStr.test(str))
	{
		displayError(thisObj, "Invalid characters");
	}
	else if(!reTLD.test(thisObj.value))
	{
		displayError(thisObj, "Invalid");
	}
	else if(!reProtocol.test(thisObj.value))
	{
		if(!reWWW.test(thisObj.value))
		{
			thisObj.value = "http://www."+thisObj.value;
		}
		else
		{
			thisObj.value = "http://"+thisObj.value;
		}
	}
}
function checkDate(thisObj)
{
	var re = /^(\d{2})-(\d{2})-(\d{4})$/;
	if (thisObj.value != "")
	{
		thisObj.value = thisObj.value.replace(/[\.\/\\]/g,"-");
		thisObj.value = thisObj.value.replace(/[^\d-]/g,"");
		thisObj.value = thisObj.value.replace(/\D/g,"-");
		var dateArray = thisObj.value.split(/-/);
		thisObj.value = "";
		for (var i=0; i<dateArray.length; i++)
		{
			if (dateArray[i].length == 1 && i == 2)
			{
				thisObj.value += "200" + dateArray[i];
			}
			else if (dateArray[i].length == 2 && i == 2)
			{
				thisObj.value += "20" + dateArray[i];
			}
			else if (dateArray[i].length == 1)
			{
				thisObj.value += "0" + dateArray[i];
			}
			else
			{
				thisObj.value += dateArray[i];
			}
			if (i != 2)
			{
				thisObj.value += "-";
			}
		}
	}
	if(!re.test(thisObj.value))
	{
		displayError(thisObj, "Invalid. mm-dd-yyyy");
	}
}
function checkMonthYear(thisObj)
{
	var re = /^(\d{2})\/(\d{2})$/;
	if (thisObj.value != "")
	{
		thisObj.value = thisObj.value.replace(/[\.\/\\]/g,"-");
		thisObj.value = thisObj.value.replace(/[^\d-]/g,"");
		thisObj.value = thisObj.value.replace(/\D/g,"-");
		var dateArray = thisObj.value.split(/-/);
		thisObj.value = "";
		for (var i=0; i<dateArray.length; i++)
		{
			if (dateArray[i].length == 1)
			{
				thisObj.value += "0" + dateArray[i];
			}
			else
			{
				thisObj.value += dateArray[i];
			}
		}
		thisObj.value = thisObj.value.substr(0,2)+"/"+thisObj.value.substr(2,2);
	}
	if(!re.test(thisObj.value))
	{
		displayError(thisObj, "Invalid. mm/yy");
	}
}

function setPopup()
{
	var linkObj = document.getElementsByTagName('a');
	for (var i=0; i<linkObj.length; i++)
	{
		if (linkObj[i].className == "popup")
		{
			linkObj[i].setAttribute("target", "_blank");
		}
	}
}
