var KEY_DOWN = 40
var KEY_UP = 38
var KEY_ENTER = 13
var KEY_ESCAPE = 27

// Function to hide layers that are prefixed with "lyr".
function hideAllLayers () {
    var allPageTags = new Array();
	var allPageTags = document.getElementsByTagName("div");
	var fullCount = allPageTags.length -1;
	for (i=0;i<=fullCount;i++) {
		var currentLayer = allPageTags[i].id.indexOf("lyr");
		if (currentLayer != -1) {
			currentLayer = document.getElementById([allPageTags[i].id]);
			currentLayer.className = "displayNone";
			removeLayerIframe(currentLayer);
		}
	}
	EnableButtons();
}
//
// Function to show a specified layer.
function showLayer(sLayer, bDisableButtons) {
    bDisableButtons = (bDisableButtons != false);
	hideAllLayers();
	if ((sLayer != '') && (sLayer != null)) {
		sLayer = document.getElementById([sLayer]);
		if (sLayer != null) {
			sLayer.className = "displayBlock";
			addLayerIframe(sLayer);
		}
	}

	//
	if (bDisableButtons)
	{
	    sID = sLayer.id;
	    try {
	        // its not critical if buttons cannot be hidden, eg function used for some other purpose
	        DisableButtons(sID);
	    }
	    catch (e) { }
	}
}
//
// Function used to some home layers.
function showPrevNext(sLayer,sDirection,sMax) {
	var sSaved;
	var nCount;
	for (i=1;i<=sMax;i++) {
		sSaved = sLayer;
		sLayer = document.getElementById([sLayer] + [i]);
		if (sLayer.className == "displayBlock") {
			if (sDirection == "next") {
				nCount = i+1;
				if (nCount >5 ) {
					nCount = 1;
				}
			} else {
				nCount = i-1;
				if (nCount <1 ) {
					nCount = 5;
				}
			}
			nCount = sSaved + nCount;
			showLayer([nCount]);
		}
		sLayer = sSaved;
	}
}
//
// Function to find parent elements
function getParent(element, parent){
	if(typeof element=="string"){element=document.getElementById(element);};
	if(!element){return null;};
	var elements=[];
	var sList;
	if(typeof parent!="string"){ /*no parent: gets all parents till #document*/
		while(element.parentNode){
		element=element.parentNode;
		if (element.parentNode != null) {
			sList = sList + element.parentNode.id;
		}
		elements.unshift(element);
			if(element==parent){return sList;};
		}

	} else{ /*string, presumes you want to locate the first parent node that is such TAG*/
	parent=parent.toUpperCase();
		while(element.parentNode){
		element = element.parentNode;
		if (element.parentNode != null) {
			sList = sList + element.parentNode.id;
			alert(sList);
		}
		elements.unshift(element);
			if(element.nodeName && element.nodeName.toUpperCase()==parent){return sList;};
		}
	};
	return sList;
}
//
// Function to show a specified layer (for Search only).
function showLayerSearch(sLayer,sID) {
	var offSetCheck = sID;
	sID = findPos(sID);
	var nScrolling = window.pageYOffset;
	var nWindow = document.body.clientHeight;
	//
	// IE fix
	if (nScrolling == null) {
		nScrolling = document.documentElement.scrollTop;
	}
	//
	//Check offset
	offSetCheck = offSetCheck.indexOf("ucAJAXPickerOrganBstyp");
	if (offSetCheck != -1) {
		offSetCheck = 11;
	} else {
		offSetCheck = 0;
	}
	var nFinalPosition = ((sID + nScrolling) / 2);
	nFinalPosition = ((nFinalPosition / nWindow) * 100);
	nFinalPosition = (Math.round(nFinalPosition) - offSetCheck);
	//
	// Hide other layers
	hideAllLayers();
	if ((sLayer != '') && (sLayer != null)) {
		sLayer = document.getElementById([sLayer]);
		if (sLayer != null) {
			sLayer.className = "displayBlock";
			sLayer.style.top = nFinalPosition + "%";
			addLayerIframe(sLayer);
		}
	}
	//
	// IE z-index display fix
	fixIndex(sLayer, 'questionsOne', 'questionsTwo');
	//
	sID = sLayer.id;
	sID = sID.replace('lyr', '');
	RecordInitialState(sID);
	DisableButtons(sID);
}
//
// Get screen position of an element
function findPos(obj) {
	var curleft = curtop = 0;
	obj = document.getElementById([obj]);

	if (obj.offsetParent) {
		do {
			curtop += obj.offsetTop;
		}
		while (obj = obj.offsetParent);
		return curtop;
	}

}
//
// Set the secondary column to full height (beat the CSS specs)
function setColumnHeights(){
	if (document.getElementById("navColumn") && document.getElementById("mainColumn")) {
		primaryCol = document.getElementById("mainColumn");
		secondaryCol = document.getElementById("navColumn");

		if (primaryCol.offsetHeight > secondaryCol.offsetHeight) {
			secondaryCol.style.height = primaryCol.offsetHeight + "px";
		} else {
			primaryCol.style.height = secondaryCol.offsetHeight + "px";
		}
	}
}
//
// Function to hide a specific ID.
function fixIndex(sOriginalLayer,sLayer1,sLayer2) {
	var sCheck;
	var layerOne = document.getElementById([sLayer1]);
	var layerTwo = document.getElementById([sLayer2]);
	if (layerOne != null) {
		sCheck = getParent(sOriginalLayer,layerOne);
		sCheck = sCheck.indexOf(sLayer1);
		if (sCheck != -1) {
			layerOne.style.zIndex = 1000;
			layerTwo.style.zIndex = 500;
		} else {
			layerOne.style.zIndex = 500;
			layerTwo.style.zIndex = 1000;
		}
	}
	//
	// Fix footer display
	fixFooter();
	//
	// Fix profile title display
	var layerCommon = document.getElementById('commonTitle');
	if (layerCommon != null) {
		layerCommon.style.zIndex = -1;
	}
}
//
// Function to create IE6 z-index-bug-busting layer iframe
function addLayerIframe(sLayer) {
	var isIE6;

	if (navigator.userAgent.toLowerCase().indexOf("msie 6") != -1) {
		isIE6 = true;
	}
	if ((navigator.userAgent.toLowerCase().indexOf("msie 7") != -1) || (navigator.userAgent.toLowerCase().indexOf("msie 8") != -1)) {
		isIE6 = false;
	}

	if (isIE6) {
		var offTop = 38;
		var offLeft = 25;
		var newHeight = 5;
		var newWidth = 5;

		// Kludge 1 - just cannot position correctly for home page
		if ((sLayer.id.length > 9) && (sLayer.id.substr(0,9) == 'lyrReason'))
			return;
		var iFrame = document.getElementById("ifr-"+sLayer.id);
		if (iFrame == null) {
			iFrame = document.createElement("iframe");
			iFrame.id = "ifr-"+sLayer.id;
			iFrame.setAttribute("src","");
			iFrame.src = "";
			iFrame.style.position = "absolute";
			// Kludge 2 - compensate for positioning being slightly out
			iFrame.frameBorder = "0";
			sLayer.parentElement.appendChild(iFrame);
			//
			// Adjust placment of IFRAME (1)
			if (sLayer.id.indexOf("Step10") != -1) {
				offTop = 65;
				offLeft = -20;
				newWidth = 120;
				iFrame.style.padding = "6px 25px";
			}
			//
			// Adjust placment of IFRAME (2)
			if (sLayer.id.indexOf("Partner") != -1) {
				offLeft = -100;
				newWidth = 134;
			}
			offTop = sLayer.offsetTop + offTop;
			iFrame.style.top = offTop + "px";
			offLeft = sLayer.offsetLeft - offLeft;
			iFrame.style.left = offLeft + "px";
			newWidth = sLayer.offsetWidth + newWidth;
			iFrame.style.width = newWidth + "px";
			newHeight = sLayer.offsetHeight + newHeight;
			iFrame.style.height = newHeight + "px";

			//
			// Adjust z-index ordering
			iFrame.style.zIndex = sLayer.style.zIndex;
			sLayer.style.zIndex = sLayer.style.zIndex+1;

			if (sLayer.id.indexOf("Locat") == -1) {
				sLayer.attachEvent("onresize", resizeLayerIframe);
			}
		}
	}
}
//
// Function to fix footer display (IE 6 & 7 only)
function fixFooter() {
	var layerFooter = document.getElementById('footer');
	if (layerFooter != null) {
		if ((navigator.userAgent.toLowerCase().indexOf("msie 6") != -1) || (navigator.userAgent.toLowerCase().indexOf("msie 7") != -1)) {
			layerFooter.style.zIndex = -1;
		} else {
			layerFooter.style.zIndex = 0;
		}
	}
}

