var csimg = "/csimg/";
var toolBarAction = false;
var pageDiv;
var pageTitle;
var mainDiv;

var browser;
var version;
var popupLayer1 = "";
var popupLayer2 = "";
var popupIframe1;
var popupIframe2;
var popupXmin1;
var popupXmax1;
var popupYmin1;
var popupYmax1;
var popupXmin2;
var popupXmax2;
var popupYmin2;
var popupYmax2;
var popupOn = 0;
var popupEventObj = "";
var sessionTimer = 0;
var resetSession = 0;
var expireSecs;
var expireSecsLeft = 60;
var cursor;

if(!window.XMLHttpRequest){ version = 6; }
if (navigator.appName != "Microsoft Internet Explorer"){
	browser = "moz";
} else {
	browser = "ie";
}
function stopError(){
	return true;
}
function startError(){
	return false;
}
function checkSession(){
	sessionTimer = setTimeout(validateSession,30000);
}
function validateSession(){
	xmlRequest("l_csi_public.p_check_session", "POST", sessionCheckAjax);
}
function sessionCheckAjax(ajaxResp){
	var height, width, ch, cw, posY, posX, content, code = ajaxResp[1].substr(0, 1);

	if(code == "1"){
		checkSession();
	} else if(code == "2") {
		document.location="l_csi_public.p_logout";
	} else {

		content = "<div style=\"height:150px; width:300px; background-color: #E3EFFF;\">";
		content += "<div class=\"tb1\"><div id=\"title-bar\" class=\"tb2\">\Session Expiration</div></div>";
		content += "<div style=\"padding: 10px;\">";
		content += "<div style=\"color: red; font-weight: bold; padding-bottom: 10px;\">Warning</div>";
		content += "<div>Your session has been idle for " + gSessionTimeout + " minutes.</div>";
		content += "<div>Automatic logout will occur in: <b><span id=\"expireSecs\">60</span></b> seconds.<br /></div>";
		content += "<div style=\"padding-top: 10px;\"><button onclick=\"keepAlive();\">Keep Alive</button>";
		content += "</div></div>";

		intPopup(content, 1);
		expireSecs = getObj("expireSecs", true);
		sessionTimer = setTimeout(expireTimer,1000);
	}
}
function keepAlive(){
	resetSession = 1;
	intPopupClose();
	checkSession();
	xmlRequest("l_csi_macros.p_blank_page", "POST", keepAliveAjax);
}
function keepAliveAjax(ajaxResp){
	return;
}
function expireTimer(){
	if(resetSession == 1){
		resetSession = 0;
		return;
	}
	expireSecsLeft = expireSecsLeft - 1;
	expireSecs.innerHTML = expireSecsLeft;

	if(expireSecsLeft === 0){
		document.location="l_csi_public.p_logout";
	} else {
		sessionTimer = setTimeout(expireTimer,1000);
	}
}
function subInit(tabId){
	mainDiv = getObj("mainDiv");
	pageTitle = getObj("title-bar");
	tabSelected = tabId;
	setSubLayout();
	window.onresize = setSubLayout;
}
function setSubLayout(){
	var pageHeight = document.documentElement.clientHeight;
	var pageWidth = document.documentElement.clientWidth;
	mainDiv.style.height = pageHeight - (mainDiv.offsetTop + 20) + "px";
	if(version == 6){
		mainDiv.style.width = (pageWidth - 20) + "px";
	}
}
// Get Object from ID
function getObj(id){
	if(document.getElementById(id)){
		return document.getElementById(id);
	} else {
		return "";
	}
}
// Place Cursor at End of Focus Object
function focus(obj){
	obj.focus();
	var range;
	if(obj.createTextRange) {
		range = obj.createTextRange();
		range.collapse(false);
		range.select();
	}
}
// Remove non numbers
function removeNonNum(val){
	if(val === ""){ return ""; }
	return parseInt(val.replace(/[^0-9]/g, ""), 10);
}
function roundNumber(rnum, dec) {
	var newnumber;
	if(dec === ""){ dec = 0; }
	if (rnum > 8191 && rnum < 10485) {
		rnum = rnum-5000;
		newnumber = Math.round(rnum*Math.pow(10,dec))/Math.pow(10,dec);
		newnumber = newnumber+5000;
	} else {
		newnumber = Math.round(rnum*Math.pow(10,dec))/Math.pow(10,dec);
	}
	return newnumber;
}
// Turn cursor selection off
function selectionOff(){
	if (document.selection) {
		document.selection.empty();
	} else if (window.getSelection){
		window.getSelection().removeAllRanges();
	}
}
// Find object position
/*
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft - obj.scrollLeft;
		curtop = obj.offsetTop - obj.scrollTop;
		
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft - obj.scrollLeft;
			curtop += obj.offsetTop - obj.scrollTop;
		}
	}
	return [curleft,curtop];
}
*/
function findPos(obj, event) {
	if(event){ return [event.clientX, event.clientY] }

	if( typeof( obj.offsetParent ) != "undefined" ) {
		for( var posX = 0, posY = 0; obj; obj = obj.offsetParent ) {
			posX += obj.offsetLeft - obj.scrollLeft;
			posY += obj.offsetTop - obj.scrollTop;
		}
		return [posX, posY];
	} else {
		return [obj.x, obj.y];
	}
}
function findPosX(obj, event) {
	return findPos(obj, event)[0];
}
function findPosY(obj, event) {
	return findPos(obj, event)[1];
}
// Event Functions
function attachEvent(iObj, iEvent, iFunction, useCapture){
	if (!useCapture){ useCapture = false;}
	if (iObj.addEventListener){
		iObj.addEventListener(iEvent, iFunction, useCapture);
	} else {
		iObj.attachEvent("on" + iEvent, iFunction);
	}
}
function eventListenerStart(eventType, eventHandle, captures){
	if(document.addEventListener){
		document.addEventListener(eventType, eventHandle, captures);
	} else {
		document.attachEvent("on" + eventType, eventHandle);
	}
}
function eventListenerStop(eventType, eventHandle, captures){
	if(document.removeEventListener){
		document.removeEventListener(eventType, eventHandle, captures);
	} else {
		document.detachEvent("on" + eventType, eventHandle);
	}
}
function eventStopPropagation(event){
	if (event.stopPropagation){
		event.stopPropagation();
	} else {
		event.cancelBubble = true;
	}
}
function eventDefault(event){
	if(event.preventDefault){
		event.preventDefault();
	} else {
		event.returnValue = false;
	}
}
function eventSrc(event){
	return event.target ? event.target : event.srcElement;
}
function nodeExpCol(obj){
	targetDiv = getObj("ng" + removeNonNum(obj.id));
	var srcArray = obj.src.split("/");
	var imgSrc = srcArray[srcArray.length - 1];

	var fldObj = getObj("fi" + removeNonNum(obj.id));
	var fldArray = fldObj.src.split("/");
	var fldSrc = fldArray[fldArray.length - 1];

	if(imgSrc == "col.gif"){
		targetDiv.style.display = "none";
		obj.src = csimg + "exp.gif";
		obj.alt = "Expand";

		if(fldSrc == "folder1.gif"){
			fldObj.src = csimg + "folder0.gif";
		}

	} else {
		targetDiv.style.display = "block";
		obj.src = csimg +"col.gif";
		obj.alt = "Collapse";

		if(fldSrc == "folder0.gif"){
			fldObj.src = csimg + "folder1.gif";
		}
	}
}
function returnFalse(){
	return false;
}
function cursorOn(xPos, yPos, cursorStyle){
	cursor = getObj("divCursor");
	cursor.style.width = "100px";
	cursor.style.height = "100px";
	cursor.style.top = (yPos - 50) + "px";
	cursor.style.left = (xPos - 50) + "px";
	cursor.style.cursor = cursorStyle;
	document.onselectstart = returnFalse;
}
function cursorChangeIcon(cursorStyle){
	cursor.style.cursor = cursorStyle;
}
function cursorMove(xPos, yPos){
	cursor.style.top = (yPos - 50) + "px";
	cursor.style.left = (xPos - 50) + "px";
}
function cursorOff(){
	cursor.style.width = "0px";
	cursor.style.height = "0px";
	cursor.style.top = "0px";
	cursor.style.left = "0px";
	document.onselectstart = returnFalse;
}
function popupSetSize(popupID){
	var popup;
	var iframe;
	if(!popupID){
		popup = popupLayer1;
		iframe = popupIframe1;
		popupXmax = popup.offsetWidth;
		popupYmax = popup.offsetHeight;
		popupXmax1 = popupXmax;
		popupYmax1 = popupYmax;
	} else {
		popup = popupLayer2;
		iframe = popupIframe2;
		popupXmax = popup.offsetWidth;
		popupYmax = popup.offsetHeight;
		popupXmax2 = popupXmax;
		popupYmax2 = popupYmax;
	}

	iframe.style.width = popupXmax + "px";
	iframe.style.height = popupYmax + "px";
}
function popupMouseClose(event){
	if(!event){ event = window.event;}
	popupEventObj = eventSrc(event);
	var obj    = popupEventObj;
	if(obj.id == "popupLayer1" || obj.id == "popupLayer2"){
		popupClose();
		eventListenerStop("mouseup", popupMouseClose, true);
		eventStopPropagation(event);
		return;
	}

	while(obj.id != "popupLayer1" && obj.id != "popupLayer2" && obj.tagName != "BODY"){
		obj = obj.parentNode;
	}

	if(obj.tagName == "BODY"){
		popupClose();
		eventListenerStop("mouseup", popupMouseClose, true);
		eventStopPropagation(event);
	}
}
function popupOpen(posTop, posLeft, innerVal, mouseClose, popupID, transparent){
	popupClose();
	if(!popupID){popupID = 1;}
	var iframe = getObj("popupIframe" + popupID);
	iframe.style.top = posTop + "px";
	iframe.style.left = posLeft + "px";
	iframe.style.display = "";

	var div = getObj("popupLayer" + popupID);
	div.style.display = "";
	div.style.position = "absolute";
	div.style.zIndex = "101";
	div.style.top = posTop + "px";
	div.style.left = posLeft + "px";
	div.innerHTML = innerVal;

	iframe.style.width = div.offsetWidth + "px";
	iframe.style.height = div.offsetHeight + "px";

	if(popupID == 1){
		popupLayer1 = div;
		popupIframe1 = iframe;
	} else {
		popupLayer2 = div;
		popupIframe2 = iframe;
	}

	popupSetSize();
	popupOn = 1;

	if(mouseClose == 1){
		eventListenerStart("mouseup", popupMouseClose, true);
	}

	return;
}
function popupClose(popupID){
	if(popupID){
		if(popupLayer2 !== ""){
			popupLayer2.innerHTML = "";
			popupLayer2.style.display = "none";
			popupIframe2.style.display = "none";
			popupLayer2 = "";
			popupIframe2 = "";
		}
		return;
	}

	if(popupLayer2 !== ""){
		popupLayer2.style.display = "none";
		popupIframe2.style.display = "none";

		popupLayer2 = "";
		popupIframe2 = "";
	}

	if(popupLayer1 !== ""){
		popupLayer1.style.display = "none";
		popupIframe1.style.display = "none";

		popupOn = 0;
		autoCompOn = 0;
		autoEvent = 0;
		autoDiv = "";
		popupLayer1 = "";
		popupIframe1 = "";

		if(contextButtonObj !== ""){
			if(popupEventObj != contextButtonObj){
				contextID = "";
			}
			contextButtonObj.className = "toolbar-button";
			contextButtonObj = "";
		}

		popupEventObj = "";
	}
}
function textAreaSize(txtAreaObj,maxVal) {
	if (txtAreaObj.value.length == (maxVal+1)) {
		txtAreaObj.value = txtAreaObj.value.substr(0,maxVal);
	}

	if (txtAreaObj.value.length > (maxVal+1)) {
		alert("This field allows maximum of "+ maxVal +" characters");
		txtAreaObj.value = txtAreaObj.value.substr(0,maxVal);
	}
}
function xmldecode(val){
	val.replace("&amp;", "&");
	val.replace("&lt;", "<");
	val.replace("&gt;", ">");
	val.replace("&apos;", "'");
	val.replace("&quot;", '"');
	val.replace("&#160;", "");
	return val;
}
function xmlencode(val){
	val.replace("&", "&amp;");
	val.replace("<", "&lt;");
	val.replace(">", "&gt;");
	val.replace("'", "&apos;");
	val.replace('"', "&quot;");
	return val;
}
function addCommas(num){
	num += "";
	var x = num.split(".");
	var x1 = x[0];
	var x2 = x.length > 1 ? "." + x[1] : "";
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, "$1" + "," + "$2");
	}
	return x1 + x2;
}
function getFirstParentOfType(obj,tag){
	while(obj.tagName!=tag && obj.tagName!="BODY"){
		obj = obj.parentNode;
	}
	return obj;
}

