﻿var isIE = navigator.userAgent.indexOf("MSIE") > - 1; 
function addEvent(o, et, fn) {
    if (o.addEventListener) {
        o.addEventListener(et, fn, false); 
        return true; 
    }
    else if (o.attachEvent) {
        var r = o.attachEvent("on" + et, fn); 
        return r; 
    }
    else {
        return false; 
    }
}
function removeEvent(o, et, fn, useCapture) {
   if (o.removeEventListener) {
      o.removeEventListener(et, fn, useCapture); 
      return true; 
      }
   else if (o.detachEvent) {
      var r = o.detachEvent("on" + et, fn); 
      return r; 
      }
   else {
      alert("Handler could not be removed"); 
      }
   }

var sRowPreviousColor = "#FFFFFF";
var sBoxPreviousColor = "#FFFFFF";
var sBoxValueSet = "#e2eaef";
var sData = ""; 


var boxFocusColor = "#ffe3b9";
var ems_winDetails = "menubar=no,toolbar=no,scrollbars=yes,resizable=yes";

addEvent(document, "click", hidePickers);
addEvent(document, "keypress", ems_gotosyscheck);
addEvent(document, "mousemove", getMousePos)

function hidePickers()
{ 	

   if(getObj("calendar")) { 
        if (!bShow){
            hideCalendar()
	    }
	    bShow = false
   }
   if(window.top.gPopupIsShown) {
        window.top.hideSelectBoxes();
   }
   if(getObj("timeDrop")) { 
        if(!bLeaveTime) {
            if(timeBuilt == true)
            {
                hide(getObj("timeDrop"));
                displaySelectBoxes();
                timeBuilt = false; 
            } 
        }
        else {
            if(timeBuilt === true) {
                hideSelectBoxes();
            }
        }
   }
  
   if(getObj("pageOptionsList")) { hide(getObj("pageOptionsList")); } 
   if(getObj("pageOptionsSubList")) { hide(getObj("pageOptionsSubList")); }  
}

function getObj(s)
{
    return document.getElementById(s);
}

function getVal(s)
{
    return getObj(s).value;
}

function hide(o)
{
    if(o) { o.style.display = "none"; }
}

function show(o)
{
    if(o){ o.style.display = ""; }
}

function setHeight(o, h)
{
    if(o) { o.style.height = h; }
}

function setWidth(o, w)
{
    if(o){ o.style.width = w; }
}

var mouse = {};

function getMousePos(e)
{
	if (!e) {var e = window.event;}
	if (e.pageX || e.pageY) 	{
	   mouse.X = e.pageX;
	   mouse.Y = e.pageY;
	}
	else if (e.clientX || e.clientY) 	
	{
	    mouse.X = e.clientX; //+ document.body.scrollLeft + document.documentElement.scrollLeft;
	    mouse.Y =  e.clientY;// + document.body.scrollTop	+ document.documentElement.scrollTop;
	}
}

function getSrcElm(e)
{
    var targ;
	if (!e){ var e = window.event;}
	if (e.target) {targ = e.target;}
	else if (e.srcElement){ targ = e.srcElement;}
	if (targ.nodeType === 3) {targ = targ.parentNode;} // defeat Safari bug

    return targ;
}

//gets the value of the key being pressed
function getKey(e)
{
    shiftKeyPressed(e);
    var code;
	if (!e){ var e = window.event;}
	if (e.keyCode){ code = e.keyCode;}
	else if (e.which){ code = e.which;}
	//var character = String.fromCharCode(code);
    return code;
}
var _shiftKeyPressed = false;
//determines if the shift key is being pressed
function shiftKeyPressed(e)
{
    _shiftKeyPressed = (window.event) ? event.shiftKey : e.shiftKey;
    return _shiftKeyPressed;
}
//determines if the ctrl key is being pressed
function ctrlKeyPressed(e)
{
    return (window.event) ? event.ctrlKey : e.ctrlKey;
}

function suppressSubmitOnReturn(e)
{
   if(getKey(e) === 13){ return false; }
}

//shows the error message to the user
function errorCallBack(result, context)
{
   alert(result);
    clearLoading(); 
}

//shows our loading div
function showLoading()
{
    var d = getObj("CallbackStatus");
   if(d)
   { 
        show(d);
        d.style.top = "5px";
        d.style.right = "5px";
   } 
}

//removes our div showing loading
function clearLoading()
{
    hide(getObj("CallbackStatus"));
}

//gets the text of an xml node
function getText(oNode)
{
    try
    {
	    return (oNode.textContent || oNode.innerText || oNode.text || oNode.item(0).data);
	}
	catch(noString)
	{
		return '';
	}
}
   