// Function to adjust IE6 z-index-bug-busting iframe size when layer size changes
function resizeLayerIframe(e) {
	var sLayer,iFrame;

	//e = e | window.event;
	e = window.event;
	sLayer = e.target || e.srcElement;
	iFrame = document.getElementById("ifr-"+sLayer.id);
	//iFrame.style.left = sLayer.offsetLeft+'px';
	//iFrame.style.top = sLayer.offsetTop+'px';
	iFrame.style.width = sLayer.offsetWidth+'px';
	iFrame.style.height = sLayer.offsetHeight+'px';
}

// Function to remove IE6 z-index-bug-busting layer iframe
function removeLayerIframe(sLayer) {
	if (navigator.userAgent.toLowerCase().indexOf("msie 6") != -1) {
		var iFrame = document.getElementById("ifr-"+sLayer.id);
		if (iFrame != null) {
			sLayer.detachEvent("onresize", resizeLayerIframe);
			sLayer.style.zIndex = iFrame.style.zIndex;
			iFrame.parentElement.removeChild(iFrame);
		}
	}
}

//
// Function to set any SELECT boxes to visible
function showhideSelect(sState) {
	var agt = navigator.userAgent.toLowerCase() // Make easier for testing
	this.ie6 = (agt.indexOf("msie 6") != -1);
	this.ie7 = (agt.indexOf("msie 7") != -1);
	this.ie8 = (agt.indexOf("msie 8") != -1);
	if ((this.ie6) && ((this.ie7 != true) && (this.ie8 != true))) {
		if (document.all) {
			for (formIdx=0; formIdx<document.forms.length; formIdx++) {
	            		var theForm = document.forms[formIdx];
	            		for(elementIdx=0; elementIdx<theForm.elements.length; elementIdx++) {
	                		if(theForm[elementIdx].type == "select-one") {
	                			theForm[elementIdx].style.visibility = sState;
	                		}
	            		}
	        	}
	    	}
	}
}
//
// Function to fix display of floating box on Advanced search
function floatingFix(sLayer1,sLayer2) {
	var layerOne = document.getElementById([sLayer1]);
	var layerTwo = document.getElementById([sLayer2]);
	if ((layerOne != null) && (layerTwo != null)) {
		layerOne.style.zIndex = 5;
		layerTwo.style.zIndex = -1;
	}
}

