/***************************************************************
	Update: 	2007.2.12, Ye Wang
				Differs from the Sadlier-oxford site:
				- resetState;
				- resetCountry;
***************************************************************/


function IsValidEmail(val) {
	var iLen = val.length;
	if 	((iLen < 6) 
			|| (val.indexOf('@') < 1) 
			|| ((val.charAt(iLen - 3) != '.') && (val.charAt(iLen - 4) != '.') && (val.charAt(iLen - 5) != '.')) 
		) return false
	return true
}
/***************************************************************
	Form Validation: general
***************************************************************/
function formVal(){
	var msg = "";
	var typeList = "text,password,select-one,textarea";
	if (arguments.length > 0)  {
		var curForm = eval("document.forms[arguments[0]]");
	} else {
		var curForm = document.forms["form"];
	}
	for (var i=0; i<curForm.elements.length; i++){
		tag = curForm.elements[i];
		tag.value = trim(tag.value);
		if (typeList.indexOf(tag.type) >= 0 && tag.getAttribute('required') == 1 && tag.value == "") {
			msg = msg + "<li>" + tag.title + "</li>";
		};
		if (tag.name == "email" && tag.value.length != 0) {
			flag = IsValidEmail(tag.value);
			if (!flag) {
				msg = msg + "<li>Please enter a valid email address</li>";
			}
		};
		if (tag.type == "password" && tag.value.length > 0  && tag.value.length < 4) {
			msg = msg + "<li>" + "Password is too short: four-character minimum" + "</li>";
		} 
		if (tag.name.indexOf("conf") == 0 
			&& checkRetype(document.getElementById(tag.id)) == false) {
			msg = msg + "<li>" + tag.title  + " again</li>";
		}
	};
	if (msg != "") {
		document.getElementById('err').innerHTML = "These fields are required: <ul>" + msg + "</ul>";
		return false;
	} else {
		return true;
	}
}
/***************************************************************
	END OF FORM VALIDATION: GENERAL
***************************************************************/
function formValPwords () {
	var msg = ""; 
	if (arguments.length > 0)  {
		var curForm = eval("document.forms[arguments[0].name]");
	} else {
		var curForm = document.forms["form"];
	}
	for (var i=0; i<curForm.elements.length; i++) {
		tag = curForm.elements[i];
		tag.value = trim(tag.value);
		if (tag.type == "password" && tag.getAttribute('required') == 1 && tag.value == "") {
			msg = msg + "<li>" + tag.title + " </li>";
		}
	}
	if (msg == "" && curForm.elements["password2"].value != curForm.elements["password3"].value) {
		msg = msg + "<li>Confirm new password</li>";
	}
	if (msg != "") {
		document.getElementById('err').innerHTML = "These fields are required: " + msg;
		return false;
	} else {
		return true;
	}	
}
 
function formValPasswords() {
	var msg = "";
	var curForm = document.forms["reset"];
	for (var i = 0; i < curForm.elements.length; i++) {
		tag = curForm.elements[i];
		tag.value = trim(tag.value);
		if (tag.getAttribute("required") == 1) {
			if (tag.value == "") {
				msg = msg + "<li>" + tag.title + "</li>";
			} else if (tag.value.length > 0  && tag.value.length < 4) { 
				msg = msg + "<li>Password is too short: four-character minimum</li>";
			}
		}
	}
	if (msg == "" && curForm.elements["newPword"].value != curForm.elements["newPword2"].value) {
		msg = "<ul><li>Please confirm new password</li></ul>";
	} else if (msg != "") {
		msg = "These fields are required: <ul>" + msg + "</ul>";
	}
	if (msg != "") {
		document.getElementById("err").innerHTML = msg;
		return false;
	} else {
		return true;
	}
}

/******************************************************
	Trim functions:
*******************************************************/
function trim(str) {
	return str.replace(/^\s+|\s+$/g,"");
}
function lTrim(str) {
	return str.replace(/^\s+/,"");
}
function rTrim(str) {
	return str.replace(/\s+$/,"");
}
// compare two fields:
function checkRetype(obj) {
	var targetObj = document.getElementById(obj.id.replace("conf", ""));
	var curLabel = getLabel(obj);
	if (targetObj.value != obj.value) {
		curLabel.innerHTML = "Re-type " + targetObj.getAttribute("title") + " again:";
		curLabel.className = "label-confirm";
		return false;
	} else {
		curLabel.innerHTML = "Re-type " + targetObj.getAttribute("title") + ":";
		curLabel.className = "label-required";
		return true;
	}
}
function getLabel(obj) {	
	var prevNode = obj.previousSibling;
	while (prevNode.nodeType != 1 || prevNode.tagName != "LABEL") {
		prevNode = prevNode.previousSibling;
	}
	return prevNode;
} 
/***************************************************************
	Form Validation: Sign-Up
***************************************************************/
function formValSignup() {
	var msg = "";
	var curForm = document.forms["signUp"];
	var status = false;
	
	if (curForm.accessCode.value != "") {
		status = true;
	} 
	if (status == false) {
		for (var i=0; i<curForm.elements.length; i++) {
			tag = curForm.elements[i];
			if (tag.getAttribute('required') == 1 && tag.value == "") {
				msg = msg + "<li>" + tag.title + "</li>";
			}
			if (tag.name == "email" && tag.value.length != 0) {
				if (!IsValidEmail(tag.value)) {
					msg = msg + "<li>Please enter a valid email address</li>";
				} 
			};
		}
		if (msg == "") {
			status = true;
		}
	}
	if (status == false) {
		msg = "Please fill out either Step 1 or Step 2.<br />These fields are required: <ul><b>Step 1</b><li>Access Code</li></ul><br/><ul><b>Step 2</b>" + msg + "</ul>";
		document.getElementById("err").innerHTML = msg;
		return false;
	} else {
		return true;
	}
}
/***************************************************************
	END OF FORM VALIDATION: SIGN-UP
***************************************************************/