//Get the result of a callback as xml
function getResultAsXml(result)
{    
    var oDoc;
    if (window.ActiveXObject)
    {
        oDoc = new ActiveXObject("Microsoft.XMLDOM");
        oDoc.async=false;
        oDoc.loadXML(result);
    }
    else if (document.implementation && document.implementation.createDocument)
    {
        oDoc= document.implementation.createDocument("","",null);
        var vParser = new DOMParser();
        oDoc = vParser.parseFromString(result, "text/xml");
    }
    return oDoc; 
}
   

//fill the container with the html of the node
function fillContainer(containerId, xmlRootElement, node)
{
     getObj(containerId).innerHTML = getText(xmlRootElement.getElementsByTagName(node)[0]);
}
   
   
//Checks whole numbers only
function numberMask(e)
{
	return isNumberKey(getKey(e)) || isNavKey(getKey(e), e);
}

function anyNumberMask(e)
{
	return checkNumberKeyPressed(getKey(e));
}

function suppressReturn(e)
{
	if(getKey(e) == 13)
	{
		if(window.event)
			window.event.keyCode = 0;
		return false;
	}
	else 
		return true;
}

function checkNumberKeyPressed(key)
{

/*
44 => ,
45 => -
46 => .
*/

	if(isNumberKey(key) || isNavKey(key) || key == 44 || key == 46)
		return true
	else
		return false;
}

function isNumberKey(key)
{

//47 - 58 => numbers 0-9
	if(key > 47 && key < 58)
		return true;
	else 
		return false;
}

function isNavKey(key)
{
    if(_shiftKeyPressed === false) {
	    if(key === 37 || key === 8 || key === 36 || key === 35 || key === 9 ) {
		    return true;
		}
	    else {
		    return false;
		}
    }
    else {
        return false;
    } 
}

function setClassName(sId, className)
{
    getObj(sId).className = className;
}

function setHiddenValue(oBox, sId)
{
    getObj(sId + "_hidden").value = oBox.value;
}

function ems_gotosyscheck(e) 
{ 
	try 
	{
		if(ctrlKeyPressed(e) && shiftKeyPressed(e)) 
		{
			if(getKey(e) == 11 || getKey(e) == 75) 
			{
				getObj('syscheckdata').submit()
			}
		}
		
		if(getKey(e) == 27)
		{
			if(typeof(hideCalendar) != 'undefined')
				hideCalendar();
    	}

	}
	catch (somethingBad){}
}
   
   var oLastSubOptions = null;
   var oLastOpt = null;
   var bPageOptionsShowing = false;
    function ems_showPageOptions()
   {
       var oOptionsLabel  = getObj(pageOptionsId);
       var oOptionsList = getObj("pageOptionsList");
        show(oOptionsList);

       var toppos = 0;
       var onTag = oOptionsLabel;
				
	    do 
	    {
			onTag = onTag.offsetParent;
			toppos += onTag.offsetTop;
		} while(onTag.tagName!="BODY");
	
		oOptionsList.style.position = "absolute";	
		oOptionsList.style.right = "5px";
		oOptionsList.style.top = oOptionsLabel.offsetTop + toppos + oOptionsLabel.offsetHeight + "px";
		
		bPageOptionsShowing = true;
   } 
   
   function ems_showSubOptions(optionKey,oLi)
   {
       var oOptionsSubList = getObj("pageOptionsSubList");
       var oOptionsList = getObj("pageOptionsList");
       
       var oItems = getObj("opt_" + optionKey);

       if(oItems)
       {
            show(oOptionsSubList);
           oLastSubOptions = oOptionsSubList;
           oOptionsSubList.innerHTML = oItems.innerHTML; 
       
       	    oOptionsSubList.style.position = "absolute";
       	    var w = oOptionsList.offsetWidth + 5;
       	   var t = oOptionsList.offsetTop; 
		    oOptionsSubList.style.right = w + "px";
		    oOptionsSubList.style.top =  t + "px";     
		   
	       var re = /\bmouseOn\b/i;	  
		   var oP = getObj("li_" + optionKey);
           if(oP)
          { 
                var pm = re.exec(oP.className);
                if(pm == null)
                    oP.className += " mouseOn";
                  oLastOpt = oP;
          }
       }
   }
  
   function ems_pageOptionMouse(o, p, s)
   {
       var re = /\bmouseOn\b/i;
       var m = re.exec(o.className);
        if(s && p == 0)
       {
           var oP = getObj("li_" + s);
           if(oP)
          { 
                var pm = re.exec(oP.className);
                if(pm == null)
                    oP.className += " mouseOn";
    
              oLastOpt = oP;
          }
       } 
 
       if(m == null)
       {
            o.className += " mouseOn";
           if(p == 1) 
          { 
                hide(oLastSubOptions); 
               if(oLastOpt && oLastOpt != null && o.id != oLastOpt.id)
              {
                     oLastOpt.className = oLastOpt.className.replace(re, "");
                     oLastOpt = null;
              }  
           } 
       } 
       else
       {
           o.className = o.className.replace(re, ""); 
           
       }
   }  
 
