

Fse.Portal.togglePanel = function( oIcon ) {

	// var sCookiePath = window.location.href.replace( /https?:\/\/[^\/]*/g, "" );
	var oPanel = $(oIcon.getAttribute( "panelId" ));
	if( oPanel ) {
		var sCookieValue;
		if( oPanel.className.match( "hidden-element" )) {
			// turn it on
			Spry.Utils.removeClassName( oPanel, "hidden-element" );
			oIcon.src = oIcon.src.replace( "_off.gif", "_on.gif" );
			sCookieValue = "visible";
		} else {
			// turn it off
			Spry.Utils.addClassName( oPanel, "hidden-element" );
			oIcon.src = oIcon.src.replace( "_on.gif", "_off.gif" );
			sCookieValue = "hidden";
		}
		var sCookieName = oIcon.panelPosition + "_panel_state";
		var sCookiePath = window.location.href.replace( /https?:\/\/[^\/]*|\u003F.*/g, "" );
		var oCookieExpires = new Date( (new Date()).getTime() + 604800000 ); // 1 week from now
		oCookieExpires = null;
		Fse.Portal.setCookie( sCookieName, sCookieValue, oCookieExpires, sCookiePath );
	}
};

var togglePanel = Fse.Portal.togglePanel;

Fse.Portal.panelOff = function( sPanelName ) {
	
	var oPanel = document.getElementById( sPanelName );
	if( ! YAHOO.util.Dom.hasClass( oPanel, "hidden-element" )) {
		Fse.Portal.togglePanelByName( sPanelName );
	}
	
};

Fse.Portal.panelOn = function( sPanelName ) {
	
	var oPanel = document.getElementById( sPanelName );
	if( YAHOO.util.Dom.hasClass( oPanel, "hidden-element" )) {
		Fse.Portal.togglePanelByName( sPanelName );
	}
	
};

Fse.Portal.togglePanelByName = function( sPanelName ) {
	
	var fnCheck = function( oElement ) {
		var sAttribute = oElement.getAttribute( "panelId" );
		return sPanelName == sAttribute;
	};
	
	var aIcon = YAHOO.util.Dom.getElementsBy( fnCheck, "img", "titleContainer" );
	if( aIcon.length == 1 ) {
		var oIcon = aIcon[0];	
		Fse.Portal.togglePanel( oIcon );
	}
	
};

var Fse; if (!Fse) Fse = {};

if( !Fse.Portal ) Fse.Portal = {};

YAHOO.namespace("Fse.Portal");


Fse.Portal._dialogPortlets = {};

Fse.Portal._docRoot;
Fse.Portal._loggedIn;

Fse.Portal._usePopupIcon = false;

