		// style webpart titles until removal
		function styleWebPartHeaders() {
			if(document.getElementById("mainLeft")) {
			    var theCells = document.getElementById("mainLeft").getElementsByTagName("td");
			    for(i = 0; i < theCells.length; i++) {
				    if(theCells[i].id.indexOf("WebPartTitle_gwp") > -1) {
					    theCells[i].className = "webPartTitle";
				    }
			    }
			}
			if(document.getElementById("mainRight")) {
			    theCells = document.getElementById("mainRight").getElementsByTagName("td");
			    for(i = 0; i < theCells.length; i++) {
				    if(theCells[i].id.indexOf("WebPartTitle_gwp") > -1) {
					    theCells[i].className = "webPartTitle";
				    }
			    }
			}
		}
		
//		//temp save button pos on grade mapping
//		function positionSaveButton(el) {
//			findPosX("vertNavAllLink")
//			findPosY("vertNavAllLink")
//		}
		
		// support multiple load events on a page
		function addLoadEvent(func) {
			var oldOnLoad = window.onload;
			if (typeof window.onload != 'function') {
				window.onload = func;
			}
  			else {
    			window.onload = function() {
					if (oldOnLoad) {
						oldOnLoad();
					}
				func();
    			}
  			}
		}
		addLoadEvent(styleWebPartHeaders);
		addLoadEvent(editableTextBoxes);
		/* alternate call method
		addLoadEvent(function() {
			//more code to run on page load
		});
		*/


//******************************************************************
// find position of HTML element on a page
//******************************************************************
// X coords
function findPosX(obj)  {
	var curleft = 0;
	if(obj.offsetParent) 
		while(1) {
			curleft += obj.offsetLeft;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.x)
		curleft += obj.x;
	return curleft;
  }