function processHelpTextCallback(root)
{
    if(root)
   { 
       if(root.getElementsByTagName('campusShowHelpText')[0])
       {
           var showHelpText = getText(root.getElementsByTagName('campusShowHelpText')[0]);
            var  jj = 0;
            var oSpans = document.getElementsByTagName("span");
            for(jj = 0; jj < oSpans.length; jj++)
            {
                if(oSpans[jj].isHelpText)
                {
                    if(showHelpText == "1")
                    {
                        oSpans[jj].style.display = "";
                    }
                    else
                    {
                        oSpans[jj].style.display = "none";
                    }
                }    
            }   
       } 
   }
   return;
}

function ems_pageOptionsCallback(root)
{
    if(root)
    {
        getObj("pageOptionsList").innerHTML = getText(root.getElementsByTagName('topLevelOptions')[0]);
        getObj("pageOptionsContainer").innerHTML = getText(root.getElementsByTagName('subOptions')[0]); 
    }   
    ems_showPageOptions(); 
   return; 
}


function emptyToMinusOne(s)
{
    if(s){ return s === "" ? "-1" : s;}
    return "-1";
}


function setEmsData(ignoreValidation)
{
   var inputs = document.getElementsByTagName("input");
   
   for(var i = 0; i < inputs.length; i++)
   {
       var emsDataId = inputs[i].emsDataId || inputs[i].getAttribute("emsDataId");
       var isRequired = inputs[i].isRequired || inputs[i].getAttribute("isRequired");
   
       if(emsDataId)
       { 
          if(isRequired)
          {
                if(inputs[i].value === "" && ignoreValidation !== true)
                { 
                    alert(inputs[i].errorMsg); 
                    return false;
                }
          } 
          if(inputs[i].type === "checkbox" || inputs[i].type === "radio") {
            if(inputs[i].checked) {
                emsData[emsDataId] = "1";
            }
            else {
                emsData[emsDataId] = "0";
            }
          }
          else {
            emsData[emsDataId] = inputs[i].value;
          }  
            
       }
       else if (inputs[i].name.substring(0,4) === "ems_")
       {
           if(inputs[i].type === "checkbox") {
                if(inputs[i].checked) {
                    emsData[inputs[i].name] = "1";
                }
                else {
                    emsData[inputs[i].name] = "0";
                }
              }
              else {
                emsData[inputs[i].name] = inputs[i].value;
              }  
       }
   }
   
   var selects = document.getElementsByTagName("select");
   for(var i = 0; i < selects.length; i++)
   {
       var emsDataId = selects[i].emsDataId || selects[i].getAttribute("emsDataId");
       var isRequired = selects[i].isRequired || selects[i].getAttribute("isRequired");
       if(emsDataId)
       {
            if(isRequired)
          {
                if((selects[i].value === "" || selects[i].options[selects[i].selectedIndex].text === "") && ignoreValidation !== true)
                { 
                    alert(selects[i].errorMsg); 
                    return false;
                }
          }  
          emsData[emsDataId] = emptyToMinusOne(selects[i].value);
       }
   }
   
   var textAreas = document.getElementsByTagName("textarea");
   for(var i = 0; i < textAreas.length; i++)
   {
       var emsDataId =textAreas[i].emsDataId || textAreas[i].getAttribute("emsDataId");
        var isRequired = textAreas[i].isRequired || textAreas[i].getAttribute("isRequired");
       if(emsDataId)
       {
            if(isRequired)
          {
                if(textAreas[i].value === ""  && ignoreValidation !== true)
                { 
                    alert(textAreas[i].errorMsg); 
                    return false;
                }
          }  
          emsData[emsDataId] = textAreas[i].value;
       }
   }
   
   return true;
   
}