Fse.Portal.init = function() {

	var oPopupOptions = YAHOO.util.Dom.get( "popupOptions" );
	var oOptions = YAHOO.util.Dom.get( "options" );
	if( oOptions && oPopupOptions) {

		var fnOptionCheck = function( oNode ) { 
			var bMatch = YAHOO.util.Dom.hasClass( oNode, "option" );
			return bMatch;
		};
		
		var aOptions = YAHOO.util.Dom.getChildrenBy( oOptions, fnOptionCheck );
		for( var i = 0; i < aOptions.length; i++ ) {
			
			if( YAHOO.util.Dom.hasClass( aOptions[i], "searchCenter" ) ) {
				
				var oOption = aOptions[i];
				
				var oOptionIcon = YAHOO.util.Dom.get( "option-icon-searchCenter" );
				
				var oApplicationTitle = YAHOO.util.Dom.get( "title" );
				if( oApplicationTitle ) {
					oOptionIcon.setAttribute( "title", oApplicationTitle.firstChild.nodeValue + " Search Center" );
				} else {
					oOptionIcon.setAttribute( "title", "Search Center" );
				}
				oOptionIcon.setAttribute( "title", oOption.innerHTML );

				var sActivationScript = "oOption._activate = function( oEvent, oObject ) { " + oOption.getAttribute( "fse:onclick" ) + "; };"				
				try {
					eval( sActivationScript );
					YAHOO.util.Event.addListener( oOptionIcon, "click", oOption._activate, oOption );
					YAHOO.util.Dom.removeClass( oOptionIcon, "hidden" );
					if( ! Fse.Portal._usePopupIcon ) {
						YAHOO.util.Dom.addClass( oOptionIcon, "text" );
						oOptionIcon.innerHTML = "<a>Search</a>";
					}
				} catch ( x ) {
				}
			} else if ( YAHOO.util.Dom.hasClass( aOptions[i], "reportCenter" ) ) {

				var oOption = aOptions[i];
				
				var oOptionIcon = YAHOO.util.Dom.get( "option-icon-reportCenter" );
				
				var oApplicationTitle = YAHOO.util.Dom.get( "title" );
				if( oApplicationTitle ) {
					oOptionIcon.setAttribute( "title", oApplicationTitle.firstChild.nodeValue + " Report Center" );
				} else {
					oOptionIcon.setAttribute( "title", "Report Center" );
				}
				oOptionIcon.setAttribute( "title", oOption.innerHTML );

				var sActivationScript = "oOption._activate = function( oEvent, oObject ) { " + oOption.getAttribute( "fse:onclick" ) + "; };"				
				try {
					eval( sActivationScript );
					YAHOO.util.Event.addListener( oOptionIcon, "click", oOption._activate, oOption );
					YAHOO.util.Dom.removeClass( oOptionIcon, "hidden" );
					if( ! Fse.Portal._usePopupIcon ) {
						YAHOO.util.Dom.addClass( oOptionIcon, "text" );
						oOptionIcon.innerHTML = "<a>Reports</a>";
					}
				} catch ( x ) {
				}

					
			} else { 
			}
			
		}

		
		var fnDialogPortletCheck = function( oNode ) { 
			var bMatch = YAHOO.util.Dom.hasClass( oNode, "dialog" ) && YAHOO.util.Dom.hasClass( oNode, "portlet" );
			return bMatch;
		};
		
		var aDialogPortlets = YAHOO.util.Dom.getChildrenBy( oOptions, fnDialogPortletCheck );
		if( aDialogPortlets ) {

			var oSearchCenter;
			var bOptionsFound = false;

			for( var pIdx = 0; pIdx < aDialogPortlets.length; pIdx ++ ) {
				
				var oDialogPortlet = aDialogPortlets[pIdx];
				var bMoveOption = false;
				if( !oSearchCenter && YAHOO.util.Dom.hasClass( oDialogPortlet, "searchCenter" )) {
					oSearchCenter = oDialogPortlet;
					bOptionsFound = true;
					bMoveOption = true;
				} else if ( false ) {
					// follow this model to support other options					
				}
				
				if( bMoveOption ) {
					oDialogPortlet.parentNode.removeChild( oDialogPortlet );
					oPopupOptions.appendChild( oDialogPortlet );
				}
				
			}
			
			if( bOptionsFound ) {
			
				var fnActivateOption = function( oEvent, oObj ) {
					if( oObj ) {
						
						if( ! oObj.visibleState ) {

							var defaultX = YAHOO.util.Event.getPageX( oEvent );
							var defaultY = YAHOO.util.Event.getPageY( oEvent );
							
							var sId = oObj.element.getAttribute( "id" )
							
							var x = YAHOO.util.Cookie.get( sId + "_xPos" );
							if( ! x ) {
								x = defaultX - oObj.element.offsetWidth;
							}
							var y = YAHOO.util.Cookie.get( sId + "_yPos" );
							if( ! y ) { 
								y = defaultY;
							}
							
							oObj.moveTo( x, y );
							oObj.show();
							
						} else {
							oObj.hide();
						}
					}
				};
				
				var fnHideListener = function() {
					this.visibleState = false;
				};
				var fnShowListener = function() {
					this.visibleState = true;
				};
				
				var oOptionIcons = YAHOO.util.Dom.get( "option-icons" );
				if( oSearchCenter ) {
					
					var sSearchCenterId = oSearchCenter.getAttribute("id");
					var oSearchCenterHeader = YAHOO.util.Dom.getElementsByClassName( "header", "div", oSearchCenter );
					if( ! oSearchCenterHeader.id ) {
						oSearchCenterHeader.id = oSearchCenter.id + "-header";
					}
					
					var dialogOptions = {};
					
					dialogOptions.visible = false;
					dialogOptions.constraintoviewport = true;
					var x = YAHOO.util.Cookie.get( sSearchCenterId + "_xPos" );
					var y = YAHOO.util.Cookie.get( sSearchCenterId + "_yPos" );
					if( x != null && y != null ) {
						dialogOptions.xy = [ x * 1, y * 1 ];
					}
					
					YAHOO.Fse.Portal.searchCenter = new YAHOO.widget.Overlay( oSearchCenter, dialogOptions );
					YAHOO.util.Dom.removeClass( oSearchCenter, "hidden" );
					YAHOO.Fse.Portal.searchCenter.render();	
					YAHOO.Fse.Portal.searchCenter.visibleState = false;
					YAHOO.Fse.Portal.searchCenter.hideEvent.subscribe( fnHideListener );
					YAHOO.Fse.Portal.searchCenter.showEvent.subscribe( fnShowListener );
					
					Fse.Portal._dialogPortlets[sSearchCenterId] = YAHOO.Fse.Portal.searchCenter;

					var oOptionIcon = YAHOO.util.Dom.get( "option-icon-searchCenter" );
					
					var oApplicationTitle = YAHOO.util.Dom.get( "title" );
					if( oApplicationTitle ) {
						oOptionIcon.setAttribute( "title", oApplicationTitle.firstChild.nodeValue + " Search Center" );
					} else {
						oOptionIcon.setAttribute( "title", "Search Center" );
					}
					
					YAHOO.util.Dom.removeClass( oOptionIcon, "hidden" );
					YAHOO.util.Event.addListener( oOptionIcon, "click", fnActivateOption, YAHOO.Fse.Portal.searchCenter );


					YAHOO.Fse.Portal.searchCenter.DD = function(id, sGroup, config) {
					    YAHOO.Fse.Portal.searchCenter.DD.superclass.constructor.apply(this, arguments);
					};					

					YAHOO.extend (
						YAHOO.Fse.Portal.searchCenter.DD, 
						YAHOO.util.DD, {
					    		endDrag: function(e) {
										var x = YAHOO.util.Dom.getX( oSearchCenter );
										YAHOO.util.Cookie.set( sSearchCenterId + "_xPos", x );
										var y = YAHOO.util.Dom.getY( oSearchCenter );
										YAHOO.util.Cookie.set( sSearchCenterId + "_yPos", y );
							    }
						} );

					var dd = new YAHOO.Fse.Portal.searchCenter.DD( oSearchCenter );
					dd.setHandleElId( oSearchCenterHeader );
					
					/*
					var aHeader = YAHOO.util.Dom.getElementsByClassName( "header", "div", oSearchCenter );
					if( ! aHeader.id ) {
						aHeader.id = oSearchCenter.id + "-header";
					}
					*/
					
					// search center moved content
					var oMoved = document.getElementById( "searchCenter-option-moved-message" );
					if( oMoved ) {
						YAHOO.util.Dom.removeClass( oMoved, "hidden" );
					}

				}
				
				YAHOO.util.Dom.insertBefore( oOptionIcons, oSpecialLinks );
			}
	}
	}
	
	
	if( !  window.frameElement ) {
		if( Fse.Portal._loggedIn ) {
			Fse.Portal.startAutoLogoffTimer();
		}
	} 
	
};