if (window.attachEvent) {
	window.attachEvent("onload", setColumnHeights);
	window.attachEvent("onresize", setColumnHeights);
} else if (window.addEventListener){
	window.addEventListener("load", setColumnHeights, false);
	window.addEventListener("resize", setColumnHeights, false);
} else if (document.addEventListener){
	document.addEventListener('load', setColumnHeights, false);
	document.addEventListener('resize', setColumnHeights, false);
}

function checkCR(evt)
{
    var sOpenPopup = '';
    var bAlwaysRaiseEvent = true;
    var evt = (evt) ? evt : ((event) ? event : null);
    var bRes = true;

    sOpenPopup = gsOpenPopup;

    var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);

    if (evt.keyCode == KEY_ENTER)
    {
        bRes = false;
        if (gsOpenPopup!='')
        {
            gsOpenPopup = '';
            document.all("cmdSavePopup" + sOpenPopup).click();
        }
        else
        {
            if ((node.type == "text") || (node.type == "file") || (bAlwaysRaiseEvent == true))
            {
                try
                {
                    __EnterPressed();
                }
                catch (e) { }
            }
        }
    }
    else if (evt.keyCode == KEY_ESCAPE)
    {
        bRes = false;
        // escape pressed
        if (gsOpenPopup!='')
        {
            gsOpenPopup = '';
            document.all("cmdClosePopup" + sOpenPopup).click();
        }
    }
    return bRes;
}