var contextObj = "";
var optionObj = "";
var contextButtonObj = "";
var contextID = "";
var flyoutEvent = "";
var flyoutObj = "";
var contextEvent = "";
// Toolbar Initialization
function toolbarInit(){
    var divs = document.getElementsByTagName("DIV");
    var div;
    var child;

    for (var i = 0; i < divs.length; i++) {
        div = divs[i];
        if(div.className == "toolbar-0" || div.className == "toolbar-3"){
            attachEvent(div, "mouseover", toolBarOver);
            attachEvent(div, "mouseout", toolBarOut);
            attachEvent(div, "mousedown", toolBarClick);
            
            child = div.childNodes[0];
            
            if(child.tagName == "IMG"){
                attachEvent(child, "mouseover", toolBarOver);
                attachEvent(child, "mouseout", toolBarOut);
                attachEvent(child, "mousedown", toolBarClick);
            }        
        }
    }
}

function toolBarOver(event){
    if(toolBarAction){ return; }
    if(!event){ event = window.event;}
    var obj = eventSrc(event);
    
    while(obj.tagName != "DIV" & obj.tagName != "BODY"){
        obj = obj.parentNode;
    }
    
    if(obj.className == "toolbar-0"){
        obj.className = "toolbar-1";
    } else if(obj.className == "toolbar-3"){
        obj.className = "toolbar-4";
    }
}

function toolBarOut(event){
    if(toolBarAction){ return; }
    if(!event){ event = window.event;}
    var obj = eventSrc(event);
    
    while(obj.tagName != "DIV" & obj.tagName != "BODY"){
        obj = obj.parentNode;
    }
    
    if(obj.className == "toolbar-1"){
        obj.className = "toolbar-0";
    } else if(obj.className == "toolbar-4"){
        obj.className = "toolbar-3";
    }
}

function toolBarClick(event){
    toolBarAction = true;
    if(!event){ event = window.event;}
    var obj = eventSrc(event);
    
    while(obj.tagName != "DIV" & obj.tagName != "BODY"){
        obj = obj.parentNode;
    }
    
    if(obj.className == "toolbar-0"){
        obj.className = "toolbar-2";
    } else if(obj.className == "toolbar-1"){
        obj.className = "toolbar-2";
    } else if(obj.className == "toolbar-3"){
        obj.className = "toolbar-5";
    } else if(obj.className == "toolbar-4"){
        obj.className = "toolbar-5";
    }
        
    eventListenerStart("mouseup", toolBarClickDone, true);
    eventStopPropagation(event);
    eventDefault(event);
    
    function toolBarClickDone(event){
        if(!event){ event = window.event;}
        
        if(obj.className == "toolbar-2"){
            obj.className = "toolbar-0";
        } else if(obj.className == "toolbar-5"){
            obj.className = "toolbar-3";
        }
        
        toolBarAction = false;
        
        eventListenerStop("mouseup", toolBarClickDone, true);
        eventStopPropagation(event);
    }
}
function toolBarContextMouse(event, flyout){
    if(!event){ event = window.event;}
    contextEvent = event;
    var obj = eventSrc(event);
    var class1;
    var class2;
    var evalObj;
    
    if(flyout){
        class1 = "flyoutButton";
        class2 = "flyoutButtonOver";
        evalObj = flyoutObj;
    } else {
        class1 = "contextButton";
        class2 = "contextButtonOver";
        evalObj = contextObj;
    }

    while(obj.className != class1 & obj.tagName != "BODY"){
        obj = obj.parentNode;
    }
    
    if(obj == evalObj){return; }
    
    if(obj.className == class1){
        
        if(!flyout){
            flyoutEvent = "";
            popupClose(2);
        }
        
        if(evalObj !== ""){
            evalObj.className = class1;
        }
        
        if(!flyout){
            contextObj = obj;
        } else {
            flyoutObj = obj;
        }
        obj.className = class2;
    }
}
function toolBarContextOut(){
    if(flyoutEvent){return; }
    if(contextObj !== ""){
        contextObj.className = "contextButton";
    }
    contextObj = "";
}    
function toolBarContext(button, id){

    if(contextID == button.id){
        contextID = "";
        popupClose();
        return;
    }
    
    contextButtonObj = button;
    contextID = contextButtonObj.id;
    contextButtonObj.className = "toolbar-context";
    var content = getObj("tbctx" + id).innerHTML;
    popupOpen(findPos(button)[0]+ 20, findPos(button)[1], content, 1);
    toolBarContextSize();

}
function toolBarContextSize(){
    var contextDiv = popupLayer1.childNodes[0];
    var contextChildren = contextDiv.childNodes;
    var width = contextDiv.offsetWidth;
    var child;
    
    contextDiv.style.width = width + 7 + "px";
    
    for (var i = 0; i < contextChildren.length; i++) {
        child = contextChildren[i];

        if(child.className == "contextSep"){
            child.style.width = width - 25 + "px";
        } else if(child.className == "contextButton") {
            child.style.width = width + 5 + "px";
        }
    }
    
    popupSetSize();
}

