var fDocumentLoaded;
var oTempData;		//To store any data the page needs to share between functions
var ohScrollX;
var ohScrollY;
var mnWidth = 0;
var mnHeight = 0;

d = document;
n = navigator;
na = n.appVersion;
nua = n.userAgent;

if ( !d.layers ){
	op = ( nua.indexOf( 'Opera' ) != -1 );
	konq = ( nua.indexOf( 'Konqueror' ) != -1 );
	saf = ( nua.indexOf( 'Safari' ) != -1 );
	moz = ( nua.indexOf( 'Gecko' ) != -1 && !saf && !konq);
	ie = ( d.all && !op );
}

function ignoreDataChanged() {
	if (isDataChanged()) {
		return window.confirm("You have not saved your changes. Are you sure you want to navigate away from this page? Click OK to navigate away and ignore your changes. Click Cancel to stay on the current page.")
	} else {
		return true;
	}
}

function isDataChanged() {
	if (fDocumentLoaded)
		return (ohDataChanged.value == "1")
	else
		return false;
}
	
function goPage(URL) {
	if (URL.length>0) document.location = URL;
}

function findChild(Element, ChildID) {
	//This function iterates through Element's childNodes
	//to find and return an element with ChildID as its ID
	
	var oNodes, j;
	
	
	oNodes = Element.childNodes;
	
	for (j=0; j<oNodes.length; j++)	
		if (oNodes[j].id == ChildID) return oNodes[j];
}

function showHide(ElementID) {
	// Toggles the visible state of the element called ElementID
	if (document.getElementById(ElementID).style.display == ""){
		hideElement(ElementID);
		}
	else {
		showElement(ElementID);
		}
}

function showElement(ElementID) {
	document.getElementById(ElementID).style.display = "";
}

function hideElement(ElementID) {
	document.getElementById(ElementID).style.display = "none";
}

function setFocus(ElementID) {
	var oControl = document.getElementById(ElementID);
	if (oControl&&!oControl.disabled) document.getElementById(ElementID).focus();
}

function replaceInString(Expression, Find, Replacement) {
	var nPos, sExp;
	
	sExp = Expression;
	
	nPos = sExp.indexOf(Find);
	while (nPos>-1) {
		sExp = sExp.substr(0, nPos) + Replacement + sExp.substr(nPos + Find.length);
		nPos = sExp.indexOf(Find, nPos+Replacement.length);
	}
	
	return sExp;
}
			
