// javascript document

// windows ie style sheet
var user = navigator.userAgent;
if(user.indexOf("MSIE") != -1) {
	document.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"styles_ie.css\" />");	
}

// preload images from body onload args
function preloadImages() {
	var arg_array = arguments;
	var img_array = [];
	for (var i = 0; i < arg_array.length; i++) {
		img_array[i] = new Image();
		img_array[i].src = arg_array[i];
	}
}

// request object for ajax queries
function ajaxRequest() {
	var request = null;
	// code for all new browsers
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest();
	// code for ie5 and ie6
	} else if (window.ActiveXObject) {
		request = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return (request === null) ? false : request;
}

// write qry updates to layer
/*************************************************************************
  This code is from Dynamic Web Coding at http://www.dyn-web.com/
  See Terms of Use at http://www.dyn-web.com/bus/terms.html
  Permission granted to use this code 
  as long as this entire notice is included.
*************************************************************************/

// slightly modified by jb
function changeContent(id, shtml) {
	if (document.getElementById || document.all) {
		var el = document.getElementById? document.getElementById(id): document.all[id];
		if (el && typeof el.innerHTML !== "undefined") {
			el.innerHTML = shtml;
		}
	}
}

// focus the first text input field
function formFocus() {
	var numElements = document.forms[0].elements.length;
	for(i=0; i<numElements; i++) {
		if(document.forms[0].elements[i].type == "text") {
			document.forms[0].elements[i].focus();
			break;
		}
	}
}

// popup info window
function popUp(page) {
var features = "width=600,height=400,resizable,status,scrollbars,screenX=30,screenY=30,top=30,left=30";
	window.open(page,'popUp',features);
    return false;
}

function validEventSearch() {
	var a = document.eventsearch.program_id.selectedIndex;
	var b = document.eventsearch.level_id.selectedIndex;
	var c = document.eventsearch.grade_id.selectedIndex;
	var d = document.eventsearch.module_id[0].checked;
	if(d) {
		if(a == 0 || b == 0 || c == 0) {
			alert("Please choose program, level, and grade.");
			return false;
		}
	}
	return true;
}

function elOnly(m) {
	var a = document.eventsearch.program_id;
	var b = document.eventsearch.level_id;
	var c = document.eventsearch.grade_id;
	if(m == 98) {
		a.selectedIndex = 0;
		a.setAttribute("disabled","disabled");
		b.selectedIndex = 0;
		b.setAttribute("disabled","disabled");
		c.selectedIndex = 0;
		c.setAttribute("disabled","disabled");
	} else {
		a.removeAttribute("disabled");
		b.removeAttribute("disabled");
		c.removeAttribute("disabled");
	}
}

// show program, level and grade choices only if teacher institute is selected
function activeProgram(e) {
	var a = document.forms[0].program_id;
	var b = document.forms[0].level_id;
	var c = document.forms[0].grade_id;
	if(e == 1) {
		a.removeAttribute("disabled");
		b.removeAttribute("disabled");
		c.removeAttribute("disabled");
	} else {
		a.selectedIndex = 0;
		a.setAttribute("disabled","disabled");
		b.selectedIndex = 0;
		b.setAttribute("disabled","disabled");
		c.selectedIndex = 0;
		c.setAttribute("disabled","disabled");
	}
}

// valid search for open events
function openEvents() {
	var a = document.forms[0].type_id.selectedIndex;
	// gotta make sure the value really is teacher institute in case fmp sort doesn't work
	var b = document.forms[0].type_id[a].value;	
	var c = document.forms[0].program_id.selectedIndex;
	var d = document.forms[0].level_id.selectedIndex;
	var e = document.forms[0].grade_id.selectedIndex;
	var dialog = "";
	if(a == 0) {
		dialog += "\n- Event type";
	}
	if(b == 1 && (c == 0 || d == 0 || e == 0)) {
		dialog += "\n- Program\n- Level\n- Grade\n (if event type is teacher institute)";
	}
	if(dialog != "") {
		alert("The following field(s) require(s) valid entry:" + dialog);
		return false;
	}
	return true;
}