Fse.Portal.hidePortlet = function( sPortletId ) {
	var oDialog = Fse.Portal._dialogPortlets[sPortletId];
	if( oDialog ) {
		oDialog.hide();
	}
};


Fse.Portal.ssoRoute = function( sProvider, sTarget, bNewWindow ) {
	
	
	var oOptions = {
		
		buttons : [
			{ text:"NO", handler:function() { YAHOO.Fse.Dialogs["ssoConfirmDialog"].cancel(); }, isDefault:false },
			{ text:"YES", handler:function() { 
				
					YAHOO.Fse.Dialogs["ssoConfirmDialog"].hide(); 

					// update the dom so that we don't prompt again before
					// the next page refresh					
					var oSSOAcks = document.getElementById( "ssoAcks" );
					if( oSSOAcks ) {
						var sProviders = oSSOAcks.getAttribute( "providers" );
						if( sProviders ) {
							sProviders = sProvider + "," + sProvider;
						} else {
							sProviders = sProvider;
						}
						oSSOAcks.setAttribute( "providers", sProviders );
					}
					
					document.frm_ssoRouter.submit(); 
					
				}, isDefault:false }		
		]
		
	};
	
	if( bNewWindow ) {
		document.frm_ssoRouter.setAttribute( "target", "_blank" );
		document.frm_ssoRouter.setAttribute( "target", sProvider );
	} else {
		document.frm_ssoRouter.setAttribute( "target", "_self" );
	}
	
	document.frm_ssoRouter.provider.value = sProvider;
	document.frm_ssoRouter.target.value = sTarget;
	
	
	var showDialog = true;
	var oSSOAcks = document.getElementById( "ssoAcks" );
	if( oSSOAcks ) {
		var sProviders = oSSOAcks.getAttribute( "providers" );
		if( sProviders.indexOf( sProvider ) >= 0 ) {
			showDialog = false;
		}
	}
	
	if( showDialog ) {	
		var oElements = YAHOO.util.Dom.getElementsByClassName( "website-reference", "span", "ssoConfirmDialog" );
		for( var i = 0; i < oElements.length; i++ ) {
			oElements[i].innerHTML = sTarget;
		}
		
		Fse.DialogManager.show( "ssoConfirmDialog", oOptions );
	} else {
		document.frm_ssoRouter.submit(); 
	}
};