function rptPrint(obj) {

	if (ie){
		document.body.style.backgroundImage='url(../../Images/pixel.gif)';
		if (document.getElementById('ScrollMenu')){	
			document.getElementById('ScrollMenu').style.display ='none';
		}
		if (document.getElementById('MenuTable')){
			document.getElementById('MenuTable').style.display='none';	
		}
		if (document.getElementById('ucLayoutHeader_divTopBanner')){	
			document.getElementById('ucLayoutHeader_divTopBanner').style.display ='none';	
		}						
		document.getElementById('ContentSubWindow').className = "";
		document.getElementById('ContentWindow').className = "";
		if (document.getElementById('ucLayoutHeader_lblGroupTitle')){
			document.getElementById('ucLayoutHeader_lblGroupTitle').style.display ='none';
		}
		if (document.getElementById('ucLayoutFooter_tblActionButtons')){
			document.getElementById('ucLayoutFooter_tblActionButtons').style.display='none';
		}
		if (document.getElementById('ucLayoutHeader_lblObjectTitle')){										
			document.getElementById('ucLayoutHeader_lblObjectTitle').style.display='none';
		}
		if (document.getElementById('ucLayoutHeader_spPageHelpIcon')){
			document.getElementById('ucLayoutHeader_spPageHelpIcon').style.display='none';
		}
		if (document.getElementById('ucLayoutHeader_lblTitleDelimiter')){
			document.getElementById('ucLayoutHeader_lblTitleDelimiter').style.display='none';
		}
		if (document.getElementById('cmdGenerate')){
			document.getElementById('cmdGenerate').style.visibility = 'hidden';
		}
		if (document.getElementById('cmdSelect')){
			document.getElementById('cmdSelect').style.visibility = 'hidden';
		}
		if (document.getElementById('cmdSelectCourse')){
			document.getElementById('cmdSelectCourse').style.visibility = 'hidden';
		}

		window.print();

		if (document.getElementById('ScrollMenu')){
			document.getElementById('ScrollMenu').style.display ='';
		}
		if (document.getElementById('MenuTable')){
			document.getElementById('MenuTable').style.display='';
		}
		if (document.getElementById('ucLayoutHeader_divTopBanner')){		
			document.getElementById('ucLayoutHeader_divTopBanner').style.display ='';
		}
		if (document.getElementById('ucLayoutHeader_lblGroupTitle')){	
			document.getElementById('ucLayoutHeader_lblGroupTitle').style.display ='';
		}	
		document.getElementById('ContentSubWindow').className = 'ContentSubWindow';
		document.getElementById('ContentWindow').className = 'ContentWindow';
		if (document.getElementById('ucLayoutFooter_tblActionButtons')){
			document.getElementById('ucLayoutFooter_tblActionButtons').style.display='';
		}
		if (document.getElementById('ucLayoutHeader_lblObjectTitle')){
			document.getElementById('ucLayoutHeader_lblObjectTitle').style.display='';
		}
		if (document.getElementById('ucLayoutHeader_spPageHelpIcon')){
			document.getElementById('ucLayoutHeader_spPageHelpIcon').style.display='';
		}
		if (document.getElementById('ucLayoutHeader_lblTitleDelimiter')){
			document.getElementById('ucLayoutHeader_lblTitleDelimiter').style.display='';
		}
		document.body.style.backgroundImage='url(../../Images/tlmback.gif)';				
		if (document.getElementById('cmdGenerate')){
			document.getElementById('cmdGenerate').style.visibility = 'visible';
		}
		if (document.getElementById('cmdSelect')){
			document.getElementById('cmdSelect').style.visibility = 'visible';
		}
		if (document.getElementById('cmdSelectCourse')){
			document.getElementById('cmdSelectCourse').style.visibility = 'visible';
		}		
	}
	if ( moz || saf ){
			if (document.getElementById('MenuTable').style.display==''){
				document.body.style.backgroundImage='url(../../Images/pixel.gif)';
				if (document.getElementById('ScrollMenu')){	
					document.getElementById('ScrollMenu').style.display ='none';
				}
				if (document.getElementById('MenuTable')){
					document.getElementById('MenuTable').style.display='none';	
				}
				if (document.getElementById('ucLayoutHeader_divTopBanner')){	
					document.getElementById('ucLayoutHeader_divTopBanner').style.display ='none';	
				}						
				document.getElementById('ContentSubWindow').className = "";
				document.getElementById('ContentWindow').className = "";
				
				if (document.getElementById('ucLayoutHeader_lblGroupTitle')){
					document.getElementById('ucLayoutHeader_lblGroupTitle').style.display ='none';
				}
				if (document.getElementById('ucLayoutHeader_lblObjectTitle')){										
					document.getElementById('ucLayoutHeader_lblObjectTitle').style.display='none';
				}
				if (document.getElementById('ucLayoutHeader_spPageHelpIcon')){
					document.getElementById('ucLayoutHeader_spPageHelpIcon').style.display='none';
				}
				if (document.getElementById('ucLayoutHeader_lblTitleDelimiter')){
					document.getElementById('ucLayoutHeader_lblTitleDelimiter').style.display='none';
				}
				if (document.getElementById('cmdGenerate')){
					document.getElementById('cmdGenerate').style.visibility = 'hidden';
				}
				if (document.getElementById('cmdSelect')){
					document.getElementById('cmdSelect').style.visibility = 'hidden';
				}
				if (document.getElementById('cmdSelectCourse')){
					document.getElementById('cmdSelectCourse').style.visibility = 'hidden';
				}				
				obj.textContent = "Back"
				window.print();
		}
		else if (document.getElementById('MenuTable').style.display=='none'){
			if (document.getElementById('ScrollMenu')){
			document.getElementById('ScrollMenu').style.display ='';
			}
			if (document.getElementById('MenuTable')){
				document.getElementById('MenuTable').style.display='';
			}
			if (document.getElementById('ucLayoutHeader_divTopBanner')){		
				document.getElementById('ucLayoutHeader_divTopBanner').style.display ='';
			}
			if (document.getElementById('ucLayoutHeader_lblGroupTitle')){	
				document.getElementById('ucLayoutHeader_lblGroupTitle').style.display ='';
			}	
			document.getElementById('ContentSubWindow').className = 'ContentSubWindow';
			document.getElementById('ContentWindow').className = 'ContentWindow';

			if (document.getElementById('ucLayoutHeader_lblObjectTitle')){
				document.getElementById('ucLayoutHeader_lblObjectTitle').style.display='';
			}
			if (document.getElementById('ucLayoutHeader_spPageHelpIcon')){
				document.getElementById('ucLayoutHeader_spPageHelpIcon').style.display='';
			}
			if (document.getElementById('ucLayoutHeader_lblTitleDelimiter')){
				document.getElementById('ucLayoutHeader_lblTitleDelimiter').style.display='';
			}
			document.body.style.backgroundImage='url(../../Images/tlmback.gif)';				
			if (document.getElementById('cmdGenerate')){
				document.getElementById('cmdGenerate').style.visibility = 'visible';
			}
			if (document.getElementById('cmdSelect')){
				document.getElementById('cmdSelect').style.visibility = 'visible';
			}
			if (document.getElementById('cmdSelectCourse')){
				document.getElementById('cmdSelectCourse').style.visibility = 'visible';
			}			
			obj.textContent = "Print"
		}
	}
									

}