function toolbarFlyout(obj, contentID){
    toolBarContextMouse(contextEvent);
    flyoutEvent = "1";
    var flyout = getObj(contentID);
    var pos = findPos(obj);
    var posX = pos[1] + obj.offsetWidth + 2;
    var posY = pos[2];
    
    popupOpen(posY, posX, flyout.innerHTML, 1, 2);
    
    var flyoutDiv = popupLayer2.childNodes[0];

    var flyoutChildren = flyoutDiv.childNodes;
    var width = popupLayer2.offsetWidth;
    var child;
    for (var i = 0; i < flyoutChildren.length; i++) {
        child = flyoutChildren[i];
        if(child.className == "flyoutSep"){
            child.style.width = width - 25 + "px";
        } else {
            child.style.width = width + 5 + "px";
        }
    }
    
    popupSetSize(2);

}
function toolBarOption(button, id){
    var contentObj = getObj("tbopt" + id);
    var content = contentObj.innerHTML;
    var children = contentObj.childNodes[0].childNodes;
    
    if(children.length > 10){
        contentObj.childNodes[0].style.height = "130px";
    }
    
    popupOpen(findPos(button)[0]+ 20, findPos(button)[1] + 1, content, 1);

    var popupWidth = popupLayer1.offsetWidth;
	
	for (var i = 0; i < children.length; i++) {
		children[i].style.height = popupWidth + "px";
	}
}
function toolBarOptionMouse(){
	
	while(obj.className != "optionButton" & obj.tagName != "BODY"){
		obj = obj.parentNode;
	}
	
	if(obj.className == "optionButton"){
		
		if(optionObj !== ""){
			optionObj.className = "optionButton";
		}
		optionObj = obj;
		optionObj.className = "optionButtonOver";
	}
}

var mainHeight;
var mainHeader;
var mainNav;
var mainNavTitle;
var mainNavTree;
var mainNavButtons;
var mainNavResize;
var mainContent;
var mainIframe;
var mainFooter;
var mainEvent;
var mainAction = false;
var mainNavSelected;
var mainNavArray = [];
var mainNavSrc = [];

function mainInit(){
    mainHeader = getObj("mainHeader");
    mainNav = getObj("mainNav");
    mainNavTitle = getObj("mainNavTitle");
    mainNavTree = getObj("mainNavTree");
    mainNavButtons = getObj("mainNavButtons");
    mainNavResize = getObj("mainNavResize");
    mainContent = getObj("mainContent");
    mainIframe = getObj("mainIframe");
    mainEvent = getObj("mainEvent");
    mainFooter = getObj("mainFooter");
    
    mainPosition();
    
    var navChildren = mainNavButtons.childNodes;
    var child;
    
    for (var i = 0; i < navChildren.length; i++) {
        child = navChildren[i];
        
        if(child.id && child.id.substr(0, 3) == "nb_"){
            if(!mainNavSelected){ mainNavSelected = child;}
            attachEvent(child, "mouseover", mainNavButtonOn);
            attachEvent(child, "mouseout", mainNavButtonOff);
            attachEvent(child, "mousedown", mainNavClick);
        }
    }
    
    mainNavChange(mainNavSelected);
    checkSession();
    window.onresize = mainPosition;
}
function mainPosition(){
    var posY = mainNav.offsetTop;
    mainHeight = document.documentElement.clientHeight - posY - 5;
    var posX = mainNav.offsetWidth + mainNavResize.offsetWidth;
    var width = document.documentElement.clientWidth - 8;
    mainNav.style.height = mainHeight + "px";
    mainNavResize.style.height = mainHeight + "px";
    mainNavTree.style.height = mainHeight - (mainNavTitle.offsetHeight + mainNavButtons.offsetHeight + 6) + "px";
    mainNavTree.style.width = mainNav.offsetWidth - 6 + "px";
    mainContent.style.width = width - posX + "px";
    mainContent.style.height = mainHeight + "px";
    mainIframe.style.top = mainContent.offsetTop + "px";
    mainIframe.style.left = mainContent.offsetLeft + "px";
    mainIframe.style.width = width - posX + "px";
    mainIframe.style.height = mainHeight - (mainFooter.offsetHeight) + 2 + "px";
    mainFooter.style.left = mainContent.offsetLeft + "px";
    mainFooter.style.width = width - posX + "px";
    mainFooter.style.top = mainIframe.offsetTop + mainIframe.offsetHeight + "px";
}
function mainNavChangeUrl(navId, url){
    mainNavChange(getObj("nb_" + navId), url);
}
function mainNavChange(obj, url){
    if(mainNavSelected != obj){
        if(mainNavTree.innerHTML !== ""){
            mainNavArray[removeNonNum(mainNavSelected.id)] = mainNavTree.innerHTML;
        }
        mainNavSelected.style.backgroundImage = "url(/csimg/ab_0_a.gif)";
        mainNavSelected.style.color = "#204D89";
        mainNavSelected = obj;
    }
    
    mainNavSelected.style.backgroundImage = "url(/csimg/ab_1_a.gif)";
    mainNavSelected.style.color = "black";
    mainNavTitle.innerHTML = mainNavSelected.innerHTML;
    
    var appId = removeNonNum(mainNavSelected.id);
    var ajaxResp, xmlFile, xslFile, iframeSrc;
    
    if(!mainNavArray[appId]){
        ajaxResp = [];
        xmlFile = "l_csi_navigation.p_nav_load?i_app_id=" + appId;
        xslFile = "l_csi_navigation.p_treeview_xsl";
        ajaxResp = xslTransform(xmlFile, xslFile);
    
        mainNavTree.innerHTML = ajaxResp[0];
        mainNavArray[appId] = ajaxResp[0];
        iframeSrc = ajaxResp[1].getElementsByTagName("loadpage")[0];
        mainNavSrc[appId] = iframeSrc.getAttribute("url");
    } else {
        mainNavTree.innerHTML = mainNavArray[appId];
    }
    
    if(!url){
        mainIframeSrc(mainNavSrc[appId]);
    } else {
        mainIframeSrc(url);
    }
}

function mainIframeSrc(url){
    if(url === ""){ return;}
    mainIframe.src = url;
}

function mainNavButtonOn(event){
    if(mainAction){ return;}
    if(!event){ event = window.event;}
    var obj = eventSrc(event);

    while(obj.tagName != "A" & obj.tagName != "BODY"){
        obj = obj.parentNode;
    }
    
    if(obj == mainNavSelected){
        obj.style.backgroundImage = "url(/csimg/ab_1_b.gif)";
    } else {
        obj.style.backgroundImage = "url(/csimg/ab_0_b.gif)";
    }
}

function mainNavButtonOff(event){
    if(mainAction){ return;}
    if(!event){ event = window.event;}
    var obj = eventSrc(event);
    
    while(obj.tagName != "A" & obj.tagName != "BODY"){
        obj = obj.parentNode;
    }
    
    if(obj == mainNavSelected){
        obj.style.backgroundImage = "url(/csimg/ab_1_a.gif)";
    } else {
        obj.style.backgroundImage = "url(/csimg/ab_0_a.gif)";
    }
}

function mainNavClick(event){
    mainAction = true;
    if(!event){ event = window.event;}
    var obj = eventSrc(event);
    
    while(obj.tagName != "A" & obj.tagName != "BODY"){
        obj = obj.parentNode;
    }
    
    mainNavChange(obj);
    
    getObj(mainNavSelected).className = "nav-button-on";
    
    eventListenerStart("mouseup", mainNavClickDone, true);
    eventStopPropagation(event);
    eventDefault(event);
    
    function mainNavClickDone(event){
        if(!event){ event = window.event;}
        
        eventListenerStop("mouseup", mainNavClickDone, true);
        eventStopPropagation(event);
        
        mainAction = false;    
    }
}

function mainResizeNav(event){
    var deltaX = event.clientX;
    mainEvent.style.left = mainNavResize.offsetLeft + "px";
    mainEvent.style.top = mainNavResize.offsetTop + "px";
    mainEvent.style.height = mainNavResize.offsetHeight + 2 + "px";
    mainEvent.style.width = "4px";
    
    cursorOn(event.clientX, event.clientY, "e-resize");
    
    eventListenerStart("mousemove", resizeMove, true);
    eventListenerStart("mouseup", resizeDone, true);
    eventStopPropagation(event);
    eventDefault(event);
    
    function resizeMove(event){
        if(!event){ event = window.event;}
        eventStopPropagation(event);
        mainEvent.style.left = (event.clientX) - 3 + "px";
        cursorMove(event.clientX, event.clientY);
    }
    
    function resizeDone(event){
        if(!event){ event = window.event;}
        
        navLoc = (event.clientX) - 10;
		
		if(navLoc < 50){
			navLoc = 50;
		}
		
		mainNav.style.width = navLoc + 2 + "px";
		mainPosition();
		cursorOff();
		document.body.style.cursor = "DEFAULT";
		mainNavResize.style.backgroundColor = "";
		mainEvent.style.height = "0px";
		mainEvent.style.width = "0px";
		
		eventListenerStop("mousemove", resizeMove, true);
		eventListenerStop("mouseup", resizeDone, true);
		eventStopPropagation(event);	
	}
}