Fse.Portal._countDownInterval = null;
Fse.Portal._autoLogoffTimer = null;
Fse.Portal._logoffTimer = null;


Fse.Portal.showLogoutPrompt = function() {
	
	var oCountDownElement = document.getElementById( "countDownSecondsRemaining" );
	Fse.Portal._countDown = 30;
	oCountDownElement.innerHTML = Fse.Portal._countDown;
	
	Fse.DialogManager.show( "autoLogoffPrompt" );
	
	var intervalFn = function() { 
		Fse.Portal._countDown = Fse.Portal._countDown - 1; 
		if( Fse.Portal._countDown < 0 ) {
			Fse.Portal._countDown = 0;
		}
		oCountDownElement.innerHTML = Fse.Portal._countDown; 
	};
	
	Fse.Portal._countDownInterval = setInterval( intervalFn, 1000 );
	// give the user 31 seconds to respond 
	Fse.Portal._logoffTimer = setTimeout( Fse.Portal.doAutoLogoff, 31000 );
};

Fse.Portal.doAutoLogoff = function() {
	
	var sLogoutScript = "public/actions/logout.cfm";
	var sLogoutURL;
	
	if( Fse.Portal._docRoot ) {
		sLogoutURL = Fse.Portal._docRoot + sLogoutScript;
	} else {
		sLogoutURL = sLogoutScript;		
	}
	window.location = sLogoutURL;	
};

Fse.Portal.startAutoLogoffTimer = function() {

	if( Fse.Portal._logoffTimer ) {
		clearTimeout( Fse.Portal._logoffTimer );
		Fse.Portal._logoffTimer = null;
	}

	if( Fse.Portal._autoLogoffTimer ) {
		clearTimeout( Fse.Portal._autoLogoffTimer );
		Fse.Portal._autoLogoffTimer = null;
	}

	if( Fse.Portal._countDownInterval ) {
		clearInterval( Fse.Portal._countDownInterval );
		Fse.Portal._countDownInterval = null;
	}

	Fse.Portal._autoLogoffTimer = setTimeout( Fse.Portal.showLogoutPrompt, 600 * 60 * 1000 ); // 600 minutes (ten hours)
	
};

