// Show the document's title on the status bar
window.defaultStatus=document.title;

function highlightTableRows(tableId) {
    var previousClass = null;
    var table = document.getElementById(tableId); 
    var tbody = table.getElementsByTagName("tbody")[0];
    var rows = tbody.getElementsByTagName("tr");
    // add event handlers so rows light up and are clickable
    for (i=0; i < rows.length; i++) {
        rows[i].onmouseover = function() { previousClass=this.className;this.className+=' over' };
        rows[i].onmouseout = function() { this.className=previousClass };
        rows[i].onclick = function() {
            var cell = this.getElementsByTagName("td")[0];
            if (cell.getElementsByTagName("a").length > 0) {
                var link = cell.getElementsByTagName("a")[0];
                if (link.onclick) {
                    call = link.getAttributeValue("onclick");
                    // this will not work for links with onclick handlers that return false
                    eval(call);
                } else {
                  location.href = link.getAttribute("href");
                }
                this.style.cursor="wait";
            }
        }
    }
}


//use the following 2 functions to disable or enable elements
function disableElement()
{    
  for (var i = 0; i < arguments.length; i++)
  {
  	if (arguments[i] != null)
  	{
    	arguments[i].disabled=true;
    	arguments[i].style.backgroundColor="#CCCCCC";
   	}
  }
}

function enableElement()
{
  for (var i = 0; i < arguments.length; i++)
  {
  	if (arguments[i] != null)
  	{
	  arguments[i].disabled=false;
	  arguments[i].style.backgroundColor="#FFFFFF";
	}
  }
}

function setElementEnabled(element, enabled)
{
    if (enabled)
        enableElement(element);
    else
        disableElement(element);
}

// the following function clears all the input/textarea/select elements on a form
function clearForm(form)
{
  //clear all text fields
  var textFields = getFormElements(form, "text");
  for (var i = 0; i < textFields.length; i++)
  {
    textFields[i].value = "";
  }
  // clear all textareas
  var textAreaFields = getFormElements(form, "textarea");
  for (var i = 0; i < textAreaFields.length; i++)
  {
    textAreaFields[i].value = "";
  }
  //clear all selected values in select box
  var selectFields = getFormElements(form, "select");
  for (var i = 0; i < selectFields.length; i++)
  {
    selectFields[i].value = "";
    selectFields[i].selectedIndex = -1;
  }
}


function getFormElements(form, elementType)
{
  var elementArray = new Array();
  var numberOfElements = 0;
  var isSelect = elementType == "select"; // select has two types, treated differently
  for (var i = 0; i < form.elements.length; i++)
  {
    if ((!isSelect && form.elements[i].type == elementType) ||
        (isSelect && (form.elements[i].type == "select-one" || form.elements[i].type == "select-multiple")))
    {
      elementArray[numberOfElements++] = form.elements[i];
    }
  }
  return elementArray;
}

// the following function tries to run an "onLoad" function, but doesn't complain if there's not one
function tryOnLoad()
{
	try
	{
		onLoad();
	} catch (e)
	{
		// ignore - usually "not defined"
	}
}

//legacy window_open function
function window_open(a,b,c){
			window.open(a,b,c);
}

function popup(url)
{
	var newwindow;
	newwindow=window.open(url,'name');
	if (window.focus) {newwindow.focus()}
}

//Swaps images
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

//Shows and Hides Layers
function MM_showHideLayers() { //v6.0

  var i,p,v,obj,args=MM_showHideLayers.arguments;

  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];

    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }

    obj.visibility=v; }

}

//Restores images
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

//Changes styles onMouseover
function MM_changeProp(objName,x,theProp,theValue) { //v6.0

  var obj = MM_findObj(objName);

  if (obj && (theProp.indexOf("style.")==-1 || obj.style)){

    if (theValue == true || theValue == false)

      eval("obj."+theProp+"="+theValue);

    else eval("obj."+theProp+"='"+theValue+"'");

  }

}

//OnClick Function for Div tags. Used in the sign up search results page
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