// AJAX functions
function createXMLHttpRequest() {
	var msxmls = new Array(5);
	if (window.XMLHttpRequest){
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		msxmls[0] = "Msxml2.XMLHTTP.5.0";
		msxmls[1] = "Msxml2.XMLHTTP.4.0";
		msxmls[2] = "Msxml2.XMLHTTP.3.0";
		msxmls[3] = "Msxml2.XMLHTTP";
		msxmls[4] = "Microsoft.XMLHTTP";
		for (var i = 0; i < msxmls.length; i++) {
			try {return new ActiveXObject(msxmls[i]);}
			catch (e) {}
		}
	}
}
function xmlRequest(xmlFile, method, callback, cbArgs){
	ajaxReqPost(xmlFile, "", callback, cbArgs);
	/*
    var xmlHttp, ajaxResp;
    
    xmlHttp = createXMLHttpRequest();
    xmlHttp.onreadystatechange = xmlStateChange;
    xmlHttp.open(method, xmlFile, true);
    xmlHttp.send(null);

    function xmlStateChange(){
        if(xmlHttp.readyState == 4){
            if(xmlHttp.status == 200){
                ajaxResp = [];
                ajaxResp[0] = xmlHttp.responseXML;
                ajaxResp[1] = xmlHttp.responseText;
                callback(ajaxResp, cbArgs);
            }
        }
    }
    */
}
function ajaxReqPost(url, args, callback, cbArgs){
    var xmlHttp, ajaxResp = [];
   
    xmlHttp = createXMLHttpRequest(xmlHttp);
    xmlHttp.open("POST", url, true);
    xmlHttp.onreadystatechange = xmlStateChange;
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form_urlencoded;");
    xmlHttp.send(args);

    function xmlStateChange(){
        if(xmlHttp.readyState == 4){
            if(xmlHttp.status == 200){
                ajaxResp[0] = xmlHttp.responseXML;
                ajaxResp[1] = xmlHttp.responseText;
                callback(ajaxResp, cbArgs);
                delete xmlHttp.onreadystatechange;
				xmlHttp = null;
				if(window.ActiveXObject){
					CollectGarbage();
				}
            }
        }
    }
    
}
function xslRunTransform(xml, xsl){
    var transformHTML, xsltProcessor, xsltResult, xmlSerial;
    if(window.ActiveXObject){
        transformHTML = (xml.transformNode(xsl));
    } else {
        xsltProcessor = new XSLTProcessor();
        xsltProcessor.importStylesheet(xsl);
        xsltResult = xsltProcessor.transformToDocument(xml);
        xmlSerial = new XMLSerializer();
        transformHTML = xmlSerial.serializeToString(xsltResult);
    }
    
    return transformHTML;
}
// XSL Transformation
function xslTransform(xmlURL, xslURL){
    var ajaxResp = [];
    var xml;
    var xsl;

    if(window.ActiveXObject) {
        // Load XML
        xml = new ActiveXObject("MSXML2.DOMDocument");
        xml.async = false;
        xml.load(xmlURL);

        // Load XSL
        xsl = new ActiveXObject("MSXML2.DOMDocument");
        xsl.async = false;
        xsl.load(xslURL);
    } else if(window.XMLHttpRequest){
        // Load XML
        xml = document.implementation.createDocument("", "", null);
        xml.async = false;
        xml.load(xmlURL);

        // Load XSL
        xsl = document.implementation.createDocument("", "", null);
        xsl.async = false;
        xsl.load(xslURL);
    }

    ajaxResp[0] = xslRunTransform(xml, xsl);
    ajaxResp[1] = xml;
    ajaxResp[2] = xsl;
    return ajaxResp;
}
function xslTransformLocalXSL(xmlURL, xsl){
    var ajaxResp = [];
    var xml;

    if(window.ActiveXObject) {
        // Load XML
        xml = new ActiveXObject("MSXML2.DOMDocument");
        xml.async = false;
        xml.load(xmlURL);

    } else if(window.XMLHttpRequest){
        // Load XML
        xml = document.implementation.createDocument("", "", null);
        xml.async = false;
        xml.load(xmlURL);
    }
    
    ajaxResp[0] = xslRunTransform(xml, xsl);
    ajaxResp[1] = xml;
    ajaxResp[2] = xsl;
    return ajaxResp;
}
function xslTransformLocalXML(xml, xslURL){
    var ajaxResp = [];
    var xsl;

    if(window.ActiveXObject) {
        // Load XML
        xsl = new ActiveXObject("MSXML2.DOMDocument");
        xsl.async = false;
        xsl.load(xslURL);

	} else if(window.XMLHttpRequest){
		// Load XML
		xsl = document.implementation.createDocument("", "", null);
		xsl.async = false;
		xsl.load(xslURL);
	}
	
	ajaxResp[0] = xslRunTransform(xml, xsl);
	ajaxResp[1] = xml;
	ajaxResp[2] = xsl;
	return ajaxResp;
}
function xslTransformLocal(xml, xsl){
	var ajaxResp = [];
	
	ajaxResp[0] = xslRunTransform(xml, xsl);
	ajaxResp[1] = xml;
	ajaxResp[2] = xsl;
	return ajaxResp;
}
function xmlSerialize(obj) {
	if (obj.xml) {
		return obj.xml;
	} else{
		var serializer = new XMLSerializer();
		return serializer.serializeToString(obj);
	}
}
var currTab;

function unhideTab(id){
    getObj("tabbutton" + id).style.display = "";
}
function hideTab(id){
    getObj("tabbutton" + id).style.display = "none";
}
function tab(tabObj, action){
    var nodes = tabObj.childNodes;
    var cls;
    
    if(action === 0){
        tabClass(tabObj, "10");
        currTab = tabObj;
        getObj("tab" + removeNonNum(tabObj.id)).style.display = "";
        return;
    }
    
    if(action === 1 || action === 2){
        tabClass(tabObj, "11");
        
        if(action === 2){
            tabClass(tabObj, "10");
        }
        
        if(currTab && currTab != tabObj){
            tabClass(currTab, "00");
            getObj("tab" + removeNonNum(currTab.id)).style.display = "none";
        }
        currTab = tabObj;
        getObj("tab" + removeNonNum(tabObj.id)).style.display = "";
        return;
	}
	
	switch(nodes[0].className.substr(3, 2)){
		case "10":
			cls = "11";
		break;
		case "11":
			cls = "10";
		break;
		case "00":
			cls = "01";
		break;
		case "01":
			cls = "00";
		break;
	}

	tabClass(tabObj, cls);	
}
function tabClass(tabObj, cls){
	var nodes = tabObj.childNodes;
	nodes[0].className = "tab" + cls + "a";
	nodes[1].className = "tab" + cls + "b";
	nodes[2].className = "tab" + cls + "c";
}


/****************************************************************************************
* Global used in Save Form Warning Logic. Set clearUnload to true before Save or Reset
* to turn off save warning.
*****************************************************************************************/
var clearUnload = false;

/****************************************************************************************
* THIS VERSION WILL WORK IN FIREFOX!
* What if this event is triggered by a Keep Alive message? Need to disable in that case?
*****************************************************************************************
* noSaveChk - onload() callback for any page with a form submit callback procedure.
* Activates onbeforeunload event handler.
*----------------------------------------------------------------------------------------
* function noSaveChk()
*****************************************************************************************/
function noSaveChk() {
	var isModified = false;
    window.onbeforeunload = function (oEvent){
	    if (!oEvent) oEvent = window.event;
		
		isModified = isFormModified(getObj("master_form"));
        if(!clearUnload && isModified){
            oEvent.returnValue = "Form changes have not been saved.";
		    return("Form changes have not been saved.");			
        }
    }
}

/************************************************************************************
* THIS VERSION WILL ***!NOT!*** WORK IN FIREFOX!
* noSaveChk - onbeforeunload() callback for any page with a form
* submit callback procedure.
*------------------------------------------------------------------------------------
* function noSaveChk()
*************************************************************************************/
function noSaveChkOld(){
    if(!clearUnload && isFormModified(getObj("master_form"))){
        event.returnValue = "Form changes have not been saved.";
		//return("Form changes have not been saved.");
    }
}