function showPopup(FilePath, WindowName, Modal, Width, Height) {
	var dimension, oPopup, sURL;

	var nWidth;// =  640;
    var nHeight;// = 480;
	var nTop = (screen.height-nHeight)/2;
    var nLeft = (screen.width-nWidth)/2;
    
	if(mnWidth>0) nWidth = mnWidth; else nWidth = 700;
    if(mnHeight>0) nHeight = mnHeight; else nHeight = 480;
	if (!WindowName) WindowName = "Popup";
	
	if (FilePath.indexOf("?") > -1) {
		//There are already some querystring parameters, so start adding with "&"
		sURL = FilePath + "&"
	} else {
		//There are no querystring parameters, so start adding with "?"
		sURL = FilePath + "?"
	}
	
	sURL += "popup=1";
	if (Modal){
		oPopup = window.showModalDialog(sURL,"",'resizable:yes;status:yes;dialogWidth:' + nWidth + 'px;dialogHeight:' + nHeight + 'px;dialogTop:' + nTop + 'px;dialogLeft:' + nLeft + 'px');
	} else {
		oPopup = window.open(sURL, WindowName,'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,status=yes,width=' + nWidth + ',height=' + nHeight + ',top=' + nTop + ',left=' + nLeft + '');
	}
	return oPopup;
}

function dataChanged(Changed) {
	if (Changed)
		ohDataChanged.value = "1"
	else
		ohDataChanged.value = "";
}

function findServerControl(Element, ControlID) {
	//This function recurses through children in Element and all its children,
	//to find and return a server control with ControlID as its (server) ID
	var oNodes, j, oNode;

	oNodes = Element.childNodes;
	for (j=0; j<oNodes.length; j++) {
		oNode = oNodes[j];
		if (hasServerID(oNode, ControlID)) return oNode;
		oNode = findServerControl(oNode, ControlID);
		if (oNode) return oNode;
	}
}

function hasServerID(Element, ServerID) {
	//This function determines if Element has a ClientID that could match the ServerID on the server
	//For example, it will return true if Element has the ID "X_Y_Z_spElement" and ServerID is "spElement"
	var l;
	var fReturn = false;
	
	if (Element.id) {
		l = Element.id.length - ServerID.length;
		if (Element.id.indexOf(ServerID) == l) {
			if (l == 0)
				fReturn = true
			else if (Element.id.substr(l-1, 1) == "_")
				fReturn = true;
		}
	}
	
	return fReturn;
}

function findParent(ChildControl, ParentID) {
	//This function finds a server control of ID = ParentID,
	//upward in ChildControl's parent hierarchy
	var oParent = ChildControl.parentNode;
	var n=0;

	while ((oParent != oParent.parentNode) && (n<25)) {
		if (hasServerID(oParent, ParentID)) return oParent;
		oParent = oParent.parentNode;
		n++;	//Making sure it doesnt loop forever. Limit to 25 loops.
	}
}