function getObjByEmsDataId(emsDataId)
{
   var inputs = document.getElementsByTagName("input");
   
   for(var i = 0; i < inputs.length; i++)
   {
       if(inputs[i].emsDataId){
           if(inputs[i].emsDataId === emsDataId)
           { 
                return inputs[i];
           }
           else if (inputs[i].name === emsDataId)
           {
               return inputs[i];
           }
       }
       else {
            if(inputs[i].getAttribute("emsDataId") === emsDataId) {
                return inputs[i];
            }
            
            if(inputs[i].name === emsDataId) {
                return inputs[i];            
            }
       }
   }
   var selects = document.getElementsByTagName("select");
   for(var i = 0; i < selects.length; i++)
   {
       if(selects[i].emsDataId)
       {
            if(selects[i].emsDataId === emsDataId)
            { 
                return selects[i];
            }
       }
       else {
            if(selects[i].getAttribute("emsDataId") === emsDataId) {
                return selects[i];
            }
       }
   }
   
   var textareas = document.getElementsByTagName("textarea");
   for(var i = 0; i < textareas.length; i++)
   {
       if(textareas[i].emsDataId){
            if(textareas[i].emsDataId === emsDataId)
            { 
                return textareas[i];
            }
       }
       else
       {
           if(textareas[i].getAttribute("emsDataId") === emsDataId)
            { 
                return textareas[i];
            }
       }
   }
   
   
   return null;
}


function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

var ems_row;
var ems_low;
var ems_bow;
var ems_mouseX;
var ems_mouseY;
var ems_clientX;
var ems_clientY;
var ems_winHt;
var oTip;
var xOffset = 15;
var yOffset = 15;
var tipShowing = false;

function setObjectPosition(oToSet, objShowing)
{
    if(oToSet)
    { 
        var realBody = (document.compatMode && document.compatMode!="BackCompat") ? document.documentElement : document.body
        if(objShowing)
       {
            oToSet.style.visibility = "hidden";
           if(ems_row < oToSet.offsetWidth) {
             oToSet.style.left = isIE 
                 ? realBody.scrollLeft + ems_mouseX - oToSet.offsetWidth + "px" 
                 : window.pageXOffset + ems_clientX - oToSet.offsetWidth + "px";
           }
          var tipWidth = oToSet.offsetWidth;
          
          if (ems_mouseX < ems_low) {
                oToSet.style.left = "5px";
          }
          else {
            oToSet.style.left = ems_mouseX + xOffset + "px"; 
          }
        
          if((xOffset + tipWidth) > ems_row) {
            oToSet.style.left = ems_mouseX - xOffset - tipWidth + "px"
          }

          if(ems_bow < oToSet.offsetHeight)
          {
            oToSet.style.top = ems_winHt - oToSet.offsetHeight + "px";
          } 
          else
          {
          
             oToSet.style.top = ems_mouseY + yOffset + "px"; 
          } 
            
            
            oToSet.style.visibility = "visible";
       }
    }
}
addEvent(document, "mousemove", setWandMProps);

function setWandMProps(e)
{
    var realBody = (document.compatMode && document.compatMode!="BackCompat") ? document.documentElement : document.body
    ems_mouseX = isIE ? event.clientX + realBody.scrollLeft : e.pageX;
    ems_mouseY = isIE ? event.clientY + realBody.scrollTop : e.pageY;
    ems_clientX = isIE ? event.clientX : e.clientX; 
    ems_clientY = isIE ? event.clientY : e.clientY;
    ems_row = isIE && !window.opera ? realBody.clientWidth - event.clientX -xOffset : window.innerWidth - e.clientX - xOffset - 20;
    ems_bow = isIE && !window.opera ? realBody.clientHeight - event.clientY - yOffset : window.innerHeight - e.clientY - yOffset - 20;
    ems_low = (xOffset < 0) ? xOffset * (-1) : -1000;
   ems_winHt = (isIE) ? realBody.clientHeight + realBody.scrollTop : window.innerHeight -20 + window.pageYOffset;
   setObjectPosition(oTip, tipShowing); 
   
}

function checkCss(o, c) {
    return new RegExp('\\b'+c+'\\b').test(o.className);
}

function swapCss(o,c1,c2) {
     o.className = !checkCss(o,c1) ? o.className.replace(c2,c1) : o.className.replace(c1,c2);
}

function addCss(o, c) {
    if(!checkCss(o,c)){
        o.className += o.className ? ' ' + c : c;
    }
}

function removeCss(o, c) {
    if(o.className) {
        var rep = o.className.match(' '+c) ? ' '+c : c;
        o.className=o.className.replace(rep,'');
    }
}


function hideSelectBoxes() {
    if(document.all){
	    for(var i = 0; i < document.forms.length; i++) {
		    for(var e = 0; e < document.forms[i].length; e++){
			    if(document.forms[i].elements[e].tagName == "SELECT") {
    			
				    document.forms[i].elements[e].style.visibility="hidden";
			    }
		    }
	    }
	}
}

function displaySelectBoxes() {
    if(document.all) {
	    for(var i = 0; i < document.forms.length; i++) {
		    for(var e = 0; e < document.forms[i].length; e++){
			    if(document.forms[i].elements[e].tagName == "SELECT") {
			    document.forms[i].elements[e].style.visibility="visible";
			    }
		    }
	    }
	}
}