/************************************************************************************
* onUnloadForFormProcPage - default onUnload() callback for any page with a form
* submit callback procedure.
*------------------------------------------------------------------------------------
* function onUnloadForFormProcPage()
*************************************************************************************/
function onUnloadForFormProcPage() {
    clearUnload = true;
	// DOES NOT WORK in IE7
    //window.onbeforeunload = null; 
	return true;
}

function singleFileUpload(id, i_attach_idx){
    var url = "l_csi_macros.p_upload?i_single=T&i_input_id=" + id + "&i_attach_idx=" + i_attach_idx;
    intPopup('<iframe id="multifile" frameborder="0" height="100" width="350" scrolling="no" src="'+ url +'" allowtransparency="true"></iframe>');
}
function singleFileProc(id, attach_idx, file){
    intPopupClose();
    var fileObj = getObj(id);
    fileObj.value = file;
    if(fileObj.onblur){ fileObj.onblur(); }
}
function multiFileCleanup(id){
    var url = "l_csi_macros.p_multi_file_cleanup?i_input_id=" + id;
    xmlRequest(url, "post", multiFileCleanupCB);
}
function multiFileCleanupCB(ajaxResp, id){
    return;
}
function multiFileUpload(id, i_attach_idx){
    var url = "l_csi_macros.p_upload?i_input_id=" + id + "&i_attach_idx=" + i_attach_idx;
    intPopup('<iframe id="multifile" frameborder="0" height="100" width="350" scrolling="no" src="'+ url +'" allowtransparency="true"></iframe>');
}
function multiFileDelete(file, id, i_attach_idx){
    var agree = confirm("Click OK to confirm the deletion of this file.");
    if(!agree){ return; }
    var url = "l_csi_macros.p_multi_file_delete?i_file=" + file + "&i_input_id=" + id + "&i_attach_idx=" + i_attach_idx;
    xmlRequest(url, "post", multiFileListCB, id);
}
function multiFileList(id, i_attach_idx){
    var url = "l_csi_macros.p_multi_file_list?i_input_id=" + id + "&i_attach_idx=" + i_attach_idx;
    xmlRequest(url, "post", multiFileListCB, id);
}
function multiFileListCB(ajaxResp, id){
    getObj(id).innerHTML = ajaxResp[1];
    intPopupClose();
}
function formSave(formName, formClose){
    clearUnload = true;
    var reqFields = getObj("cs_req_fields").innerHTML.split(",");
    var fieldArray = [];
    var formObj = getObj(formName);
    var evalArrayAssoc = [];
    var evalArray = [];
    var evalArrayIdx = 0;
    var evalObj;
    var error;
    var valueFound;
    var i;
    var y;
    
    for (i = 0; i < reqFields.length; i++) {
        fieldArray[reqFields[i]] = 0;
    }
    
    for (i = 0; i < formObj.length; i++) {
        evalObj = formObj.elements[i];
        
        if(evalObj.name){
            for(y = 0; y < reqFields.length; y++){
                if(evalObj.name == reqFields[y]){
                    if(!evalArrayAssoc[reqFields[y]]){
                        evalArrayAssoc[reqFields[y]] = reqFields[y];
                        evalArray[evalArrayIdx] = reqFields[y];
                        evalArrayIdx++;
                    }
                }
            }
        }
    }
    
    for (i = 0; i < evalArray.length; i++) {
        evalObj = document.getElementsByName(evalArray[i]);
        valueFound = 0;
        
        for(y = 0; y < evalObj.length; y++){
            if(evalObj[y].value !== ""){
                valueFound = 1;
            }
        }
        
        for(y = 0; y < evalObj.length; y++){
            if(valueFound === 0){
                evalObj[y].style.backgroundColor = "#ff7870";
                error = true;
            } else {
                evalObj[y].style.backgroundColor = "";
            }
        }
    }
    
    if(error){
        alert("Error: Missing Required fields");
        return;
    }
    
    if(formClose == 1){
        getObj("i_save_close").value = "Y";
    }
    
    if(currTab){
        getObj("i_tab").value = removeNonNum(currTab.id);
    }
    
    formObj.submit();
}
function formReset(formName){
    clearUnload = true;
    formObj = getObj(formName);
    formObj.reset();
}
function aimLaunch(fieldID){
    var sn = getObj(fieldID).value;
    
    if(sn !== ""){
        location.href = "aim:goim?screenname=" + sn;
    }

}
function emailLaunch(fieldID){
    var email = getObj(fieldID).value;
    
    if(email !== ""){
        location.href = "mailto:" + email;
    }

}
function webLaunch(fieldID){
    var webpage = getObj(fieldID).value;
    
    if(webpage !== ""){
        window.open(webpage);
    }
}
function formatSSN(fieldID){
    var ssnField = getObj(fieldID);
    var ssn = ssnField.value.replace(/[^0-9]/g, "");
    var ssnLength = ssn.length;
    
    if(ssnLength != 9){
        return;
    } else {
        ssn = ssn.substr(0,3) + "-" + ssn.substr(3,2) + "-" + ssn.substr(5,4);
    }
    
    ssnField.value = ssn;
}    
function formatPhone(fieldID){
    var phoneField = getObj(fieldID);
    var phone = phoneField.value.replace(/[^0-9]/g, "");
    var phoneLength = phone.length;
    switch(phoneLength){
        case 11:
            if(phone.substr(0,1) == 1){
                phone = "+1 (" + phone.substr(1,3) + ") " + phone.substr(4,3) + "-" + phone.substr(7,4);
            } else {
                phone = "(" + phone.substr(0,3) + ") " + phone.substr(3,3) + "-" + phone.substr(6,4) + " Ext. " + phone.substr(10,1);
            }
            break;
        case 10:
            phone = "(" + phone.substr(0,3) + ") " + phone.substr(3,3) + "-" + phone.substr(6,4);
            break;
        case 7:
            phone = phone.substr(0,3) + "-" + phone.substr(3,4);
            break;
        default:
            if (phoneLength > 11) {
                if(phone.substr(0,1) == 1){
                    phone = "+1 (" + phone.substr(1,3) + ") " + phone.substr(4,3) + "-" + phone.substr(7,4) + " Ext. " + phone.substr(11);
                } else {
                    phone = "(" + phone.substr(0,3) + ") " + phone.substr(3,3) + "-" + phone.substr(6,4) + " Ext. " + phone.substr(10);
                }
            }
            break;
    }
    phoneField.value = phone;
}

var autoCompOn = 0;
var autoObj;
var autoIdx;
var autoEvent = 0;
var autoCurr = 0;
var autoLen = 0;
var autoDiv = "";
var autoXML;