document.onkeypress = checkCR;

function DisableButtons(sID)
{
    var i;
    var sOpenPopupButtons;

    gsOpenPopupButtons = '';

    for (i = 0; i < document.forms[0].length; i++) {
        if ((document.forms[0].elements[i].type == 'submit') || (document.forms[0].elements[i].type == 'button'))
        {
            if (document.forms[0].elements[i].name.indexOf(sID) < 0)
            {
                sOpenPopupButtons = document.forms[0].elements[i].id + KEYVALUE_SEPERATOR + document.forms[0].elements[i].disabled;
                gsOpenPopupButtons = gsOpenPopupButtons + PAIR_SEPERATOR + sOpenPopupButtons; ;
                document.forms[0].elements[i].disabled = true;
            }
        }
    }
}

function EnableButtons()
{
    var i;
    var sID;
    var sState;
    var sOpenPopupButtons;
    var asOpenPopupButtons;

    if (gsOpenPopupButtons != '')
    {
        asOpenPopupButtons=gsOpenPopupButtons.split(PAIR_SEPERATOR);
        for (i = 0; i < asOpenPopupButtons.length; i++)
        {
            sID = asOpenPopupButtons[i].split(KEYVALUE_SEPERATOR)[0];
            sState = asOpenPopupButtons[i].split(KEYVALUE_SEPERATOR)[1];
            if (sID != '')
            {
                document.getElementById(sID).disabled = (sState=='true');
            }
        }

        gsOpenPopupButtons = '';
    }
}

function RecordInitialState(CLIENTID) {
    var oLyr;
    var oElement;
    var oElements;
    var sIDs = '.';
    var hidX;

    oLyr = document.getElementById('lyr' + CLIENTID);
    oElements = oLyr.getElementsByTagName('input');

    for (nElement = 0; nElement < oElements.length; nElement++)
    {
        oElement = oElements[nElement];
        if (oElement.type == 'checkbox')
        {
            if (oElement.checked)
            {
                sIDs = sIDs + oElement.id.split("_")[oElement.id.split("_").length - 1] + ".";
            }
        }
    }

    hidX = document.getElementById(CLIENTID + "_hidLoadupState");
    hidX.value = sIDs;
}

function RestoreInitialState(CLIENTID) {
    var oLyr;
    var oElement;
    var oElements;
    var sID;
    var sIDs;
    var hidX;

    hidX = document.getElementById(CLIENTID + "_hidLoadupState");
    sIDs = hidX.value;
    oLyr = document.getElementById('lyr' + CLIENTID);
    oElements = oLyr.getElementsByTagName('input');

    for (nElement = 0; nElement < oElements.length; nElement++)
    {
        oElement = oElements[nElement];
        if (oElement.type == 'checkbox')
        {
            oElement.checked = false;
            sID = oElement.id.split("_")[oElement.id.split("_").length - 1];
            if (sIDs.indexOf("." + sID + ".") >= 0)
            {
                oElement.checked = true;
            }
        }
    }
    hidX.value = "";
}