Fse.Portal.setEmailDialogFocus = function() {
	
	var oForm = document.getElementById( "frm_stpSendMail" );
	if( oForm ) {
		var fnCheck = function( e ) {
			return "true" == e.getAttribute( "focus" );
		}
		var aElements = YAHOO.util.Dom.getElementsBy( fnCheck, null, oForm );
		if( aElements.length ) {
			var e = aElements[0];
			// e.focus();
		}
	}
};

Fse.Portal.showEmailDialog = function( oTag ) {
	
	var oOptions = {};
	oOptions.title = "Send Email";
	oOptions.src = "../../utilities/email/handler.cfm";

	var sHref = oTag.getAttribute( "href" );
	if( sHref ) {
		var sOptions;
		var iQps = sHref.indexOf( "?" );
		if( iQps >= 0 ) {
			sURL = sHref.substring( 0, iQps );
			sOptions = sHref.substr( iQps + 1, sHref.length - iQps );
		} else {
			sURL = sHref;
		}
		var sAddress;
		var iEmailPs = sURL.indexOf( ":" );
		if( iEmailPs ) {
			sAddress = sURL.substr( iEmailPs + 1, sURL.length - iEmailPs );
			var sProtocol = sURL.substr( 0, iEmailPs );
			if( sProtocol == "fsemailto" ) {
				sAddress = sAddress + "&encTo=true";
			}
		}

		var sQueryString;
		if( sAddress ) {
			sQueryString = "to=" + sAddress;
		}
		
		if( sOptions ) {
			if( sQueryString ) {
				sQueryString = sQueryString + "&" + sOptions;				
			} else {
				sQueryString = sOptions;
			}
		}
		
		if( sQueryString ) {
			oOptions.src = oOptions.src + "?" + encodeURI( sQueryString );
		}
	}
	
	Fse.DialogManager.show( "_stpEmailDailog", oOptions  );
	return false;
};


Fse.Portal.doLogoff = function( sLogoff ) {
	var aCookieNames = [ "CFID", "CFTOKEN", "JSESSIONID" ];
	for( var x = 0; x <= aCookieNames.length; x++ ) {
		
		var sCookieToDelete = aCookieNames[x] + "=" + encodeURIComponent( "" )
		                    + "; expires=" + (new Date(0)).toGMTString()
		                    + "; path=/";
		                    
		document.cookie = sCookieToDelete;
	}
	window.location.href = sLogoff;
};

Fse.Portal.showReportCenter = function( sURL, sTitle ) {
	var oLink = document.getElementById( "sysReportCenterHandler" );
	if( oLink ) {
		var sHref = oLink.getAttribute( "href" );
		sHref = sHref + "?app=" + encodeURIComponent( sURL );
		var oOptions = {
			src : sHref
		};
		if( sTitle ) {
			oOptions.title = sTitle;
		}
		Fse.DialogManager.show( "sysReportCenterDialog", oOptions );
	}
};