function autoComplete(event, obj, proc, len, idx){
    if(!event){ event = window.event;}
    autoval = obj.value;
    autoObj = obj;
    autoIdx = idx;
    var stopProc = 0;
    
    if(autoval === "" || autoval.length < len){
        popupClose();
        return;
    }
    
    switch(event.keyCode) {
        case 38: //up arrow
            autoRowSel("up");
            stopProc = 1;
            break;
        case 40: //down arrow
            autoRowSel("down");
            stopProc = 1;
            break;
        case 13: //enter
            autoSetVal();
            stopProc = 1;
            break;
    }
    
    if(stopProc == 1){ return; }
        
    xmlRequest(proc + "?i_val=" + autoval, "post", autoCompleteCallBack);
    
    if(autoCompOn === 0){
        popupClose();
    }
}
function autoCompleteCallBack(ajaxResp){

    autoXML = ajaxResp[0];
    autoLen = autoXML.getElementsByTagName("autocomplete")[0].getAttribute("rows");
    var height, content;
    var lineHeight = 14;

    if(autoLen == "0"){
        popupClose();
        return;
    } else if(autoLen > 10){
        height = (lineHeight * 10);
    } else {
        height = (lineHeight * autoLen);
    }
        
    if(popupOn === 0){
        autoCompOn = 1;
        content = "<div id=\"autocompdiv\" ";
        content += "class=\"autocomp\" ";
        content += "onmousedown=\"autoEvent=1;\" onmouseup=\"autoEvent=0\" ";
        content += "style=\"width: " + (autoObj.offsetWidth - 2) + "px;\">&nbsp;</div>";
    
        popupOpen(findPos(autoObj)[0]+ 22, findPosX(autoObj)[1]+ 1, content, 0);
    }
    
    autoDiv = getObj("autocompdiv");
    var respRows = autoXML.getElementsByTagName("ac");
    var rows = "";
    for (var i = 0; i < respRows.length; i++) {
        if(i === 0){
            rows += "<div onclick=\"autoClick(" + i + ");\" ";
            rows += "onmouseover=\"autoMouse(" + i + ");\" ";
            rows += "class=\"autoOn\">";
            rows += respRows[i].firstChild.nodeValue + "</div>";
        } else {
            rows += "<div onclick=\"autoClick(" + i + ");\" ";
            rows += "onmouseover=\"autoMouse(" + i + ");\" ";
            rows += "class=\"autoOff\">";
            rows += respRows[i].firstChild.nodeValue + "</div>";
        }
    }
    autoDiv.innerHTML = rows;
    autoDiv.style.height = height + "px";
    autoCurr = 0;
    popupSetSize();
}
function autoClick(id){
    autoCurr = id;
    autoSetVal();
}
function autoMouse(id){
    autoDiv.childNodes[autoCurr].className = "autoOff";
    autoDiv.childNodes[id].className = "autoOn";
    autoCurr = id;
}
function autoRowSel(dir){
    if(autoDiv !== ""){
        if (dir == "up"){
            if(autoCurr === 0){
                return;
            } else {
                autoDiv.childNodes[autoCurr].className = "autoOff";
                autoCurr = autoCurr - 1;
                autoDiv.childNodes[autoCurr].className = "autoOn";
            }
        } else {
            if(autoCurr + 1 == autoLen){
                return;
            } else {
                autoDiv.childNodes[autoCurr].className = "autoOff";
                autoCurr = autoCurr + 1;
                autoDiv.childNodes[autoCurr].className = "autoOn";
            }
        }
    }        
}
function autoSetVal(){
    if(autoDiv){
        autoObj.value = autoDiv.childNodes[autoCurr].innerText;
    }
    focus(autoObj);
    popupClose();
}
function autoBlur(){
    var val, hiddenField, respRows, hiddenVal, i;
    if(autoEvent === 0){
        popupClose();
        val = autoObj.value.toUpperCase();
        hiddenField = getObj("autoCompField_" + autoIdx);
        if(!autoXML){
            hiddenField.value = "";
            hiddenField.onchange();
            return;
        }
        respRows = autoXML.getElementsByTagName("ac");
        hiddenVal = "";
        
        for (i = 0; i < respRows.length; i++) {
            if(respRows[i].firstChild.nodeValue.toUpperCase() == val){
                autoObj.value = respRows[i].firstChild.nodeValue;
                hiddenVal = respRows[i].getAttribute("value");
			}
		}
	
		if(hiddenVal === ""){
			autoObj.value = "";
		}
		
		hiddenField.value = hiddenVal;
		hiddenField.onchange();
		
		autoCompOn = 0;
		autoObj = "";
		autoIdx = "";
		autoEvent = 0;
		autoCurr = 0;
		autoLen = 0;
		autoDiv = "";
		autoXML = "";		
	}
}
function richEditComm(id, command){
	var editor = getObj("editor" + id);
	editor.setActive();
	document.execCommand(command, false, null);
}


var calXSL = "";
var calPopup = "";
var calCurr = "";
var calCurrClass = "";
var calButtonObj = "";
var calTarget = "";
var calDateMask = "";
var calToday = "";
var calDefaultStatus = "To choose a date, click on a day";

var calMonthArray1 = [];
calMonthArray1.January = 1;
calMonthArray1.February = 2;
calMonthArray1.March = 3;
calMonthArray1.April = 4;
calMonthArray1.May = 5;
calMonthArray1.June = 6;
calMonthArray1.July = 7;
calMonthArray1.August = 8;
calMonthArray1.September = 9;
calMonthArray1.October = 10;
calMonthArray1.November = 11;
calMonthArray1.December = 12;

var calMonthArray2 = [];
calMonthArray2[1] = "January";
calMonthArray2[2] = "February";
calMonthArray2[3] = "March";
calMonthArray2[4] = "April";
calMonthArray2[5] = "May";
calMonthArray2[6] = "June";
calMonthArray2[7] = "July";
calMonthArray2[8] = "August";
calMonthArray2[9] = "September";
calMonthArray2[10] = "October";
calMonthArray2[11] = "November";
calMonthArray2[12] = "December";

function calDayStatus(idArray){
    return calGetDayName(idArray[1]) + ", " + getObj("calbutton_3").innerHTML + " " + idArray[2] + ", " + getObj("calbutton_4").innerHTML;
}
function calPickDate(event){
    if(!event){ event = window.event;}
    var obj = eventSrc(event);
    var idArray = obj.id.split("_");
    var dateString = getObj("calbutton_3").innerHTML +" "+ idArray[2] +", "+ getObj("calbutton_4").innerHTML;
    calFormatDate(dateString);
}
function calSetToday(){
    var dateToday = getObj("calbutton_7").innerHTML.replace("Today: ", "");
    calFormatDate(dateToday);
}
function calFormatDate(dateString){
    var url = "l_csi_calendar.p_calendar_format_date?i_date=" + dateString + "&i_mask=" + calDateMask;
    xmlRequest(url, "GET", calSetDate);
}
function calSetDate(ajaxResp){
    calTarget.value = ajaxResp[1];
    popupClose();
    if(calTarget.onblur){ calTarget.onblur(); }
}
function calChangeMonth(direction){
    var currMon = getObj("calbutton_3");
    var currIdx = calMonthArray1[currMon.innerHTML.replace(" ", "")];
    var prev;
    var next;
    
    if(currIdx == 12){
        prev = 11;
        next = 1;
    } else if(currIdx == 1){
        prev = 12;
        next = 2;
    } else {
        prev = currIdx - 1;
        next = currIdx + 1;
    }
    
    if(direction == 1){
        currMon.innerHTML = calMonthArray2[prev];
    } else {
        currMon.innerHTML = calMonthArray2[next];
    }
}
function calGetDayName(idx){
    var dayofweek;
    switch(idx){
        case "1":
            dayofweek = "Sunday";
            break;
        case "2":
            dayofweek = "Monday";
            break;
        case "3":
            dayofweek = "Tuesday";
            break;
        case "4":
            dayofweek = "Wednesday";
            break;
        case "5":
            dayofweek = "Thursday";
            break;
        case "6":
            dayofweek = "Friday";
            break;
        case "7":
            dayofweek = "Saturday";
            break;
    }
    
    return dayofweek;
}
            
function calButtonOver(event){
    if(!event){ event = window.event;}
    var obj = eventSrc(event);
    var idArray = obj.id.split("_");
    var calstatus;
    
    switch(idArray[1]){
        case "1":
            calstatus = "Click to view previous year";
            break;
        case "2":
            calstatus = "Click to view previous month";
            break;
        case "3":
            calstatus = "Click to choose a month";
            break;
        case "4":
            calstatus = "Click to choose year";
            break;
        case "5":
            calstatus = "Click to view next month";
            break;
        case "6":
            calstatus = "Click to view next year";
            break;
        case "7":
            calstatus = "Click to see current month";
            break;
        case "8":
            calstatus = "Click to set date blank";
            break;
        case "9":
            calstatus = "Click to close calendar";
            break;
    }
    
    calStatus(calstatus);
    
    if(calButtonObj !== "" && calButtonObj != obj){
        calResetButtons();
    }
    
    calButtonObj = obj;
    obj.style.backgroundColor = "#EEEEEE";
    obj.title = calstatus;
}

function calButtonClick(event){
    if(!event){ event = window.event;}
    var obj = eventSrc(event);
    var targetObj;
    var idArray = obj.id.split("_");
    var calstatus;
    
    switch(idArray[1]){
        case "1":
            targetObj = getObj("calbutton_4");
            targetObj.innerHTML = parseInt(targetObj.innerHTML, 10) - 1;
            calRefresh();
            break;
        case "2":
            calstatus = "Click to view previous month";
            calChangeMonth(1);
            calRefresh();
            break;
        case "3":
            calstatus = "Click to choose a month";
            break;
        case "4":
            calstatus = "Click to choose year";
            break;
        case "5":
            calstatus = "Click to view next month";
            calChangeMonth(2);
            calRefresh();
            break;
        case "6":
            targetObj = getObj("calbutton_4");
            targetObj.innerHTML = parseInt(targetObj.innerHTML, 10) + 1;
            calRefresh();
            break;
        case "7":
            calstatus = "Click to see current month";
            calSetToday();
            break;
        case "8":
            calTarget.value = "";
            popupClose();
            if(calTarget.onblur){ calTarget.onblur(); }
            break;
        case "9":
            popupClose();
            if(calTarget.onblur){ calTarget.onblur(); }
            break;
    }
}

function calResetButtons(){
    calButtonObj.style.backgroundColor = "buttonface";
}
function calDaysOver(event){
    if(!event){ event = window.event;}
    var obj = eventSrc(event);
    var idArray = obj.id.split("_");
    
    calStatus(calGetDayName(idArray[1]));
}
function calMouseOver(event){
    if(!event){ event = window.event;}
    var obj = eventSrc(event);
    var idArray = obj.id.split("_");
    
    if(obj.className !== ""){

        if(calCurr !== "" && calCurr != obj){
            calCurr.className = calCurrClass;
        }
        
        if(obj.className == "calnull"){
            calCurr = "";
            calCurrClass = "";
            calStatus(calDefaultStatus);
        } else {
            calCurr = obj;
            calCurrClass = obj.className;
            obj.className = "caldayover";
            calStatus(calDayStatus(idArray));
            obj.title = "Day of Week: " + calGetDayName(idArray[1]) + "\n" + "Day: " + obj.innerHTML;
        }
            
    }    
}