// X coords
function findPosY(obj) {
	var curtop = 0;
	if(obj.offsetParent)
		while(1) {
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;
	return curtop;
}

// show/hide class list menu
function menuShowHide(el) {
    var menuStyle = document.getElementById(el).style;
    if(menuStyle.display == "block")
        menuStyle.display = "none";
    else {
		if(navigator.userAgent.indexOf("MSIE")) {
			menuStyle.top = "225";
		}
        menuStyle.display = "block";
    }
}

// Course Setup Activity Page Scripts
function editableTextBoxes() {
	if(!document.getElementById("editTable")) {
		return;
	}
	var textInputs = document.getElementById("editTable").getElementsByTagName("input");
	
	for(i = 0; i < textInputs.length; i++) {
		if(textInputs[i].type == "text") {
			textInputs[i].onfocus = function() { this.className = "txtFieldEditable"; }
			textInputs[i].onblur = function() { this.className = "txtField"; }
			textInputs[i].onclick = function() { this.className = "txtFieldEditable"; this.select(); }
		}
	}
}

// Show Alert
function showAlert(oDiv, txtBox, msgType) {
	if (document.getElementById(oDiv)) return;
	var sAlertMsg = msgType;
	switch(sAlertMsg) {
		case "numericValue":
			sAlertMsg = "Must be a numeric value";
			break;
		case "positiveValue":
			sAlertMsg = "Must be greater than 0";
			break;
		case "percentRange":
			sAlertMsg = "Must be 0 to 100";
			break;
		case "weightRange":
			sAlertMsg = "Must be 0 to 999";
			break;
		case "duplicateGradeValue":
			sAlertMsg = "Grade values must be unique";
			break;
	}
	var objDiv = document.createElement("div");
	var objImg = document.createElement("img");
	var objTxt = document.createTextNode(sAlertMsg);
	//add elements to DOM
	//DIV
	txtBox.parentNode.appendChild(objDiv);
	objDiv.setAttribute("class", "alert");
	objDiv.setAttribute("className", "alert");
	objDiv.setAttribute("id", oDiv);
	//IMG
	objDiv.appendChild(objImg);
	objImg.setAttribute("src", "../../App_Themes/Default/Images/form_alert_arrow.gif");
	objImg.setAttribute("class", "alertArrow");
	objImg.setAttribute("className", "alertArrow");
	objDiv.appendChild(objTxt);
	
	objDiv.onclick = function() { this.style.display = "none" };
	// set input text color
	txtBox.style.color = "#db4242";
}

function hideAlert(oDiv, txtBox) {
	var objDiv = document.getElementById(oDiv);
	if (objDiv) {
		txtBox.parentNode.removeChild(objDiv);
		txtBox.style.color = "#000";
	}
}

// Activity Menu
function showActivityMenu (el, posEl) {
	var yTop = findPosY(posEl) + 4;
	var xLeft = findPosX(posEl) + 4;
	var item = document.getElementById(el).style;
	item.display = "block";
	item.top = yTop + "px";
	item.left = xLeft + "px";
}

// ***************************************************************
// STUDENT MENU
// ***************************************************************
function showStudentMenu (el, posEl) {
	
	var yTop = findPosY(posEl) + 21;
	var xLeft = findPosX(posEl) + 0;
	var item = document.getElementById(el).style;
	if(item.display == "block") {
		item.display = "none";
	}
	else {
		studentMenuHideAll()
		//hideAll("tblAdvisingList", "div", "csMenu");
		item.display = "block";
		item.top = yTop + "px";
		item.left = xLeft + "px";
	}
}

function studentMenuHideAll() {
    theElems = document.getElementById("content").getElementsByTagName("div");
    for(i = 0; i < theElems.length; i++) {
        if(theElems[i].id.indexOf("csMenu") > -1) {
            theElems[i].style.display = "none";
        }
    }
}


function closeStudentMenu(e) {
	if (!e) var e = window.event;
	var tg = (window.event) ? e.srcElement : e.target;
	if (tg.nodeName != 'DIV') return;
	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
	while (reltg != tg && reltg.nodeName != 'BODY')
		reltg = reltg.parentNode;
	if (reltg == tg) return;
	var el = document.getElementById(tg.id);
	el.style.display = "none";
}

// ***************************************************************
// HELP MENU
// ***************************************************************
function showHelpMenu (el, posEl) {
	var yTop = findPosY(posEl) + 21;
	var xLeft = findPosX(posEl) + 0;
	var item = document.getElementById(el).style;
	if(item.display == "block") {
		item.display = "none";
	}
	else {
		item.display = "block";
		item.top = yTop + "px";
		item.left = xLeft + "px";
	}
}

function closeHelpMenu(e) {
	if (!e) var e = window.event;
	var tg = (window.event) ? e.srcElement : e.target;
	if (tg.nodeName != 'DIV') return;
	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
	while (reltg != tg && reltg.nodeName != 'BODY')
		reltg = reltg.parentNode;
	if (reltg == tg) return;
	var el = document.getElementById(tg.id);
	el.style.display = "none";
}


// generic
// container: parent element, el: element to find, test: string to search for in elements id
function hideAll(container, el, test) {
    theElems = document.getElementById(container).getElementsByTagName(el);
    for(i = 0; i < theElems.length; i++) {
        if(theElems[i].id.indexOf(test) > -1) {
            theElems[i].style.display = "none";
        }
    }
}


function hideElement(el) {
	document.getElementById(el).style.display = "none";
}

function showElement (el) {
	document.getElementById(el).style.display = "block";
}

function showHideElement(el) {
	var theEl = document.getElementById(el);
	if(theEl.style.display == "none") {
	    theEl.style.display = "";
	}
	else {
	    theEl.style.display = "none";
	}
	
}

function showTrElement (el) {
	document.getElementById(el).style.display = "";
}

function showElementInline (el) {
	document.getElementById(el).style.display = "inline";
}

function showAndPositionElement (el, posEl, yOffset, xOffset) {
	var yTop = findPosY(posEl) + yOffset;
	var xLeft = findPosX(posEl) + xOffset;
	var item = document.getElementById(el).style;
	item.position = "absolute";
	item.display = "block";
	item.top = yTop + "px";
	item.left = xLeft + "px";
}



// vert nav
function vertNav(el, linkEl) {
	var theEl = document.getElementById(el);
	vertNavCloseAll();
	resetLinks();
	if(el == "all") {
		vertNavShowAll();
	}
	else {
		theEl.style.display = "";
	}
	if(linkEl.parentNode.className == "vertNavItem") {
		linkEl.parentNode.className = "vertNavItemOn";	
	}
	else {
		linkEl.parentNode.className = "vertNavItem";
	}
}

function resetLinks() {
	var theLinks = document.getElementById("vertTabNav").getElementsByTagName("li"); 
	for(i = 0; i < theLinks.length; i++) {
		theLinks[i].className = "vertNavItem";
	}
}

function vertNavCloseAll() {
	var theDivs = document.getElementById("mappings").getElementsByTagName("table");
	for(i = 0; i < theDivs.length; i++) {
		theDivs[i].style.display = "none";
	}
}

function vertNavShowAll() {
	var theTables = document.getElementById("mappings").getElementsByTagName("table");
	for(i = 0; i < theTables.length; i++) {
		theTables[i].style.display = "";
	}
}

// vert nav

function vertNavSm(el, linkEl) {
	var theEl = document.getElementById(el);
	vertNavSmCloseAll();
	resetLinksSm();
	if(el == "all") {
		vertNavSmShowAll();
	}
	else {
		theEl.style.display = "block";
	}
	if(linkEl.parentNode.className == "vertNavItemSm") {
		linkEl.parentNode.className = "vertNavItemSmOn";	
	}
	else {
		linkEl.parentNode.className = "vertNavItemSm";
	}
}

function resetLinksSm() {
	var theLinks = document.getElementById("vertTabNavSm").getElementsByTagName("li"); 
	for(i = 0; i < theLinks.length; i++) {
		theLinks[i].className = "vertNavItemSm";
	}
}

function vertNavSmCloseAll() {
	var theLists = document.getElementById("courses").getElementsByTagName("ul");
	for(i = 0; i < theLists.length; i++) {
		if(theLists[i].id.indexOf("li") > -1) {
			theLists[i].style.display = "none";
		}
	}
}

function vertNavSmShowAll() {
	var theTables = document.getElementById("courses").getElementsByTagName("ul");
	for(i = 0; i < theTables.length; i++) {
		theTables[i].style.display = "block";
	}
}

// vert nav Row
function vertNavRow(el, linkEl) {
	var theEl = document.getElementsByTagName("tr");
	vertNavCloseAllRow();
	resetLinksRow();
	
	for(i = 0; i < theEl.length; i++) 
	{
		if (theEl[i].id == el)
			theEl[i].style.display = "";
	}

	if(linkEl.parentNode.className == "vertNavItem") {
		linkEl.parentNode.className = "vertNavItemOn";	
	}
	else {
		linkEl.parentNode.className = "vertNavItem";
	}
}

function resetLinksRow() {
	var theLinks = document.getElementById("vertTabNav").getElementsByTagName("li"); 
	for(i = 0; i < theLinks.length; i++) {
		theLinks[i].className = "vertNavItem";
	}
}

function vertNavCloseAllRow() {
	var theDivs = document.getElementById("courses").getElementsByTagName("tr");
	for(i = 0; i < theDivs.length; i++) 
	{
		if (theDivs[i].id != "" )
			theDivs[i].style.display = "none";
	}
}
// vert nav Row Small
function vertNavRowSm(el, linkEl) {
	var theEl = document.getElementsByTagName("tr");
	vertNavCloseAllRowSm();
	resetLinksRowSm();
	
	for(i = 0; i < theEl.length; i++) 
	{
		if (theEl[i].id == el)
			theEl[i].style.display = "";
	}

	if(linkEl.parentNode.className == "vertNavItemSm") {
		linkEl.parentNode.className = "vertNavItemSmOn";	
	}
	else {
		linkEl.parentNode.className = "vertNavItemSm";
	}
}

function resetLinksRowSm() {
	var theLinks = document.getElementById("vertTabNavSm").getElementsByTagName("li"); 
	for(i = 0; i < theLinks.length; i++) {
		theLinks[i].className = "vertNavItemSm";
	}
}

function vertNavCloseAllRowSm() {
	var theDivs = document.getElementById("courses").getElementsByTagName("tr");
	for(i = 0; i < theDivs.length; i++) 
	{
		if (theDivs[i].id != "" )
			theDivs[i].style.display = "none";
	}
}

//
// Checkbox Check All
//

function ColumnCheckAll(checkBoxID, checkVal)
{
	for(i = 0; i < document.forms[0].elements.length; i++)
	{
		  var elm = document.forms[0].elements[i]
		  if (elm.type == 'checkbox')
		  {
			if (elm.id == checkBoxID)
				elm.checked = checkVal
		  }
	}
}

function ColumnPrefixCheckAll(checkBoxIDPrefix, checkVal)
{
	for(i = 0; i < document.forms[0].elements.length; i++)
	{
		var elm = document.forms[0].elements[i]
		if (elm.type == 'checkbox')
		{
			if (elm.id.indexOf(checkBoxIDPrefix) >= 0)
			{
				elm.checked = checkVal
			}
		}
	}
}

function checkAllInRow(rowId, checkedValue)
{
	var chkBoxes = document.getElementById(rowId).getElementsByTagName("input");
	for(i = 0; i < chkBoxes.length; i++) 
	{
		if(chkBoxes[i].type == "checkbox" && chkBoxes[i].id != "chkbxEmail") {
			chkBoxes[i].checked = checkedValue;	
		}
	}
}

//**************************************
// Table Tab navigation
//**************************************
// el = element to show, linkEl = link to change, tabPos = tab position (ie, first, last or in between)
function tableTabNav(el, linkEl, tabPos, page) {
	var theEl = document.getElementById(el);
    switch(page) {
        case "search":
            // use generic show / hide function
            showHideElement(el);
            break;
        case "address":
            tableTabNavCloseAll2();
            theEl.style.display = "block";
            break;
        default:
            tableTabNavCloseAll();
            theEl.style.display = "block";
            break;
    }
	
	tableTabNavResetLinks();
	switch(tabPos) {
		case "first":
			linkEl.parentNode.className = "firstSelected";
			break;
		case "last":
			linkEl.parentNode.className = "lastSelected";
			break;
		default:
			linkEl.parentNode.className = "selected";
			break;
	}
	linkEl.blur();
}
function tableTabNavCloseAll() {
	var theDivs = document.getElementById("cont").getElementsByTagName("div");
	for(i = 0; i < theDivs.length; i++) {
		if(theDivs[i].id.indexOf("periodDiv") > -1) theDivs[i].style.display = "none";
		//theDivs[i].style.display = "none";
	}
}

function tableTabNavCloseAll2() {
	var theDivs = document.getElementById("tableTabContent").getElementsByTagName("div");
	for(i = 0; i < theDivs.length; i++) {
		if(theDivs[i].id.indexOf("Div") > -1) theDivs[i].style.display = "none";
		//theDivs[i].style.display = "none";
	}
}

function tableTabNavResetLinks() {
	var theLinks = document.getElementById("tableTabs").getElementsByTagName("li"); 
	for(i = 0; i < theLinks.length; i++) {
		//alert(i);
		theLinks[i].className = "";
		if(i == 0) theLinks[i].className = "first"; 
	}
}

// Disable inputs in a div
function setInputsEnabled(div, state) {
	var els = div.getElementsByTagName("input");
	for(i = 0; i < els.length; i++) {
		els[i].disabled = !state;
	}
	els = div.getElementsByTagName("select");
	for(i = 0; i < els.length; i++) {
		els[i].disabled = !state;
	}
}

// Clear inputs in a div
function clearDiv(div) {
	var els = div.getElementsByTagName("input");
	for(i = 0; i < els.length; i++) {
		if (els[i].type == "text") els[i].value = "";
	}
	els = div.getElementsByTagName("select");
	for(i = 0; i < els.length; i++) {
		els[i].value = "";
	}
}

// functions to show text input format help within the text box, 
// remove it when text box get's focus, and ensure format text doesn't interfere
// with selecting the text box.

// hide it onfocus
function hideFormat(el) {
	var theElStyle = document.getElementById(el).style;
	theElStyle.visibility = "hidden";
}
// show it on blur if there is no value in the text box
// if a value has been entered by a user, it stays hidden.
// if the text box becomes empty, show it again.
function showHelp(el, control) {
	var theElStyle = document.getElementById(el).style;
	if(control.value == '') {
		theElStyle.visibility = "visible";
	}
	else {
		theElStyle.visibility = "hidden";
	}
}

function allowInputClick (el, txt) {
	var theTextBox = document.getElementById(el);
	var txtStyle = document.getElementById(txt).style;
	txtStyle.visibility = 'hidden';
	theTextBox.focus();
}

// new student menu (11/19/07) TODO: make reusable.

	function studentMenuOver(el) {
		el.parentNode.parentNode.className = "studentMenuCellOver";
	}
	
	function studentMenuOut(el) {
		el.parentNode.parentNode.className = "studentMenuCell";
	}

// Drop-Down list helper functions
function selectDropDownOption(dropDownList, selectedValue) {
    for(var i=0;i<dropDownList.options.length;i++)
	{
	    var option = dropDownList.options[i];	    
	    option.selected = (option.value == selectedValue);
	}
}
/* generic css class changer */
function swapClassName(el, curClass, newClass) {
	var swapItem = document.getElementById(el);
	if(swapItem.className == curClass) {
		swapItem.className = newClass;
	}
	else {
		swapItem.className = curClass;
	}
}