// determine if this is a results page
var isResults = new Boolean();
if (window.location.pathname.indexOf("-results") > -1) {
	isResults = true;
}

// set up div heights based on whether on results page
function setHeight(t) {
	var h = "390px";
	if (isResults == true) {
		h = "275px"; 
	}
	YAHOO.util.Dom.setStyle(t, "height", h);
}

// show/hide zip and city+state search forms
// based on last search type
function hideSearch(t) {
	YAHOO.util.Dom.setStyle(t, "display", "none"); 
}
function showSearch(t) {
	YAHOO.util.Dom.setStyle(t, "display", "block"); 
	setHeight(t);
}
function fadeInSearch(t) {
	YAHOO.util.Dom.setStyle(t, "display", "block"); 
	setHeight(t);
	YAHOO.util.Dom.setStyle(t, "opacity", "0");
	var anim = new YAHOO.util.Anim(t, { opacity: { to: 1 } }, .4, YAHOO.util.Easing.easeOutStrong);
	anim.animate(); 
}

// on page load, show appropriate search type based on previous search
// default type is by zip if no previous searches
function showHideSearches() {
	if (searchTypeJS == "zip") {
		showSearch("searchTypeZip");
		hideSearch("searchTypeCityState");
		var requiredFields = [["zipType","frm_zipcode"],"TnC"];
	} else if (searchTypeJS == "citystate") {
		showSearch("searchTypeCityState");
		hideSearch("searchTypeZip");
		var requiredFields = ["frm_city","frm_state","TnC"];
	}
}
YAHOO.util.Event.onDOMReady(showHideSearches);
	
// fade out, fade in, and set up req. fields when manually changing search type
function goToZipFx() {
	hideSearch("searchTypeCityState");
	fadeInSearch("searchTypeZip");
	setHeight("searchTypeZip")
	requiredFields = [["zipType","frm_zipcode"],"TnC"];
}
function goToCityStateFx() {
	hideSearch("searchTypeZip");
	fadeInSearch("searchTypeCityState");
	setHeight("searchTypeCityState")
	requiredFields = ["frm_city","frm_state","TnC"];
}

function trimString(sInString) {
	// strip leading
	sInString = sInString.replace( /^\s+/g, "");
	// strip trailing
	return sInString.replace( /\s+$/g, "");
}
function isFieldEmpty(fieldObj) {
	switch (fieldObj.type) {
		case "text":
			fieldObj.value = trimString(fieldObj.value);
			if (fieldObj.value == "") {
				return true;
			} else {
				return false;
			}
			break;
		case "checkbox":
			if (fieldObj.checked) {
				return false;
			} else {
				return true;
			}
			break;
		case "select-one":
			if (fieldObj.options[fieldObj.selectedIndex].value == "") {
				return true;
			} else {
				return false;
			}
			break;
		case "radio":
			if (fieldObj.checked) {
				return false;
			} else {
				return true;
			}
			break;
		default:
			return false;
			break;
	}
}
function isFormValid(formObj,reqFieldArr) {
	var allGood = false;
	for (var i = 0; i < reqFieldArr.length; i++) {
		//alert("Looking at " + reqFieldArr[i].toString());
		if (reqFieldArr[i][0] == "any") {
			for (var j = 0; j < reqFieldArr[i][1].length; j++) {
				//alert(formObj + "." + reqFieldArr[i][1][j] + ".checked");
				if (eval(formObj + "." + reqFieldArr[i][1][j] + ".checked")) {
					allGood = true;
					break;
				} else {
					allGood = false;
					if (j == reqFieldArr[i][1].length - 1) {
						eval(formObj + "." + reqFieldArr[i][1][0] + ".focus()");
						alert(eval(formObj + "." + reqFieldArr[i][1][j] + ".title"));
						return allGood;
					}
				}
			}
		}
		else if (reqFieldArr[i][0] == "emailType") {
			var thisField = eval(formObj + "." + reqFieldArr[i][1]);
			if (!isFieldEmpty(thisField) && thisField.value.indexOf("@") != -1 && thisField.value.indexOf("@") != 0 && thisField.value.indexOf("@") != (thisField.value.length - 1)  && thisField.value.indexOf(".") != -1 && thisField.value.indexOf(".") != 0 && thisField.value.indexOf(".") < (thisField.value.length - 2)) {
				allGood = true;
			} else {
				thisField.focus();
				alert(thisField.title);
				allGood = false;
				return allGood;
			}
		}
		else if (reqFieldArr[i][0] == "numberType") {
			var thisField = eval(formObj + "." + reqFieldArr[i][1]);
			if (!isFieldEmpty(thisField) && !isNaN(thisField.value)) {
				allGood = true;
			} else {
				thisField.focus();
				thisField.value = "";
				alert(thisField.title);
				allGood = false;
				return allGood;
			}
		}
		else if (reqFieldArr[i][0] == "zipType") {
			var thisField = eval(formObj + "." + reqFieldArr[i][1]);
			if (!isFieldEmpty(thisField) && !isNaN(thisField.value) && thisField.value.length == 5) {
				allGood = true;
			} else {
				thisField.focus();
				thisField.value = "";
				alert(thisField.title);
				allGood = false;
				return allGood;
			}
		}
		else 
		{
			//alert("Looking at " + reqFieldArr[i]);
			var thisField = eval(formObj + "." + reqFieldArr[i]);
			//alert(thisField.name + " ia a " + thisField.type);
			if (thisField[0] != null && thisField[0].type == "radio") {
				//alert(reqFieldArr[i] + " is a collection of radio buttons");
				for (var j = 0; j < thisField.length; j++) {
					if (!isFieldEmpty(thisField[j])) {
						allGood = true;
						break;
					}
					if (j == thisField.length - 1 && isFieldEmpty(thisField[j])) {
						thisField[0].focus();
						alert(thisField[j].title);
						allGood = false;
						return allGood;
					}
				}
			} else {
				if (isFieldEmpty(thisField)) {
					thisField.focus();
					alert(thisField.title);
					allGood = false;
					return allGood;
				} else {
					allGood = true;
				}
			}
		}
	}
	return allGood;
}
function trySubmit(frmObj) {
	if (isFormValid("document." + frmObj.name,requiredFields)) {
		frmObj.action = thisAction;
		frmObj.submit();
	}
}
function formReset(frmObj) {
	frmObj.reset();
}
function openTerms() {
	popLoc = "/resources/dermatologist-locator-terms.jsp";
	popProp = "toolbar=yes,location=yes,directories=no,status=no,menubar=yes,resizable=yes,scrollbars=yes,width=790,height=550";
	var popUp = window.open(popLoc,"findADermTerms",popProp);
}