function calMouseOut(){
    if(calCurr !== ""){
        calCurr.className = calCurrClass;
    }
    calCurr = "";
    calCurrClass = "";
}

function calStatus(calstatus){
    getObj("calstatus").innerHTML = calstatus;
}
function calShow(objID, dateMask){
    calTarget = getObj(objID);
    if(calTarget.disabled){ return; }
    calDateMask = dateMask;
    var objDate = calTarget.value;
    xmlURL = "l_csi_calendar.p_calendar_popup_xml?i_date=" + objDate + "&i_format=" + dateMask;
    xslURL = "l_csi_calendar.p_calendar_popup_xsl";
    var pos = findPos(calTarget);
    var posTop = pos[1] - 248;
    var posLeft = pos[0];
    if(posTop < 36){posTop = 36;}
    
    var ajaxResp = [];
    
    if(calXSL !== ""){
        ajaxResp = xslTransformLocalXSL(xmlURL, calXSL);
    } else {
        ajaxResp = xslTransform(xmlURL, xslURL);
        calXSL = ajaxResp[2];
    }

	popupOpen(posTop, posLeft, ajaxResp[0], 1);
}
function calRefresh(){
	var objDate = calTarget.value;
	var monthVal = getObj("calbutton_3").innerHTML + "-" + getObj("calbutton_4").innerHTML;
	xmlURL = "l_csi_calendar.p_calendar_popup_xml?i_action=refresh&i_date=" + objDate + "&i_format=" + calDateMask + "&i_month=" + monthVal;
	var ajaxResp = xslTransformLocalXSL(xmlURL, calXSL);
	getObj("calBody").innerHTML = ajaxResp[0];
	popupSetSize();
}

var curr_priv_app = "";

function pa_rights(i_id) {
    var new_app = "app_" + i_id;
    if(curr_priv_app !== ""){
        getObj(curr_priv_app).style.display = "none";
    }
    curr_priv_app = new_app;
    getObj(new_app).style.display = "";
}

function button_ep(i_obj){
    var button_id = "epb_" + i_obj.value;
    var button = getObj(button_id);
    var reset_privs = 0;
    var coll;

    if(i_obj.checked){
        button.style.display = "";
        button.click();
    } else {
        button.style.display = "none";
        div_obj = getObj("app_" + i_obj.value);

        if (div_obj.style.display === ""){
            reset_privs = 1;
        }

        div_obj.style.display = "none";
		coll = div_obj.all.tags("INPUT");
		if (coll !== null) {
			for (i = 0; i < coll.length; i++) {
				coll[i].checked = false;
			}
		}

		if (reset_privs == 1) {
			coll = document.all.tags("BUTTON");
			if (coll !== null){
				for (i = 0; i < coll.length; i++) {
					if (coll[i].id.substr(0,4) == "epb_"){
						if (coll[i].style.display === ""){
							coll[i].click();
							return;
						}
					}
				}
			}
		}
	}
}

function journalEdit(jid){
    var url = "l_csi_journal.p_edit?i_journal_key=" + jid + "&i_input_id=" + getObj("i_j_tmp_idx").value;
    xmlRequest(url, "post", journalEditCB);
}
function journalEditCB(ajaxResp){
    var jArray = ajaxResp[1].split("|");
    var sel = getObj("i_journal_class");
    
    getObj("i_j_id").value = jArray[0];
    getObj("i_journal_title").value = jArray[1];
    getObj("i_journal_body").value = jArray[3];
    getObj("i_j_fa_idx").value = jArray[5];
    
    for (var i=0; i < sel.length; i++) {
        if (sel[i].value == jArray[4]) {
            sel[i].selected = true;
        }
    }
    
    multiFileList(getObj("i_j_tmp_idx").value, getObj("i_j_fa_idx").value);
}
function journalSave(){
    var url = "l_csi_journal.p_save";
    var args = "i_j_id=" + getObj("i_j_id").value;
    args += "&i_j_type=" + getObj("i_j_type").value;
    args += "&i_j_type_id=" + getObj("i_j_type_id").value;
    args += "&i_j_title=" + getObj("i_journal_title").value;
    args += "&i_j_body=" + getObj("i_journal_body").value;
    args += "&i_j_class=" + getObj("i_journal_class").value;
    args += "&i_j_fa_idx=" + getObj("i_j_fa_idx").value;
    args += "&i_j_tmp_idx=" + getObj("i_j_tmp_idx").value;
    
    ajaxReqPost(url, args, journalSaveCB);
}
function journalSaveCB(ajaxResp){
    getObj("i_j_id").value = "";
    getObj("i_journal_title").value = "";
    getObj("i_journal_body").value = "";
    getObj("i_journal_class").value = "";
	getObj("i_j_fa_idx").value = "";
	getObj(getObj("i_j_tmp_idx").value).innerHTML = "";

	gridUpdate(getObj("i_j_grid_id").value, "refresh");
}
function journalNew(){
	journalSaveCB(null);
	multiFileCleanup(getObj("i_j_tmp_idx").value);
}
function journalDelete(){
	var url = "l_csi_journal.p_delete?i_journal_key=" + getObj("i_j_id").value + "&i_input_id=" + getObj("i_j_tmp_idx").value;
	xmlRequest(url, "post", journalSaveCB);
}

function libraryEdit(lid){
    var url = "l_csi_library.p_edit?i_library_id=" + lid;
    xmlRequest(url, "post", libraryEditCB);
}
function libraryEditCB(ajaxResp){
    var lArray = ajaxResp[1].split("|");
    var sel = getObj("i_library_id");
    
    getObj("i_app_id").value = lArray[0];
    getObj("i_l_type").value = lArray[1];
       getObj("i_l_id").value = lArray[2];
       getObj("i_file_nm").value = lArray[3];
    getObj("i_display_nm").value = lArray[4];
    getObj("i_description").value = lArray[5];    
}
function librarySave(){
    var url = "l_csi_library.p_save";
    var args = "i_library_id=" + getObj("i_library_id").value;
    args += "&i_app_id=" + getObj("i_app_id").value;
    args += "&i_l_type=" + getObj("i_l_type").value;
    args += "&i_l_id=" + getObj("i_l_id").value;
    args += "&i_file_nm=" + getObj("i_file_nm").value;
    args += "&i_display_nm=" + getObj("i_display_nm").value;
    args += "&i_description=" + getObj("i_description").value;
    
    ajaxReqPost(url, args, librarySaveCB);
}
function librarySaveCB(ajaxResp){
    getObj("i_library_id").value = "";
    getObj("i_app_id").value = "";
	getObj("i_l_type").value = "";
	getObj("i_l_id").value = "";
	getObj("i_file_nm").value = "";
	getObj("i_display_nm").value = "";
	getObj("i_description").value = "";

	gridUpdate(getObj("i_l_grid_id").value, "refresh");
}
function libraryNew(){
	librarySaveCB(null);
}
function libraryDelete(){
	var url = "l_csi_library.p_delete?i_library_id=" + getObj("i_library_id").value;
	xmlRequest(url, "post", librarySaveCB);
}