function openEventsN() {
	var a = document.forms[0].type_id.selectedIndex;
	if(a == "") {
		alert("Please select an event type. All other fields are optional.");
		return false;
	}
	return true;
}

// valid search for schedule
function schedSearch() {
	var a = document.forms[0].subprovider_id.selectedIndex;
	var b = document.forms[0].type_id.selectedIndex;
	var c = document.forms[0].program_id.selectedIndex;
	var d = document.forms[0].level_id.selectedIndex;
	var e = document.forms[0].grade_id.selectedIndex;
	var f = document.forms[0].viewall.checked;
	if ((a == 0 && b == 0 && c == 0 && d == 0 && e == 0) && !f) {
		alert("Please make a selection before searching.");
		return false;
	}
	// grab name values for lasso display
	var g = a != 0? document.forms[0].subprovider_id[a].text : "";
	var h = b != 0? document.forms[0].type_id[b].text : "";
	var j = c != 0? document.forms[0].program_id[c].text : "";
	var k = d != 0? document.forms[0].level_id[d].text : "";
	var l = e != 0? document.forms[0].grade_id[e].text : "";
	var m = document.forms[0].schedsearchsubmit;
	document.forms[0].sn.value = g;
	document.forms[0].tn.value = h;
	document.forms[0].pn.value = j;
	document.forms[0].ln.value = k;
	document.forms[0].gn.value = l;
	changeContent("schedsearchprogress", progressOn);
	m.setAttribute("disabled", "disabled");
	return true;
}

// show programs and levels only if teacher institute type selected
function programLevelSelect(typeid) {
	var a = document.schedsearch.program_id;
	var b = document.schedsearch.level_id;
	var c = document.schedsearch.grade_id;
	if (typeid == 1) {
		a.removeAttribute("disabled");
		b.removeAttribute("disabled");
		c.removeAttribute("disabled");
	} else {
		a.selectedIndex = 0;
		a.setAttribute("disabled","disabled");
		b.selectedIndex = 0;
		b.setAttribute("disabled","disabled");
		c.selectedIndex = 0;
		c.setAttribute("disabled","disabled");
	}
}

// global progress loader display
var progressOn = "<img src=\"images/ajax-loader.gif\" alt=\"loading\" width=\"16\" height=\"16\" />";
var progressOff = "<img src=\"images/transpixel.gif\" alt=\" \" width=\"16\" height=\"16\" />";

// populate program level grade selects on schedule search
function reqProgramLevelGrade(type_id) {
	var a = document.forms[0].program_id;
	var b = document.forms[0].level_id;
	var c = document.forms[0].grade_id;
	var plg_array = [a, b, c];
	var i = 0;
	var r = Math.round(Math.random() * 10000000);
	var queryresults;
	var queryresults_array = [];
	if (type_id == 1) {
		if (a.length == 1) {
			changeContent("plgprogress", progressOn);
			var request = ajaxRequest();
			if (request) {
				request.onreadystatechange = function() {
					if (request.readyState === 4) {
						if (request.status === 200) {
							queryresults = request.responseText;
							queryresults_array = queryresults.split("|");
							changeContent("td_programid", queryresults_array[0]);
							changeContent("td_levelid", queryresults_array[1]);
							changeContent("td_gradeid", queryresults_array[2]);
							changeContent("plgprogress", progressOff);
						} else {
							changeContent("plgprogress", progressOff);
							alert("There was a problem retrieving the data:\n" + request.statusText + request.responseText);
						}
					}
				};
				var action_params = "";
				action_params += "?r=" + escape(r);
				request.open("GET", "qry_programlevelgrade.lasso" + action_params, true); // true doesn't wait for server response
				request.send(null);
			} else {
				changeContent("plgprogress", progressOff);
				alert("Sorry, it appears your browser is unable to support dynamic requests.");
			}
		} else {
			for (i = 0; i < plg_array.length; i++) {
				plg_array[i].selectedIndex = 0;
				plg_array[i].removeAttribute("disabled");
			}
		}
	} else {
		for (i = 0; i < plg_array.length; i++) {
			plg_array[i].selectedIndex = 0;
			plg_array[i].setAttribute("disabled","disabled");
		}
	}
}