/*function showPleaseWait() {
	var oDiv = document.getElementById("divPleaseWait");

	if (oDiv){
		if (ie){
			oDiv.style.top = window.event.clientY-20;
			oDiv.style.left = window.event.clientX-20;
			document.onmousemove = moveWaitIcon;
		}
	}
}

function showIcon(){
	var oDiv = document.getElementById("divPleaseWait");

	if (oDiv) oDiv.style.display = "";
}

function moveWaitIcon(){
	var oDiv = document.getElementById("divPleaseWait");
	if (ie){	
		oDiv.style.top = window.event.clientY-20;
		oDiv.style.left = window.event.clientX-20;
	}
}

function setDelayTime(){
	window.setTimeout("showIcon()",1000);
}*/
   
function postHTTP(URL, Data) {
	if ( ie ){
		var oXMLDoc = new ActiveXObject("Msxml2.DOMDocument");
		var oXMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
	}
	if ( moz || saf){
		var oXMLDoc = document.implementation.createDocument("","", null);
		var oXMLHTTP = new XMLHttpRequest();
			Document.prototype.loadXML = function(strXML) {
				var objDOMParser = new DOMParser();
				var objDoc = objDOMParser.parseFromString(strXML, "text/xml");
				while (this.hasChildNodes())
					this.removeChild(this.lastChild);
		            
				for (var i=0; i < objDoc.childNodes.length; i++) {
					var objImportedNode = this.importNode(objDoc.childNodes[i], true);
					this.appendChild(objImportedNode);		        
				} 
			} 
	}
	oXMLDoc.loadXML("<Data>" + Data + "</Data>");
	oXMLHTTP.open("POST", URL, false);
	oXMLHTTP.send(oXMLDoc);
	return oXMLHTTP.responseText;
}

//called only when session timeout
function sessionTimeoutFunction(){
               if (window.opener){
                             window.opener.location.href=window.opener.location.href;
                             window.close();
               }else{
                             window.location="Login.aspx";
               }
}

function browserAlert(){
	//var msg="TLM Enterprise requires Internet Explorer 6.0 (or later) to function properly. You appear to be using a different browser. Please try again using a browser that satisfies the above requirement.";
	//alert(msg);
}


var iframeID = new Array();

function initDesignMode(){
var obj = document.getElementsByTagName('IFRAME');
	for (i=0; i<obj.length; i++) {
		var pos= obj[i].id.indexOf("ucRichText");
		if (pos>=0)
		{
			iframeID[i] = obj[i].id;
			if (document.getElementById(iframeID[i]).contentDocument){
				document.getElementById(iframeID[i]).contentDocument.designMode = "on";
			}
			else
			{
				document.getElementById(iframeID[i]).contentWindow.document.body.contentEditable='true';				
			}
			addEvents(document.getElementById(iframeID[i]));			
		} 
	}
	getHTML();
}
	
function addEvents(iframe){
	if(iframe.contentDocument){ // focus, blur
		//iframe.contentDocument.addEventListener("blur", setHTML, false);
		//iframe.contentDocument.addEventListener("focus", setHTML, false);
	}else if(iframe.contentWindow.document.attachEvent){
		iframe.attachEvent("onblur", setHTML);
		iframe.attachEvent("onfocus", setHTML);
	}
}

function setHTML() {
var obj = document.getElementsByTagName('IFRAME');
	for (i=0; i<obj.length; i++) {
		var pos=obj[i].id.indexOf("ucRichText");
		if (pos>=0)
		{
			document.getElementById(iframeID[i].substring(0,iframeID[i].length-8) + "_hHTML").value = ascEncode(getIFrameDocument(iframeID[i]).body.innerHTML);	
		} 
		else 
		{
			return;
		}
	}	
}


function getHTML() {
var obj = document.getElementsByTagName('IFRAME');
	for (i=0; i<obj.length; i++) {
		var pos=obj[i].id.indexOf("ucRichText");
		if (pos>=0)
		{
			//alert("get" + ascDecode(document.getElementById(iframeID[i].substring(0,iframeID[i].length-8) + "_hHTML").value));
			getIFrameDocument(iframeID[i]).body.innerHTML = ascDecode(document.getElementById(iframeID[i].substring(0,iframeID[i].length-8) + "_hHTML").value);		
		} 
		else 
		{
			return;
		}
	}	
}		


function getIFrameDocument(aID){
	// if contentDocument exists, Firefox || Safari
	if (document.getElementById(aID).contentDocument)
	{
		return document.getElementById(aID).contentDocument;
	} 
	else 
	{
		// IE
		return document.frames[aID].document;
	}
}