Fse.Portal.initReportCenterDialog = function() {
	var aTabViews = YAHOO.util.Dom.getElementsByClassName( "yui-navset", "div", "sysReportCenterDialog" );
	if( aTabViews && aTabViews.length ) {
		var oDialog = YAHOO.Fse.Dialogs["sysReportCenterDialog"];
		oDialog.tabView = new YAHOO.widget.TabView( aTabViews[0] );
	}
	var sAppHandler = document.frm_reportCenter.action;	

	var sReportSelectURL = sAppHandler + "&rc_action=build&rc_part=reportSelect";
	var sCriteriaURL = sAppHandler + "&rc_action=build&rc_part=criteriaFields";
	var sHelpURL = sAppHandler + "&rc_action=build&rc_part=helpContent";

	var fnChanged = function( e ) {
		var oTarget = YAHOO.util.Event.getTarget( e );
		
		var oOption = oTarget.options[oTarget.selectedIndex];
		
		var sFormats = oOption.getAttribute( "fse:formats" );
		if( ! sFormats || sFormats == "" ) {
			sFormats = "pdf,txt";
		} 
		var sMethods = oOption.getAttribute( "fse:methods" );
		if( ! sMethods || sMethods == "" ) {
			sMethods = "download,email";
		} 
		
		if( oOption.value == "?" ) {
			sFormats = "";
			sMethods = "";
		}
		
		var oFormatPDF = document.getElementById( "rc_format_pdf" );
		var oFormatTXT = document.getElementById( "rc_format_txt" );
		var oMethodDOWNLOAD = document.getElementById( "rc_method_download" );
		var oMethodEMAIL = document.getElementById( "rc_method_email" );
		var oRecipients = document.getElementById( "rc_recipients" );
		var oSubject = document.getElementById( "rc_subject" );
		var oMessage = document.getElementById( "rc_message" );
		
		oFormatPDF.checked = false;
		oFormatPDF.disabled = true;
		oFormatTXT.checked = false;
		oFormatTXT.disabled = true;
		
		oMethodDOWNLOAD.checked = false;
		oMethodDOWNLOAD.disabled = true;
		oMethodEMAIL.checked = false;
		oMethodEMAIL.disabled = true;

		// oRecipients.value = ""
		oRecipients.disabled = true;
		// oMessage.value = "";
		oMessage.disabled = true;
		// oSubject.value = "";
		oSubject.disabled = true;
		
		var aFormats = sFormats.split( "," );
		
		for( var x = 0; x < aFormats.length; x++ ) {
			var sFormat = aFormats[x].toLowerCase();
			if( sFormat == "pdf" ) {
				oFormatPDF.disabled = false;
				if( x == 0 ) {
					oFormatPDF.checked = true;
				}
			} else if ( sFormat == "txt" ) {
				oFormatTXT.disabled = false;
				if( x == 0 ) {
					oFormatTXT.checked = true;
				}
			}
		}

		var aMethods = sMethods.split( "," );
		for( var x = 0; x < aMethods.length; x++ ) {
			var sMethod = aMethods[x].toLowerCase();
			if( sMethod == "download" ) {
				oMethodDOWNLOAD.disabled = false;
				if( x == 0 ) {
					oMethodDOWNLOAD.checked = true;
				}
			} else if ( sMethod == "email" ) {
				oMethodEMAIL.disabled = false;
				if( x == 0 ) {
					oMethodEMAIL.checked = true;
					oRecipients.disabled = false;
					oMessage.disabled = false;
					oSubject.disabled = false;
				}
			}
		}
		
		Fse.Ajax.updateContent( sCriteriaURL + "&rc_report=" + encodeURIComponent( oTarget.value ), "rc_criteriaTab" );
		Fse.Ajax.updateContent( sHelpURL + "&rc_report=" + encodeURIComponent( oTarget.value ), "rc_helpTab" );
	};
	
	var fnSelectLoaded = function() {
		var oSelect = document.getElementById( "rc_report" );
		YAHOO.util.Event.addListener( oSelect, "change", fnChanged );
	};
	
	Fse.Ajax.updateContent( sReportSelectURL, "rc_reportSelectSocket", null, fnSelectLoaded );
	Fse.Ajax.updateContent( sCriteriaURL, "rc_criteriaTab" );
	Fse.Ajax.updateContent( sHelpURL, "rc_helpTab" );
	
};	

Fse.Portal.reportCenterMethodChanged = function() {
	var oDownloadRadio = document.getElementById( "rc_method_download" );
	
	var oRecipients = document.getElementById( "rc_recipients" );
	var oMessage = document.getElementById( "rc_message" ); 
	var oSubject = document.getElementById( "rc_subject" ); 
	
	if( oDownloadRadio.checked ) {
		oRecipients.disabled = true;
		oMessage.disabled = true;
		oSubject.disabled = true;
	} else {
		oRecipients.disabled = false;
		oMessage.disabled = false;
		oSubject.disabled = false;
	}
	
};

YAHOO.util.Event.onDOMReady(Fse.Portal.init);