//submittal function for store redirect page - opens a new window, and records a site event
function submitStoreRedirectForm(linkUrl, name, redirectTargetType)
{
	link = new Image();
	link.src = linkUrl;
	if(redirectTargetType == 'BLANK')
	{
	    window.open("",name,"");
	}
	var a = window.setTimeout("document.storeRedirect.submit();",500);
}

//PopUp Div
function showPopUp(link,divId,align)
{
  	popUpDiv = document.getElementById(divId);
  	if(popUpDiv != null)
  	{
		if(align == "left")
		{
			var alignNumber = 0;
		}
		if(align == "center" || align == null) {
			var alignNumber = -100;
		}
		if(align == "right") {
			var alignNumber = -200;
		}
			
		popUpDiv.style.left = link.offsetLeft + alignNumber + 'px';
		popUpDiv.style.top = link.offsetTop + 10 + 'px';
		
		
		//var coord = getPosition(link);	 
	    //popUpDiv.style.left = coord.x + alignNumber + 'px';
	    //popUpDiv.style.top = coord.y + 10 + 'px';
		popUpDiv.style.cursor = 'pointer';
		if(popUpDiv.style.display == 'block')
			popUpDiv.style.display = 'none';
		else
			popUpDiv.style.display = 'block';
	}
}

function hidePopUp(divId)
{
    popUpDiv = document.getElementById(divId);
   	if(popUpDiv != null)
	   	popUpDiv.style.display='none';
}
    
function getPosition(element) 
{ 
	var r = { x:0, y:0};
	
	var x = element.offsetLeft; // calculate object position
	var y = element.offsetTop;
		while (element = element.offsetParent) 
		{ // based on all parent nodes
			r.x += element.offsetLeft;
			r.y += element.offsetTop;
		}
	return r;
}

function DIVSwapInner(selectedElementId, targetId, state)
{
	var selectedElement = document.getElementById(selectedElementId);	
	var targetElement = document.getElementById(targetId);
	var temp = "";
	if(selectedElement != null && targetElement != null)
	{
		if(state == true)
		{
			temp = targetElement.innerHTML;
			targetElement.innerHTML = selectedElement.innerHTML;
			selectedElement.innerHTML = temp;
		}
		else
		{
			temp = targetElement.innerHTML;
			targetElement.innerHTML = selectedElement.innerHTML;
			selectedElement.innerHTML = temp;
		}		
	}	
}
//Used for BroForm programs
function elementOn(elementId,classOne,classTwo){
		document.getElementById(elementId + "a").className= classOne;
		document.getElementById(elementId + "b").className= classTwo;
	}
function elementOff(elementId,classOne,classTwo){
		document.getElementById(elementId + "a").className= classOne;
		document.getElementById(elementId + "b").className= classTwo;
	}

//used to record module and edugame events in google analytics
function recordEvent(category, action, label, value)
{
  if(pageTracker != null)
  {
    pageTracker._trackEvent(category, action, label, value);
  }
}


// Disable the submit button on submit to prevent duplicate submissions
function processingButton(objButton, strLabel, strProcessingLabel)
{
	objButton.value = strProcessingLabel;
	objButton.disabled=true;
	objButton.form.submit();
}

function handleDefaultError()
{
  alert("Error: the request could not be processed");
}

function swapClassOnHover(objTarget, strOnClass, strOffClass)
{
	if(objTarget != null || objTarget != strOnClass)
	{	
		if(objTarget.className == strOffClass)
		   objTarget.className = strOnClass;
		else if(objTarget.className == strOnClass)
		   objTarget.className = strOffClass;
	}
}

function changeContent(screenshot,destination){
    var destination = document.getElementById(destination);
    var screenshot = document.getElementById(screenshot);
    destination.innerHTML = screenshot.innerHTML;
}
function fHide(elementID){
    document.getElementById(elementID).className="hide";
}
function fShow(elementID){
    document.getElementById(elementID).className="show";
}

function webflowSubmit(btn, event)
{
    btn.disabled = true;
    btn.form._eventId.value = event;
    btn.form.submit();
}