/* Math: Student */
function openActivity(arg) {
	var w = 640;
	var h = 550;
	total = arguments.length;
	if (total > 0) {
		urls = arguments[0];
		if (total >= 2) {
			w = arguments[1];
		}
		if (total >= 3) {
			h = arguments[2];
		}
		window.open(urls, '', 'toolbar=yes,menubar=no,scrollbars=yes,location=no,status=no,resizable=yes,width='+w+',height='+h)
	}
}

// 2006.8.31, Ye Wang
// Open Help/Instruction ;
var helpWindow;
function openHelp (str) {
	var intWidth = 240;
	var intHeight =  500;
	if (arguments.length >= 2) {
		intWidth = arguments[1];
	} 
	
	var intWindowWidth = (window.innerWidth) ? (window.innerWidth) : ( (document.body.clientWidth) ? document.body.clientWidth : 0 );
	var intWindowHeight = (window.innerHeight) ? (window.innerHeight) : ( (document.body.clientHeight) ? document.body.clientHeight : 0 );
	var intTop = Math.floor((intWindowHeight / 2) - (intHeight / 2));
	var intLeft = Math.floor((intWindowWidth / 2) - (intWidth / 2));
	var strProperties = "";

	// Set top and left so it doesnt go off screen
	intTop = 50;
	intLeft = 50;
	
	//intHeight = intWindowHeight;
	intHeight = screen.availHeight;
	intLeft = screen.availWidth - intWidth - 12;
	

	if (arguments.length >= 3) {
		intHeight = arguments[2];
	}
	
	intTop = 0;
	intRight = 0;
	
	// Set up properties
	strProperties = (strProperties + "width=" + intWidth + ",height=" + intHeight + ",top=" + intTop + ",left=" + intLeft + ",toolbar=no,scrollbars=yes,status=yes,resizable=yes");
	helpWindow = window.open(str, "helpWin", strProperties);
	if (window.focus) {helpWindow.focus()}
}


// print view for test answers
function printSAT(ch) { 
	urls = window.location.href;
	//urls = urls.substring(0, urls.indexOf("#"));
	temp = urls + "&ispf=1";
	newWin = window.open(temp, "sat", "menubar=yes,location=no,resizable=yes,scrollbars=yes,status=no,width=600,height=500;");
	newWin.print();
}
// 2007.4.24, Printer Version
function Print() {
	var urls = window.location.href;
	var flagStr = "ispf=0";
	var printStr = "ispf=1";
	var flagIndex = urls.indexOf(flagStr);
	if (flagIndex != -1) {
		urls = urls.replace(flagStr, "");
	}
	urls = urls.replace("/[&?]ispf=[^&]*/gim", "");
	if (urls.indexOf("&") > 0) {
		urls = urls + "&" + printStr;
	} else {
		urls = urls + "?" + printStr;
	}
	WinPrint = window.open(urls, "", "width=600,height=500,toolbar=no,resizable=yes,scrollbars=yes,location=no");
}

/***************************************************************
	Country & State reset
	2007.2.12, Ye Wang - differs from the national site!!!
***************************************************************/
usaID = 215;	 
function resetState(obj) {
	countryObj = obj;
	var stateObj = document.getElementById("state");
	var stateLabel = document.getElementById("stateLabel");
	var provinceObj = document.getElementById("province"); 
	var provinceLabel = document.getElementById("provinceLabel");
	
	var stateRow = document.getElementById("stateDIV");
	var provinceRow = document.getElementById("provinceDIV");
	 
	if (countryObj.value != usaID) {
		provinceObj.setAttribute("required", "1"); 
		provinceObj.removeAttribute("disabled");
		//provinceLabel.setAttribute("className", "label-required");
		provinceLabel.className = "label-required";
		provinceLabel.innerHTML = "Province: ";
		//stateLabel.setAttribute("class", "label");
		stateLabel.className = "label";
		stateObj.setAttribute("required", "0"); 
		stateObj.setAttribute("disabled", "disabled");
		/*
		stateRow.style.display = "none";
		provinceRow.style.display = "";
		*/
	} else { 
		provinceObj.setAttribute("required", "0");
		provinceObj.setAttribute("disabled", "disabled"); 
		//provinceLabel.setAttribute("className", "label");
		provinceLabel.className = "label";
		//provinceLabel.innerHTML = "";
		stateObj.setAttribute("required", "1");
		stateObj.removeAttribute("disabled");
		//stateLabel.setAttribute("class", "label-required");
		stateLabel.className = "label-required";
		stateLabel.innerHTML = "State: ";
		
		/*
		stateRow.style.display = "";
		provinceRow.style.display = "none";		
		*/
	}
}
function resetCountry(obj) {
	stateObj = obj;
	countryObj = document.getElementById("country");
	if (obj.selectedIndex != 0) {
		countryObj.value = usaID;
	}
}
/***************************************************************
	END OF Country & State reset
***************************************************************/

function Redirect (url) {
	if (url.indexOf(".cfm") > 0) {
		redirectID = document.getElementById("helpMenu");
		redirectID.style.visibility = "visible"; 	
		this.goTo = function () {
			window.location.href = url;
		}
	} else {
		return false;
	}
}
function togglePopup(id) {
	curID = document.getElementById(id);
	curState = curID.style.visibility;
	if (curState == "hidden") {
		curID.style.visibility = "visible";
	} else {
		curID.style.visibility = "hidden";
	}
}