function LTrim(str){if(str==null){return null;}for(var i=0;str.charAt(i)==" ";i++);return str.substring(i,str.length);}
function RTrim(str){if(str==null){return null;}for(var i=str.length-1;str.charAt(i)==" ";i--);return str.substring(0,i+1);}
function Trim(str){return LTrim(RTrim(str));}
function LTrimAll(str){if(str==null){return str;}for(var i=0;str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t";i++);return str.substring(i,str.length);}
function RTrimAll(str){if(str==null){return str;}for(var i=str.length-1;str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t";i--);return str.substring(0,i+1);}
function TrimAll(str){return LTrimAll(RTrimAll(str));}
function isNull(val){return(val==null);}
function isBlank(val){if(val==null){return true;}for(var i=0;i<val.length;i++){if((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}}return true;}
function isInteger(val){if(isBlank(val)){return false;}for(var i=0;i<val.length;i++){if(!isDigit(val.charAt(i))){return false;}}return true;}
function isNumeric(val){return(parseFloat(val,10)==(val*1));}
function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}
function isDigit(num){if(num.length>1){return false;}var string="1234567890";if(string.indexOf(num)!=-1){return true;}return false;}
function setNullIfBlank(obj){if(isBlank(obj.value)){obj.value="";}}
function setFieldsToUpperCase(){for(var i=0;i<arguments.length;i++){arguments[i].value = arguments[i].value.toUpperCase();}}
function disallowBlank(obj){var msg=(arguments.length>1)?arguments[1]:"";var dofocus=(arguments.length>2)?arguments[2]:false;if(isBlank(getInputValue(obj))){if(!isBlank(msg)){alert(msg);}if(dofocus){if(isArray(obj) &&(typeof(obj.type)=="undefined")){obj=obj[0];}if(obj.type=="text"||obj.type=="textarea"||obj.type=="password"){obj.select();}obj.focus();}return true;}return false;}
function disallowModify(obj){var msg=(arguments.length>1)?arguments[1]:"";var dofocus=(arguments.length>2)?arguments[2]:false;if(getInputValue(obj)!=getInputDefaultValue(obj)){if(!isBlank(msg)){alert(msg);}if(dofocus){if(isArray(obj) &&(typeof(obj.type)=="undefined")){obj=obj[0];}if(obj.type=="text"||obj.type=="textarea"||obj.type=="password"){obj.select();}obj.focus();}setInputValue(obj,getInputDefaultValue(obj));return true;}return false;}
function commifyArray(obj,delimiter){if(typeof(delimiter)=="undefined" || delimiter==null){delimiter = ",";}var s="";if(obj==null||obj.length<=0){return s;}for(var i=0;i<obj.length;i++){s=s+((s=="")?"":delimiter)+obj[i].toString();}return s;}
function getSingleInputValue(obj,use_default,delimiter){switch(obj.type){case 'radio': case 'checkbox': return(((use_default)?obj.defaultChecked:obj.checked)?obj.value:null);case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;case 'password': return((use_default)?null:obj.value);case 'select-one':
if(obj.options==null){return null;}if(use_default){var o=obj.options;for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].value;}}return o[0].value;}if(obj.selectedIndex<0){return null;}return(obj.options.length>0)?obj.options[obj.selectedIndex].value:null;case 'select-multiple':
if(obj.options==null){return null;}var values=new Array();for(var i=0;i<obj.options.length;i++){if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)){values[values.length]=obj.options[i].value;}}return(values.length==0)?null:commifyArray(values,delimiter);}alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");return null;}
function getSingleInputText(obj,use_default,delimiter){switch(obj.type){case 'radio': case 'checkbox':     return "";case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;case 'password': return((use_default)?null:obj.value);case 'select-one':
if(obj.options==null){return null;}if(use_default){var o=obj.options;for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].text;}}return o[0].text;}if(obj.selectedIndex<0){return null;}return(obj.options.length>0)?obj.options[obj.selectedIndex].text:null;case 'select-multiple':
if(obj.options==null){return null;}var values=new Array();for(var i=0;i<obj.options.length;i++){if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)){values[values.length]=obj.options[i].text;}}return(values.length==0)?null:commifyArray(values,delimiter);}alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");return null;}
function setSingleInputValue(obj,value){switch(obj.type){case 'radio': case 'checkbox': if(obj.value==value){obj.checked=true;return true;}else{obj.checked=false;return false;}case 'text': case 'hidden': case 'textarea': case 'password': obj.value=value;return true;case 'select-one': case 'select-multiple':
var o=obj.options;for(var i=0;i<o.length;i++){if(o[i].value==value){o[i].selected=true;}else{o[i].selected=false;}}return true;}alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");return false;}
function getInputValue(obj,delimiter){var use_default=(arguments.length>2)?arguments[2]:false;if(isArray(obj) &&(typeof(obj.type)=="undefined")){var values=new Array();for(var i=0;i<obj.length;i++){var v=getSingleInputValue(obj[i],use_default,delimiter);if(v!=null){values[values.length]=v;}}return commifyArray(values,delimiter);}return getSingleInputValue(obj,use_default,delimiter);}
function getInputText(obj,delimiter){var use_default=(arguments.length>2)?arguments[2]:false;if(isArray(obj) &&(typeof(obj.type)=="undefined")){var values=new Array();for(var i=0;i<obj.length;i++){var v=getSingleInputText(obj[i],use_default,delimiter);if(v!=null){values[values.length]=v;}}return commifyArray(values,delimiter);}return getSingleInputText(obj,use_default,delimiter);}
function getInputDefaultValue(obj,delimiter){return getInputValue(obj,delimiter,true);}

/************************************************************************************
* isChanged - return true if the given field object has been changed since the
* page was loaded. NOTE: This does not work correctly for password fields. They
* have a default value of NULL with current value that is in hex encoding.
*------------------------------------------------------------------------------------
* function isChanged()
*************************************************************************************/
function isChanged(obj){
    return(getInputValue(obj) != getInputDefaultValue(obj));
}

function setInputValue(obj,value){var use_default=(arguments.length>1)?arguments[1]:false;if(isArray(obj)&&(typeof(obj.type)=="undefined")){for(var i=0;i<obj.length;i++){setSingleInputValue(obj[i],value);}}else{setSingleInputValue(obj,value);}}

/************************************************************************************
* isFormModified - return true if the given from has been modified since the page
* was loaded. The calling function may optionally provide a comma-separated list
* of field names to ignore. Hidden fields will be checked UNLESS they are in the
* ignore list. Password fields will always be ignored because the value is encoded.
*------------------------------------------------------------------------------------
* function isFormModified()
*************************************************************************************/
/*function isFormModified(theform,hidden_fields,ignore_fields){*/
function isFormModified(theform, ignore_fields){
    //if (hidden_fields==null){
	//    hidden_fields="";
	//}
	if (ignore_fields==null){
	    ignore_fields="";
	}
	
	//var hiddenFields=new Object();
	var ignoreFields=new Object();
	var i,field;
	//var hidden_fields_array=hidden_fields.split(',');
	
	//for (i=0;i<hidden_fields_array.length;i++){
	//    hiddenFields[Trim(hidden_fields_array[i])]=true;
	//}
	
	var ignore_fields_array=ignore_fields.split(',');
	
	for (i=0;i<ignore_fields_array.length;i++){
	    ignoreFields[Trim(ignore_fields_array[i])]=true;
	}
	for (i=0;i<theform.elements.length;i++){
	    var changed=false;
		var name=theform.elements[i].name;
		if (!isBlank(name)){
		    var type=theform.elements[i].type;
			// Ignore password fields. Default value is Null, current val is encrypted
			if (!ignoreFields[name] && type!="password"){
			    //if (type=="hidden"&&hiddenFields[name]){
				//    changed=isChanged(theform[name]);
				//} else if(type=="hidden"){
				//    changed=false;
				//} else{
				    changed=isChanged(theform[name]);
				//}
			}
		}
		if (changed){
		    return true;
		}
	}
	return false;
}

function intPopup(content, noClose){
    if(noClose){
        getObj("interClose").style.display = "none";
    }
    var interContainer = document.getElementById("interContainer"); //reference interstitial container
    var interVeil = document.getElementById("interVeil"); //reference veil
    var interIframe = getObj("popupIframe2");
    interContainer.style.display = "";
    interVeil.style.display = "";
    getObj("interContent").innerHTML = content;
    var standardbody = document.body;
    var ie = document.all && !window.opera;

    var dom = document.getElementById;
    var scroll_top = (ie) ? standardbody.scrollTop : window.pageYOffset;
    var scroll_left = (ie) ? standardbody.scrollLeft : window.pageXOffset;
    var docwidth = standardbody.clientWidth;

    var docheight = standardbody.clientHeight
    var docheightcomplete = (standardbody.offsetHeight > standardbody.scrollHeight) ? standardbody.offsetHeight : standardbody.scrollHeight;
    var objwidth = interContainer.offsetWidth;
    var objheight = interContainer.offsetHeight;
    interIframe.style.display = "";
    interIframe.style.width = "100%";
    interIframe.style.height = "100%";
    
    interVeil.style.width = docwidth + "px"; //set up veil over page
    interVeil.style.height = docheightcomplete + "px"; //set up veil over page
    interVeil.style.left = 0; //Position veil over page
    interVeil.style.top = 0; //Position veil over page
    interVeil.style.visibility = "visible"; //Show veil over page
    interContainer.style.left = docwidth/2 - objwidth/2 + "px"; //Position interstitial box

    var topposition = (docheight > objheight) ? scroll_top + docheight/2 - objheight/2 + "px" : scroll_top + 5 + "px"; //Position interstitial box
	interContainer.style.top = Math.floor(parseInt(topposition, 10)) + "px";
	interContainer.style.visibility = "visible"; //Show interstitial box;
}
function intPopupClose(){
	var interIframe = getObj("popupIframe2");
	getObj("interContent").innerHTML = "&nbsp;";
	getObj("interContainer").style.display = "none";
	getObj("interVeil").style.display = "none";
	interIframe.style.dispaly = "none";
    interIframe.style.width = "0px";
    interIframe.style.height = "0px";
}

