












var wptheme_DebugUtils = {
    // summary: Collection of utilities for logging debug messages.
    enabled: false, 
    log: function ( /*String*/className, /*String*/message ) {
            // summary: Logs a debugging message, if debugging is enabled.
            // className: the javascript class name or function name which is logging the message
            // message: the message to log
            if ( this.enabled ) {
                message = className + " ==> " + message;
                if ( typeof( console ) == "undefined" ) {
                        console.log( message );
                }
                else {
                        //better alternative for browsers that don't support console????
                        alert( message );
                }
            }    
    } 
}
var wptheme_HTMLElementUtils = {
	// summary: Collection of utility functions useful for manipulating HTML elements in a cross-browser fashion.
	className: "wptheme_HTMLElementUtils",
	_debugUtils: wptheme_DebugUtils,
    _uniqueIdCounter: 0,
	getUniqueId: function () {
		// summary: Generates a unique identifier (to the current page) by appending a counter to a set prefix.
		//		A page refresh resets the unique identifier counter.
		// returns: a unique identifier
		var retVal = "wptheme_unique_" + this._uniqueIdCounter;
		this._uniqueIdCounter++;
		return retVal;	// String
	},
	sizeToViewableArea: function ( /*HTMLElement*/element ) {
		// summary: Sizes the given element to the viewable area of the browser in a cross-browser fashion.
		// element: the html element to size
		var browserDimensions = new BrowserDimensions();
		element.style.height = browserDimensions.getViewableAreaHeight() + "px";
		element.style.width = browserDimensions.getViewableAreaWidth() + "px";
		element.style.top = browserDimensions.getScrollFromTop() + "px";
		element.style.left = browserDimensions.getScrollFromLeft() + "px";
	},
	sizeToEntireArea: function ( /*HTMLElement*/element ) {
		// summary: Sizes the given element to the viewable area plus the scroll area.
		// element: the html element to size
		var browserDimensions = new BrowserDimensions();
		//The getHTMLElement*() functions return the exact size of the body element in IE even if the viewable area is
		//larger (i.e. no scroll bars). In Firefox, the dimensions of the viewable area plus the scrollable area is returned.
		//So in IE, we take the viewable area if that is larger and the HTMLElement* area if that is larger.
		element.style.height = Math.max( browserDimensions.getHTMLElementHeight(), browserDimensions.getViewableAreaHeight() ) + "px";
		element.style.width = Math.max( browserDimensions.getHTMLElementWidth(), browserDimensions.getViewableAreaWidth() ) + "px";
	},
	sizeRelativeToViewableArea: function ( /*HTMLElement*/element, /*float*/heightFactor, /*float*/widthFactor ) {
		// summary: Sizes the given element to a certain multiple of the viewable area. For example, if heightFactor is 0.5,
		//		the height of the given element will be set to half of the viewable area height.
		// element: the html element to size
		// heightFactor: the factor to multiply the viewable area height by
		// widthFactor: the factor to multiply the viewable area width by
		var browserDimensions = new BrowserDimensions();
		element.style.height = ( browserDimensions.getViewableAreaHeight() * heightFactor ) + "px";
		element.style.width = ( browserDimensions.getViewableAreaWidth() * widthFactor ) + "px";
	},
	positionRelativeToViewableArea: function ( /*HTMLElement*/element, /*float*/heightFactor, /*float*/widthFactor ) {
		// summary: Positions the given element relative to the viewable area. For example, if the heightFactor is 0.5, the
		// 		top of the element will be positioned (Y axis) halfway down the viewable area. Note that this means the element
		//		will be ABSOLUTELY positioned.
		// element: the html element to position
		// heightFactor: the factor to multiply the viewable area height by
		// widthFactor: the factor to multiply the viewable area width by
		var browserDimensions = new BrowserDimensions();
		element.style.position = "absolute";
		if ( this._debugUtils.enabled ) { 
			this._debugUtils.log( this.className, "Browser's viewable height: " + browserDimensions.getViewableAreaHeight() );
			this._debugUtils.log( this.className, "Browser's viewable width: " + browserDimensions.getViewableAreaWidth() );
			this._debugUtils.log( this.className, "Browser's scroll from top: " + browserDimensions.getScrollFromTop() ); 
			this._debugUtils.log( this.className, "Browser's scroll from left: " + browserDimensions.getScrollFromLeft() );
		}
		element.style.top = ( ( browserDimensions.getViewableAreaHeight() * heightFactor ) + browserDimensions.getScrollFromTop() ) + "px";
		//Scroll left behaves differently in FF & IE in RTL languages. The "correct" behavior is up for debate. In FF, it will return the "correct" value 
		//(scrollLeft switches when the page is rendered right-to-left). In IE, scroll left will basically return the scroll width for the body element.
		//There's no real "capability" to test for here so the window.attachEvent is a cheap trick to check for IE.
		//bidiSupport is defined in the theme.
		if ( bidiSupport.isRTL && window.attachEvent ) {
			if ( this._debugUtils.enabled ) {
				this._debugUtils.log( this.className, "scrollWidth = " + browserDimensions.getHTMLElementWidth() );
				this._debugUtils.log( this.className, "clientWidth = " + browserDimensions.getViewableAreaWidth() );
				this._debugUtils.log( this.className, "Scroll Offset should be: " + ( browserDimensions.getHTMLElementWidth() - browserDimensions.getViewableAreaWidth() - browserDimensions.getScrollFromLeft() ) );
			}
			element.style.left = ( ( browserDimensions.getViewableAreaWidth() * widthFactor) + ( browserDimensions.getHTMLElementWidth() - browserDimensions.getViewableAreaWidth() - browserDimensions.getScrollFromLeft() ) ) + "px";
		}
		else {
			element.style.left = ( ( browserDimensions.getViewableAreaWidth() * widthFactor ) + browserDimensions.getScrollFromLeft() ) + "px";
		}	
	},
	positionOutsideElementTopRight: function ( /*HTMLElement*/elementToPosition, /*HTMLElement*/relativeElement ) {
		// summary: Positions the given element just outside (to the top and lining up with the right edge) of the
		//		relative element.
		// description: Sets the top (Y-axis) position of the given element to the top of the relative element minus the
		//		height of element being positioned. Sets the left (X-axis) position of the given element to the left position of
		//		the relative element plus the width of the relative element (to get the right edge) minus the width of the element 
		// 		being positioned (to line the end of the element being positioned up with the right edge of the relative element). 
		elementToPosition.style.position = "absolute";
		elementToPosition.style.top = ( this.stripUnits( relativeElement.style.top ) - elementToPosition.offsetHeight ) + "px";
		if ( bidiSupport.isRTL ) {
			elementToPosition.style.left = ( this.stripUnits( relativeElement.style.left ) ) + "px";
		}
		else {
			elementToPosition.style.left = ( this.stripUnits( relativeElement.style.left ) + relativeElement.offsetWidth - elementToPosition.offsetWidth) + "px";	
		}
	},
	stripUnits: function ( /*String*/cssProp ) {
		// summary: Strips any units (i.e. "px") from a CSS style property.
		// returns: the number value minus any units
		return parseInt( cssProp.substring( 0, cssProp.length - 2 ));	//integer
	},
	addClassName: function ( /*HTMLElement*/element, /*String*/className ) {
		// summary: Adds the given className to the element's style definitions.
		// element: the HTMLElement to add the class name to
		// className: the className to add
		var clazz = element.className;
		if ( clazz.indexOf( className ) < 0 ) {
			element.className += (" " + className);
		}	
	},
	removeClassName: function ( /*HTMLElement*/element, /*String*/className ) {
		// summary: Removes the given className from the element's style definitions.
		// element: the HTMLElement to remove the class name from
		// className: the className to remove
		var clazz = element.className;
		var startIndex = clazz.indexOf( className );
		if ( startIndex >= 0 ) {
			clazz = clazz.substring(0, startIndex) + clazz.substring( startIndex + className.length + 1 );
			element.className = clazz;
		}
	},
	hideElementsByTagName: function ( /*String 1...N*/) {
		// summary: Hides every element of a given tag name. Stores the old visibility style so it can be 
		//		restored by the showElementsByTagName function.
		for ( var i = 0; i < arguments.length; i++ ) {
			var elements = document.getElementsByTagName( arguments[i] );
			for ( var j = 0; j < elements.length; j++ ) {
				if ( elements[j] && elements[j].style ) {
					elements[j]._oldVisibilityStyle = elements[j].style.visibility;
					elements[j].style.visibility = "hidden";
				}
			}
		}
	},
	showElementsByTagName: function ( /*String 1...N*/) {
		// summary: Shows every element of a given tag name. Uses the old visibility style so that elements hidden
		//		by hideElementsByTagName are properly restored.
		for ( var i = 0; i < arguments.length; i++ ) {
			var elements = document.getElementsByTagName( arguments[i] );
			for ( var j = 0; j < elements.length; j++ ) {
				if ( elements[j] && elements[j].style ) {
					if ( elements[j]._oldVisibility ) {
						elements[j].style.visibility = elements[j]._oldVisibility;
						elements[j]._oldVisibility = null;
					}
					else {
						elements[j].style.visibility = "visible";
					}
				}
			}
		}	
	},
	addOnload: function ( /*Function*/func ) {
		// summary: Adds a function to be called on page load.
		// func: the function to call 
		if ( window.addEventListener ) {
			window.addEventListener( "load", func, false );
		}
		else if ( window.attachEvent ) {
			window.attachEvent( "onload", func );
		}
	},
	getEventObject: function ( /*Event?*/event ) {
		// summary: Cross-browser function to retrieve the event object.
		// event: In W3C-compliant browsers, this object will just simply be
		//		returned
		// returns: the event object
		var result = event;
		if ( !event && window.event ) {
			result = window.event;
		}
		return result;	// Event
	}
}

var wptheme_CookieUtils = {
	// summary: Various utility functions for dealing with cookies on the client.
	_deleteDate: new Date( "1/1/2003" ),
	_undefinedOrNull: function ( /*Object*/variable ) {
            // summary: Determines if a given variable is undefined or NULL.
            // returns: true if undefined OR NULL, false otherwise.
            return ( typeof ( variable ) == "undefined" || variable == null );  // boolean
	},
	debug: wptheme_DebugUtils,
        className: "wptheme_CookieUtils",
	getCookie: function ( /*String*/cookieName ) {
		// summary: Gets the value for a given cookie name. If no value is found, returns NULL.
		cookieName = cookieName + "="
		var retVal = null;
		if ( document.cookie.indexOf( cookieName ) >= 0 )
		{
		    var cookies = document.cookie.split(";");
		
		    var c = 0;
		    while ( c < cookies.length && ( cookies[c].indexOf( cookieName ) == -1 ) )
		    {
		        c=c+1;
		    }
			//Add one to the cookie length to account for the equals we added to the cookie name at the beginning of 
			//the function.
		    var cookieValue = cookies[c].substring( (cookieName.length + 1), cookies[c].length );
		    
		    if ( cookieValue != "null" )
		    {
		        retVal = cookieValue;
		    }
		}
		
		return retVal; // String
	},
	setCookie: function ( /*String*/name, /*String*/value, /*Date?*/expiration, /*String?*/path ) {
		// summary: Creates the cookie based on the given information.
		// name: the name of the cookie
		// value: the value for the cookie
		// expiration: OPTIONAL -- when the cookie should expire
		// path: OPTIONAL -- the url path the cookie applies to
		if ( this.debug.enabled ) { this.debug.log( this.className, "set cookie (" + [ name, value, expiration, path ]  + ")"); }
		
		if ( this._undefinedOrNull( name ) ) { throw Error( "Unable to set cookie! No name given!" ); }
		if ( this._undefinedOrNull( value ) ) { throw Error( "Unable to set cookie! No value given!" ); }
		if ( this._undefinedOrNull( expiration ) ) { 
			expiration = ""; 
		}
		else {
			expiration = "expiration=" + expiration.toUTCString() + ";";
		}
		if ( this._undefinedOrNull( path ) ) { 
			path = "path=/;"; 
		}
		else {
			path = "path=" + path + ";";
		}
		
		document.cookie=name + '=' + value + ';' + expiration +  path;		
	},
	deleteCookie: function ( /*String*/cookieName ) {
		// summary: Deletes a given cookie by setting the value to "null" and setting the expiration
		//		value to expire completely.
		if ( this.debug.enabled ) { this.debug.log( this.className, "delete cookie (" + [ cookieName ] + ") "); }
		this.setCookie( cookieName, "null", this._deleteDate );
	}
}// Populates and shows a context menu asynchronously. 
//
// uniqueID             - some unique identifier describing the context of the menu (i.e. portlet window id)
// urlToMenuContents    - url target for the iFrame
// isLTR                - indicates if the page orientation is Left-to-Right
//
//
// This function creates a context menu using the WCL context menu javascript library. It populates this menu
// by creating a hidden DIV ( the ID consists of the unique identifier with "_DIV" appended ) which contains
// a hidden IFRAME ( the ID consists of the DIV identifier with "_IFRAME" appended ). The IFRAME loads the 
// specified URL and calls the buildAndDisplayMenu() function upon completion of loading the IFRAME. The document
// returned by the specified URL must contain a javascript function called "getMenuContents()" which returns 
// an array. The contents of the array must be in the following format ( array[i] = <menu-item-display-name>; 
// array[i+1] = <menu-item-action-url> ). The menu is attached to an HTML element with the id equal to the 
// unique identifier. So, in the portlet context menu case, the image associated with the context menu must have
// an ID equal to the portlet window ID. The dynamically created DIV and IFRAME are deleted after the menu 
// contents are populated and the same menu is returned for the duration of the request in which it was created.
//

//Control debugging. 
// -1 - no debugging
//  0 - minimal debugging ( adding items to menus )
//  1 - medium debugging ( function entry/exit )
//  2 - maximum debugging ( makes iframe visible )
// 999 - make iframe visible only
var asynchContextMenuDebug = -1;

var asynchContextMenuMouseOverIndicator = "";

var portletIdMap = new Object();

function asynchContextMenuOnMouseClickHandler( uniqueID, isLTR, urlToMenuContents, menuBorderStyle, menuTableStyle, menuItemStyle, menuItemSelectedStyle, emptyMenuText, loadingImage, renderBelow )
{
	var menuID = "contextMenu_" + uniqueID;
    
    var menu = getContextMenu( menuID );
    
    if (menu == null) 
    { 
    	asynchContextMenu_menuCurrentlyLoading = uniqueID;
    	
    	if ( loadingImage )
    	{
			setLoadingImage( loadingImage );
	    }

        menu = createContextMenu( menuID, isLTR, null, menuBorderStyle, menuTableStyle, emptyMenuText, null, renderBelow );
        loadAsynchContextMenu( uniqueID, urlToMenuContents, isLTR, menuItemStyle, menuItemSelectedStyle, '', true );
    }
    else
    {
    	if ( asynchContextMenu_menuCurrentlyLoading == uniqueID )
		{
			return;	
		}
    	showContextMenu( menuID, document.getElementById( uniqueID ) );
    }	
}

var asynchContextMenu_originalMenuImgElementSrc;

function setLoadingImage( img )
{
	asynchContextMenu_originalMenuImgElementSrc = document.getElementById( asynchContextMenu_menuCurrentlyLoading + "_img" ).src;
	document.getElementById( asynchContextMenu_menuCurrentlyLoading + "_img" ).src = img;
}

function clearLoadingImage()
{
	document.getElementById( asynchContextMenu_menuCurrentlyLoading + "_img" ).src = asynchContextMenu_originalMenuImgElementSrc;
}

function loadAsynchContextMenu( uniqueID, url, isLTR, menuItemStyle, menuItemSelectedStyle, emptyMenuText, showMenu, onMenuAffordanceShowHandler )
{
    asynchDebug( 'ENTRY loadAsynchContextMenu p1=' + uniqueID + '; p2=' + url + '; p3=' + isLTR + '; p4=' + isLTR);
	
	var menuID = "contextMenu_" + uniqueID;

    var dialogTag = null;
    var ID = uniqueID + '_DIV';
			
	//an iframe wasn't cleaned up properly
	if ( document.getElementById( ID ) != null )
	{
		closeMenu( ID );
        return;
	}
	
	//create the div tag and assign the styles to it		
	dialogTag = document.createElement( "DIV" );
	dialogTag.style.position="absolute";
	
	if ( asynchContextMenuDebug < 2 )
	{
		dialogTag.style.left = "0px";
		dialogTag.style.top  = "-100px";
    	dialogTag.style.visibility = "hidden";
	}
	
	if ( asynchContextMenuDebug >= 2 || asynchContextMenuDebug == 999 )
	{
		dialogTag.style.left = "100px";
		dialogTag.style.top  = "100px";
    	dialogTag.style.visibility = "visible";
	}		
	
	dialogTag.id=ID;
	
	var styleString = 'null';
	
	if ( menuItemStyle != null )
	{
		styleString = "'" + menuItemStyle + "'";
	}
	
	if ( menuItemSelectedStyle != null ) 
	{
		styleString = styleString + ", '" + menuItemSelectedStyle + "'";
	}
	else
	{
		styleString = styleString + ", null";
	}
	
	//alert( 'buildAndDisplayMenu( this.id, this.name, ' + styleString + ', ' + showMenu + ' , ' + callbackFn + ' );' );
	
    //create the iframe this way because onload handlers attached when creating dynamically don't seem to fire
    dialogTag.innerHTML='<iframe id="' + menuID + '" name="' + ID + '_IFRAME" src="' + url + '" onload="buildAndDisplayMenu( this.id, this.name, ' + styleString + ', ' + showMenu + ' , \''+ onMenuAffordanceShowHandler + '\' ); return false;" ></iframe>';
		
	//append the div tag to the document body		
	document.body.appendChild( dialogTag );

    asynchDebug( 'EXIT createDynamicElements' );

}



//Builds and displays the menu from the contents of the IFRAME.
function buildAndDisplayMenu( menuID, iframeID, menuItemStyle, menuItemSelectedStyle, showMenu, onMenuAffordanceShowHandler )
{
    asynchDebug( 'ENTRY buildAndDisplayMenu p1=' + menuID + '; p2=' + iframeID + '; p3=' + showMenu + '; p4=' + onMenuAffordanceShowHandler );
    
    //get the context menu, should have already been created.
    var menu = getContextMenu( menuID );

	//clear out our loading indicator
    clearLoadingImage();
   	asynchContextMenu_menuCurrentlyLoading = null;

    //if the menu doesn't exist, we shouldn't even be here....but just in case.
    if ( menu == null )
    {
        return false;
    }

    //strip the _IFRAME from the id to come up with the DIV id
    index = iframeID.indexOf( "_IFRAME" );
    var divID = iframeID.substring( 0, index );

    //strip the _DIV from the id to come up with the portlet id
    index2 = divID.indexOf( "_DIV" );
    var uniqueID = divID.substring( 0, index2 );
    
    asynchDebug( 'divID = ' + divID );
    asynchDebug( 'uniqueID = ' + uniqueID );

    var frame, c=-1, done=false;

    //In IE, referencing the iFrame via the name in the window.frames[] array
    //does not appear to work in this case, so we have to cycle through all the 
    //frames and compare the names to find the correct one.
    while ( ( c + 1 ) < window.frames.length && !done )
    {  
        c=c+1;

		//We have to surround this with a try/catch block because there are
		//cases where attempting to access the 'name' property of the current
		//frame in the array will generate an access denied exception. This is 
		//OK to ignore because any frame that generates this exception shouldn't
		//be the one we are looking for.
        try 
        {
            done = ( window.frames[c].name == iframeID );
        }
        catch ( e )
        {
            //do nothing.
        }
    }

    //Check for the existence of the function we are looking to call. 
    //If not, don't bother creating the menu. 
    if ( window.frames[c].getMenuContents )
    {
        contents = window.frames[c].getMenuContents();
    }
    else
    {
        //we were unable to load the context menu for whatever reason
        return false;
    }
    
    
    //Cycle through the array created by the getMenuContents()
    //function. The structure of the array should be [url, name].
    for ( i=0; i < contents.length; i=i+3 ) 
    {
        asynchDebug2( 'Adding item: ' + contents[i+1] );
        asynchDebug2( 'URL: ' + contents[i] );
        if ( contents[i] )
        {
        	asynchDebug2( 'url length: ' + contents[i].length );
        }
        asynchDebug2( 'icon: ' + contents[i+2] );

        if ( contents[i] && contents[i].length != 0 )
        {
        	var icon = null;
        	
        	if ( contents[i+2] && contents[i+2].length != 0 )
        	{
        		icon = contents[i+2];
        	}
        
            menu.add( new UilMenuItem( contents[i+1], true, '', contents[i], null, icon, null, menuItemStyle, menuItemSelectedStyle ) );
        }
    }

    //our target image should have an ID of the uniqueID
    var target = document.getElementById( uniqueID );
    //remove our iframe since we've created the menu, we don't need the iframe on this request anymore.
    // (148004) deleting the elements causes the status bar to spin forever on mozilla
    //deleteDynamicElements( divID );

    asynchDebug( 'EXIT buildAndDisplayMenu' );

	//asynchContextMenuOnLoadCheck( menuID, uniqueID, target, onMenuAffordanceShowHandler );

    //...and display!
    if ( showMenu == null || showMenu == true )
    {
    	return showContextMenu( menuID, target ); 
    }
}


//Creates and loads the IFRAME.
function createDynamicElements( uniqueID, url, menuID, menuItemStyle, menuItemSelectedStyle )
{
    asynchDebug( 'ENTRY createDynamicElements p1=' + uniqueID + '; p2=' + url + '; p3=' + menuID );

    var dialogTag = null;
    var ID = uniqueID + '_DIV';
			
	//an iframe wasn't cleaned up properly
	if ( document.getElementById( ID ) != null )
	{
		closeMenu( ID );
        return;
	}
	
	//create the div tag and assign the styles to it		
	dialogTag = document.createElement( "DIV" );
	dialogTag.style.position="absolute";
	
	if ( asynchContextMenuDebug < 2 )
	{
		dialogTag.style.left = "0px";
		dialogTag.style.top  = "-100px";
    	dialogTag.style.visibility = "hidden";
	}
	
	if ( asynchContextMenuDebug >= 2 || asynchContextMenuDebug == 999 )
	{
		dialogTag.style.left = "100px";
		dialogTag.style.top  = "100px";
    	dialogTag.style.visibility = "visible";
	}		
	
	dialogTag.id=ID;
	
	var styleString = 'null, null';
	
	if ( menuItemStyle != null )
	{
		styleString = "'" + menuItemStyle + "'";
	}
	
	if ( menuItemSelectedStyle != null ) 
	{
		styleString = styleString + ", '" + menuItemSelectedStyle + "'";
	}
	else
	{
		styleString = styleString + ", null";
	}
    
    //create the iframe this way because onload handlers attached when creating dynamically don't seem to fire
    dialogTag.innerHTML='<iframe id="' + menuID + '" name="' + ID + '_IFRAME" src="' + url + '" onload="buildAndDisplayMenu( this.id, this.name, ' + styleString + ' ); return false;" ></iframe>';
		
	//append the div tag to the document body		
	document.body.appendChild( dialogTag );

    asynchDebug( 'EXIT createDynamicElements' );
}

function asynchDebug( str ) 
{
	if ( asynchContextMenuDebug >= 1 && asynchContextMenuDebug != 999 )
	{
	    alert( str );
	}
}

function asynchDebug2( str )
{
	if ( asynchContextMenuDebug >= 0 && asynchContextMenuDebug != 999 )
	{
    	alert( str) ;
    }
}

//MMD - this function is used so that relative URLs may be used with the context menus.
function asynchDoFormSubmit( url ){

    var formElem = document.createElement("form");
    document.body.appendChild(formElem);

    formElem.setAttribute("method", "GET");

    var delimLocation = url.indexOf("?");
    
    if (delimLocation >= 0) {
        var newUrl = url.substring(0, delimLocation);
        
        var paramsEnd = url.length;
        // test to see if a # fragment identifier (the layout node id) is appended to the end of the URL
        var layoutNodeLocation = url.indexOf("#");
        if (layoutNodeLocation >= 0 && layoutNodeLocation > delimLocation) {
            paramsEnd = layoutNodeLocation;
            newUrl = newUrl + url.substring(layoutNodeLocation, url.length);
        }
        
        var params = url.substring(delimLocation + 1, paramsEnd);
        var paramArray = params.split("&");

        for (var i = 0; i < paramArray.length; i++) {
            var name = paramArray[i].substring(0, paramArray[i].indexOf("="));
            var value = paramArray[i].substring(paramArray[i].indexOf("=") + 1, paramArray[i].length);

            var inputElem = document.createElement("input");
            inputElem.setAttribute("type", "hidden");
            inputElem.setAttribute("name", name);
            inputElem.setAttribute("value", value);
            formElem.appendChild(inputElem);
        }
        
        url = newUrl;

    }

    formElem.setAttribute("action", url);
    
    formElem.submit();

}

var asynchContextMenu_menuCurrentlyLoading = null;

function menuMouseOver( id, selectedImage )
{
	if ( asynchContextMenu_menuCurrentlyLoading != null )
		return;

	portletIdMap[id] = 'menu_'+id+'_img';
	showAffordance(id, selectedImage);
}

function menuMouseOut( id, disabledImage )
{
	if ( asynchContextMenu_menuCurrentlyLoading != null )
		return;
	
   	hideAffordance(id , disabledImage);
	portletIdMap[id] = "";
}

function showAffordance( id, selectedImage )
{
	document.getElementById( 'menu_'+id ).style.cursor='pointer';
	document.getElementById( 'menu_'+id+'_img').src=selectedImage;
}

function hideAffordance( id, disabledImage )
{
	document.getElementById( 'menu_'+id ).style.cursor='default';
	document.getElementById( 'menu_'+id+'_img').src=disabledImage;	
}

function menuMouseOverThinSkin(id, selectedImage, minimized)
{
	if ( asynchContextMenu_menuCurrentlyLoading != null )
		return;

	portletIdMap[id] = 'menu_'+id+'_img';
	showAffordanceThinSkin(id, selectedImage, minimized);
}

function menuMouseOutThinSkin(id, disabledImage, minimized )
{
	if ( asynchContextMenu_menuCurrentlyLoading != null)
		return;

   	hideAffordanceThinSkin(id , disabledImage, minimized);
	portletIdMap[id] = "";
}

function showAffordanceThinSkin(id, selectedImage, minimized)
{
	document.getElementById( 'menu_'+id ).style.cursor='pointer';
	document.getElementById( 'portletTitleBar_'+id ).className='wpsThinSkinContainerBar wpsThinSkinContainerBarBorder';
	document.getElementById( 'title_'+id ).className='wpsThinSkinDragZoneContainer wpsThinSkinVisible';
	document.getElementById( 'menu_'+id+'_img' ).src=selectedImage;
}

function hideAffordanceThinSkin(id, disabledImage, minimized)
{
	document.getElementById( 'menu_'+id ).style.cursor='default';
	/* when minimized, the titlebar should always be displayed so it can be found by the user, so we don't hide it */
	if (minimized == null || minimized == false){
	document.getElementById( 'portletTitleBar_'+id ).className='wpsThinSkinContainerBar';
	}
	document.getElementById( 'title_'+id ).className='wpsThinSkinDragZoneContainer wpsThinSkinInvisible';
	document.getElementById( 'menu_'+id+'_img' ).src=disabledImage;	
}

var onmousedownold_;

function closeMenu(id, disabledImage)
{
	hideCurrentContextMenu();

	if (  portletIdMap[id] == "")
	{
		hideAffordance( id, disabledImage );
	}
	
	document.onmousedown = onmousedownold_;
}

function showPortletMenu( id, portletNoActionsText, isRTL, menuPortletURL, disabledImage, loadingImage )
{
	if ( portletIdMap[id].indexOf( id ) < 0  )
		return;
		
	asynchContextMenuOnMouseClickHandler('menu_'+id,!isRTL,menuPortletURL, null, null, null, null, portletNoActionsText, loadingImage );
   	onmousedownold_ = document.onmousedown;
	document.onmousedown = closeMenu;
}

function accessibleShowMenu( event , id , portletNoActionsText, isRTL, menuPortletURL, loadingImage )
{
	if ( event.which == 13 )
	{
	    asynchContextMenuOnMouseClickHandler( 'menu_'+id,!isRTL,menuPortletURL, null, null, null, null, portletNoActionsText, loadingImage );
	}
	else
	{
	 	return true;
	}
}

wptheme_AsyncMenuAffordance = function ( /*String*/anchorId, /*String*/imageId, /*String*/showingImgUrl, /*String*/hidingImgUrl ) {
	// summary: Representation of an asynchronous menu's affordance (UI element which triggers the menu to show). Manages the details
	//		of showing/hiding the affordance, if appropriate.
	// description: In the Portal theme, we want the menu affordance to only show during certain events (e.g. mouseover the page name). The details
	//		of the showing/hiding is a little more complicated than changing the css on an HTML element due to various rendering/accessibility concerns. This 
	//		object manages these details. 
	this.anchorId = anchorId;
	this.imageId = imageId;
	this.showingImgUrl = showingImgUrl;
	this.hidingImgUrl = hidingImgUrl;
	
	this.show = function () {
		// summary: Shows the affordance.		
		if (document.getElementById( this.anchorId ) != null) {
			document.getElementById( this.anchorId ).style.cursor = 'pointer';
			document.getElementById( this.imageId ).src=this.showingImgUrl;
		}	
	}
	this.hide = function () {
		// summary: Hides the affordance.
		if (document.getElementById( this.anchorId ) != null) {
			document.getElementById( this.anchorId ).style.cursor = 'default';
			document.getElementById( this.imageId ).src=this.hidingImgUrl;
		}
	}
}

wptheme_AsyncMenu = function ( /*String*/id, /*String*/menuBorderStyle, /*String*/menuStyle, /*String*/menuItemStyle, /*String*/selectedMenuItemStyle ) {
		// summary: Representation of an asynchronous context menu. Manages showing/hiding the menu as well as showing/hiding the menu's affordance (UI element
		//		which opens the menu). 
		// id: the menu's id
		// menuBorderStyle: the style name to be applied to the menu's border
		// menuStyle: the style name to be applied to the general menu
		// menuItemStyle: the style name to be applied to the menu item
		// selectedMenuItemStyle: the style name to be applied to a selected menu item
		
		//global utilities
		this._htmlUtils = wptheme_HTMLElementUtils;
		
		//properties passed in at construction time
		this.id = id;
		this.menuBorderStyle = menuBorderStyle; 
		this.menuStyle = menuStyle;
		this.menuItemStyle = menuItemStyle;
		this.selectedMenuItemStyle = selectedMenuItemStyle;
		
		//properties that have to be initialized in the theme
		this.url = null;
		this.isRTL = false;
		this.emptyMenuText = null;
		this.loadingImgUrl = null;
		this.affordance = null;
		this.init = function ( /*String*/ url, /*boolean*/isRTL, /*String*/ emptyMenuText, /*String*/ loadingImgUrl, /*wptheme_MenuAffordance*/affordance, /*boolean*/renderBelow ) {
			// summary: Convenience function for setting up the required variables for showing the page menu.
			// url: the url to load page menu contents (usually created with <portal-navgation:url themeTemplate="pageContextMenu" />)
			// isRTL: is the current locale a right-to-left locale
			// emptyMenuText: the text to display if the user has no valid options
			// loadingImgUrl: the url to the image to display while the menu is loading
			this.url = url;
			this.isRTL = isRTL;
			this.emptyMenuText = emptyMenuText;
			this.loadingImgUrl = loadingImgUrl;
			this.affordance = affordance;
			this.renderBelow = renderBelow;
		}
		this.show = function ( /*Event?*/evt ) {
			// summary: Shows the page menu for the selected page. 
			// description: Typically triggered by 2 types of events: click and keypress. On a click event, we just want to show the menu. On a keypress
			//		event, we want to make sure the ENTER/RETURN key was pressed before showing the menu.
			// event: Event object passed in when triggered from a key press event.
			
			evt = this._htmlUtils.getEventObject( evt );
			var show = false;
			var result;
			//On a keypress event, we want to make sure the ENTER/RETURN key was pressed before showing the menu.
			if ( evt && evt.type == "keypress" ) { 
				var keyCode = -1;
				if ( evt && evt.which ){	
					keyCode = evt.which;
				}
				else {
					keyCode = evt.keyCode
				}	
		
				//Enter/Return was the key that triggered this keypress event.
				if ( keyCode == 13 ) {
					show = true;
				}						
			}
			else {
				//Some other kind of event, just show the menu already...
				show = true;
			}
			
			//Show the menu if necessary.
			if ( show ) {
				result = asynchContextMenuOnMouseClickHandler( this.id, !this.isRTL, this.url, this.menuBorderStyle, this.menuStyle, this.menuItemStyle, this.selectedMenuItemStyle, this.emptyMenuText, this.loadingImgUrl, this.renderBelow );
			} 
			
			return result;
		}
		this.showAffordance = function () {
			// summary: Shows the affordance associated with the given asynchronous menu. 
			if ( asynchContextMenu_menuCurrentlyLoading == null ) {
				this.affordance.show();
			}	
		}
		this.hideAffordance = function () {
			// summary: Hides the affordance associated with the given asynchronous menu.
			if ( asynchContextMenu_menuCurrentlyLoading == null ) {
				this.affordance.hide();
			}
		}
	}

wptheme_ContextMenuUtils = {
	// summary: Utility object for managing the different context menus in the theme. Constructs the wptheme_AsyncMenu objects here, initialization must take place in
	//		the head section of the HTML document (usually the initialization values require the usage of JSP tags). 
	moreMenu: new wptheme_AsyncMenu( "wptheme_more_menu", "wptheme-more-menu-border", "wptheme-more-menu", "wptheme-more-menu-item", "wptheme-more-menu-item-selected", true ),
	topNavPageMenu: new wptheme_AsyncMenu( "wptheme_selected_page_menu", "wptheme-page-menu-border", "wptheme-page-menu", "wptheme-page-menu-item", "wptheme-page-menu-item-selected" ),
	sideNavPageMenu: new wptheme_AsyncMenu( "wptheme_selected_page_menu", "wptheme-page-menu-border", "wptheme-page-menu", "wptheme-page-menu-item", "wptheme-page-menu-item-selected" )
}



//////////////////////////////////////////////////////////////////
// begin BrowserDimensions object definition
BrowserDimensions.prototype				= new Object();
BrowserDimensions.prototype.constructor = BrowserDimensions;
BrowserDimensions.superclass			= null;

function BrowserDimensions(){

    this.body = document.body;
    if (this.isStrictDoctype() && !this.isSafari()) {
        this.body = document.documentElement;
    }

}

BrowserDimensions.prototype.getScrollFromLeft = function(){
    return this.body.scrollLeft ;
}

BrowserDimensions.prototype.getScrollFromTop = function(){
    return this.body.scrollTop ;
}

BrowserDimensions.prototype.getViewableAreaWidth = function(){
    return this.body.clientWidth ;
}

BrowserDimensions.prototype.getViewableAreaHeight = function(){
    return this.body.clientHeight ;
}

BrowserDimensions.prototype.getHTMLElementWidth = function(){
    return this.body.scrollWidth ;
}

BrowserDimensions.prototype.getHTMLElementHeight = function(){
    return this.body.scrollHeight ;
}

BrowserDimensions.prototype.isStrictDoctype = function(){

    return (document.compatMode && document.compatMode != "BackCompat");

}

BrowserDimensions.prototype.isSafari = function(){

    return (navigator.userAgent.toLowerCase().indexOf("safari") >= 0);

}

// end BrowserDimensions object definition
//////////////////////////////////////////////////////////////////

//Provides a controller for enabling and disabling javascript events
//on a particular HTML element. Elements must register with the controller
//in order to be enabled/disabled. The act of registering with the controller
//disables the element, unless otherwise specified. 
//
//
// **The main purpose of this controller is to disable the javascript 
//actions of certain elements that, if executed prior to the page completely 
//loading, cause problems.

//Object definition for ElementJavascriptEventController
function ElementJavascriptEventController()
{
	//Registered elements to disable and enable upon page load.
	this.elements = new Array();
	this.arrayPosition = 0;
	
	//Function mappings
	this.enableAll = enableRegisteredElementsInternal;
	this.disableAll = disableRegisteredElementsInternal;
	this.register = registerElementInternal;
	this.enable = enableRegisteredElementInternal;
	this.disable = disableRegisteredElementInternal;
	
	//Enables all registered items.
	function enableRegisteredElementsInternal()
	{
		for ( c=0; c < this.arrayPosition; c=c+1 )
		{
			this.elements[c].enable();	
		}
	}
	
	function enableRegisteredElementInternal( id )
	{
		for ( c=0; c < this.arrayPosition; c=c+1 )
		{
			if ( this.elements[c].ID == id )
			{
				this.elements[c].enable();
			}
		}
	}
	
	//Disables all registered items.
	function disableRegisteredElementsInternal()
	{
		for ( c=0; c < this.arrayPosition; c=c+1 )
		{
			this.elements[c].disable();
		}
	}
	
	function disableRegisteredElementInternal( id )
	{
		for ( c=0; c < this.arrayPosition; c=c+1 )
		{
			if ( this.elements[c].ID == id )
			{
				this.elements[c].disable();
			}
		}
	}
	
	//Registers an item with the controller.
	function registerElementInternal( HTMLElementID, doNotDisable, optionalOnEnableJavascriptAction )
	{
		this.elements[ this.arrayPosition ] = new RegisteredElement( HTMLElementID, doNotDisable, optionalOnEnableJavascriptAction );
		this.arrayPosition = this.arrayPosition + 1;
	}
}

//Object definition for an element registered with the controller.
//These objects should only be created by the controller.
function RegisteredElement( ElementID, doNotDisable, optionalOnEnableJavascriptAction )
{
	//Information about the element.
	this.ID = ElementID;
	this.oldCursor = "normal";
	this.ItemOnMouseDown = null;
	this.ItemOnMouseUp = null;
	this.ItemOnMouseOver = null;
	this.ItemOnMouseOut = null;
	this.ItemOnMouseClick = null;
	this.ItemOnBlur = null;
	this.ItemOnFocus = null;
	this.ItemOnChange = null;
	this.onEnableJS = optionalOnEnableJavascriptAction;
	
	//Function mappings
	this.enable = enableInternal;
	this.disable = disableInternal;
	
	//Enables an element. Enabling consists of changing the cursor
	//style back to the original style, and returning all the stored
	//javascript events to their original state. If the HTML element
	//is a button, the disabled property is simply set to false.
	function enableInternal()
	{
		//Return the old cursor style.
		document.getElementById( this.ID ).style.cursor = this.oldCursor;
		
		//If it's a button, re-enable it.
		if ( document.getElementById( this.ID ).tagName == "BUTTON" )
		{
			document.getElementById( this.ID ).disabled = false;
		}
		else
		{
			//Return all the events.
			document.getElementById( this.ID ).onmousedown = this.ItemOnMouseDown;
			document.getElementById( this.ID ).onmouseup = this.ItemOnMouseUp;
			document.getElementById( this.ID ).onmouseover = this.ItemOnMouseOver;
			document.getElementById( this.ID ).onmouseout = this.ItemOnMouseOut;
			document.getElementById( this.ID ).onclick = this.ItemOnMouseClick;
			document.getElementById( this.ID ).onblur = this.ItemOnBlur;
			document.getElementById( this.ID ).onfocus = this.ItemOnFocus;
			document.getElementById( this.ID ).onchange = this.ItemOnChange;	
		}
		
		//Execute the onEnable Javascript, if specified.
		if ( this.onEnableJS != null )
		{
			eval( this.onEnableJS );
		}
	}
	
	//Disables an element. Disabling consists of changing the cursor
	//style to "not-allowed", and setting all the javascript events to
	//do nothing. If the HTML element is a button, the "disabled" property
	//is simply set to true.	
	function disableInternal() 
	{
		//Set the cursor style to point out that you can't do anything yet
		this.oldCursor = document.getElementById( this.ID ).style.cursor;
		document.getElementById( this.ID ).style.cursor = "not-allowed";
	
		//If the HTML element is a BUTTON, we can easily disable it by
		//setting the disabled property to true.
		if ( document.getElementById( this.ID ).tagName == "BUTTON" )
		{
			document.getElementById( this.ID ).disabled = true;
		}
		else
		{
			//Store all the current events registered to the item.
			this.ItemOnMouseDown = document.getElementById( this.ID ).onmousedown;
			this.ItemOnMouseUp = document.getElementById( this.ID ).onmouseup;
			this.ItemOnMouseOver = document.getElementById( this.ID ).onmouseover;
			this.ItemOnMouseOut = document.getElementById( this.ID ).onmouseout;
			this.ItemOnMouseClick = document.getElementById( this.ID ).onclick;
			this.ItemOnBlur = document.getElementById( this.ID ).onblur;
			this.ItemOnFocus = document.getElementById( this.ID ).onfocus;
			this.ItemOnChange = document.getElementById( this.ID ).onchange;
			
			//Now set all the current events to do nothing.
			document.getElementById( this.ID ).onmousedown = function () { void(0); return false; };
			document.getElementById( this.ID ).onmouseup = function () { void(0); return false; };
			document.getElementById( this.ID ).onmouseover = function () { void(0); return false; };
			document.getElementById( this.ID ).onmouseout = function () { void(0); return false; };
			document.getElementById( this.ID ).onclick = function () { void(0); return false; };
			document.getElementById( this.ID ).onblur = function () { void(0); return false; };
			document.getElementById( this.ID ).onfocus = function () { void(0); return false; };
			document.getElementById( this.ID ).onchange = function () { void(0); return false; };
		}
	}		
	
	//Disable the element
	if ( !doNotDisable )
	{
		this.disable();	
	}
	
} 
// Global variables 
var wpsFLY_isIE = document.all?1:0;
var wpsFLY_isNetscape=document.layers?1:0;                             
var wpsFLY_isMoz = document.getElementById && !document.all;

// This sets how many pixels of the tab should show when collapsed was 11
var wpsFLY_minFlyout=0;

// How many pixels should it move every step? 
var wpsFLY_move=15;
if (wpsFLY_isIE)
   wpsFLY_move=12;

// Specify the scroll speed in milliseconds
var wpsFLY_scrollSpeed=1;

// Timeout ID for flyout
var wpsFLY_timeoutID=1;

// How from from top of screen for scrolling
var wpsFLY_fromTop=100;
var wpsFLY_leftResize;

//Cross browser access to required dimensions 
var wpsFLY_browserDimensions = new BrowserDimensions();

var wpsFLY_initFlyoutExpanded = wpsFLY_getInitialFlyoutState();

// Current state of the flyout for the life of the request (true=in, false=out)
var wpsFLY_state = true;

var wpsFLY_currIndex = -1;
// -----------------------------------------------------------------
// Initialize the Flyout
// -----------------------------------------------------------------
function wpsFLY_initFlyout(showHidden)
{
   wpsFLY_Flyout=new wpsFLY_makeFlyout('wpsFLYflyout');
   wpsFLY_Flyout.setWidth(wpsFLY_minFlyout);
   wpsFLY_Flyout.css.overflow = 'hidden';
   wpsFLY_Flyout.setLeft( wpsFLY_Flyout.pageWidth() - wpsFLY_minFlyout-1 );

   if (wpsFLY_isNetscape||wpsFLY_isMoz)
      scrolled="window.pageYOffset";
   else if (wpsFLY_isIE)
      scrolled="document.body.scrollTop";

   if (wpsFLY_isNetscape||wpsFLY_isMoz)
      wpsFLY_fromTop=wpsFLY_Flyout.css.top;
   else if (wpsFLY_isIE)
      wpsFLY_fromTop=wpsFLY_Flyout.css.pixelTop;

   if (wpsFLY_isIE) {
      window.onscroll=wpsFLY_internalScroll;
      window.onresize=wpsFLY_internalScroll;
   }
   else {
     window.onscroll=wpsFLY_internalScroll();
   }

   if (showHidden)
      wpsFLY_Flyout.css.visibility="hidden";
   else
      wpsFLY_Flyout.css.visibility="visible";

   //Open or close the flyout depending on the init state.
   if ( wpsFLY_initFlyoutExpanded != null )
   {
       wpsFLY_toggleFlyout( wpsFLY_initFlyoutExpanded, true );
   }

   return;
}

// -----------------------------------------------------------------
// Initialize the Flyout on left
// -----------------------------------------------------------------
function wpsFLY_initFlyoutLeft(showHidden)
{
   wpsFLY_FlyoutLeft=new wpsFLY_makeFlyoutLeft('wpsFLYflyout');

   if (wpsFLY_isIE) {
      wpsFLY_FlyoutLeft.setWidth(wpsFLY_minFlyout);
      wpsFLY_FlyoutLeft.css.overflow = 'hidden';
	   wpsFLY_FlyoutLeft.setLeft(0);
   } else {
      //  Mozilla does not move the scroll to the left for bidi languages
	   wpsFLY_FlyoutLeft.setLeft(wpsFLY_minFlyout - wpsFLY_FlyoutLeft.getWidth()- 4);
   }

   if (wpsFLY_isNetscape||wpsFLY_isMoz)
      scrolled="window.pageYOffset";
   else if (wpsFLY_isIE)
      scrolled="document.body.scrollTop";

   if (wpsFLY_isNetscape||wpsFLY_isMoz)
      wpsFLY_fromTop=wpsFLY_FlyoutLeft.css.top;
   else if (wpsFLY_isIE)
      wpsFLY_fromTop=wpsFLY_FlyoutLeft.css.pixelTop;

   if (wpsFLY_isIE) {
      window.onscroll=wpsFLY_internalScrollLeft;
      window.onresize=wpsFLY_internalResizeLeft;
   } else
      window.onscroll=wpsFLY_internalScrollLeft();

   if (showHidden)
      wpsFLY_FlyoutLeft.css.visibility="hidden";
   else
      wpsFLY_FlyoutLeft.css.visibility="visible";
      
   //Open or close the flyout depending on the init state.
   if ( wpsFLY_initFlyoutExpanded != null )
   {
       wpsFLY_toggleFlyout( wpsFLY_initFlyoutExpanded, true );
   }   
}


// -----------------------------------------------------------------
// Constructs flyout (default on right)
// -----------------------------------------------------------------
function wpsFLY_makeFlyout(obj)
{
   this.origObject=document.getElementById(obj);
   //get the css for the DIV tag, need it later
   if (wpsFLY_isNetscape)
      this.css=eval('document.'+obj);
   else if (wpsFLY_isMoz)
      this.css=document.getElementById(obj).style;
   else if (wpsFLY_isIE)
      this.css=eval(obj+'.style');

   //initialize the expand state
   wpsFLY_state=1;
   this.go=0;

   //get the width
   if (wpsFLY_isNetscape)
      this.width=this.css.document.width;
   else if (wpsFLY_isMoz)
      this.width=document.getElementById(obj).offsetWidth;
   else if (wpsFLY_isIE)
      this.width=eval(obj+'.offsetWidth');

   this.setWidth=wpsFLY_internalSetWidth;
   this.getWidth=wpsFLY_internalGetWidth;
   
   //set a left method to make it common across browsers
   this.left=wpsFLY_internalGetLeft;
   this.pageWidth=wpsFLY_internalGetPageWidth;
   this.setLeft = wpsFLY_internalSetLeft;

   this.obj = obj + "Object";   
   eval(this.obj + "=this");  
}

// -----------------------------------------------------------------
// Constructs flyout (on left)
// -----------------------------------------------------------------
function wpsFLY_makeFlyoutLeft(obj)        
{
   this.origObject=document.getElementById(obj);
	//get the css for the DIV tag, need it later
    if (wpsFLY_isNetscape) 
		this.css=eval('document.'+obj);
    else if (wpsFLY_isMoz) 
		this.css=document.getElementById(obj).style;
    else if (wpsFLY_isIE) 
		this.css=eval(obj+'.style');

	//initialize the expand state
	wpsFLY_state=1;
	this.go=0;
	
	//get the width
	if (wpsFLY_isNetscape) 
		this.width=this.css.document.width;
    else if (wpsFLY_isMoz) 
		this.width=document.getElementById(obj).offsetWidth;
    else if (wpsFLY_isIE) 
		this.width=eval(obj+'.offsetWidth');

   this.setWidth=wpsFLY_internalSetWidthLeft;
   this.getWidth=wpsFLY_internalGetWidthLeft;

	//set a left method to make it common across browsers
	this.left=wpsFLY_internalGetLeft;
   this.pageWidth=wpsFLY_internalGetPageWidth;
   this.setLeft = wpsFLY_internalSetLeft;

   this.obj = obj + "Object"; 	
   eval(this.obj + "=this");	
}


// -----------------------------------------------------------------
// The internal api to get the page width value that is cross browser
// -----------------------------------------------------------------
function wpsFLY_internalGetPageWidth()
{
   //get the width
   return wpsFLY_browserDimensions.getViewableAreaWidth();
}

function wpsFLY_internalSetLeft( value )
{
    this.css.left=value + "px";
}

// -----------------------------------------------------------------
// The internal api to set the width value that is cross browser
// -----------------------------------------------------------------
function wpsFLY_internalSetWidth(value)
{
   this.css.width = value + "px";
   if (navigator.userAgent.indexOf ("Opera") != -1) {
      var operaIframe=document.getElementById('wpsFLY_flyoutIFrame');
      operaIframe.style.width = (value-wpsFLY_minFlyout) + "px" ;
   }
}

// -----------------------------------------------------------------
// The internal api to set the width value that is cross browser
// -----------------------------------------------------------------
function wpsFLY_internalSetWidthLeft(value)
{
   this.css.width = value + "px";
   if (navigator.userAgent.indexOf ("Opera") != -1) {
      var operaIframe=document.getElementById('wpsFLY_flyoutIFrame');
      operaIframe.style.width = (value-wpsFLY_minFlyout) + "px" ;
   }
}

// -----------------------------------------------------------------
// The internal api to get the width value that is cross browser
// -----------------------------------------------------------------
function wpsFLY_internalGetWidth()
{
   //get the width
   if (wpsFLY_isNetscape)
      return eval(this.css.document.width);
   else if (wpsFLY_isMoz||wpsFLY_isIE)
      return eval(this.origObject.offsetWidth);
}

// -----------------------------------------------------------------
// The internal api to get the width value that is cross browser
// -----------------------------------------------------------------
function wpsFLY_internalGetWidthLeft()
{
   var width;
   if (wpsFLY_isNetscape)
      width = eval(this.css.document.width);
   else if (wpsFLY_isMoz||wpsFLY_isIE)
      width = eval(this.origObject.offsetWidth);
   return width;
}

// -----------------------------------------------------------------
// The internal api to get the left value that is cross browser
// -----------------------------------------------------------------
function wpsFLY_internalGetLeft()
{
   if (wpsFLY_isNetscape||wpsFLY_isMoz)
      leftfunc=parseInt(this.css.left);
   else if (wpsFLY_isIE)
      leftfunc=eval(this.css.pixelLeft);
   return leftfunc;
}

// -----------------------------------------------------------------
// The internal fly out function, called my real function, only 
// wpsFLY_moveOutFlyout should call this function.
// -----------------------------------------------------------------
function wpsFLY_internalMoveOut()
{
	document.getElementById('wpsFLYflyout').className = "portalFlyoutExpanded";

   if (wpsFLY_Flyout.left() - wpsFLY_move > wpsFLY_Flyout.pageWidth()+ wpsFLY_browserDimensions.getScrollFromLeft() - wpsFLY_Flyout.width ) {
      var newwidth= wpsFLY_Flyout.getWidth()+wpsFLY_move;
      wpsFLY_Flyout.setWidth(newwidth);
      wpsFLY_Flyout.setLeft(wpsFLY_Flyout.left() - wpsFLY_move);
      wpsFLY_timeoutID=setTimeout("wpsFLY_internalMoveOut()",wpsFLY_scrollSpeed);
      wpsFLY_Flyout.go=1;
   } else {
      wpsFLY_Flyout.setLeft(wpsFLY_Flyout.pageWidth() + wpsFLY_browserDimensions.getScrollFromLeft() - wpsFLY_Flyout.width);
      wpsFLY_Flyout.setWidth(wpsFLY_Flyout.width);
      wpsFLY_Flyout.go=0;
      wpsFLY_state=0;
   }
}

// -----------------------------------------------------------------
// The internal slide out function, called my real function, only 
// wpsFLY_moveOutFlyoutLeft should call this function. For left sided
// flyout.
// -----------------------------------------------------------------
function wpsFLY_internalMoveOutLeft()
{
	document.getElementById('wpsFLYflyout').className = "portalFlyoutExpanded";

   if (wpsFLY_isIE) {
	   if (wpsFLY_FlyoutLeft.getWidth() + wpsFLY_move < wpsFLY_FlyoutLeft.width) {
         var newwidth= wpsFLY_FlyoutLeft.getWidth()+wpsFLY_move;
         wpsFLY_FlyoutLeft.setWidth(newwidth);
		   wpsFLY_timeoutID=setTimeout("wpsFLY_internalMoveOutLeft()",wpsFLY_scrollSpeed);
		   wpsFLY_FlyoutLeft.go=1;
	   } else {
         wpsFLY_FlyoutLeft.setLeft( wpsFLY_FlyoutLeft.left());
         wpsFLY_FlyoutLeft.setWidth(wpsFLY_FlyoutLeft.width);
		   wpsFLY_FlyoutLeft.go=0;
		   wpsFLY_state=0;
	   }   
   } else {
   //  Mozilla browsers don't scroll left
      if( wpsFLY_FlyoutLeft.left()+wpsFLY_move < wpsFLY_browserDimensions.getScrollFromLeft()) {
		   wpsFLY_FlyoutLeft.go=1;
		   wpsFLY_FlyoutLeft.setLeft(wpsFLY_FlyoutLeft.left()+wpsFLY_move);
		   wpsFLY_timeoutID=setTimeout("wpsFLY_internalMoveOutLeft()",wpsFLY_scrollSpeed);
	   } else {
         wpsFLY_FlyoutLeft.setLeft( wpsFLY_browserDimensions.getScrollFromLeft());
		   wpsFLY_FlyoutLeft.go=0;
		   wpsFLY_state=0;
	   }
   }  
}

// -----------------------------------------------------------------
// The internal fly in function, called my real function, only 
// wpsFLY_moveInFlyout should call this function.
// -----------------------------------------------------------------
function wpsFLY_internalMoveIn()
{
   if ( wpsFLY_Flyout.left() + wpsFLY_move < wpsFLY_Flyout.pageWidth() + wpsFLY_browserDimensions.getScrollFromLeft() - wpsFLY_minFlyout  ) {
      wpsFLY_Flyout.go=1;
      var newwidth= wpsFLY_Flyout.getWidth()-wpsFLY_move;
      wpsFLY_Flyout.setWidth(newwidth);
      wpsFLY_Flyout.setLeft(wpsFLY_Flyout.left()+wpsFLY_move);
      wpsFLY_timeoutID=setTimeout("wpsFLY_internalMoveIn()",wpsFLY_scrollSpeed);
   } else {
      wpsFLY_Flyout.setWidth(wpsFLY_minFlyout);
      wpsFLY_Flyout.setLeft(wpsFLY_Flyout.pageWidth() + wpsFLY_browserDimensions.getScrollFromLeft() - wpsFLY_minFlyout);
      wpsFLY_Flyout.go=0;
      wpsFLY_state=1;
   }  
}

// -----------------------------------------------------------------
// The internal slide in function, called my real function, only 
// wpsFLY_moveInFlyoutLeft should call this function. For left sided
// flyout.
// -----------------------------------------------------------------
function wpsFLY_internalMoveInLeft()
{
   if (wpsFLY_isIE) {
      if (wpsFLY_FlyoutLeft.getWidth() - wpsFLY_move >  wpsFLY_minFlyout) {
         var newwidth= wpsFLY_FlyoutLeft.getWidth() - wpsFLY_move;
         wpsFLY_FlyoutLeft.setWidth(newwidth);
         wpsFLY_timeoutID=setTimeout("wpsFLY_internalMoveInLeft()",wpsFLY_scrollSpeed);
         wpsFLY_FlyoutLeft.go=1;
      } else {
         wpsFLY_FlyoutLeft.setWidth(wpsFLY_minFlyout);
         wpsFLY_FlyoutLeft.setLeft( wpsFLY_FlyoutLeft.left());
         wpsFLY_FlyoutLeft.go=0;
         wpsFLY_state=1;
      }
   } else {
      if(wpsFLY_FlyoutLeft.left()>-wpsFLY_FlyoutLeft.width+wpsFLY_minFlyout) {
		   wpsFLY_FlyoutLeft.go=1;
		   wpsFLY_FlyoutLeft.setLeft(wpsFLY_FlyoutLeft.left()-wpsFLY_move);
		   wpsFLY_timeoutID=setTimeout("wpsFLY_internalMoveInLeft()",wpsFLY_scrollSpeed);
	   } else {
         wpsFLY_FlyoutLeft.setLeft( wpsFLY_minFlyout - wpsFLY_FlyoutLeft.getWidth()- 4 );
		   wpsFLY_FlyoutLeft.go=0;
		   wpsFLY_state=1;
      }
	}
}

// -----------------------------------------------------------------
// The internal scroll function.
// -----------------------------------------------------------------
function wpsFLY_internalScroll() {
   if (!wpsFLY_Flyout.go) {

      //wpsFLY_Flyout.css.top=eval(scrolled)+parseInt(wpsFLY_fromTop);
      if (wpsFLY_state==1) {
         wpsFLY_Flyout.setLeft(wpsFLY_browserDimensions.getScrollFromLeft() + wpsFLY_browserDimensions.getViewableAreaWidth() - wpsFLY_minFlyout);
      } else {
         wpsFLY_Flyout.setLeft(wpsFLY_browserDimensions.getScrollFromLeft() + wpsFLY_browserDimensions.getViewableAreaWidth() - wpsFLY_Flyout.width);
      }
   }
   if (wpsFLY_isNetscape||wpsFLY_isMoz)
      setTimeout('wpsFLY_internalScroll()',20);
}

// -----------------------------------------------------------------
// The internal scroll left function.
// -----------------------------------------------------------------
function wpsFLY_internalScrollLeft() {
   if (!wpsFLY_FlyoutLeft.go) {
      //wpsFLY_FlyoutLeft.css.top=eval(scrolled)+parseInt(wpsFLY_fromTop);

      // scroll horizontally for flyoutin 
      if (wpsFLY_state==1) {
         if (wpsFLY_isIE) {
            if (wpsFLY_leftResize == null) {
               wpsFLY_leftResize = wpsFLY_browserDimensions.getScrollFromLeft();
            }
            wpsFLY_FlyoutLeft.setWidth(wpsFLY_minFlyout);
            wpsFLY_FlyoutLeft.css.overflow = 'hidden';
            wpsFLY_FlyoutLeft.setLeft(wpsFLY_browserDimensions.getScrollFromLeft() - wpsFLY_leftResize);
         } else {
            wpsFLY_FlyoutLeft.setLeft(wpsFLY_minFlyout + wpsFLY_browserDimensions.getScrollFromLeft() - wpsFLY_FlyoutLeft.getWidth() - 4);
         }
      }
   }

   if (wpsFLY_isNetscape||wpsFLY_isMoz)
      setTimeout('wpsFLY_internalScrollLeft()',20);

}

// -----------------------------------------------------------------
// The internal resize left function.
// -----------------------------------------------------------------
function wpsFLY_internalResizeLeft(){
      
   if (wpsFLY_isIE) {
      wpsFLY_leftResize = wpsFLY_browserDimensions.getScrollFromLeft(); - wpsFLY_browserDimensions.getViewableAreaWidth();
   }

}

// -----------------------------------------------------------------
// Expand the flyout. The parameter skipSlide indicates whether or not
// the flyout should simply be rendered without the slide-out effect.
// ----------------------------------------------------------------- 
function wpsFLY_moveOutFlyout( skipSlide )
{
   if (this.wpsFLY_Flyout != null)
   {
      if ( wpsFLY_state && !skipSlide ) {
         clearTimeout(wpsFLY_timeoutID);
         wpsFLY_internalMoveOut(); 
      }
      
      if ( wpsFLY_state && skipSlide )
      {
          wpsFLY_Flyout.setLeft(wpsFLY_Flyout.pageWidth() + document.body.scrollLeft - wpsFLY_Flyout.width);
          wpsFLY_Flyout.setWidth(wpsFLY_Flyout.width);
          wpsFLY_Flyout.go=0;
          wpsFLY_state=0;
          document.getElementById('wpsFLYflyout').className = "portalFlyoutExpanded";
      }
      
   }

   if (this.wpsFLY_FlyoutLeft != null)
   {      
      if ( wpsFLY_state && !skipSlide ) {
         clearTimeout(wpsFLY_timeoutID);
         wpsFLY_internalMoveOutLeft(); 
      }
      
      if ( wpsFLY_state && skipSlide )
      {
      	 if ( wpsFLY_isIE )
      	 {
		     wpsFLY_FlyoutLeft.setLeft( wpsFLY_FlyoutLeft.left());
    	     wpsFLY_FlyoutLeft.setWidth(wpsFLY_FlyoutLeft.width);
			 wpsFLY_FlyoutLeft.go=0;
			 wpsFLY_state=0;	
		 }
		 else
		 {
		 	 wpsFLY_FlyoutLeft.setLeft( document.body.scrollLeft);
   		     wpsFLY_FlyoutLeft.go=0;
		     wpsFLY_state=0;
		 }
		 document.getElementById('wpsFLYflyout').className = "portalFlyoutExpanded";
	  }
   }
}

// -----------------------------------------------------------------
// Called to close the flyout. This is the method that the function
// external to the flyout should call.
// ----------------------------------------------------------------- 
function wpsFLY_moveInFlyout()
{
   if (this.wpsFLY_Flyout != null)
   {
      if (!wpsFLY_state) {
         clearTimeout(wpsFLY_timeoutID);
         wpsFLY_internalMoveIn();
      }
   }

   if (this.wpsFLY_FlyoutLeft != null)
   {
      if (!wpsFLY_state) {
         clearTimeout(wpsFLY_timeoutID);
         wpsFLY_internalMoveInLeft();
      }
   }
   
   document.getElementById('wpsFLYflyout').className = "portalFlyoutCollapsed";
}

// -----------------------------------------------------------------
// Called to toggle the flyout. This is the method that the function
// external to the flyout should call.
// -----------------------------------------------------------------
function wpsFLY_toggleFlyout(index, skipSlide)
{
	if(flyOut[index] != null){
	var checkIndex = index;
	var prevIndex=wpsFLY_getCurrIndex();
	
	if(checkIndex==prevIndex){
        
		if(flyOut[index].active==true){
			flyOut[index].active=false;
            /*
			document.getElementById("toolBarIcon"+prevIndex).src = flyOut[prevIndex].icon;	
			document.getElementById("toolBarIcon"+prevIndex).alt = flyOut[prevIndex].altText;
			document.getElementById("toolBarIcon"+prevIndex).title = flyOut[prevIndex].altText;
			*/
		}
		else{
			flyOut[index].active=true;
            /*
			document.getElementById("toolBarIcon"+index).src = flyOut[index].activeIcon;
			document.getElementById("toolBarIcon"+index).alt = flyOut[index].activeAltText;
			document.getElementById("toolBarIcon"+index).title = flyOut[index].activeAltText;
			*/
		}
        //Closing flyout, clear the state cookie.
        wpsFLY_clearStateCookie();
        wpsFLY_moveInFlyout();
	}else{
		if(prevIndex > -1){
			flyOut[prevIndex].active=false;
            /*
			document.getElementById("toolBarIcon"+prevIndex).src = flyOut[prevIndex].icon;	
			document.getElementById("toolBarIcon"+prevIndex).alt = flyOut[prevIndex].altText;
			document.getElementById("toolBarIcon"+prevIndex).title = flyOut[prevIndex].altText;
			*/
		}
		
		flyOut[index].active=true;
        /*
		document.getElementById("toolBarIcon"+index).src = flyOut[index].activeIcon;
		document.getElementById("toolBarIcon"+index).alt = flyOut[index].activeAltText;
		document.getElementById("toolBarIcon"+index).title = flyOut[index].activeAltText;
		*/
		wpsFLY_setCurrIndex(index);
		document.getElementById("wpsFLY_flyoutIFrame").src = flyOut[index].url;
	}
	
	if(wpsFLY_state){
		
        //Expanding flyout, store the open flyout index in the state cookie.
        wpsFLY_setStateCookie( index );
        wpsFLY_moveOutFlyout( skipSlide );
		}
	}
}

function wpsFLY_getCurrIndex()
{
	return wpsFLY_currIndex;
}

function wpsFLY_setCurrIndex(index)
{
	wpsFLY_currIndex = index;
}

// -----------------------------------------------------------------
// Create a cookie to track the state of the flyout. The value of the 
// cookie is the index of the open flyout. The cookie is marked for 
// deletion when the browser closes and the path is set to ensure the 
// cookie is valid for the entire site.
// -----------------------------------------------------------------
function wpsFLY_setStateCookie( index )
{
    document.cookie='portalOpenFlyout=' + index + '; path=/;';
}

// -----------------------------------------------------------------
// Clear the cookie by changing the value to null. By setting the expiration date in 
// the past, the cookie is marked for deletion when the browser closes.
// -----------------------------------------------------------------
function wpsFLY_clearStateCookie()
{
    document.cookie='portalOpenFlyout=null; expires=Wed, 1 Jan 2003 11:11:11 UTC; path=/;';
}

// -----------------------------------------------------------------
// Check which side of the page the flyout should show on
// -----------------------------------------------------------------
function wpsFLY_onloadShow( isRTL )
{
  if (this.wpsFLY_minFlyout != null) {
    var bodyObj = document.getElementById("FLYParent");
    if (bodyObj != null) {
      var showHidden = false;
      if (isRTL) { 
           bodyObj.onload = wpsFLY_initFlyoutLeft(showHidden);
       } else { 
      	   bodyObj.onload = wpsFLY_initFlyout(showHidden);
       } 	 
    }
  }
 }
// -----------------------------------------------------------------
// Write markup out to document for all flyout items
// -----------------------------------------------------------------
function wpsFLY_markupLoop( flyOut)
{	
 	for(arrayIndex = 0; arrayIndex < flyOut.length; arrayIndex++){
		if(flyOut[arrayIndex].url != "" && flyOut[arrayIndex].url != null){
			document.write('<li><a id="globalActionLink'+arrayIndex+'" href="javascript:void(0);" onclick="wpsFLY_toggleFlyout('+arrayIndex+'); return false;" >');
			document.write(flyOut[arrayIndex].altText);
            //document.write('<img src="'+flyOut[arrayIndex].icon+'" id="toolBarIcon'+arrayIndex+'" title="'+flyOut[arrayIndex].altText+'" border="0" alt="'+flyOut[arrayIndex].altText+'" onmouseover="this.src=flyOut['+arrayIndex+'].hoverIcon;" onmouseout="if (flyOut['+arrayIndex+'].active) {this.src=flyOut['+arrayIndex+'].activeIcon;} else this.src=flyOut['+arrayIndex+'].icon;" />');            
			document.write('</a></li>');
		}
		
		if ( javascriptEventController )
		{
			javascriptEventController.register( "globalActionLink" + arrayIndex );
			//javascriptEventController.register( "toolBarIcon" + arrayIndex );
		}
	}
}

// -----------------------------------------------------------------
// If we have an empty expanded flyout (via the back button), load 
// the previously open flyout.
// -----------------------------------------------------------------
function wpsFLY_checkForEmptyExpandedFlyout()
{
	var index = wpsFLY_getInitialFlyoutState();
	
	if ( index != null && flyOut[index] != null)
	{
		document.getElementById("wpsFLY_flyoutIFrame").src = flyOut[index].url;
	}
}

// -----------------------------------------------------------------
// Determine if the flyout should initially open and which flyout 
// should be loaded. 
// -----------------------------------------------------------------
function wpsFLY_getInitialFlyoutState()
{
	// Determine if the flyout's initial state is open or closed.
	if ( document.cookie.indexOf( "portalOpenFlyout=" ) >= 0 )
	{
	    var cookies = document.cookie.split(";");
	
	    var c = 0;
	    while ( c < cookies.length && ( cookies[c].indexOf( "portalOpenFlyout=" ) == -1 ) )
	    {
	        c=c+1;
	    }
	
	    initCookieValue = cookies[c].substring( 18, cookies[c].length );
	    
	    if ( initCookieValue != "null" )
	    {
	        return initCookieValue;
	    }
	    else
	    {
	        return null;
	    }
	}
	else
	{
		return null;
	}
	
}
var wpsInlineShelf_initShelfExpanded = wpsInlineShelf_getInitialShelfState();

// Current state of the flyout for the life of the request (true=expanded, false=collapsed)
var wpsInlineShelf_stateExpanded = false;

var wpsInlineShelf_currIndex = -1;

var wpsInlineShelf_loadingMsg = null;

function wpsInlineShelf_markupLoop( shelves )
{	
 	for(arrayIndex = 0; arrayIndex < shelves.length; arrayIndex++){
		if(shelves[arrayIndex].url != "" && shelves[arrayIndex].url != null){
			document.write('<li><a id="globalActionLinkInlineShelf'+arrayIndex+'" href="javascript:void(0);" onclick="wpsInlineShelf_toggleShelf('+arrayIndex+'); return false;" >');
			document.write(shelves[arrayIndex].altText+" ");
            document.write('<img src="'+shelves[arrayIndex].icon+'" id="toolBarIcon'+arrayIndex+'" title="'+shelves[arrayIndex].altText+'" border="0" alt="'+shelves[arrayIndex].altText+'" onmouseover="this.src=wptheme_InlineShelves['+arrayIndex+'].hoverIcon;" onmouseout="if (wptheme_InlineShelves['+arrayIndex+'].active) {this.src=wptheme_InlineShelves['+arrayIndex+'].activeIcon;} else this.src=wptheme_InlineShelves['+arrayIndex+'].icon;" />');            
			document.write('</a></li>');
		}
		
		if ( javascriptEventController )
		{
			javascriptEventController.register( "globalActionLinkInlineShelf" + arrayIndex );
		}
	}
}

// -----------------------------------------------------------------
// Called to toggle the shelf. This is the method that the function
// external to the shelf should call.
// -----------------------------------------------------------------
function wpsInlineShelf_toggleShelf(index, skipZoom)
{
	if(wptheme_InlineShelves[index] != null) {
    	var checkIndex = index;
    	var prevIndex=wpsInlineShelf_getCurrIndex();
        var newIframeUrl = null;

    	if(checkIndex==prevIndex){
            
    		if(wptheme_InlineShelves[index].active==true){
    			wptheme_InlineShelves[index].active=false;
                /*
    			document.getElementById("globalActionLinkInlineShelf"+prevIndex).src = wptheme_InlineShelves[prevIndex].icon;	
    			document.getElementById("globalActionLinkInlineShelf"+prevIndex).alt = wptheme_InlineShelves[prevIndex].altText;
    			document.getElementById("globalActionLinkInlineShelf"+prevIndex).title = wptheme_InlineShelves[prevIndex].altText;
    			*/
                wpsInlineShelf_stateExpanded = false;
    		}else{
    			wptheme_InlineShelves[index].active=true;
                /*
    			document.getElementById("globalActionLinkInlineShelf"+index).src = wptheme_InlineShelves[index].activeIcon;
    			document.getElementById("globalActionLinkInlineShelf"+index).alt = wptheme_InlineShelves[index].activeAltText;
    			document.getElementById("globalActionLinkInlineShelf"+index).title = wptheme_InlineShelves[index].activeAltText;
    			*/
                wpsInlineShelf_stateExpanded = true;
    		}
    	}else{
    		if(prevIndex > -1){
    			wptheme_InlineShelves[prevIndex].active=false;
                /*
    			document.getElementById("globalActionLinkInlineShelf"+prevIndex).src = wptheme_InlineShelves[prevIndex].icon;	
    			document.getElementById("globalActionLinkInlineShelf"+prevIndex).alt = wptheme_InlineShelves[prevIndex].altText;
    			document.getElementById("globalActionLinkInlineShelf"+prevIndex).title = wptheme_InlineShelves[prevIndex].altText;
    			*/
    		}
    		
    		wptheme_InlineShelves[index].active=true;
            /*
    		document.getElementById("globalActionLinkInlineShelf"+index).src = wptheme_InlineShelves[index].activeIcon;
    		document.getElementById("globalActionLinkInlineShelf"+index).alt = wptheme_InlineShelves[index].activeAltText;
    		document.getElementById("globalActionLinkInlineShelf"+index).title = wptheme_InlineShelves[index].activeAltText;
    		*/
    		wpsInlineShelf_setCurrIndex(index);
            wpsInlineShelf_stateExpanded = true;

            newIframeUrl = wptheme_InlineShelves[index].url;
//    		document.getElementById("wpsInlineShelf_shelfIFrame").src = wptheme_InlineShelves[index].url;
    	}
    	
    	if(wpsInlineShelf_stateExpanded){
            //Expanding flyout, store the open shelf index in the state cookie.
            wpsInlineShelf_setStateCookie( index );
            wpsInlineShelf_expandShelf( skipZoom, newIframeUrl );
		} else {
            //Closing shelf, clear the state cookie.
            wpsInlineShelf_clearStateCookie();
            wpsInlineShelf_collapseShelf();
        }
	}
}


function wpsInlineShelf_getCurrIndex()
{
	return wpsInlineShelf_currIndex;
}

function wpsInlineShelf_setCurrIndex(index)
{
	wpsInlineShelf_currIndex = index;
}

// -----------------------------------------------------------------
// Create a cookie to track the state of the shelf. The value of the 
// cookie is the index of the open shelf. The cookie is marked for 
// deletion when the browser closes and the path is set to ensure the 
// cookie is valid for the entire site.
// -----------------------------------------------------------------
function wpsInlineShelf_setStateCookie( index )
{
    document.cookie='portalOpenInlineShelf=' + index + '; path=/;';
}

// -----------------------------------------------------------------
// Clear the cookie by changing the value to null. By setting the expiration date in 
// the past, the cookie is marked for deletion when the browser closes.
// -----------------------------------------------------------------
function wpsInlineShelf_clearStateCookie()
{
    document.cookie='portalOpenInlineShelf=null; expires=Wed, 1 Jan 2003 11:11:11 UTC; path=/;';
}

// -----------------------------------------------------------------
// Determine if the shelf should initially open and which shelf 
// should be loaded. 
// -----------------------------------------------------------------
function wpsInlineShelf_getInitialShelfState()
{
	// Determine if the shelf's initial state is expanded or collapsed.
	if ( document.cookie.indexOf( "portalOpenInlineShelf=" ) >= 0 )
	{
	    var cookies = document.cookie.split(";");
	
	    var c = 0;
	    while ( c < cookies.length && ( cookies[c].indexOf( "portalOpenInlineShelf=" ) == -1 ) )
	    {
	        c=c+1;
	    }
	
	    initCookieValue = cookies[c].substring( ("portalOpenInlineShelf=".length)+1, cookies[c].length );
	    
	    if ( initCookieValue != "null" )
	    {
	        return initCookieValue;
	    }
	    else
	    {
	        return null;
	    }
	}
	else
	{
		return null;
	}
	
}


// -----------------------------------------------------------------
// Expand the shelf. The parameter skipZoom indicates whether or not
// the shelf should simply be rendered without the zoom-out effect.
// NOTE: The zoom-out effect is not implemented yet.
// ----------------------------------------------------------------- 
function wpsInlineShelf_expandShelf( skipZoom, newIframeUrl )
{
    var shelf = document.getElementById("wpsInlineShelf");
    
    wpsInlineShelf_stateExpanded = false;

    // attach event listeners so when the URL loads or reloads, the iframe will be shown and resized.
    wpsInlineShelf_AttachIframeEventListeners("wpsInlineShelf_shelfIFrame");

    // show the shelf... but not the iframe yet...
    shelf.style.display = "block";

    // We change the URL AFTER the event listeners are hooked up.
    // If we are not changing the URL, we need to manually resize the iframe.
    if (null != newIframeUrl) {
        // when loading a new URL, display the spinning loading graphic
        wpsInlineShelf_loadingMsg.show(document.getElementById("wpsInlineShelf"));
        document.getElementById("wpsInlineShelf_shelfIFrame").src = newIframeUrl;
    } else {
        wpsInlineShelf_resizeIframe("wpsInlineShelf_shelfIFrame");
    }

}


// -----------------------------------------------------------------
// Collapse the shelf. The parameter skipZoom indicates whether or not
// the shelf should simply be rendered without the zoom-in effect.
// NOTE: The zoom-in effect is not implemented yet yet.
// ----------------------------------------------------------------- 
function wpsInlineShelf_collapseShelf( skipZoom )
{
    var shelf = document.getElementById("wpsInlineShelf");
    var iframe = document.getElementById("wpsInlineShelf_shelfIFrame");

    shelf.style.display = "none";
    iframe.style.display = "none";
    wpsInlineShelf_loadingMsg.hide();
    wpsInlineShelf_stateExpanded = true;
}

// -----------------------------------------------------------------
// Check which side of the page the shelf should show on
// -----------------------------------------------------------------
function wpsInlineShelf_onloadShow( isRTL )
{
    if ( wpsInlineShelf_initShelfExpanded != null )
    {
        wpsInlineShelf_toggleShelf( wpsInlineShelf_initShelfExpanded, true );
    }   
}


var wpsInlineShelf_getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
var wpsInlineShelf_FFextraHeight=parseFloat(wpsInlineShelf_getFFVersion)>=0.1? 16 : 0 //extra height in px to add to iframe in FireFox 1.0+ browsers

function wpsInlineShelf_resizeIframe(iframeID){
    var iframe=document.getElementById(iframeID)

    iframe.style.display = "block";
    wpsInlineShelf_loadingMsg.hide();

    if (iframe && !window.opera) {

/*
		// put the background color style onto the body of the document in the iframe
		if (iframe.contentDocument) {
			var iframeDocBody = iframe.contentDocument.body;
			if (iframeDocBody.className.indexOf("wpsInlineShelfIframeDocBody",0) == -1) {
				iframeDocBody.className = iframeDocBody.className + " wpsInlineShelfIframeDocBody";
			}
		}
*/
        if (iframe.contentDocument && iframe.contentDocument.body.offsetHeight) //ns6 syntax
            iframe.height = iframe.contentDocument.body.offsetHeight+wpsInlineShelf_FFextraHeight;
        else if (iframe.Document && iframe.Document.body.scrollHeight) //ie5+ syntax
            iframe.height = iframe.Document.body.scrollHeight;
    }
}

function wpsInlineShelf_AttachIframeEventListeners(iframeID) {
    var iframe=document.getElementById(iframeID)
    if (iframe && !window.opera) {

        if (iframe.addEventListener){
            iframe.addEventListener("load", wpsInlineShelf_IframeOnloadEventListener, false)
        } else if (iframe.attachEvent){
            iframe.detachEvent("onload", wpsInlineShelf_IframeOnloadEventListener) // Bug fix line
            iframe.attachEvent("onload", wpsInlineShelf_IframeOnloadEventListener)
        }
    }
}

function wpsInlineShelf_IframeOnloadEventListener(loadevt) {
    var crossevt=(window.event)? event : loadevt
    var iframeroot=(crossevt.currentTarget)? crossevt.currentTarget : crossevt.srcElement
    if (iframeroot) {
        wpsInlineShelf_resizeIframe(iframeroot.id);
    }
}

// -----------------------------------------------------------------
// If we have an empty expanded shelf (via the back button), load 
// the previously open shelf.
// -----------------------------------------------------------------
function wpsInlineShelf_checkForEmptyExpandedShelf() {
	var index = wpsInlineShelf_getInitialShelfState();
    
	if ( index != null && wptheme_InlineShelves[index] != null)
	{
		document.getElementById("wpsInlineShelf_shelfIFrame").src = wptheme_InlineShelves[index].url;
	}
}

wptheme_QuickLinksShelf = {
	_cookieUtils: wptheme_CookieUtils,
	cookieName: null,
	expand: function () {
		// summary: Expand the quick links shelf.
		document.getElementById("wptheme-expandedQuickLinksShelf").style.display='block';
        document.getElementById("wptheme-collapsedQuickLinksShelf").style.display='none';
        if ( this.cookieName != null ) {
        	this._cookieUtils.deleteCookie( this.cookieName );
        }	
        return false;
	},
	collapse: function () {
		// summary: Collapse the quick links shelf.
		document.getElementById("wptheme-expandedQuickLinksShelf").style.display='none';
        document.getElementById("wptheme-collapsedQuickLinksShelf").style.display='block';
        if ( this.cookieName != null ) {
        	var expires = new Date();
        	expires.setDate( expires.getDate() + 5 );
        	this._cookieUtils.setCookie( this.cookieName, "small", expires );
        }
        return false;
	}
}

var wpsInlineShelf_LoadingImage = function ( /*String*/cssClassName, /*String*/imageURL, /*String*/imageText ) {
    // summary: creates loading image for inline shelf
    // cssClassName: the class name to apply to the overlaid div
    // imageURL: the url to the image to display in the center of the overlaid div
    // imageText: the text to display next to the image    

    var elem = document.createElement( "DIV" );
    elem.className = cssClassName;
    elem.id = cssClassName;

    if ( imageURL && imageURL != "" && imageText ) {
        elem.innerHTML = "<img src='"+ imageURL + "' border=\"0\" alt=\"\" />&nbsp;" + imageText;
    }   
    
    var appended = false;
    
    this.show = function ( refNode ) { 
        if ( !appended ) {
            refNode.appendChild( elem );
            appended= true;
        }
        
        elem.style.display = 'block';
    }

    this.hide = function () {
        elem.style.display = 'none';
    }
}

/*        
        
        //Should script hide iframe from browsers that don't support this script (non IE5+/NS6+ browsers. Recommended):
        var iframehide="yes"

        var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
        var FFextraHeight=parseFloat(getFFVersion)>=0.1? 16 : 0 //extra height in px to add to iframe in FireFox 1.0+ browsers

        function resizeCaller() {
                if (document.getElementById)
                        resizeIframe("myiframe")

                //reveal iframe for lower end browsers? (see var above):
                if ((document.all || document.getElementById) && iframehide=="no"){
                        var tempobj=document.all? document.all["myiframe"] : document.getElementById("myiframe")
                        tempobj.style.display="block"
                }
        }
        function resizeIframe(frameid){
                var currentfr=document.getElementById(frameid)
                if (currentfr && !window.opera) {
                        currentfr.style.display="block"
                        if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight) //ns6 syntax
                                currentfr.height = currentfr.contentDocument.body.offsetHeight+FFextraHeight;
                        else if (currentfr.Document && currentfr.Document.body.scrollHeight) //ie5+ syntax
                                currentfr.height = currentfr.Document.body.scrollHeight;

                        if (currentfr.addEventListener){
                                currentfr.addEventListener("load", readjustIframe, false)
                        }
                        else if (currentfr.attachEvent){
                currentfr.detachEvent("onload", readjustIframe) // Bug fix line
                currentfr.attachEvent("onload", readjustIframe)
            }
                }
        }

        function readjustIframe(loadevt) {
                var crossevt=(window.event)? event : loadevt
                var iframeroot=(crossevt.currentTarget)? crossevt.currentTarget : crossevt.srcElement
                if (iframeroot)
                resizeIframe(iframeroot.id);
        }

        function wptheme_ExpandToolsShelf() {
		//loadToolsIframe('myiframe', '${inlineTCUrl}');
                document.getElementById("wptheme-expandedToolsShelf").style.display='block';
	        document.getElementById("wptheme-collapsedToolsShelf").style.display='none';
		//document.getElementById("wptheme-expandedToolsShelfLink").style.display='block';
		//document.getElementById("wptheme-collapsedToolsShelfLink").style.display='none';
		document.getElementById("toolsShelfCollapseLink").style.display='block';
		document.getElementById("toolsShelfExpandLink").style.display='none';
		loadToolsIframe('myiframe', '${inlineTCUrl}');
                //if (document.getElementById)
                //      resizeIframe("myiframe");
                resizeCaller();
                wptheme_createCookie("<%=toolsShelfCookie%>",'small',7);
        return false;
    }

        function wptheme_CollapseToolsShelf() {
                document.getElementById("wptheme-expandedToolsShelf").style.display='none';
        	document.getElementById("wptheme-collapsedToolsShelf").style.display='block';
		//document.getElementById("wptheme-expandedToolsShelfLink").style.display='none';
                //document.getElementById("wptheme-collapsedToolsShelfLink").style.display='block';
		document.getElementById("toolsShelfCollapseLink").style.display='none';
                document.getElementById("toolsShelfExpandLink").style.display='block';
                wptheme_eraseCookie("<%=toolsShelfCookie%>");
        return false;
    }
	function loadToolsIframe(iframeName, toolsUrl){
		alert('loading tools iframe');
		if (document.getElementById) {
			document.getElementById(iframeName).src = toolsUrl;
		}
		return false;
    }
    
*/    
var wptheme_InlinePalettes = {
    // summary: Manages the inline palette(s). Tracks the iframe used to display the palettes, as well as the persistent state.
    // description: Palettes managed by this object must be added using the addPalette method. The addPalette method expects a
    //      PaletteContext object which has the following structure:
    //      {
    //          url: the url to set the iframe to (for CSA, only used as the initial url)
    //          page: the unique id of the page the url will be pointing to
    //          portlet: the unique id of the portlet control the url will be pointing to
    //          newWindow: indicates whether or not the url should be rendered using the Plain theme template
    //          portletWindowState: the window state the portlet should be in
    //          selectionDependent: indicates whether or not the url changes based on the current page selection
    //      }
    //      This PaletteContext object is required to support client-side aggregation. Since, in client-side aggregation,
    //      the page does not always reload in between page changes, the palette may need to be refreshed as the selection
    //      changes in client-side aggregation. This context object gives the client-side aggregation engine all the info
    //      it needs to create the appropriate url for the palette, as needed.
    // paletteStatus: indicates whether the palette is open or closed (0 = closed, 1 = open)
    // iframeID: the ID/NAME of the iframe to use
    // loadingDecorator: the decoration to display while the iframe is loading
    // currentIndex: the index (into the paletteContextArray) of the currently displaying palette
    // cookieName: the cookie used to store the state of the palette
    // paletteContextArray: the array of PaletteContext objects
    // urlFactory: only used in client-side aggregation -- set during the CSA theme's bootstrap, this function takes the PaletteContext
    //      object described above as the only parameter and returns the url to use to display the palette
    
    // INITIALIZATION
    className: "wptheme_InlinePalettes",

    //HTML element IDs
    iframeID: "wpsFLY_flyoutIFrame",    
    
    //Persistent state of the palette
    paletteStatus: 0,  // 0 = closed, 1 = open
    currentIndex: -1,   // the index of the paletteContextArray which is currently displaying
    cookieName: "portalOpenFlyout", 
    
    //Decoration to display while the palette is loading
    loadingDecorator: null, //needs to provide 2 functions: show and hide. show will receive a single parameter -- the node which should be covered with the decoration
    
    //Instance variables
    urlFactory: null,   //expected to be set in the bootstrap of the CSA theme. takes the context as a single parameter and returns the url as the output.
    paletteContextArray: [],    // Array of palettes which can be displayed
    
    //Debug
    debug: wptheme_DebugUtils,
    
    init: function ( /*Document?*/doc) {
        // summary: Initializes the inline palettes. Usually executed on page load.
        // description: Checks to see if the persisted state indicates the palette should be open or closed. If open, the proper location
        //      should be loaded into the iframe and displayed.
        // doc: OPTIONAL -- specifies the document to use when initializing (for use when called from within an iframe, for example).
        if ( this.debug.enabled ) { this.debug.log( this.className, "init( " + [ doc ] + ")" ); }
        
        if ( !doc ) { doc = document; }
        
        //Retrieve the persisted value. This will be the index into the PaletteContextArray.
        var value = this.getPersistedValue();
        if ( this.debug.enabled ) { this.debug.log( this.className, "retrieved value: " + value ); }
        if ( value != null && this.paletteContextArray[ value ] ) {
            this.show( value, true );
        } else {
            this.hide();
        }
        
        if ( this.debug.enabled ) { this.debug.log( this.className, "return init" ); }
    },
    
    // DISPLAY CONTROL 
    
    showCurrent: function () {
        // summary: Displays the current index or auto selects an index if no current index is selected.
        var indexToShow = 0;
        if ( this.currentIndex > -1 ) {
            indexToShow = this.currentIndex;
        }
        
        this.show( indexToShow );
    },
    
    show: function (/*int*/index, /*boolean?*/skipAnimation) {
        // summary: Displays the specified url in the palette.
        // url: the url for the iframe.
        // skipAnimation: OPTIONAL -- skips the loading decorator show/hide steps (used for the case where the palette is open on an initial page load
        if ( this.debug.enabled ) { this.debug.log( this.className, "show( " + [ index, skipAnimation ] + ")" ); }
        
        var iframe = this._getIframeElement();
        if ( !iframe ) { return false; }
        
        var url = this.getURL( index );
        
        iframe.parentNode.style.display = "block";
        //If we have to load the iframe, call postShow onload. Otherwise, call it immediately since the
        //iframe is already loaded.
        if ( window.frames[this.iframeID].location.href != url ) {
            if ( !skipAnimation && this.loadingDecorator != null && this.loadingDecorator.show ) {
                this.loadingDecorator.show( iframe.parentNode.parentNode );
            }
            iframe.src = url;
        }
        else {
            //The location hasn't changed so go ahead and call the post show behavior. Normally, the post show 
            //behavior executes once the iframe is loaded. 
            this._doPostShow();
        }
        
        this.persist( index );
        this.paletteStatus = 1;
        this.currentIndex = index;
    },
    hide: function ( doc ) {
        // summary: Hides the active palette.
        if ( this.debug.enabled ) { this.debug.log( this.className, "hide( " + [ doc ] + ")" ); }
        var iframe = this._getIframeElement( doc );
        if ( !iframe ) { return false; }
        
        iframe.parentNode.style.display = "none";
        this.paletteStatus = 0;
        this.currentIndex = -1;
        
        //Execute the post hide behavior.
        this._doPostHide();
    },
    _doPostShow: function () {
        // summary: Called after the iframe is loaded and ready to display.
        // description: Performs any sizing adjustments necessary (possibly IE) and hides the loading decoration.
        if ( this.debug.enabled ) { this.debug.log( this.className, "_doPostShow()" ); }
        var iframe = this._getIframeElement();
        if ( iframe.parentNode.style.display == "none" ) { return false; }
        iframe.style.visibility = "visible";
        
        if ( typeof ( dojo ) != "undefined" ) {
            var size = dojo.contentBox( iframe );
            if ( size.h < 300) {
                //IE doesn't correctly size the iframe when height is set to 100%. So if the height
                //is still 0 (IE 6) or small (IE7)after setting the display and visibility, set it manually to the height
                //of the TD element.
                var size = dojo.contentBox( iframe.parentNode.parentNode );
                iframe.style.height = size.h + "px";
            }
        }   
        
        if ( this.loadingDecorator != null && this.loadingDecorator.hide ) {
            this.loadingDecorator.hide();
        }
    },
    _doPostHide: function () {
        // summary: Execute any actions that need to occur after the palette is hidden from view.
        if ( this.debug.enabled ) { this.debug.log( this.className, "_doPostHide()" ); }
        var iframe = this._getIframeElement();
        iframe.style.visibility = "hidden";
    },
    
    // PERSISTENT STATE CONTROL
    
    persist: function ( /*String*/value ) {
        // summary: Persist the given value in a cookie.
        if ( this.debug.enabled ) { this.debug.log( this.className, "persist(" + [ value ] + ")" ); }
        wptheme_CookieUtils.setCookie( this.cookieName, value );
    },
    getPersistedValue: function () {
        // summary: Retrieve the persisted state for the inline palettes, if one exists.
        // description: Looks for the "portalOpenFlyout" cookie and parses out it's value.
        // returns: the persisted value for the portalOpenFlyout cookie or NULL if no value exists.
        if ( this.debug.enabled ) { this.debug.log( this.className, "getPersistedValue()" ); }
        return wptheme_CookieUtils.getCookie( this.cookieName );
    },
    unpersist: function () {
        // summary: Clears out the persisted value.
        // description: Sets the cookie's value to NULL and sets it to expire in the past.
        // returns: the index of the persisted value
        if ( this.debug.enabled ) { this.debug.log( this.className, "unpersist()" ); }
        var value = this.getPersistedValue();
        wptheme_CookieUtils.deleteCookie( this.cookieName );
        return value;
    },
    
    // UTILITY
    
    _getIframeElement: function ( /*Document?*/doc ) {
        // summary: Retrieves the iframe HTML element from the HTML document specified. If no HTML document is specified,
        //      the global HTML document is used.
        // doc: OPTIONAL -- specify the HTML document in which to look up the IFRAME object.
        // returns: the iframe HTML element
        if ( this.debug.enabled ) { this.debug.log( this.className,  "_getIframeElement( " + [ doc ] + ")" ); }
        if ( !doc ) { doc = document; }
        return doc.getElementById( this.iframeID );     // the IFRAME HTML element
    },
    addPalette: function ( /*PaletteContext*/context ) {
        if ( this.debug.enabled ){ this.debug.log( this.className, "addPalette( " + [ context ] + ")" ); }
        this.paletteContextArray.push( context );
    },
    
    getURL: function ( /*int*/value ) {
        if ( this.debug.enabled ) { this.debug.log( this.className, "getURL( " + [ value ] + ")" ); }
        var url = this.paletteContextArray[ value ].url;
        if ( document.isCSA && this.urlFactory != null ) {
            url = this.urlFactory( this.paletteContextArray[ value ] );
        }
        return url;
    }
    
    
}

var wptheme_DarkTransparentLoadingDecorator = function ( /*String*/cssClassName, /*String*/imageURL, /*String*/imageText ) {
    // summary: Displays a partially opaque overlay with a centered image and text to partially obscure and prevent
    //      interaction with a loading portion of the HTML page.
    // cssClassName: the class name to apply to the overlaid div
    // imageURL: the url to the image to display in the center of the overlaid div
    // imageText: the text to display next to the image
    this.className = "wptheme_DarkTransparentLoadingDecorator";
    
    var elem = document.createElement( "DIV" );
    elem.className = cssClassName;
    elem.style.position = "absolute";
    
    if ( imageURL && imageURL != "" && imageText ) {
        var text = document.createElement( "DIV" );
        text.style.position = "relative";
        text.style.top = "50%";
        text.style.left = "40%";
        text.innerHTML = "<img src='"+ imageURL + "' />&nbsp;" + imageText;
        elem.appendChild( text );
    }   
    
    var appended = false;
    
    this.show = function ( refNode ) { 
        if ( !appended ) {
            document.body.appendChild( elem );
            appended= true;
        }
        
        elem.style.display = 'block';
        elem.style.top = (dojo.coords( refNode, true ).y + 1) + "px";
        elem.style.left = (dojo.coords( refNode, true ).x + 1)  + "px";
      
        var size = dojo.contentBox( refNode );
        elem.style.height = (size.h - 2) + "px";
        elem.style.width = (size.w - 2) + "px";
    }

    this.hide = function () {
        elem.style.display = 'none';
    }
}

var wptheme_InlinePalettesContainer = { 
    // summary: Manages the inline palettes container.
    // description: Manages the container which holds the palettes. Made up of two parts: the first is the container.
    //      The container holds the links to select a palette, as well as, the actual iframe which displays
    //      the palette once a palette is selected. The second is the toggle element. The toggle element is
    //      the html element which actually opens and closes the container element.
    // containerStatus: indicates whether the container is open or closed (0 = closed, 1 = open)
    // openCssClassName: indicates the CSS class name which should be applied when the container is open
    // closedCssClassName: indicates the CSS class name which should be applied when the container is closed
    // containerElementID: the id of the html element which actually holds the palettes
    // toggleElementID: the id of the html element which is the toggle element
    // lastIndex: the index of the last palette that was opened
    // cookieName: the name of the cookie used to store the container's last state
    // cookieUtils: the utility object used to set and unset cookies - default is wptheme_CookieUtils
    // htmlUtils: the utility object used for adding/removing css classnames - default is wptheme_HTMLElementUtils
    // paletteManager: the object which contains the information about the palettes to display inside the container
    //      default is wptheme_InlinePalettes
    className: "wptheme_InlinePalettesContainer",
    
    containerStatus: 0,     //0 = closed, 1 = open
    openCssClassName: "wptheme-flyoutExpanded",
    closedCssClassName: "wptheme-flyoutCollapsed",
    toggleElementID: "wptheme-flyoutToggle",
    containerElementID: "wptheme-flyout",
    lastIndex: null,
    cookieName: "portalFlyoutIsOpen",
    cookieUtils: wptheme_CookieUtils,
    htmlUtils: wptheme_HTMLElementUtils,
    paletteManager: wptheme_InlinePalettes,
    
    //Main functions.
    init: function ( /*HTMLDocument?*/doc ) {
        // summary: Initializes and sets the appropriate visibilites for the container and the
        //      palettes inside.
        // doc: OPTIONAL -- used when called from an iframe
        var cookie = this.cookieUtils.getCookie( this.cookieName );
        if ( cookie && cookie != "null" ) {
            this.containerStatus = parseInt( cookie );
        }
        
        if ( this.paletteManager.paletteContextArray.length == 0 ) {
            this.disable();
        }
        else {
            if ( this.containerStatus ) {
                this.paletteManager.init();
                this._show();
            }
            else {
                this._hide();
            }
            this._makeVisible();
        }
    },
    toggle: function () {
        // summary: Toggles the container between open and closed state.
        
        if ( this.containerStatus ) {
            this.containerStatus = 0;
            this._hide();           
        }   
        else {
            this.containerStatus = 1;
            this._show();
        }
    },
    persist: function () {
        // summary: Sets the cookie with the current container status.
        this.cookieUtils.setCookie( this.cookieName, this.containerStatus );
        if ( this.paletteManager.currentIndex == this.lastIndex ) {
            this.paletteManager.persist( this.lastIndex );
        }
    },
    unpersist: function () {
        // summary: Removes the cookie which holds the state of the flyout.
        this.cookieUtils.deleteCookie( this.cookieName );
        this.lastIndex = this.paletteManager.unpersist();
    },
    _makeVisible: function () {
        // summary: Shows the toggle element AND the container element.
        //Retrieve the applicable DOM elements.
        var toggleElement = document.getElementById( this.toggleElementID );
        toggleElement.style.visibility = 'visible';
    },
    disable: function () {
        // summary: Hides the toggle element AND the container element.
        //Retrieve the applicable DOM elements.
        var toggleElement = document.getElementById( this.toggleElementID );
        var containerElement = document.getElementById( this.containerElementID );
        

        if (toggleElement != null) {
            toggleElement.style.display = 'none';
        }
        if (containerElement != null) {
            containerElement.style.display = 'none';
        }
    },
    _hide: function () {
        //Retrieve the applicable DOM elements.
        var toggleElement = document.getElementById( this.toggleElementID );
        var containerElement = document.getElementById( this.containerElementID );
        
        if ( !toggleElement || !containerElement ) {
            throw Error( "Unable to retrieve the necessary markup elements! The palettes may not function correctly.");
        }
        
        //Closing the container.
        this.htmlUtils.removeClassName( toggleElement, this.openCssClassName );
        this.htmlUtils.addClassName( toggleElement, this.closedCssClassName );
        containerElement.style.display = 'none';
        
        //Persistence cleanup.
        this.unpersist();       
    },
    _show: function () {
        //Retrieve the applicable DOM elements.
        var toggleElement = document.getElementById( this.toggleElementID );
        var containerElement = document.getElementById( this.containerElementID );
        
        if ( !toggleElement || !containerElement ) {
            throw Error( "Unable to retrieve the necessary markup elements! The palettes may not function correctly.");
        }
        
        //Opening the container.
        this.htmlUtils.removeClassName( toggleElement, this.closedCssClassName );
        this.htmlUtils.addClassName( toggleElement, this.openCssClassName );
        containerElement.style.display = 'block';
        
        this.paletteManager.showCurrent();
        
        //Persistence cleanup.
        this.persist();
    }
}
//If we aren't inside an iframe, go ahead and register the init function so it's called on page load. This is where we check for 
//a palette's persistent state and handle other startup tasks.
if ( top.location == self.location ) {
    wptheme_InlinePalettesContainer.htmlUtils.addOnload( function () { wptheme_InlinePalettesContainer.init(); } );
};
//Shows an IFRAME inside a lightbox which blocks access to the page.
var wptheme_IFrameLightbox = function ( /*String*/disabledBackgroundClassname, /*String*/borderBoxClassname, /*String*/closeLinkClassname, /*String*/closeString ) {
	// summary: Creates a "lightbox" effect where a partially opaque div is set to cover the entire viewable area of the browser and the content
	//		is displayed in an iframe in approximately the middle of the viewable area.
	// description: Creates a div the size of the viewable area of the browser which is styled using the given "disabledBackgroundClassname". The iframe is
	//		displayed inside another div which is approximately centered and styled according to the given "borderBoxClassname". The content of the iframe is
	//		set using the "setURL" function. The "lightbox" is closed via a text anchor link which is positioned above the top right edge of the border box. The
	//		text displayed is controlled using the "closeString" parameter and the link is styled according to the "closeLinkClassname".
	// disabledBackgroundClassname: the CSS class name to apply to the background div displayed when the lightbox is showing
	// borderBoxClassname: the CSS class name to apply to the border box in the center of the page
	// closeString: the string which will be displayed as the link to close the lightbox
	this.className = "wptheme_IFrameLightbox";
	
	//Declare this here so that any dependency error (e.g. wptheme_HTMLElementUtils not yet being defined)
	//is clear from the beginning (throws an error at construction time instead of runtime). Also, allows
	//for easy substitution of alternate implementations (as long as function names & signatures are the same).
	this._htmlUtils = wptheme_HTMLElementUtils;
	this._debugUtils = wptheme_DebugUtils;
	
	this._initialized = false;
	this.showing = false;
	
	var uniquePrefix = this._htmlUtils.getUniqueId();
	this._backgroundDivId = uniquePrefix + "_lightboxPageBackgroundDiv";
	this._borderDivId = uniquePrefix + "_lightboxBorderDiv";
	this._closeLinkId = uniquePrefix + "_lightboxCloseLink";
	this._iframeId = uniquePrefix + "_lightboxIframe";
	
	// ****************************************************************
	// * Dynamically created DOM elements. 
	// ****************************************************************

	function createDiv(idStr, className, parent ) {
		// summary: Creates a div with the given ID, class, and appends to the given parent node. The display property is set to none by default.
		var div = document.createElement( "DIV" ); 
		div.id = idStr;
		div.className = className;
		div.style.display = "none";
		parent.appendChild( div );
		return div;
	}
	var me = this;
	function createLink(idStr, className, text, parent) {
		// summary: Creates a link with the given ID, class, textContent, and appends it to the given parent node. The display property is set to none
		//		by default. The onclick is set to hide the lightbox.
		var a = document.createElement( "A" );
		a.id = idStr;
		a.className = className;
		a.href = "javascript:void(0);";
		a.onclick = function () { me.hide() };
		a.style.display = "none";
		a.appendChild( document.createTextNode( text ) );
		parent.appendChild( a );
		return a;
	}
	
	function createIFrame( idStr, parent ) {
		// summary: Creates an iframe with the given ID (also used for the name) and appends it to the given parent node.
		var iframe = document.createElement( "IFRAME" );
		iframe.name = idStr;
		iframe.id = idStr;
		//iframe.style.display = "none";
		parent.appendChild( iframe );
		return iframe;
	}
	
	// ****************************************************************
	// * Initialization.
	// ****************************************************************
	
	this._init = function () {
		this._initialized = true;
		//Create the background div.
		createDiv( this._backgroundDivId, disabledBackgroundClassname, document.body );
		//Create the border box div
		createIFrame( this._iframeId, createDiv( this._borderDivId, borderBoxClassname, document.body ));
		//Create the close link.
		createLink( this._closeLinkId, closeLinkClassname, closeString, document.body );
	}
	
	// ****************************************************************
	// * Handling the browser scrolling and resizing dynamically.
	// ****************************************************************

	//Make sure to call any existing onscroll handler.
	var oldScrollFunc = window.onscroll;
	window.onscroll = function (e) {
		if ( me.showing ) {
			me.sizeAndPositionBorderBox();
			//me.sizeBackgroundDisablingDiv();
		}
		
		if ( oldScrollFunc ) {
			if (e) {
				oldScrollFunc(e);
			}
			else  {
				oldScrollFunc();
			}
		}
	}
	
	//Make sure to call any existing onresize handler.
	var oldResizeFunc = window.onresize;
	window.onresize = function (e) {
		if ( me.showing ) {
			me.sizeAndPositionBorderBox();
			me.sizeBackgroundDisablingDiv();
		}
		
		if ( oldResizeFunc ) {
			if (e) {
				oldResizeFunc(e);
			}
			else  {
				oldResizeFunc();
			}
		}
	}

	// ****************************************************************
	// * Main functions for use in the theme.
	// ****************************************************************
	
	this.setURL = function ( /*String*/url ) {
		// summary: Sets the URL displayed by the IFRAME in the lightbox.
		// url: the url to the resource to display
		window.frames[this._iframeId].location = url;
	}
	
	
	
	this.show = function ( /*String?*/url ) {
		// summary: Shows the lightbox above the disabled background div. 
		// url: OPTIONAL -- the url to display in the iframe in the center of the screen 
		if ( !this._initialized ) {
			this._init();
		}
		
		this.showing = true;
		
		this.disableBackground();
		this.showBorderBox();
		if ( url ) { 
			this.setURL( url );
		}		
	}
	
	this.hide = function() {
		// summary: Hides the lightbox and the disabled background div.
		if ( !this._initialized ) {
			this._init();
		}
		
		this.showing = false;
		
		this.enableBackground();
		this.hideBorderBox();
	}
	
	// ****************************************************************
	// * Content border box 
	// ****************************************************************
	this.showBorderBox = function () {
		// summary: Shows and positions the border box which contains the IFRAME.
		var div = document.getElementById( this._borderDivId );
		div.style.display = "block";
		var link = document.getElementById( this._closeLinkId );
		link.style.display = "block";
		
		this.sizeAndPositionBorderBox();
	}
	
	this.sizeAndPositionBorderBox = function () {
		// summary: Sizes and positions the border box which contains the IFRAME.
		var div = document.getElementById( this._borderDivId );
		this._htmlUtils.sizeRelativeToViewableArea( div, 0.60, 0.75 );
		this._htmlUtils.positionRelativeToViewableArea( div, 0.20, 0.12 );
		var link = document.getElementById( this._closeLinkId );
		this._htmlUtils.positionOutsideElementTopRight( link, div );
	}
	
	this.hideBorderBox = function () {
		// summary: hides the border box and IFRAME.
		document.getElementById( this._borderDivId ).style.display = "none";
		document.getElementById( this._closeLinkId ).style.display = "none";
	}
	
	// **************************************************************** 
	// * Transparent background controls
	// ****************************************************************
	this.disableBackground = function () {
		// summary: Disables the background by laying a transparent div over top of the document body.
		var div = document.getElementById( this._backgroundDivId );
		div.style.display = "block";
		this.sizeBackgroundDisablingDiv();
		this._htmlUtils.hideElementsByTagName( "select" );
	}
	
	this.sizeBackgroundDisablingDiv = function () {
		// summary: Sizes the transparent div appropriately.
		var div = document.getElementById( this._backgroundDivId );
		//dynamically size the div to the inner browser window
		this._htmlUtils.sizeToEntireArea( div );
	}
	
	this.enableBackground=function () {
		// summary: Enables the background by hiding the overlaid div.
		this._htmlUtils.showElementsByTagName( "select" );
		document.getElementById( this._backgroundDivId ).style.display = "none";
	}
};
/*
	Copyright (c) 2004-2008, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
*/

/*
	This is a compiled version of Dojo, built for deployment and not for
	development. To get an editable version, please visit:

		http://dojotoolkit.org

	for documentation and information on getting the source.
*/

(function(){var _1=null;if((_1||(typeof djConfig!="undefined"&&djConfig.scopeMap))&&(typeof window!="undefined")){var _2="",_3="",_4="",_5={},_6={};_1=_1||djConfig.scopeMap;for(var i=0;i<_1.length;i++){var _8=_1[i];_2+="var "+_8[0]+" = {}; "+_8[1]+" = "+_8[0]+";"+_8[1]+"._scopeName = '"+_8[1]+"';";_3+=(i==0?"":",")+_8[0];_4+=(i==0?"":",")+_8[1];_5[_8[0]]=_8[1];_6[_8[1]]=_8[0];}eval(_2+"dojo._scopeArgs = ["+_4+"];");dojo._scopePrefixArgs=_3;dojo._scopePrefix="(function("+_3+"){";dojo._scopeSuffix="})("+_4+")";dojo._scopeMap=_5;dojo._scopeMapRev=_6;}(function(){if(this["navigator"]){if(/3[\.0-9]+ Safari/.test(navigator.appVersion)&&this["console"]){this.console={_c:this.console,log:function(s){this._c.log(s);},info:function(s){this._c.info(s);},error:function(s){this._c.error(s);},warn:function(s){this._c.warn(s);}};}}if(!this["console"]){this.console={log:function(){}};}var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var i=0,tn;while((tn=cn[i++])){if(!console[tn]){(function(){var tcn=tn+"";console[tcn]=function(){var a=Array.apply({},arguments);a.unshift(tcn+":");console.log(a.join(" "));};})();}}if(typeof dojo=="undefined"){this.dojo={_scopeName:"dojo",_scopePrefix:"",_scopePrefixArgs:"",_scopeSuffix:"",_scopeMap:{},_scopeMapRev:{}};}var d=dojo;if(typeof dijit=="undefined"){this.dijit={_scopeName:"dijit"};}if(typeof dojox=="undefined"){this.dojox={_scopeName:"dojox"};}if(!d._scopeArgs){d._scopeArgs=[dojo,dijit,dojox];}d.global=this;d.config={isDebug:false,debugAtAllCosts:false};if(typeof djConfig!="undefined"){for(var opt in djConfig){d.config[opt]=djConfig[opt];}}var _14=["Browser","Rhino","Spidermonkey","Mobile"];var t;while((t=_14.shift())){d["is"+t]=false;}dojo.locale=d.config.locale;var rev="$Rev: 13707 $".match(/\d+/);dojo.version={major:1,minor:1,patch:1,flag:"_IBM",revision:rev?+rev[0]:999999,toString:function(){with(d.version){return major+"."+minor+"."+patch+flag+" ("+revision+")";}}};if(typeof OpenAjax!="undefined"){OpenAjax.hub.registerLibrary(dojo._scopeName,"http://dojotoolkit.org",d.version.toString());}dojo._mixin=function(obj,_18){var _19={};for(var x in _18){if(_19[x]===undefined||_19[x]!=_18[x]){obj[x]=_18[x];}}if(d["isIE"]&&_18){var p=_18.toString;if(typeof p=="function"&&p!=obj.toString&&p!=_19.toString&&p!="\nfunction toString() {\n    [native code]\n}\n"){obj.toString=_18.toString;}}return obj;};dojo.mixin=function(obj,_1d){for(var i=1,l=arguments.length;i<l;i++){d._mixin(obj,arguments[i]);}return obj;};dojo._getProp=function(_20,_21,_22){var obj=_22||d.global;for(var i=0,p;obj&&(p=_20[i]);i++){if(i==0&&this._scopeMap[p]){p=this._scopeMap[p];}obj=(p in obj?obj[p]:(_21?obj[p]={}:undefined));}return obj;};dojo.setObject=function(_26,_27,_28){var _29=_26.split("."),p=_29.pop(),obj=d._getProp(_29,true,_28);return obj&&p?(obj[p]=_27):undefined;};dojo.getObject=function(_2c,_2d,_2e){return d._getProp(_2c.split("."),_2d,_2e);};dojo.exists=function(_2f,obj){return !!d.getObject(_2f,false,obj);};dojo["eval"]=function(_31){return d.global.eval?d.global.eval(_31):eval(_31);};d.deprecated=d.experimental=function(){};})();(function(){var d=dojo;d.mixin(d,{_loadedModules:{},_inFlightCount:0,_hasResource:{},_modulePrefixes:{dojo:{name:"dojo",value:"."},doh:{name:"doh",value:"../util/doh"},tests:{name:"tests",value:"tests"}},_moduleHasPrefix:function(_33){var mp=this._modulePrefixes;return !!(mp[_33]&&mp[_33].value);},_getModulePrefix:function(_35){var mp=this._modulePrefixes;if(this._moduleHasPrefix(_35)){return mp[_35].value;}return _35;},_loadedUrls:[],_postLoad:false,_loaders:[],_unloaders:[],_loadNotifying:false});dojo._loadPath=function(_37,_38,cb){var uri=((_37.charAt(0)=="/"||_37.match(/^\w+:/))?"":this.baseUrl)+_37;try{return !_38?this._loadUri(uri,cb):this._loadUriAndCheck(uri,_38,cb);}catch(e){console.error(e);return false;}};dojo._loadUri=function(uri,cb){if(this._loadedUrls[uri]){return true;}var _3d=this._getText(uri,true);if(!_3d){return false;}this._loadedUrls[uri]=true;this._loadedUrls.push(uri);if(cb){_3d="("+_3d+")";}else{_3d=this._scopePrefix+_3d+this._scopeSuffix;}if(d.isMoz){_3d+="\r\n//@ sourceURL="+uri;}var _3e=d["eval"](_3d);if(cb){cb(_3e);}return true;};dojo._loadUriAndCheck=function(uri,_40,cb){var ok=false;try{ok=this._loadUri(uri,cb);}catch(e){console.error("failed loading "+uri+" with error: "+e);}return !!(ok&&this._loadedModules[_40]);};dojo.loaded=function(){this._loadNotifying=true;this._postLoad=true;var mll=d._loaders;this._loaders=[];for(var x=0;x<mll.length;x++){try{mll[x]();}catch(e){throw e;console.error("dojo.addOnLoad callback failed: "+e,e);}}this._loadNotifying=false;if(d._postLoad&&d._inFlightCount==0&&mll.length){d._callLoaded();}};dojo.unloaded=function(){var mll=this._unloaders;while(mll.length){(mll.pop())();}};var _46=function(arr,obj,fn){if(!fn){arr.push(obj);}else{if(fn){var _4a=(typeof fn=="string")?obj[fn]:fn;arr.push(function(){_4a.call(obj);});}}};dojo.addOnLoad=function(obj,_4c){_46(d._loaders,obj,_4c);if(d._postLoad&&d._inFlightCount==0&&!d._loadNotifying){d._callLoaded();}};dojo.addOnUnload=function(obj,_4e){_46(d._unloaders,obj,_4e);};dojo._modulesLoaded=function(){if(d._postLoad){return;}if(d._inFlightCount>0){console.warn("files still in flight!");return;}d._callLoaded();};dojo._callLoaded=function(){if(typeof setTimeout=="object"||(dojo.config.useXDomain&&d.isOpera)){if(dojo.isAIR){setTimeout(function(){dojo.loaded();},0);}else{setTimeout(dojo._scopeName+".loaded();",0);}}else{d.loaded();}};dojo._getModuleSymbols=function(_4f){var _50=_4f.split(".");for(var i=_50.length;i>0;i--){var _52=_50.slice(0,i).join(".");if((i==1)&&!this._moduleHasPrefix(_52)){_50[0]="../"+_50[0];}else{var _53=this._getModulePrefix(_52);if(_53!=_52){_50.splice(0,i,_53);break;}}}return _50;};dojo._global_omit_module_check=false;dojo._loadModule=dojo.require=function(_54,_55){_55=this._global_omit_module_check||_55;var _56=this._loadedModules[_54];if(_56){return _56;}var _57=this._getModuleSymbols(_54).join("/")+".js";var _58=(!_55)?_54:null;var ok=this._loadPath(_57,_58);if(!ok&&!_55){throw new Error("Could not load '"+_54+"'; last tried '"+_57+"'");}if(!_55&&!this._isXDomain){_56=this._loadedModules[_54];if(!_56){throw new Error("symbol '"+_54+"' is not defined after loading '"+_57+"'");}}return _56;};dojo.provide=function(_5a){_5a=_5a+"";return (d._loadedModules[_5a]=d.getObject(_5a,true));};dojo.platformRequire=function(_5b){var _5c=_5b.common||[];var _5d=_5c.concat(_5b[d._name]||_5b["default"]||[]);for(var x=0;x<_5d.length;x++){var _5f=_5d[x];if(_5f.constructor==Array){d._loadModule.apply(d,_5f);}else{d._loadModule(_5f);}}};dojo.requireIf=function(_60,_61){if(_60===true){var _62=[];for(var i=1;i<arguments.length;i++){_62.push(arguments[i]);}d.require.apply(d,_62);}};dojo.requireAfterIf=d.requireIf;dojo.registerModulePath=function(_64,_65){d._modulePrefixes[_64]={name:_64,value:_65};};dojo.requireLocalization=function(_66,_67,_68,_69){d.require("dojo.i18n");d.i18n._requireLocalization.apply(d.hostenv,arguments);};var ore=new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$");var ire=new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$");dojo._Url=function(){var n=null;var _a=arguments;var uri=[_a[0]];for(var i=1;i<_a.length;i++){if(!_a[i]){continue;}var _70=new d._Url(_a[i]+"");var _71=new d._Url(uri[0]+"");if(_70.path==""&&!_70.scheme&&!_70.authority&&!_70.query){if(_70.fragment!=n){_71.fragment=_70.fragment;}_70=_71;}else{if(!_70.scheme){_70.scheme=_71.scheme;if(!_70.authority){_70.authority=_71.authority;if(_70.path.charAt(0)!="/"){var _72=_71.path.substring(0,_71.path.lastIndexOf("/")+1)+_70.path;var _73=_72.split("/");for(var j=0;j<_73.length;j++){if(_73[j]=="."){if(j==_73.length-1){_73[j]="";}else{_73.splice(j,1);j--;}}else{if(j>0&&!(j==1&&_73[0]=="")&&_73[j]==".."&&_73[j-1]!=".."){if(j==(_73.length-1)){_73.splice(j,1);_73[j-1]="";}else{_73.splice(j-1,2);j-=2;}}}}_70.path=_73.join("/");}}}}uri=[];if(_70.scheme){uri.push(_70.scheme,":");}if(_70.authority){uri.push("//",_70.authority);}uri.push(_70.path);if(_70.query){uri.push("?",_70.query);}if(_70.fragment){uri.push("#",_70.fragment);}}this.uri=uri.join("");var r=this.uri.match(ore);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(ire);this.user=r[3]||n;this.password=r[4]||n;this.host=r[6]||r[7];this.port=r[9]||n;}};dojo._Url.prototype.toString=function(){return this.uri;};dojo.moduleUrl=function(_76,url){var loc=d._getModuleSymbols(_76).join("/");if(!loc){return null;}if(loc.lastIndexOf("/")!=loc.length-1){loc+="/";}var _79=loc.indexOf(":");if(loc.charAt(0)!="/"&&(_79==-1||_79>loc.indexOf("/"))){loc=d.baseUrl+loc;}return new d._Url(loc,url);};})();if(typeof window!="undefined"){dojo.isBrowser=true;dojo._name="browser";(function(){var d=dojo;if(document&&document.getElementsByTagName){var _7b=document.getElementsByTagName("script");var _7c=/dojo(\.xd)?\.js(\W|$)/i;for(var i=0;i<_7b.length;i++){var src=_7b[i].getAttribute("src");if(!src){continue;}var m=src.match(_7c);if(m){if(!d.config.baseUrl){d.config.baseUrl=src.substring(0,m.index);}var cfg=_7b[i].getAttribute("djConfig");if(cfg){var _81=eval("({ "+cfg+" })");for(var x in _81){dojo.config[x]=_81[x];}}break;}}}d.baseUrl=d.config.baseUrl;var n=navigator;var dua=n.userAgent;var dav=n.appVersion;var tv=parseFloat(dav);d.isOpera=(dua.indexOf("Opera")>=0)?tv:0;var idx=Math.max(dav.indexOf("WebKit"),dav.indexOf("Safari"),0);if(idx){d.isSafari=parseFloat(dav.split("Version/")[1])||((parseFloat(dav.substr(idx+7))>=419.3)?3:2)||2;}d.isAIR=(dua.indexOf("AdobeAIR")>=0)?1:0;d.isKhtml=(dav.indexOf("Konqueror")>=0||d.isSafari)?tv:0;d.isMozilla=d.isMoz=(dua.indexOf("Gecko")>=0&&!d.isKhtml)?tv:0;d.isFF=d.isIE=0;if(d.isMoz){d.isFF=parseFloat(dua.split("Firefox/")[1])||0;}if(document.all&&!d.isOpera){d.isIE=parseFloat(dav.split("MSIE ")[1])||0;}if(dojo.isIE&&window.location.protocol==="file:"){dojo.config.ieForceActiveXXhr=true;}var cm=document.compatMode;d.isQuirks=cm=="BackCompat"||cm=="QuirksMode"||d.isIE<6;d.locale=dojo.config.locale||(d.isIE?n.userLanguage:n.language).toLowerCase();d._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];d._xhrObj=function(){var _89=null;var _8a=null;if(!dojo.isIE||!dojo.config.ieForceActiveXXhr){try{_89=new XMLHttpRequest();}catch(e){}}if(!_89){for(var i=0;i<3;++i){var _8c=d._XMLHTTP_PROGIDS[i];try{_89=new ActiveXObject(_8c);}catch(e){_8a=e;}if(_89){d._XMLHTTP_PROGIDS=[_8c];break;}}}if(!_89){throw new Error("XMLHTTP not available: "+_8a);}return _89;};d._isDocumentOk=function(_8d){var _8e=_8d.status||0;return (_8e>=200&&_8e<300)||_8e==304||_8e==1223||(!_8e&&(location.protocol=="file:"||location.protocol=="chrome:"));};var _8f=window.location+"";var _90=document.getElementsByTagName("base");var _91=(_90&&_90.length>0);d._getText=function(uri,_93){var _94=this._xhrObj();if(!_91&&dojo._Url){uri=(new dojo._Url(_8f,uri)).toString();}if(d.config.cacheBust){uri+=(uri.indexOf("?")==-1?"?":"&")+String(d.config.cacheBust).replace(/\W+/g,"");}_94.open("GET",uri,false);try{_94.send(null);if(!d._isDocumentOk(_94)){var err=Error("Unable to load "+uri+" status:"+_94.status);err.status=_94.status;err.responseText=_94.responseText;throw err;}}catch(e){if(_93){return null;}throw e;}return _94.responseText;};})();dojo._initFired=false;dojo._loadInit=function(e){dojo._initFired=true;var _97=(e&&e.type)?e.type.toLowerCase():"load";if(arguments.callee.initialized||(_97!="domcontentloaded"&&_97!="load")){return;}arguments.callee.initialized=true;if("_khtmlTimer" in dojo){clearInterval(dojo._khtmlTimer);delete dojo._khtmlTimer;}if(dojo._inFlightCount==0){dojo._modulesLoaded();}};dojo._fakeLoadInit=function(){dojo._loadInit({type:"load"});};if(!dojo.config.afterOnLoad){if(document.addEventListener){if(dojo.isOpera||dojo.isFF>=3||(dojo.isMoz&&dojo.config.enableMozDomContentLoaded===true)){document.addEventListener("DOMContentLoaded",dojo._loadInit,null);}window.addEventListener("load",dojo._loadInit,null);}if(dojo.isAIR){window.addEventListener("load",dojo._loadInit,null);}else{if(/(WebKit|khtml)/i.test(navigator.userAgent)){dojo._khtmlTimer=setInterval(function(){if(/loaded|complete/.test(document.readyState)){dojo._loadInit();}},10);}}}(function(){var _w=window;var _99=function(_9a,fp){var _9c=_w[_9a]||function(){};_w[_9a]=function(){fp.apply(_w,arguments);_9c.apply(_w,arguments);};};if(dojo.isIE){if(!dojo.config.afterOnLoad){document.write("<scr"+"ipt defer src=\"//:\" "+"onreadystatechange=\"if(this.readyState=='complete'){"+dojo._scopeName+"._loadInit();}\">"+"</scr"+"ipt>");}var _9d=true;_99("onbeforeunload",function(){_w.setTimeout(function(){_9d=false;},0);});_99("onunload",function(){if(_9d){dojo.unloaded();}});try{document.namespaces.add("v","urn:schemas-microsoft-com:vml");document.createStyleSheet().addRule("v\\:*","behavior:url(#default#VML)");}catch(e){}}else{_99("onbeforeunload",function(){dojo.unloaded();});}})();}(function(){var mp=dojo.config["modulePaths"];if(mp){for(var _9f in mp){dojo.registerModulePath(_9f,mp[_9f]);}}})();if(dojo.config.isDebug){dojo.require("dojo._firebug.firebug");}if(dojo.config.debugAtAllCosts){dojo.config.useXDomain=true;dojo.require("dojo._base._loader.loader_xd");dojo.require("dojo._base._loader.loader_debug");}if(!dojo._hasResource["dojo._base.lang"]){dojo._hasResource["dojo._base.lang"]=true;dojo.provide("dojo._base.lang");dojo.isString=function(it){return !!arguments.length&&it!=null&&(typeof it=="string"||it instanceof String);};dojo.isArray=function(it){return it&&(it instanceof Array||typeof it=="array");};dojo.isFunction=(function(){var _a2=function(it){return it&&(typeof it=="function"||it instanceof Function);};return dojo.isSafari?function(it){if(typeof it=="function"&&it=="[object NodeList]"){return false;}return _a2(it);}:_a2;})();dojo.isObject=function(it){return it!==undefined&&(it===null||typeof it=="object"||dojo.isArray(it)||dojo.isFunction(it));};dojo.isArrayLike=function(it){var d=dojo;return it&&it!==undefined&&!d.isString(it)&&!d.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(d.isArray(it)||isFinite(it.length));};dojo.isAlien=function(it){return it&&!dojo.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));};dojo.extend=function(_a9,_aa){for(var i=1,l=arguments.length;i<l;i++){dojo._mixin(_a9.prototype,arguments[i]);}return _a9;};dojo._hitchArgs=function(_ad,_ae){var pre=dojo._toArray(arguments,2);var _b0=dojo.isString(_ae);return function(){var _b1=dojo._toArray(arguments);var f=_b0?(_ad||dojo.global)[_ae]:_ae;return f&&f.apply(_ad||this,pre.concat(_b1));};};dojo.hitch=function(_b3,_b4){if(arguments.length>2){return dojo._hitchArgs.apply(dojo,arguments);}if(!_b4){_b4=_b3;_b3=null;}if(dojo.isString(_b4)){_b3=_b3||dojo.global;if(!_b3[_b4]){throw (["dojo.hitch: scope[\"",_b4,"\"] is null (scope=\"",_b3,"\")"].join(""));}return function(){return _b3[_b4].apply(_b3,arguments||[]);};}return !_b3?_b4:function(){return _b4.apply(_b3,arguments||[]);};};dojo.delegate=dojo._delegate=function(obj,_b6){function TMP(){};TMP.prototype=obj;var tmp=new TMP();if(_b6){dojo.mixin(tmp,_b6);}return tmp;};dojo.partial=function(_b8){var arr=[null];return dojo.hitch.apply(dojo,arr.concat(dojo._toArray(arguments)));};dojo._toArray=function(obj,_bb,_bc){var arr=_bc||[];for(var x=_bb||0;x<obj.length;x++){arr.push(obj[x]);}return arr;};dojo.clone=function(o){if(!o){return o;}if(dojo.isArray(o)){var r=[];for(var i=0;i<o.length;++i){r.push(dojo.clone(o[i]));}return r;}if(!dojo.isObject(o)){return o;}if(o.nodeType&&o.cloneNode){return o.cloneNode(true);}if(o instanceof Date){return new Date(o.getTime());}var r=new o.constructor();for(var i in o){if(!(i in r)||r[i]!=o[i]){r[i]=dojo.clone(o[i]);}}return r;};dojo.trim=function(str){return str.replace(/^\s\s*/,"").replace(/\s\s*$/,"");};}if(!dojo._hasResource["dojo._base.declare"]){dojo._hasResource["dojo._base.declare"]=true;dojo.provide("dojo._base.declare");dojo.declare=function(_c3,_c4,_c5){var dd=arguments.callee,_c7;if(dojo.isArray(_c4)){_c7=_c4;_c4=_c7.shift();}if(_c7){dojo.forEach(_c7,function(m){if(!m){throw (_c3+": mixin #"+i+" is null");}_c4=dd._delegate(_c4,m);});}var _c9=(_c5||0).constructor,_ca=dd._delegate(_c4),fn;for(var i in _c5){if(dojo.isFunction(fn=_c5[i])&&!0[i]){fn.nom=i;}}dojo.extend(_ca,{declaredClass:_c3,_constructor:_c9,preamble:null},_c5||0);_ca.prototype.constructor=_ca;return dojo.setObject(_c3,_ca);};dojo.mixin(dojo.declare,{_delegate:function(_cd,_ce){var bp=(_cd||0).prototype,mp=(_ce||0).prototype;var _d1=dojo.declare._makeCtor();dojo.mixin(_d1,{superclass:bp,mixin:mp,extend:dojo.declare._extend});if(_cd){_d1.prototype=dojo._delegate(bp);}dojo.extend(_d1,dojo.declare._core,mp||0,{_constructor:null,preamble:null});_d1.prototype.constructor=_d1;_d1.prototype.declaredClass=(bp||0).declaredClass+"_"+(mp||0).declaredClass;return _d1;},_extend:function(_d2){for(var i in _d2){if(dojo.isFunction(fn=_d2[i])&&!0[i]){fn.nom=i;}}dojo.extend(this,_d2);},_makeCtor:function(){return function(){this._construct(arguments);};},_core:{_construct:function(_d4){var c=_d4.callee,s=c.superclass,ct=s&&s.constructor,m=c.mixin,mct=m&&m.constructor,a=_d4,ii,fn;if(a[0]){if(((fn=a[0].preamble))){a=fn.apply(this,a)||a;}}if((fn=c.prototype.preamble)){a=fn.apply(this,a)||a;}if(ct&&ct.apply){ct.apply(this,a);}if(mct&&mct.apply){mct.apply(this,a);}if((ii=c.prototype._constructor)){ii.apply(this,_d4);}if(this.constructor.prototype==c.prototype&&(ct=this.postscript)){ct.apply(this,_d4);}},_findMixin:function(_dd){var c=this.constructor,p,m;while(c){p=c.superclass;m=c.mixin;if(m==_dd||(m instanceof _dd.constructor)){return p;}if(m&&(m=m._findMixin(_dd))){return m;}c=p&&p.constructor;}},_findMethod:function(_e1,_e2,_e3,has){var p=_e3,c,m,f;do{c=p.constructor;m=c.mixin;if(m&&(m=this._findMethod(_e1,_e2,m,has))){return m;}if((f=p[_e1])&&(has==(f==_e2))){return p;}p=c.superclass;}while(p);return !has&&(p=this._findMixin(_e3))&&this._findMethod(_e1,_e2,p,has);},inherited:function(_e9,_ea,_eb){var a=arguments;if(!dojo.isString(a[0])){_eb=_ea;_ea=_e9;_e9=_ea.callee.nom;}a=_eb||_ea;var c=_ea.callee,p=this.constructor.prototype,fn,mp;if(this[_e9]!=c||p[_e9]==c){mp=this._findMethod(_e9,c,p,true);if(!mp){throw (this.declaredClass+": inherited method \""+_e9+"\" mismatch");}p=this._findMethod(_e9,c,mp,false);}fn=p&&p[_e9];if(!fn){throw (mp.declaredClass+": inherited method \""+_e9+"\" not found");}return fn.apply(this,a);}}});}if(!dojo._hasResource["dojo._base.connect"]){dojo._hasResource["dojo._base.connect"]=true;dojo.provide("dojo._base.connect");dojo._listener={getDispatcher:function(){return function(){var ap=Array.prototype,c=arguments.callee,ls=c._listeners,t=c.target;var r=t&&t.apply(this,arguments);for(var i in ls){if(!(i in ap)){ls[i].apply(this,arguments);}}return r;};},add:function(_f7,_f8,_f9){_f7=_f7||dojo.global;var f=_f7[_f8];if(!f||!f._listeners){var d=dojo._listener.getDispatcher();d.target=f;d._listeners=[];f=_f7[_f8]=d;}return f._listeners.push(_f9);},remove:function(_fc,_fd,_fe){var f=(_fc||dojo.global)[_fd];if(f&&f._listeners&&_fe--){delete f._listeners[_fe];}}};dojo.connect=function(obj,_101,_102,_103,_104){var a=arguments,args=[],i=0;args.push(dojo.isString(a[0])?null:a[i++],a[i++]);var a1=a[i+1];args.push(dojo.isString(a1)||dojo.isFunction(a1)?a[i++]:null,a[i++]);for(var l=a.length;i<l;i++){args.push(a[i]);}return dojo._connect.apply(this,args);};dojo._connect=function(obj,_10a,_10b,_10c){var l=dojo._listener,h=l.add(obj,_10a,dojo.hitch(_10b,_10c));return [obj,_10a,h,l];};dojo.disconnect=function(_10f){if(_10f&&_10f[0]!==undefined){dojo._disconnect.apply(this,_10f);delete _10f[0];}};dojo._disconnect=function(obj,_111,_112,_113){_113.remove(obj,_111,_112);};dojo._topics={};dojo.subscribe=function(_114,_115,_116){return [_114,dojo._listener.add(dojo._topics,_114,dojo.hitch(_115,_116))];};dojo.unsubscribe=function(_117){if(_117){dojo._listener.remove(dojo._topics,_117[0],_117[1]);}};dojo.publish=function(_118,args){var f=dojo._topics[_118];if(f){f.apply(this,args||[]);}};dojo.connectPublisher=function(_11b,obj,_11d){var pf=function(){dojo.publish(_11b,arguments);};return (_11d)?dojo.connect(obj,_11d,pf):dojo.connect(obj,pf);};}if(!dojo._hasResource["dojo._base.Deferred"]){dojo._hasResource["dojo._base.Deferred"]=true;dojo.provide("dojo._base.Deferred");dojo.Deferred=function(_11f){this.chain=[];this.id=this._nextId();this.fired=-1;this.paused=0;this.results=[null,null];this.canceller=_11f;this.silentlyCancelled=false;};dojo.extend(dojo.Deferred,{_nextId:(function(){var n=1;return function(){return n++;};})(),cancel:function(){var err;if(this.fired==-1){if(this.canceller){err=this.canceller(this);}else{this.silentlyCancelled=true;}if(this.fired==-1){if(!(err instanceof Error)){var res=err;err=new Error("Deferred Cancelled");err.dojoType="cancel";err.cancelResult=res;}this.errback(err);}}else{if((this.fired==0)&&(this.results[0] instanceof dojo.Deferred)){this.results[0].cancel();}}},_resback:function(res){this.fired=((res instanceof Error)?1:0);this.results[this.fired]=res;this._fire();},_check:function(){if(this.fired!=-1){if(!this.silentlyCancelled){throw new Error("already called!");}this.silentlyCancelled=false;return;}},callback:function(res){this._check();this._resback(res);},errback:function(res){this._check();if(!(res instanceof Error)){res=new Error(res);}this._resback(res);},addBoth:function(cb,cbfn){var _128=dojo.hitch.apply(dojo,arguments);return this.addCallbacks(_128,_128);},addCallback:function(cb,cbfn){return this.addCallbacks(dojo.hitch.apply(dojo,arguments));},addErrback:function(cb,cbfn){return this.addCallbacks(null,dojo.hitch.apply(dojo,arguments));},addCallbacks:function(cb,eb){this.chain.push([cb,eb]);if(this.fired>=0){this._fire();}return this;},_fire:function(){var _12f=this.chain;var _130=this.fired;var res=this.results[_130];var self=this;var cb=null;while((_12f.length>0)&&(this.paused==0)){var f=_12f.shift()[_130];if(!f){continue;}try{res=f(res);_130=((res instanceof Error)?1:0);if(res instanceof dojo.Deferred){cb=function(res){self._resback(res);self.paused--;if((self.paused==0)&&(self.fired>=0)){self._fire();}};this.paused++;}}catch(err){console.debug(err);_130=1;res=err;}}this.fired=_130;this.results[_130]=res;if((cb)&&(this.paused)){res.addBoth(cb);}}});}if(!dojo._hasResource["dojo._base.json"]){dojo._hasResource["dojo._base.json"]=true;dojo.provide("dojo._base.json");dojo.fromJson=function(json){return eval("("+json+")");};dojo._escapeString=function(str){return ("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};dojo.toJsonIndentStr="\t";dojo.toJson=function(it,_139,_13a){if(it===undefined){return "undefined";}var _13b=typeof it;if(_13b=="number"||_13b=="boolean"){return it+"";}if(it===null){return "null";}if(dojo.isString(it)){return dojo._escapeString(it);}if(it.nodeType&&it.cloneNode){return "";}var _13c=arguments.callee;var _13d;_13a=_13a||"";var _13e=_139?_13a+dojo.toJsonIndentStr:"";if(typeof it.__json__=="function"){_13d=it.__json__();if(it!==_13d){return _13c(_13d,_139,_13e);}}if(typeof it.json=="function"){_13d=it.json();if(it!==_13d){return _13c(_13d,_139,_13e);}}var sep=_139?" ":"";var _140=_139?"\n":"";if(dojo.isArray(it)){var res=dojo.map(it,function(obj){var val=_13c(obj,_139,_13e);if(typeof val!="string"){val="undefined";}return _140+_13e+val;});return "["+res.join(","+sep)+_140+_13a+"]";}if(_13b=="function"){return null;}var _144=[];for(var key in it){var _146;if(typeof key=="number"){_146="\""+key+"\"";}else{if(typeof key=="string"){_146=dojo._escapeString(key);}else{continue;}}val=_13c(it[key],_139,_13e);if(typeof val!="string"){continue;}_144.push(_140+_13e+_146+":"+sep+val);}return "{"+_144.join(","+sep)+_140+_13a+"}";};}if(!dojo._hasResource["dojo._base.array"]){dojo._hasResource["dojo._base.array"]=true;dojo.provide("dojo._base.array");(function(){var _147=function(arr,obj,cb){return [dojo.isString(arr)?arr.split(""):arr,obj||dojo.global,dojo.isString(cb)?new Function("item","index","array",cb):cb];};dojo.mixin(dojo,{indexOf:function(_14b,_14c,_14d,_14e){var step=1,end=_14b.length||0,i=0;if(_14e){i=end-1;step=end=-1;}if(_14d!=undefined){i=_14d;}if((_14e&&i>end)||i<end){for(;i!=end;i+=step){if(_14b[i]==_14c){return i;}}}return -1;},lastIndexOf:function(_151,_152,_153){return dojo.indexOf(_151,_152,_153,true);},forEach:function(arr,_155,_156){if(!arr||!arr.length){return;}var _p=_147(arr,_156,_155);arr=_p[0];for(var i=0,l=_p[0].length;i<l;i++){_p[2].call(_p[1],arr[i],i,arr);}},_everyOrSome:function(_15a,arr,_15c,_15d){var _p=_147(arr,_15d,_15c);arr=_p[0];for(var i=0,l=arr.length;i<l;i++){var _161=!!_p[2].call(_p[1],arr[i],i,arr);if(_15a^_161){return _161;}}return _15a;},every:function(arr,_163,_164){return this._everyOrSome(true,arr,_163,_164);},some:function(arr,_166,_167){return this._everyOrSome(false,arr,_166,_167);},map:function(arr,_169,_16a){var _p=_147(arr,_16a,_169);arr=_p[0];var _16c=(arguments[3]?(new arguments[3]()):[]);for(var i=0;i<arr.length;++i){_16c.push(_p[2].call(_p[1],arr[i],i,arr));}return _16c;},filter:function(arr,_16f,_170){var _p=_147(arr,_170,_16f);arr=_p[0];var _172=[];for(var i=0;i<arr.length;i++){if(_p[2].call(_p[1],arr[i],i,arr)){_172.push(arr[i]);}}return _172;}});})();}if(!dojo._hasResource["dojo._base.Color"]){dojo._hasResource["dojo._base.Color"]=true;dojo.provide("dojo._base.Color");dojo.Color=function(_174){if(_174){this.setColor(_174);}};dojo.Color.named={black:[0,0,0],silver:[192,192,192],gray:[128,128,128],white:[255,255,255],maroon:[128,0,0],red:[255,0,0],purple:[128,0,128],fuchsia:[255,0,255],green:[0,128,0],lime:[0,255,0],olive:[128,128,0],yellow:[255,255,0],navy:[0,0,128],blue:[0,0,255],teal:[0,128,128],aqua:[0,255,255]};dojo.extend(dojo.Color,{r:255,g:255,b:255,a:1,_set:function(r,g,b,a){var t=this;t.r=r;t.g=g;t.b=b;t.a=a;},setColor:function(_17a){var d=dojo;if(d.isString(_17a)){d.colorFromString(_17a,this);}else{if(d.isArray(_17a)){d.colorFromArray(_17a,this);}else{this._set(_17a.r,_17a.g,_17a.b,_17a.a);if(!(_17a instanceof d.Color)){this.sanitize();}}}return this;},sanitize:function(){return this;},toRgb:function(){var t=this;return [t.r,t.g,t.b];},toRgba:function(){var t=this;return [t.r,t.g,t.b,t.a];},toHex:function(){var arr=dojo.map(["r","g","b"],function(x){var s=this[x].toString(16);return s.length<2?"0"+s:s;},this);return "#"+arr.join("");},toCss:function(_181){var t=this,rgb=t.r+", "+t.g+", "+t.b;return (_181?"rgba("+rgb+", "+t.a:"rgb("+rgb)+")";},toString:function(){return this.toCss(true);}});dojo.blendColors=function(_184,end,_186,obj){var d=dojo,t=obj||new dojo.Color();d.forEach(["r","g","b","a"],function(x){t[x]=_184[x]+(end[x]-_184[x])*_186;if(x!="a"){t[x]=Math.round(t[x]);}});return t.sanitize();};dojo.colorFromRgb=function(_18b,obj){var m=_18b.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return m&&dojo.colorFromArray(m[1].split(/\s*,\s*/),obj);};dojo.colorFromHex=function(_18e,obj){var d=dojo,t=obj||new d.Color(),bits=(_18e.length==4)?4:8,mask=(1<<bits)-1;_18e=Number("0x"+_18e.substr(1));if(isNaN(_18e)){return null;}d.forEach(["b","g","r"],function(x){var c=_18e&mask;_18e>>=bits;t[x]=bits==4?17*c:c;});t.a=1;return t;};dojo.colorFromArray=function(a,obj){var t=obj||new dojo.Color();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};dojo.colorFromString=function(str,obj){var a=dojo.Color.named[str];return a&&dojo.colorFromArray(a,obj)||dojo.colorFromRgb(str,obj)||dojo.colorFromHex(str,obj);};}if(!dojo._hasResource["dojo._base"]){dojo._hasResource["dojo._base"]=true;dojo.provide("dojo._base");}if(!dojo._hasResource["dojo._base.window"]){dojo._hasResource["dojo._base.window"]=true;dojo.provide("dojo._base.window");dojo._gearsObject=function(){var _19c;var _19d;var _19e=dojo.getObject("google.gears");if(_19e){return _19e;}if(typeof GearsFactory!="undefined"){_19c=new GearsFactory();}else{if(dojo.isIE){try{_19c=new ActiveXObject("Gears.Factory");}catch(e){}}else{if(navigator.mimeTypes["application/x-googlegears"]){_19c=document.createElement("object");_19c.setAttribute("type","application/x-googlegears");_19c.setAttribute("width",0);_19c.setAttribute("height",0);_19c.style.display="none";document.documentElement.appendChild(_19c);}}}if(!_19c){return null;}dojo.setObject("google.gears.factory",_19c);return dojo.getObject("google.gears");};dojo.isGears=(!!dojo._gearsObject())||0;dojo.doc=window["document"]||null;dojo.body=function(){return dojo.doc.body||dojo.doc.getElementsByTagName("body")[0];};dojo.setContext=function(_19f,_1a0){dojo.global=_19f;dojo.doc=_1a0;};dojo._fireCallback=function(_1a1,_1a2,_1a3){if(_1a2&&dojo.isString(_1a1)){_1a1=_1a2[_1a1];}return _1a1.apply(_1a2,_1a3||[]);};dojo.withGlobal=function(_1a4,_1a5,_1a6,_1a7){var rval;var _1a9=dojo.global;var _1aa=dojo.doc;try{dojo.setContext(_1a4,_1a4.document);rval=dojo._fireCallback(_1a5,_1a6,_1a7);}finally{dojo.setContext(_1a9,_1aa);}return rval;};dojo.withDoc=function(_1ab,_1ac,_1ad,_1ae){var rval;var _1b0=dojo.doc;try{dojo.doc=_1ab;rval=dojo._fireCallback(_1ac,_1ad,_1ae);}finally{dojo.doc=_1b0;}return rval;};}if(!dojo._hasResource["dojo._base.event"]){dojo._hasResource["dojo._base.event"]=true;dojo.provide("dojo._base.event");(function(){var del=(dojo._event_listener={add:function(node,name,fp){if(!node){return;}name=del._normalizeEventName(name);fp=del._fixCallback(name,fp);var _1b5=name;if(!dojo.isIE&&(name=="mouseenter"||name=="mouseleave")){var ofp=fp;name=(name=="mouseenter")?"mouseover":"mouseout";fp=function(e){if(!dojo.isDescendant(e.relatedTarget,node)){return ofp.call(this,e);}};}node.addEventListener(name,fp,false);return fp;},remove:function(node,_1b9,_1ba){if(node){node.removeEventListener(del._normalizeEventName(_1b9),_1ba,false);}},_normalizeEventName:function(name){return name.slice(0,2)=="on"?name.slice(2):name;},_fixCallback:function(name,fp){return name!="keypress"?fp:function(e){return fp.call(this,del._fixEvent(e,this));};},_fixEvent:function(evt,_1c0){switch(evt.type){case "keypress":del._setKeyChar(evt);break;}return evt;},_setKeyChar:function(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";}});dojo.fixEvent=function(evt,_1c3){return del._fixEvent(evt,_1c3);};dojo.stopEvent=function(evt){evt.preventDefault();evt.stopPropagation();};var _1c5=dojo._listener;dojo._connect=function(obj,_1c7,_1c8,_1c9,_1ca){var _1cb=obj&&(obj.nodeType||obj.attachEvent||obj.addEventListener);var lid=!_1cb?0:(!_1ca?1:2),l=[dojo._listener,del,_1c5][lid];var h=l.add(obj,_1c7,dojo.hitch(_1c8,_1c9));return [obj,_1c7,h,lid];};dojo._disconnect=function(obj,_1d0,_1d1,_1d2){([dojo._listener,del,_1c5][_1d2]).remove(obj,_1d0,_1d1);};dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145};if(dojo.isIE){var _1d3=function(e,code){try{return (e.keyCode=code);}catch(e){return 0;}};var iel=dojo._listener;if(!dojo.config._allow_leaks){_1c5=iel=dojo._ie_listener={handlers:[],add:function(_1d7,_1d8,_1d9){_1d7=_1d7||dojo.global;var f=_1d7[_1d8];if(!f||!f._listeners){var d=dojo._getIeDispatcher();d.target=f&&(ieh.push(f)-1);d._listeners=[];f=_1d7[_1d8]=d;}return f._listeners.push(ieh.push(_1d9)-1);},remove:function(_1dd,_1de,_1df){var f=(_1dd||dojo.global)[_1de],l=f&&f._listeners;if(f&&l&&_1df--){delete ieh[l[_1df]];delete l[_1df];}}};var ieh=iel.handlers;}dojo.mixin(del,{add:function(node,_1e3,fp){if(!node){return;}_1e3=del._normalizeEventName(_1e3);if(_1e3=="onkeypress"){var kd=node.onkeydown;if(!kd||!kd._listeners||!kd._stealthKeydownHandle){var h=del.add(node,"onkeydown",del._stealthKeyDown);kd=node.onkeydown;kd._stealthKeydownHandle=h;kd._stealthKeydownRefs=1;}else{kd._stealthKeydownRefs++;}}return iel.add(node,_1e3,del._fixCallback(fp));},remove:function(node,_1e8,_1e9){_1e8=del._normalizeEventName(_1e8);iel.remove(node,_1e8,_1e9);if(_1e8=="onkeypress"){var kd=node.onkeydown;if(--kd._stealthKeydownRefs<=0){iel.remove(node,"onkeydown",kd._stealthKeydownHandle);delete kd._stealthKeydownHandle;}}},_normalizeEventName:function(_1eb){return _1eb.slice(0,2)!="on"?"on"+_1eb:_1eb;},_nop:function(){},_fixEvent:function(evt,_1ed){if(!evt){var w=_1ed&&(_1ed.ownerDocument||_1ed.document||_1ed).parentWindow||window;evt=w.event;}if(!evt){return (evt);}evt.target=evt.srcElement;evt.currentTarget=(_1ed||evt.srcElement);evt.layerX=evt.offsetX;evt.layerY=evt.offsetY;var se=evt.srcElement,doc=(se&&se.ownerDocument)||document;var _1f1=((dojo.isIE<6)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;var _1f2=dojo._getIeDocumentElementOffset();evt.pageX=evt.clientX+dojo._fixIeBiDiScrollLeft(_1f1.scrollLeft||0)-_1f2.x;evt.pageY=evt.clientY+(_1f1.scrollTop||0)-_1f2.y;if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}evt.stopPropagation=del._stopPropagation;evt.preventDefault=del._preventDefault;return del._fixKeys(evt);},_fixKeys:function(evt){switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;del._setKeyChar(evt);break;}return evt;},_punctMap:{106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39},_stealthKeyDown:function(evt){var kp=evt.currentTarget.onkeypress;if(!kp||!kp._listeners){return;}var k=evt.keyCode;var _1f8=(k!=13)&&(k!=32)&&(k!=27)&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_1f8||evt.ctrlKey){var c=_1f8?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});kp.call(evt.currentTarget,faux);evt.cancelBubble=faux.cancelBubble;evt.returnValue=faux.returnValue;_1d3(evt,faux.keyCode);}},_stopPropagation:function(){this.cancelBubble=true;},_preventDefault:function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){_1d3(this,0);}this.returnValue=false;}});dojo.stopEvent=function(evt){evt=evt||window.event;del._stopPropagation.call(evt);del._preventDefault.call(evt);};}del._synthesizeEvent=function(evt,_1fd){var faux=dojo.mixin({},evt,_1fd);del._setKeyChar(faux);faux.preventDefault=function(){evt.preventDefault();};faux.stopPropagation=function(){evt.stopPropagation();};return faux;};if(dojo.isOpera){dojo.mixin(del,{_fixEvent:function(evt,_200){switch(evt.type){case "keypress":var c=evt.which;if(c==3){c=99;}c=((c<41)&&(!evt.shiftKey)?0:c);if((evt.ctrlKey)&&(!evt.shiftKey)&&(c>=65)&&(c<=90)){c+=32;}return del._synthesizeEvent(evt,{charCode:c});}return evt;}});}if(dojo.isSafari){dojo.mixin(del,{_fixEvent:function(evt,_203){switch(evt.type){case "keypress":var c=evt.charCode,s=evt.shiftKey,k=evt.keyCode;k=k||_207[evt.keyIdentifier]||0;if(evt.keyIdentifier=="Enter"){c=0;}else{if((evt.ctrlKey)&&(c>0)&&(c<27)){c+=96;}else{if(c==dojo.keys.SHIFT_TAB){c=dojo.keys.TAB;s=true;}else{c=(c>=32&&c<63232?c:0);}}}return del._synthesizeEvent(evt,{charCode:c,shiftKey:s,keyCode:k});}return evt;}});dojo.mixin(dojo.keys,{SHIFT_TAB:25,UP_ARROW:63232,DOWN_ARROW:63233,LEFT_ARROW:63234,RIGHT_ARROW:63235,F1:63236,F2:63237,F3:63238,F4:63239,F5:63240,F6:63241,F7:63242,F8:63243,F9:63244,F10:63245,F11:63246,F12:63247,PAUSE:63250,DELETE:63272,HOME:63273,END:63275,PAGE_UP:63276,PAGE_DOWN:63277,INSERT:63302,PRINT_SCREEN:63248,SCROLL_LOCK:63249,NUM_LOCK:63289});var dk=dojo.keys,_207={"Up":dk.UP_ARROW,"Down":dk.DOWN_ARROW,"Left":dk.LEFT_ARROW,"Right":dk.RIGHT_ARROW,"PageUp":dk.PAGE_UP,"PageDown":dk.PAGE_DOWN};}})();if(dojo.isIE){dojo._ieDispatcher=function(args,_20a){var ap=Array.prototype,h=dojo._ie_listener.handlers,c=args.callee,ls=c._listeners,t=h[c.target];var r=t&&t.apply(_20a,args);for(var i in ls){if(!(i in ap)){h[ls[i]].apply(_20a,args);}}return r;};dojo._getIeDispatcher=function(){return new Function(dojo._scopeName+"._ieDispatcher(arguments, this)");};dojo._event_listener._fixCallback=function(fp){var f=dojo._event_listener._fixEvent;return function(e){return fp.call(this,f(e,this));};};}}if(!dojo._hasResource["dojo._base.html"]){dojo._hasResource["dojo._base.html"]=true;dojo.provide("dojo._base.html");try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}if(dojo.isIE||dojo.isOpera){dojo.byId=function(id,doc){if(dojo.isString(id)){var _d=doc||dojo.doc;var te=_d.getElementById(id);if(te&&te.attributes.id.value==id){return te;}else{var eles=_d.all[id];if(!eles||!eles.length){return eles;}var i=0;while((te=eles[i++])){if(te.attributes.id.value==id){return te;}}}}else{return id;}};}else{dojo.byId=function(id,doc){return dojo.isString(id)?(doc||dojo.doc).getElementById(id):id;};}(function(){var d=dojo;var _21e=null;dojo.addOnUnload(function(){_21e=null;});dojo._destroyElement=function(node){node=d.byId(node);try{if(!_21e||_21e.ownerDocument!=node.ownerDocument){_21e=node.ownerDocument.createElement("div");}_21e.appendChild(node.parentNode?node.parentNode.removeChild(node):node);_21e.innerHTML="";}catch(e){}};dojo.isDescendant=function(node,_221){try{node=d.byId(node);_221=d.byId(_221);while(node){if(node===_221){return true;}node=node.parentNode;}}catch(e){}return false;};dojo.setSelectable=function(node,_223){node=d.byId(node);if(d.isMozilla){node.style.MozUserSelect=_223?"":"none";}else{if(d.isKhtml){node.style.KhtmlUserSelect=_223?"auto":"none";}else{if(d.isIE){node.unselectable=_223?"":"on";d.query("*",node).forEach(function(_224){_224.unselectable=_223?"":"on";});}}}};var _225=function(node,ref){ref.parentNode.insertBefore(node,ref);return true;};var _228=function(node,ref){var pn=ref.parentNode;if(ref==pn.lastChild){pn.appendChild(node);}else{return _225(node,ref.nextSibling);}return true;};dojo.place=function(node,_22d,_22e){if(!node||!_22d||_22e===undefined){return false;}node=d.byId(node);_22d=d.byId(_22d);if(typeof _22e=="number"){var cn=_22d.childNodes;if((_22e==0&&cn.length==0)||cn.length==_22e){_22d.appendChild(node);return true;}if(_22e==0){return _225(node,_22d.firstChild);}return _228(node,cn[_22e-1]);}switch(_22e.toLowerCase()){case "before":return _225(node,_22d);case "after":return _228(node,_22d);case "first":if(_22d.firstChild){return _225(node,_22d.firstChild);}default:_22d.appendChild(node);return true;}};dojo.boxModel="content-box";if(d.isIE){var _dcm=document.compatMode;d.boxModel=_dcm=="BackCompat"||_dcm=="QuirksMode"||d.isIE<6?"border-box":"content-box";}var gcs;if(d.isSafari){gcs=function(node){var dv=node.ownerDocument.defaultView;var s=dv.getComputedStyle(node,null);if(!s&&node.style){node.style.display="";s=dv.getComputedStyle(node,null);}return s||{};};}else{if(d.isIE){gcs=function(node){return node.currentStyle;};}else{gcs=function(node){var dv=node.ownerDocument.defaultView;return dv.getComputedStyle(node,null);};}}dojo.getComputedStyle=gcs;if(!d.isIE){dojo._toPixelValue=function(_238,_239){return parseFloat(_239)||0;};}else{dojo._toPixelValue=function(_23a,_23b){if(!_23b){return 0;}if(_23b=="medium"){return 4;}if(_23b.slice&&(_23b.slice(-2)=="px")){return parseFloat(_23b);}with(_23a){var _23c=style.left;var _23d=runtimeStyle.left;runtimeStyle.left=currentStyle.left;try{style.left=_23b;_23b=style.pixelLeft;}catch(e){_23b=0;}style.left=_23c;runtimeStyle.left=_23d;}return _23b;};}var px=d._toPixelValue;dojo._getOpacity=d.isIE?function(node){try{return node.filters.alpha.opacity/100;}catch(e){return 1;}}:function(node){return gcs(node).opacity;};dojo._setOpacity=d.isIE?function(node,_242){if(_242==1){var _243=/FILTER:[^;]*;?/i;node.style.cssText=node.style.cssText.replace(_243,"");if(node.nodeName.toLowerCase()=="tr"){d.query("> td",node).forEach(function(i){i.style.cssText=i.style.cssText.replace(_243,"");});}}else{var o="Alpha(Opacity="+_242*100+")";node.style.filter=o;}if(node.nodeName.toLowerCase()=="tr"){d.query("> td",node).forEach(function(i){i.style.filter=o;});}return _242;}:function(node,_248){return node.style.opacity=_248;};var _249={left:true,top:true};var _24a=/margin|padding|width|height|max|min|offset/;var _24b=function(node,type,_24e){type=type.toLowerCase();if(d.isIE&&_24e=="auto"){if(type=="height"){return node.offsetHeight;}if(type=="width"){return node.offsetWidth;}}if(!(type in _249)){_249[type]=_24a.test(type);}return _249[type]?px(node,_24e):_24e;};var _24f=d.isIE?"styleFloat":"cssFloat";var _250={"cssFloat":_24f,"styleFloat":_24f,"float":_24f};dojo.style=function(node,_252,_253){var n=d.byId(node),args=arguments.length,op=(_252=="opacity");_252=_250[_252]||_252;if(args==3){return op?d._setOpacity(n,_253):n.style[_252]=_253;}if(args==2&&op){return d._getOpacity(n);}var s=gcs(n);if(args==2&&!d.isString(_252)){for(var x in _252){d.style(node,x,_252[x]);}return s;}return (args==1)?s:_24b(n,_252,s[_252]);};dojo._getPadExtents=function(n,_25a){var s=_25a||gcs(n),l=px(n,s.paddingLeft),t=px(n,s.paddingTop);return {l:l,t:t,w:l+px(n,s.paddingRight),h:t+px(n,s.paddingBottom)};};dojo._getBorderExtents=function(n,_25f){var ne="none",s=_25f||gcs(n),bl=(s.borderLeftStyle!=ne?px(n,s.borderLeftWidth):0),bt=(s.borderTopStyle!=ne?px(n,s.borderTopWidth):0);return {l:bl,t:bt,w:bl+(s.borderRightStyle!=ne?px(n,s.borderRightWidth):0),h:bt+(s.borderBottomStyle!=ne?px(n,s.borderBottomWidth):0)};};dojo._getPadBorderExtents=function(n,_265){var s=_265||gcs(n),p=d._getPadExtents(n,s),b=d._getBorderExtents(n,s);return {l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h};};dojo._getMarginExtents=function(n,_26a){var s=_26a||gcs(n),l=px(n,s.marginLeft),t=px(n,s.marginTop),r=px(n,s.marginRight),b=px(n,s.marginBottom);if(d.isSafari&&(s.position!="absolute")){r=l;}return {l:l,t:t,w:l+r,h:t+b};};dojo._getMarginBox=function(node,_271){var s=_271||gcs(node),me=d._getMarginExtents(node,s);var l=node.offsetLeft-me.l,t=node.offsetTop-me.t;if(d.isMoz){var sl=parseFloat(s.left),st=parseFloat(s.top);if(!isNaN(sl)&&!isNaN(st)){l=sl,t=st;}else{var p=node.parentNode;if(p&&p.style){var pcs=gcs(p);if(pcs.overflow!="visible"){var be=d._getBorderExtents(p,pcs);l+=be.l,t+=be.t;}}}}else{if(d.isOpera){var p=node.parentNode;if(p){var be=d._getBorderExtents(p);l-=be.l,t-=be.t;}}}return {l:l,t:t,w:node.offsetWidth+me.w,h:node.offsetHeight+me.h};};dojo._getContentBox=function(node,_27c){var s=_27c||gcs(node),pe=d._getPadExtents(node,s),be=d._getBorderExtents(node,s),w=node.clientWidth,h;if(!w){w=node.offsetWidth,h=node.offsetHeight;}else{h=node.clientHeight,be.w=be.h=0;}if(d.isOpera){pe.l+=be.l;pe.t+=be.t;}return {l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h};};dojo._getBorderBox=function(node,_283){var s=_283||gcs(node),pe=d._getPadExtents(node,s),cb=d._getContentBox(node,s);return {l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h};};dojo._setBox=function(node,l,t,w,h,u){u=u||"px";var s=node.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};dojo._usesBorderBox=function(node){var n=node.tagName;return d.boxModel=="border-box"||n=="TABLE"||n=="BUTTON";};dojo._setContentSize=function(node,_291,_292,_293){if(d._usesBorderBox(node)){var pb=d._getPadBorderExtents(node,_293);if(_291>=0){_291+=pb.w;}if(_292>=0){_292+=pb.h;}}d._setBox(node,NaN,NaN,_291,_292);};dojo._setMarginBox=function(node,_296,_297,_298,_299,_29a){var s=_29a||gcs(node);var bb=d._usesBorderBox(node),pb=bb?_29e:d._getPadBorderExtents(node,s),mb=d._getMarginExtents(node,s);if(_298>=0){_298=Math.max(_298-pb.w-mb.w,0);}if(_299>=0){_299=Math.max(_299-pb.h-mb.h,0);}d._setBox(node,_296,_297,_298,_299);};var _29e={l:0,t:0,w:0,h:0};dojo.marginBox=function(node,box){var n=d.byId(node),s=gcs(n),b=box;return !b?d._getMarginBox(n,s):d._setMarginBox(n,b.l,b.t,b.w,b.h,s);};dojo.contentBox=function(node,box){var n=dojo.byId(node),s=gcs(n),b=box;return !b?d._getContentBox(n,s):d._setContentSize(n,b.w,b.h,s);};var _2aa=function(node,prop){if(!(node=(node||0).parentNode)){return 0;}var val,_2ae=0,_b=d.body();while(node&&node.style){if(gcs(node).position=="fixed"){return 0;}val=node[prop];if(val){_2ae+=val-0;if(node==_b){break;}}node=node.parentNode;}return _2ae;};dojo._docScroll=function(){var _b=d.body(),_w=d.global,de=d.doc.documentElement;return {y:(_w.pageYOffset||de.scrollTop||_b.scrollTop||0),x:(_w.pageXOffset||d._fixIeBiDiScrollLeft(de.scrollLeft)||_b.scrollLeft||0)};};dojo._isBodyLtr=function(){return !("_bodyLtr" in d)?d._bodyLtr=gcs(d.body()).direction=="ltr":d._bodyLtr;};dojo._getIeDocumentElementOffset=function(){var de=d.doc.documentElement;return (d.isIE>=7)?{x:de.getBoundingClientRect().left,y:de.getBoundingClientRect().top}:{x:d._isBodyLtr()||window.parent==window?de.clientLeft:de.offsetWidth-de.clientWidth-de.clientLeft,y:de.clientTop};};dojo._fixIeBiDiScrollLeft=function(_2b4){var dd=d.doc;if(d.isIE&&!dojo._isBodyLtr()){var de=dd.compatMode=="BackCompat"?dd.body:dd.documentElement;return _2b4+de.clientWidth-de.scrollWidth;}return _2b4;};dojo._abs=function(node,_2b8){var _2b9=node.ownerDocument;var ret={x:0,y:0};var db=d.body();if(d.isIE||(d.isFF>=3)){var _2bc=node.getBoundingClientRect();var _2bd=(d.isIE)?d._getIeDocumentElementOffset():{x:0,y:0};ret.x=_2bc.left-_2bd.x;ret.y=_2bc.top-_2bd.y;}else{if(_2b9["getBoxObjectFor"]){var bo=_2b9.getBoxObjectFor(node),b=d._getBorderExtents(node);ret.x=bo.x-b.l-_2aa(node,"scrollLeft");ret.y=bo.y-b.t-_2aa(node,"scrollTop");}else{if(node["offsetParent"]){var _2c0;if(d.isSafari&&(gcs(node).position=="absolute")&&(node.parentNode==db)){_2c0=db;}else{_2c0=db.parentNode;}if(node.parentNode!=db){var nd=node;if(d.isOpera){nd=db;}ret.x-=_2aa(nd,"scrollLeft");ret.y-=_2aa(nd,"scrollTop");}var _2c2=node;do{var n=_2c2.offsetLeft;if(!d.isOpera||n>0){ret.x+=isNaN(n)?0:n;}var t=_2c2.offsetTop;ret.y+=isNaN(t)?0:t;if(d.isSafari&&_2c2!=node){var cs=gcs(_2c2);ret.x+=px(_2c2,cs.borderLeftWidth);ret.y+=px(_2c2,cs.borderTopWidth);}_2c2=_2c2.offsetParent;}while((_2c2!=_2c0)&&_2c2);}else{if(node.x&&node.y){ret.x+=isNaN(node.x)?0:node.x;ret.y+=isNaN(node.y)?0:node.y;}}}}if(_2b8){var _2c6=d._docScroll();ret.y+=_2c6.y;ret.x+=_2c6.x;}return ret;};dojo.coords=function(node,_2c8){var n=d.byId(node),s=gcs(n),mb=d._getMarginBox(n,s);var abs=d._abs(n,_2c8);mb.x=abs.x;mb.y=abs.y;return mb;};var _2cd=function(name){switch(name.toLowerCase()){case "tabindex":return (d.isIE&&d.isIE<8)?"tabIndex":"tabindex";default:return name;}};var _2cf={colspan:"colSpan",enctype:"enctype",frameborder:"frameborder",method:"method",rowspan:"rowSpan",scrolling:"scrolling",shape:"shape",span:"span",type:"type",valuetype:"valueType"};dojo.hasAttr=function(node,name){var attr=d.byId(node).getAttributeNode(_2cd(name));return attr?attr.specified:false;};var _2d3={};var _ctr=0;var _2d5=dojo._scopeName+"attrid";dojo.attr=function(node,name,_2d8){var args=arguments.length;if(args==2&&!d.isString(name)){for(var x in name){d.attr(node,x,name[x]);}return;}node=d.byId(node);name=_2cd(name);if(args==3){if(d.isFunction(_2d8)){var _2db=d.attr(node,_2d5);if(!_2db){_2db=_ctr++;d.attr(node,_2d5,_2db);}if(!_2d3[_2db]){_2d3[_2db]={};}var h=_2d3[_2db][name];if(h){d.disconnect(h);}else{try{delete node[name];}catch(e){}}_2d3[_2db][name]=d.connect(node,name,_2d8);}else{if(typeof _2d8=="boolean"){node[name]=_2d8;}else{node.setAttribute(name,_2d8);}}return;}else{var prop=_2cf[name.toLowerCase()];if(prop){return node[prop];}else{var _2d8=node[name];return (typeof _2d8=="boolean"||typeof _2d8=="function")?_2d8:(d.hasAttr(node,name)?node.getAttribute(name):null);}}};dojo.removeAttr=function(node,name){d.byId(node).removeAttribute(_2cd(name));};})();dojo.hasClass=function(node,_2e1){return ((" "+dojo.byId(node).className+" ").indexOf(" "+_2e1+" ")>=0);};dojo.addClass=function(node,_2e3){node=dojo.byId(node);var cls=node.className;if((" "+cls+" ").indexOf(" "+_2e3+" ")<0){node.className=cls+(cls?" ":"")+_2e3;}};dojo.removeClass=function(node,_2e6){node=dojo.byId(node);var t=dojo.trim((" "+node.className+" ").replace(" "+_2e6+" "," "));if(node.className!=t){node.className=t;}};dojo.toggleClass=function(node,_2e9,_2ea){if(_2ea===undefined){_2ea=!dojo.hasClass(node,_2e9);}dojo[_2ea?"addClass":"removeClass"](node,_2e9);};}if(!dojo._hasResource["dojo._base.NodeList"]){dojo._hasResource["dojo._base.NodeList"]=true;dojo.provide("dojo._base.NodeList");(function(){var d=dojo;var tnl=function(arr){arr.constructor=dojo.NodeList;dojo._mixin(arr,dojo.NodeList.prototype);return arr;};var _2ee=function(func,_2f0){return function(){var _a=arguments;var aa=d._toArray(_a,0,[null]);var s=this.map(function(i){aa[0]=i;return d[func].apply(d,aa);});return (_2f0||((_a.length>1)||!d.isString(_a[0])))?this:s;};};dojo.NodeList=function(){return tnl(Array.apply(null,arguments));};dojo.NodeList._wrap=tnl;dojo.extend(dojo.NodeList,{slice:function(){var a=dojo._toArray(arguments);return tnl(a.slice.apply(this,a));},splice:function(){var a=dojo._toArray(arguments);return tnl(a.splice.apply(this,a));},concat:function(){var a=dojo._toArray(arguments,0,[this]);return tnl(a.concat.apply([],a));},indexOf:function(_2f8,_2f9){return d.indexOf(this,_2f8,_2f9);},lastIndexOf:function(){return d.lastIndexOf.apply(d,d._toArray(arguments,0,[this]));},every:function(_2fa,_2fb){return d.every(this,_2fa,_2fb);},some:function(_2fc,_2fd){return d.some(this,_2fc,_2fd);},map:function(func,obj){return d.map(this,func,obj,d.NodeList);},forEach:function(_300,_301){d.forEach(this,_300,_301);return this;},coords:function(){return d.map(this,d.coords);},attr:_2ee("attr"),style:_2ee("style"),addClass:_2ee("addClass",true),removeClass:_2ee("removeClass",true),toggleClass:_2ee("toggleClass",true),connect:_2ee("connect",true),place:function(_302,_303){var item=d.query(_302)[0];return this.forEach(function(i){d.place(i,item,(_303||"last"));});},orphan:function(_306){var _307=_306?d._filterQueryResult(this,_306):this;_307.forEach(function(item){if(item.parentNode){item.parentNode.removeChild(item);}});return _307;},adopt:function(_309,_30a){var item=this[0];return d.query(_309).forEach(function(ai){d.place(ai,item,_30a||"last");});},query:function(_30d){if(!_30d){return this;}var ret=d.NodeList();this.forEach(function(item){d.query(_30d,item).forEach(function(_310){if(_310!==undefined){ret.push(_310);}});});return ret;},filter:function(_311){var _312=this;var _a=arguments;var r=d.NodeList();var rp=function(t){if(t!==undefined){r.push(t);}};if(d.isString(_311)){_312=d._filterQueryResult(this,_a[0]);if(_a.length==1){return _312;}_a.shift();}d.forEach(d.filter(_312,_a[0],_a[1]),rp);return r;},addContent:function(_317,_318){var ta=d.doc.createElement("span");if(d.isString(_317)){ta.innerHTML=_317;}else{ta.appendChild(_317);}if(_318===undefined){_318="last";}var ct=(_318=="first"||_318=="after")?"lastChild":"firstChild";this.forEach(function(item){var tn=ta.cloneNode(true);while(tn[ct]){d.place(tn[ct],item,_318);}});return this;},empty:function(){return this.forEach("item.innerHTML='';");},instantiate:function(_31d,_31e){var c=d.isFunction(_31d)?_31d:d.getObject(_31d);return this.forEach(function(i){new c(_31e||{},i);});}});d.forEach(["blur","focus","click","keydown","keypress","keyup","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup"],function(evt){var _oe="on"+evt;dojo.NodeList.prototype[_oe]=function(a,b){return this.connect(_oe,a,b);};});})();}if(!dojo._hasResource["dojo._base.query"]){dojo._hasResource["dojo._base.query"]=true;dojo.provide("dojo._base.query");(function(){var d=dojo;var _326=dojo.isIE?"children":"childNodes";var _327=false;var _328=function(_329){if(">~+".indexOf(_329.charAt(_329.length-1))>=0){_329+=" *";}_329+=" ";var ts=function(s,e){return d.trim(_329.slice(s,e));};var _32d=[];var _32e=-1;var _32f=-1;var _330=-1;var _331=-1;var _332=-1;var inId=-1;var _334=-1;var lc="";var cc="";var _337;var x=0;var ql=_329.length;var _33a=null;var _cp=null;var _33c=function(){if(_334>=0){var tv=(_334==x)?null:ts(_334,x).toLowerCase();_33a[(">~+".indexOf(tv)<0)?"tag":"oper"]=tv;_334=-1;}};var _33e=function(){if(inId>=0){_33a.id=ts(inId,x).replace(/\\/g,"");inId=-1;}};var _33f=function(){if(_332>=0){_33a.classes.push(ts(_332+1,x).replace(/\\/g,""));_332=-1;}};var _340=function(){_33e();_33c();_33f();};for(;lc=cc,cc=_329.charAt(x),x<ql;x++){if(lc=="\\"){continue;}if(!_33a){_337=x;_33a={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null};_334=x;}if(_32e>=0){if(cc=="]"){if(!_cp.attr){_cp.attr=ts(_32e+1,x);}else{_cp.matchFor=ts((_330||_32e+1),x);}var cmf=_cp.matchFor;if(cmf){if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){_cp.matchFor=cmf.substring(1,cmf.length-1);}}_33a.attrs.push(_cp);_cp=null;_32e=_330=-1;}else{if(cc=="="){var _342=("|~^$*".indexOf(lc)>=0)?lc:"";_cp.type=_342+cc;_cp.attr=ts(_32e+1,x-_342.length);_330=x+1;}}}else{if(_32f>=0){if(cc==")"){if(_331>=0){_cp.value=ts(_32f+1,x);}_331=_32f=-1;}}else{if(cc=="#"){_340();inId=x+1;}else{if(cc=="."){_340();_332=x;}else{if(cc==":"){_340();_331=x;}else{if(cc=="["){_340();_32e=x;_cp={};}else{if(cc=="("){if(_331>=0){_cp={name:ts(_331+1,x),value:null};_33a.pseudos.push(_cp);}_32f=x;}else{if(cc==" "&&lc!=cc){_340();if(_331>=0){_33a.pseudos.push({name:ts(_331+1,x)});}_33a.hasLoops=(_33a.pseudos.length||_33a.attrs.length||_33a.classes.length);_33a.query=ts(_337,x);_33a.tag=(_33a["oper"])?null:(_33a.tag||"*");_32d.push(_33a);_33a=null;}}}}}}}}}return _32d;};var _343={"*=":function(attr,_345){return "[contains(@"+attr+", '"+_345+"')]";},"^=":function(attr,_347){return "[starts-with(@"+attr+", '"+_347+"')]";},"$=":function(attr,_349){return "[substring(@"+attr+", string-length(@"+attr+")-"+(_349.length-1)+")='"+_349+"']";},"~=":function(attr,_34b){return "[contains(concat(' ',@"+attr+",' '), ' "+_34b+" ')]";},"|=":function(attr,_34d){return "[contains(concat(' ',@"+attr+",' '), ' "+_34d+"-')]";},"=":function(attr,_34f){return "[@"+attr+"='"+_34f+"']";}};var _350=function(_351,_352,_353,_354){d.forEach(_352.attrs,function(attr){var _356;if(attr.type&&_351[attr.type]){_356=_351[attr.type](attr.attr,attr.matchFor);}else{if(attr.attr.length){_356=_353(attr.attr);}}if(_356){_354(_356);}});};var _357=function(_358){var _359=".";var _35a=_328(d.trim(_358));while(_35a.length){var tqp=_35a.shift();var _35c;var _35d="";if(tqp.oper==">"){_35c="/";tqp=_35a.shift();}else{if(tqp.oper=="~"){_35c="/following-sibling::";tqp=_35a.shift();}else{if(tqp.oper=="+"){_35c="/following-sibling::";_35d="[position()=1]";tqp=_35a.shift();}else{_35c="//";}}}_359+=_35c+tqp.tag+_35d;if(tqp.id){_359+="[@id='"+tqp.id+"'][1]";}d.forEach(tqp.classes,function(cn){var cnl=cn.length;var _360=" ";if(cn.charAt(cnl-1)=="*"){_360="";cn=cn.substr(0,cnl-1);}_359+="[contains(concat(' ',@class,' '), ' "+cn+_360+"')]";});_350(_343,tqp,function(_361){return "[@"+_361+"]";},function(_362){_359+=_362;});}return _359;};var _363={};var _364=function(path){if(_363[path]){return _363[path];}var doc=d.doc;var _367=_357(path);var tf=function(_369){var ret=[];var _36b;try{_36b=doc.evaluate(_367,_369,null,XPathResult.ANY_TYPE,null);}catch(e){console.debug("failure in exprssion:",_367,"under:",_369);console.debug(e);}var _36c=_36b.iterateNext();while(_36c){ret.push(_36c);_36c=_36b.iterateNext();}return ret;};return _363[path]=tf;};var _36d={};var _36e={};var _36f=function(_370,_371){if(!_370){return _371;}if(!_371){return _370;}return function(){return _370.apply(window,arguments)&&_371.apply(window,arguments);};};var _372=function(root){var ret=[];var te,x=0,tret=root[_326];while(te=tret[x++]){if(te.nodeType==1){ret.push(te);}}return ret;};var _378=function(root,_37a){var ret=[];var te=root;while(te=te.nextSibling){if(te.nodeType==1){ret.push(te);if(_37a){break;}}}return ret;};var _37d=function(_37e,_37f,_380,idx){var nidx=idx+1;var _383=(_37f.length==nidx);var tqp=_37f[idx];if(tqp.oper){var ecn=(tqp.oper==">")?_372(_37e):_378(_37e,(tqp.oper=="+"));if(!ecn||!ecn.length){return;}nidx++;_383=(_37f.length==nidx);var tf=_387(_37f[idx+1]);for(var x=0,ecnl=ecn.length,te;x<ecnl,te=ecn[x];x++){if(tf(te)){if(_383){_380.push(te);}else{_37d(te,_37f,_380,nidx);}}}}var _38b=_38c(tqp)(_37e);if(_383){while(_38b.length){_380.push(_38b.shift());}}else{while(_38b.length){_37d(_38b.shift(),_37f,_380,nidx);}}};var _38d=function(_38e,_38f){var ret=[];var x=_38e.length-1,te;while(te=_38e[x--]){_37d(te,_38f,ret,0);}return ret;};var _387=function(q){if(_36d[q.query]){return _36d[q.query];}var ff=null;if(q.tag){if(q.tag=="*"){ff=_36f(ff,function(elem){return (elem.nodeType==1);});}else{ff=_36f(ff,function(elem){return ((elem.nodeType==1)&&(q.tag==elem.tagName.toLowerCase()));});}}if(q.id){ff=_36f(ff,function(elem){return ((elem.nodeType==1)&&(elem.id==q.id));});}if(q.hasLoops){ff=_36f(ff,_398(q));}return _36d[q.query]=ff;};var _399=function(node){var pn=node.parentNode;var pnc=pn.childNodes;var nidx=-1;var _39e=pn.firstChild;if(!_39e){return nidx;}var ci=node["__cachedIndex"];var cl=pn["__cachedLength"];if(((typeof cl=="number")&&(cl!=pnc.length))||(typeof ci!="number")){pn["__cachedLength"]=pnc.length;var idx=1;do{if(_39e===node){nidx=idx;}if(_39e.nodeType==1){_39e["__cachedIndex"]=idx;idx++;}_39e=_39e.nextSibling;}while(_39e);}else{nidx=ci;}return nidx;};var _3a2=0;var _3a3="";var _3a4=function(elem,attr){if(attr=="class"){return elem.className||_3a3;}if(attr=="for"){return elem.htmlFor||_3a3;}return elem.getAttribute(attr,2)||_3a3;};var _3a7={"*=":function(attr,_3a9){return function(elem){return (_3a4(elem,attr).indexOf(_3a9)>=0);};},"^=":function(attr,_3ac){return function(elem){return (_3a4(elem,attr).indexOf(_3ac)==0);};},"$=":function(attr,_3af){var tval=" "+_3af;return function(elem){var ea=" "+_3a4(elem,attr);return (ea.lastIndexOf(_3af)==(ea.length-_3af.length));};},"~=":function(attr,_3b4){var tval=" "+_3b4+" ";return function(elem){var ea=" "+_3a4(elem,attr)+" ";return (ea.indexOf(tval)>=0);};},"|=":function(attr,_3b9){var _3ba=" "+_3b9+"-";return function(elem){var ea=" "+(elem.getAttribute(attr,2)||"");return ((ea==_3b9)||(ea.indexOf(_3ba)==0));};},"=":function(attr,_3be){return function(elem){return (_3a4(elem,attr)==_3be);};}};var _3c0={"first-child":function(name,_3c2){return function(elem){if(elem.nodeType!=1){return false;}var fc=elem.previousSibling;while(fc&&(fc.nodeType!=1)){fc=fc.previousSibling;}return (!fc);};},"last-child":function(name,_3c6){return function(elem){if(elem.nodeType!=1){return false;}var nc=elem.nextSibling;while(nc&&(nc.nodeType!=1)){nc=nc.nextSibling;}return (!nc);};},"empty":function(name,_3ca){return function(elem){var cn=elem.childNodes;var cnl=elem.childNodes.length;for(var x=cnl-1;x>=0;x--){var nt=cn[x].nodeType;if((nt==1)||(nt==3)){return false;}}return true;};},"contains":function(name,_3d1){return function(elem){return (elem.innerHTML.indexOf(_3d1)>=0);};},"not":function(name,_3d4){var ntf=_387(_328(_3d4)[0]);return function(elem){return (!ntf(elem));};},"nth-child":function(name,_3d8){var pi=parseInt;if(_3d8=="odd"){return function(elem){return (((_399(elem))%2)==1);};}else{if((_3d8=="2n")||(_3d8=="even")){return function(elem){return ((_399(elem)%2)==0);};}else{if(_3d8.indexOf("0n+")==0){var _3dc=pi(_3d8.substr(3));return function(elem){return (elem.parentNode[_326][_3dc-1]===elem);};}else{if((_3d8.indexOf("n+")>0)&&(_3d8.length>3)){var _3de=_3d8.split("n+",2);var pred=pi(_3de[0]);var idx=pi(_3de[1]);return function(elem){return ((_399(elem)%pred)==idx);};}else{if(_3d8.indexOf("n")==-1){var _3dc=pi(_3d8);return function(elem){return (_399(elem)==_3dc);};}}}}}}};var _3e3=(d.isIE)?function(cond){var clc=cond.toLowerCase();return function(elem){return elem[cond]||elem[clc];};}:function(cond){return function(elem){return (elem&&elem.getAttribute&&elem.hasAttribute(cond));};};var _398=function(_3e9){var _3ea=(_36e[_3e9.query]||_36d[_3e9.query]);if(_3ea){return _3ea;}var ff=null;if(_3e9.id){if(_3e9.tag!="*"){ff=_36f(ff,function(elem){return (elem.tagName.toLowerCase()==_3e9.tag);});}}d.forEach(_3e9.classes,function(_3ed,idx,arr){var _3f0=_3ed.charAt(_3ed.length-1)=="*";if(_3f0){_3ed=_3ed.substr(0,_3ed.length-1);}var re=new RegExp("(?:^|\\s)"+_3ed+(_3f0?".*":"")+"(?:\\s|$)");ff=_36f(ff,function(elem){return re.test(elem.className);});ff.count=idx;});d.forEach(_3e9.pseudos,function(_3f3){if(_3c0[_3f3.name]){ff=_36f(ff,_3c0[_3f3.name](_3f3.name,_3f3.value));}});_350(_3a7,_3e9,_3e3,function(_3f4){ff=_36f(ff,_3f4);});if(!ff){ff=function(){return true;};}return _36e[_3e9.query]=ff;};var _3f5={};var _38c=function(_3f6,root){var fHit=_3f5[_3f6.query];if(fHit){return fHit;}if(_3f6.id&&!_3f6.hasLoops&&!_3f6.tag){return _3f5[_3f6.query]=function(root){return [d.byId(_3f6.id)];};}var _3fa=_398(_3f6);var _3fb;if(_3f6.tag&&_3f6.id&&!_3f6.hasLoops){_3fb=function(root){var te=d.byId(_3f6.id);if(_3fa(te)){return [te];}};}else{var tret;if(!_3f6.hasLoops){_3fb=function(root){var ret=[];var te,x=0,tret=root.getElementsByTagName(_3f6.tag);while(te=tret[x++]){ret.push(te);}return ret;};}else{_3fb=function(root){var ret=[];var te,x=0,tret=root.getElementsByTagName(_3f6.tag);while(te=tret[x++]){if(_3fa(te)){ret.push(te);}}return ret;};}}return _3f5[_3f6.query]=_3fb;};var _407={};var _408={"*":d.isIE?function(root){return root.all;}:function(root){return root.getElementsByTagName("*");},"~":_378,"+":function(root){return _378(root,true);},">":_372};var _40c=function(_40d){var _40e=_328(d.trim(_40d));if(_40e.length==1){var tt=_38c(_40e[0]);tt.nozip=true;return tt;}var sqf=function(root){var _412=_40e.slice(0);var _413;if(_412[0].oper==">"){_413=[root];}else{_413=_38c(_412.shift())(root);}return _38d(_413,_412);};return sqf;};var _414=((document["evaluate"]&&!d.isSafari)?function(_415){var _416=_415.split(" ");if((document["evaluate"])&&(_415.indexOf(":")==-1)&&(_415.indexOf("+")==-1)){if(((_416.length>2)&&(_415.indexOf(">")==-1))||(_416.length>3)||(_415.indexOf("[")>=0)||((1==_416.length)&&(0<=_415.indexOf(".")))){return _364(_415);}}return _40c(_415);}:_40c);var _417=function(_418){if(_408[_418]){return _408[_418];}if(0>_418.indexOf(",")){return _408[_418]=_414(_418);}else{var _419=_418.split(/\s*,\s*/);var tf=function(root){var _41c=0;var ret=[];var tp;while(tp=_419[_41c++]){ret=ret.concat(_414(tp,tp.indexOf(" "))(root));}return ret;};return _408[_418]=tf;}};var _41f=0;var _zip=function(arr){if(arr&&arr.nozip){return d.NodeList._wrap(arr);}var ret=new d.NodeList();if(!arr){return ret;}if(arr[0]){ret.push(arr[0]);}if(arr.length<2){return ret;}_41f++;arr[0]["_zipIdx"]=_41f;for(var x=1,te;te=arr[x];x++){if(arr[x]["_zipIdx"]!=_41f){ret.push(te);}te["_zipIdx"]=_41f;}return ret;};d.query=function(_425,root){if(_425.constructor==d.NodeList){return _425;}if(!d.isString(_425)){return new d.NodeList(_425);}if(d.isString(root)){root=d.byId(root);}return _zip(_417(_425)(root||d.doc));};d.query.pseudos=_3c0;d._filterQueryResult=function(_427,_428){var tnl=new d.NodeList();var ff=(_428)?_387(_328(_428)[0]):function(){return true;};for(var x=0,te;te=_427[x];x++){if(ff(te)){tnl.push(te);}}return tnl;};})();}if(!dojo._hasResource["dojo._base.xhr"]){dojo._hasResource["dojo._base.xhr"]=true;dojo.provide("dojo._base.xhr");(function(){var _d=dojo;function setValue(obj,name,_430){var val=obj[name];if(_d.isString(val)){obj[name]=[val,_430];}else{if(_d.isArray(val)){val.push(_430);}else{obj[name]=_430;}}};dojo.formToObject=function(_432){var ret={};var iq="input:not([type=file]):not([type=submit]):not([type=image]):not([type=reset]):not([type=button]), select, textarea";_d.query(iq,_432).filter(function(node){return !node.disabled&&node.name;}).forEach(function(item){var _in=item.name;var type=(item.type||"").toLowerCase();if(type=="radio"||type=="checkbox"){if(item.checked){setValue(ret,_in,item.value);}}else{if(item.multiple){ret[_in]=[];_d.query("option",item).forEach(function(opt){if(opt.selected){setValue(ret,_in,opt.value);}});}else{setValue(ret,_in,item.value);if(type=="image"){ret[_in+".x"]=ret[_in+".y"]=ret[_in].x=ret[_in].y=0;}}}});return ret;};dojo.objectToQuery=function(map){var enc=encodeURIComponent;var _43c=[];var _43d={};for(var name in map){var _43f=map[name];if(_43f!=_43d[name]){var _440=enc(name)+"=";if(_d.isArray(_43f)){for(var i=0;i<_43f.length;i++){_43c.push(_440+enc(_43f[i]));}}else{_43c.push(_440+enc(_43f));}}}return _43c.join("&");};dojo.formToQuery=function(_442){return _d.objectToQuery(_d.formToObject(_442));};dojo.formToJson=function(_443,_444){return _d.toJson(_d.formToObject(_443),_444);};dojo.queryToObject=function(str){var ret={};var qp=str.split("&");var dec=decodeURIComponent;_d.forEach(qp,function(item){if(item.length){var _44a=item.split("=");var name=dec(_44a.shift());var val=dec(_44a.join("="));if(_d.isString(ret[name])){ret[name]=[ret[name]];}if(_d.isArray(ret[name])){ret[name].push(val);}else{ret[name]=val;}}});return ret;};dojo._blockAsync=false;dojo._contentHandlers={"text":function(xhr){return xhr.responseText;},"json":function(xhr){if(!dojo.config.usePlainJson){console.warn("Consider using mimetype:text/json-comment-filtered"+" to avoid potential security issues with JSON endpoints"+" (use djConfig.usePlainJson=true to turn off this message)");}return (xhr.status==204)?undefined:_d.fromJson(xhr.responseText||null);},"json-comment-filtered":function(xhr){var _450=xhr.responseText;var _451=_450.indexOf("/*");var _452=_450.lastIndexOf("*/");if(_451==-1||_452==-1){throw new Error("JSON was not comment filtered");}return (xhr.status==204)?undefined:_d.fromJson(_450.substring(_451+2,_452));},"javascript":function(xhr){return _d.eval(xhr.responseText);},"xml":function(xhr){var _455=xhr.responseXML;if(_d.isIE&&(!_455||window.location.protocol=="file:")){_d.forEach(["MSXML2","Microsoft","MSXML","MSXML3"],function(_456){try{var dom=new ActiveXObject(_456+".XMLDOM");dom.async=false;dom.loadXML(xhr.responseText);_455=dom;}catch(e){}});}return _455;}};dojo._contentHandlers["json-comment-optional"]=function(xhr){var _459=_d._contentHandlers;try{return _459["json-comment-filtered"](xhr);}catch(e){return _459["json"](xhr);}};dojo._ioSetArgs=function(args,_45b,_45c,_45d){var _45e={args:args,url:args.url};var _45f=null;if(args.form){var form=_d.byId(args.form);var _461=form.getAttributeNode("action");_45e.url=_45e.url||(_461?_461.value:null);_45f=_d.formToObject(form);}var _462=[{}];if(_45f){_462.push(_45f);}if(args.content){_462.push(args.content);}if(args.preventCache){_462.push({"dojo.preventCache":new Date().valueOf()});}_45e.query=_d.objectToQuery(_d.mixin.apply(null,_462));_45e.handleAs=args.handleAs||"text";var d=new _d.Deferred(_45b);d.addCallbacks(_45c,function(_464){return _45d(_464,d);});var ld=args.load;if(ld&&_d.isFunction(ld)){d.addCallback(function(_466){return ld.call(args,_466,_45e);});}var err=args.error;if(err&&_d.isFunction(err)){d.addErrback(function(_468){return err.call(args,_468,_45e);});}var _469=args.handle;if(_469&&_d.isFunction(_469)){d.addBoth(function(_46a){return _469.call(args,_46a,_45e);});}d.ioArgs=_45e;return d;};var _46b=function(dfd){dfd.canceled=true;var xhr=dfd.ioArgs.xhr;var _at=typeof xhr.abort;if(_at=="function"||_at=="unknown"){xhr.abort();}var err=new Error("xhr cancelled");err.dojoType="cancel";return err;};var _470=function(dfd){return _d._contentHandlers[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);};var _472=function(_473,dfd){console.debug(_473);return _473;};var _475=function(args){var dfd=_d._ioSetArgs(args,_46b,_470,_472);dfd.ioArgs.xhr=_d._xhrObj(dfd.ioArgs.args);return dfd;};var _478=null;var _479=[];var _47a=function(){var now=(new Date()).getTime();if(!_d._blockAsync){for(var i=0,tif;i<_479.length&&(tif=_479[i]);i++){var dfd=tif.dfd;try{if(!dfd||dfd.canceled||!tif.validCheck(dfd)){_479.splice(i--,1);}else{if(tif.ioCheck(dfd)){_479.splice(i--,1);tif.resHandle(dfd);}else{if(dfd.startTime){if(dfd.startTime+(dfd.ioArgs.args.timeout||0)<now){_479.splice(i--,1);var err=new Error("timeout exceeded");err.dojoType="timeout";dfd.errback(err);dfd.cancel();}}}}}catch(e){console.debug(e);dfd.errback(new Error("_watchInFlightError!"));}}}if(!_479.length){clearInterval(_478);_478=null;return;}};dojo._ioCancelAll=function(){try{_d.forEach(_479,function(i){i.dfd.cancel();});}catch(e){}};if(_d.isIE){_d.addOnUnload(_d._ioCancelAll);}_d._ioWatch=function(dfd,_482,_483,_484){if(dfd.ioArgs.args.timeout){dfd.startTime=(new Date()).getTime();}_479.push({dfd:dfd,validCheck:_482,ioCheck:_483,resHandle:_484});if(!_478){_478=setInterval(_47a,50);}_47a();};var _485="application/x-www-form-urlencoded";var _486=function(dfd){return dfd.ioArgs.xhr.readyState;};var _488=function(dfd){return 4==dfd.ioArgs.xhr.readyState;};var _48a=function(dfd){var xhr=dfd.ioArgs.xhr;if(_d._isDocumentOk(xhr)){dfd.callback(dfd);}else{var err=new Error("Unable to load "+dfd.ioArgs.url+" status:"+xhr.status);err.status=xhr.status;err.responseText=xhr.responseText;dfd.errback(err);}};var _48e=function(type,dfd){var _491=dfd.ioArgs;var args=_491.args;var xhr=_491.xhr;xhr.open(type,_491.url,args.sync!==true,args.user||undefined,args.password||undefined);if(args.headers){for(var hdr in args.headers){if(hdr.toLowerCase()==="content-type"&&!args.contentType){args.contentType=args.headers[hdr];}else{xhr.setRequestHeader(hdr,args.headers[hdr]);}}}xhr.setRequestHeader("Content-Type",args.contentType||_485);if(!args.headers||!args.headers["X-Requested-With"]){xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");}try{xhr.send(_491.query);}catch(e){dfd.cancel();}_d._ioWatch(dfd,_486,_488,_48a);xhr=null;return dfd;};dojo._ioAddQueryToUrl=function(_495){if(_495.query.length){_495.url+=(_495.url.indexOf("?")==-1?"?":"&")+_495.query;_495.query=null;}};dojo.xhr=function(_496,args,_498){var dfd=_475(args);if(!_498){_d._ioAddQueryToUrl(dfd.ioArgs);}return _48e(_496,dfd);};dojo.xhrGet=function(args){return _d.xhr("GET",args);};dojo.xhrPost=function(args){return _d.xhr("POST",args,true);};dojo.rawXhrPost=function(args){var dfd=_475(args);dfd.ioArgs.query=args.postData;return _48e("POST",dfd);};dojo.xhrPut=function(args){return _d.xhr("PUT",args,true);};dojo.rawXhrPut=function(args){var dfd=_475(args);var _4a1=dfd.ioArgs;if(args.putData){_4a1.query=args.putData;args.putData=null;}return _48e("PUT",dfd);};dojo.xhrDelete=function(args){return _d.xhr("DELETE",args);};})();}if(!dojo._hasResource["dojo._base.fx"]){dojo._hasResource["dojo._base.fx"]=true;dojo.provide("dojo._base.fx");(function(){var d=dojo;dojo._Line=function(_4a4,end){this.start=_4a4;this.end=end;this.getValue=function(n){return ((this.end-this.start)*n)+this.start;};};d.declare("dojo._Animation",null,{constructor:function(args){d.mixin(this,args);if(d.isArray(this.curve)){this.curve=new d._Line(this.curve[0],this.curve[1]);}},duration:350,repeat:0,rate:10,_percent:0,_startRepeatCount:0,_fire:function(evt,args){try{if(this[evt]){this[evt].apply(this,args||[]);}}catch(e){console.error("exception in animation handler for:",evt);console.error(e);}return this;},play:function(_4aa,_4ab){var _t=this;if(_4ab){_t._stopTimer();_t._active=_t._paused=false;_t._percent=0;}else{if(_t._active&&!_t._paused){return _t;}}_t._fire("beforeBegin");var de=_4aa||_t.delay;var _p=dojo.hitch(_t,"_play",_4ab);if(de>0){setTimeout(_p,de);return _t;}_p();return _t;},_play:function(_4af){var _t=this;_t._startTime=new Date().valueOf();if(_t._paused){_t._startTime-=_t.duration*_t._percent;}_t._endTime=_t._startTime+_t.duration;_t._active=true;_t._paused=false;var _4b1=_t.curve.getValue(_t._percent);if(!_t._percent){if(!_t._startRepeatCount){_t._startRepeatCount=_t.repeat;}_t._fire("onBegin",[_4b1]);}_t._fire("onPlay",[_4b1]);_t._cycle();return _t;},pause:function(){this._stopTimer();if(!this._active){return this;}this._paused=true;this._fire("onPause",[this.curve.getValue(this._percent)]);return this;},gotoPercent:function(_4b2,_4b3){this._stopTimer();this._active=this._paused=true;this._percent=_4b2;if(_4b3){this.play();}return this;},stop:function(_4b4){if(!this._timer){return this;}this._stopTimer();if(_4b4){this._percent=1;}this._fire("onStop",[this.curve.getValue(this._percent)]);this._active=this._paused=false;return this;},status:function(){if(this._active){return this._paused?"paused":"playing";}return "stopped";},_cycle:function(){var _t=this;if(_t._active){var curr=new Date().valueOf();var step=(curr-_t._startTime)/(_t._endTime-_t._startTime);if(step>=1){step=1;}_t._percent=step;if(_t.easing){step=_t.easing(step);}_t._fire("onAnimate",[_t.curve.getValue(step)]);if(_t._percent<1){_t._startTimer();}else{_t._active=false;if(_t.repeat>0){_t.repeat--;_t.play(null,true);}else{if(_t.repeat==-1){_t.play(null,true);}else{if(_t._startRepeatCount){_t.repeat=_t._startRepeatCount;_t._startRepeatCount=0;}}}_t._percent=0;_t._fire("onEnd");_t._stopTimer();}}return _t;}});var ctr=0;var _4b9=[];var _4ba={run:function(){}};var _4bb=null;dojo._Animation.prototype._startTimer=function(){if(!this._timer){this._timer=d.connect(_4ba,"run",this,"_cycle");ctr++;}if(!_4bb){_4bb=setInterval(d.hitch(_4ba,"run"),this.rate);}};dojo._Animation.prototype._stopTimer=function(){if(this._timer){d.disconnect(this._timer);this._timer=null;ctr--;}if(ctr<=0){clearInterval(_4bb);_4bb=null;ctr=0;}};var _4bc=(d.isIE)?function(node){var ns=node.style;if(!ns.zoom.length&&d.style(node,"zoom")=="normal"){ns.zoom="1";}if(!ns.width.length&&d.style(node,"width")=="auto"){ns.width="auto";}}:function(){};dojo._fade=function(args){args.node=d.byId(args.node);var _4c0=d.mixin({properties:{}},args);var _4c1=(_4c0.properties.opacity={});_4c1.start=!("start" in _4c0)?function(){return Number(d.style(_4c0.node,"opacity"));}:_4c0.start;_4c1.end=_4c0.end;var anim=d.animateProperty(_4c0);d.connect(anim,"beforeBegin",d.partial(_4bc,_4c0.node));return anim;};dojo.fadeIn=function(args){return d._fade(d.mixin({end:1},args));};dojo.fadeOut=function(args){return d._fade(d.mixin({end:0},args));};dojo._defaultEasing=function(n){return 0.5+((Math.sin((n+1.5)*Math.PI))/2);};var _4c6=function(_4c7){this._properties=_4c7;for(var p in _4c7){var prop=_4c7[p];if(prop.start instanceof d.Color){prop.tempColor=new d.Color();}}this.getValue=function(r){var ret={};for(var p in this._properties){var prop=this._properties[p];var _4ce=prop.start;if(_4ce instanceof d.Color){ret[p]=d.blendColors(_4ce,prop.end,r,prop.tempColor).toCss();}else{if(!d.isArray(_4ce)){ret[p]=((prop.end-_4ce)*r)+_4ce+(p!="opacity"?prop.units||"px":"");}}}return ret;};};dojo.animateProperty=function(args){args.node=d.byId(args.node);if(!args.easing){args.easing=d._defaultEasing;}var anim=new d._Animation(args);d.connect(anim,"beforeBegin",anim,function(){var pm={};for(var p in this.properties){if(p=="width"||p=="height"){this.node.display="block";}var prop=this.properties[p];prop=pm[p]=d.mixin({},(d.isObject(prop)?prop:{end:prop}));if(d.isFunction(prop.start)){prop.start=prop.start();}if(d.isFunction(prop.end)){prop.end=prop.end();}var _4d4=(p.toLowerCase().indexOf("color")>=0);function getStyle(node,p){var v=({height:node.offsetHeight,width:node.offsetWidth})[p];if(v!==undefined){return v;}v=d.style(node,p);return (p=="opacity")?Number(v):(_4d4?v:parseFloat(v));};if(!("end" in prop)){prop.end=getStyle(this.node,p);}else{if(!("start" in prop)){prop.start=getStyle(this.node,p);}}if(_4d4){prop.start=new d.Color(prop.start);prop.end=new d.Color(prop.end);}else{prop.start=(p=="opacity")?Number(prop.start):parseFloat(prop.start);}}this.curve=new _4c6(pm);});d.connect(anim,"onAnimate",anim,function(_4d8){for(var s in _4d8){d.style(this.node,s,_4d8[s]);}});return anim;};dojo.anim=function(node,_4db,_4dc,_4dd,_4de,_4df){return d.animateProperty({node:node,duration:_4dc||d._Animation.prototype.duration,properties:_4db,easing:_4dd,onEnd:_4de}).play(_4df||0);};})();}if(!dojo._hasResource["dojo._base.browser"]){dojo._hasResource["dojo._base.browser"]=true;dojo.provide("dojo._base.browser");if(dojo.config.require){dojo.forEach(dojo.config.require,"dojo['require'](item);");}}if(!dojo._hasResource["dojo.i18n"]){dojo._hasResource["dojo.i18n"]=true;dojo.provide("dojo.i18n");dojo.i18n.getLocalization=function(_4e0,_4e1,_4e2){_4e2=dojo.i18n.normalizeLocale(_4e2);var _4e3=_4e2.split("-");var _4e4=[_4e0,"nls",_4e1].join(".");var _4e5=dojo._loadedModules[_4e4];if(_4e5){var _4e6;for(var i=_4e3.length;i>0;i--){var loc=_4e3.slice(0,i).join("_");if(_4e5[loc]){_4e6=_4e5[loc];break;}}if(!_4e6){_4e6=_4e5.ROOT;}if(_4e6){var _4e9=function(){};_4e9.prototype=_4e6;return new _4e9();}}throw new Error("Bundle not found: "+_4e1+" in "+_4e0+" , locale="+_4e2);};dojo.i18n.normalizeLocale=function(_4ea){var _4eb=_4ea?_4ea.toLowerCase():dojo.locale;if(_4eb=="root"){_4eb="ROOT";}return _4eb;};dojo.i18n._requireLocalization=function(_4ec,_4ed,_4ee,_4ef){var _4f0=dojo.i18n.normalizeLocale(_4ee);var _4f1=[_4ec,"nls",_4ed].join(".");var _4f2="";if(_4ef){var _4f3=_4ef.split(",");for(var i=0;i<_4f3.length;i++){if(_4f0.indexOf(_4f3[i])==0){if(_4f3[i].length>_4f2.length){_4f2=_4f3[i];}}}if(!_4f2){_4f2="ROOT";}}var _4f5=_4ef?_4f2:_4f0;var _4f6=dojo._loadedModules[_4f1];var _4f7=null;if(_4f6){if(dojo.config.localizationComplete&&_4f6._built){return;}var _4f8=_4f5.replace(/-/g,"_");var _4f9=_4f1+"."+_4f8;_4f7=dojo._loadedModules[_4f9];}if(!_4f7){_4f6=dojo["provide"](_4f1);var syms=dojo._getModuleSymbols(_4ec);var _4fb=syms.concat("nls").join("/");var _4fc;dojo.i18n._searchLocalePath(_4f5,_4ef,function(loc){var _4fe=loc.replace(/-/g,"_");var _4ff=_4f1+"."+_4fe;var _500=false;if(!dojo._loadedModules[_4ff]){dojo["provide"](_4ff);var _501=[_4fb];if(loc!="ROOT"){_501.push(loc);}_501.push(_4ed);var _502=_501.join("/")+".js";_500=dojo._loadPath(_502,null,function(hash){var _504=function(){};_504.prototype=_4fc;_4f6[_4fe]=new _504();for(var j in hash){_4f6[_4fe][j]=hash[j];}});}else{_500=true;}if(_500&&_4f6[_4fe]){_4fc=_4f6[_4fe];}else{_4f6[_4fe]=_4fc;}if(_4ef){return true;}});}if(_4ef&&_4f0!=_4f2){_4f6[_4f0.replace(/-/g,"_")]=_4f6[_4f2.replace(/-/g,"_")];}};(function(){var _506=dojo.config.extraLocale;if(_506){if(!_506 instanceof Array){_506=[_506];}var req=dojo.i18n._requireLocalization;dojo.i18n._requireLocalization=function(m,b,_50a,_50b){req(m,b,_50a,_50b);if(_50a){return;}for(var i=0;i<_506.length;i++){req(m,b,_506[i],_50b);}};}})();dojo.i18n._searchLocalePath=function(_50d,down,_50f){_50d=dojo.i18n.normalizeLocale(_50d);var _510=_50d.split("-");var _511=[];for(var i=_510.length;i>0;i--){_511.push(_510.slice(0,i).join("-"));}_511.push(false);if(down){_511.reverse();}for(var j=_511.length-1;j>=0;j--){var loc=_511[j]||"ROOT";var stop=_50f(loc);if(stop){break;}}};dojo.i18n._preloadLocalizations=function(_516,_517){function preload(_518){_518=dojo.i18n.normalizeLocale(_518);dojo.i18n._searchLocalePath(_518,true,function(loc){for(var i=0;i<_517.length;i++){if(_517[i]==loc){dojo["require"](_516+"_"+loc);return true;}}return false;});};preload();var _51b=dojo.config.extraLocale||[];for(var i=0;i<_51b.length;i++){preload(_51b[i]);}};}if(!dojo._hasResource["dojo.string"]){dojo._hasResource["dojo.string"]=true;dojo.provide("dojo.string");dojo.string.pad=function(text,size,ch,end){var out=String(text);if(!ch){ch="0";}while(out.length<size){if(end){out+=ch;}else{out=ch+out;}}return out;};dojo.string.substitute=function(_522,map,_524,_525){return _522.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g,function(_526,key,_528){var _529=dojo.getObject(key,false,map);if(_528){_529=dojo.getObject(_528,false,_525)(_529);}if(_524){_529=_524(_529,key);}return _529.toString();});};dojo.string.trim=function(str){str=str.replace(/^\s+/,"");for(var i=str.length-1;i>0;i--){if(/\S/.test(str.charAt(i))){str=str.substring(0,i+1);break;}}return str;};}if(!dojo._hasResource["dojo.regexp"]){dojo._hasResource["dojo.regexp"]=true;dojo.provide("dojo.regexp");dojo.regexp.escapeString=function(str,_52d){return str.replace(/([\.$?*!=:|{}\(\)\[\]\\\/^])/g,function(ch){if(_52d&&_52d.indexOf(ch)!=-1){return ch;}return "\\"+ch;});};dojo.regexp.buildGroupRE=function(arr,re,_531){if(!(arr instanceof Array)){return re(arr);}var b=[];for(var i=0;i<arr.length;i++){b.push(re(arr[i]));}return dojo.regexp.group(b.join("|"),_531);};dojo.regexp.group=function(_534,_535){return "("+(_535?"?:":"")+_534+")";};}if(!dojo._hasResource["dojo.number"]){dojo._hasResource["dojo.number"]=true;dojo.provide("dojo.number");dojo.number.format=function(_536,_537){_537=dojo.mixin({},_537||{});var _538=dojo.i18n.normalizeLocale(_537.locale);var _539=dojo.i18n.getLocalization("dojo.cldr","number",_538);_537.customs=_539;var _53a=_537.pattern||_539[(_537.type||"decimal")+"Format"];if(isNaN(_536)){return null;}return dojo.number._applyPattern(_536,_53a,_537);};dojo.number._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;dojo.number._applyPattern=function(_53b,_53c,_53d){_53d=_53d||{};var _53e=_53d.customs.group;var _53f=_53d.customs.decimal;var _540=_53c.split(";");var _541=_540[0];_53c=_540[(_53b<0)?1:0]||("-"+_541);if(_53c.indexOf("%")!=-1){_53b*=100;}else{if(_53c.indexOf("‰")!=-1){_53b*=1000;}else{if(_53c.indexOf("¤")!=-1){_53e=_53d.customs.currencyGroup||_53e;_53f=_53d.customs.currencyDecimal||_53f;_53c=_53c.replace(/\u00a4{1,3}/,function(_542){var prop=["symbol","currency","displayName"][_542.length-1];return _53d[prop]||_53d.currency||"";});}else{if(_53c.indexOf("E")!=-1){throw new Error("exponential notation not supported");}}}}var _544=dojo.number._numberPatternRE;var _545=_541.match(_544);if(!_545){throw new Error("unable to find a number expression in pattern: "+_53c);}return _53c.replace(_544,dojo.number._formatAbsolute(_53b,_545[0],{decimal:_53f,group:_53e,places:_53d.places}));};dojo.number.round=function(_546,_547,_548){var _549=String(_546).split(".");var _54a=(_549[1]&&_549[1].length)||0;if(_54a>_547){var _54b=Math.pow(10,_547);if(_548>0){_54b*=10/_548;_547++;}_546=Math.round(_546*_54b)/_54b;_549=String(_546).split(".");_54a=(_549[1]&&_549[1].length)||0;if(_54a>_547){_549[1]=_549[1].substr(0,_547);_546=Number(_549.join("."));}}return _546;};dojo.number._formatAbsolute=function(_54c,_54d,_54e){_54e=_54e||{};if(_54e.places===true){_54e.places=0;}if(_54e.places===Infinity){_54e.places=6;}var _54f=_54d.split(".");var _550=(_54e.places>=0)?_54e.places:(_54f[1]&&_54f[1].length)||0;if(!(_54e.round<0)){_54c=dojo.number.round(_54c,_550,_54e.round);}var _551=String(Math.abs(_54c)).split(".");var _552=_551[1]||"";if(_54e.places){_551[1]=dojo.string.pad(_552.substr(0,_54e.places),_54e.places,"0",true);}else{if(_54f[1]&&_54e.places!==0){var pad=_54f[1].lastIndexOf("0")+1;if(pad>_552.length){_551[1]=dojo.string.pad(_552,pad,"0",true);}var _554=_54f[1].length;if(_554<_552.length){_551[1]=_552.substr(0,_554);}}else{if(_551[1]){_551.pop();}}}var _555=_54f[0].replace(",","");pad=_555.indexOf("0");if(pad!=-1){pad=_555.length-pad;if(pad>_551[0].length){_551[0]=dojo.string.pad(_551[0],pad);}if(_555.indexOf("#")==-1){_551[0]=_551[0].substr(_551[0].length-pad);}}var _556=_54f[0].lastIndexOf(",");var _557,_558;if(_556!=-1){_557=_54f[0].length-_556-1;var _559=_54f[0].substr(0,_556);_556=_559.lastIndexOf(",");if(_556!=-1){_558=_559.length-_556-1;}}var _55a=[];for(var _55b=_551[0];_55b;){var off=_55b.length-_557;_55a.push((off>0)?_55b.substr(off):_55b);_55b=(off>0)?_55b.slice(0,off):"";if(_558){_557=_558;delete _558;}}_551[0]=_55a.reverse().join(_54e.group||",");return _551.join(_54e.decimal||".");};dojo.number.regexp=function(_55d){return dojo.number._parseInfo(_55d).regexp;};dojo.number._parseInfo=function(_55e){_55e=_55e||{};var _55f=dojo.i18n.normalizeLocale(_55e.locale);var _560=dojo.i18n.getLocalization("dojo.cldr","number",_55f);var _561=_55e.pattern||_560[(_55e.type||"decimal")+"Format"];var _562=_560.group;var _563=_560.decimal;var _564=1;if(_561.indexOf("%")!=-1){_564/=100;}else{if(_561.indexOf("‰")!=-1){_564/=1000;}else{var _565=_561.indexOf("¤")!=-1;if(_565){_562=_560.currencyGroup||_562;_563=_560.currencyDecimal||_563;}}}var _566=_561.split(";");if(_566.length==1){_566.push("-"+_566[0]);}var re=dojo.regexp.buildGroupRE(_566,function(_568){_568="(?:"+dojo.regexp.escapeString(_568,".")+")";return _568.replace(dojo.number._numberPatternRE,function(_569){var _56a={signed:false,separator:_55e.strict?_562:[_562,""],fractional:_55e.fractional,decimal:_563,exponent:false};var _56b=_569.split(".");var _56c=_55e.places;if(_56b.length==1||_56c===0){_56a.fractional=false;}else{if(_56c===undefined){_56c=_56b[1].lastIndexOf("0")+1;}if(_56c&&_55e.fractional==undefined){_56a.fractional=true;}if(!_55e.places&&(_56c<_56b[1].length)){_56c+=","+_56b[1].length;}_56a.places=_56c;}var _56d=_56b[0].split(",");if(_56d.length>1){_56a.groupSize=_56d.pop().length;if(_56d.length>1){_56a.groupSize2=_56d.pop().length;}}return "("+dojo.number._realNumberRegexp(_56a)+")";});},true);if(_565){re=re.replace(/(\s*)(\u00a4{1,3})(\s*)/g,function(_56e,_56f,_570,_571){var prop=["symbol","currency","displayName"][_570.length-1];var _573=dojo.regexp.escapeString(_55e[prop]||_55e.currency||"");_56f=_56f?"\\s":"";_571=_571?"\\s":"";if(!_55e.strict){if(_56f){_56f+="*";}if(_571){_571+="*";}return "(?:"+_56f+_573+_571+")?";}return _56f+_573+_571;});}return {regexp:re.replace(/[\xa0 ]/g,"[\\s\\xa0]"),group:_562,decimal:_563,factor:_564};};dojo.number.parse=function(_574,_575){var info=dojo.number._parseInfo(_575);var _577=(new RegExp("^"+info.regexp+"$")).exec(_574);if(!_577){return NaN;}var _578=_577[1];if(!_577[1]){if(!_577[2]){return NaN;}_578=_577[2];info.factor*=-1;}_578=_578.replace(new RegExp("["+info.group+"\\s\\xa0"+"]","g"),"").replace(info.decimal,".");return Number(_578)*info.factor;};dojo.number._realNumberRegexp=function(_579){_579=_579||{};if(!("places" in _579)){_579.places=Infinity;}if(typeof _579.decimal!="string"){_579.decimal=".";}if(!("fractional" in _579)||/^0/.test(_579.places)){_579.fractional=[true,false];}if(!("exponent" in _579)){_579.exponent=[true,false];}if(!("eSigned" in _579)){_579.eSigned=[true,false];}var _57a=dojo.number._integerRegexp(_579);var _57b=dojo.regexp.buildGroupRE(_579.fractional,function(q){var re="";if(q&&(_579.places!==0)){re="\\"+_579.decimal;if(_579.places==Infinity){re="(?:"+re+"\\d+)?";}else{re+="\\d{"+_579.places+"}";}}return re;},true);var _57e=dojo.regexp.buildGroupRE(_579.exponent,function(q){if(q){return "([eE]"+dojo.number._integerRegexp({signed:_579.eSigned})+")";}return "";});var _580=_57a+_57b;if(_57b){_580="(?:(?:"+_580+")|(?:"+_57b+"))";}return _580+_57e;};dojo.number._integerRegexp=function(_581){_581=_581||{};if(!("signed" in _581)){_581.signed=[true,false];}if(!("separator" in _581)){_581.separator="";}else{if(!("groupSize" in _581)){_581.groupSize=3;}}var _582=dojo.regexp.buildGroupRE(_581.signed,function(q){return q?"[-+]":"";},true);var _584=dojo.regexp.buildGroupRE(_581.separator,function(sep){if(!sep){return "(?:0|[1-9]\\d*)";}sep=dojo.regexp.escapeString(sep);if(sep==" "){sep="\\s";}else{if(sep==" "){sep="\\s\\xa0";}}var grp=_581.groupSize,grp2=_581.groupSize2;if(grp2){var _588="(?:0|[1-9]\\d{0,"+(grp2-1)+"}(?:["+sep+"]\\d{"+grp2+"})*["+sep+"]\\d{"+grp+"})";return ((grp-grp2)>0)?"(?:"+_588+"|(?:0|[1-9]\\d{0,"+(grp-1)+"}))":_588;}return "(?:0|[1-9]\\d{0,"+(grp-1)+"}(?:["+sep+"]\\d{"+grp+"})*)";},true);return _582+_584;};}if(!dojo._hasResource["dojo.date"]){dojo._hasResource["dojo.date"]=true;dojo.provide("dojo.date");dojo.date.getDaysInMonth=function(_589){var _58a=_589.getMonth();var days=[31,28,31,30,31,30,31,31,30,31,30,31];if(_58a==1&&dojo.date.isLeapYear(_589)){return 29;}return days[_58a];};dojo.date.isLeapYear=function(_58c){var year=_58c.getFullYear();return !(year%400)||(!(year%4)&&!!(year%100));};dojo.date.getTimezoneName=function(_58e){var str=_58e.toString();var tz="";var _591;var pos=str.indexOf("(");if(pos>-1){tz=str.substring(++pos,str.indexOf(")"));}else{var pat=/([A-Z\/]+) \d{4}$/;if((_591=str.match(pat))){tz=_591[1];}else{str=_58e.toLocaleString();pat=/ ([A-Z\/]+)$/;if((_591=str.match(pat))){tz=_591[1];}}}return (tz=="AM"||tz=="PM")?"":tz;};dojo.date.compare=function(_594,_595,_596){_594=new Date(Number(_594));_595=new Date(Number(_595||new Date()));if(_596!=="undefined"){if(_596=="date"){_594.setHours(0,0,0,0);_595.setHours(0,0,0,0);}else{if(_596=="time"){_594.setFullYear(0,0,0);_595.setFullYear(0,0,0);}}}if(_594>_595){return 1;}if(_594<_595){return -1;}return 0;};dojo.date.add=function(date,_598,_599){var sum=new Date(Number(date));var _59b=false;var _59c="Date";switch(_598){case "day":break;case "weekday":var days,_59e;var mod=_599%5;if(!mod){days=(_599>0)?5:-5;_59e=(_599>0)?((_599-5)/5):((_599+5)/5);}else{days=mod;_59e=parseInt(_599/5);}var strt=date.getDay();var adj=0;if(strt==6&&_599>0){adj=1;}else{if(strt==0&&_599<0){adj=-1;}}var trgt=strt+days;if(trgt==0||trgt==6){adj=(_599>0)?2:-2;}_599=(7*_59e)+days+adj;break;case "year":_59c="FullYear";_59b=true;break;case "week":_599*=7;break;case "quarter":_599*=3;case "month":_59b=true;_59c="Month";break;case "hour":case "minute":case "second":case "millisecond":_59c="UTC"+_598.charAt(0).toUpperCase()+_598.substring(1)+"s";}if(_59c){sum["set"+_59c](sum["get"+_59c]()+_599);}if(_59b&&(sum.getDate()<date.getDate())){sum.setDate(0);}return sum;};dojo.date.difference=function(_5a3,_5a4,_5a5){_5a4=_5a4||new Date();_5a5=_5a5||"day";var _5a6=_5a4.getFullYear()-_5a3.getFullYear();var _5a7=1;switch(_5a5){case "quarter":var m1=_5a3.getMonth();var m2=_5a4.getMonth();var q1=Math.floor(m1/3)+1;var q2=Math.floor(m2/3)+1;q2+=(_5a6*4);_5a7=q2-q1;break;case "weekday":var days=Math.round(dojo.date.difference(_5a3,_5a4,"day"));var _5ad=parseInt(dojo.date.difference(_5a3,_5a4,"week"));var mod=days%7;if(mod==0){days=_5ad*5;}else{var adj=0;var aDay=_5a3.getDay();var bDay=_5a4.getDay();_5ad=parseInt(days/7);mod=days%7;var _5b2=new Date(_5a3);_5b2.setDate(_5b2.getDate()+(_5ad*7));var _5b3=_5b2.getDay();if(days>0){switch(true){case aDay==6:adj=-1;break;case aDay==0:adj=0;break;case bDay==6:adj=-1;break;case bDay==0:adj=-2;break;case (_5b3+mod)>5:adj=-2;}}else{if(days<0){switch(true){case aDay==6:adj=0;break;case aDay==0:adj=1;break;case bDay==6:adj=2;break;case bDay==0:adj=1;break;case (_5b3+mod)<0:adj=2;}}}days+=adj;days-=(_5ad*2);}_5a7=days;break;case "year":_5a7=_5a6;break;case "month":_5a7=(_5a4.getMonth()-_5a3.getMonth())+(_5a6*12);break;case "week":_5a7=parseInt(dojo.date.difference(_5a3,_5a4,"day")/7);break;case "day":_5a7/=24;case "hour":_5a7/=60;case "minute":_5a7/=60;case "second":_5a7/=1000;case "millisecond":_5a7*=_5a4.getTime()-_5a3.getTime();}return Math.round(_5a7);};}if(!dojo._hasResource["dojo.cldr.supplemental"]){dojo._hasResource["dojo.cldr.supplemental"]=true;dojo.provide("dojo.cldr.supplemental");dojo.cldr.supplemental.getFirstDayOfWeek=function(_5b4){var _5b5={mv:5,ae:6,af:6,bh:6,dj:6,dz:6,eg:6,er:6,et:6,iq:6,ir:6,jo:6,ke:6,kw:6,lb:6,ly:6,ma:6,om:6,qa:6,sa:6,sd:6,so:6,tn:6,ye:6,as:0,au:0,az:0,bw:0,ca:0,cn:0,fo:0,ge:0,gl:0,gu:0,hk:0,ie:0,il:0,is:0,jm:0,jp:0,kg:0,kr:0,la:0,mh:0,mo:0,mp:0,mt:0,nz:0,ph:0,pk:0,sg:0,th:0,tt:0,tw:0,um:0,us:0,uz:0,vi:0,za:0,zw:0,et:0,mw:0,ng:0,tj:0,sy:4};var _5b6=dojo.cldr.supplemental._region(_5b4);var dow=_5b5[_5b6];return (dow===undefined)?1:dow;};dojo.cldr.supplemental._region=function(_5b8){_5b8=dojo.i18n.normalizeLocale(_5b8);var tags=_5b8.split("-");var _5ba=tags[1];if(!_5ba){_5ba={de:"de",en:"us",es:"es",fi:"fi",fr:"fr",he:"il",hu:"hu",it:"it",ja:"jp",ko:"kr",nl:"nl",pt:"br",sv:"se",zh:"cn"}[tags[0]];}else{if(_5ba.length==4){_5ba=tags[2];}}return _5ba;};dojo.cldr.supplemental.getWeekend=function(_5bb){var _5bc={eg:5,il:5,sy:5,"in":0,ae:4,bh:4,dz:4,iq:4,jo:4,kw:4,lb:4,ly:4,ma:4,om:4,qa:4,sa:4,sd:4,tn:4,ye:4};var _5bd={ae:5,bh:5,dz:5,iq:5,jo:5,kw:5,lb:5,ly:5,ma:5,om:5,qa:5,sa:5,sd:5,tn:5,ye:5,af:5,ir:5,eg:6,il:6,sy:6};var _5be=dojo.cldr.supplemental._region(_5bb);var _5bf=_5bc[_5be];var end=_5bd[_5be];if(_5bf===undefined){_5bf=6;}if(end===undefined){end=0;}return {start:_5bf,end:end};};}if(!dojo._hasResource["dojo.date.locale"]){dojo._hasResource["dojo.date.locale"]=true;dojo.provide("dojo.date.locale");(function(){function formatPattern(_5c1,_5c2,_5c3,_5c4){return _5c4.replace(/([a-z])\1*/ig,function(_5c5){var s,pad;var c=_5c5.charAt(0);var l=_5c5.length;var _5ca=["abbr","wide","narrow"];switch(c){case "G":s=_5c2[(l<4)?"eraAbbr":"eraNames"][_5c1.getFullYear()<0?0:1];break;case "y":s=_5c1.getFullYear();switch(l){case 1:break;case 2:if(!_5c3){s=String(s);s=s.substr(s.length-2);break;}default:pad=true;}break;case "Q":case "q":s=Math.ceil((_5c1.getMonth()+1)/3);pad=true;break;case "M":case "L":var m=_5c1.getMonth();var _5cc;switch(l){case 1:case 2:s=m+1;pad=true;break;case 3:case 4:case 5:_5cc=_5ca[l-3];break;}if(_5cc){var _5cd=(c=="L")?"standalone":"format";var _5ce=["months",_5cd,_5cc].join("-");s=_5c2[_5ce][m];}break;case "w":var _5cf=0;s=dojo.date.locale._getWeekOfYear(_5c1,_5cf);pad=true;break;case "d":s=_5c1.getDate();pad=true;break;case "D":s=dojo.date.locale._getDayOfYear(_5c1);pad=true;break;case "E":case "e":case "c":var d=_5c1.getDay();var _5d1;switch(l){case 1:case 2:if(c=="e"){var _5d2=dojo.cldr.supplemental.getFirstDayOfWeek(options.locale);d=(d-_5d2+7)%7;}if(c!="c"){s=d+1;pad=true;break;}case 3:case 4:case 5:_5d1=_5ca[l-3];break;}if(_5d1){var _5d3=(c=="c")?"standalone":"format";var _5d4=["days",_5d3,_5d1].join("-");s=_5c2[_5d4][d];}break;case "a":var _5d5=(_5c1.getHours()<12)?"am":"pm";s=_5c2[_5d5];break;case "h":case "H":case "K":case "k":var h=_5c1.getHours();switch(c){case "h":s=(h%12)||12;break;case "H":s=h;break;case "K":s=(h%12);break;case "k":s=h||24;break;}pad=true;break;case "m":s=_5c1.getMinutes();pad=true;break;case "s":s=_5c1.getSeconds();pad=true;break;case "S":s=Math.round(_5c1.getMilliseconds()*Math.pow(10,l-3));pad=true;break;case "v":case "z":s=dojo.date.getTimezoneName(_5c1);if(s){break;}l=4;case "Z":var _5d7=_5c1.getTimezoneOffset();var tz=[(_5d7<=0?"+":"-"),dojo.string.pad(Math.floor(Math.abs(_5d7)/60),2),dojo.string.pad(Math.abs(_5d7)%60,2)];if(l==4){tz.splice(0,0,"GMT");tz.splice(3,0,":");}s=tz.join("");break;default:throw new Error("dojo.date.locale.format: invalid pattern char: "+_5c4);}if(pad){s=dojo.string.pad(s,l);}return s;});};dojo.date.locale.format=function(_5d9,_5da){_5da=_5da||{};var _5db=dojo.i18n.normalizeLocale(_5da.locale);var _5dc=_5da.formatLength||"short";var _5dd=dojo.date.locale._getGregorianBundle(_5db);var str=[];var _5df=dojo.hitch(this,formatPattern,_5d9,_5dd,_5da.fullYear);if(_5da.selector=="year"){var year=_5d9.getFullYear();if(_5db.match(/^zh|^ja/)){year+="年";}return year;}if(_5da.selector!="time"){var _5e1=_5da.datePattern||_5dd["dateFormat-"+_5dc];if(_5e1){str.push(_processPattern(_5e1,_5df));}}if(_5da.selector!="date"){var _5e2=_5da.timePattern||_5dd["timeFormat-"+_5dc];if(_5e2){str.push(_processPattern(_5e2,_5df));}}var _5e3=str.join(" ");return _5e3;};dojo.date.locale.regexp=function(_5e4){return dojo.date.locale._parseInfo(_5e4).regexp;};dojo.date.locale._parseInfo=function(_5e5){_5e5=_5e5||{};var _5e6=dojo.i18n.normalizeLocale(_5e5.locale);var _5e7=dojo.date.locale._getGregorianBundle(_5e6);var _5e8=_5e5.formatLength||"short";var _5e9=_5e5.datePattern||_5e7["dateFormat-"+_5e8];var _5ea=_5e5.timePattern||_5e7["timeFormat-"+_5e8];var _5eb;if(_5e5.selector=="date"){_5eb=_5e9;}else{if(_5e5.selector=="time"){_5eb=_5ea;}else{_5eb=_5e9+" "+_5ea;}}var _5ec=[];var re=_processPattern(_5eb,dojo.hitch(this,_buildDateTimeRE,_5ec,_5e7,_5e5));return {regexp:re,tokens:_5ec,bundle:_5e7};};dojo.date.locale.parse=function(_5ee,_5ef){var info=dojo.date.locale._parseInfo(_5ef);var _5f1=info.tokens,_5f2=info.bundle;var re=new RegExp("^"+info.regexp+"$");var _5f4=re.exec(_5ee);if(!_5f4){return null;}var _5f5=["abbr","wide","narrow"];var _5f6=[1970,0,1,0,0,0,0];var amPm="";var _5f8=dojo.every(_5f4,function(v,i){if(!i){return true;}var _5fb=_5f1[i-1];var l=_5fb.length;switch(_5fb.charAt(0)){case "y":if(l!=2&&_5ef.strict){_5f6[0]=v;}else{if(v<100){v=Number(v);var year=""+new Date().getFullYear();var _5fe=year.substring(0,2)*100;var _5ff=Math.min(Number(year.substring(2,4))+20,99);var num=(v<_5ff)?_5fe+v:_5fe-100+v;_5f6[0]=num;}else{if(_5ef.strict){return false;}_5f6[0]=v;}}break;case "M":if(l>2){var _601=_5f2["months-format-"+_5f5[l-3]].concat();if(!_5ef.strict){v=v.replace(".","").toLowerCase();_601=dojo.map(_601,function(s){return s.replace(".","").toLowerCase();});}v=dojo.indexOf(_601,v);if(v==-1){return false;}}else{v--;}_5f6[1]=v;break;case "E":case "e":var days=_5f2["days-format-"+_5f5[l-3]].concat();if(!_5ef.strict){v=v.toLowerCase();days=dojo.map(days,function(d){return d.toLowerCase();});}v=dojo.indexOf(days,v);if(v==-1){return false;}break;case "D":_5f6[1]=0;case "d":_5f6[2]=v;break;case "a":var am=_5ef.am||_5f2.am;var pm=_5ef.pm||_5f2.pm;if(!_5ef.strict){var _607=/\./g;v=v.replace(_607,"").toLowerCase();am=am.replace(_607,"").toLowerCase();pm=pm.replace(_607,"").toLowerCase();}if(_5ef.strict&&v!=am&&v!=pm){return false;}amPm=(v==pm)?"p":(v==am)?"a":"";break;case "K":if(v==24){v=0;}case "h":case "H":case "k":if(v>23){return false;}_5f6[3]=v;break;case "m":_5f6[4]=v;break;case "s":_5f6[5]=v;break;case "S":_5f6[6]=v;}return true;});var _608=+_5f6[3];if(amPm==="p"&&_608<12){_5f6[3]=_608+12;}else{if(amPm==="a"&&_608==12){_5f6[3]=0;}}var _609=new Date(_5f6[0],_5f6[1],_5f6[2],_5f6[3],_5f6[4],_5f6[5],_5f6[6]);if(_5ef.strict){_609.setFullYear(_5f6[0]);}var _60a=_5f1.join("");if(!_5f8||(_60a.indexOf("M")!=-1&&_609.getMonth()!=_5f6[1])||(_60a.indexOf("d")!=-1&&_609.getDate()!=_5f6[2])){return null;}return _609;};function _processPattern(_60b,_60c,_60d,_60e){var _60f=function(x){return x;};_60c=_60c||_60f;_60d=_60d||_60f;_60e=_60e||_60f;var _611=_60b.match(/(''|[^'])+/g);var _612=false;dojo.forEach(_611,function(_613,i){if(!_613){_611[i]="";}else{_611[i]=(_612?_60d:_60c)(_613);_612=!_612;}});return _60e(_611.join(""));};function _buildDateTimeRE(_615,_616,_617,_618){_618=dojo.regexp.escapeString(_618);if(!_617.strict){_618=_618.replace(" a"," ?a");}return _618.replace(/([a-z])\1*/ig,function(_619){var s;var c=_619.charAt(0);var l=_619.length;var p2="",p3="";if(_617.strict){if(l>1){p2="0"+"{"+(l-1)+"}";}if(l>2){p3="0"+"{"+(l-2)+"}";}}else{p2="0?";p3="0{0,2}";}switch(c){case "y":s="\\d{2,4}";break;case "M":s=(l>2)?"\\S+":p2+"[1-9]|1[0-2]";break;case "D":s=p2+"[1-9]|"+p3+"[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6]";break;case "d":s=p2+"[1-9]|[12]\\d|3[01]";break;case "w":s=p2+"[1-9]|[1-4][0-9]|5[0-3]";break;case "E":s="\\S+";break;case "h":s=p2+"[1-9]|1[0-2]";break;case "k":s=p2+"\\d|1[01]";break;case "H":s=p2+"\\d|1\\d|2[0-3]";break;case "K":s=p2+"[1-9]|1\\d|2[0-4]";break;case "m":case "s":s="[0-5]\\d";break;case "S":s="\\d{"+l+"}";break;case "a":var am=_617.am||_616.am||"AM";var pm=_617.pm||_616.pm||"PM";if(_617.strict){s=am+"|"+pm;}else{s=am+"|"+pm;if(am!=am.toLowerCase()){s+="|"+am.toLowerCase();}if(pm!=pm.toLowerCase()){s+="|"+pm.toLowerCase();}}break;default:s=".*";}if(_615){_615.push(_619);}return "("+s+")";}).replace(/[\xa0 ]/g,"[\\s\\xa0]");};})();(function(){var _621=[];dojo.date.locale.addCustomFormats=function(_622,_623){_621.push({pkg:_622,name:_623});};dojo.date.locale._getGregorianBundle=function(_624){var _625={};dojo.forEach(_621,function(desc){var _627=dojo.i18n.getLocalization(desc.pkg,desc.name,_624);_625=dojo.mixin(_625,_627);},this);return _625;};})();dojo.date.locale.addCustomFormats("dojo.cldr","gregorian");dojo.date.locale.getNames=function(item,type,use,_62b){var _62c;var _62d=dojo.date.locale._getGregorianBundle(_62b);var _62e=[item,use,type];if(use=="standAlone"){_62c=_62d[_62e.join("-")];}_62e[1]="format";return (_62c||_62d[_62e.join("-")]).concat();};dojo.date.locale.isWeekend=function(_62f,_630){var _631=dojo.cldr.supplemental.getWeekend(_630);var day=(_62f||new Date()).getDay();if(_631.end<_631.start){_631.end+=7;if(day<_631.start){day+=7;}}return day>=_631.start&&day<=_631.end;};dojo.date.locale._getDayOfYear=function(_633){return dojo.date.difference(new Date(_633.getFullYear(),0,1),_633)+1;};dojo.date.locale._getWeekOfYear=function(_634,_635){if(arguments.length==1){_635=0;}var _636=new Date(_634.getFullYear(),0,1).getDay();var adj=(_636-_635+7)%7;var week=Math.floor((dojo.date.locale._getDayOfYear(_634)+adj-1)/7);if(_636==_635){week++;}return week;};}if(!dojo._hasResource["dojo.date.stamp"]){dojo._hasResource["dojo.date.stamp"]=true;dojo.provide("dojo.date.stamp");dojo.date.stamp.fromISOString=function(_639,_63a){if(!dojo.date.stamp._isoRegExp){dojo.date.stamp._isoRegExp=/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;}var _63b=dojo.date.stamp._isoRegExp.exec(_639);var _63c=null;if(_63b){_63b.shift();if(_63b[1]){_63b[1]--;}if(_63b[6]){_63b[6]*=1000;}if(_63a){_63a=new Date(_63a);dojo.map(["FullYear","Month","Date","Hours","Minutes","Seconds","Milliseconds"],function(prop){return _63a["get"+prop]();}).forEach(function(_63e,_63f){if(_63b[_63f]===undefined){_63b[_63f]=_63e;}});}_63c=new Date(_63b[0]||1970,_63b[1]||0,_63b[2]||1,_63b[3]||0,_63b[4]||0,_63b[5]||0,_63b[6]||0);var _640=0;var _641=_63b[7]&&_63b[7].charAt(0);if(_641!="Z"){_640=((_63b[8]||0)*60)+(Number(_63b[9])||0);if(_641!="-"){_640*=-1;}}if(_641){_640-=_63c.getTimezoneOffset();}if(_640){_63c.setTime(_63c.getTime()+_640*60000);}}return _63c;};dojo.date.stamp.toISOString=function(_642,_643){var _=function(n){return (n<10)?"0"+n:n;};_643=_643||{};var _646=[];var _647=_643.zulu?"getUTC":"get";var date="";if(_643.selector!="time"){var year=_642[_647+"FullYear"]();date=["0000".substr((year+"").length)+year,_(_642[_647+"Month"]()+1),_(_642[_647+"Date"]())].join("-");}_646.push(date);if(_643.selector!="date"){var time=[_(_642[_647+"Hours"]()),_(_642[_647+"Minutes"]()),_(_642[_647+"Seconds"]())].join(":");var _64b=_642[_647+"Milliseconds"]();if(_643.milliseconds){time+="."+(_64b<100?"0":"")+_(_64b);}if(_643.zulu){time+="Z";}else{if(_643.selector!="time"){var _64c=_642.getTimezoneOffset();var _64d=Math.abs(_64c);time+=(_64c>0?"-":"+")+_(Math.floor(_64d/60))+":"+_(_64d%60);}}_646.push(time);}return _646.join("T");};}if(!dojo._hasResource["dojo.parser"]){dojo._hasResource["dojo.parser"]=true;dojo.provide("dojo.parser");dojo.parser=new function(){var d=dojo;var _64f=d._scopeName+"Type";var qry="["+_64f+"]";function val2type(_651){if(d.isString(_651)){return "string";}if(typeof _651=="number"){return "number";}if(typeof _651=="boolean"){return "boolean";}if(d.isFunction(_651)){return "function";}if(d.isArray(_651)){return "array";}if(_651 instanceof Date){return "date";}if(_651 instanceof d._Url){return "url";}return "object";};function str2obj(_652,type){switch(type){case "string":return _652;case "number":return _652.length?Number(_652):NaN;case "boolean":return typeof _652=="boolean"?_652:!(_652.toLowerCase()=="false");case "function":if(d.isFunction(_652)){_652=_652.toString();_652=d.trim(_652.substring(_652.indexOf("{")+1,_652.length-1));}try{if(_652.search(/[^\w\.]+/i)!=-1){_652=d.parser._nameAnonFunc(new Function(_652),this);}return d.getObject(_652,false);}catch(e){return new Function();}case "array":return _652.split(/\s*,\s*/);case "date":switch(_652){case "":return new Date("");case "now":return new Date();default:return d.date.stamp.fromISOString(_652);}case "url":return d.baseUrl+_652;default:return d.fromJson(_652);}};var _654={};function getClassInfo(_655){if(!_654[_655]){var cls=d.getObject(_655);if(!d.isFunction(cls)){throw new Error("Could not load class '"+_655+"'. Did you spell the name correctly and use a full path, like 'dijit.form.Button'?");}var _657=cls.prototype;var _658={};for(var name in _657){if(name.charAt(0)=="_"){continue;}var _65a=_657[name];_658[name]=val2type(_65a);}_654[_655]={cls:cls,params:_658};}return _654[_655];};this._functionFromScript=function(_65b){var _65c="";var _65d="";var _65e=_65b.getAttribute("args");if(_65e){d.forEach(_65e.split(/\s*,\s*/),function(part,idx){_65c+="var "+part+" = arguments["+idx+"]; ";});}var _661=_65b.getAttribute("with");if(_661&&_661.length){d.forEach(_661.split(/\s*,\s*/),function(part){_65c+="with("+part+"){";_65d+="}";});}return new Function(_65c+_65b.innerHTML+_65d);};this.instantiate=function(_663){var _664=[];d.forEach(_663,function(node){if(!node){return;}var type=node.getAttribute(_64f);if((!type)||(!type.length)){return;}var _667=getClassInfo(type);var _668=_667.cls;var ps=_668._noScript||_668.prototype._noScript;var _66a={};var _66b=node.attributes;for(var name in _667.params){var item=_66b.getNamedItem(name);if(!item||(!item.specified&&(!dojo.isIE||name.toLowerCase()!="value"))){continue;}var _66e=item.value;switch(name){case "class":_66e=node.className;break;case "style":_66e=node.style&&node.style.cssText;}var _66f=_667.params[name];_66a[name]=str2obj(_66e,_66f);}if(!ps){var _670=[],_671=[];d.query("> script[type^='dojo/']",node).orphan().forEach(function(_672){var _673=_672.getAttribute("event"),type=_672.getAttribute("type"),nf=d.parser._functionFromScript(_672);if(_673){if(type=="dojo/connect"){_670.push({event:_673,func:nf});}else{_66a[_673]=nf;}}else{_671.push(nf);}});}var _675=_668["markupFactory"];if(!_675&&_668["prototype"]){_675=_668.prototype["markupFactory"];}var _676=_675?_675(_66a,node,_668):new _668(_66a,node);_664.push(_676);var _677=node.getAttribute("jsId");if(_677){d.setObject(_677,_676);}if(!ps){d.forEach(_670,function(_678){d.connect(_676,_678.event,null,_678.func);});d.forEach(_671,function(func){func.call(_676);});}});d.forEach(_664,function(_67a){if(_67a&&_67a.startup&&!_67a._started&&(!_67a.getParent||!_67a.getParent())){_67a.startup();}});return _664;};this.parse=function(_67b){var list=d.query(qry,_67b);var _67d=this.instantiate(list);return _67d;};}();(function(){var _67e=function(){if(dojo.config["parseOnLoad"]==true){dojo.parser.parse();}};if(dojo.exists("dijit.wai.onload")&&(dijit.wai.onload===dojo._loaders[0])){dojo._loaders.splice(1,0,_67e);}else{dojo._loaders.unshift(_67e);}})();dojo.parser._anonCtr=0;dojo.parser._anon={};dojo.parser._nameAnonFunc=function(_67f,_680){var jpn="$joinpoint";var nso=(_680||dojo.parser._anon);if(dojo.isIE){var cn=_67f["__dojoNameCache"];if(cn&&nso[cn]===_67f){return _67f["__dojoNameCache"];}}var ret="__"+dojo.parser._anonCtr++;while(typeof nso[ret]!="undefined"){ret="__"+dojo.parser._anonCtr++;}nso[ret]=_67f;return ret;};}if(!dojo._hasResource["dojo.xml.XslTransform"]){dojo._hasResource["dojo.xml.XslTransform"]=true;dojo.provide("dojo.xml.XslTransform");dojo.xml.XslTransform=function(_685){window.console.log("XslTransform is supported by Internet Explorer and Mozilla, with limited support in Opera 9 (no document function support).");var _686=dojo.isIE;var _687=["Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","Msxml2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"];var _688=["Msxml2.FreeThreadedDOMDocument.5.0","MSXML2.FreeThreadedDOMDocument.4.0","MSXML2.FreeThreadedDOMDocument.3.0"];var _689=["Msxml2.XSLTemplate.5.0","Msxml2.XSLTemplate.4.0","MSXML2.XSLTemplate.3.0"];function getActiveXImpl(_68a){for(var i=0;i<_68a.length;i++){try{var _68c=new ActiveXObject(_68a[i]);if(_68c){return _68a[i];}}catch(e){}}dojo.raise("Could not find an ActiveX implementation in:\n\n "+_68a);};if(_685==null||_685==undefined){dojo.raise("You must pass the URI String for the XSL file to be used!");return false;}var _68d=null;var _68e=null;if(_686){_68d=new ActiveXObject(getActiveXImpl(_688));}else{_68e=new XSLTProcessor();_68d=document.implementation.createDocument("","",null);_68d.addEventListener("load",onXslLoad,false);}_68d.async=false;_68d.load(_685);if(_686){var xslt=new ActiveXObject(getActiveXImpl(_689));xslt.stylesheet=_68d;_68e=xslt.createProcessor();}function onXslLoad(){_68e.importStylesheet(_68d);};function getResultDom(_690,_691){if(_686){addIeParams(_691);var _692=getIeResultDom(_690);removeIeParams(_691);return _692;}else{return getMozillaResultDom(_690,_691);}};function addIeParams(_693){if(!_693){return;}for(var i=0;i<_693.length;i++){_68e.addParameter(_693[i][0],_693[i][1]);}};function removeIeParams(_695){if(!_695){return;}for(var i=0;i<_695.length;i++){_68e.addParameter(_695[i][0],"");}};function getIeResultDom(_697){_68e.input=_697;var _698=new ActiveXObject(getActiveXImpl(_687));_698.async=false;_698.validateOnParse=false;_68e.output=_698;_68e.transform();if(_698.parseError.errorCode!=0){var err=_698.parseError;dojo.raise("err.errorCode: "+err.errorCode+"\n\nerr.reason: "+err.reason+"\n\nerr.url: "+err.url+"\n\nerr.srcText: "+err.srcText);}return _698;};function getIeResultStr(_69a,_69b){_68e.input=_69a;_68e.transform();return _68e.output;};function addMozillaParams(_69c){if(!_69c){return;}for(var i=0;i<_69c.length;i++){_68e.setParameter(null,_69c[i][0],_69c[i][1]);}};function getMozillaResultDom(_69e,_69f){addMozillaParams(_69f);var _6a0=_68e.transformToDocument(_69e);_68e.clearParameters();return _6a0;};function getMozillaResultStr(_6a1,_6a2,_6a3){addMozillaParams(_6a2);var _6a4=_68e.transformToFragment(_6a1,_6a3);var _6a5=new XMLSerializer();_68e.clearParameters();return _6a5.serializeToString(_6a4);};this.getResultString=function(_6a6,_6a7,_6a8){var _6a9=null;if(_686){addIeParams(_6a7);_6a9=getIeResultStr(_6a6,_6a7);removeIeParams(_6a7);}else{_6a9=getMozillaResultStr(_6a6,_6a7,_6a8);}return _6a9;};this.transformToContentPane=function(_6aa,_6ab,_6ac,_6ad){var _6ae=this.getResultString(_6aa,_6ab,_6ad);_6ac.setContent(_6ae);};this.transformToRegion=function(_6af,_6b0,_6b1,_6b2){try{var _6b3=this.getResultString(_6af,_6b0,_6b2);_6b1.innerHTML=_6b3;}catch(e){dojo.raise(e.message+"\n\n xsltUri: "+_685);}};this.transformToDocument=function(_6b4,_6b5){return getResultDom(_6b4,_6b5);};this.transformToWindow=function(_6b6,_6b7,_6b8,_6b9){try{_6b8.open();_6b8.write(this.getResultString(_6b6,_6b7,_6b9));_6b8.close();}catch(e){dojo.raise(e.message+"\n\n xsltUri: "+_685);}};};}if(!dojo._hasResource["dojo.back"]){dojo._hasResource["dojo.back"]=true;dojo.provide("dojo.back");(function(){var back=dojo.back;function getHash(){var h=window.location.hash;if(h.charAt(0)=="#"){h=h.substring(1);}return dojo.isMozilla?h:decodeURIComponent(h);};function setHash(h){if(!h){h="";}window.location.hash=encodeURIComponent(h);_6bd=history.length;};if(dojo.exists("tests.back-hash")){back.getHash=getHash;back.setHash=setHash;}var _6be=(typeof (window)!=="undefined")?window.location.href:"";var _6bf=(typeof (window)!=="undefined")?getHash():"";var _6c0=null;var _6c1=null;var _6c2=null;var _6c3=null;var _6c4=[];var _6c5=[];var _6c6=false;var _6c7=false;var _6bd;function handleBackButton(){var _6c8=_6c5.pop();if(!_6c8){return;}var last=_6c5[_6c5.length-1];if(!last&&_6c5.length==0){last=_6c0;}if(last){if(last.kwArgs["back"]){last.kwArgs["back"]();}else{if(last.kwArgs["backButton"]){last.kwArgs["backButton"]();}else{if(last.kwArgs["handle"]){last.kwArgs.handle("back");}}}}_6c4.push(_6c8);};back.goBack=handleBackButton;function handleForwardButton(){var last=_6c4.pop();if(!last){return;}if(last.kwArgs["forward"]){last.kwArgs.forward();}else{if(last.kwArgs["forwardButton"]){last.kwArgs.forwardButton();}else{if(last.kwArgs["handle"]){last.kwArgs.handle("forward");}}}_6c5.push(last);};back.goForward=handleForwardButton;function createState(url,args,hash){return {"url":url,"kwArgs":args,"urlHash":hash};};function getUrlQuery(url){var _6cf=url.split("?");if(_6cf.length<2){return null;}else{return _6cf[1];}};function loadIframeHistory(){var url=(dojo.config["dojoIframeHistoryUrl"]||dojo.moduleUrl("dojo","resources/iframe_history.html"))+"?"+(new Date()).getTime();_6c6=true;if(_6c3){dojo.isSafari?_6c3.location=url:window.frames[_6c3.name].location=url;}else{}return url;};function checkLocation(){if(!_6c7){var hsl=_6c5.length;var hash=getHash();if((hash===_6bf||window.location.href==_6be)&&(hsl==1)){handleBackButton();return;}if(_6c4.length>0){if(_6c4[_6c4.length-1].urlHash===hash){handleForwardButton();return;}}if((hsl>=2)&&(_6c5[hsl-2])){if(_6c5[hsl-2].urlHash===hash){handleBackButton();return;}}if(dojo.isSafari&&dojo.isSafari<3){var _6d3=history.length;if(_6d3>_6bd){handleForwardButton();}else{if(_6d3<_6bd){handleBackButton();}}_6bd=_6d3;}}};back.init=function(){if(dojo.byId("dj_history")){return;}var src=dojo.config["dojoIframeHistoryUrl"]||dojo.moduleUrl("dojo","resources/iframe_history.html");document.write("<iframe style=\"border:0;width:1px;height:1px;position:absolute;visibility:hidden;bottom:0;right:0;\" name=\"dj_history\" id=\"dj_history\" src=\""+src+"\"></iframe>");};back.setInitialState=function(args){_6c0=createState(_6be,args,_6bf);};back.addToHistory=function(args){_6c4=[];var hash=null;var url=null;if(!_6c3){if(dojo.config["useXDomain"]&&!dojo.config["dojoIframeHistoryUrl"]){console.debug("dojo.back: When using cross-domain Dojo builds,"+" please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl"+" to the path on your domain to iframe_history.html");}_6c3=window.frames["dj_history"];}if(!_6c2){_6c2=document.createElement("a");dojo.body().appendChild(_6c2);_6c2.style.display="none";}if(args["changeUrl"]){hash=""+((args["changeUrl"]!==true)?args["changeUrl"]:(new Date()).getTime());if(_6c5.length==0&&_6c0.urlHash==hash){_6c0=createState(url,args,hash);return;}else{if(_6c5.length>0&&_6c5[_6c5.length-1].urlHash==hash){_6c5[_6c5.length-1]=createState(url,args,hash);return;}}_6c7=true;setTimeout(function(){setHash(hash);_6c7=false;},1);_6c2.href=hash;if(dojo.isIE){url=loadIframeHistory();var _6d9=args["back"]||args["backButton"]||args["handle"];var tcb=function(_6db){if(getHash()!=""){setTimeout(function(){setHash(hash);},1);}_6d9.apply(this,[_6db]);};if(args["back"]){args.back=tcb;}else{if(args["backButton"]){args.backButton=tcb;}else{if(args["handle"]){args.handle=tcb;}}}var _6dc=args["forward"]||args["forwardButton"]||args["handle"];var tfw=function(_6de){if(getHash()!=""){setHash(hash);}if(_6dc){_6dc.apply(this,[_6de]);}};if(args["forward"]){args.forward=tfw;}else{if(args["forwardButton"]){args.forwardButton=tfw;}else{if(args["handle"]){args.handle=tfw;}}}}else{if(!dojo.isIE){if(!_6c1){_6c1=setInterval(checkLocation,200);}}}}else{url=loadIframeHistory();}_6c5.push(createState(url,args,hash));};back._iframeLoaded=function(evt,_6e0){var _6e1=getUrlQuery(_6e0.href);if(_6e1==null){if(_6c5.length==1){handleBackButton();}return;}if(_6c6){_6c6=false;return;}if(_6c5.length>=2&&_6e1==getUrlQuery(_6c5[_6c5.length-2].url)){handleBackButton();}else{if(_6c4.length>0&&_6e1==getUrlQuery(_6c4[_6c4.length-1].url)){handleForwardButton();}}};})();}if(!dojo._hasResource["dojo.cookie"]){dojo._hasResource["dojo.cookie"]=true;dojo.provide("dojo.cookie");dojo.cookie=function(name,_6e3,_6e4){var c=document.cookie;if(arguments.length==1){var _6e6=c.match(new RegExp("(?:^|; )"+dojo.regexp.escapeString(name)+"=([^;]*)"));return _6e6?decodeURIComponent(_6e6[1]):undefined;}else{_6e4=_6e4||{};var exp=_6e4.expires;if(typeof exp=="number"){var d=new Date();d.setTime(d.getTime()+exp*24*60*60*1000);exp=_6e4.expires=d;}if(exp&&exp.toUTCString){_6e4.expires=exp.toUTCString();}_6e3=encodeURIComponent(_6e3);var _6e9=name+"="+_6e3;for(propName in _6e4){_6e9+="; "+propName;var _6ea=_6e4[propName];if(_6ea!==true){_6e9+="="+_6ea;}}document.cookie=_6e9;}};dojo.cookie.isSupported=function(){if(!("cookieEnabled" in navigator)){this("__djCookieTest__","CookiesAllowed");navigator.cookieEnabled=this("__djCookieTest__")=="CookiesAllowed";if(navigator.cookieEnabled){this("__djCookieTest__","",{expires:-1});}}return navigator.cookieEnabled;};}if(!dojo._hasResource["dojo.cldr.monetary"]){dojo._hasResource["dojo.cldr.monetary"]=true;dojo.provide("dojo.cldr.monetary");dojo.cldr.monetary.getData=function(code){var _6ec={ADP:0,BHD:3,BIF:0,BYR:0,CLF:0,CLP:0,DJF:0,ESP:0,GNF:0,IQD:3,ITL:0,JOD:3,JPY:0,KMF:0,KRW:0,KWD:3,LUF:0,LYD:3,MGA:0,MGF:0,OMR:3,PYG:0,RWF:0,TND:3,TRL:0,VUV:0,XAF:0,XOF:0,XPF:0};var _6ed={CHF:5};var _6ee=_6ec[code],_6ef=_6ed[code];if(typeof _6ee=="undefined"){_6ee=2;}if(typeof _6ef=="undefined"){_6ef=0;}return {places:_6ee,round:_6ef};};}if(!dojo._hasResource["dojo.currency"]){dojo._hasResource["dojo.currency"]=true;dojo.provide("dojo.currency");dojo.currency._mixInDefaults=function(_6f0){_6f0=_6f0||{};_6f0.type="currency";var _6f1=dojo.i18n.getLocalization("dojo.cldr","currency",_6f0.locale)||{};var iso=_6f0.currency;var data=dojo.cldr.monetary.getData(iso);dojo.forEach(["displayName","symbol","group","decimal"],function(prop){data[prop]=_6f1[iso+"_"+prop];});data.fractional=[true,false];return dojo.mixin(data,_6f0);};dojo.currency.format=function(_6f5,_6f6){return dojo.number.format(_6f5,dojo.currency._mixInDefaults(_6f6));};dojo.currency.regexp=function(_6f7){return dojo.number.regexp(dojo.currency._mixInDefaults(_6f7));};dojo.currency.parse=function(_6f8,_6f9){return dojo.number.parse(_6f8,dojo.currency._mixInDefaults(_6f9));};}if(!dojo._hasResource["dojo.fx"]){dojo._hasResource["dojo.fx"]=true;dojo.provide("dojo.fx");dojo.provide("dojo.fx.Toggler");(function(){var _6fa={_fire:function(evt,args){if(this[evt]){this[evt].apply(this,args||[]);}return this;}};var _6fd=function(_6fe){this._index=-1;this._animations=_6fe||[];this._current=this._onAnimateCtx=this._onEndCtx=null;this.duration=0;dojo.forEach(this._animations,function(a){this.duration+=a.duration;if(a.delay){this.duration+=a.delay;}},this);};dojo.extend(_6fd,{_onAnimate:function(){this._fire("onAnimate",arguments);},_onEnd:function(){dojo.disconnect(this._onAnimateCtx);dojo.disconnect(this._onEndCtx);this._onAnimateCtx=this._onEndCtx=null;if(this._index+1==this._animations.length){this._fire("onEnd");}else{this._current=this._animations[++this._index];this._onAnimateCtx=dojo.connect(this._current,"onAnimate",this,"_onAnimate");this._onEndCtx=dojo.connect(this._current,"onEnd",this,"_onEnd");this._current.play(0,true);}},play:function(_700,_701){if(!this._current){this._current=this._animations[this._index=0];}if(!_701&&this._current.status()=="playing"){return this;}var _702=dojo.connect(this._current,"beforeBegin",this,function(){this._fire("beforeBegin");}),_703=dojo.connect(this._current,"onBegin",this,function(arg){this._fire("onBegin",arguments);}),_705=dojo.connect(this._current,"onPlay",this,function(arg){this._fire("onPlay",arguments);dojo.disconnect(_702);dojo.disconnect(_703);dojo.disconnect(_705);});if(this._onAnimateCtx){dojo.disconnect(this._onAnimateCtx);}this._onAnimateCtx=dojo.connect(this._current,"onAnimate",this,"_onAnimate");if(this._onEndCtx){dojo.disconnect(this._onEndCtx);}this._onEndCtx=dojo.connect(this._current,"onEnd",this,"_onEnd");this._current.play.apply(this._current,arguments);return this;},pause:function(){if(this._current){var e=dojo.connect(this._current,"onPause",this,function(arg){this._fire("onPause",arguments);dojo.disconnect(e);});this._current.pause();}return this;},gotoPercent:function(_709,_70a){this.pause();var _70b=this.duration*_709;this._current=null;dojo.some(this._animations,function(a){if(a.duration<=_70b){this._current=a;return true;}_70b-=a.duration;return false;});if(this._current){this._current.gotoPercent(_70b/_current.duration,_70a);}return this;},stop:function(_70d){if(this._current){if(_70d){for(;this._index+1<this._animations.length;++this._index){this._animations[this._index].stop(true);}this._current=this._animations[this._index];}var e=dojo.connect(this._current,"onStop",this,function(arg){this._fire("onStop",arguments);dojo.disconnect(e);});this._current.stop();}return this;},status:function(){return this._current?this._current.status():"stopped";},destroy:function(){if(this._onAnimateCtx){dojo.disconnect(this._onAnimateCtx);}if(this._onEndCtx){dojo.disconnect(this._onEndCtx);}}});dojo.extend(_6fd,_6fa);dojo.fx.chain=function(_710){return new _6fd(_710);};var _711=function(_712){this._animations=_712||[];this._connects=[];this._finished=0;this.duration=0;dojo.forEach(_712,function(a){var _714=a.duration;if(a.delay){_714+=a.delay;}if(this.duration<_714){this.duration=_714;}this._connects.push(dojo.connect(a,"onEnd",this,"_onEnd"));},this);this._pseudoAnimation=new dojo._Animation({curve:[0,1],duration:this.duration});dojo.forEach(["beforeBegin","onBegin","onPlay","onAnimate","onPause","onStop"],function(evt){this._connects.push(dojo.connect(this._pseudoAnimation,evt,dojo.hitch(this,"_fire",evt)));},this);};dojo.extend(_711,{_doAction:function(_716,args){dojo.forEach(this._animations,function(a){a[_716].apply(a,args);});return this;},_onEnd:function(){if(++this._finished==this._animations.length){this._fire("onEnd");}},_call:function(_719,args){var t=this._pseudoAnimation;t[_719].apply(t,args);},play:function(_71c,_71d){this._finished=0;this._doAction("play",arguments);this._call("play",arguments);return this;},pause:function(){this._doAction("pause",arguments);this._call("pause",arguments);return this;},gotoPercent:function(_71e,_71f){var ms=this.duration*_71e;dojo.forEach(this._animations,function(a){a.gotoPercent(a.duration<ms?1:(ms/a.duration),_71f);});this._call("gotoProcent",arguments);return this;},stop:function(_722){this._doAction("stop",arguments);this._call("stop",arguments);return this;},status:function(){return this._pseudoAnimation.status();},destroy:function(){dojo.forEach(this._connects,dojo.disconnect);}});dojo.extend(_711,_6fa);dojo.fx.combine=function(_723){return new _711(_723);};})();dojo.declare("dojo.fx.Toggler",null,{constructor:function(args){var _t=this;dojo.mixin(_t,args);_t.node=args.node;_t._showArgs=dojo.mixin({},args);_t._showArgs.node=_t.node;_t._showArgs.duration=_t.showDuration;_t.showAnim=_t.showFunc(_t._showArgs);_t._hideArgs=dojo.mixin({},args);_t._hideArgs.node=_t.node;_t._hideArgs.duration=_t.hideDuration;_t.hideAnim=_t.hideFunc(_t._hideArgs);dojo.connect(_t.showAnim,"beforeBegin",dojo.hitch(_t.hideAnim,"stop",true));dojo.connect(_t.hideAnim,"beforeBegin",dojo.hitch(_t.showAnim,"stop",true));},node:null,showFunc:dojo.fadeIn,hideFunc:dojo.fadeOut,showDuration:200,hideDuration:200,show:function(_726){return this.showAnim.play(_726||0);},hide:function(_727){return this.hideAnim.play(_727||0);}});dojo.fx.wipeIn=function(args){args.node=dojo.byId(args.node);var node=args.node,s=node.style,o;var anim=dojo.animateProperty(dojo.mixin({properties:{height:{start:function(){o=s.overflow;s.overflow="hidden";if(s.visibility=="hidden"||s.display=="none"){s.height="1px";s.display="";s.visibility="";return 1;}else{var _72d=dojo.style(node,"height");return Math.max(_72d,1);}},end:function(){return node.scrollHeight;}}}},args));dojo.connect(anim,"onEnd",function(){s.height="auto";s.overflow=o;});return anim;};dojo.fx.wipeOut=function(args){var node=args.node=dojo.byId(args.node);var s=node.style;var o;var anim=dojo.animateProperty(dojo.mixin({properties:{height:{end:1}}},args));dojo.connect(anim,"beforeBegin",function(){o=s.overflow;s.overflow="hidden";s.display="";});dojo.connect(anim,"onEnd",function(){s.overflow=o;s.height="auto";s.display="none";});return anim;};dojo.fx.slideTo=function(args){var node=(args.node=dojo.byId(args.node));var top=null;var left=null;var init=(function(n){return function(){var cs=dojo.getComputedStyle(n);var pos=cs.position;top=(pos=="absolute"?n.offsetTop:parseInt(cs.top)||0);left=(pos=="absolute"?n.offsetLeft:parseInt(cs.left)||0);if(pos!="absolute"&&pos!="relative"){var ret=dojo.coords(n,true);top=ret.y;left=ret.x;n.style.position="absolute";n.style.top=top+"px";n.style.left=left+"px";}};})(node);init();var anim=dojo.animateProperty(dojo.mixin({properties:{top:{end:args.top||0},left:{end:args.left||0}}},args));dojo.connect(anim,"beforeBegin",anim,init);return anim;};}if(!dojo._hasResource["dojo.NodeList-fx"]){dojo._hasResource["dojo.NodeList-fx"]=true;dojo.provide("dojo.NodeList-fx");dojo.extend(dojo.NodeList,{_anim:function(obj,_73e,args){args=args||{};return dojo.fx.combine(this.map(function(item){var _741={node:item};dojo.mixin(_741,args);return obj[_73e](_741);}));},wipeIn:function(args){return this._anim(dojo.fx,"wipeIn",args);},wipeOut:function(args){return this._anim(dojo.fx,"wipeOut",args);},slideTo:function(args){return this._anim(dojo.fx,"slideTo",args);},fadeIn:function(args){return this._anim(dojo,"fadeIn",args);},fadeOut:function(args){return this._anim(dojo,"fadeOut",args);},animateProperty:function(args){return this._anim(dojo,"animateProperty",args);},anim:function(_748,_749,_74a,_74b,_74c){var _74d=dojo.fx.combine(this.map(function(item){return dojo.animateProperty({node:item,properties:_748,duration:_749||350,easing:_74a});}));if(_74b){dojo.connect(_74d,"onEnd",_74b);}return _74d.play(_74c||0);}});}if(!dojo._hasResource["dojox.data.dom"]){dojo._hasResource["dojox.data.dom"]=true;dojo.provide("dojox.data.dom");dojo.experimental("dojox.data.dom");dojox.data.dom.createDocument=function(str,_750){var _751=dojo.doc;if(!_750){_750="text/xml";}if(str&&(typeof dojo.global["DOMParser"])!=="undefined"){var _752=new DOMParser();return _752.parseFromString(str,_750);}else{if((typeof dojo.global["ActiveXObject"])!=="undefined"){var _753=["MSXML2","Microsoft","MSXML","MSXML3"];for(var i=0;i<_753.length;i++){try{var doc=new ActiveXObject(_753[i]+".XMLDOM");if(str){if(doc){doc.async=false;doc.loadXML(str);return doc;}else{console.log("loadXML didn't work?");}}else{if(doc){return doc;}}}catch(e){}}}else{if((_751.implementation)&&(_751.implementation.createDocument)){if(str){if(_751.createElement){var tmp=_751.createElement("xml");tmp.innerHTML=str;var _757=_751.implementation.createDocument("foo","",null);for(var i=0;i<tmp.childNodes.length;i++){_757.importNode(tmp.childNodes.item(i),true);}return _757;}}else{return _751.implementation.createDocument("","",null);}}}}return null;};dojox.data.dom.textContent=function(node,text){if(arguments.length>1){var _75a=node.ownerDocument||dojo.doc;dojox.data.dom.replaceChildren(node,_75a.createTextNode(text));return text;}else{if(node.textContent!==undefined){return node.textContent;}var _75b="";if(node==null){return _75b;}for(var i=0;i<node.childNodes.length;i++){switch(node.childNodes[i].nodeType){case 1:case 5:_75b+=dojox.data.dom.textContent(node.childNodes[i]);break;case 3:case 2:case 4:_75b+=node.childNodes[i].nodeValue;break;default:break;}}return _75b;}};dojox.data.dom.replaceChildren=function(node,_75e){var _75f=[];if(dojo.isIE){for(var i=0;i<node.childNodes.length;i++){_75f.push(node.childNodes[i]);}}dojox.data.dom.removeChildren(node);for(var i=0;i<_75f.length;i++){dojo._destroyElement(_75f[i]);}if(!dojo.isArray(_75e)){node.appendChild(_75e);}else{for(var i=0;i<_75e.length;i++){node.appendChild(_75e[i]);}}};dojox.data.dom.removeChildren=function(node){var _762=node.childNodes.length;while(node.hasChildNodes()){node.removeChild(node.firstChild);}return _762;};dojox.data.dom.innerXML=function(node){if(node.innerXML){return node.innerXML;}else{if(node.xml){return node.xml;}else{if(typeof XMLSerializer!="undefined"){return (new XMLSerializer()).serializeToString(node);}}}};}if(!dojo._hasResource["dojo.dnd.common"]){dojo._hasResource["dojo.dnd.common"]=true;dojo.provide("dojo.dnd.common");dojo.dnd._copyKey=navigator.appVersion.indexOf("Macintosh")<0?"ctrlKey":"metaKey";dojo.dnd.getCopyKeyState=function(e){return e[dojo.dnd._copyKey];};dojo.dnd._uniqueId=0;dojo.dnd.getUniqueId=function(){var id;do{id=dojo._scopeName+"Unique"+(++dojo.dnd._uniqueId);}while(dojo.byId(id));return id;};dojo.dnd._empty={};dojo.dnd.isFormElement=function(e){var t=e.target;if(t.nodeType==3){t=t.parentNode;}return " button textarea input select option ".indexOf(" "+t.tagName.toLowerCase()+" ")>=0;};}dojo.i18n._preloadLocalizations("dojo.nls.dojo",["ar-lb","mk-mk","xx","ln","lo","de-de","pt-br","lt","lv","es-mx","hu-hu","id-id","ROOT","aa-dj","ar-ye","es-ar","el-gr","mt-mt","ar-ma","mk","es-ni","en-mh","ml","aa","mn","ja-jp","haw","so-dj","zh-hant-mo","af","wal-et","mr","it-ch","ms","en-mp","mt","en-mt","am","el-polytoni","en-za","sid-et","en-us-posix","ps-af","zh","et-ee","es-bo","ar","as","ga-ie","nb","en-as","uz-arab","en-au","ne","nl-nl","az","aa-er","aa-et","nl-be","pt-pt","zu","nl","mr-in","nn","en-zw","be","sk-sk","th-th","bg","en-be","so-et","bn","es-cl","fa-af","tig-er","es-co","en-nz","bs","es-cr","sr-cyrl-ba","es-pa","en-bw","ca","om","en-ca","sr-ba","or","es-pr","lv-lv","es-py","es-do","sid","cs","hy-am-revised","pa","ms-my","cy","kk-kz","so-so","nb-no","gez-er","zh-mo","kw-gb","en-ph","pl","da","gez-et","en-pk","de","bn-bd","es-ec","be-by","dz-bt","ps","pt","dv","es-es","ms-bn","dz","ar-qa","ar-dz","pa-arab","gv-gb","sq-al","sh-ba","ko-kr","el","en","eo","tt-ru","fr-lu","es","et","eu","gl-es","ml-in","kn-in","fa","ro","zh-hans-cn","om-et","fi","ru","zh-cn","rw","es-sv","fo","fr","sa","es-gt","se","ar-sa","am-et","sh","as-in","he-il","en-sg","sk","ga","sl","so","en-gb","sq","sr","hy-am","sv","gl","sw","fr-be","fo-fo","es-hn","ar-sy","it-it","gu","syr","ta","gv","en-gu","te","cy-gb","th","ti","so-ke","he","tr","fr-ca","ar-tn","hi","tt","cs-cz","de-li","kok-in","es-us","fur","sr-latn","zh-hant-hk","sr-cyrl","zh-hant-tw","en-hk","fr-ch","es-uy","hr","pa-in","sw-tz","sr-latn-ba","wal","hu","hi-in","de-lu","lt-lt","hy","ca-es","es-ve","kok","nn-no","af-za","or-in","uk","ia","kl-gl","sv-fi","id","zh-hans","lo-la","zh-hant","en-um","syr-sy","el-cy","en-ie","en-us","uz","en-in","sv-se","ti-er","zh-hans-sg","is","it","ti-et","zh-sg","vi","tig","de-at","ja","en-vi","gu-in","ta-in","km-kh","is-is","de-be","byn-er","bg-bg","ru-ua","ar-jo","pl-pl","uk-ua","fi-fi","haw-us","ka","da-dk","zh-hk","sw-ke","zh-tw","gez","kk","kl","km","kn","bn-in","ko","de-ch","eu-es","kw","om-ke","sl-si","byn","ky","ro-ro","te-in","xh"]);if(dojo.config.afterOnLoad&&dojo.isBrowser){window.setTimeout(dojo._fakeLoadInit,1000);}})();
/*
	Copyright (c) 2004-2008, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
*/

/*
	This is a compiled version of Dojo, built for deployment and not for
	development. To get an editable version, please visit:

		http://dojotoolkit.org

	for documentation and information on getting the source.
*/

dojo.provide("dijit.dijit");if(!dojo._hasResource["dijit._base.focus"]){dojo._hasResource["dijit._base.focus"]=true;dojo.provide("dijit._base.focus");dojo.mixin(dijit,{_curFocus:null,_prevFocus:null,isCollapsed:function(){var _1=dojo.global;var _2=dojo.doc;if(_2.selection){return !_2.selection.createRange().text;}else{var _3=_1.getSelection();if(dojo.isString(_3)){return !_3;}else{return _3.isCollapsed||!_3.toString();}}},getBookmark:function(){var _4,_5=dojo.doc.selection;if(_5){var _6=_5.createRange();if(_5.type.toUpperCase()=="CONTROL"){if(_6.length){_4=[];var i=0,_8=_6.length;while(i<_8){_4.push(_6.item(i++));}}else{_4=null;}}else{_4=_6.getBookmark();}}else{if(window.getSelection){_5=dojo.global.getSelection();if(_5){_6=_5.getRangeAt(0);_4=_6.cloneRange();}}else{console.warn("No idea how to store the current selection for this browser!");}}return _4;},moveToBookmark:function(_9){var _a=dojo.doc;if(_a.selection){var _b;if(dojo.isArray(_9)){_b=_a.body.createControlRange();dojo.forEach(_9,"range.addElement(item)");}else{_b=_a.selection.createRange();_b.moveToBookmark(_9);}_b.select();}else{var _c=dojo.global.getSelection&&dojo.global.getSelection();if(_c&&_c.removeAllRanges){_c.removeAllRanges();_c.addRange(_9);}else{console.warn("No idea how to restore selection for this browser!");}}},getFocus:function(_d,_e){return {node:_d&&dojo.isDescendant(dijit._curFocus,_d.domNode)?dijit._prevFocus:dijit._curFocus,bookmark:!dojo.withGlobal(_e||dojo.global,dijit.isCollapsed)?dojo.withGlobal(_e||dojo.global,dijit.getBookmark):null,openedForWindow:_e};},focus:function(_f){if(!_f){return;}var _10="node" in _f?_f.node:_f,_11=_f.bookmark,_12=_f.openedForWindow;if(_10){var _13=(_10.tagName.toLowerCase()=="iframe")?_10.contentWindow:_10;if(_13&&_13.focus){try{_13.focus();}catch(e){}}dijit._onFocusNode(_10);}if(_11&&dojo.withGlobal(_12||dojo.global,dijit.isCollapsed)){if(_12){_12.focus();}try{dojo.withGlobal(_12||dojo.global,dijit.moveToBookmark,null,[_11]);}catch(e){}}},_activeStack:[],registerWin:function(_14){if(!_14){_14=window;}dojo.connect(_14.document,"onmousedown",function(evt){dijit._justMouseDowned=true;setTimeout(function(){dijit._justMouseDowned=false;},0);dijit._onTouchNode(evt.target||evt.srcElement);});var _16=_14.document.body||_14.document.getElementsByTagName("body")[0];if(_16){if(dojo.isIE){_16.attachEvent("onactivate",function(evt){if(evt.srcElement.tagName.toLowerCase()!="body"){dijit._onFocusNode(evt.srcElement);}});_16.attachEvent("ondeactivate",function(evt){dijit._onBlurNode(evt.srcElement);});}else{_16.addEventListener("focus",function(evt){dijit._onFocusNode(evt.target);},true);_16.addEventListener("blur",function(evt){dijit._onBlurNode(evt.target);},true);}}_16=null;},_onBlurNode:function(_1b){dijit._prevFocus=dijit._curFocus;dijit._curFocus=null;if(dijit._justMouseDowned){return;}if(dijit._clearActiveWidgetsTimer){clearTimeout(dijit._clearActiveWidgetsTimer);}dijit._clearActiveWidgetsTimer=setTimeout(function(){delete dijit._clearActiveWidgetsTimer;dijit._setStack([]);dijit._prevFocus=null;},100);},_onTouchNode:function(_1c){if(dijit._clearActiveWidgetsTimer){clearTimeout(dijit._clearActiveWidgetsTimer);delete dijit._clearActiveWidgetsTimer;}var _1d=[];try{while(_1c){if(_1c.dijitPopupParent){_1c=dijit.byId(_1c.dijitPopupParent).domNode;}else{if(_1c.tagName&&_1c.tagName.toLowerCase()=="body"){if(_1c===dojo.body()){break;}_1c=dijit.getDocumentWindow(_1c.ownerDocument).frameElement;}else{var id=_1c.getAttribute&&_1c.getAttribute("widgetId");if(id){_1d.unshift(id);}_1c=_1c.parentNode;}}}}catch(e){}dijit._setStack(_1d);},_onFocusNode:function(_1f){if(_1f&&_1f.tagName&&_1f.tagName.toLowerCase()=="body"){return;}dijit._onTouchNode(_1f);if(_1f==dijit._curFocus){return;}if(dijit._curFocus){dijit._prevFocus=dijit._curFocus;}dijit._curFocus=_1f;dojo.publish("focusNode",[_1f]);},_setStack:function(_20){var _21=dijit._activeStack;dijit._activeStack=_20;for(var _22=0;_22<Math.min(_21.length,_20.length);_22++){if(_21[_22]!=_20[_22]){break;}}for(var i=_21.length-1;i>=_22;i--){var _24=dijit.byId(_21[i]);if(_24){_24._focused=false;_24._hasBeenBlurred=true;if(_24._onBlur){_24._onBlur();}if(_24._setStateClass){_24._setStateClass();}dojo.publish("widgetBlur",[_24]);}}for(i=_22;i<_20.length;i++){_24=dijit.byId(_20[i]);if(_24){_24._focused=true;if(_24._onFocus){_24._onFocus();}if(_24._setStateClass){_24._setStateClass();}dojo.publish("widgetFocus",[_24]);}}}});dojo.addOnLoad(dijit.registerWin);}if(!dojo._hasResource["dijit._base.manager"]){dojo._hasResource["dijit._base.manager"]=true;dojo.provide("dijit._base.manager");dojo.declare("dijit.WidgetSet",null,{constructor:function(){this._hash={};},add:function(_25){if(this._hash[_25.id]){throw new Error("Tried to register widget with id=="+_25.id+" but that id is already registered");}this._hash[_25.id]=_25;},remove:function(id){delete this._hash[id];},forEach:function(_27){for(var id in this._hash){_27(this._hash[id]);}},filter:function(_29){var res=new dijit.WidgetSet();this.forEach(function(_2b){if(_29(_2b)){res.add(_2b);}});return res;},byId:function(id){return this._hash[id];},byClass:function(cls){return this.filter(function(_2e){return _2e.declaredClass==cls;});}});dijit.registry=new dijit.WidgetSet();dijit._widgetTypeCtr={};dijit.getUniqueId=function(_2f){var id;do{id=_2f+"_"+(_2f in dijit._widgetTypeCtr?++dijit._widgetTypeCtr[_2f]:dijit._widgetTypeCtr[_2f]=0);}while(dijit.byId(id));return id;};if(dojo.isIE){dojo.addOnUnload(function(){dijit.registry.forEach(function(_31){_31.destroy();});});}dijit.byId=function(id){return (dojo.isString(id))?dijit.registry.byId(id):id;};dijit.byNode=function(_33){return dijit.registry.byId(_33.getAttribute("widgetId"));};dijit.getEnclosingWidget=function(_34){while(_34){if(_34.getAttribute&&_34.getAttribute("widgetId")){return dijit.registry.byId(_34.getAttribute("widgetId"));}_34=_34.parentNode;}return null;};dijit._tabElements={area:true,button:true,input:true,object:true,select:true,textarea:true};dijit._isElementShown=function(_35){var _36=dojo.style(_35);return (_36.visibility!="hidden")&&(_36.visibility!="collapsed")&&(_36.display!="none");};dijit.isTabNavigable=function(_37){if(dojo.hasAttr(_37,"disabled")){return false;}var _38=dojo.hasAttr(_37,"tabindex");var _39=dojo.attr(_37,"tabindex");if(_38&&_39>=0){return true;}var _3a=_37.nodeName.toLowerCase();if(((_3a=="a"&&dojo.hasAttr(_37,"href"))||dijit._tabElements[_3a])&&(!_38||_39>=0)){return true;}return false;};dijit._getTabNavigable=function(_3b){var _3c,_3d,_3e,_3f,_40,_41;var _42=function(_43){dojo.query("> *",_43).forEach(function(_44){var _45=dijit._isElementShown(_44);if(_45&&dijit.isTabNavigable(_44)){var _46=dojo.attr(_44,"tabindex");if(!dojo.hasAttr(_44,"tabindex")||_46==0){if(!_3c){_3c=_44;}_3d=_44;}else{if(_46>0){if(!_3e||_46<_3f){_3f=_46;_3e=_44;}if(!_40||_46>=_41){_41=_46;_40=_44;}}}}if(_45){_42(_44);}});};if(dijit._isElementShown(_3b)){_42(_3b);}return {first:_3c,last:_3d,lowest:_3e,highest:_40};};dijit.getFirstInTabbingOrder=function(_47){var _48=dijit._getTabNavigable(dojo.byId(_47));return _48.lowest?_48.lowest:_48.first;};dijit.getLastInTabbingOrder=function(_49){var _4a=dijit._getTabNavigable(dojo.byId(_49));return _4a.last?_4a.last:_4a.highest;};}if(!dojo._hasResource["dijit._base.place"]){dojo._hasResource["dijit._base.place"]=true;dojo.provide("dijit._base.place");dijit.getViewport=function(){var _4b=dojo.global;var _4c=dojo.doc;var w=0,h=0;var de=_4c.documentElement;var dew=de.clientWidth,deh=de.clientHeight;if(dojo.isMozilla){var _52,_53,_54,_55;var dbw=_4c.body.clientWidth;if(dbw>dew){_52=dew;_54=dbw;}else{_54=dew;_52=dbw;}var dbh=_4c.body.clientHeight;if(dbh>deh){_53=deh;_55=dbh;}else{_55=deh;_53=dbh;}w=(_54>_4b.innerWidth)?_52:_54;h=(_55>_4b.innerHeight)?_53:_55;}else{if(!dojo.isOpera&&_4b.innerWidth){w=_4b.innerWidth;h=_4b.innerHeight;}else{if(dojo.isIE&&de&&deh){w=dew;h=deh;}else{if(dojo.body().clientWidth){w=dojo.body().clientWidth;h=dojo.body().clientHeight;}}}}var _58=dojo._docScroll();return {w:w,h:h,l:_58.x,t:_58.y};};dijit.placeOnScreen=function(_59,pos,_5b,_5c){var _5d=dojo.map(_5b,function(_5e){return {corner:_5e,pos:pos};});return dijit._place(_59,_5d);};dijit._place=function(_5f,_60,_61){var _62=dijit.getViewport();if(!_5f.parentNode||String(_5f.parentNode.tagName).toLowerCase()!="body"){dojo.body().appendChild(_5f);}var _63=null;dojo.some(_60,function(_64){var _65=_64.corner;var pos=_64.pos;if(_61){_61(_5f,_64.aroundCorner,_65);}var _67=_5f.style;var _68=_67.display;var _69=_67.visibility;_67.visibility="hidden";_67.display="";var mb=dojo.marginBox(_5f);_67.display=_68;_67.visibility=_69;var _6b=(_65.charAt(1)=="L"?pos.x:Math.max(_62.l,pos.x-mb.w)),_6c=(_65.charAt(0)=="T"?pos.y:Math.max(_62.t,pos.y-mb.h)),_6d=(_65.charAt(1)=="L"?Math.min(_62.l+_62.w,_6b+mb.w):pos.x),_6e=(_65.charAt(0)=="T"?Math.min(_62.t+_62.h,_6c+mb.h):pos.y),_6f=_6d-_6b,_70=_6e-_6c,_71=(mb.w-_6f)+(mb.h-_70);if(_63==null||_71<_63.overflow){_63={corner:_65,aroundCorner:_64.aroundCorner,x:_6b,y:_6c,w:_6f,h:_70,overflow:_71};}return !_71;});_5f.style.left=_63.x+"px";_5f.style.top=_63.y+"px";if(_63.overflow&&_61){_61(_5f,_63.aroundCorner,_63.corner);}return _63;};dijit.placeOnScreenAroundElement=function(_72,_73,_74,_75){_73=dojo.byId(_73);var _76=_73.style.display;_73.style.display="";var _77=_73.offsetWidth;var _78=_73.offsetHeight;var _79=dojo.coords(_73,true);_73.style.display=_76;var _7a=[];for(var _7b in _74){_7a.push({aroundCorner:_7b,corner:_74[_7b],pos:{x:_79.x+(_7b.charAt(1)=="L"?0:_77),y:_79.y+(_7b.charAt(0)=="T"?0:_78)}});}return dijit._place(_72,_7a,_75);};}if(!dojo._hasResource["dijit._base.window"]){dojo._hasResource["dijit._base.window"]=true;dojo.provide("dijit._base.window");dijit.getDocumentWindow=function(doc){if(dojo.isSafari&&!doc._parentWindow){var fix=function(win){win.document._parentWindow=win;for(var i=0;i<win.frames.length;i++){fix(win.frames[i]);}};fix(window.top);}if(dojo.isIE&&window!==document.parentWindow&&!doc._parentWindow){doc.parentWindow.execScript("document._parentWindow = window;","Javascript");var win=doc._parentWindow;doc._parentWindow=null;return win;}return doc._parentWindow||doc.parentWindow||doc.defaultView;};}if(!dojo._hasResource["dijit._base.popup"]){dojo._hasResource["dijit._base.popup"]=true;dojo.provide("dijit._base.popup");dijit.popup=new function(){var _81=[],_82=1000,_83=1;this.prepare=function(_84){dojo.body().appendChild(_84);var s=_84.style;if(s.display=="none"){s.display="";}s.visibility="hidden";s.position="absolute";s.top="-9999px";};this.open=function(_86){var _87=_86.popup,_88=_86.orient||{"BL":"TL","TL":"BL"},_89=_86.around,id=(_86.around&&_86.around.id)?(_86.around.id+"_dropdown"):("popup_"+_83++);var _8b=dojo.doc.createElement("div");dijit.setWaiRole(_8b,"presentation");_8b.id=id;_8b.className="dijitPopup";_8b.style.zIndex=_82+_81.length;_8b.style.visibility="hidden";if(_86.parent){_8b.dijitPopupParent=_86.parent.id;}dojo.body().appendChild(_8b);var s=_87.domNode.style;s.display="";s.visibility="";s.position="";_8b.appendChild(_87.domNode);var _8d=new dijit.BackgroundIframe(_8b);var _8e=_89?dijit.placeOnScreenAroundElement(_8b,_89,_88,_87.orient?dojo.hitch(_87,"orient"):null):dijit.placeOnScreen(_8b,_86,_88=="R"?["TR","BR","TL","BL"]:["TL","BL","TR","BR"]);_8b.style.visibility="visible";var _8f=[];var _90=function(){for(var pi=_81.length-1;pi>0&&_81[pi].parent===_81[pi-1].widget;pi--){}return _81[pi];};_8f.push(dojo.connect(_8b,"onkeypress",this,function(evt){if(evt.keyCode==dojo.keys.ESCAPE&&_86.onCancel){dojo.stopEvent(evt);_86.onCancel();}else{if(evt.keyCode==dojo.keys.TAB){dojo.stopEvent(evt);var _93=_90();if(_93&&_93.onCancel){_93.onCancel();}}}}));if(_87.onCancel){_8f.push(dojo.connect(_87,"onCancel",null,_86.onCancel));}_8f.push(dojo.connect(_87,_87.onExecute?"onExecute":"onChange",null,function(){var _94=_90();if(_94&&_94.onExecute){_94.onExecute();}}));_81.push({wrapper:_8b,iframe:_8d,widget:_87,parent:_86.parent,onExecute:_86.onExecute,onCancel:_86.onCancel,onClose:_86.onClose,handlers:_8f});if(_87.onOpen){_87.onOpen(_8e);}return _8e;};this.close=function(_95){while(dojo.some(_81,function(_96){return _96.widget==_95;})){var top=_81.pop(),_98=top.wrapper,_99=top.iframe,_9a=top.widget,_9b=top.onClose;if(_9a.onClose){_9a.onClose();}dojo.forEach(top.handlers,dojo.disconnect);if(!_9a||!_9a.domNode){return;}this.prepare(_9a.domNode);_99.destroy();dojo._destroyElement(_98);if(_9b){_9b();}}};}();dijit._frames=new function(){var _9c=[];this.pop=function(){var _9d;if(_9c.length){_9d=_9c.pop();_9d.style.display="";}else{if(dojo.isIE){var _9e="<iframe src='javascript:\"\"'"+" style='position: absolute; left: 0px; top: 0px;"+"z-index: -1; filter:Alpha(Opacity=\"0\");'>";_9d=dojo.doc.createElement(_9e);}else{_9d=dojo.doc.createElement("iframe");_9d.src="javascript:\"\"";_9d.className="dijitBackgroundIframe";}_9d.tabIndex=-1;dojo.body().appendChild(_9d);}return _9d;};this.push=function(_9f){_9f.style.display="";if(dojo.isIE){_9f.style.removeExpression("width");_9f.style.removeExpression("height");}_9c.push(_9f);};}();if(dojo.isIE&&dojo.isIE<7){dojo.addOnLoad(function(){var f=dijit._frames;dojo.forEach([f.pop()],f.push);});}dijit.BackgroundIframe=function(_a1){if(!_a1.id){throw new Error("no id");}if((dojo.isIE&&dojo.isIE<7)||(dojo.isFF&&dojo.isFF<3&&dojo.hasClass(dojo.body(),"dijit_a11y"))){var _a2=dijit._frames.pop();_a1.appendChild(_a2);if(dojo.isIE){_a2.style.setExpression("width",dojo._scopeName+".doc.getElementById('"+_a1.id+"').offsetWidth");_a2.style.setExpression("height",dojo._scopeName+".doc.getElementById('"+_a1.id+"').offsetHeight");}this.iframe=_a2;}};dojo.extend(dijit.BackgroundIframe,{destroy:function(){if(this.iframe){dijit._frames.push(this.iframe);delete this.iframe;}}});}if(!dojo._hasResource["dijit._base.scroll"]){dojo._hasResource["dijit._base.scroll"]=true;dojo.provide("dijit._base.scroll");dijit.scrollIntoView=function(_a3){var _a4=_a3.parentNode;var _a5=_a4.scrollTop+dojo.marginBox(_a4).h;var _a6=_a3.offsetTop+dojo.marginBox(_a3).h;if(_a5<_a6){_a4.scrollTop+=(_a6-_a5);}else{if(_a4.scrollTop>_a3.offsetTop){_a4.scrollTop-=(_a4.scrollTop-_a3.offsetTop);}}};}if(!dojo._hasResource["dijit._base.sniff"]){dojo._hasResource["dijit._base.sniff"]=true;dojo.provide("dijit._base.sniff");(function(){var d=dojo;var ie=d.isIE;var _a9=d.isOpera;var maj=Math.floor;var ff=d.isFF;var _ac={dj_ie:ie,dj_ie6:maj(ie)==6,dj_ie7:maj(ie)==7,dj_iequirks:ie&&d.isQuirks,dj_opera:_a9,dj_opera8:maj(_a9)==8,dj_opera9:maj(_a9)==9,dj_khtml:d.isKhtml,dj_safari:d.isSafari,dj_gecko:d.isMozilla,dj_ff2:maj(ff)==2};for(var p in _ac){if(_ac[p]){var _ae=dojo.doc.documentElement;if(_ae.className){_ae.className+=" "+p;}else{_ae.className=p;}}}})();}if(!dojo._hasResource["dijit._base.bidi"]){dojo._hasResource["dijit._base.bidi"]=true;dojo.provide("dijit._base.bidi");dojo.addOnLoad(function(){if(!dojo._isBodyLtr()){dojo.addClass(dojo.body(),"dijitRtl");}});}if(!dojo._hasResource["dijit._base.typematic"]){dojo._hasResource["dijit._base.typematic"]=true;dojo.provide("dijit._base.typematic");dijit.typematic={_fireEventAndReload:function(){this._timer=null;this._callback(++this._count,this._node,this._evt);this._currentTimeout=(this._currentTimeout<0)?this._initialDelay:((this._subsequentDelay>1)?this._subsequentDelay:Math.round(this._currentTimeout*this._subsequentDelay));this._timer=setTimeout(dojo.hitch(this,"_fireEventAndReload"),this._currentTimeout);},trigger:function(evt,_b0,_b1,_b2,obj,_b4,_b5){if(obj!=this._obj){this.stop();this._initialDelay=_b5||500;this._subsequentDelay=_b4||0.9;this._obj=obj;this._evt=evt;this._node=_b1;this._currentTimeout=-1;this._count=-1;this._callback=dojo.hitch(_b0,_b2);this._fireEventAndReload();}},stop:function(){if(this._timer){clearTimeout(this._timer);this._timer=null;}if(this._obj){this._callback(-1,this._node,this._evt);this._obj=null;}},addKeyListener:function(_b6,_b7,_b8,_b9,_ba,_bb){return [dojo.connect(_b6,"onkeypress",this,function(evt){if(evt.keyCode==_b7.keyCode&&(!_b7.charCode||_b7.charCode==evt.charCode)&&(_b7.ctrlKey===undefined||_b7.ctrlKey==evt.ctrlKey)&&(_b7.altKey===undefined||_b7.altKey==evt.ctrlKey)&&(_b7.shiftKey===undefined||_b7.shiftKey==evt.ctrlKey)){dojo.stopEvent(evt);dijit.typematic.trigger(_b7,_b8,_b6,_b9,_b7,_ba,_bb);}else{if(dijit.typematic._obj==_b7){dijit.typematic.stop();}}}),dojo.connect(_b6,"onkeyup",this,function(evt){if(dijit.typematic._obj==_b7){dijit.typematic.stop();}})];},addMouseListener:function(_be,_bf,_c0,_c1,_c2){var dc=dojo.connect;return [dc(_be,"mousedown",this,function(evt){dojo.stopEvent(evt);dijit.typematic.trigger(evt,_bf,_be,_c0,_be,_c1,_c2);}),dc(_be,"mouseup",this,function(evt){dojo.stopEvent(evt);dijit.typematic.stop();}),dc(_be,"mouseout",this,function(evt){dojo.stopEvent(evt);dijit.typematic.stop();}),dc(_be,"mousemove",this,function(evt){dojo.stopEvent(evt);}),dc(_be,"dblclick",this,function(evt){dojo.stopEvent(evt);if(dojo.isIE){dijit.typematic.trigger(evt,_bf,_be,_c0,_be,_c1,_c2);setTimeout(dojo.hitch(this,dijit.typematic.stop),50);}})];},addListener:function(_c9,_ca,_cb,_cc,_cd,_ce,_cf){return this.addKeyListener(_ca,_cb,_cc,_cd,_ce,_cf).concat(this.addMouseListener(_c9,_cc,_cd,_ce,_cf));}};}if(!dojo._hasResource["dijit._base.wai"]){dojo._hasResource["dijit._base.wai"]=true;dojo.provide("dijit._base.wai");dijit.wai={onload:function(){var div=dojo.doc.createElement("div");div.id="a11yTestNode";div.style.cssText="border: 1px solid;"+"border-color:red green;"+"position: absolute;"+"height: 5px;"+"top: -999px;"+"background-image: url(\""+dojo.moduleUrl("dojo","resources/blank.gif")+"\");";dojo.body().appendChild(div);var cs=dojo.getComputedStyle(div);if(cs){var _d2=cs.backgroundImage;var _d3=(cs.borderTopColor==cs.borderRightColor)||(_d2!=null&&(_d2=="none"||_d2=="url(invalid-url:)"));dojo[_d3?"addClass":"removeClass"](dojo.body(),"dijit_a11y");if(dojo.isIE){div.outerHTML="";}else{dojo.body().removeChild(div);}}}};if(dojo.isIE||dojo.isMoz){dojo._loaders.unshift(dijit.wai.onload);}dojo.mixin(dijit,{hasWaiRole:function(_d4){return _d4.hasAttribute?_d4.hasAttribute("role"):!!_d4.getAttribute("role");},getWaiRole:function(_d5){var _d6=_d5.getAttribute("role");if(_d6){var _d7=_d6.indexOf(":");return _d7==-1?_d6:_d6.substring(_d7+1);}else{return "";}},setWaiRole:function(_d8,_d9){_d8.setAttribute("role",(dojo.isFF&&dojo.isFF<3)?"wairole:"+_d9:_d9);},removeWaiRole:function(_da){_da.removeAttribute("role");},hasWaiState:function(_db,_dc){if(dojo.isFF&&dojo.isFF<3){return _db.hasAttributeNS("http://www.w3.org/2005/07/aaa",_dc);}else{return _db.hasAttribute?_db.hasAttribute("aria-"+_dc):!!_db.getAttribute("aria-"+_dc);}},getWaiState:function(_dd,_de){if(dojo.isFF&&dojo.isFF<3){return _dd.getAttributeNS("http://www.w3.org/2005/07/aaa",_de);}else{var _df=_dd.getAttribute("aria-"+_de);return _df?_df:"";}},setWaiState:function(_e0,_e1,_e2){if(dojo.isFF&&dojo.isFF<3){_e0.setAttributeNS("http://www.w3.org/2005/07/aaa","aaa:"+_e1,_e2);}else{_e0.setAttribute("aria-"+_e1,_e2);}},removeWaiState:function(_e3,_e4){if(dojo.isFF&&dojo.isFF<3){_e3.removeAttributeNS("http://www.w3.org/2005/07/aaa",_e4);}else{_e3.removeAttribute("aria-"+_e4);}}});}if(!dojo._hasResource["dijit._base"]){dojo._hasResource["dijit._base"]=true;dojo.provide("dijit._base");if(dojo.isSafari){dojo.connect(window,"load",function(){window.resizeBy(1,0);setTimeout(function(){window.resizeBy(-1,0);},10);});}}if(!dojo._hasResource["dijit._Widget"]){dojo._hasResource["dijit._Widget"]=true;dojo.provide("dijit._Widget");dojo.require("dijit._base");dojo.declare("dijit._Widget",null,{id:"",lang:"",dir:"","class":"",style:"",title:"",srcNodeRef:null,domNode:null,attributeMap:{id:"",dir:"",lang:"","class":"",style:"",title:""},postscript:function(_e5,_e6){this.create(_e5,_e6);},create:function(_e7,_e8){this.srcNodeRef=dojo.byId(_e8);this._connects=[];this._attaches=[];if(this.srcNodeRef&&(typeof this.srcNodeRef.id=="string")){this.id=this.srcNodeRef.id;}if(_e7){this.params=_e7;dojo.mixin(this,_e7);}this.postMixInProperties();if(!this.id){this.id=dijit.getUniqueId(this.declaredClass.replace(/\./g,"_"));}dijit.registry.add(this);this.buildRendering();if(this.domNode){for(var _e9 in this.attributeMap){var _ea=this[_e9];if(typeof _ea!="object"&&((_ea!==""&&_ea!==false)||(_e7&&_e7[_e9]))){this.setAttribute(_e9,_ea);}}}if(this.domNode){this.domNode.setAttribute("widgetId",this.id);}this.postCreate();if(this.srcNodeRef&&!this.srcNodeRef.parentNode){delete this.srcNodeRef;}},postMixInProperties:function(){},buildRendering:function(){this.domNode=this.srcNodeRef||dojo.doc.createElement("div");},postCreate:function(){},startup:function(){this._started=true;},destroyRecursive:function(_eb){this.destroyDescendants();this.destroy();},destroy:function(_ec){this.uninitialize();dojo.forEach(this._connects,function(_ed){dojo.forEach(_ed,dojo.disconnect);});dojo.forEach(this._supportingWidgets||[],function(w){w.destroy();});this.destroyRendering(_ec);dijit.registry.remove(this.id);},destroyRendering:function(_ef){if(this.bgIframe){this.bgIframe.destroy();delete this.bgIframe;}if(this.domNode){dojo._destroyElement(this.domNode);delete this.domNode;}if(this.srcNodeRef){dojo._destroyElement(this.srcNodeRef);delete this.srcNodeRef;}},destroyDescendants:function(){dojo.forEach(this.getDescendants(),function(_f0){_f0.destroy();});},uninitialize:function(){return false;},onFocus:function(){},onBlur:function(){},_onFocus:function(e){this.onFocus();},_onBlur:function(){this.onBlur();},setAttribute:function(_f2,_f3){var _f4=this[this.attributeMap[_f2]||"domNode"];this[_f2]=_f3;switch(_f2){case "class":dojo.addClass(_f4,_f3);break;case "style":if(_f4.style.cssText){_f4.style.cssText+="; "+_f3;}else{_f4.style.cssText=_f3;}break;default:if(/^on[A-Z]/.test(_f2)){_f2=_f2.toLowerCase();}if(typeof _f3=="function"){_f3=dojo.hitch(this,_f3);}dojo.attr(_f4,_f2,_f3);}},toString:function(){return "[Widget "+this.declaredClass+", "+(this.id||"NO ID")+"]";},getDescendants:function(){if(this.containerNode){var _f5=dojo.query("[widgetId]",this.containerNode);return _f5.map(dijit.byNode);}else{return [];}},nodesWithKeyClick:["input","button"],connect:function(obj,_f7,_f8){var _f9=[];if(_f7=="ondijitclick"){if(!this.nodesWithKeyClick[obj.nodeName]){_f9.push(dojo.connect(obj,"onkeydown",this,function(e){if(e.keyCode==dojo.keys.ENTER){return (dojo.isString(_f8))?this[_f8](e):_f8.call(this,e);}else{if(e.keyCode==dojo.keys.SPACE){dojo.stopEvent(e);}}}));_f9.push(dojo.connect(obj,"onkeyup",this,function(e){if(e.keyCode==dojo.keys.SPACE){return dojo.isString(_f8)?this[_f8](e):_f8.call(this,e);}}));}_f7="onclick";}_f9.push(dojo.connect(obj,_f7,this,_f8));this._connects.push(_f9);return _f9;},disconnect:function(_fc){for(var i=0;i<this._connects.length;i++){if(this._connects[i]==_fc){dojo.forEach(_fc,dojo.disconnect);this._connects.splice(i,1);return;}}},isLeftToRight:function(){if(!("_ltr" in this)){this._ltr=dojo.getComputedStyle(this.domNode).direction!="rtl";}return this._ltr;},isFocusable:function(){return this.focus&&(dojo.style(this.domNode,"display")!="none");}});}if(!dojo._hasResource["dijit._Templated"]){dojo._hasResource["dijit._Templated"]=true;dojo.provide("dijit._Templated");dojo.declare("dijit._Templated",null,{templateNode:null,templateString:null,templatePath:null,widgetsInTemplate:false,containerNode:null,_skipNodeCache:false,_stringRepl:function(_fe){var _ff=this.declaredClass,_100=this;return dojo.string.substitute(_fe,this,function(_101,key){if(key.charAt(0)=="!"){_101=_100[key.substr(1)];}if(typeof _101=="undefined"){throw new Error(_ff+" template:"+key);}if(!_101){return "";}return key.charAt(0)=="!"?_101:_101.toString().replace(/"/g,"&quot;");},this);},buildRendering:function(){var _103=dijit._Templated.getCachedTemplate(this.templatePath,this.templateString,this._skipNodeCache);var node;if(dojo.isString(_103)){node=dijit._Templated._createNodesFromText(this._stringRepl(_103))[0];}else{node=_103.cloneNode(true);}this._attachTemplateNodes(node);var _105=this.srcNodeRef;if(_105&&_105.parentNode){_105.parentNode.replaceChild(node,_105);}this.domNode=node;if(this.widgetsInTemplate){var cw=this._supportingWidgets=dojo.parser.parse(node);this._attachTemplateNodes(cw,function(n,p){return n[p];});}this._fillContent(_105);},_fillContent:function(_109){var dest=this.containerNode;if(_109&&dest){while(_109.hasChildNodes()){dest.appendChild(_109.firstChild);}}},_attachTemplateNodes:function(_10b,_10c){_10c=_10c||function(n,p){return n.getAttribute(p);};var _10f=dojo.isArray(_10b)?_10b:(_10b.all||_10b.getElementsByTagName("*"));var x=dojo.isArray(_10b)?0:-1;for(;x<_10f.length;x++){var _111=(x==-1)?_10b:_10f[x];if(this.widgetsInTemplate&&_10c(_111,"dojoType")){continue;}var _112=_10c(_111,"dojoAttachPoint");if(_112){var _113,_114=_112.split(/\s*,\s*/);while((_113=_114.shift())){if(dojo.isArray(this[_113])){this[_113].push(_111);}else{this[_113]=_111;}}}var _115=_10c(_111,"dojoAttachEvent");if(_115){var _116,_117=_115.split(/\s*,\s*/);var trim=dojo.trim;while((_116=_117.shift())){if(_116){var _119=null;if(_116.indexOf(":")!=-1){var _11a=_116.split(":");_116=trim(_11a[0]);_119=trim(_11a[1]);}else{_116=trim(_116);}if(!_119){_119=_116;}this.connect(_111,_116,_119);}}}var role=_10c(_111,"waiRole");if(role){dijit.setWaiRole(_111,role);}var _11c=_10c(_111,"waiState");if(_11c){dojo.forEach(_11c.split(/\s*,\s*/),function(_11d){if(_11d.indexOf("-")!=-1){var pair=_11d.split("-");dijit.setWaiState(_111,pair[0],pair[1]);}});}}}});dijit._Templated._templateCache={};dijit._Templated.getCachedTemplate=function(_11f,_120,_121){var _122=dijit._Templated._templateCache;var key=_120||_11f;var _124=_122[key];if(_124){if(!_124.ownerDocument||_124.ownerDocument==dojo.doc){return _124;}dojo._destroyElement(_124);}if(!_120){_120=dijit._Templated._sanitizeTemplateString(dojo._getText(_11f));}_120=dojo.string.trim(_120);if(_121||_120.match(/\$\{([^\}]+)\}/g)){return (_122[key]=_120);}else{return (_122[key]=dijit._Templated._createNodesFromText(_120)[0]);}};dijit._Templated._sanitizeTemplateString=function(_125){if(_125){_125=_125.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");var _126=_125.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_126){_125=_126[1];}}else{_125="";}return _125;};if(dojo.isIE){dojo.addOnUnload(function(){var _127=dijit._Templated._templateCache;for(var key in _127){var _129=_127[key];if(!isNaN(_129.nodeType)){dojo._destroyElement(_129);}delete _127[key];}});}(function(){var _12a={cell:{re:/^<t[dh][\s\r\n>]/i,pre:"<table><tbody><tr>",post:"</tr></tbody></table>"},row:{re:/^<tr[\s\r\n>]/i,pre:"<table><tbody>",post:"</tbody></table>"},section:{re:/^<(thead|tbody|tfoot)[\s\r\n>]/i,pre:"<table>",post:"</table>"}};var tn;dijit._Templated._createNodesFromText=function(text){if(tn&&tn.ownerDocument!=dojo.doc){dojo._destroyElement(tn);tn=undefined;}if(!tn){tn=dojo.doc.createElement("div");tn.style.display="none";dojo.body().appendChild(tn);}var _12d="none";var _12e=text.replace(/^\s+/,"");for(var type in _12a){var map=_12a[type];if(map.re.test(_12e)){_12d=type;text=map.pre+text+map.post;break;}}tn.innerHTML=text;if(tn.normalize){tn.normalize();}var tag={cell:"tr",row:"tbody",section:"table"}[_12d];var _132=(typeof tag!="undefined")?tn.getElementsByTagName(tag)[0]:tn;var _133=[];while(_132.firstChild){_133.push(_132.removeChild(_132.firstChild));}tn.innerHTML="";return _133;};})();dojo.extend(dijit._Widget,{dojoAttachEvent:"",dojoAttachPoint:"",waiRole:"",waiState:""});}if(!dojo._hasResource["dijit._Container"]){dojo._hasResource["dijit._Container"]=true;dojo.provide("dijit._Container");dojo.declare("dijit._Contained",null,{getParent:function(){for(var p=this.domNode.parentNode;p;p=p.parentNode){var id=p.getAttribute&&p.getAttribute("widgetId");if(id){var _136=dijit.byId(id);return _136.isContainer?_136:null;}}return null;},_getSibling:function(_137){var node=this.domNode;do{node=node[_137+"Sibling"];}while(node&&node.nodeType!=1);if(!node){return null;}var id=node.getAttribute("widgetId");return dijit.byId(id);},getPreviousSibling:function(){return this._getSibling("previous");},getNextSibling:function(){return this._getSibling("next");}});dojo.declare("dijit._Container",null,{isContainer:true,addChild:function(_13a,_13b){if(_13b===undefined){_13b="last";}var _13c=this.containerNode||this.domNode;if(_13b&&typeof _13b=="number"){var _13d=dojo.query("> [widgetid]",_13c);if(_13d&&_13d.length>=_13b){_13c=_13d[_13b-1];_13b="after";}}dojo.place(_13a.domNode,_13c,_13b);if(this._started&&!_13a._started){_13a.startup();}},removeChild:function(_13e){var node=_13e.domNode;node.parentNode.removeChild(node);},_nextElement:function(node){do{node=node.nextSibling;}while(node&&node.nodeType!=1);return node;},_firstElement:function(node){node=node.firstChild;if(node&&node.nodeType!=1){node=this._nextElement(node);}return node;},getChildren:function(){return dojo.query("> [widgetId]",this.containerNode||this.domNode).map(dijit.byNode);},hasChildren:function(){var cn=this.containerNode||this.domNode;return !!this._firstElement(cn);},_getSiblingOfChild:function(_143,dir){var node=_143.domNode;var _146=(dir>0?"nextSibling":"previousSibling");do{node=node[_146];}while(node&&(node.nodeType!=1||!dijit.byNode(node)));return node?dijit.byNode(node):null;}});dojo.declare("dijit._KeyNavContainer",[dijit._Container],{_keyNavCodes:{},connectKeyNavHandlers:function(_147,_148){var _149=this._keyNavCodes={};var prev=dojo.hitch(this,this.focusPrev);var next=dojo.hitch(this,this.focusNext);dojo.forEach(_147,function(code){_149[code]=prev;});dojo.forEach(_148,function(code){_149[code]=next;});this.connect(this.domNode,"onkeypress","_onContainerKeypress");this.connect(this.domNode,"onfocus","_onContainerFocus");},startupKeyNavChildren:function(){dojo.forEach(this.getChildren(),dojo.hitch(this,"_startupChild"));},addChild:function(_14e,_14f){dijit._KeyNavContainer.superclass.addChild.apply(this,arguments);this._startupChild(_14e);},focus:function(){this.focusFirstChild();},focusFirstChild:function(){this.focusChild(this._getFirstFocusableChild());},focusNext:function(){if(this.focusedChild&&this.focusedChild.hasNextFocalNode&&this.focusedChild.hasNextFocalNode()){this.focusedChild.focusNext();return;}var _150=this._getNextFocusableChild(this.focusedChild,1);if(_150.getFocalNodes){this.focusChild(_150,_150.getFocalNodes()[0]);}else{this.focusChild(_150);}},focusPrev:function(){if(this.focusedChild&&this.focusedChild.hasPrevFocalNode&&this.focusedChild.hasPrevFocalNode()){this.focusedChild.focusPrev();return;}var _151=this._getNextFocusableChild(this.focusedChild,-1);if(_151.getFocalNodes){var _152=_151.getFocalNodes();this.focusChild(_151,_152[_152.length-1]);}else{this.focusChild(_151);}},focusChild:function(_153,node){if(_153){if(this.focusedChild&&_153!==this.focusedChild){this._onChildBlur(this.focusedChild);}this.focusedChild=_153;if(node&&_153.focusFocalNode){_153.focusFocalNode(node);}else{_153.focus();}}},_startupChild:function(_155){if(_155.getFocalNodes){dojo.forEach(_155.getFocalNodes(),function(node){dojo.attr(node,"tabindex",-1);this._connectNode(node);},this);}else{var node=_155.focusNode||_155.domNode;if(_155.isFocusable()){dojo.attr(node,"tabindex",-1);}this._connectNode(node);}},_connectNode:function(node){this.connect(node,"onfocus","_onNodeFocus");this.connect(node,"onblur","_onNodeBlur");},_onContainerFocus:function(evt){if(evt.target===this.domNode){this.focusFirstChild();}},_onContainerKeypress:function(evt){if(evt.ctrlKey||evt.altKey){return;}var func=this._keyNavCodes[evt.keyCode];if(func){func();dojo.stopEvent(evt);}},_onNodeFocus:function(evt){dojo.attr(this.domNode,"tabindex",-1);var _15d=dijit.getEnclosingWidget(evt.target);if(_15d&&_15d.isFocusable()){this.focusedChild=_15d;}dojo.stopEvent(evt);},_onNodeBlur:function(evt){if(this.tabIndex){dojo.attr(this.domNode,"tabindex",this.tabIndex);}dojo.stopEvent(evt);},_onChildBlur:function(_15f){},_getFirstFocusableChild:function(){return this._getNextFocusableChild(null,1);},_getNextFocusableChild:function(_160,dir){if(_160){_160=this._getSiblingOfChild(_160,dir);}var _162=this.getChildren();for(var i=0;i<_162.length;i++){if(!_160){_160=_162[(dir>0)?0:(_162.length-1)];}if(_160.isFocusable()){return _160;}_160=this._getSiblingOfChild(_160,dir);}return null;}});}if(!dojo._hasResource["dijit.layout._LayoutWidget"]){dojo._hasResource["dijit.layout._LayoutWidget"]=true;dojo.provide("dijit.layout._LayoutWidget");dojo.declare("dijit.layout._LayoutWidget",[dijit._Widget,dijit._Container,dijit._Contained],{isLayoutContainer:true,postCreate:function(){dojo.addClass(this.domNode,"dijitContainer");},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),function(_164){_164.startup();});if(!this.getParent||!this.getParent()){this.resize();this.connect(window,"onresize",function(){this.resize();});}this.inherited(arguments);},resize:function(args){var node=this.domNode;if(args){dojo.marginBox(node,args);if(args.t){node.style.top=args.t+"px";}if(args.l){node.style.left=args.l+"px";}}var mb=dojo.mixin(dojo.marginBox(node),args||{});this._contentBox=dijit.layout.marginBox2contentBox(node,mb);this.layout();},layout:function(){}});dijit.layout.marginBox2contentBox=function(node,mb){var cs=dojo.getComputedStyle(node);var me=dojo._getMarginExtents(node,cs);var pb=dojo._getPadBorderExtents(node,cs);return {l:dojo._toPixelValue(node,cs.paddingLeft),t:dojo._toPixelValue(node,cs.paddingTop),w:mb.w-(me.w+pb.w),h:mb.h-(me.h+pb.h)};};(function(){var _16d=function(word){return word.substring(0,1).toUpperCase()+word.substring(1);};var size=function(_170,dim){_170.resize?_170.resize(dim):dojo.marginBox(_170.domNode,dim);dojo.mixin(_170,dojo.marginBox(_170.domNode));dojo.mixin(_170,dim);};dijit.layout.layoutChildren=function(_172,dim,_174){dim=dojo.mixin({},dim);dojo.addClass(_172,"dijitLayoutContainer");_174=dojo.filter(_174,function(item){return item.layoutAlign!="client";}).concat(dojo.filter(_174,function(item){return item.layoutAlign=="client";}));dojo.forEach(_174,function(_177){var elm=_177.domNode,pos=_177.layoutAlign;var _17a=elm.style;_17a.left=dim.l+"px";_17a.top=dim.t+"px";_17a.bottom=_17a.right="auto";dojo.addClass(elm,"dijitAlign"+_16d(pos));if(pos=="top"||pos=="bottom"){size(_177,{w:dim.w});dim.h-=_177.h;if(pos=="top"){dim.t+=_177.h;}else{_17a.top=dim.t+dim.h+"px";}}else{if(pos=="left"||pos=="right"){size(_177,{h:dim.h});dim.w-=_177.w;if(pos=="left"){dim.l+=_177.w;}else{_17a.left=dim.l+dim.w+"px";}}else{if(pos=="client"){size(_177,dim);}}}});};})();}if(!dojo._hasResource["dijit.form._FormWidget"]){dojo._hasResource["dijit.form._FormWidget"]=true;dojo.provide("dijit.form._FormWidget");dojo.declare("dijit.form._FormWidget",[dijit._Widget,dijit._Templated],{baseClass:"",name:"",alt:"",value:"",type:"text",tabIndex:"0",disabled:false,readOnly:false,intermediateChanges:false,attributeMap:dojo.mixin(dojo.clone(dijit._Widget.prototype.attributeMap),{value:"focusNode",disabled:"focusNode",readOnly:"focusNode",id:"focusNode",tabIndex:"focusNode",alt:"focusNode"}),setAttribute:function(attr,_17c){this.inherited(arguments);switch(attr){case "disabled":var _17d=this[this.attributeMap["tabIndex"]||"domNode"];if(_17c){this._hovering=false;this._active=false;_17d.removeAttribute("tabIndex");}else{_17d.setAttribute("tabIndex",this.tabIndex);}dijit.setWaiState(this[this.attributeMap["disabled"]||"domNode"],"disabled",_17c);this._setStateClass();}},setDisabled:function(_17e){dojo.deprecated("setDisabled("+_17e+") is deprecated. Use setAttribute('disabled',"+_17e+") instead.","","2.0");this.setAttribute("disabled",_17e);},_onMouse:function(_17f){var _180=_17f.currentTarget;if(_180&&_180.getAttribute){this.stateModifier=_180.getAttribute("stateModifier")||"";}if(!this.disabled){switch(_17f.type){case "mouseenter":case "mouseover":this._hovering=true;this._active=this._mouseDown;break;case "mouseout":case "mouseleave":this._hovering=false;this._active=false;break;case "mousedown":this._active=true;this._mouseDown=true;var _181=this.connect(dojo.body(),"onmouseup",function(){this._active=false;this._mouseDown=false;this._setStateClass();this.disconnect(_181);});if(this.isFocusable()){this.focus();}break;}this._setStateClass();}},isFocusable:function(){return !this.disabled&&!this.readOnly&&this.focusNode&&(dojo.style(this.domNode,"display")!="none");},focus:function(){setTimeout(dojo.hitch(this,dijit.focus,this.focusNode),0);},_setStateClass:function(){if(!("staticClass" in this)){this.staticClass=(this.stateNode||this.domNode).className;}var _182=[this.baseClass];function multiply(_183){_182=_182.concat(dojo.map(_182,function(c){return c+_183;}),"dijit"+_183);};if(this.checked){multiply("Checked");}if(this.state){multiply(this.state);}if(this.selected){multiply("Selected");}if(this.disabled){multiply("Disabled");}else{if(this.readOnly){multiply("ReadOnly");}else{if(this._active){multiply(this.stateModifier+"Active");}else{if(this._focused){multiply("Focused");}if(this._hovering){multiply(this.stateModifier+"Hover");}}}}(this.stateNode||this.domNode).className=this.staticClass+" "+_182.join(" ");},onChange:function(_185){},_onChangeMonitor:"value",_onChangeActive:false,_handleOnChange:function(_186,_187){this._lastValue=_186;if(this._lastValueReported==undefined&&(_187===null||!this._onChangeActive)){this._resetValue=this._lastValueReported=_186;}if((this.intermediateChanges||_187||_187===undefined)&&((_186&&_186.toString)?_186.toString():_186)!==((this._lastValueReported&&this._lastValueReported.toString)?this._lastValueReported.toString():this._lastValueReported)){this._lastValueReported=_186;if(this._onChangeActive){this.onChange(_186);}}},reset:function(){this._hasBeenBlurred=false;if(this.setValue&&!this._getValueDeprecated){this.setValue(this._resetValue,true);}else{if(this._onChangeMonitor){this.setAttribute(this._onChangeMonitor,(this._resetValue!==undefined&&this._resetValue!==null)?this._resetValue:"");}}},create:function(){this.inherited(arguments);this._onChangeActive=true;this._setStateClass();},destroy:function(){if(this._layoutHackHandle){clearTimeout(this._layoutHackHandle);}this.inherited(arguments);},setValue:function(_188){dojo.deprecated("dijit.form._FormWidget:setValue("+_188+") is deprecated.  Use setAttribute('value',"+_188+") instead.","","2.0");this.setAttribute("value",_188);},_getValueDeprecated:true,getValue:function(){dojo.deprecated("dijit.form._FormWidget:getValue() is deprecated.  Use widget.value instead.","","2.0");return this.value;},_layoutHack:function(){if(dojo.isFF==2){var node=this.domNode;var old=node.style.opacity;node.style.opacity="0.999";this._layoutHackHandle=setTimeout(dojo.hitch(this,function(){this._layoutHackHandle=null;node.style.opacity=old;}),0);}}});dojo.declare("dijit.form._FormValueWidget",dijit.form._FormWidget,{attributeMap:dojo.mixin(dojo.clone(dijit.form._FormWidget.prototype.attributeMap),{value:""}),postCreate:function(){this.setValue(this.value,null);},setValue:function(_18b,_18c){this.value=_18b;this._handleOnChange(_18b,_18c);},_getValueDeprecated:false,getValue:function(){return this._lastValue;},undo:function(){this.setValue(this._lastValueReported,false);},_valueChanged:function(){var v=this.getValue();var lv=this._lastValueReported;return ((v!==null&&(v!==undefined)&&v.toString)?v.toString():"")!==((lv!==null&&(lv!==undefined)&&lv.toString)?lv.toString():"");},_onKeyPress:function(e){if(e.keyCode==dojo.keys.ESCAPE&&!e.shiftKey&&!e.ctrlKey&&!e.altKey){if(this._valueChanged()){this.undo();dojo.stopEvent(e);return false;}}return true;}});}if(!dojo._hasResource["dijit.dijit"]){dojo._hasResource["dijit.dijit"]=true;dojo.provide("dijit.dijit");}if(!dojo._hasResource["dijit.layout.ContentPane"]){dojo._hasResource["dijit.layout.ContentPane"]=true;dojo.provide("dijit.layout.ContentPane");dojo.declare("dijit.layout.ContentPane",dijit._Widget,{href:"",extractContent:false,parseOnLoad:true,preventCache:false,preload:false,refreshOnShow:false,loadingMessage:"<span class='dijitContentPaneLoading'>${loadingState}</span>",errorMessage:"<span class='dijitContentPaneError'>${errorState}</span>",isLoaded:false,"class":"dijitContentPane",doLayout:"auto",postCreate:function(){this.domNode.title="";if(!this.containerNode){this.containerNode=this.domNode;}if(this.preload){this._loadCheck();}var _190=dojo.i18n.getLocalization("dijit","loading",this.lang);this.loadingMessage=dojo.string.substitute(this.loadingMessage,_190);this.errorMessage=dojo.string.substitute(this.errorMessage,_190);var _191=dijit.getWaiRole(this.domNode);if(!_191){dijit.setWaiRole(this.domNode,"group");}dojo.addClass(this.domNode,this["class"]);},startup:function(){if(this._started){return;}if(this.doLayout!="false"&&this.doLayout!==false){this._checkIfSingleChild();if(this._singleChild){this._singleChild.startup();}}this._loadCheck();this.inherited(arguments);},_checkIfSingleChild:function(){var _192=dojo.query(">",this.containerNode||this.domNode),_193=_192.filter("[widgetId]");if(_192.length==1&&_193.length==1){this.isContainer=true;this._singleChild=dijit.byNode(_193[0]);}else{delete this.isContainer;delete this._singleChild;}},refresh:function(){return this._prepareLoad(true);},setHref:function(href){this.href=href;return this._prepareLoad();},setContent:function(data){if(!this._isDownloaded){this.href="";this._onUnloadHandler();}this._setContent(data||"");this._isDownloaded=false;if(this.parseOnLoad){this._createSubWidgets();}if(this.doLayout!="false"&&this.doLayout!==false){this._checkIfSingleChild();if(this._singleChild&&this._singleChild.resize){this._singleChild.startup();this._singleChild.resize(this._contentBox||dojo.contentBox(this.containerNode||this.domNode));}}this._onLoadHandler();},cancel:function(){if(this._xhrDfd&&(this._xhrDfd.fired==-1)){this._xhrDfd.cancel();}delete this._xhrDfd;},destroy:function(){if(this._beingDestroyed){return;}this._onUnloadHandler();this._beingDestroyed=true;this.inherited("destroy",arguments);},resize:function(size){dojo.marginBox(this.domNode,size);var node=this.containerNode||this.domNode,mb=dojo.mixin(dojo.marginBox(node),size||{});this._contentBox=dijit.layout.marginBox2contentBox(node,mb);if(this._singleChild&&this._singleChild.resize){this._singleChild.resize(this._contentBox);}},_prepareLoad:function(_199){this.cancel();this.isLoaded=false;this._loadCheck(_199);},_isShown:function(){if("open" in this){return this.open;}else{var node=this.domNode;return (node.style.display!="none")&&(node.style.visibility!="hidden");}},_loadCheck:function(_19b){var _19c=this._isShown();if(this.href&&(_19b||(this.preload&&!this._xhrDfd)||(this.refreshOnShow&&_19c&&!this._xhrDfd)||(!this.isLoaded&&_19c&&!this._xhrDfd))){this._downloadExternalContent();}},_downloadExternalContent:function(){this._onUnloadHandler();this._setContent(this.onDownloadStart.call(this));var self=this;var _19e={preventCache:(this.preventCache||this.refreshOnShow),url:this.href,handleAs:"text"};if(dojo.isObject(this.ioArgs)){dojo.mixin(_19e,this.ioArgs);}var hand=this._xhrDfd=(this.ioMethod||dojo.xhrGet)(_19e);hand.addCallback(function(html){try{self.onDownloadEnd.call(self);self._isDownloaded=true;self.setContent.call(self,html);}catch(err){self._onError.call(self,"Content",err);}delete self._xhrDfd;return html;});hand.addErrback(function(err){if(!hand.cancelled){self._onError.call(self,"Download",err);}delete self._xhrDfd;return err;});},_onLoadHandler:function(){this.isLoaded=true;try{this.onLoad.call(this);}catch(e){console.error("Error "+this.widgetId+" running custom onLoad code");}},_onUnloadHandler:function(){this.isLoaded=false;this.cancel();try{this.onUnload.call(this);}catch(e){console.error("Error "+this.widgetId+" running custom onUnload code");}},_setContent:function(cont){this.destroyDescendants();try{var node=this.containerNode||this.domNode;while(node.firstChild){dojo._destroyElement(node.firstChild);}if(typeof cont=="string"){if(this.extractContent){match=cont.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(match){cont=match[1];}}node.innerHTML=cont;}else{if(cont.nodeType){node.appendChild(cont);}else{dojo.forEach(cont,function(n){node.appendChild(n.cloneNode(true));});}}}catch(e){var _1a5=this.onContentError(e);try{node.innerHTML=_1a5;}catch(e){console.error("Fatal "+this.id+" could not change content due to "+e.message,e);}}},_onError:function(type,err,_1a8){var _1a9=this["on"+type+"Error"].call(this,err);if(_1a8){console.error(_1a8,err);}else{if(_1a9){this._setContent.call(this,_1a9);}}},_createSubWidgets:function(){var _1aa=this.containerNode||this.domNode;try{dojo.parser.parse(_1aa,true);}catch(e){this._onError("Content",e,"Couldn't create widgets in "+this.id+(this.href?" from "+this.href:""));}},onLoad:function(e){},onUnload:function(e){},onDownloadStart:function(){return this.loadingMessage;},onContentError:function(_1ad){},onDownloadError:function(_1ae){return this.errorMessage;},onDownloadEnd:function(){}});}if(!dojo._hasResource["dijit.Menu"]){dojo._hasResource["dijit.Menu"]=true;dojo.provide("dijit.Menu");dojo.declare("dijit.Menu",[dijit._Widget,dijit._Templated,dijit._KeyNavContainer],{constructor:function(){this._bindings=[];},templateString:"<table class=\"dijit dijitMenu dijitReset dijitMenuTable\" waiRole=\"menu\" dojoAttachEvent=\"onkeypress:_onKeyPress\">"+"<tbody class=\"dijitReset\" dojoAttachPoint=\"containerNode\"></tbody>"+"</table>",targetNodeIds:[],contextMenuForWindow:false,leftClickToOpen:false,parentMenu:null,popupDelay:500,_contextMenuWithMouse:false,postCreate:function(){if(this.contextMenuForWindow){this.bindDomNode(dojo.body());}else{dojo.forEach(this.targetNodeIds,this.bindDomNode,this);}this.connectKeyNavHandlers([dojo.keys.UP_ARROW],[dojo.keys.DOWN_ARROW]);},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),function(_1af){_1af.startup();});this.startupKeyNavChildren();this.inherited(arguments);},onExecute:function(){},onCancel:function(_1b0){},_moveToPopup:function(evt){if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled){this.focusedChild._onClick(evt);}},_onKeyPress:function(evt){if(evt.ctrlKey||evt.altKey){return;}switch(evt.keyCode){case dojo.keys.RIGHT_ARROW:this._moveToPopup(evt);dojo.stopEvent(evt);break;case dojo.keys.LEFT_ARROW:if(this.parentMenu){this.onCancel(false);}else{dojo.stopEvent(evt);}break;}},onItemHover:function(item){this.focusChild(item);if(this.focusedChild.popup&&!this.focusedChild.disabled&&!this.hover_timer){this.hover_timer=setTimeout(dojo.hitch(this,"_openPopup"),this.popupDelay);}},_onChildBlur:function(item){dijit.popup.close(item.popup);item._blur();this._stopPopupTimer();},onItemUnhover:function(item){},_stopPopupTimer:function(){if(this.hover_timer){clearTimeout(this.hover_timer);this.hover_timer=null;}},_getTopMenu:function(){for(var top=this;top.parentMenu;top=top.parentMenu){}return top;},onItemClick:function(item,evt){if(item.disabled){return false;}if(item.popup){if(!this.is_open){this._openPopup();}}else{this.onExecute();item.onClick(evt);}},_iframeContentWindow:function(_1b9){var win=dijit.getDocumentWindow(dijit.Menu._iframeContentDocument(_1b9))||dijit.Menu._iframeContentDocument(_1b9)["__parent__"]||(_1b9.name&&dojo.doc.frames[_1b9.name])||null;return win;},_iframeContentDocument:function(_1bb){var doc=_1bb.contentDocument||(_1bb.contentWindow&&_1bb.contentWindow.document)||(_1bb.name&&dojo.doc.frames[_1bb.name]&&dojo.doc.frames[_1bb.name].document)||null;return doc;},bindDomNode:function(node){node=dojo.byId(node);var win=dijit.getDocumentWindow(node.ownerDocument);if(node.tagName.toLowerCase()=="iframe"){win=this._iframeContentWindow(node);node=dojo.withGlobal(win,dojo.body);}var cn=(node==dojo.body()?dojo.doc:node);node[this.id]=this._bindings.push([dojo.connect(cn,(this.leftClickToOpen)?"onclick":"oncontextmenu",this,"_openMyself"),dojo.connect(cn,"onkeydown",this,"_contextKey"),dojo.connect(cn,"onmousedown",this,"_contextMouse")]);},unBindDomNode:function(_1c0){var node=dojo.byId(_1c0);if(node){var bid=node[this.id]-1,b=this._bindings[bid];dojo.forEach(b,dojo.disconnect);delete this._bindings[bid];}},_contextKey:function(e){this._contextMenuWithMouse=false;if(e.keyCode==dojo.keys.F10){dojo.stopEvent(e);if(e.shiftKey&&e.type=="keydown"){var _e={target:e.target,pageX:e.pageX,pageY:e.pageY};_e.preventDefault=_e.stopPropagation=function(){};window.setTimeout(dojo.hitch(this,function(){this._openMyself(_e);}),1);}}},_contextMouse:function(e){this._contextMenuWithMouse=true;},_openMyself:function(e){if(this.leftClickToOpen&&e.button>0){return;}dojo.stopEvent(e);var x,y;if(dojo.isSafari||this._contextMenuWithMouse){x=e.pageX;y=e.pageY;}else{var _1ca=dojo.coords(e.target,true);x=_1ca.x+10;y=_1ca.y+10;}var self=this;var _1cc=dijit.getFocus(this);function closeAndRestoreFocus(){dijit.focus(_1cc);dijit.popup.close(self);};dijit.popup.open({popup:this,x:x,y:y,onExecute:closeAndRestoreFocus,onCancel:closeAndRestoreFocus,orient:this.isLeftToRight()?"L":"R"});this.focus();this._onBlur=function(){this.inherited("_onBlur",arguments);dijit.popup.close(this);};},onOpen:function(e){this.isShowingNow=true;},onClose:function(){this._stopPopupTimer();this.parentMenu=null;this.isShowingNow=false;this.currentPopup=null;if(this.focusedChild){this._onChildBlur(this.focusedChild);this.focusedChild=null;}},_openPopup:function(){this._stopPopupTimer();var _1ce=this.focusedChild;var _1cf=_1ce.popup;if(_1cf.isShowingNow){return;}_1cf.parentMenu=this;var self=this;dijit.popup.open({parent:this,popup:_1cf,around:_1ce.arrowCell,orient:this.isLeftToRight()?{"TR":"TL","TL":"TR"}:{"TL":"TR","TR":"TL"},onCancel:function(){dijit.popup.close(_1cf);_1ce.focus();self.currentPopup=null;}});this.currentPopup=_1cf;if(_1cf.focus){_1cf.focus();}},uninitialize:function(){dojo.forEach(this.targetNodeIds,this.unBindDomNode,this);this.inherited(arguments);}});dojo.declare("dijit.MenuItem",[dijit._Widget,dijit._Templated,dijit._Contained],{templateString:"<tr class=\"dijitReset dijitMenuItem\" "+"dojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">"+"<td class=\"dijitReset\"><div class=\"dijitMenuItemIcon ${iconClass}\" dojoAttachPoint=\"iconNode\"></div></td>"+"<td tabIndex=\"-1\" class=\"dijitReset dijitMenuItemLabel\" dojoAttachPoint=\"containerNode,focusNode\" waiRole=\"menuitem\"></td>"+"<td class=\"dijitReset\" dojoAttachPoint=\"arrowCell\">"+"<div class=\"dijitMenuExpand\" dojoAttachPoint=\"expand\" style=\"display:none\">"+"<span class=\"dijitInline dijitArrowNode dijitMenuExpandInner\">+</span>"+"</div>"+"</td>"+"</tr>",label:"",iconClass:"",disabled:false,postCreate:function(){dojo.setSelectable(this.domNode,false);this.setDisabled(this.disabled);if(this.label){this.setLabel(this.label);}},_onHover:function(){this.getParent().onItemHover(this);},_onUnhover:function(){this.getParent().onItemUnhover(this);},_onClick:function(evt){this.getParent().onItemClick(this,evt);dojo.stopEvent(evt);},onClick:function(evt){},focus:function(){dojo.addClass(this.domNode,"dijitMenuItemHover");try{dijit.focus(this.containerNode);}catch(e){}},_blur:function(){dojo.removeClass(this.domNode,"dijitMenuItemHover");},setLabel:function(_1d3){this.containerNode.innerHTML=this.label=_1d3;},setDisabled:function(_1d4){this.disabled=_1d4;dojo[_1d4?"addClass":"removeClass"](this.domNode,"dijitMenuItemDisabled");dijit.setWaiState(this.containerNode,"disabled",_1d4?"true":"false");}});dojo.declare("dijit.PopupMenuItem",dijit.MenuItem,{_fillContent:function(){if(this.srcNodeRef){var _1d5=dojo.query("*",this.srcNodeRef);dijit.PopupMenuItem.superclass._fillContent.call(this,_1d5[0]);this.dropDownContainer=this.srcNodeRef;}},startup:function(){if(this._started){return;}this.inherited(arguments);if(!this.popup){var node=dojo.query("[widgetId]",this.dropDownContainer)[0];this.popup=dijit.byNode(node);}dojo.body().appendChild(this.popup.domNode);this.popup.domNode.style.display="none";dojo.addClass(this.expand,"dijitMenuExpandEnabled");dojo.style(this.expand,"display","");dijit.setWaiState(this.containerNode,"haspopup","true");},destroyDescendants:function(){if(this.popup){this.popup.destroyRecursive();delete this.popup;}this.inherited(arguments);}});dojo.declare("dijit.MenuSeparator",[dijit._Widget,dijit._Templated,dijit._Contained],{templateString:"<tr class=\"dijitMenuSeparator\"><td colspan=3>"+"<div class=\"dijitMenuSeparatorTop\"></div>"+"<div class=\"dijitMenuSeparatorBottom\"></div>"+"</td></tr>",postCreate:function(){dojo.setSelectable(this.domNode,false);},isFocusable:function(){return false;}});}dojo.i18n._preloadLocalizations("dijit.nls.dijit",["ar-lb","mk-mk","xx","ln","lo","de-de","pt-br","lt","lv","es-mx","hu-hu","id-id","ROOT","aa-dj","ar-ye","es-ar","el-gr","mt-mt","ar-ma","mk","es-ni","en-mh","ml","aa","mn","ja-jp","haw","so-dj","zh-hant-mo","af","wal-et","mr","it-ch","ms","en-mp","mt","en-mt","am","el-polytoni","en-za","sid-et","en-us-posix","ps-af","zh","et-ee","es-bo","ar","as","ga-ie","nb","en-as","uz-arab","en-au","ne","nl-nl","az","aa-er","aa-et","nl-be","pt-pt","zu","nl","mr-in","nn","en-zw","be","sk-sk","th-th","bg","en-be","so-et","bn","es-cl","fa-af","tig-er","es-co","en-nz","bs","es-cr","sr-cyrl-ba","es-pa","en-bw","ca","om","en-ca","sr-ba","or","es-pr","lv-lv","es-py","es-do","sid","cs","hy-am-revised","pa","ms-my","cy","kk-kz","so-so","nb-no","gez-er","zh-mo","kw-gb","en-ph","pl","da","gez-et","en-pk","de","bn-bd","es-ec","be-by","dz-bt","ps","pt","dv","es-es","ms-bn","dz","ar-qa","ar-dz","pa-arab","gv-gb","sq-al","sh-ba","ko-kr","el","en","eo","tt-ru","fr-lu","es","et","eu","gl-es","ml-in","kn-in","fa","ro","zh-hans-cn","om-et","fi","ru","zh-cn","rw","es-sv","fo","fr","sa","es-gt","se","ar-sa","am-et","sh","as-in","he-il","en-sg","sk","ga","sl","so","en-gb","sq","sr","hy-am","sv","gl","sw","fr-be","fo-fo","es-hn","ar-sy","it-it","gu","syr","ta","gv","en-gu","te","cy-gb","th","ti","so-ke","he","tr","fr-ca","ar-tn","hi","tt","cs-cz","de-li","kok-in","es-us","fur","sr-latn","zh-hant-hk","sr-cyrl","zh-hant-tw","en-hk","fr-ch","es-uy","hr","pa-in","sw-tz","sr-latn-ba","wal","hu","hi-in","de-lu","lt-lt","hy","ca-es","es-ve","kok","nn-no","af-za","or-in","uk","ia","kl-gl","sv-fi","id","zh-hans","lo-la","zh-hant","en-um","syr-sy","el-cy","en-ie","en-us","uz","en-in","sv-se","ti-er","zh-hans-sg","is","it","ti-et","zh-sg","vi","tig","de-at","ja","en-vi","gu-in","ta-in","km-kh","is-is","de-be","byn-er","bg-bg","ru-ua","ar-jo","pl-pl","uk-ua","fi-fi","haw-us","ka","da-dk","zh-hk","sw-ke","zh-tw","gez","kk","kl","km","kn","bn-in","ko","de-ch","eu-es","kw","om-ke","sl-si","byn","ky","ro-ro","te-in","xh"]);
/** Licensed Materials - Property of IBM, 5724-E76 and 5724-E77, (C) Copyright IBM Corp. 2007 - All Rights reserved.  **/
dojo.provide("ibm.ibmClientModel");dojo.provide("com.ibm.portal.xpath");com.ibm.portal.xpath.evaluateXPath=function(_1,_2,_3){if(typeof ActiveXObject!="undefined"){return com.ibm.portal.xpath.ie.evaluateXPath(_1,_2,_3);}else{return com.ibm.portal.xpath.gecko.evaluateXPath(_1,_2,_3);}};dojo.provide("com.ibm.portal.xpath.ie");com.ibm.portal.xpath.ie.evaluateXPath=function(_4,_5,_6){if(_6){var ns="";for(var _8 in _6){ns+="xmlns:"+_8+"='"+_6[_8]+"' ";}if(_5.ownerDocument){_5.ownerDocument.setProperty("SelectionNamespaces",ns);}else{_5.setProperty("SelectionNamespaces",ns);}}var _9=_5.selectNodes(_4);var _a;var _b=new Array();var _c=0;for(var i=0;i<_9.length;i++){_a=_9[i];if(_a){_b[_c]=_a;_c++;}}return _b;};dojo.provide("com.ibm.portal.xpath.gecko");com.ibm.portal.xpath.gecko.evaluateXPath=function(_e,_f,_10){var _11;try{var _12=_f;if(!_12.evaluate){_12=_f.ownerDocument;}_11=_12.evaluate(_e,_f,function(_13){return _10[_13]||null;},XPathResult.ANY_TYPE,null);}catch(exc){throw new Error("Error with xpath expression"+exc);}var _14;var _15=new Array();var len=0;do{_14=_11.iterateNext();if(_14){_15[len]=_14;len++;}}while(_14);return _15;};dojo.provide("ibm.portal.xml.xpath");dojo.require("com.ibm.portal.xpath");ibm.portal.xml.xpath.evaluateXPath=function(_17,doc,_19){return com.ibm.portal.xpath.evaluateXPath(_17,doc,_19);};dojo.provide("ibm.portal.xml.xpath.ie");ibm.portal.xml.xpath.ie.evaluateXPath=function(_1a,doc,_1c){return com.ibm.portal.xpath.ie.evaluateXPath(_1a,doc,_1c);};dojo.provide("ibm.portal.xml.xpath.gecko");ibm.portal.xml.xpath.gecko.evaluateXPath=function(_1d,doc,_1f){return com.ibm.portal.xpath.gecko.evaluateXPath(_1d,doc,_1f);};dojo.provide("com.ibm.portal.xslt");dojo.require("dojox.data.dom");dojo.declare("com.ibm.portal.xslt.TransformerFactory",null,{constructor:function(){this._xsltMap=new Array();},newTransformer:function(_20){ibm.portal.debug.entry("newTransformer",[_20]);var trf=this._getCached(_20);if(trf==null){trf=new com.ibm.portal.xslt.Transformer(_20);this._xsltMap.push({url:_20,transformer:trf});}return trf;},_getCached:function(_22){var _23=null;for(i=0;i<this._xsltMap.length;i++){var _24=this._xsltMap[i];if(_22==_24.url){_23=_24.transformer;break;}}return _23;}});dojo.declare("com.ibm.portal.xslt.Transformer",null,{constructor:function(_25){this._xslt=com.ibm.portal.xslt.loadXsl(_25);},transformToRegion:function(_26,_27,_28,doc){if(dojo.isIE){var _2a=com.ibm.portal.xslt.transform(_26,this._xslt,null,_27,true);_28.innerHTML=dojo.string.trim(_2a);}else{var _2b=com.ibm.portal.xslt.gecko._transformToFragment(_26,this._xslt,null,_27,doc);_28.innerHTML="";_28.appendChild(_2b);}},transformToDocument:function(_2c,_2d,_2e){var _2f=com.ibm.portal.xslt.transform(_2c,this._xslt,null,_2d,_2e);return _2f;}});com.ibm.portal.xslt.TRANSFORMER_FACTORY=new com.ibm.portal.xslt.TransformerFactory();com.ibm.portal.xslt.ie={};com.ibm.portal.xslt.gecko={};com.ibm.portal.xslt.getXmlHttpRequest=function(){var _30=null;if(typeof ActiveXObject!="undefined"){_30=new ActiveXObject("Microsoft.XMLHTTP");}else{_30=new XMLHttpRequest();}return _30;};com.ibm.portal.xslt.loadXml=function(_31){if(typeof ActiveXObject!="undefined"){return com.ibm.portal.xslt.ie.loadXml(_31);}else{return com.ibm.portal.xslt.gecko.loadXml(_31);}};com.ibm.portal.xslt.loadXmlString=function(_32){if(typeof ActiveXObject!="undefined"){return com.ibm.portal.xslt.ie.loadXmlString(_32);}else{return com.ibm.portal.xslt.gecko.loadXmlString(_32);}};com.ibm.portal.xslt.loadXsl=function(_33){if(typeof ActiveXObject!="undefined"){return com.ibm.portal.xslt.ie.loadXsl(_33);}else{return com.ibm.portal.xslt.gecko.loadXsl(_33);}};com.ibm.portal.xslt.transform=function(xml,xsl,_36,_37,_38){ibm.portal.debug.entry("transform",[xml,xsl,_36,_37,_38]);if(typeof ActiveXObject!="undefined"){return com.ibm.portal.xslt.ie.transform(xml,xsl,_36,_37,_38);}else{return com.ibm.portal.xslt.gecko.transform(xml,xsl,_36,_37,_38);}};com.ibm.portal.xslt.transformAndUpdate=function(_39,xml,xsl,_3c,_3d){ibm.portal.debug.entry("transformAndUpdate",[_39,xml,xsl,_3c,_3d]);if(typeof ActiveXObject!="undefined"){var _3e=com.ibm.portal.xslt.transform(xml,xsl,_3c,_3d,true);_39.innerHTML=dojo.string.trim(_3e);}else{var doc=_39.ownerDocument?_39.ownerDocument:document;var _40=com.ibm.portal.xslt.gecko._transformToFragment(xml,xsl,_3c,_3d,doc);_39.innerHTML="";_39.appendChild(_40);}ibm.portal.debug.exit("transformAndUpdate");};com.ibm.portal.xslt.ie.XSLT_PROG_IDS=["Msxml2.XSLTemplate.6.0","Msxml2.XSLTemplate.4.0","MSXML2.XSLTemplate.3.0","MSXML2.XSLTemplate"];com.ibm.portal.xslt.ie.DOM_PROG_IDS=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"];com.ibm.portal.xslt.ie.FTDOM_PROG_IDS=["Msxml2.FreeThreadedDOMDocument.6.0","Msxml2.FreeThreadedDOMDocument.4.0","MSXML2.FreeThreadedDOMDocument","MSXML.FreeThreadedDOMDocument","Microsoft.FreeThreadedXMLDOM"];com.ibm.portal.xslt.ie._getMSXMLImpl=function(_41){while(_41.length>0){try{var _42=new ActiveXObject(_41[0]);if(_42){return _42;}}catch(err){}_41.splice(0,1);}throw new Error("No MSXML implementation exists");};com.ibm.portal.xslt.ie.loadXml=function(_43){var _44=this._getMSXMLImpl(this.DOM_PROG_IDS);_44.async=0;_44.resolveExternals=0;if(!_44.load(_43)){throw new Error("Error loading xml file "+_43);}return _44;};com.ibm.portal.xslt.ie.loadXmlString=function(_45){var _46=this._getMSXMLImpl(this.DOM_PROG_IDS);_46.async=0;_46.resolveExternals=0;if(!_46.loadXML(_45)){throw new Error("Error loading xml string "+_45);}return _46;};com.ibm.portal.xslt.ie.loadXsl=function(_47){var _48=this._getMSXMLImpl(this.FTDOM_PROG_IDS);_48.async=0;_48.resolveExternals=0;if(!_48.load(_47)){throw new Error("Error loading xsl file "+_47);}return _48;};com.ibm.portal.xslt.ie.transform=function(_49,xsl,_4b,_4c,_4d){var _4e=_49;var _4f=xsl;try{if(!_4f.documentElement){_4f=this.loadXsl(xsl);}}catch(e){var _50=e.message;throw new Error(""+_50,""+_50);}var _51=this._getMSXMLImpl(this.XSLT_PROG_IDS);_51.stylesheet=_4f;var _52=_51.createProcessor();_52.input=_4e;if(_4c){for(var p in _4c){_52.addParameter(p,_4c[p]);}}if(_4b){_52.addParameter("mode",_4b);}if(_4d){if(!_52.transform()){throw new Error("Error transforming xml doc "+_4e);}return _52.output;}else{var _54=this._getMSXMLImpl(this.DOM_PROG_IDS);_54.async=false;_54.validateOnParse=false;_4e.transformNodeToObject(_4f,_54);return _54;}};com.ibm.portal.xslt.gecko.loadXml=function(_55){var _56=null;if(dojo.isSafari){var xhr=new XMLHttpRequest();xhr.open("GET",_55,false);xhr.send(null);if(xhr.status==200){_56=xhr.responseXML;}}else{_56=document.implementation.createDocument("","",null);_56.async=0;_56.load(_55);}return _56;};com.ibm.portal.xslt.gecko.loadXmlString=function(_58){var _59=new DOMParser();try{oXmlDoc=_59.parseFromString(_58,"text/xml");}catch(exc){throw new Error("Error loading xml string "+_58);}return oXmlDoc;};com.ibm.portal.xslt.gecko.loadXsl=function(_5a){var _5b=null;if(dojo.isSafari){var xhr=new XMLHttpRequest();xhr.open("GET",_5a,false);xhr.send(null);if(xhr.status==200){_5b=xhr.responseXML;}}else{_5b=document.implementation.createDocument("","",null);_5b.async=0;_5b.load(_5a);}return _5b;};com.ibm.portal.xslt.gecko._getXSLTProc=function(_5d,xsl,_5f,_60){var _61=xsl;if(!_61.documentElement){_61=this.loadXsl(xsl);}var _62=new XSLTProcessor();_62.importStylesheet(_61);if(_60){for(var p in _60){_62.setParameter(null,p,_60[p]);}}if(_5f){_62.setParameter(null,"mode",_5f);}return _62;};com.ibm.portal.xslt.gecko._transformToFragment=function(_64,xsl,_66,_67,doc){var _69=com.ibm.portal.xslt.gecko._getXSLTProc(_64,xsl,_66,_67);var _6a=null;_6a=_69.transformToFragment(_64,doc);_69.clearParameters();return _6a;};com.ibm.portal.xslt.gecko.transform=function(_6b,xsl,_6d,_6e,_6f){try{var _70=null;if(!_6f){var _71=com.ibm.portal.xslt.gecko._getXSLTProc(_6b,xsl,_6d,_6e);_70=_71.transformToDocument(_6b);return _70;}else{_70=com.ibm.portal.xslt.gecko._transformToFragment(_6b,xsl,_6d,_6e,document);}var _72=new XMLSerializer();var _73=dojo.string.trim(_72.serializeToString(_70));if(dojo.isOpera&&_70.firstChild&&_70.firstChild.nodeName=="result"){var _74=_73.indexOf("<result>")+8;var end=_73.lastIndexOf("</result>");_73=dojo.string.trim(_73.substring(_74,end));}return _73;}catch(exc){throw new Error("Error transforming xml doc "+exc);}};com.ibm.portal.xslt.setLayerContentByXml=function(_76,xml,xsl,_79,_7a){var _7b=com.ibm.portal.xslt.transform(xml,xsl,null,_79,_7a);if(_76.innerHTML){_76.innerHTML=_7b;}else{var obj=document.getElementById(_76);obj.innerHTML=_7b;}};dojo.provide("ibm.portal.xml.xslt");dojo.require("com.ibm.portal.xslt");ibm.portal.xml.xslt.ie={};ibm.portal.xml.xslt.gecko={};ibm.portal.xml.xslt.getXmlHttpRequest=function(){return com.ibm.portal.xslt.getXmlHttpRequest();};ibm.portal.xml.xslt.loadXml=function(_7d){return com.ibm.portal.xslt.loadXml(_7d);};ibm.portal.xml.xslt.loadXmlString=function(_7e){return com.ibm.portal.xslt.loadXmlString(_7e);};ibm.portal.xml.xslt.loadXsl=function(_7f){return com.ibm.portal.xslt.loadXsl(_7f);};ibm.portal.xml.xslt.transform=function(xml,xsl,_82,_83,_84){ibm.portal.debug.entry("transform",[xml,xsl,_82,_83,_84]);return com.ibm.portal.xslt.transform(xml,xsl,_82,_83,_84);};ibm.portal.xml.xslt.transformAndUpdate=function(_85,xml,xsl,_88,_89){ibm.portal.debug.entry("transformAndUpdate",[_85,xml,xsl,_88,_89]);com.ibm.portal.xslt.transformAndUpdate(_85,xml,xsl,_88,_89);ibm.portal.debug.exit("transformAndUpdate");};ibm.portal.xml.xslt.ie.loadXml=function(_8a){return com.ibm.portal.xslt.ie.loadXml(_8a);};ibm.portal.xml.xslt.ie.loadXmlString=function(_8b){return com.ibm.portal.xslt.ie.loadXmlString(_8b);};ibm.portal.xml.xslt.ie.loadXsl=function(_8c){return com.ibm.portal.xslt.ie.loadXsl(_8c);};ibm.portal.xml.xslt.ie.transform=function(_8d,xsl,_8f,_90,_91){return com.ibm.portal.xslt.ie.transform(_8d,xsl,_8f,_90,_91);};ibm.portal.xml.xslt.gecko.loadXml=function(_92){return com.ibm.portal.xslt.gecko.loadXml(_92);};ibm.portal.xml.xslt.gecko.loadXmlString=function(_93){return com.ibm.portal.xslt.gecko.loadXmlString(_93);};ibm.portal.xml.xslt.gecko.loadXsl=function(_94){return com.ibm.portal.xslt.gecko.loadXsl(_94);};ibm.portal.xml.xslt.gecko.transform=function(_95,xsl,_97,_98,_99){return com.ibm.portal.xslt.gecko.transform(_95,xsl,_97,_98,_99);};ibm.portal.xml.xslt.setLayerContentByXml=function(_9a,xml,xsl,_9d,_9e){com.ibm.portal.xslt.setLayerContentByXml(_9a,xml,xsl,_9d,_9e);};if(!dojo._hasResource["com.ibm.portal.state"]){dojo._hasResource["com.ibm.portal.state"]=true;dojo.provide("com.ibm.portal.state");dojo.declare("com.ibm.portal.state.StateManager",null,{constructor:function(_9f){this.stateDOM=null;this.stateNode=null;this.ns={"state":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portal-state"};this.serializationManager=new com.ibm.portal.state.SerializationManager(_9f);},getState:function(){return this.stateDOM;},newState:function(_a0,_a1,_a2){var _a3=null;if(_a0==null){_a3=dojox.data.dom.createDocument();}else{if(_a1==null){_a3=dojox.data.dom.createDocument(dojox.data.dom.innerXML(_a0));}else{var _a4=com.ibm.portal.xslt;var _a5=_a4.transform(_a0,_a1,null,_a2,true);_a3=dojox.data.dom.createDocument(_a5);}}return _a3;},reset:function(_a6){this.stateDOM=_a6;this.stateNode=this._getStateNode(_a6);},getSerializationManager:function(){return this.serializationManager;},newPortletAccessor:function(_a7,_a8){var _a9;var _aa;if(_a8==null||this.stateDOM==_a8){_a9=this.stateNode;_aa=this.stateDOM;}else{_a9=this._getStateNode(_a8);_aa=_a8;}var _ab="state:portlet[@id='"+_a7+"']";var _ac=this._getSpecificStateNode("portlet",_ab,_a9,_aa);_ac.setAttribute("id",_a7);return new com.ibm.portal.state.PortletAccessor(_ac,_aa);},newPortletListAccessor:function(_ad){var _ae;var _af;if(_ad==null||this.stateDOM==_ad){_ae=this.stateNode;_af=this.stateDOM;}else{_ae=this._getStateNode(_ad);_af=_ad;}return new com.ibm.portal.state.PortletListAccessor(_ae,_af);},newSelectionAccessor:function(_b0){var _b1;var _b2;if(_b0==null||this.stateDOM==_b0){_b1=this.stateNode;_b2=this.stateDOM;}else{_b1=this._getStateNode(_b0);_b2=_b0;}var _b3=this._getSpecificStateNode("selection","state:selection",_b1,_b2);return new com.ibm.portal.state.SelectionAccessor(_b3,_b2);},newSoloStateAccessor:function(_b4){var _b5;var _b6;if(_b4==null||this.stateDOM==_b4){_b5=this.stateNode;_b6=this.stateDOM;}else{_b5=this._getStateNode(_b4);_b6=_b4;}var _b7=this._getSpecificStateNode("solo","state:solo",_b5,_b6);return new com.ibm.portal.state.SoloStateAccessor(_b7,_b6);},newThemeTemplateAccessor:function(_b8){var _b9;var _ba;if(_b8==null||this.stateDOM==_b8){_b9=this.stateNode;_ba=this.stateDOM;}else{_b9=this._getStateNode(_b8);_ba=_b8;}var _bb=this._getSpecificStateNode("theme-template","state:theme-template",_b9,_ba);return new com.ibm.portal.state.ThemeTemplateAccessor(_bb,_ba);},newLocaleAccessor:function(_bc){var _bd;var _be;if(_bc==null||this.stateDOM==_bc){_bd=this.stateNode;_be=this.stateDOM;}else{_bd=this._getStateNode(_bc);_be=_bc;}var _bf=this._getSpecificStateNode("locale","state:locale",_bd,_be);return new com.ibm.portal.state.LocaleAccessor(_bf,_be);},newStatePartitionAccessor:function(_c0){var _c1;var _c2;if(_c0==null||this.stateDOM==_c0){_c1=this.stateNode;_c2=this.stateDOM;}else{_c1=this._getStateNode(_c0);_c2=_c0;}var _c3=this._getSpecificStateNode("statepartition","state:statepartition",_c1,_c2);return new com.ibm.portal.state.StatePartitionAccessor(_c3,_c2);},_getStateNode:function(_c4){var _c5="state:root/state:state[@type='navigational']";var _c6=com.ibm.portal.xpath.evaluateXPath(_c5,_c4,this.ns);var _c7=null;if(_c6==null||_c6.length<=0){var _c8=_c4.firstChild;while(_c8&&_c8.nodeType==7){_c8=_c8.nextSibling;}if(_c8==null){_c8=this._createElement(_c4,"root");this._prependChild(_c8,_c4);}_c7=_c8.firstChild;if(_c7==null){_c7=this._createElement(_c4,"state");this._prependChild(_c7,_c8);}_c7.setAttribute("type","navigational");}else{_c7=_c6[0];}return _c7;},_getSpecificStateNode:function(_c9,_ca,_cb,_cc){var _cd=com.ibm.portal.xpath.evaluateXPath(_ca,_cb,this.ns);var _ce;if(_cd==null||_cd.length<=0){_ce=this._createElement(_cc,_c9);this._prependChild(_ce,_cb);}else{_ce=_cd[0];}return _ce;},_prependChild:function(_cf,_d0){_d0.firstChild?_d0.insertBefore(_cf,_d0.firstChild):_d0.appendChild(_cf);},_createElement:function(dom,_d2){var _d3;if(dojo.isIE){_d3=dom.createNode(1,_d2,this.ns.state);}else{_d3=dom.createElementNS(this.ns.state,_d2);}return _d3;}});dojo.declare("com.ibm.portal.state.PortletAccessor",null,{constructor:function(_d4,_d5){this.portletNode=_d4;this.stateDOM=_d5;this.parameters=new com.ibm.portal.state.Parameters(_d4,_d5);this.ns={"state":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portal-state"};this.xsltURL=dojo.moduleUrl("com","ibm/portal/state/");},getPortletMode:function(){var _d6="state:portlet-mode";var _d7=com.ibm.portal.xpath.evaluateXPath(_d6,this.portletNode,this.ns);var _d8=ibm.portal.portlet.PortletMode.VIEW;if(_d7!=null&&_d7.length>0){var _d9=_d7[0].firstChild;if(_d9!=null){_d8=_d9.nodeValue;}}return _d8;},getWindowState:function(){var _da="state:window-state";var _db=com.ibm.portal.xpath.evaluateXPath(_da,this.portletNode,this.ns);var _dc=ibm.portal.portlet.WindowState.NORMAL;if(_db!=null&&_db.length>0){var _dd=_db[0].firstChild;if(_dd!=null){_dc=_dd.nodeValue;}}return _dc;},getRenderParameters:function(){return this.parameters;},setPortletMode:function(_de){var _df="state:portlet-mode";var _e0=com.ibm.portal.xpath.evaluateXPath(_df,this.portletNode,this.ns);if(_e0==null||_e0.length<=0){var _e1=this._createElement(this.stateDOM,"portlet-mode");this._prependChild(_e1,this.portletNode);var _e2=this.stateDOM.createTextNode(_de);this._prependChild(_e2,_e1);}else{_e0[0].firstChild.nodeValue=_de;}},setWindowState:function(_e3){var _e4="state:window-state";var _e5=com.ibm.portal.xpath.evaluateXPath(_e4,this.portletNode,this.ns);if(_e5==null||_e5.length<=0){var _e6=this._createElement(this.stateDOM,"window-state");this._prependChild(_e6,this.portletNode);var _e7=this.stateDOM.createTextNode(_e3);this._prependChild(_e7,_e6);}else{_e5[0].firstChild.nodeValue=_e3;}},getPortletState:function(){var _e8=dojox.data.dom.createDocument();var _e9=com.ibm.portal.state.STATE_MANAGER.newPortletAccessor(this.portletNode.getAttribute("id"),_e8);_e9.setPortletMode(this.getPortletMode());_e9.setWindowState(this.getWindowState());var _ea=this.getRenderParameters().getMap();if(_ea.length>0){_e9.getRenderParameters().putAll(_ea);}return _e8;},setPortletState:function(_eb,_ec){var _ed=com.ibm.portal.state.STATE_MANAGER.newPortletAccessor(this.portletNode.getAttribute("id"),_eb);this.setPortletMode(_ed.getPortletMode());this.setWindowState(_ed.getWindowState());var _ee=_ed.getRenderParameters().getMap();if(_ec==null||_ec==false){this.getRenderParameters().clear();}if(_ee.length>0){this.getRenderParameters().putAll(_ee);}},_prependChild:function(_ef,_f0){_f0.firstChild?_f0.insertBefore(_ef,_f0.firstChild):_f0.appendChild(_ef);},_createElement:function(dom,_f2){var _f3;if(dojo.isIE){_f3=dom.createNode(1,_f2,this.ns.state);}else{_f3=dom.createElementNS(this.ns.state,_f2);}return _f3;}});dojo.declare("com.ibm.portal.state.Parameters",null,{constructor:function(_f4,_f5){this.baseNode=_f4;this.stateDOM=_f5;this.ns={"state":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portal-state"};},getMap:function(){var _f6=this.getNames();var map=new Array(_f6.length);for(var i=0;i<_f6.length;i++){var _f9=_f6[i];map[i]={name:_f9,values:this.getValues(_f9)};}return map;},getNames:function(){var _fa="state:parameters/state:param";var _fb=com.ibm.portal.xpath.evaluateXPath(_fa,this.baseNode,this.ns);var _fc=new Array();if(_fb!=null&&_fb.length>0){var _fd=_fb.length;for(var i=0;i<_fd;i++){_fc[i]=_fb[i].getAttribute("name");}}return _fc;},getValue:function(_ff){var _100=this.getValues(_ff);var _101=null;if(_100!=null&&_100.length>0){_101=_100[0];}return _101;},getValues:function(name){var expr="state:parameters/state:param[@name='"+name+"']/state:value";var _104=com.ibm.portal.xpath.evaluateXPath(expr,this.baseNode,this.ns);var _105=null;if(_104!=null&&_104.length>0){_105=new Array(_104.length);var _106=_104.length;for(var i=0;i<_106;i++){var _108=_104[i].firstChild;if(_108!=null){_105[i]=_108.nodeValue;}}}return _105;},remove:function(name){var expr="state:parameters/state:param[@name='"+name+"']";var _10b=com.ibm.portal.xpath.evaluateXPath(expr,this.baseNode,this.ns);if(_10b!=null){var _10c=_10b[0];if(_10c&&_10c.parentNode){_10c.parentNode.removeChild(_10c);}}},putAll:function(map){if(map!=null&&map.length>0){for(var i=map.length-1;i>=0;i--){var _10f=map[i].name;var _110=map[i].values;this.setValues(_10f,_110);}}},setValue:function(name,_112){this.setValues(name,new Array(_112));},setValues:function(name,_114){var expr="state:parameters/state:param[@name='"+name+"']";var _116=com.ibm.portal.xpath.evaluateXPath(expr,this.baseNode,this.ns);var _117;if(_116==null||_116.length==0){var _118=null;if(_118==null){_118=this._createElement(this.stateDOM,"parameters");this._prependChild(_118,this.baseNode);}_117=this._createElement(this.stateDOM,"param");_117.setAttribute("name",name);this._prependChild(_117,_118);}else{_117=_116[0];dojox.data.dom.removeChildren(_117);}if(_114!=null){for(var i=_114.length-1;i>=0;i--){var _11a=this._createElement(this.stateDOM,"value");this._prependChild(_11a,_117);var _11b=_114[i];if(_11b!=null){var _11c=this.stateDOM.createTextNode(_11b);this._prependChild(_11c,_11a);}}}},clear:function(){var expr="state:parameters";var _11e=com.ibm.portal.xpath.evaluateXPath(expr,this.baseNode,this.ns);if(_11e!=null){var _11f=_11e[0];if(_11f&&_11f.parentNode){_11f.parentNode.removeChild(_11f);}}},_getFirstChildWithTag:function(_120,_121){if(!_120||!_121){return null;}var node=_120.firstChild;while(node){if(node.nodeType==1&&node.tagName&&node.tagName.toLowerCase()==_121.toLowerCase()){return node;}node=node.nextSibling;}return null;},_prependChild:function(node,_124){_124.firstChild?_124.insertBefore(node,_124.firstChild):_124.appendChild(node);},_createElement:function(dom,name){var _127;if(dojo.isIE){_127=dom.createNode(1,name,this.ns.state);}else{_127=dom.createElementNS(this.ns.state,name);}return _127;}});dojo.declare("com.ibm.portal.state.PortletListAccessor",null,{constructor:function(_128,_129){this.stateNode=_128;this.stateDOM=_129;this.ns={"state":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portal-state"};},getPortlets:function(){var expr="state:portlet";var _12b=com.ibm.portal.xpath.evaluateXPath(expr,this.stateNode,this.ns);var _12c=null;if(_12b!=null&&_12b.length>0){_12c=new Array(_12b.length);for(var i=0;i<_12b.length;i++){var node=_12b[i];_12c[i]=node.getAttribute("id");}}return _12c;}});dojo.declare("com.ibm.portal.state.SelectionAccessor",null,{constructor:function(_12f,_130){this.selectionNode=_12f;this.stateDOM=_130;this.parameters=new com.ibm.portal.state.Parameters(this.selectionNode,_130);this.ns={"state":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portal-state"};},getPageSelection:function(){return this.selectionNode.getAttribute("selection-node");},getFragmentSelection:function(){var _131=this.getParameters();var _132=_131.getValues("frg");var _133=null;if(_132!=null&&_132.length>0){_133=_132[0];if(_132.length>1){if(_133=="pw"){_133=_132[1];}}}return _133;},getMapping:function(_134){var expr="state:mapping[@src='"+_134+"']";var _136=com.ibm.portal.xpath.evaluateXPath(expr,this.selectionNode,this.ns);var _137=null;if(_136!=null&&_136.length>0){var _138=_136[0];_137=_138.getAttribute("dst");}return _137;},getParameters:function(){return this.parameters;},setPageSelection:function(_139){this.selectionNode.setAttribute("selection-node",_139);},setFragmentSelection:function(_13a,_13b){var _13c=this.getParameters();if(_13b==null||_13b==true){var _13d=new Array(2);_13d[0]=_13a;_13d[1]="pw";_13c.setValues("frg",_13d);}else{_13c.setValue("frg",_13a);}},setMapping:function(_13e,_13f){if(_13f!=null){var expr="state:mapping[@src='"+_13e+"']";var _141=com.ibm.portal.xpath.evaluateXPath(expr,this.selectionNode,this.ns);var _142;if(_141!=null&&_141.length>0){_142=_141[0];}else{_142=this._createElement(this.stateDOM,"mapping");this._prependChild(_142,this.selectionNode);_142.setAttribute("src",_13e);}_142.setAttribute("dst",_13f);}else{this.removeMapping(_13e);}},removeMapping:function(_143){var expr="state:mapping[@src='"+_143+"']";var _145=com.ibm.portal.xpath.evaluateXPath(expr,this.selectionNode,this.ns);var _146=false;if(_145!=null&&_145.length>0){for(var i=0;i<_145.length;i++){var _148=_145[i];if(_148&&_148.parentNode){_148.parentNode.removeChild(_148);}}_146=true;}return _146;},_prependChild:function(node,_14a){_14a.firstChild?_14a.insertBefore(node,_14a.firstChild):_14a.appendChild(node);},_createElement:function(dom,name){var _14d;if(dojo.isIE){_14d=dom.createNode(1,name,this.ns.state);}else{_14d=dom.createElementNS(this.ns.state,name);}return _14d;},getSelection:function(){return this.getPageSelection();},setSelection:function(_14e){this.setPageSelection(_14e);}});dojo.declare("com.ibm.portal.state.SoloStateAccessor",null,{constructor:function(_14f,_150){this.soloNode=_14f;this.stateDOM=_150;this.ns={"state":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portal-state"};},setSoloPortlet:function(_151){dojox.data.dom.removeChildren(this.soloNode);if(_151!=null){var _152=this.stateDOM.createTextNode(_151);this._prependChild(_152,this.soloNode);}},getSoloPortlet:function(){var _153=this.soloNode.firstChild;if(_153!=null){return _153.nodeValue;}else{return null;}},setReturnSelection:function(_154){this.soloNode.setAttribute("return-selection",_154);},getReturnSelection:function(){return this.soloNode.getAttribute("return-selection");},_prependChild:function(node,_156){_156.firstChild?_156.insertBefore(node,_156.firstChild):_156.appendChild(node);}});dojo.declare("com.ibm.portal.state.ThemeTemplateAccessor",null,{constructor:function(_157,_158){this.themeTemplateNode=_157;this.stateDOM=_158;this.ns={"state":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portal-state"};},setThemeTemplate:function(_159){dojox.data.dom.removeChildren(this.themeTemplateNode);if(_159!=null){var _15a=this.stateDOM.createTextNode(_159);this._prependChild(_15a,this.themeTemplateNode);}},getThemeTemplate:function(){var _15b=this.themeTemplateNode.firstChild;if(_15b!=null){return _15b.nodeValue;}else{return null;}},_prependChild:function(node,_15d){_15d.firstChild?_15d.insertBefore(node,_15d.firstChild):_15d.appendChild(node);}});dojo.declare("com.ibm.portal.state.LocaleAccessor",null,{constructor:function(_15e,_15f){this.localeNode=_15e;this.stateDOM=_15f;this.ns={"state":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portal-state"};},setLocale:function(_160){dojox.data.dom.removeChildren(this.localeNode);if(_160!=null){var _161=this.stateDOM.createTextNode(_160);this._prependChild(_161,this.localeNode);}},getLocale:function(){var _162=this.localeNode.firstChild;if(_162!=null){return _162.nodeValue;}else{return null;}},_prependChild:function(node,_164){_164.firstChild?_164.insertBefore(node,_164.firstChild):_164.appendChild(node);}});dojo.declare("com.ibm.portal.state.StatePartitionAccessor",null,{constructor:function(_165,_166){this.statePartitionNode=_165;this.stateDOM=_166;this.ns={"state":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portal-state"};},includeStatePartition:function(){dojox.data.dom.removeChildren(this.statePartitionNode);var _167=this.stateDOM.createTextNode(this._generateID());this._prependChild(_167,this.statePartitionNode);},_prependChild:function(node,_169){_169.firstChild?_169.insertBefore(node,_169.firstChild):_169.appendChild(node);},_generateID:function(){return Math.floor(Math.random()*100);}});dojo.declare("com.ibm.portal.state.SerializationManager",null,{STATE_URI_SCHEME:"state",STATE_URI_POST:"state:encode",DOWNLOAD_MODE:"download",STATUS_UNDEFINED:0,STATUS_OK:1,STATUS_ERROR:2,STATE_NS_URI:"http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portal-state",STATE_THRESHOLD:1024,constructor:function(_16a){this.serviceURL=_16a;},serialize:function(_16b,_16c,_16d,_16e){ibm.portal.debug.entry("SerializationManager.serialize",[dojox.data.dom.innerXML(_16b),_16c,_16d,_16e]);var _16f=dojox.data.dom.innerXML(_16b).replace(/[\r\n]/mg,"");var _170=escape(_16f);var _171=this._getMimeType();var _172=null;var me=this;ibm.portal.debug.text("Mime type for response: "+_171);ibm.portal.debug.text("Length of encoded state XML is: "+_170.length);ibm.portal.debug.text("Encoded state XML is: "+_170);var _174=com.ibm.portal.services.PortalRestServiceConfig.digest;ibm.portal.debug.text("Digest: "+_174);if(_170.length<=this.STATE_THRESHOLD){var _175=this.STATE_URI_SCHEME+":"+_170;var _176;_16c=(_16c!=null&&_16c==true);if(_16c==true){if(_174!=null){_176={"uri":_175,"mode":this.DOWNLOAD_MODE,"xmlns":this.STATE_NS_URI,"sessionDependencyAllowed":"true","preprocessors":"true","digest":_174};}else{_176={"uri":_175,"mode":this.DOWNLOAD_MODE,"xmlns":this.STATE_NS_URI,"sessionDependencyAllowed":"true","preprocessors":"true"};}}else{if(_174!=null){_176={"uri":_175,"mode":this.DOWNLOAD_MODE,"xmlns":this.STATE_NS_URI,"sessionDependencyAllowed":"true","digest":_174};}else{_176={"uri":_175,"mode":this.DOWNLOAD_MODE,"xmlns":this.STATE_NS_URI,"sessionDependencyAllowed":"true"};}}if(_16e===true){_176.forceAbsolute=true;}ibm.portal.debug.text("Doing a GET request: { url: \""+this.serviceURL+"\", sync: "+((_16d)?false:true)+", content: "+_176+", handleAs: "+_171+", transport: XMLHTTPRequest");ibm.portal.debug.text("Parameters: uri=\""+_176.uri+"\" mode=\""+_176.mode+"\" xmlns=\""+_176.xmlns+"\""+"forceAbsolute=\""+_176.forceAbsolute+"\"");dojo.xhrGet({url:this.serviceURL,sync:(_16d)?false:true,content:_176,handleAs:_171,handle:function(_177,_178){ibm.portal.debug.text("Response: "+_177);_172=me._handleSerializationResponse.call(me,_177,_16d,_16b,_16c);return _177;},transport:"XMLHTTPTransport"});}else{ibm.portal.debug.text("Doing a POST request.");if(dojo.isIE){var idx=_16f.indexOf("UTF-16");if(idx>=0){_16f=_16f.replace(/UTF-16/,"UTF-8");}}var url=this.serviceURL+"?uri="+this.STATE_URI_POST+"&xmlns="+this.STATE_NS_URI+"&sessionDependencyAllowed=true";if(_174!=null){url+="&digest="+_174;}if(_16c===true){url+="&preprocessors=true";}if(_16e===true){url+="&forceAbsolute=true";}dojo.rawXhrPost({url:url,sync:(_16d)?false:true,postData:_16f,handleAs:_171,headers:{"Content-Type":"text/xml"},handle:function(_17b,_17c){_172=me._handleSerializationResponse.call(me,_17b,_16d,_16b,_16c);return _17b;},transport:"XMLHTTPTransport"});}ibm.portal.debug.exit("SerializationManager.serialize",_172);return _172;},deserialize:function(url,_17e){var _17f=this.STATE_URI_SCHEME+":"+url;var _180=null;var _181=this._getMimeType();var me=this;var _183=com.ibm.portal.services.PortalRestServiceConfig.digest;ibm.portal.debug.text("Digest: "+_183);var _184;if(_183!=null){_184={"uri":_17f,"mode":this.DOWNLOAD_MODE,"xmlns":this.STATE_NS_URI,"digest":_183,"preprocessors":"true"};}else{_184={"uri":_17f,"mode":this.DOWNLOAD_MODE,"xmlns":this.STATE_NS_URI,"preprocessors":"true"};}dojo.xhrGet({url:this.serviceURL,sync:(_17e)?false:true,content:_184,handleAs:_181,handle:function(_185,_186){var type=(_185 instanceof Error)?"error":"load";if(type=="load"){var _188=me._getResponseXML(_185);if(_188.documentElement.nodeName=="parsererror"){_188=dojox.data.dom.createDocument();}if(_17e){_17e(1,url,_188);}else{_180={"status":1,"input":me.serviceURL,"url":me.serviceURL,"returnObject":_188,"state":_188};}}else{if(type=="error"){if(_17e){_17e(2,url,null);}else{_180={"status":2,"input":me.serviceURL,"url":me.serviceURL,"returnObject":null,"state":null};}}}},transport:"XMLHTTPTransport"});return _180;},_handleSerializationResponse:function(_189,_18a,_18b,_18c){var _18d=null;var type=(_189 instanceof Error)?"error":"load";if(type=="load"){var _18f=this._getResponseXML(_189);var _190="atom:entry/atom:link";var ns={"atom":"http://www.w3.org/2005/Atom","state":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portal-state"};var _192=null;var _193=com.ibm.portal.xpath.evaluateXPath(_190,_18f,ns);if(_193!=null&&_193.length>0){_192=_193[0].getAttribute("href");}var _194=_18b;if(_18c==true){var _195="atom:entry/atom:content/state:root";var _196=com.ibm.portal.xpath.evaluateXPath(_195,_18f,ns);if(_196!=null&&_196.length>0){var _197=dojox.data.dom.innerXML(_196[0]);_194=dojox.data.dom.createDocument(_197);}}if(_18a){_18a(1,_194,_192);}else{_18d={"status":1,"input":_194,"state":_194,"returnObject":_192,"url":_192};}}else{if(type=="error"){if(_18a){_18a(this.STATUS_ERROR,_18b,null);}else{_18d={"status":this.STATUS_ERROR,"input":_18b,"state":_18b,"returnObject":null,"url":null};}}}return _18d;},_getMimeType:function(){var _198="xml";if(dojo.isIE){_198="text";}return _198;},_getResponseXML:function(data){var _19a=data;if(dojo.isIE){_19a=dojox.data.dom.createDocument(data);}return _19a;},_encodeAscii:function(str){var ret=str;if(dojo.isString(ret)){var _19d=escape(ret);var _19e=/%u([A-F0-9][A-F0-9][A-F0-9][A-F0-9])/i;var _19f=null;while((_19f=_19d.match(_19e))){ret+=_19d.substring(0,_19f.index)+escape(Number("0x"+_19f[1]));_19d=_19d.substring(_19f.index+_19f[0].length);}ret+=_19d;ret=ret.replace(/\+/g,"%2B");}return ret;}});dojo.declare("com.ibm.portal.navigation.controller.StateVaryManager",null,{constructor:function(){this._expr=new Array();},setExpressions:function(id,_1a1){var _1a2=this._findBucket(id);if(_1a2==null){_1a2={"id":id,"expr":null};this._expr.push(_1a2);}_1a2.expr=_1a1;},getExpressions:function(id){var _1a4=null;var _1a5=this._findBucket(id);if(_1a5!=null){_1a4=_1a5.expr;}return _1a4;},_findBucket:function(id){var _1a7=null;for(i=0;i<this._expr.length;i++){var temp=this._expr[i];if(temp.id==id){_1a7=temp;break;}}return _1a7;}});com.ibm.portal.state.STATE_MANAGER=new com.ibm.portal.state.StateManager();com.ibm.portal.state.STATE_MANAGER.reset(dojox.data.dom.createDocument());}if(!dojo._hasResource["com.ibm.ajax.auth"]){dojo._hasResource["com.ibm.ajax.auth"]=true;dojo.provide("com.ibm.ajax.auth");com.ibm.ajax.auth={prepareSecure:function(args,_1aa,_1ab){args._handle=args.handle;args.handle=dojo.partial(this.testAuthenticationHandler,this,_1aa,_1ab);return args;},setAuthenticationHandler:function(_1ac){this.authenticationHandler=_1ac;},setTestAuthenticationHandler:function(_1ad){this.testAuthenticationHandler=_1ad;},setDefaultAuthenticationTests:function(_1ae,_1af,_1b0){this.checkFromCaller=_1ae;this.checkByContentType=_1af;this.checkByStatusCode=_1b0;},addAuthenticationCheck:function(_1b1){if(_1b1){this.authenticationChecks.push(_1b1);}},isAuthenticationRequired:function(_1b2,_1b3){var _1b4=_1b3.args.handleAs;var _1b5=false;if(!_1b2||dojo.indexOf(["cancel","timeout"],_1b2.dojoType)==-1){if(this.checkByContentType&&dojo.indexOf(["xml","json","json-comment-optional","text"],_1b4)!=-1&&_1b3.xhr&&/^text\/html/.exec(_1b3.xhr.getResponseHeader("Content-Type"))&&_1b3.xhr.status>=200&&_1b3.xhr.status<300){ibm.portal.debug.text("auth::isAuthenticationRequired DEBUG content type does not match request, assume logged out");return true;}else{if(this.checkByStatusCode&&dojo.indexOf(["xml","json","json-comment-optional","text"],_1b4)!=-1&&_1b3.xhr&&_1b3.xhr.status==302){ibm.portal.debug.text("auth::isAuthenticationRequired DEBUG redirect received, assume login request");return true;}else{if(this.checkByStatusCode&&_1b3.xhr&&(_1b3.xhr.status==401||_1b3.xhr.status==0)&&_1b3.xhr.getResponseHeader("WWW-Authenticate")&&_1b3.xhr.getResponseHeader("WWW-Authenticate").indexOf("IBMXHR")!=-1){ibm.portal.debug.text("auth::isAuthenticationRequired DEBUG Portal 401 received, assume login required");return true;}}}}if(!_1b5){for(var i=0;i<this.authenticationChecks.length;i++){if(this.authenticationChecks[i](this,_1b2,_1b3)){return true;}}}return false;},testAuthenticationHandler:function(auth,_1b8,_1b9,_1ba,_1bb){var args=dojo._toArray(arguments).slice(3);var _1bd=false;if(!_1ba||dojo.indexOf(["cancel","timeout"],_1ba.dojoType)==-1){if(auth.checkFromCaller&&typeof _1b8=="function"&&_1b8(_1ba,_1bb)){_1bd=true;}else{_1bd=auth.isAuthenticationRequired(_1ba,_1bb,_1b8);}}if(_1bd){var path=auth._parseUri(_1bb.args.url).path;dojo.cookie("WASPostParam",null,{expires:-1,path:path});dojo.cookie("WASReqURL",null,{expires:-1,path:"/"});auth.authenticationHandler(_1ba,_1bb,_1b9);args[0]=new Error("xhr unauthenticated");args[0].dojoType="unauthenticated";}if(_1bb.args._handle){return _1bb.args._handle.apply(this,args);}else{return (_1ba);}},_parseUri:function(uri){if(!uri){return null;}uri=new dojo._Url(uri);var _1c0=this._splitQuery(uri.query);uri.queryParameters=_1c0;return uri;},_splitQuery:function(_1c1){var _1c2={};if(!_1c1){return _1c2;}if(_1c1.charAt(0)=="?"){_1c1=_1c1.substring(1);}var args=_1c1.split("&");for(var i=0;i<args.length;i++){if(args[i].length>0){var _1c5=args[i].indexOf("=");if(_1c5==-1){var key=decodeURIComponent(args[i]);var _1c7=_1c2[key];if(dojo.isArray(_1c7)){_1c7.push("");}else{if(_1c7){_1c2[key]=[_1c7,""];}else{_1c2[key]="";}}}else{if(_1c5>0){var key=decodeURIComponent(args[i].substring(0,_1c5));var _1c8=decodeURIComponent(args[i].substring(_1c5+1));var _1c7=_1c2[key];if(dojo.isArray(_1c7)){_1c7.push(_1c8);}else{if(_1c7){_1c2[key]=[_1c7,_1c8];}else{_1c2[key]=_1c8;}}}}}}return _1c2;},checkFromCaller:true,checkByContentType:true,checkByStatusCode:true,authenticationChecks:[],authenticationHandler:function(){ibm.portal.debug.text("auth::authenticationHandler DEBUG authentication was required");}};}dojo.provide("com.ibm.portal.debug");dojo.provide("ibm.portal.debug");ibm.portal.debug.setTrace=function(_1c9){ibm.portal.debug._traceString=_1c9;};ibm.portal.debug._isDebugEnabled=function(){var _1ca=false;if(typeof (ibmPortalConfig)!="undefined"){if(ibmPortalConfig&&ibmPortalConfig.isDebug){_1ca=true;}}return _1ca;};ibm.portal.debug.text=function(str,_1cc){if(typeof (ibmPortalConfig)!="undefined"){if(ibmPortalConfig&&ibmPortalConfig.isDebug){var _1cd=ibm.portal.debug._traceString;if(_1cd){if(_1cc){if(_1cc.indexOf(_1cd)>=0){window.console.log(str);}}}else{window.console.log(str);}}}};ibm.portal.debug.entry=function(_1ce,args){if(ibm.portal.debug._isDebugEnabled()){var _1d0=_1ce+" --> entry; { ";if(args&&args.length>0){for(arg in args){_1d0=_1d0+args[arg]+" ";}}_1d0=_1d0+" } ";ibm.portal.debug.text(_1d0,_1ce);}};ibm.portal.debug.exit=function(_1d1,_1d2){if(ibm.portal.debug._isDebugEnabled()){var _1d3=_1d1+" --> exit;";if(typeof (_1d2)!="undefined"){_1d3=_1d3+" { "+_1d2+" } ";}ibm.portal.debug.text(_1d3,_1d1);}};ibm.portal.debug.escapeXmlForHTMLDisplay=function(_1d4){_1d4=_1d4.replace(/</g,"&lt;");_1d4=_1d4.replace(/>/g,"&gt;");return _1d4;};dojo.provide("com.ibm.portal.EventBroker");dojo.require("com.ibm.portal.debug");dojo.declare("com.ibm.portal.Event",null,{constructor:function(_1d5){this.eventName=_1d5;this._listeners=new Array();},fire:function(_1d6){ibm.portal.debug.text("Firing event: "+this.eventName+" with parameters: ");dojo.publish(this.eventName,[_1d6]);},register:function(_1d7,_1d8){if(!_1d8){return dojo.subscribe(this.eventName,null,_1d7);}else{return dojo.subscribe(this.eventName,_1d7,_1d8);}},unregister:function(_1d9){dojo.unsubscribe(_1d9);},cancel:function(_1da){dojo.publish(this.id+"/cancel");}});dojo.declare("com.ibm.portal.EventBroker",null,{startPage:new com.ibm.portal.Event("portal/StartPage"),endPage:new com.ibm.portal.Event("portal/EndPage"),startFragment:new com.ibm.portal.Event("portal/StartFragment"),endFragment:new com.ibm.portal.Event("portal/EndFragment"),fragmentUpdated:new com.ibm.portal.Event("portal/FragmentUpdated"),startRequest:new com.ibm.portal.Event("portal/StartRequest"),endRequest:new com.ibm.portal.Event("portal/EndRequest"),cancelAll:new com.ibm.portal.Event("portal/CancelAll"),cancelFragmentUpdate:new com.ibm.portal.Event("portal/CancelFragmentUpdate"),stateChanged:new com.ibm.portal.Event("portal/StateChanged"),startScriptHandling:new com.ibm.portal.Event("portal/StartScriptHandling"),endScriptHandling:new com.ibm.portal.Event("portal/EndScriptHandling"),startScriptExecution:new com.ibm.portal.Event("portal/StartScriptExecution"),endScriptExecution:new com.ibm.portal.Event("portal/EndScriptExecution"),javascriptCleanup:new com.ibm.portal.Event("portal/JavascriptCleanup"),beforeSnapShot:new com.ibm.portal.Event("portal/BeforeSnapShot"),afterSnapShot:new com.ibm.portal.Event("portal/AfterSnapShot"),restorePointUpdated:new com.ibm.portal.Event("portal/RestorePointUpdated"),clearRestorePoint:new com.ibm.portal.Event("portal/ClearRestorePoint"),stopEvent:new com.ibm.portal.Event("portal/StopEvent"),redirect:new com.ibm.portal.Event("portal/Redirect")});com.ibm.portal.EVENT_BROKER=new com.ibm.portal.EventBroker();dojo.provide("com.ibm.portal.services.PortalRestServiceRequestQueue");dojo.declare("com.ibm.portal.services.PortalRestServiceRequestQueue",null,{maxNumberOfActiveRequests:4,constructor:function(){var _1db="PortalRestServiceRequestQueue.constructor";ibm.portal.debug.entry(_1db);this._activeRequests=0;this._requestQueue=[];ibm.portal.debug.exit(_1db);},add:function(req){var _1dd="PortalRestServiceRequestQueue.add";ibm.portal.debug.entry(_1dd,[req]);this._requestQueue.push(req);var me=this;setTimeout(function(){me._executeNextRequest();},5);ibm.portal.debug.exit(_1dd);},_executeNextRequest:function(){var _1df="PortalRestServiceRequestQueue._executeNextRequest";ibm.portal.debug.entry(_1df);ibm.portal.debug.text(this._requestQueue.length+" request(s) in the queue. "+this._activeRequests+" active request(s) currently.",_1df);if(this._requestQueue.length>0&&this._activeRequests<this.maxNumberOfActiveRequests){var _1e0=this._requestQueue.shift();ibm.portal.debug.text("Executing request: "+_1e0,_1df);var me=this;setTimeout(function(){me._activeRequests=me._activeRequests+1;_1e0.execute(function(){me._notifyComplete();});},1);}else{ibm.portal.debug.text("No request(s) pending or maximum number of requests already currently active.",_1df);}ibm.portal.debug.exit(_1df);},_notifyComplete:function(){var _1e2="PortalRestServiceRequestQueue._notifyComplete";this._activeRequests=this._activeRequests-1;if(this._activeRequests<0){this._activeRequests=0;}var me=this;setTimeout(function(){me._executeNextRequest();},5);}});dojo.provide("com.ibm.portal.utilities");com.ibm.portal.utilities={findPortletIdByElement:function(_1e4){ibm.portal.debug.entry("findPortletID",[_1e4]);var id="";var _1e6=_1e4.parentNode;while(_1e6&&id.length==0){ibm.portal.debug.text("examining element "+_1e6.tagName+"; class="+_1e6.className,"findPortletID");if(_1e6.className&&(_1e6.className.match(/\bwpsPortletBody\b/)||_1e6.className.match(/\bwpsPortletBodyInlineMode\b/))){id=_1e6.id;var _1e7=id.indexOf("_mode");if(_1e7>=0){id=id.substring(0,_1e7);}}_1e6=_1e6.parentNode;}if(id.indexOf("portletActions_")>=0){id=id.substring("portletActions_".length);}ibm.portal.debug.exit("findPortletID",[id]);return id;},findFormByElement:function(_1e8){var _1e9=_1e8;while(_1e9){if(_1e9.tagName&&_1e9.tagName.toLowerCase()=="form"){break;}_1e9=_1e9.parentNode;}return _1e9;},encodeURI:function(uri){ibm.portal.debug.entry("encodeURI",[uri]);var _1eb=uri;var _1ec=uri.lastIndexOf(":");while(_1ec>=0){var _1ed=_1eb.substring(0,_1ec);var part=_1eb.substring(_1ec+1);_1eb=_1ed+":"+encodeURIComponent(part);_1ec=_1ed.lastIndexOf(":");}_1eb=encodeURIComponent(_1eb);ibm.portal.debug.exit("encodeURI",[_1eb]);return _1eb;},decodeURI:function(uri){ibm.portal.debug.entry("decodeURI",[uri]);var _1f0=decodeURIComponent(uri);var _1f1=_1f0.indexOf(":");while(_1f1>=0){var _1f2=_1f0.substring(0,_1f1);var part=_1f0.substring(_1f1+1);_1f0=_1f2+":"+decodeURIComponent(part);_1f1=_1f0.indexOf(":",_1f1+1);}ibm.portal.debug.exit("decodeURI",[_1f0]);return _1f0;},getSelectionNodeId:function(_1f4){ibm.portal.debug.entry("getSelectionNodeId",[_1f4]);var _1f5=_1f4.split("@oid:");ibm.portal.debug.exit("getSelectionNodeId",[_1f5[1]]);return _1f5[1];},getControlId:function(_1f6){ibm.portal.debug.entry("_getControlId",[_1f6]);var _1f7=_1f6.split("@oid:");var _1f8=_1f7[0].split("oid:");ibm.portal.debug.exit("getControlId",[_1f8[1]]);return _1f8[1];},overwriteProperty:function(obj,_1fa,_1fb,_1fc){ibm.portal.debug.entry("overwriteProperty",[obj,_1fa,_1fb,_1fc]);if(!obj["_overwritten_"]){obj["_overwritten_"]=new Object();}if(!_1fc){_1fc=false;}var _1fd=(_1fc&&(obj["_overwritten_"][_1fa]!=null));if(!_1fd){if(obj["_overwritten_"][_1fa]==null){obj["_overwritten_"][_1fa]=obj[_1fa];}else{obj["_overwritten_"][_1fa]=null;}obj[_1fa]=_1fb;ibm.portal.debug.text("Property overwrite successful!");}ibm.portal.debug.exit("overwriteProperty");},restoreProperty:function(obj,_1ff){ibm.portal.debug.entry("utilities.restoreProperty",[obj,_1ff]);var _200=obj[_1ff];if(obj["_overwritten_"]!=null){ibm.portal.debug.text("overwritten property value: "+obj["_overwritten_"]);obj[_1ff]=obj["_overwritten_"][_1ff];obj["_overwritten_"][_1ff]=null;}else{obj[_1ff]=null;}ibm.portal.debug.exit("utilities.restoreProperty",_200);return _200;},getOverwrittenProperty:function(obj,_202){if(obj["_overwritten_"]){return obj["_overwritten_"][_202];}else{return null;}},setOverwrittenProperty:function(obj,_204,_205){ibm.portal.debug.entry("utilities.setOverwrittenProperty",[obj,_204,_205]);if(!obj["_overwritten_"]){obj["_overwritten_"]=new Object();}obj["_overwritten_"][_204]=_205;ibm.portal.debug.exit("utilities.setOverwrittenProperty");},callOverwrittenFunction:function(_206,_207,args){ibm.portal.debug.entry("utilities.callOverwrittenFunction",[_206,_207,args]);var _209=null;var _20a=this.getOverwrittenProperty(_206,_207);ibm.portal.debug.text("Overwritten property: "+_20a);ibm.portal.debug.text("old property's apply function: "+_20a.apply);if(args){_209=_20a.apply(_206,args);}else{_209=_20a.apply(_206);}ibm.portal.debug.exit("utilities.callOverwrittenFunction",_209);return _209;},clearOverwrittenProperties:function(obj){ibm.portal.debug.entry("utilities.clearOverwrittenProperties",[obj]);if(obj["_overwritten_"]){obj["_overwritten_"]=null;}ibm.portal.debug.exit("utilities.clearOverwrittenProperties");},isExternalUrl:function(_20c){ibm.portal.debug.entry("isExternalUrl",[_20c]);var host=window.location.host;var _20e=window.location.protocol;var _20f=_20c.split("?")[0];var _210=!(_20f.indexOf("://")<0||(_20f.indexOf(_20e)==0&&_20f.indexOf(host)==_20e.length+2));ibm.portal.debug.text("urlStringNoQuery.indexOf(\"://\") = "+_20f.indexOf("://"));ibm.portal.debug.text("urlStringNoQuery.indexOf(protocol) = "+_20f.indexOf(_20e));ibm.portal.debug.exit("isExternalUrl",_210);return _210;},isJavascriptUrl:function(_211){ibm.portal.debug.entry("isJavascriptUrl",[_211]);var url=com.ibm.portal.utilities.string.trim(_211.toLowerCase());var _213=(url.indexOf("javascript:")==0);ibm.portal.debug.exit("isJavascriptUrl",_213);return _213;},isPortalUrl:function(_214){ibm.portal.debug.entry("utilities.isPortalUrl",[_214]);var _215=(_214.indexOf(ibmPortalConfig["portalURI"])>=0);ibm.portal.debug.exit("utilities.isPortalUrl",_215);return _215;},addExternalNode:function(doc,node){var _218=null;if(doc.importNode){_218=doc.importNode(node,true);}else{_218=node;}doc.appendChild(_218);},decodeXML:function(_219){ibm.portal.debug.entry("decodeXML",[_219]);var _21a=_219.replace(/&amp;/g,"&");var _21b=_21a.replace(/&amp;/g,"&");_21a=_21b.replace(/&#039;/g,"'");_21b=_21a.replace(/&#034;/g,"\"");_21b=_21b.replace(/&lt;/g,"<");_21b=_21b.replace(/&gt;/g,">");ibm.portal.debug.exit("decodeXML",[_21b]);return _21b;},eventHandlerToString:function(_21c){var _21d=_21c.toString();var _21e=_21d.indexOf("{");var _21f=_21d.lastIndexOf("}");onclickStr=_21d.substring(_21e+1,_21f);return onclickStr;},_waitingForScript:false,_isWaitingForScript:function(){return com.ibm.portal.utilities._waitingForScript;},stopWaitingForScript:function(){com.ibm.portal.utilities._waitingForScript=false;},waitFor:function(_220,_221,_222,args){var _224=setInterval(function(){if(_220()){clearInterval(_224);if(!args){_222();}else{_222(args);}}},_221);},waitForScript:function(_225,args){com.ibm.portal.utilities._waitingForScript=true;com.ibm.portal.utilities.waitFor(function(){return (!com.ibm.portal.utilities._isWaitingForScript());},500,_225,args);}};com.ibm.portal.utilities.string={findNext:function(_227,_228,from){ibm.portal.debug.entry("string.findNext",[_227,_228]);var _22a=-1;for(var i=0;i<_228.length;i++){var _22c=null;if(from){_22c=from+_228[i].length;}var _22d=_227.indexOf(_228[i],_22c);if(_22d>-1&&(_22d<_22a||_22a==-1)){_22a=_22d;}}ibm.portal.debug.exit("string.findNext",[_22a]);return _22a;},contains:function(_22e,_22f){ibm.portal.debug.entry("string.contains",[_22e,_22f]);var _230=false;if(_22e!=null&&_22f!=null){_230=(_22e.indexOf(_22f)!=-1);}ibm.portal.debug.exit("string.contains",[_230]);return _230;},strip:function(_231,_232){ibm.portal.debug.entry("string.strip",[_231,_232]);var _233=_231.replace(new RegExp(_232,"g"),"");ibm.portal.debug.exit("string.strip",[_233]);return _233;},properCase:function(_234){if(_234==null||_234.length<1){return "";}ibm.portal.debug.entry("string.properCase",[_234]);var _235=_234.charAt(0).toUpperCase();if(_234.length>1){_235+=_234.substring(1).toLowerCase();}ibm.portal.debug.exit("string.properCase",[_235]);return _235;},trim:function(_236){ibm.portal.debug.entry("string.trim",[_236]);var _237=_236;_237=_237.replace(/^\s+/,"");_237=_237.replace(/\s+$/,"");ibm.portal.debug.exit("string.trim",_237);return _237;}};dojo.declare("com.ibm.portal.utilities.HttpUrl",null,{constructor:function(_238){this.scheme=window.location.protocol+"//";this.server=this._extractServer(_238);this.port=this._extractPort(_238);this.path=this._extractPath(_238);this.query=this._extractQuery(_238);this.anchor="";},addParameter:function(name,_23a){this.query+="&"+name+"="+_23a;},toString:function(){var str="";if(this.server!=""){str+=this.scheme+this.server;}if(this.port!=""){str+=":"+this.port;}str+="/"+this.path;if(this.query!=""){str+="?"+this.query;}if(this.anchor!=""){str+="#"+this.anchor;}return str;},_extractServer:function(_23c){var _23d=_23c.indexOf(this.scheme);var _23e="";if(_23d==0){var _23f=_23c.indexOf("/",_23d+this.scheme.length);var _240=_23c.substring(_23d+this.scheme.length,_23f);_23e=_240.split(":")[0];}return _23e;},_extractPort:function(_241){var _242=_241.indexOf(this.server);var _243="";if(_242>=0){var _244=_241.indexOf("/",_242);var _245=_241.substring(_242,_244);var _246=_245.split(":");if(_246.length>1){_243=_246[1];}}return _243;},_extractPath:function(_247){var _248=_247.indexOf(this.server);var _249="";if(_248>=0){var _24a=_247.indexOf("/",_248);var _24b=_247.indexOf("?");var _24c=_247.lastIndexOf("#");if(_24b>=0){_249=_247.substring(_24a+1,_24b);}else{if(_24c>=0){_249=_247.substring(_24a+1,_24c);}else{_249=_247.substring(_24a+1);}}}return _249;},_extractQuery:function(_24d){var _24e="";var _24f=_24d.split("?");if(_24f.length>1){_24e=_24f[1].split("#")[0];}return _24e;},_extractAnchor:function(_250){var _251="";var _252=_250.split("#");if(_252.length>1){_251=_252[_252.length-1];}return _251;}});dojo.provide("com.ibm.portal.utilities.html");dojo.require("com.ibm.portal.utilities");dojo.require("dojo.fx");com.ibm.portal.utilities.html={createAnchor:function(_253,href,id,_256,_257){ibm.portal.debug.entry("SkinRenderer.createAnchor",[_253,href,id,_256,_257]);var _258=document.createElement("A");_258.href=href;if(id){_258.id=id;}if(_257){_258.className=_257;}if(_256){_258.appendChild(document.createTextNode(_256));}_253.appendChild(_258);ibm.portal.debug.exit("SkinRenderer.createAnchor",[_258]);return _258;},createButton:function(_259,href,id,_25c,_25d){ibm.portal.debug.entry("SkinRenderer.createButton",[_259,href,id,_25c,_25d]);var _25e=document.createElement("BUTTON");if(href){_25e.href=href;}if(id){_25e.id=id;}if(_25d){_25e.className=_25d;}if(_25c){_25e.appendChild(document.createTextNode(_25c));}_259.appendChild(_25e);ibm.portal.debug.exit("SkinRenderer.createButton",[_25e]);return _25e;},createImage:function(_25f,src,id,_262,_263){ibm.portal.debug.entry("SkinRenderer.createImage",[_25f,src,id,_262,_263]);var img=document.createElement("IMG");img.src=src;if(id){img.id=id;}if(_262){img.alt=_262;img.setAttribute("title",_262);if(_25f.nodeName=="BUTTON"){_25f.setAttribute("title",_262);}}if(_263){img.className=_263;}_25f.appendChild(img);ibm.portal.debug.exit("SkinRenderer.createImage",[img]);return img;},createImageAnchor:function(_265,src,id,_268,_269){ibm.portal.debug.entry("SkinRenderer.createImageAnchor",[_265,src,id,_268,_269]);var _26a=com.ibm.portal.utilities.html.createAnchor(_265,"javascript:void(0);");var img=document.createElement("IMG");img.src=src;if(id){img.id=id;}if(_268){img.alt=_268;img.title=_268;}if(_269){img.className=_269;}_26a.appendChild(img);ibm.portal.debug.exit("SkinRenderer.createImageAnchor",[img]);return _26a;},createTemporaryMarkupDiv:function(_26c){ibm.portal.debug.entry("html.createTemporaryMarkupDiv");var _26d={markup:_26c,objects:{}};if(dojo.isIE){_26d=com.ibm.portal.utilities.html.extractObjectElementsFromString(_26c);}var div=document.createElement("DIV");div.innerHTML="<p style='display: none;'>&nbsp;</p>"+_26d.markup;ibm.portal.debug.exit("html.createTemporaryMarkupDiv",[div]);return {node:div,objects:_26d.objects};},extractObjectElementsFromString:function(_26f){var _270={};var _271=/<object/gi;var _272=/<\/object>/gi;var _273=_26f;var _274=null;try{_274=_271.exec(_273);if(_274&&_274.index>-1){var _275=_274.index;var buf;var end;var _278;var id;while(_275>-1){buf=_273.substring(0,_275);end=_273.indexOf(">",_275);if(_273.charAt(end-1)=="/"){_271.lastIndex=end;_274=_271.exec(_273);if(_274){_275=_274.index;continue;}else{break;}}_272.lastIndex=_275;_274=_272.exec(_273);if(_274){end=_274.index;}else{break;}_278=_273.substring(_275,end+9);id=dojo.dnd.getUniqueId();_273=buf+"<div id='"+id+"'></div>"+_273.substring(end+9);_270[id]=_278;_271.lastIndex=0;_274=_271.exec(_273);if(_274){_275=_274.index;}else{break;}}}_26f=_273;}catch(e){_270={};}return {markup:_26f,objects:_270};},replaceObjectElementsInMarkup:function(_27a){for(var id in _27a){var _27c=dojo.byId(id);if(_27c){_27c.outerHTML=_27a[id];}}},removeNodesOnCondition:function(node,_27e){if(!_27e){_27e=function(){return false;};}if(node&&node.childNodes){for(var i=0;i<node.childNodes.length;i++){if(_27e(node.childNodes[i])){var _280=node.childNodes[i];node.removeChild(_280);delete _280;i--;}else{this.removeNodesOnCondition(node.childNodes[i],_27e);}}}},getElementsByTagNames:function(_281){ibm.portal.debug.entry("html.getElementsByTagNames",[_281]);var _282=new Array();for(var i=1;i<arguments.length;i++){var _284=_281.getElementsByTagName(arguments[i]);ibm.portal.debug.text("found "+_284.length+" "+arguments[i]+" tags.");for(var j=0;j<_284.length;j++){_282.push(_284[j]);}}ibm.portal.debug.exit("html.getElementsByTagNames",[_282]);return _282;},getX:function(elem){ibm.portal.debug.entry("html.getX",[elem]);var size=0;if(elem!=null){if(elem.offsetParent!=null){size+=com.ibm.portal.utilities.html.getX(elem.offsetParent);}if(elem!=null){size+=elem.offsetLeft;}}ibm.portal.debug.exit("html.getX",[size]);return size;},getY:function(elem){ibm.portal.debug.entry("html.getY"[elem]);var size=0;if(elem!=null){if(elem.offsetParent!=null){size+=com.ibm.portal.utilities.html.getY(elem.offsetParent);}if(elem!=null){size+=elem.offsetTop;}}ibm.portal.debug.exit("html.getY",[size]);return size;},convertFormToQuery:function(_28a,_28b){ibm.portal.debug.entry("html.convertFormToQuery",[_28a,_28b]);var _28c=this.getElementsByTagNames(_28a,"input","select","textarea","button");var _28d="";var _28e="&";var _28f="=";var _290=0;for(var i=0;i<_28c.length;i++){var _292=this.convertInputToNameValuePairs(_28c[i],_28b);for(var k=0;k<_292.length;k++){var pair=_292[k];if(pair.name!=""){if(_290!=0){_28d+=_28e;}_28d+=encodeURIComponent(pair.name);for(var j=0;j<pair.values.length;j++){if(j==0){_28d+=(_28f+encodeURIComponent(pair.values[j]));}else{_28d+=(_28e+encodeURIComponent(pair.name)+_28f+encodeURIComponent(pair.values[j]));}}_290=_290+1;}}}ibm.portal.debug.exit("html.convertFormToQuery",_28d);return _28d;},convertInputToNameValuePairs:function(_296,_297){ibm.portal.debug.entry("html.convertInputToNameValuePairs",[_296,_297]);var type=_296.type;ibm.portal.debug.text("Input type is: "+type);ibm.portal.debug.text("Input name is: "+_296.name);var name="";var _29a=[];var _29b=[];if(!_296.disabled){switch(type.toLowerCase()){case "text":case "password":case "hidden":name=_296.name;_29a.push(_296.value);_29b.push({name:name,values:_29a});break;case "reset":case "button":if(!_297||(_296.name==_297.name&&_296.value==_297.value)){name=_296.name;_29a.push(_296.value);_29b.push({name:name,values:_29a});}break;case "radio":case "checkbox":if(_296.checked){name=_296.name;_29a.push(_296.value);}_29b.push({name:name,values:_29a});break;case "image":if(!_297||_296.name==_297){name=_296.name;if(_296.value){_29a.push(_296.value);_29b.push({name:name,values:_29a});}_29b.push({name:name+".x",values:[this.getX(_296)]});_29b.push({name:name+".y",values:[this.getY(_296)]});}break;case "submit":if(!_297||(_296.name==_297.name&&_296.value==_297.value)){name=_296.name;if(_296.value){_29a.push(_296.value);}_29b.push({name:name,values:_29a});}break;case "select-one":case "select-multiple":name=_296.name;for(var i=0;i<_296.options.length;i++){if(_296.options[i].selected){var _29d=_296.options[i].value?_296.options[i].value:_296.options[i].text;_29a.push(_29d);}}if(_29a.length!=0){_29b.push({name:name,values:_29a});}break;case "file":break;default:name=_296.name;_29a.push(_296.value);_29b.push({name:name,values:_29a});}}ibm.portal.debug.exit("html.convertInputToNameValuePairs",_29b);return _29b;},isHidden:function(node){return dojo.style(node,"display")=="none";},hide:function(node){dojo.fx.wipeOut({node:node,duration:5}).play();},show:function(node){dojo.fx.wipeIn({node:node,duration:5}).play();},isDescendantOf:function(node,ref){var node=node.parentNode;var _2a3=false;while(node&&!_2a3){if(node==ref){_2a3=true;}node=node.parentNode;}return _2a3;}};dojo.provide("com.ibm.portal.services.PortalRestServiceRequest");dojo.require("com.ibm.ajax.auth");dojo.require("com.ibm.portal.EventBroker");dojo.require("com.ibm.portal.services.PortalRestServiceRequestQueue");dojo.declare("com.ibm.portal.services.ContentHandlerURL",null,{constructor:function(uri,_2a5,verb,_2a7){ibm.portal.debug.entry("ContentHandlerURL.constructor",[uri,_2a5,verb,_2a7]);if(uri==null){return null;}if(!_2a5){_2a5=2;}var _2a8=com.ibm.portal.navigation.controller.NAVIGATION_CONTROLLER.getState();var _2a9=_2a8.getLocale();if(_2a9){if(_2a7){_2a7+="&locale="+_2a9;}else{_2a7="&locale="+_2a9;}}this.url="";if(uri.charAt(0)=="?"){this.url=this._fromQueryString(uri,_2a7);}else{this.url=this._fromURI(uri,_2a5,"download",_2a7);}ibm.portal.debug.exit("ContentHandlerURL.constructor");},_fromQueryString:function(_2aa,_2ab){ibm.portal.debug.entry("fromQueryString",[_2aa]);var str=ibmPortalConfig["contentHandlerURI"]+_2aa;str=str.replace(/&amp;/g,"&");if(_2ab){str=str+_2ab;}if(str.indexOf("rep=compact")<0&&str.indexOf("rep=full")<0){str=str+"&rep=compact";}ibm.portal.debug.exit("fromQueryString",[str]);return str;},_fromURI:function(uri,_2ae,verb,_2b0){ibm.portal.debug.entry("ContentHandlerURL._fromURI",[uri,_2ae,verb,_2b0]);uri=com.ibm.portal.utilities.encodeURI(uri);var qStr="?uri="+uri;if(_2ae){qStr=qStr+"&levels="+encodeURIComponent(_2ae);}if(verb){qStr=qStr+"&mode="+encodeURIComponent(verb);}if(_2b0){qStr=qStr+_2b0;}if(qStr.indexOf("rep=compact")<0&&qStr.indexOf("rep=full")<0){qStr=qStr+"&rep=compact";}return this._fromQueryString(qStr);},getURI:function(){ibm.portal.debug.entry("ContentHandlerURL.getURI");return com.ibm.portal.utilities.decodeURI(this._extractParamValue("uri"));},getLevels:function(){return this._extractParamValue("levels");},getVerb:function(){return this._extractParamValue("verb");},_extractParamValue:function(_2b2){ibm.portal.debug.entry("ContentHandlerURL._extractParamValue",[_2b2]);var _2b3=this.url.indexOf(_2b2);var _2b4=this.url.indexOf("&",_2b3);var _2b5=this.url.slice(_2b3+_2b2.length+1,_2b4);ibm.portal.debug.exit("ContentHandlerURL._extractParamValue",[_2b5]);return _2b5;}});dojo.require("com.ibm.portal.utilities.html");dojo.declare("com.ibm.portal.services.PortalRestServiceForm",null,{method:"GET",isMultipart:false,encoding:"application/x-www-form-urlencoded",DomId:null,constructor:function(_2b6){if(_2b6.getAttributeNode("method")){this.method=_2b6.getAttributeNode("method").value;}if(_2b6.getAttributeNode("encType")){this.encoding=_2b6.getAttributeNode("encType").value;}if(_2b6.getAttributeNode("id")){this.DomId=_2b6.getAttributeNode("id").value;}else{DomId=_2b6;}this.isMultipart=(this.encoding=="multipart/form-data");},getDOMElement:function(){return dojo.byId(this.DomId);},submit:function(){this.getDOMElement().submit();},toQuery:function(){return com.ibm.portal.utilities.html.convertFormToQuery(this.getDOMElement());}});com.ibm.portal.services.REQUEST_QUEUE=new com.ibm.portal.services.PortalRestServiceRequestQueue();dojo.declare("com.ibm.portal.services.PortalRestServiceRequest",null,{constructor:function(_2b7,form,_2b9,sync){ibm.portal.debug.entry("PortalRestServiceRequest.constructor",[_2b7,form,_2b9,sync]);this._feedURI=_2b7.url;this._textOnly=_2b9;this._sync=sync;this._form=form;this._customResponseValidator=null;this._onauthenticated=null;if(!this._sync){this._sync=false;}ibm.portal.debug.exit("PortalRestServiceRequest.constructor");},cancelled:false,_deferred:undefined,setAuthenticationValidator:function(_2bb){this._customResponseValidator=_2bb;},setOnAuthenticatedHandler:function(_2bc){this._onauthenticated=_2bc;},create:function(data,_2be,_2bf){if(!this.cancelled){this._doXmlHttpRequest("POST",data,_2be,_2bf);}},read:function(_2c0,_2c1){ibm.portal.debug.entry("PortalRestServiceRequest.read",[_2c0,_2c1]);if(!this.cancelled){if(!this._sync){ibm.portal.debug.text("Queueing request!");var q=com.ibm.portal.services.REQUEST_QUEUE;var me=this;q.add({execute:function(_2c4){if(!me.cancelled){com.ibm.portal.EVENT_BROKER.startRequest.fire({uri:me._feedURI});var _2c5=function(arg1,arg2,arg3,arg4){_2c0(arg1,arg2,arg3,arg4);if(_2c4){_2c4();}};if(me._textOnly){me._retrieveRawFeed(_2c5,_2c1);}else{me._retrieve(_2c5,_2c1);}}else{if(_2c4){_2c4();}}}});}else{com.ibm.portal.EVENT_BROKER.startRequest.fire({uri:this._feedURI});if(this._textOnly){this._retrieveRawFeed(_2c0,_2c1);}else{this._retrieve(_2c0,_2c1);}}}ibm.portal.debug.exit("PortalRestServiceRequest.read");},update:function(data,_2cb,_2cc){if(!this.cancelled){this._doXmlHttpRequest("Put",data,_2cb,_2cc);}},remove:function(_2cd,_2ce){if(!this.cancelled){this._doXmlHttpRequest("Delete",null,_2cd,_2ce);}},cancel:function(){this.cancelled=true;if(this._deferred!==undefined){this._deferred.cancel();}},_retrieveRawFeed:function(_2cf,_2d0){ibm.portal.debug.entry("_retrieveRawFeed",[_2cf,_2d0]);var me=this;dojo.xhrGet({url:this._feedURI,load:function(type,data,evt){_2cf(data,_2d0);com.ibm.portal.EVENT_BROKER.endRequest.fire({uri:me._feedURI});},sync:this._sync});ibm.portal.debug.exit("_retrieveRawFeed");},_retrieve:function(_2d5,_2d6,_2d7,_2d8){ibm.portal.debug.entry("_retrieve",[_2d5]);if(this._form&&this._form.isMultipart){this._doIframeRequest(_2d5,_2d6);}else{this._doXmlHttpRequest("Get",null,_2d5,_2d6);}ibm.portal.debug.exit("PortalRestServiceRequest._retrieve");},_doIframeRequest:function(_2d9,_2da){ibm.portal.debug.entry("PortalRestServiceRequest._doIframeRequest",[_2d9]);var _2db=null;var _2dc=dojo.dnd.getUniqueId();if(dojo.isIE){_2db=document.createElement("<iframe name='"+_2dc+"' id='"+_2dc+"' src='about:blank' onload='com.ibm.portal.aggregation.forms.PORTLET_FORM_HANDLER.handleMultiPartResult(this.id);'></iframe>");com.ibm.portal.aggregation.forms.PORTLET_FORM_HANDLER._callbackfns[_2dc]={fn:_2d9,args:_2da};var url=new com.ibm.portal.utilities.HttpUrl(this._feedURI);url.addParameter("ibm.web2.contentType","text/plain");this._form.getDOMElement().setAttribute("action",url.toString());}else{ibm.portal.debug.text("Creating the iframe... name is: "+_2dc+"; url is: "+this._feedURI);_2db=document.createElement("IFRAME");_2db.setAttribute("name",_2dc);_2db.setAttribute("id",_2dc);var me=this;_2db.onload=function(){var xml=window.frames[_2dc].document;_2d9("load",xml,null,_2da);com.ibm.portal.EVENT_BROKER.endRequest.fire({uri:me._feedURI});};this._form.getDOMElement().setAttribute("action",this._feedURI);}_2db.style.visibility="hidden";_2db.style.height="1px";_2db.style.width="1px";document.body.appendChild(_2db);if(window.frames[_2dc].name!=_2dc){window.frames[_2dc].name=_2dc;}ibm.portal.debug.text("Setting the iframe target attribute to: "+_2dc);this._form.getDOMElement().setAttribute("target",_2dc);this._form.submit();ibm.portal.debug.exit("PortalRestServiceRequest._doIframeRequest");},_doXmlHttpRequest:function(_2e0,body,_2e2,_2e3){ibm.portal.debug.entry("PortalRestServiceRequest._doXmlHttpRequest",[_2e0,body,_2e2,_2e3]);ibm.portal.debug.text("Attempting to retrieve: "+this._feedURI+" using method: "+_2e0+"; synchronously? "+this._sync);var me=this;var args={url:this._feedURI,content:{},headers:{"X-IBM-XHR":"true"},handle:function(_2e6,_2e7){ibm.portal.debug.entry("PortalRestServiceRequest.handle",[_2e6,_2e7]);if(_2e6 instanceof Error&&_2e6.dojoType==="cancel"){_2e2("cancel",_2e6,null,_2e3);return;}var xhr=_2e7.xhr;ibm.portal.debug.text("XHR object: "+xhr);var _2e9=com.ibm.portal.services.PortalRestServiceConfig;var _2ea=xhr.getResponseHeader("X-Request-Digest");if(_2ea){_2e9.digest=_2ea;}if(xhr.status==200){var data=_2e6;var loc=xhr.getResponseHeader("IBM-Web2-Location");if(loc){if(loc.indexOf(ibmPortalConfig["portalProtectedURI"])>=0&&me._feedURI.indexOf(ibmPortalConfig["portalPublicURI"])>=0){top.location.href=loc;return;}}var _2ed=xhr.getResponseHeader("Content-Type");ibm.portal.debug.text("content-type is: "+_2ed);if(/^text\/html/.exec(_2ed)&&loc&&(loc.indexOf(ibmPortalConfig["portalProtectedURI"])>-1||loc.indexOf(ibmPortalConfig["portalPublicURI"])>-1)){ibm.portal.debug.text("content-type is text .. follow IBM-Web2-Location");top.location.href=loc;return;}var auth=com.ibm.ajax.auth;var _2ef=false;if(me._customResponseValidator){_2ef=me._customResponseValidator(_2e6,_2e7);}if(!_2ef){_2ef=auth.isAuthenticationRequired(_2e6,_2e7);}if(_2ef){auth.authenticationHandler(_2e6,_2e7,me._onauthenticated);return;}ibm.portal.debug.text("Read feed: "+me._feedURI);if(dojo.isIE){var doc=dojox.data.dom.createDocument(data);_2e2("load",doc,xhr,_2e3);}else{_2e2("load",data,xhr,_2e3);}}else{if(xhr.status==401||xhr.status==0){ibm.portal.debug.text("Basic auth 401 found, trigger reload");com.ibm.ajax.auth.authenticationHandler();return;}else{_2e2("error",_2e6,xhr,_2e3);}}com.ibm.portal.EVENT_BROKER.endRequest.fire({uri:me._feedURI});ibm.portal.debug.exit("PortalRestServiceRequest.handle");},sync:this._sync,handleAs:"xml"};if(this._form){args.content=dojo.queryToObject(this._form.toQuery());_2e0=this._form.method;}_2e0=_2e0.toUpperCase();if(_2e0!="GET"&&_2e0!="POST"){if(ibmPortalConfig&&ibmPortalConfig.xMethodOverride){args.headers["X-Method-Override"]=_2e0.toUpperCase();_2e0="Post";}}if(_2e0=="PUT"&&body){args.putData=body;}else{if(_2e0=="POST"&&body){args.postData=body;}}if(dojo.isIE){args.content["ibm.web2.contentType"]="text/xml";args.handleAs="text";}var _2f1=com.ibm.portal.services.PortalRestServiceConfig;if(_2f1.timeout){args.timeout=_2f1.timeout;}if(_2f1.digest){args.content["digest"]=_2f1.digest;}_2e0=com.ibm.portal.utilities.string.properCase(_2e0);var _2f2=dojo["xhr"+_2e0];if(_2f2){this._deferred=_2f2(args);}else{throw new Error("Invalid request method attempted: "+_2e0);}ibm.portal.debug.exit("PortalRestServiceRequest._doXmlHttpRequest");},toString:function(){return this._feedURI;}});com.ibm.portal.services.PortalRestServiceConfig={timeout:null,digest:null};com.ibm.ajax.auth.setAuthenticationHandler(function(){if(typeof (document.isCSA)=="undefined"){top.location.reload();}else{ibm.portal.debug.entry("DefaultAuthenticationHandler");ibm.portal.debug.text("Illegal response content-type detected!");ibm.portal.debug.text("Parameterized redirect URL is: "+ibmPortalConfig["contentModelBlankURL"]);var _2f3=com.ibm.portal.navigation.controller.NAVIGATION_CONTROLLER.getState();var _2f4=ibmPortalConfig["contentModelBlankURL"].replace("-----oid-----",_2f3.getPageSelection());ibm.portal.debug.text("fullPageRefreshURL is currently: "+_2f4);if(dojo.cookie("WASReqURL")!=null){var _2f5=_2f3.createLinkToCurrentState();var _2f6="WASReqURL="+_2f5+"; path=/";document.cookie=_2f6;}ibm.portal.debug.text("Redirecting to: "+_2f4);com.ibm.portal.EVENT_BROKER.redirect.fire({url:_2f4});top.location.href=_2f4;ibm.portal.debug.exit("DefaultAuthenticationHandler");}});dojo.provide("com.ibm.portal.services.PortletFragmentService");dojo.require("dojox.data.dom");dojo.require("com.ibm.portal.services.PortalRestServiceRequest");dojo.require("com.ibm.portal.utilities");dojo.require("com.ibm.portal.debug");dojo.require("com.ibm.portal.EventBroker");dojo.declare("com.ibm.portal.services.PortletFragmentURL",null,{constructor:function(uri){if(uri.indexOf("?uri=")==0){this.url=ibmPortalConfig["portalURI"]+uri;this.url=this.url.replace(/&amp;/g,"&");this.url=this.url.replace(/lm:/,"pm:");}else{if(uri.indexOf("lm:")==0){this.url=ibmPortalConfig["portalURI"]+"?uri=fragment:"+uri;this.url=this.url.replace(/lm:/,"pm:");}else{this.url=uri;}}}});dojo.declare("com.ibm.portal.services.PortletInfo",null,{constructor:function(wId,pId,_2fa,_2fb,_2fc,_2fd,_2fe,_2ff,_300,_301,_302,_303){ibm.portal.debug.entry("PortletInfo.constructor",[wId,pId,_2fa,_2fb,_2fc,_2fd,_2ff,_303]);this.windowId=wId;this.portletId=pId;this.uri="fragment:pm:oid:"+wId+"@oid:"+pId;this.markup=_2fa;this.portletModes=_2fb;this.windowStates=_2fc;this.dependentPortlets=_2fd;this.otherPortlets=_2fe;this.stateVaryExpressions=_300;this.updatedState=_2ff;this.currentMode=_301;this.currentWindowState=_302;this.portletTitle=_303;ibm.portal.debug.exit("PortletInfo.constructor");}});dojo.declare("com.ibm.portal.services.PortletFragmentService",null,{namespaces:{"xsl":"http://www.w3.org/1999/XSL/Transform","thr":"http://purl.org/syndication/thread/1.0","atom":"http://www.w3.org/2005/Atom","xhtml":"http://www.w3.org/1999/xhtml","model":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.0.1/portal-model-elements","base":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.0/ibm-portal-composite-base","portal":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.0.1/portal-model","xsi":"http://www.w3.org/2001/XMLSchema-instance","state":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portal-state","state-vary":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portal-state-vary"},activeRequests:{},constructor:function(){this.staticContext=com.ibm.portal.services.PortletFragmentService.prototype;},_flagPortletUrl:function(url,_305){ibm.portal.debug.entry("PortletFragmentService._flagPortletUrl",[url]);var _306=url.indexOf("uri=fragment:pm:oid:");var _307=new com.ibm.portal.utilities.HttpUrl(url);_307.addParameter("ibm.web2.keepRenderMode","false");if(_306<0){_305=_305.replace(/lm:/g,"fragment:pm:");_307.addParameter("uri",_305);}ibm.portal.debug.exit("PortletFragmentService._flagPortletUrl",[_307.toString()]);return _307.toString();},getPortletInfo:function(_308,_309,_30a,form,_30c){ibm.portal.debug.entry("PortletFragmentService.getPortletInfo",[_308,_309,_30a,form,_30c]);if(_309=="#"||_309==window.location.href+"#"){ibm.portal.debug.text("Illegal portlet url provided: "+_309);ibm.portal.debug.text("Aborting request.");return false;}if(com.ibm.portal.utilities.isJavascriptUrl(_309)){return eval(_309);}var _30d=_309;if(_30d.indexOf(top.location.href)==0){_30d=_30d.substring(top.location.href.length);while(_30d.length>0&&_30d.charAt(0)=="/"){_30d=_30d.substring(1);}}if(_30d.indexOf("?")==0){var _30e=com.ibm.portal.navigation.controller.NAVIGATION_CONTROLLER.getState();_309=_30e.resolveRelativePortletURL(_30d);}if(com.ibm.portal.utilities.isExternalUrl(_309)){self.location.href=_309;}else{var url={url:this._flagPortletUrl(_309,_308)};var _310=ibmPortalConfig.enforceOneActivePortletRequest;if(_310){var _311=this.staticContext.activeRequests;if(_311[_308]!==undefined&&_311[_308]!==null){_311[_308].cancel();com.ibm.portal.EVENT_BROKER.cancelFragmentUpdate.fire({id:_308});_311[_308]=null;}}var _312=new com.ibm.portal.services.PortalRestServiceRequest(url,form);if(!_30c){com.ibm.portal.EVENT_BROKER.startFragment.fire({id:_308});}if(_310){_311[_308]=_312;}var me=this;_312.read(function(type,_315,xhr){if(_310){_311[_308]=null;}if(!_312.cancelled){var _317=null;if(type=="load"){_317=me.createPortletInfo(_315);}if(_315 instanceof Error){_317=_315;}if(!_30c){me._fireEvents(_317,_308,xhr);}if(_30a){_30a(_317,xhr);}}});}ibm.portal.debug.exit("PortletFragmentService.getPortletInfo");},readWindowID:function(_318){ibm.portal.debug.entry("PortletFragmentService.readWindowID",[_318]);var _319="/atom:feed/atom:entry/atom:id";var _31a=com.ibm.portal.xpath.evaluateXPath(_319,_318,this.namespaces);var _31b=dojox.data.dom.textContent(_31a[0]);ibm.portal.debug.exit("PortletFragmentService.readWindowID",[_31b.substring(4)]);return _31b.substring(4);},readPortletID:function(_31c){ibm.portal.debug.entry("PortletFragmentService.readPortletID",[_31c]);var _31d="/atom:feed/atom:id";var _31e=com.ibm.portal.xpath.evaluateXPath(_31d,_31c,this.namespaces);var _31f=dojox.data.dom.textContent(_31e[0]);ibm.portal.debug.exit("PortletFragmentService.readPortletID",[_31f.substring(4)]);return _31f.substring(4);},readMarkup:function(_320){ibm.portal.debug.entry("PortletFragmentService.readMarkup",[_320]);var _321="/atom:feed/atom:entry/atom:content";var _322=com.ibm.portal.xpath.evaluateXPath(_321,_320,this.namespaces);var _323="";if(_322!=null&&_322.length>0){_323=dojox.data.dom.textContent(_322[0]);}ibm.portal.debug.exit("PortletFragmentService.readMarkup",[_323]);return _323;},readPortletModes:function(_324){ibm.portal.debug.entry("PortletFragmentService.readPortletModes",[_324]);var _325="/atom:feed/atom:entry/atom:link[@portal:rel='portlet-mode']";var _326=com.ibm.portal.xpath.evaluateXPath(_325,_324,this.namespaces);var _327=new Array();if(_326!=null&&_326.length>0){var _328=_326.length;for(var i=0;i<_328;i++){_327.push({"link":_326[i].getAttribute("href"),"mode":_326[i].getAttribute("title")});}}ibm.portal.debug.exit("PortletFragmentService.readPortletModes",[_327]);return _327;},readWindowStates:function(_32a){ibm.portal.debug.entry("PortletFragmentService.readWindowStates",[_32a]);var _32b="/atom:feed/atom:entry/atom:link[@portal:rel='window-state']";var _32c=com.ibm.portal.xpath.evaluateXPath(_32b,_32a,this.namespaces);var _32d=new Array();if(_32c!=null&&_32c.length>0){var _32e=_32c.length;for(var i=0;i<_32e;i++){_32d.push({"link":_32c[i].getAttribute("href"),"mode":_32c[i].getAttribute("title")});}}ibm.portal.debug.exit("PortletFragmentService.readWindowStates",[_32d]);return _32d;},readDependentPortlets:function(_330){ibm.portal.debug.entry("PortletFragmentService.readDependentPortlets",[_330]);var _331="/atom:feed/atom:link[@portal:rel='dependent']";var _332=com.ibm.portal.xpath.evaluateXPath(_331,_330,this.namespaces);var _333=new Array();if(_332!=null&&_332.length>0){var _334=_332.length;for(var i=0;i<_334;i++){_333.push({"link":_332[i].getAttribute("href"),"portlet":_332[i].getAttribute("title"),"uri":_332[i].getAttribute("portal:uri")?_332[i].getAttribute("portal:uri"):_332[i].getAttribute("uri")});}}ibm.portal.debug.exit("PortletFragmentService.readDependentPortlets",[_333]);return _333;},readOtherPortlets:function(_336){ibm.portal.debug.entry("PortletFragmentService.readOtherPortlets",[_336]);var _337="/atom:feed/atom:link[@portal:rel='other']";var _338=com.ibm.portal.xpath.evaluateXPath(_337,_336,this.namespaces);var _339=new Array();if(_338!=null&&_338.length>0){var _33a=_338.length;for(var i=0;i<_33a;i++){_339.push({"link":_338[i].getAttribute("href"),"portlet":_338[i].getAttribute("title"),"uri":_338[i].getAttribute("portal:uri")});}}ibm.portal.debug.exit("PortletFragmentService.readOtherPortlets",[_339]);return _339;},readStateVaryExpressions:function(_33c){ibm.portal.debug.entry("PortletFragmentService.readStateVaryExpressions",[_33c]);var _33d="/atom:feed/atom:entry/state-vary:state-vary/state-vary:expr";var _33e=com.ibm.portal.xpath.evaluateXPath(_33d,_33c,this.namespaces);var _33f=new Array();if(_33e!=null&&_33e.length>0){var _340=_33e.length;for(var i=0;i<_340;i++){var _342=_33e[i].firstChild;if(_342!=null){_33f.push(_342.nodeValue);}}}ibm.portal.debug.exit("PortletFragmentService.readStateVaryExpressions",[_33f]);return _33f;},readPortletState:function(_343){return this._readPortletState(_343);},_readPortletState:function(_344){ibm.portal.debug.entry("PortletFragmentService.readPortletState",[_344]);var _345="/atom:feed/atom:entry/state:root";var _346=com.ibm.portal.xpath.evaluateXPath(_345,_344,this.namespaces);var _347=null;if(_346!=null&&_346.length>0){var doc=dojox.data.dom.createDocument();com.ibm.portal.utilities.addExternalNode(doc,_346[0]);_347=doc;}else{_345="/atom:feed/state:root";_346=com.ibm.portal.xpath.evaluateXPath(_345,_344,this.namespaces);if(_346!=null&&_346.length>0){var doc=dojox.data.dom.createDocument();com.ibm.portal.utilities.addExternalNode(doc,_346[0]);_347=doc;}}ibm.portal.debug.exit("PortletFragmentService.readPortletState",[_347]);return _347;},readPortletTitle:function(_349){return this._readPortletTitle(_349);},_readPortletTitle:function(_34a){ibm.portal.debug.entry("PortletFragmentService.readPortletTitle",[_34a]);var _34b="/atom:feed/atom:entry/atom:title";var _34c=com.ibm.portal.xpath.evaluateXPath(_34b,_34a,this.namespaces);var _34d=dojox.data.dom.textContent(_34c[0]);ibm.portal.debug.exit("PortletFragmentService.readPortletTitle",_34d);return _34d;},_fireEvents:function(_34e,_34f,xhr){this._fireGlobalPortletStateChange(_34e,_34f,xhr);},_fireGlobalPortletStateChange:function(_351,_352,xhr){com.ibm.portal.EVENT_BROKER.endFragment.fire({portletInfo:_351,id:_352,xhr:xhr});},_fireIndividualPortletStateChange:function(_354){},createPortletInfo:function(_355){var _356=this.readWindowID(_355);var _357=this.readPortletID(_355);var _358=this.readMarkup(_355);var _359=this.readPortletModes(_355);var _35a=this.readWindowStates(_355);var _35b=this.readDependentPortlets(_355);var _35c=this.readOtherPortlets(_355);var _35d=this.readPortletState(_355);var _35e=this.readStateVaryExpressions(_355);var _35f=this.readPortletTitle(_355);var _360=_35d;if(_360==null){_360=this._readPortletState(_355);}var _361=new com.ibm.portal.state.StateManager();var _362=_361.newPortletAccessor(_356,_360);var mode=_362.getPortletMode();var _364=_362.getWindowState();return new com.ibm.portal.services.PortletInfo(_356,_357,_358,_359,_35a,_35b,_35c,_35d,_35e,mode,_364,_35f);}});dojo.declare("com.ibm.portal.services.IndependentPortletFragmentService",com.ibm.portal.services.PortletFragmentService,{readDependentPortlets:function(_365){ibm.portal.debug.entry("DependentPortletFragmentService.readDependentPortlets",[_365]);var _366=new Array();ibm.portal.debug.exit("DependentPortletFragmentService.readDependentPortlets",[_366]);return _366;},readOtherPortlets:function(_367){ibm.portal.debug.entry("DependentPortletFragmentService.readOtherPortlets",[_367]);var _368=new Array();ibm.portal.debug.exit("DependentPortletFragmentService.readOtherPortlets",[_368]);return _368;},readPortletState:function(_369){return null;}});if(!dojo._hasResource["ibm.portal.portlet.portlet"]){dojo._hasResource["ibm.portal.portlet.portlet"]=true;dojo.provide("ibm.portal.portlet.portlet");ibm.portal.portlet._SafeToExecute=false;if(window.addEventListener){window.addEventListener("load",function(){ibm.portal.portlet._SafeToExecute=true;},false);}else{if(window.attachEvent){window.attachEvent("onload",function(){ibm.portal.portlet._SafeToExecute=true;});}}dojo.declare("ibm.portal.portlet.PortletWindow",null,{STATUS_UNDEFINED:0,STATUS_OK:1,STATUS_ERROR:2,constructor:function(_36a){if(_36a==null){return;}this.windowID=_36a;var _36b=document.getElementById("com.ibm.wps.web2.portlet.preferences."+this.windowID);this.preferenceEditID=_36b.getAttribute("editid");this.preferenceConfigID=_36b.getAttribute("configid");this.preferenceEditDefaultsID=_36b.getAttribute("editdefaultsid");this.pageID=_36b.getAttribute("pageid");this.attributes=new Array();this._queuedFuncs=new Array();this.portletState=new ibm.portal.portlet.PortletState(_36a);this.isCSA=false;try{this.isCSA=(typeof (document.isCSA)!="undefined");}catch(e){}var me=this;function executeQueued(){for(var i=0;i<me._queuedFuncs.length;i++){me._queuedFuncs[i]();}};if(window.addEventListener){window.addEventListener("load",function(){if(!ibm.portal.portlet._SafeToExecute){ibm.portal.portlet._SafeToExecute=true;}executeQueued();},false);}else{if(window.attachEvent){window.attachEvent("onload",function(){if(!ibm.portal.portlet._SafeToExecute){ibm.portal.portlet._SafeToExecute=true;}executeQueued();});}}},reportError:function(_36e){var code;if(_36e.getErrorCode()==ibm.portal.portlet.Error.ERROR){code="error";}else{if(_36e.getErrorCode()==ibm.portal.portlet.Error.INFO){code="info";}else{if(_36e.getErrorCode()==ibm.portal.portlet.Error.WARN){code="warning";}}}var _370={"_type":code,"_message":_36e.getMessage(),"_details":_36e.getDescription()};if(this.isCSA){dojo.publish("/portal/status",[{message:_370}]);}else{if(typeof (console)!="undefined"){if(_36e.getErrorCode()==ibm.portal.portlet.Error.ERROR){console.error(_370._message+"\n"+_370._details);}else{if(_36e.getErrorCode()==ibm.portal.portlet.Error.INFO){console.info(_370._message+"\n"+_370._details);}else{if(_36e.getErrorCode()==ibm.portal.portlet.Error.WARN){console.warn(_370._message+"\n"+_370._details);}}}}else{alert(_370._type.toUpperCase()+"\nMessage: "+_370._message+"\nDetails: "+_370._details);}}},getAttribute:function(name){return this.attributes[name];},setAttribute:function(name,_373){var ret=this.attributes[name];this.attributes[name]=_373;return ret;},removeAttribute:function(name){this.attributes[name]=null;},clearAttributes:function(){this.attributes=new Array();},getPortletState:function(_376){var _377=this.portletState;var _378=this;var _379=null;if(_376!=null){_376(_378,ibm.portal.portlet.PortletWindow.STATUS_OK,_377);}else{_379={"portletWindow":_378,"status":ibm.portal.portlet.PortletWindow.STATUS_OK,"returnObject":_377};}return _379;},setPortletState:function(_37a,_37b){this.portletState=_37a;if(this.isCSA){if(_37b==null){var _37c=com.ibm.portal.navigation.controller.NAVIGATION_CONTROLLER.getState();var url=_37c.newPortletRenderURL(this.windowID);var _37e=new com.ibm.portal.services.PortletFragmentService();_37e.getPortletInfo("lm:oid:"+this.windowID+"@oid:"+this.pageID,url);}}else{var _37f=new com.ibm.portal.state.StateManager(ibmPortalConfig["contentHandlerURI"]);_37f.reset(_37a.portletAccessor.stateDOM);var _380=_37f.getSerializationManager();var _381=_380.serialize(_37f.getState());var _382=_381["returnObject"];var url=_382;window.location.href=url;}return this.getPortletState(_37b);},_queueUp:function(_383){this._queuedFuncs.push(_383);},_throwInappropriateRequestError:function(_384){throw new Error("Cannot execute a synchronous call before the page loads! Please use an onload handler to execute this call to \""+_384+"\".");return null;},getPortletPreferences:function(_385){if(!ibm.portal.portlet._SafeToExecute){if(_385){var me=this;this._queueUp(function(){me.getPortletPreferences(_385);});return false;}else{return this._throwInappropriateRequestError("getPortletPreferences");}}var _387=this.getPortletState().returnObject.getPortletMode();this.status=ibm.portal.portlet.PortletWindow.STATUS_UNDEFINED;var _388=document.getElementById("com.ibm.wps.web2.portlet.root."+this.windowID).innerHTML;var idx=_388.indexOf("--portletwindowid--");var _url=_388.replace(/--portletwindowid--/g,this.windowID);if(_url.indexOf("?")<0){_url=_url+"?";}_url+="&verb=download&levels=-all&rep=compact&preferences=aggregated";this.requestedPreferenceID="pm:oid:"+this.preferenceEditID;if(_387==ibm.portal.portlet.PortletMode.CONFIG){this.requestedPreferenceID="pm:oid:"+this.preferenceConfigID;}else{if(_387==ibm.portal.portlet.PortletMode.EDIT_DEFAULTS){this.requestedPreferenceID="pm:oid:"+this.preferenceEditDefaultsID;}}var _38b=this;var _38c=null;dojo.xhrGet({url:_url,handleAs:"xml",headers:{"X-IBM-XHR":"true","If-Modified-Since":"Thu, 1 Jan 1970 00:00:00 GMT"},sync:(_385)?false:true,handle:function(_38d,_38e){if(_38b.isAuthenticationRequired(_38e.xhr,_38e.args.handleAs)){_38b.doAuthentication();}else{var type=(_38d instanceof Error)?"error":"load";if(type=="load"){var _390=_38d;if(!_390||(typeof (dojox.data.dom.innerXML(_38d))=="undefined")){_390=dojox.data.dom.createDocument(_38e.xhr.responseText);}var _391=new ibm.portal.portlet.PortletPreferences(_38b.windowID,_38b.requestedPreferenceID,_390);if(_385){_385(_38b,ibm.portal.portlet.PortletWindow.STATUS_OK,_391);}else{_38c={"portletWindow":_38b,"status":ibm.portal.portlet.PortletWindow.STATUS_OK,"returnObject":_391};}}else{if(type=="error"){if(_385){_385(_38b,ibm.portal.portlet.PortletWindow.STATUS_ERROR,null);}else{_38c={"portletWindow":_38b,"status":ibm.portal.portlet.PortletWindow.STATUS_ERROR,"returnObject":null};}}}}},transport:"XMLHTTPTransport"});return _38c;},setPortletPreferences:function(_392,_393){if(!ibm.portal.portlet._SafeToExecute){if(_393){var me=this;this._queueUp(function(){me.setPortletPreferences(_392,_393);});return false;}else{return this._throwInappropriateRequestError("setPortletPreferences");}}this.status=ibm.portal.portlet.PortletWindow.STATUS_UNDEFINED;var _395=document.getElementById("com.ibm.wps.web2.portlet.root."+this.windowID).innerHTML;var idx=_395.indexOf("--portletwindowid--");var _url=_395.replace(/--portletwindowid--/g,this.windowID);if(_url.indexOf("?")<0){_url+="?verb=download";}else{_url+="&verb=download";}var _398=_392.requestedPreferenceID;var expr="/atom:feed/atom:entry[atom:id='"+_398+"']";var _39a=ibm.portal.xml.xpath.evaluateXPath(expr,_392.xmlData,_392.ns);var _39b;if(_39a&&_39a.length>0){_39b=_39a[0];}else{return null;}var _39c=_39b.parentNode;expr="/atom:feed/atom:entry";_39a=ibm.portal.xml.xpath.evaluateXPath(expr,_392.xmlData,_392.ns);for(var i=0;i<_39a.length;i++){var node=_39a[i];if(node!=_39b){_39c.removeChild(node);}}var _39f=this;var _3a0=null;dojo.rawXhrPut({url:_url,sync:(_393)?false:true,putData:dojox.data.dom.innerXML(_392.xmlData),contentType:"application/xml",headers:{"X-IBM-XHR":"true"},handleAs:"xml",handle:function(_3a1,_3a2){if(_39f.isAuthenticationRequired(_3a2.xhr,_3a2.args.handleAs)){_39f.doAuthentication();}else{var type=(_3a1 instanceof Error)?"error":"load";if(type=="load"){if(_393){_393(_39f,ibm.portal.portlet.PortletWindow.STATUS_OK,_392);}else{_3a0={"portletWindow":_39f,"status":ibm.portal.portlet.PortletWindow.STATUS_OK,"returnObject":_392};}}else{if(type=="error"){if(_393){_393(_39f,ibm.portal.portlet.PortletWindow.STATUS_ERROR,null);}else{_3a0={"portletWindow":_39f,"status":ibm.portal.portlet.PortletWindow.STATUS_ERROR,"returnObject":null};}}}}},transport:"XMLHTTPTransport"});return _3a0;},getUserProfile:function(_3a4){if(!ibm.portal.portlet._SafeToExecute){if(_3a4){var me=this;this._queueUp(function(){me.getUserProfile(_3a4);});return false;}else{return this._throwInappropriateRequestError("getUserProfile");}}this.status=ibm.portal.portlet.PortletWindow.STATUS_UNDEFINED;var _url=document.getElementById("com.ibm.wps.web2.portlet.user."+this.windowID).innerHTML;var _3a7=this;var _3a8=null;dojo.xhrGet({url:_url,headers:{"X-IBM-XHR":"true","If-Modified-Since":"Thu, 1 Jan 1970 00:00:00 GMT"},sync:(_3a4)?false:true,handleAs:"xml",handle:function(_3a9,_3aa){if(_3a7.isAuthenticationRequired(_3aa.xhr,_3aa.args.handleAs)){_3a7.doAuthentication();}else{var type=(_3a9 instanceof Error)?"error":"load";if(type=="load"){var _3ac=_3a9;if(!_3ac||(typeof (dojox.data.dom.innerXML(_3a9))=="undefined")){_3ac=dojox.data.dom.createDocument(_3aa.xhr.responseText);}var _3ad=new ibm.portal.portlet.UserProfile(_3a7.windowID,_3ac);if(_3a4){_3a4(_3a7,ibm.portal.portlet.PortletWindow.STATUS_OK,_3ad);}else{_3a8={"portletWindow":_3a7,"status":ibm.portal.portlet.PortletWindow.STATUS_OK,"returnObject":_3ad};}}else{if(type=="error"){if(_3a4){_3a4(_3a7,ibm.portal.portlet.PortletWindow.STATUS_ERROR,null);}else{_3a8={"portletWindow":_3a7,"status":ibm.portal.portlet.PortletWindow.STATUS_ERROR,"returnObject":null};}}}}},transport:"XMLHTTPTransport"});return _3a8;},setUserProfile:function(_3ae,_3af){if(!ibm.portal.portlet._SafeToExecute){if(_3af){var me=this;this._queueUp(function(){me.setUserProfile(_3ae,_3af);});return false;}else{return this._throwInappropriateRequestError("setUserProfile");}}this.status=ibm.portal.portlet.PortletWindow.STATUS_UNDEFINED;var _url=document.getElementById("com.ibm.wps.web2.portlet.user."+this.windowID).innerHTML;var _3b2=this;var _3b3=null;dojo.rawXhrPost({url:_url,sync:(_3af)?false:true,postData:dojox.data.dom.innerXML(_3ae.xmlData),contentType:"application/xml",headers:{"X-IBM-XHR":"true"},handleAs:"xml",handle:function(_3b4,_3b5){if(_3b2.isAuthenticationRequired(_3b5.xhr,_3b5.args.handleAs)){_3b2.doAuthentication();}else{var type=(_3b4 instanceof Error)?"error":"load";if(type=="load"){if(_3af){_3af(_3b2,ibm.portal.portlet.PortletWindow.STATUS_OK,_3ae);}else{_3b3={"portletWindow":_3b2,"status":ibm.portal.portlet.PortletWindow.STATUS_OK,"returnObject":_3ae};}}else{if(type=="error"){if(_3af){_3af(_3b2,ibm.portal.portlet.PortletWindow.STATUS_ERROR,null);}else{_3b3={"portletWindow":_3b2,"status":ibm.portal.portlet.PortletWindow.STATUS_ERROR,"returnObject":null};}}}}},transport:"XMLHTTPTransport"});return _3b3;},newXMLPortletRequest:function(){return new ibm.portal.portlet.XMLPortletRequest(this);},isAuthenticationRequired:function(_3b7,_3b8){if(_3b7.readyState!=4){throw new Error("isAuthenticationRequired should only be called with a COMPLETED XMLHttpRequest! The readyState on the given XMLHttpRequest is not 4 (COMPLETE)!");}var _3b9={dojoType:"valid"};var _3ba={xhr:_3b7,args:{handleAs:_3b8}};return com.ibm.ajax.auth.isAuthenticationRequired(_3b9,_3ba);},setAuthenticationHandler:function(_3bb){this._authenticationFn=_3bb;},doAuthentication:function(){if(this._authenticationFn){this._authenticationFn();}else{com.ibm.ajax.auth.authenticationHandler();}}});dojo.declare("ibm.portal.portlet.PortletPreferences",null,{constructor:function(_3bc,_3bd,data){this.windowID=_3bc;this.requestedPreferenceID=_3bd;this.xmlData=data;this.xsltURL=dojo.moduleUrl("ibm","portal/portlet/");this.ns={"xsl":"http://www.w3.org/1999/XSL/Transform","thr":"http://purl.org/syndication/thread/1.0","atom":"http://www.w3.org/2005/Atom","xhtml":"http://www.w3.org/1999/xhtml","model":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.0.1/portal-model-elements","base":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.0/ibm-portal-composite-base","portal":"http://www.ibm.com/xmlns/prod/websphere/portal/v6.0.1/portal-model","xsi":"http://www.w3.org/2001/XMLSchema-instance"};this.internal_reset();},getMap:function(){if(this.result_getMap){return this.result_getMap;}var _3bf=ibm.portal.xml.xslt.loadXsl(this.xsltURL+"PortletPreferencesMap.xsl");if(_3bf.documentElement==null){alert("xslDoc is null");}var _3c0=ibm.portal.xml.xslt.transform(this.xmlData,_3bf,null,{"selectionid":this.requestedPreferenceID},true);if(_3c0==null){this.result_getNames=null;return null;}var _3c1=eval(_3c0);if(_3c1){_3c1=_3c1.preferences;}this.result_getMap=_3c1;return this.result_getMap;},getNames:function(){if(this.result_getNames){return this.result_getNames;}var _3c2=ibm.portal.xml.xslt.loadXsl(this.xsltURL+"PortletPreferencesNames.xsl");if(_3c2.documentElement==null){alert("xslDoc is null");}var _3c3=ibm.portal.xml.xslt.transform(this.xmlData,_3c2,null,{"selectionid":this.requestedPreferenceID},true);if(_3c3==null){this.result_getNames=null;return null;}var _3c4=eval(_3c3);if(_3c4){_3c4=_3c4.names;}this.result_getNames=_3c4;return this.result_getNames;},getValue:function(key,def){var expr="/atom:feed/atom:entry[atom:id='"+this.requestedPreferenceID+"']/atom:content/*/model:portletpreferences[@name='"+key+"']/base:value";var _3c8=ibm.portal.xml.xpath.evaluateXPath(expr,this.xmlData,this.ns);var _3c9;if(_3c8&&_3c8.length>0){_3c9=_3c8[0].getAttribute("value");}else{_3c9=def;}return _3c9;},getValues:function(key,def){var expr="/atom:feed/atom:entry[atom:id='"+this.requestedPreferenceID+"']/atom:content/*/model:portletpreferences[@name='"+key+"']/base:value";var _3cd=ibm.portal.xml.xpath.evaluateXPath(expr,this.xmlData,this.ns);var _3ce;if(_3cd&&_3cd.length>0){_3ce=new Array();for(var i=0;i<_3cd.length;i++){_3ce[i]=_3cd[i].getAttribute("value");}}else{_3ce=def;}return _3ce;},isReadOnly:function(key){var id=this.requestedPreferenceID;var expr="/atom:feed/atom:entry[atom:id='"+id+"']/atom:content/*/model:portletpreferences[@name='"+key+"']";var _3d3=ibm.portal.xml.xpath.evaluateXPath(expr,this.xmlData,this.ns);var _3d4=false;if(_3d3&&_3d3.length>0){var temp=_3d3[0].getAttribute("read-only");if(temp!=null){if(temp=="true"){_3d4=true;}}}return _3d4;},reset:function(key){this.internal_reset();var expr="/atom:feed/atom:entry[atom:id='"+this.requestedPreferenceID+"']/atom:content/*/model:portletpreferences[@name='"+key+"']";var _3d8=ibm.portal.xml.xpath.evaluateXPath(expr,this.xmlData,this.ns);if(_3d8&&_3d8.length>0){var _3d9=_3d8[0].parentNode;_3d9.removeChild(_3d8[0]);}},setValue:function(key,_3db){var _3dc=new Array();_3dc[0]=_3db;this.setValues(key,_3dc);},setValues:function(key,_3de){this.internal_reset();var expr="/atom:feed/atom:entry[atom:id='"+this.requestedPreferenceID+"']/atom:content/*/model:portletpreferences[@name='"+key+"']";var _3e0=ibm.portal.xml.xpath.evaluateXPath(expr,this.xmlData,this.ns);var _3e1=null;if(_3e0&&_3e0.length>0){_3e1=_3e0[0];for(var i=_3e1.childNodes.length-1;i>=0;i--){_3e1.removeChild(_3e1.childNodes[i]);}}else{var _3e3="/atom:feed/atom:entry[atom:id='"+this.requestedPreferenceID+"']/atom:content/*";var _3e4=ibm.portal.xml.xpath.evaluateXPath(_3e3,this.xmlData,this.ns);if(dojo.isIE){_3e1=this.xmlData.createNode(1,"model:portletpreferences",this.ns.model);}else{_3e1=this.xmlData.createElementNS(this.ns.model,"model:portletpreferences");}_3e1.setAttribute("name",key);_3e1.setAttribute("read-only","false");_3e4[0].appendChild(_3e1);}for(var i=0;i<_3de.length;i++){var _3e5;if(dojo.isIE){_3e5=this.xmlData.createNode(1,"base:value",this.ns.base);var _3e6=this.xmlData.createNode(2,"xsi:type",this.ns.xsi);_3e6.nodeValue="String";_3e5.setAttributeNode(_3e6);}else{_3e5=this.xmlData.createElementNS(this.ns.base,"base:value");_3e5.setAttributeNS(this.ns.xsi,"xsi:type","String");}_3e5.setAttribute("value",_3de[i]);_3e1.appendChild(_3e5);}},internal_reset:function(){this.result_getMap=null;this.result_getNames=null;},clone:function(){var _3e7=dojox.data.dom.innerXML(this.xmlData);var _3e8=dojox.data.dom.createDocument(_3e7);return new ibm.portal.portlet.PortletPreferences(this.windowID,this.requestedPreferenceID,_3e8);}});dojo.declare("ibm.portal.portlet.PortletMode",null,{VIEW:"view",EDIT:"edit",EDIT_DEFAULTS:"edit_defaults",HELP:"help",CONFIG:"config"});dojo.declare("ibm.portal.portlet.WindowState",null,{NORMAL:"normal",MINIMIZED:"minimized",MAXIMIZED:"maximized"});dojo.declare("ibm.portal.portlet.PortletState",null,{constructor:function(_3e9,_3ea){var _3eb=new com.ibm.portal.state.StateManager(ibmPortalConfig["contentHandlerURI"]);if(dojo.isString(_3e9)){var _3ec=this._getExistingState(_3e9,_3eb.getSerializationManager());_3eb.reset(_3ec);}else{_3eb.reset(_3e9);_3e9=_3ea;}this.portletAccessor=_3eb.newPortletAccessor(_3e9);this.renderParameters=this.portletAccessor.getRenderParameters();},_isCSA:function(){var _3ed=false;try{_3ed=(typeof (document.isCSA)!="undefined");}catch(e){}return _3ed;},_getExistingState:function(_3ee,_3ef){var _3f0=null;if(this._isCSA()){_3f0=com.ibm.portal.navigation.controller.NAVIGATION_CONTROLLER.getState().stateDOM;}else{if(_3ef!=null){var _3f1=_3ef.deserialize(location.href);_3f0=_3f1.returnObject;}else{_3f0=dojox.data.dom.createDocument();}}return _3f0;},getPortletMode:function(){return this.portletAccessor.getPortletMode();},setPortletMode:function(_3f2){this.portletAccessor.setPortletMode(_3f2);return _3f2;},getWindowState:function(){return this.portletAccessor.getWindowState();},setWindowState:function(_3f3){this.portletAccessor.setWindowState(_3f3);return _3f3;},getParameterNames:function(){return this.renderParameters.getNames();},getParameterValue:function(name){return this.renderParameters.getValue(name);},getParameterValues:function(name){return this.renderParameters.getValues(name);},getParameterMap:function(){return this.renderParameters.getMap();},setParameterValue:function(name,_3f7){this.renderParameters.setValue(name,_3f7);return _3f7;},setParameterValues:function(name,_3f9){this.renderParameters.setValues(name,_3f9);return _3f9;},setParameterMap:function(map,_3fb){if(_3fb==true){this.renderParameters.clear();}this.renderParameters.putAll(map);return this.renderParameters.getMap();},removeParameter:function(name){this.renderParameters.remove(name);}});dojo.require("com.ibm.portal.services.PortletFragmentService");dojo.declare("ibm.portal.portlet.XMLPortletRequest",null,{onreadystatechange:null,readyState:0,responseText:null,responseXML:null,status:null,statusText:null,onportletstateready:null,_location:null,_async:null,constructor:function(_3fd){var _3fe=this.declaredClass+".constructor";ibm.portal.debug.entry(_3fe,[_3fd]);this.pageID=_3fd.pageID;this.windowID=_3fd.windowID;this.windowObj=_3fd;ibm.portal.debug.exit(_3fe);},_getXHR:function(){var _3ff=this.declaredClass+"._getXHR";ibm.portal.debug.entry(_3ff);if(!this._xhr){this._xhr=this._createXHR();}ibm.portal.debug.exit(_3ff,this._xhr);return this._xhr;},_createXHR:function(){var _400=this.declaredClass+"._createXHR";ibm.portal.debug.entry(_400);var _401=null;if(typeof (XMLHttpRequest)!="undefined"){_401=new XMLHttpRequest();}else{_401=new ActiveXObject("Microsoft.XMLHTTP");}ibm.portal.debug.exit(_400,_401);return _401;},_onreadystatechangehandler:function(){var _402=this.declaredClass+"._onreadystatechangehandler";ibm.portal.debug.entry(_402);if(!this.handled){var xhr=this._getXHR();this.readyState=xhr.readyState;ibm.portal.debug.text("ready state is "+xhr.readyState);if(this.readyState==4){var _404=this.windowObj.isAuthenticationRequired(xhr,"xml");ibm.portal.debug.text("is auth required: "+_404);if(_404){this.windowObj.doAuthentication(xhr);return;}else{this.responseText=xhr.responseText;this.responseXML=xhr.responseXML;this.status=xhr.status;this.statusText=xhr.statusText;var _405=new com.ibm.portal.services.PortletFragmentService();var _406=_405.createPortletInfo(xhr.responseXML);this.responseText=_406.markup;this.responseXML=null;var _407=true;var _408=_406.updatedState;if(this.onportletstateready!=null){var _409=_406.windowId;var _40a=new ibm.portal.portlet.PortletState(_408,_409);_407=this.onportletstateready(_40a);}if(_407&&this._isCSA()){_405._fireGlobalPortletStateChange(_406);}this._handleDependentPortlets(_405.readDependentPortlets(xhr.responseXML),_408);this.handled=true;}}if(this.onreadystatechange!=null){this.onreadystatechange();}}ibm.portal.debug.exit(_402);},_handleDependentPortlets:function(_40b,_40c){var _40d=this.declaredClass+"._handleDependentPortlets";ibm.portal.debug.entry(_40d,[_40b,_40c]);if(!this._isCSA()){if(_40b.length>0){window.location.href=this._newPageURL(_40c);}}ibm.portal.debug.exit(_40d);},_isCSA:function(){var _40e=this.declaredClass+"._isCSA";ibm.portal.debug.entry(_40e);var _40f=false;try{_40f=(typeof (document.isCSA)!="undefined");}catch(e){}ibm.portal.debug.exit(_40e,_40f);return _40f;},_flag:function(_410){var _411=this.declaredClass+"._flag";ibm.portal.debug.entry(_411,[_410]);var id="lm:oid:"+this.windowID+"@oid:"+this.pageID;var _413=new com.ibm.portal.services.PortletFragmentService();var url=_413._flagPortletUrl(_410,id);ibm.portal.debug.exit(_411,url);return url;},_newPageURL:function(_415){var _416=this.declaredClass+"._newPageURL";ibm.portal.debug.entry(_416,[_415]);ibm.portal.debug.text(dojox.data.dom.innerXML(_415));var _417=new com.ibm.portal.state.StateManager(ibmPortalConfig["contentHandlerURI"]);var _418=_415;if(!_415){_418=dojox.data.dom.createDocument();}_417.reset(_418);var _419=_417.getSerializationManager();var _41a=_419.serialize(_418);var _41b=_41a["returnObject"];var url=_41b;ibm.portal.debug.exit(_416,url);return url;},open:function(_41d,uri){var _41f=this.declaredClass+".open";ibm.portal.debug.entry(_41f,[_41d,uri]);this.open(_41d,uri,false);ibm.portal.debug.exit(_41f);},open:function(_420,uri,_422){var _423=this.declaredClass+".open";ibm.portal.debug.entry(_423,[_420,uri,_422]);var xhr=this._getXHR();var me=this;this._location=uri;if(_422==undefined){_422=false;}this._async=_422;xhr.onreadystatechange=function(){me._onreadystatechangehandler();};xhr.open(_420,this._flag(uri),_422);xhr.setRequestHeader("X-IBM-XHR","true");ibm.portal.debug.exit(_423);},setRequestHeader:function(_426,_427){var _428=this.declaredClass+".setRequestHeader";ibm.portal.debug.entry(_428,[_426,_427]);this._getXHR().setRequestHeader(_426,_427);ibm.portal.debug.exit(_428);},send:function(data){var _42a=this.declaredClass+".send";ibm.portal.debug.entry(_42a,[data]);this._getXHR().send(data);if(!this._async){this._onreadystatechangehandler();}ibm.portal.debug.exit(_42a);},abort:function(){var _42b=this.declaredClass+".abort";ibm.portal.debug.entry(_42b);this._getXHR().abort();ibm.portal.debug.exit(_42b);},getAllResponseHeaders:function(){return this._getXHR().getAllResponseHeaders();},getResponseHeader:function(_42c){return this._getXHR().getResponseHeader(_42c);}});dojo.declare("ibm.portal.portlet.UserProfile",null,{constructor:function(_42d,data){this.windowID=_42d;this.xmlData=data;this.ns={"xsl":"http://www.w3.org/1999/XSL/Transform","atom":"http://www.w3.org/2005/Atom","xhtml":"http://www.w3.org/1999/xhtml","xsi":"http://www.w3.org/2001/XMLSchema-instance","um":"http://www.ibm.com/xmlns/prod/websphere/um.xsd"};},getAttribute:function(name){var expr="/atom:entry/atom:content/um:profile[@type='user']/um:attribute[@name='"+name+"']/um:attributeValue";var _431=ibm.portal.xml.xpath.evaluateXPath(expr,this.xmlData,this.ns);var _432=null;if(_431&&_431.length>0){if(_431[0].textContent){_432=_431[0].textContent;}else{_432=_431[0].text;}}return _432;},setAttribute:function(name,_434){var expr="/atom:entry/atom:content/um:profile[@type='user']/um:attribute[@name='"+name+"']/um:attributeValue";var _436=ibm.portal.xml.xpath.evaluateXPath(expr,this.xmlData,this.ns);var _437=null;if(_436&&_436.length>0){if(_436[0].textContent){_437=_436[0].textContent;_436[0].textContent=_434;}else{_437=_436[0].text;_436[0].text=_434;}}else{var _438="/atom:entry/atom:content/um:profile[@type='user']/um:attribute[@name='"+name+"']";var _439=ibm.portal.xml.xpath.evaluateXPath(_438,this.xmlData,this.ns);var _43a=null;if(_439&&_439.length>0){_43a=_439[0];}else{var _43b="/atom:entry/atom:content/um:profile[@type='user']";var _43c=ibm.portal.xml.xpath.evaluateXPath(_43b,this.xmlData,this.ns);if(dojo.isIE){_43a=this.xmlData.createNode(1,"um:attribute",this.ns.um);}else{_43a=this.xmlData.createElementNS(this.ns.um,"um:attribute");}_43a.setAttribute("type","xs:string");_43a.setAttribute("multiValued","false");_43a.setAttribute("name",name);_43c[0].appendChild(_43a);}var _43d;if(dojo.isIE){_43d=this.xmlData.createNode(1,"um:attributeValue",this.ns.um);_43d.text=_434;}else{_43d=this.xmlData.createElementNS(this.ns.um,"um:attributeValue");_43d.textContent=_434;}_43a.appendChild(_43d);}return _437;},clone:function(){var _43e=dojox.data.dom.innerXML(this.xmlData);var _43f=dojox.data.dom.createDocument(_43e);return new ibm.portal.portlet.UserProfile(this.windowID,_43f);}});dojo.declare("ibm.portal.portlet.Error",null,{INFO:0,WARN:1,ERROR:2,constructor:function(_440,_441,_442){this.errorCode=_440;this.message=_441;this.description=_442;},getErrorCode:function(){return this.errorCode;},getMessage:function(){return this.message;},getDescription:function(){return this.description;}});var com_ibm_portal_portlet_portletwindow=new ibm.portal.portlet.PortletWindow();ibm.portal.portlet.PortletWindow.STATUS_UNDEFINED=com_ibm_portal_portlet_portletwindow.STATUS_UNDEFINED;ibm.portal.portlet.PortletWindow.STATUS_OK=com_ibm_portal_portlet_portletwindow.STATUS_OK;ibm.portal.portlet.PortletWindow.STATUS_ERROR=com_ibm_portal_portlet_portletwindow.STATUS_ERROR;com_ibm_portal_portlet_portletwindow=null;var com_ibm_portal_portlet_portletmode=new ibm.portal.portlet.PortletMode();ibm.portal.portlet.PortletMode.VIEW=com_ibm_portal_portlet_portletmode.VIEW;ibm.portal.portlet.PortletMode.EDIT=com_ibm_portal_portlet_portletmode.EDIT;ibm.portal.portlet.PortletMode.EDIT_DEFAULTS=com_ibm_portal_portlet_portletmode.EDIT_DEFAULTS;ibm.portal.portlet.PortletMode.HELP=com_ibm_portal_portlet_portletmode.HELP;ibm.portal.portlet.PortletMode.CONFIG=com_ibm_portal_portlet_portletmode.CONFIG;com_ibm_portal_portlet_portletmode=null;var com_ibm_portal_portlet_windowstate=new ibm.portal.portlet.WindowState();ibm.portal.portlet.WindowState.NORMAL=com_ibm_portal_portlet_windowstate.NORMAL;ibm.portal.portlet.WindowState.MINIMIZED=com_ibm_portal_portlet_windowstate.MINIMIZED;ibm.portal.portlet.WindowState.MAXIMIZED=com_ibm_portal_portlet_windowstate.MAXIMIZED;com_ibm_portal_portlet_windowstate=null;var com_ibm_portal_portlet_error=new ibm.portal.portlet.Error();ibm.portal.portlet.Error.INFO=com_ibm_portal_portlet_error.INFO;ibm.portal.portlet.Error.WARN=com_ibm_portal_portlet_error.WARN;ibm.portal.portlet.Error.ERROR=com_ibm_portal_portlet_error.ERROR;com_ibm_portal_portlet_error=null;}
/*********************************************************** {COPYRIGHT-TOP} ***
* Licensed Materials - Property of IBM
* Tivoli Presentation Services
*
* (C) Copyright IBM Corp. 2002,2003 All Rights Reserved.
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
************************************************************ {COPYRIGHT-END} ***
* Change Activity on 6/20/03 version 1.17:
* @00=WCL, V3R0, 04/14/2002, JCP: Initial version
* @01=D96484, V3R2, 06/14/2002, bcourt: hide select/iframe elements
* @02=D99067, V3R2, 06/25/2002, bcourt: hide listbox scrollbar
* @03=D97043, V3R3, 09/03/2002, JCP: fix launch menu item on linux NS6
* @04=D104656, V3R3, 09/16/2002, JCP: form submit instead of triggers, mozilla compatibility
* @05=D107029, V3R4, 12/03/2002, Mark Rebuck:  Added support for timed menu hiding
* @06=D110173, V3R4, 03/24/2003, JCP: selection sometimes gets stuck
* @07=D113641, V3R4, 04/29/2003, LSR: Requirement #258 Shorten CSS Names
* @08=D113626, V3R4, 06/20/2003, JCP: clicking on text doesn't launch action on linux Moz13
*******************************************************************************/

var visibleMenu_ = null;
var padding_ = 10;

var transImg_ = "transparent.gif";

var arrowNorm_ = "contextArrowDefault.gif";
var arrowSel_ = "contextArrowSelected.gif";
var arrowDis_ = "contextArrowDisabled.gif";
var launchNorm_ = "contextLauncherDefault.gif";
var launchSel_ = "contextLauncherSelected.gif";

var arrowNormRTL_ = "contextArrowDefault.gif";
var arrowSelRTL_ = "contextArrowSelected.gif";
var arrowDisRTL_ = "contextArrowDisabled.gif";
var launchNormRTL_ = "contextLauncherDefault.gif";
var launchSelRTL_ = "contextLauncherSelected.gif";

var wclIsOpera_ = /Opera/.test(navigator.userAgent);

//ARC CHANGES FOR SPECIFYING STYLES - BEGIN
var defaultContextMenuBorderStyle_ = "lwpShadowBorder";
var defaultContextMenuTableStyle_ = "lwpBorderAll";
//ARC CHANGES FOR SPECIFYING STYLES - END

var arrowWidth_ = "12";
var arrowHeight_ = "12";

var submenuAltText_ = "+";

//ARC CHANGES FOR SPECIFIYING EMPTY MENU TEXT - BEGIN
var defaultNoActionsText_ = "(0)";
var defaultNoActionsTextStyle_ = "lwpMenuItemDisabled";
//ARC CHANGES FOR SPECIFIYING EMPTY MENU TEXT - END

var hideCurrentMenuTimer_ = null;

var onmousedown_ = document.onmousedown;

function clearMenuTimer( ) { //@05
   if (null != hideCurrentMenuTimer_) {
      clearTimeout( hideCurrentMenuTimer_ );
      hideCurrentMenuTimer_ = null;
   }
}

function setMenuTimer( ) { // @05
   clearMenuTimer( );
   hideCurrentMenuTimer_ = setTimeout( 'hideCurrentContextMenu( )', 2000);
}

function debug( str ) {
   /*
   if ( xbDEBUG != null ) {
      xbDEBUG.dump( str );
   }
   */
}

// constructor
function UilContextMenu( name, isLTR, width, borderStyle, tableStyle, emptyMenuText, emptyMenuTextStyle, positionUnder ) {
   // member variables
   this.name = name;
   this.items = new Array();
   this.isVisible = false;
   this.isDismissable = true;
   this.selectedItem = null;
   this.isDynamic = false;
   this.isCacheable = false;
   this.isEmpty = true;
   this.isLTR = isLTR;
   this.hiddenItems = new Array(); //@01A
   this.isHyperlinkChild = true; //  We will reset later if needed.
   
   this.bottomPositioned = positionUnder;

   // html variables
   this.launcher = null;
   this.menuTag = null;

   //ARC CHANGES FOR SPECIFYING STYLES - BEGIN
   //styles for menu
   if ( borderStyle != null )
   {
       this.menuBorderStyle = borderStyle;
   }
   else
   {
       this.menuBorderStyle = defaultContextMenuBorderStyle_;
   }
   
   if ( tableStyle != null )
   {
       this.menuTableStyle = tableStyle;
   }
   else
   {
       this.menuTableStyle = defaultContextMenuTableStyle_;
   }
   //ARC CHANGES FOR SPECIFYING STYLES - END

   //ARC CHANGES FOR SPECIFIYING EMPTY MENU TEXT - BEGIN
   if ( emptyMenuText != null )
   {
   	   this.noActionsText = emptyMenuText;
   }
   else
   {
   	   this.noActionsText = defaultNoActionsText_;
   }
   
   if ( emptyMenuTextStyle != null )
   {
   	   this.noActionsTextStyle = emptyMenuTextStyle;
   }
   else
   {
   	   this.noActionsTextStyle = defaultNoActionsTextStyle_;
   }
   //ARC CHANGES FOR SPECIFIYING EMPTY MENU TEXT - END

   // external methods
   this.add = UilContextMenuAdd;
   this.addSeparator = UilContextMenuAddSeparator;
   this.show = UilContextMenuShow;
   this.hide = UilContextMenuHide;

   // internal methods
   this.create = UilContextMenuCreate;
   this.getMenuItem = UilContextMenuGetMenuItem;
   this.getSelectedItem = UilContextMenuGetSelectedItem;

   if ( this.name == null ) {
      this.name = "UilContextMenu_" + allMenus_.length;
   }
}

// adds a menu item to the context menu
function UilContextMenuAdd( item ) {
   this.items[ this.items.length ] = item;
   this.isEmpty = false;
}

function UilContextMenuAddSeparator() {
   var sep = new UilMenuItem();
   sep.isSeparator = true;
   this.add( sep );
}

// shows the context menu
// launcher- html element (anchor) that is launching the menu
// launchItem- menu item that is launching the menu
function UilContextMenuShow( launcher, launchItem ) {
   if ( this.items.length == 0 ) {
      // empty context menu
      debug( 'menu is empty!' );
      //ARC CHANGES FOR SPECIFIYING EMPTY MENU TEXT - BEGIN
      this.add( new UilMenuItem( this.noActionsText, false, "javascript:void(0);", null, null, null, null, this.noActionsTextStyle ) );
      //ARC CHANGES FOR SPECIFIYING EMPTY MENU TEXT - END
      this.isEmpty = true;
   }

   if ( this.menuTag == null ) {
      // create the context menu html
      this.create();
   } else {
      this.menuTag.style.left = ""; //196195 //Reset
      this.menuTag.style.top = ""; //196195 //Reset
      this.menuTag.style.width = ""; //"0px"; //196195 //Reset
      this.menuTag.style.height = ""; //196195 //Reset
      this.menuTag.style.overflow = "visible"; //196195 //Reset, No horizontal and vertical scrollbars
   }

   if ( this.menuTag != null) {
      // store the launcher for later
      this.launcher = launcher;
      if ( this.launcher.tagName == "IMG" ) {
         this.isHyperlinkChild = false;

         // we want the anchor tag
         this.launcher = this.launcher.parentNode;
      }

      // boundaries of window
      var bd = new ContextMenuBrowserDimensions();
      var maxX = bd.getScrollFromLeft() + bd.getViewableAreaWidth();
      var maxY = bd.getScrollFromTop() + bd.getViewableAreaHeight();
      var minX = bd.getScrollFromLeft();
      var minY = bd.getScrollFromTop();

      debug( 'max: ' + maxX + ', ' + maxY );

      var menuWidth = getWidth( this.menuTag );
      var menuHeight = getHeight( this.menuTag );

      // move the context menu to the right of the launcher
      var posX = 0;
      var posY = 0;
      var fUseUpperY = false; //196195
      var maxUpperPosY = 0; //196195

      if ( launchItem != null ) {
         // launched from submenu
         var launchTag = launchItem.itemTag;
         var launchTagWidth = getWidth( launchTag );
         var parentTag = launchItem.parentMenu.menuTag; //@04A
         var launchOffsetX = getLeft( parentTag ); //@04C
         var launchOffsetY = getTop( parentTag ); //@04C

         posX = launchOffsetX + getLeft( launchTag ) + launchTagWidth; //@04C
         posY = launchOffsetY + getTop( launchTag ); //@04C

         if ( !this.isLTR ) {
            posX -= launchTagWidth;
            posX -= menuWidth;
         }

         // try to keep it in the window
         if ( this.isLTR ) {
            if ( posX + menuWidth > maxX ) {
               // try to show it to the left of the parent menu
               var posX1 = launchOffsetX - menuWidth;
               var posX2 = maxX - menuWidth;
               if ( 0 <= posX1 ) {
                  posX = posX1;
               }
               else {
                  posX = Math.max( minX, posX2 );
               }
            }
         }
         else {
            if ( posX < 0 ) {
               // try to show it to the right of the parent menu
               var posX1 = launchOffsetX + launchTagWidth;
               if ( posX1 + menuWidth < maxX ) {
                  posX = posX1;
               }
               else {
                  posX = Math.min( maxX, maxX - menuWidth );
               }
            }
         }

         if ( posY + menuHeight > maxY ) {
            var posY1 = maxY - menuHeight;
            posY = Math.max( minY, posY1 );
         }
      }
      else {
         // launched from menu link
         var launcherLeft = getLeft( this.launcher, true )
         if ( this.launcher.tagName == "BUTTON" || this.bottomPositioned ) {
			
             posX = launcherLeft;
             
             // bidi
             if ( !this.isLTR ) {
                 //196195 posX += getWidth( this.launcher ) - getWidth( this.menuTag );
                 posX += getWidth( this.launcher ) - menuWidth; //196195
             }

             if (this.isLTR) {
                 if ((posX + menuWidth) > maxX) {
                     //196195 begins
                     if ((posX + getWidth(this.launcher)) > maxX) {
                         posX = Math.max(minX, maxX - menuWidth);
                     }
                     else 
                     //196195 ends
                         posX = Math.max(minX, posX + getWidth( this.launcher ) - menuWidth);
                 }
                 //196195 begins 
                 else if (posX < minX) {
                     posX = minX;
                 }
                 //196195 ends 
             }
             else{
                 if (posX < minX) {
                     //196195 if ((launcherLeft + menuWidth) < maxX) {
                     if ((launcherLeft > minX) && ((launcherLeft + menuWidth) < maxX)) { //196195
                         posX = launcherLeft;
                     }
                     else{
                         posX = Math.min(minX, maxX - menuWidth);
                     }
                 }
                 //196195 begins
                 else if ( (posX + menuWidth) > maxX) {
                     if (Math.min(posX, maxX - menuWidth) >= minX)
                         posX = Math.min(posX, maxX - menuWidth);
                 }
                 //196195 ends  
             }
             
             maxUpperPosY = getTop( this.launcher, true ); //196195
             var upperVisibleHeight = maxUpperPosY - minY; //196195
             posY = getTop( this.launcher, true ) + getHeight( this.launcher );
             var lowerVisibleHeight = maxY - posY; //196195
             //196195 if ( posY + menuHeight > maxY ) {
             if ( (posY + menuHeight > maxY) && (lowerVisibleHeight < upperVisibleHeight) ) { //196195
                // top
                posY -= (menuHeight + getHeight( this.launcher ));
                fUseUpperY = true; //196195
             }

             if ( posY < minY ) {
                posY = minY;
             }
         }
         else {

             // left-right
             posX = launcherLeft + this.launcher.offsetWidth;
             posY = getTop( this.launcher, true );

             if ( !this.isLTR ) {
                posX -= this.launcher.offsetWidth;
                posX -= menuWidth;
             }

             // keep it in the window
             if ( this.isLTR ) {
                if ( posX + menuWidth > maxX ) {
                   // try to show it on the left side of the launcher
                   var posX1 = launcherLeft - menuWidth;
                   if ( posX1 > 0 ) {
                      posX = posX1;
                   }
                   else {
                      posX = Math.max( minX, maxX - menuWidth );
                   }
                }
             }
             else {
                if ( posX < minX ) {
                   // try to show it on the right side of the launcher
                   var posX1 = launcherLeft + this.launcher.offsetWidth;
                   if ( posX1 + menuWidth < maxX ) {
                      posX = posX1;
                   }
                   else {
                      posX = Math.min( minX, maxX - menuWidth );
                   }
                }
             }

             if ( posY + menuHeight > maxY ) {
                posY = Math.max( minY, maxY - menuHeight );
             }
         }
         if ( ((posX + menuWidth) > maxX) ||
              (((posY + menuHeight) > maxY) && (fUseUpperY == false)) || 
              (((posY + menuHeight) > maxUpperPosY) && (fUseUpperY == true)) ) {
             if (posX + menuWidth > maxX) {
                 this.menuTag.style.width = (maxX - posX) + "px";
             }
             else{
                 this.menuTag.style.width = menuWidth + "px";
             }

             if (fUseUpperY == false) {
                 if (posY + menuHeight > maxY) {
                     this.menuTag.style.height = (maxY - posY) + "px";
                 }
                 else {
                     this.menuTag.style.height = menuHeight + "px";
                 }
             } else {
                 if (posY + menuHeight > maxUpperPosY) {
                     this.menuTag.style.height = (maxUpperPosY - posY) + "px";
                 }
                 else {
                     this.menuTag.style.height = menuHeight + "px";
                 }
             }

             this.menuTag.style.overflow = "auto";
         } else { //196195 begins
             this.menuTag.style.width = menuWidth + "px";
             this.menuTag.style.height = menuHeight + "px";
             this.menuTag.style.overflow = "visible"; //196195
         } //196196 ends
      }

      debug( 'show ' + this.name + ': ' + posX + ', ' + posY );
      this.menuTag.style.left = posX + "px";
      this.menuTag.style.top = posY + "px";

      // make the context menu visible
      this.menuTag.style.visibility = "visible";
      this.isVisible = true;

      // set focus on the first menu item
      this.items[0].setSelected( true );
      this.items[0].anchorTag.focus();

	  /*
	  // no longer needed since fixed in Opera 9, and no other non-IE browsers need this
      // @01A - Hide any items that intersect this menu
      var coll = document.getElementsByTagName("SELECT");
      if (coll!=null)
      {
         for (i=0; i<coll.length; i++)
         {
            //Hide the element
            if (intersect(this.menuTag,coll[i]) == true ) {
               if (coll[i].style.visibility != "collapse") //@02C
               {
                  coll[i].style.visibility = "collapse"; //@02C
                  this.hiddenItems.push(coll[i]);
               }
            }
         }
      }
      coll = document.getElementsByTagName("IFRAME");
      if (coll!=null)
      {
         for (i=0; i<coll.length; i++)
         {
            //Hide the element
            if (intersect(this.menuTag,coll[i]) == true ) {
               if (coll[i].style.visibility != "hidden")
               {
                  coll[i].style.visibility = "hidden";
                  this.hiddenItems.push(coll[i]);
               }
            }
         }
      }
	  */
      // save old & set new hide action for this menu     
      onmousedown_ = document.onmousedown;
      document.onmousedown = hideCurrentContextMenu;
   }
}

// Test whether two objects overlap
function intersect(obj1 , obj2) //@01A
{
   var left1 =  parseInt(document.defaultView.getComputedStyle(obj1, '').getPropertyValue("left"));
   var right1 = left1 + parseInt(document.defaultView.getComputedStyle(obj1, '').getPropertyValue("width"));
   var top1 = parseInt(document.defaultView.getComputedStyle(obj1, '').getPropertyValue("top"));
   var bottom1 = top1 + parseInt(document.defaultView.getComputedStyle(obj1, '').getPropertyValue("height"));

   var left2 =  parseInt(document.defaultView.getComputedStyle(obj2, '').getPropertyValue("left"));
   var right2 = left2 + parseInt(document.defaultView.getComputedStyle(obj2, '').getPropertyValue("width"));
   var top2 = parseInt(document.defaultView.getComputedStyle(obj2, '').getPropertyValue("top"));
   var bottom2 = top2 + parseInt(document.defaultView.getComputedStyle(obj2, '').getPropertyValue("height"));

    //alert("Comparing: " +left1 + ", " + right1+ ", " +top1 + ", " + bottom1+ " to "  +left2 + ", "  +right2 + ", " +top2 + ", " +bottom2);
   if (lineIntersect(left1,right1, left2,right2)== true &&
       lineIntersect(top1,bottom1,top2,bottom2) == true) {
      return true;
   }
   return false;
}

// Test whether the two line segments a--b and c--d intersect.
function lineIntersect(a, b, c, d) //@01A
{
   //alert (a+"--"+b + "   " + c + "--" + d);
   //Assume that a < b && c < d
   if ( (a <= c  && c <= b) ||
        (a <= d && d <= b) ||
        (c <= a && d >= b ) )
   {
      return true;
   } else {
      return false;
   }
}

// hides the context menu
function UilContextMenuHide() {
   if ( this.menuTag != null ) {
      debug( 'hide ' + this.name );

      // hide any visible submenus first
      for ( var i=0; i<this.items.length; i++ ) {
         if ( this.items[i].submenu != null &&
              this.items[i].submenu.isVisible ) {
            this.items[i].submenu.hide();
         }
      }

      // clear selection
      if ( this.selectedItem != null ) {
         this.selectedItem.setSelected( false );
      }

      // make the context menu hidden
      this.menuTag.style.visibility = "hidden";
      this.isVisible = false;
      this.isDismissable = true;

      // @01A - Show any items that were hidden by this menu
      var itemCount = this.hiddenItems.length;
      for (i=0; i<itemCount; i++)
      {
         var item = this.hiddenItems.pop();
         item.style.visibility = "visible";
      }

      // clear the launcher
      this.launcher = null;
      
      // reset action      
      document.onmousedown = onmousedown_;
   }
}

// creates the context menu html element
function UilContextMenuCreate( recurse ) {
   if ( this.menuTag == null ) {
      this.menuTag = document.createElement( "DIV" );
      this.menuTag.style.position = "absolute";
      this.menuTag.style.cursor = "default";
      this.menuTag.style.visibility = "hidden";
      // following line does not work on Mozilla. SPR #PDIK66SJZ4
      //this.menuTag.style.width = "0px"; // this causes dynamic sizing
      //if (!this.isLTR) this.menuTag.dir = "RTL"; //196195
      this.menuTag.onmouseover = contextMenuDismissDisable;
      this.menuTag.onmouseout = contextMenuDismissEnable;
      this.menuTag.oncontextmenu = contextMenuOnContextMenu;

      var numItems = this.items.length;

      // check if this context menu contains icons or submenus
      var hasIcon = false;
      var hasSubmenu = false;
      for ( var i=0; i<numItems; i++ ) {
         if ( !this.items[i].isSeparator ) {
            if ( !hasSubmenu && this.items[i].submenu != null ) {
               hasSubmenu = true;
            }
            if ( !hasIcon && this.items[i].icon != null ) {
               hasIcon = true;
            }
            if ( hasSubmenu && hasIcon ) {
               break;
            }
         }
      }

      // create the menu items
      for ( var i=0; i<numItems; i++ ) {
         this.items[i].isFirst = ( i == 0 );
         this.items[i].isLast = ( i+1 == numItems );
         this.items[i].parentMenu = this;
         this.items[i].create( hasIcon, hasSubmenu );
      }

      // create the context menu border
      var border = document.createElement( "TABLE" );
      if (!this.isLTR) border.dir = "RTL";
      //border.className = "wclPopupMenuBorder"; //@04D
      border.rules = "none";
      border.cellPadding = 0;
      border.cellSpacing = 0;
      //border.width = "100%";
      border.border = 0;
      var borderBody = document.createElement( "TBODY" );
      var borderRow = document.createElement( "TR" );
      var borderData = document.createElement( "TD" );
      var borderDiv = document.createElement( "DIV" ); //@04A
      //borderDiv.className = "pop2"; //@04A   //@06C1
      
      //ARC CHANGES FOR SPECIFYING STYLES - BEGIN
      borderDiv.className = this.menuBorderStyle; 
      //ARC CHANGES FOR SPECIFYING STYLES - END

      borderData.appendChild( borderDiv ); //@04A
      borderRow.appendChild( borderData );
      borderBody.appendChild( borderRow );
      border.appendChild( borderBody );

      // create the context menu
      var table = document.createElement( "TABLE" );
      if (!this.isLTR) table.dir = "RTL";
      //table.className = "wclPopupMenu"; //@04D
      table.rules = "none";
      table.cellPadding = 0;
      table.cellSpacing = 0;
      table.width = "100%";
      table.border = 0;

      // add the menu items
      var tableBody = document.createElement( "TBODY" );
      table.appendChild( tableBody );

      // @04A - create another table for mozilla fix
      // (border styles not hidden correctly if set on table tag)
      var table2 = document.createElement( "TABLE" );
      if (!this.isLTR) table2.dir = "RTL";
      table2.rules = "none";
      table2.cellPadding = 0;
      table2.cellSpacing = 0;
      table2.width = "100%";
      table2.border = 0;
      var tableRow = document.createElement( "TR" );
      var tableData = document.createElement( "TD" );
      var tableDiv = document.createElement( "DIV" );
      //tableDiv.className = "pop1";     //@06C1

      //ARC CHANGES FOR SPECIFYING STYLES - BEGIN
      tableDiv.className = this.menuTableStyle;     //@06C1
      //ARC CHANGES FOR SPECIFYING STYLES - END

      var tableBody2 = document.createElement( "TBODY" );
      tableBody.appendChild( tableRow );
      tableRow.appendChild( tableData );
      tableData.appendChild( tableDiv );
      tableDiv.appendChild( table2 );
      table2.appendChild( tableBody2 );

      for ( var i=0; i<numItems; i++ ) {
         if ( this.items[i].isSeparator ) {
            this.items[i].createSeparator( tableBody2, hasSubmenu ); //@04C
         }
         else {
            tableBody2.appendChild( this.items[i].itemTag ); //@04C
         }
      }

      borderDiv.appendChild( table ); //@04C
      this.menuTag.appendChild( border );

      // add to document
      document.body.appendChild( this.menuTag );
   }

   if ( recurse ) {
      // this is used when cloning dynamic menus
      for ( var i=0; i<this.items.length; i++ ) {
         if ( this.items[i].submenu != null ) {
            this.items[i].submenu.create( recurse );
         }
      }
   }
}

// returns the menu item object associated with the html element
function UilContextMenuGetMenuItem( htmlElement ) {
   if ( htmlElement != null ) {
      if ( htmlElement.nodeType == 3 ) { //@06A
          // text node
          htmlElement = htmlElement.parentNode; //@06A
      }
      var tagName = htmlElement.tagName;
      var menuItemTag = null;
      if ( tagName == "IMG" ||
           tagName == "A" ) {
         menuItemTag = htmlElement.parentNode.parentNode;
      }
      else if ( tagName == "TD" ) {
         menuItemTag = htmlElement.parentNode;
      }
      for ( var i=0; i<this.items.length; i++ ) {
         if ( this.items[i].itemTag != null &&
              this.items[i].itemTag == menuItemTag ) {
            // found the item
            return this.items[i];
         }
         else if ( this.items[i].submenu != null &&
                   this.items[i].submenu.isVisible ) {
            // recurse through any visible submenus
            var item = this.items[i].submenu.getMenuItem( htmlElement );
            if ( item != null ) {
               // found the item
               return item;
            }
         }
      }
   }
   return null;
}

// returns the deepest selected menu item
function UilContextMenuGetSelectedItem() {
   var item = this.selectedItem;
   if ( item != null && item.submenu != null && item.submenu.isVisible ) {
      // recurse through the item's visible submenu
      return item.submenu.getSelectedItem();
   }
   return item;
}

// method called by an event handler (onmouseover for context menu div)
function contextMenuDismissEnable() {
   if ( visibleMenu_ != null ) {
      visibleMenu_.isDismissable = true;
      if (visibleMenu_.isHyperlinkChild) {
         setMenuTimer( ); // @05
      }
   }
}

// method called by an event handler (onmouseout for context menu div)
function contextMenuDismissDisable() {
   if ( visibleMenu_ != null ) {
      visibleMenu_.isDismissable = false;
      clearMenuTimer( ); // @05
   }
}

// method called by an event handler (oncontextmenu for context menu div)
function contextMenuOnContextMenu() {
   return false;
}

// constructor
function UilMenuItem( text, enabled, action, clientAction, submenu, icon, defItem,menuStyle, selectedMenuStyle ) {
   // member variables
   this.text = text;
   this.icon = icon;
   this.action = action;
   this.clientAction = clientAction;
   this.submenu = submenu;
   this.isSeparator = false;
   this.isSelected = false;
   this.isEnabled = ( enabled != null ) ? enabled : true;
   this.isDefault = ( defItem != null ) ? defItem : false;
   this.isFirst = false;
   this.isLast = false;
   this.parentMenu = null;
   
   if ( menuStyle != null ) {
      this.menuStyle = menuStyle; 
   }
   else {
      this.menuStyle = ( this.isEnabled ) ? "lwpMenuItem" : "lwpMenuItemDisabled"; 
   }

   this.selectedMenuStyle = ( selectedMenuStyle != null) ? selectedMenuStyle : "lwpSelectedMenuItem";

   // html variables
   this.itemTag = null;
   this.anchorTag = null;
   this.arrowTag = null;

   // internal methods
   this.create = UilMenuItemCreate;
   this.createSeparator = UilMenuItemCreateSeparator;
   this.setSelected = UilMenuItemSetSelected;
   this.updateStyle = UilMenuItemUpdateStyle;
   this.getNextItem = UilMenuItemGetNextItem;
   this.getPrevItem = UilMenuItemGetPrevItem;

   if ( this.submenu != null ) {
      // menu items with submenus do not have actions
      this.action = null;
   }
}

// creates the menu item html element
function UilMenuItemCreate( menuHasIcon, menuHasSubmenu ) {
   if ( !this.isSeparator ) {
      this.anchorTag = document.createElement( "A" );
      if ( this.action != null ) {
         this.anchorTag.href = "javascript:menuItemLaunchAction();";
         if ( this.clientAction != null && !wclIsOpera_ ) {
            this.anchorTag.onclick = this.clientAction;
         }
      }
      else if ( this.submenu != null ) {
         this.anchorTag.href = "javascript:void(0);";
         this.anchorTag.onclick = menuItemShowSubmenu;
      }
      else if ( this.clientAction != null ) {
         this.anchorTag.href = "javascript:menuItemLaunchAction();";
         if(!wclIsOpera_) this.anchorTag.onclick = this.clientAction;
      }
      this.anchorTag.onfocus = menuItemFocus;
      this.anchorTag.onblur = menuItemBlur;
      this.anchorTag.onkeydown = menuItemKeyDown;
      this.anchorTag.innerHTML = this.text;
//      this.anchorTag.title = this.text; 
      this.anchorTag.title = this.anchorTag.innerHTML; 
      //this.anchorTag.className = "pop5";    //@06C1
      this.anchorTag.className = this.menuStyle;    //@06C1
      if ( this.isDefault ) {
         this.anchorTag.style.fontWeight = "bold";
      }

      var td = document.createElement( "TD" );
      td.noWrap = true;
      td.style.padding = "3px";
      td.appendChild( this.anchorTag );

      // left padding or icon
      var leftPad = document.createElement( "TD" );
      leftPad.noWrap = true;
      leftPad.innerHTML = "&nbsp;";
      leftPad.style.padding = "3px";
      if ( this.icon != null ) {
         var imgTag = document.createElement( "IMG" );
         imgTag.src = this.icon;
         if (imgTag.src == "" || imgTag.src == null) {
             var imgTag1 = "<img src=\"" + this.icon + "\"";
             if ( this.text != null ) {
                imgTag1 += " alt=\'" + this.text + "\'";
                imgTag1 += " title=\'" + this.text + "\'";
             }
             imgTag1 += "/>";
             leftPad.innerHTML = imgTag1;
         } else {
             if ( this.text != null ) {
                imgTag.alt = this.text;
                imgTag.title = this.text;
             }
             leftPad.appendChild( imgTag );
         }
      }
      else {
         leftPad.width = padding_;
      }

      // right padding
      var rightPad = document.createElement( "TD" );
      rightPad.noWrap = true;
      rightPad.width = padding_;
      rightPad.innerHTML = "&nbsp;";
      rightPad.style.padding = "3px";

      this.itemTag = document.createElement( "TR" );
      this.itemTag.onmousemove = menuItemMouseMove;
      this.itemTag.onmousedown = menuItemLaunchAction;
      //this.itemTag.className = "pop5";  //@06C1
      this.itemTag.className = this.menuStyle;
      // put together the table row
      this.itemTag.appendChild( leftPad );
      this.itemTag.appendChild( td );
      this.itemTag.appendChild( rightPad );
      if ( menuHasSubmenu ) {
         // submenu arrow
         var submenuArrow = document.createElement( "TD" );
         submenuArrow.noWrap = true;
         submenuArrow.style.padding = "3px";
         if ( this.submenu != null ) {
            var submenuImg = document.createElement( "IMG" );
            submenuImg.alt = submenuAltText_;
            submenuImg.title = submenuAltText_;
            submenuImg.width = arrowWidth_;
            submenuImg.height = arrowHeight_;
            if (this.parentMenu.isLTR) submenuImg.src = arrowNorm_;
            else submenuImg.src = arrowNormRTL_;
            submenuArrow.appendChild( submenuImg );
            this.arrowTag = submenuImg;
         }
         else {
            submenuArrow.innerHTML = "&nbsp;";
         }
         this.itemTag.appendChild( submenuArrow );
      }

      // update the style of the menu item
      this.updateStyle( this.itemTag );
   }
}

// create the context menu separator html elements
function UilMenuItemCreateSeparator( tableBody, menuHasSubmenu ) {
   // create the context menu separator
   var numCols = ( menuHasSubmenu ) ? 4 : 3;

   for ( var i=0; i<4; i++ ) {
      var tr = document.createElement( "TR" );
      if ( i == 1 ) {
         //tr.className = "pop3";   //@06C1
         tr.className = "portlet-separator";   //@06C1
      }
      else if ( i == 2 ) {
         //tr.className = "pop4";   //@06C1
         tr.className = "lwpMenuBackground";   //@06C1
      }
      else {
         //tr.className = "pop5";   //@06C1
         tr.className = "lwpMenuItem";   //@06C1
      }

      var td = document.createElement( "TD" );
      td.noWrap = true;
      td.width = "100%";
      td.height = "1px";
      td.colSpan = numCols;

      //mmd - 06/09/06 - commenting out this section of code because it causes many additional requests
      //to the server everytime a context menu is opened.  after unit testing, removing piece of code
      //does not appear to affect the function of the menus
      /*var img = document.createElement( "IMG" );
      img.src = transImg_;
      img.width = 1;
      img.height = 1;
      img.style.display = "block";
      td.appendChild( img );*/

      tr.appendChild( td );
      tableBody.appendChild( tr );
   }
}

// changes the selected state for menu item
function UilMenuItemSetSelected( isSelected ) {

   if ( isSelected && !this.isSelected ) {
      debug( 'selected: ' + this.text );
      // handle the previous selection first
      if ( this.parentMenu != null &&
           this.parentMenu.isVisible &&
           this.parentMenu.selectedItem != null &&
           this.parentMenu.selectedItem != this ) {
         // hide previous selection's submenu
         if ( this.parentMenu.selectedItem.submenu != null ) {
            this.parentMenu.selectedItem.submenu.hide();
         }
         // unselect previous selection from parent menu
         this.parentMenu.selectedItem.setSelected( false );
      }

      // select this menu item
      this.isSelected = true;
      if ( this.parentMenu != null && this.parentMenu.isVisible ) {
         this.parentMenu.selectedItem = this;
      }

      // update the styles
      this.updateStyle( this.itemTag );
   }
   else if ( !isSelected && this.isSelected ) {
      debug( 'deselected: ' + this.text );
      // menu item cannot be unselected if its submenu is visible
      if ( this.submenu == null || ( this.submenu != null && !this.submenu.isVisible ) ) {
         // unselect this menu item
         this.isSelected = false;
         if ( this.parentmenu != null ) {
            this.parentmenu.selectedItem = null;
         }

         // update the styles
         this.updateStyle( this.itemTag );
      }
   }
}

// recursively set the style of the menu item html element
function UilMenuItemUpdateStyle( tag, styleID ) {
   if ( tag != null ) {
      if ( styleID == null ) {
         //styleID = "pop5";  //@06C1
         styleID = this.menuStyle;
         if ( !this.isEnabled ) {
            //styleID = "pop7"; //@06C1
            styleID = this.menuStyle; 
         }
         else if ( this.isSelected ) {
            //styleID = "pop6";  //@06C1
            styleID = this.selectedMenuStyle;  //@06C1
         }
         if ( this.arrowTag != null ) {
            if ( this.isEnabled && this.isSelected ) {
               if (this.parentMenu.isLTR) this.arrowTag.src = arrowSel_;
               else this.arrowTag.src = arrowSelRTL_;
            }
            else if ( !this.isEnabled ) {
               if (this.parentMenu.isLTR) this.arrowTag.src = arrowDis_;
               else this.arrowTag.src = arrowDisRTL_;
            }
            else {
               if (this.parentMenu.isLTR) this.arrowTag.src = arrowNorm_;
               else this.arrowTag.src = arrowNormRTL_;
            }
         }
      }
      tag.className = styleID;
      if ( tag.childNodes != null ) {
         for ( var i=0; i<tag.childNodes.length; i++ ) {
            this.updateStyle( tag.childNodes[i], styleID );
         }
      }
   }
}

// returns the next enabled, non-separator menu item after the given item
function UilMenuItemGetNextItem() {
   var menu = this.parentMenu;
   if ( menu != null ) {
      for ( var i=0; i<menu.items.length; i++ ) {
         if ( menu.items[i] == this ) {
            for ( var j=i+1; j<menu.items.length; j++ ) {
               if ( !menu.items[j].isSeparator && menu.items[j].isEnabled ) {
                  return menu.items[j];
               }
            }
            // no next item
            return null;
         }
      }
   }
   return null;
}

// returns the previous enabled, non-separator menu item before the given item
function UilMenuItemGetPrevItem() {
   var menu = this.parentMenu;
   if ( menu != null ) {
      for ( var i=menu.items.length-1; i>=0; i-- ) {
         if ( menu.items[i] == this ) {
            for ( var j=i-1; j>=0; j-- ) {
               if ( !menu.items[j].isSeparator && menu.items[j].isEnabled ) {
                  return menu.items[j];
               }
            }
            // no previous item
            return null;
         }
      }
   }
   return null;
}

// launches the action for a menu item
// method called by an event handler (href for anchor tag)
function menuItemLaunchAction() {
   if ( visibleMenu_ != null ) {
      //var evt = window.event;
      //var item = visibleMenu_.getMenuItem( evt.target );
      var item = visibleMenu_.getSelectedItem();
      if ( item != null && item.isEnabled ) {
         hideCurrentContextMenu( true );
         if ( item.clientAction != null ) {
            eval( item.clientAction );
         }
         if ( item.action != null ) {
            if ( item.action.indexOf( "javascript:" ) == 0 ) {
               eval( item.action );
            }
            else {
               //window.location.href = item.action; //@04D
            }
         }
      }
   }
}

// shows the submenu for a menu item
// method called by an event handler (onclick for anchor tag)
function menuItemShowSubmenu(evt) {
   if ( visibleMenu_ != null ) {
      var item = visibleMenu_.getMenuItem( evt.target );
      if ( item != null && item.isEnabled ) {
         var menu = item.submenu;
         if ( menu != null ) {
            menu.show( item.anchorTag, item );
         }
      }
   }
}

// focus handler for menu item
// method called by an event handler (onfocus for anchor tag)
function menuItemFocus(evt) {
   if ( visibleMenu_ != null ) {
      var item = visibleMenu_.getMenuItem( evt.target );
      if ( item != null ) {
         // select the focused menu item
         //item.anchorTag.hideFocus = item.isEnabled;
         item.setSelected( true );
      }
   }
}

// blur handler for menu item
// method called by an event handler (onblur for anchor tag)
function menuItemBlur(evt) {
   if ( visibleMenu_ != null ) {
      var item = visibleMenu_.getMenuItem( evt.target );
      if ( item != null ) {
         /* //jcp
         if ( item.isFirst && evt.shiftKey ) {
            debug( 'blur = ' + item.text );
            // user is shift tabbing off the beginning of the menu
            // set focus on the launcher
            item.parentMenu.launcher.focus();
            // hide the menu
            item.parentMenu.hide();
         }
         */
      }
   }
}

// key press handler for menu item
// method called by an event handler (onkeydown for anchor tag)
function menuItemKeyDown(evt) {
   var item = null;
   if ( visibleMenu_ != null ) {
      item = visibleMenu_.getMenuItem( evt.target );
   }
   if ( item != null ) {
      var next = null;
      switch ( evt.keyCode ) {
      case 38: // up key
         next = item.getPrevItem();
         if ( next != null ) {
            next.anchorTag.focus();
         }
         else if ( item.parentMenu != visibleMenu_ ) {
            item.parentMenu.launcher.focus();
            item.parentMenu.hide();
         }
         else {
            visibleMenu_.launcher.focus();
            hideCurrentContextMenu( true );
         }
         return false;
         break;
      case 40: // down key
         next = item.getNextItem();
         if ( next != null ) {
            next.anchorTag.focus();
         }
         else if ( item.parentMenu != visibleMenu_ ) {
            item.parentMenu.launcher.focus();
            item.parentMenu.hide();
         }
         else {
            visibleMenu_.launcher.focus();
            hideCurrentContextMenu( true );
         }
         return false;
         break;
      case 39: // right key
         if ( visibleMenu_.isLTR ) {
            if ( item.submenu != null ) {
               menuItemShowSubmenu(evt);
               item.submenu.items[0].anchorTag.focus();
            }
         }
         else {
            if ( item.parentMenu != visibleMenu_ ) {
               item.parentMenu.launcher.focus();
               item.parentMenu.hide();
            }
         }
         return false;
         break;
      case 37: // left key
         if ( visibleMenu_.isLTR ) {
            if ( item.parentMenu != visibleMenu_ ) {
               item.parentMenu.launcher.focus();
               item.parentMenu.hide();
            }
         }
         else {
            if ( item.submenu != null ) {
               menuItemShowSubmenu(evt);
               item.submenu.items[0].anchorTag.focus();
            }
         }
         return false;
         break;
      case 9: // tab key
         visibleMenu_.launcher.focus();
         hideCurrentContextMenu( true );
         break;
      case 27: // escape key
         visibleMenu_.launcher.focus();
         hideCurrentContextMenu( true );
         break;
      case 13: // enter key
         break;
      default:
         break;
      }
   }
}

// handle mouse move for menu item
// method called by an event handler (onmousemove for item tag)
function menuItemMouseMove(evt) {
   if ( visibleMenu_ != null ) {
      var item = visibleMenu_.getMenuItem( evt.target );
      if ( item != null ) {
         if ( !item.isSelected ) {
            // set focus on the anchor and select the menu item
            item.anchorTag.focus();
         }
         if ( item.submenu != null && !item.submenu.isVisible && item.isEnabled ) {
            // show the submenu
            item.submenu.show( item.anchorTag, item );
         }
      }
   }
}

// handle mouse down event for menu item
// method called by an event handler (onmousedown for item tag)
function menuItemMouseDown(evt) {
   /* //@08D
   if ( visibleMenu_ != null ) {
      var item = visibleMenu_.getMenuItem( evt.target );
      if ( item != null ) {
         item.setSelected( true );
      }
      else { //@03A
         item = visibleMenu_.getSelectedItem();
      }
      if ( item != null && item.anchorTag != evt.target ) {
         //item.anchorTag.click();
         menuItemLaunchAction();
      }
   }
   */
   menuItemLaunchAction(); //@08A
}

var allMenus_ = new Array();

//ARC CHANGES FOR SPECIFYING STYLES - BEGIN
//ARC CHANGES FOR SPECIFIYING EMPTY MENU TEXT - BEGIN
function createContextMenu( name, isLTR, width, borderStyle, tableStyle, noActionsText, noActionsTextStyle, positionUnder ) {
   var menu = new UilContextMenu( name, isLTR, width, borderStyle, tableStyle, noActionsText, noActionsTextStyle, positionUnder );
   allMenus_[ allMenus_.length ] = menu;
   return menu;
}
//ARC CHANGES FOR SPECIFIYING EMPTY MENU TEXT - END
//ARC CHANGES FOR SPECIFYING STYLES - END

function getContextMenu( name ) {
   for ( var i=0; i<allMenus_.length; i++ ) {
      if ( allMenus_[i].name == name ) {
         return allMenus_[i];
      }
   }
   return null;
}

function showContextMenu( name, isDynamic, isCacheable ) {
   contextMenuShow( name, isDynamic, isCacheable, event.target, true );
}

function showContextMenu( name, launcher ) {
   contextMenuShow( name, false, false, launcher, true );
}

function contextMenuShow( name, isDynamic, isCacheable, launcher, doLoad ) {
   debug( "***** showContextMenu: " + name )

   //  We mnight need to find a suitable launcher...
   var oldLauncher = launcher;
   while ((null != launcher) && (null == launcher.tagName)) {
      launcher = launcher.parentNode;
   }
   if (null == launcher) { //  shouldn't happen, but...
      launcher = oldLauncher;
   }

   if ( eval( isDynamic ) ) {
      debug( 'showContextMenu: dynamic=true, load=' + eval( doLoad ) + ', cache=' + eval( isCacheable ) );
      // dynamically loaded menu
      if ( eval( doLoad ) ) {
         // load the url into hidden frame
         loadDynamicMenu( name );
      }

      // clone the dynamic menu from hidden frame
      menu = getDynamicMenu( name, eval( isCacheable ) );

      if ( menu == null && top.isContextMenuManager_ != null ) {
         // menu not done loading yet
         debug( 'showContextMenu: ' + name + ' added to queue' );
         top.contextMenuManagerRequest( name, window, launcher, isCacheable );
      }
   }
   else {
      debug( 'showContextMenu: static context menu' );
      // statically defined menu
      menu = getContextMenu( name );
      if ( menu == null ) {
         menu = createContextMenu( name, 150 );
      }
   }

   if ( menu != null ) {
      hideCurrentContextMenu( true );
      menu.show( launcher );
      visibleMenu_ = menu;
   }
   else {
      debug( 'showContextMenu: ' + name + ' unavailable' );
   }
   clearMenuTimer( ); // @05
}

// method called by an event handler (onmousedown for document)
function hideCurrentContextMenu( forceHide ) {
   if ( visibleMenu_ != null && ( forceHide == true || visibleMenu_.isDismissable ) ) {
//      contextMenuDismissEnable();
      if ( visibleMenu_.isVisible ) {
         visibleMenu_.hide();
      }
      if ( visibleMenu_.isDynamic && !visibleMenu_.isCacheable ) {
         uncacheContextMenu( visibleMenu_ );
      }
      visibleMenu_ = null;
   }
}

function uncacheContextMenu( menu ) {
   debug( 'uncache menu: ' + menu.name );
   // recurse
   for ( var i=0; i<menu.items.length; i++ ) {
      if ( menu.items[i].submenu != null ) {
         uncacheContextMenu( menu.items[i].submenu );
      }
   }

   // remove from all menus array
   for ( var i=0; i<allMenus_.length; i++ ) {
      if ( allMenus_[i] == menu ) {
         var temp = new Array();
         var index = 0;
         for ( var j=0; j<allMenus_.length; j++ ) {
            if ( j != i ) {
               temp[ index ] = allMenus_[ j ];
               index++;
            }
         }
         allMenus_ = temp;
         break;
      }
   }
}

function contextMenuSetIcons( transparentImage,
                              arrowDefault, arrowSelected, arrowDisabled,
                              launcherDefault, launcherSelected,
                              arrowDefaultRTL, arrowSelectedRTL, arrowDisabledRTL,
                              launcherDefaultRTL, launcherSelectedRTL ) {
   transImg_ = transparentImage;

   arrowNorm_ = arrowDefault;
   arrowSel_ = arrowSelected;
   arrowDis_ = arrowDisabled;
   launchNorm_ = launcherDefault;
   launchSel_ = launcherSelected;

   arrowNormRTL_ = arrowDefaultRTL;
   arrowSelRTL_ = arrowSelectedRTL;
   arrowDisRTL_ = arrowDisabledRTL;
   launchNormRTL_ = launcherDefaultRTL;
   launchSelRTL_ = launcherSelectedRTL;

   contextMenuPreloadImage( transImg_ );

   contextMenuPreloadImage( arrowNorm_ );
   contextMenuPreloadImage( arrowSel_ );
   contextMenuPreloadImage( arrowDis_ );
   contextMenuPreloadImage( launchNorm_ );
   contextMenuPreloadImage( launchSel_ );

   contextMenuPreloadImage( arrowNormRTL_ );
   contextMenuPreloadImage( arrowSelRTL_ );
   contextMenuPreloadImage( arrowDisRTL_ );
   contextMenuPreloadImage( launchNormRTL_ );
   contextMenuPreloadImage( launchSelRTL_ );
}

function contextMenuSetArrowIconDimensions( width, height ) {
   arrowWidth_ = width;
   arrowHeight_ = height;
}

function contextMenuPreloadImage( imgsrc ) {
   var preload = new Image();
   preload.src = imgsrc;
}

function toggleLauncherIcon( popupID, selected, isLTR ) {
   if ( selected ) {
      if ( isLTR ) {
         document.images[ popupID ].src = launchSel_;
      }
      else {
         document.images[ popupID ].src = launchSelRTL_;
      }
   }
   else {
      if ( isLTR ) {
         document.images[ popupID ].src = launchNorm_;
      }
      else {
         document.images[ popupID ].src = launchNormRTL_;
      }
   }
   return true;
}

function contextMenuSetNoActionsText( noActionsText, submenuAltText ) {
   noActionsText_ = noActionsText;
   submenuAltText_ = submenuAltText;
}

function contextMenuGetNoActionsText() {
   return noActionsText_;
}

function getWidth( tag ) {
   return tag.offsetWidth;
}

function getHeight( tag ) {
   return tag.offsetHeight;
}

function getLeft( tag, recurse ) {
   var size = 0;
   if ( tag != null ) {
      //size = parseInt( document.defaultView.getComputedStyle(tag, null).getPropertyValue("left") ); //@04D

      //@04A
      if ( recurse && tag.offsetParent != null ) {
         size += getLeft( tag.offsetParent, recurse );
      }
      if ( tag != null ) {
         size += tag.offsetLeft;
      }

   }
   return size;
}

function getTop( tag, recurse ) {
   var size = 0;
   if ( tag != null ) {
      //size = parseInt( document.defaultView.getComputedStyle(tag, null).getPropertyValue("top") ); //@04D

      //@04A
      if ( recurse && tag.offsetParent != null ) {
         size += getTop( tag.offsetParent, recurse );
      }
      if ( tag != null ) {
         size += tag.offsetTop;
      }

   }
   return size;
}

/*****************************************************
* code for dynamically loaded menus
*****************************************************/
function loadDynamicMenu( menuURL ) {
   debug( '* loadDynamicMenu: ' + menuURL );
   var menu = getContextMenu( menuURL );
   if ( menu != null ) {
      if ( menu.isVisible ) {
         // dynamic menu requested, but it's currently showing
         menu.hide();
      }
      if ( !menu.isCacheable ) {
         // make sure it's not in the cache
         uncacheContextMenu( menu );
      }
   }
   if ( getContextMenu( menuURL ) == null ) {
      if ( top.isContextMenuManager_ != null ) {
         debug( 'loadDynamicMenu: loading' );
         top.contextMenuManagerLoadDynamicMenu( menuURL );
      }
   }
}

function getDynamicMenu( menuURL, cache ) {
   debug( '* getDynamicMenu: ' + menuURL );
   var clone = getContextMenu( menuURL );
   if ( clone == null ) {
      if ( top.isContextMenuManager_ != null ) {
         if ( top.contextMenuManagerIsDynamicMenuLoaded() ) {
            var menu = top.contextMenuManagerGetDynamicMenu();
            debug( 'getDynamicMenu: fetched menu from other frame' );
            clone = cloneMenu( menu, menuURL, cache );
            if ( clone.items.length == 0 ) {
               contextMenuSetNoActionsText( top.contextMenuManagerGetNoActionsText() );
            }
         }
         else {
            debug( 'getDynamicMenu: menu not loaded' );
         }
      }
      else {
         debug( 'getDynamicMenu: menu manager not present' );
      }
   }
   else {
      debug( 'getDynamicMenu: menu previously loaded' );
   }
   return clone;
}

function cloneMenu( menu, name, cache ) {
   var clone = getContextMenu( name );
   if ( clone == null ) {
      if ( menu != null ) {
         clone = createContextMenu( name, menu.width );
      }
      else {
         clone = createContextMenu( name, 150 );
      }
      clone.isDynamic = true;
      clone.isCacheable = cache;
      if ( menu != null ) {
         for ( var i=0; i<menu.items.length; i++ ) {
            clone.add( cloneMenuItem( menu.items[i], name + "_sub" + i, cache ) );
         }
      }
   }
   return clone;
}

function cloneMenuItem( item, submenuName, cache ) {
   var submenu = null;
   if ( item.submenu != null ) {
      submenu = cloneMenu( item.submenu, submenuName, cache );
   }
   var clone = new UilMenuItem( item.text, item.isEnabled, item.action, item.clientAction, submenu, item.icon, null, null, null );
   clone.isEnabled = item.isEnabled;
   clone.isSelected = item.isSelected;
   clone.isSeparator = item.isSeparator;
   return clone;
}


//////////////////////////////////////////////////////////////////
// begin BrowserDimensions object definition
ContextMenuBrowserDimensions.prototype				= new Object();
ContextMenuBrowserDimensions.prototype.constructor = ContextMenuBrowserDimensions;
ContextMenuBrowserDimensions.superclass			= null;

function ContextMenuBrowserDimensions(){

    this.body = document.body;
    if (this.isStrictDoctype() && !this.isSafari()) {
        this.body = document.documentElement;
    }

}

ContextMenuBrowserDimensions.prototype.getScrollFromLeft = function(){
    return this.body.scrollLeft ;
}

ContextMenuBrowserDimensions.prototype.getScrollFromTop = function(){
    return this.body.scrollTop ;
}

ContextMenuBrowserDimensions.prototype.getViewableAreaWidth = function(){
    return this.body.clientWidth ;
}

ContextMenuBrowserDimensions.prototype.getViewableAreaHeight = function(){
    return this.body.clientHeight ;
}

ContextMenuBrowserDimensions.prototype.getHTMLElementWidth = function(){
    return this.body.scrollWidth ;
}

ContextMenuBrowserDimensions.prototype.getHTMLElementHeight = function(){
    return this.body.scrollHeight ;
}

ContextMenuBrowserDimensions.prototype.isStrictDoctype = function(){

    return (document.compatMode && document.compatMode != "BackCompat");

}

ContextMenuBrowserDimensions.prototype.isSafari = function(){

    return (navigator.userAgent.toLowerCase().indexOf("safari") >= 0);

}

ContextMenuBrowserDimensions.prototype.isOpera = function(){

    return /Opera/.test(navigator.userAgent);;

}

// end BrowserDimensions object definition
//////////////////////////////////////////////////////////////////





  
  	
  
        


/* 
CalendarPopup.js
Original Author: Matt Kruse <matt@mattkruse.com> http://www.mattkruse.com/

Last modified: 27.Jan.03 - wrt (BCBSMN)
  Revised to use layerObject
  Eliminate use of anchorPos and popUpWindow
  Removed support for displays other than LAYER approach for full month display
  Removed embedded styles to rely solely on external CSS

*/ 

// CONSTRUCTOR for the CalendarPopup Object
function CalendarPopup() {
	var c;

	if (arguments.length>0) {
		c = new LayerObject(arguments[0]);
	}
	else {
		alert("CalendarPopup: NOT using <div> parameter");
		c = new LayerObject("Calendar");
	}

	if (!window.listenerAttached) {
		window.listenerAttached = true;
		CalendarWindow_attachListener();
	}

	// Calendar-specific properties
	c.monthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	c.monthAbbreviations = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	c.dayHeaders = new Array("S","M","T","W","T","F","S");
	c.returnFunction = "CalendarPopup_tmpReturnFunction";
	c.returnMonthFunction = "CalendarPopup_tmpReturnMonthFunction";
	c.returnQuarterFunction = "CalendarPopup_tmpReturnQuarterFunction";
	c.returnYearFunction = "CalendarPopup_tmpReturnYearFunction";
	c.weekStartDay = 0;
	c.isShowYearNavigation = false;
	c.displayType = "date";
	c.disabledWeekDays = new Object();
	c.yearSelectStartOffset = 2;
	c.currentDate = null;
	c.todayText="Today";
	window.CalendarPopup_targetInput = null;
	window.CalendarPopup_dateFormat = "MM/DD/YYYY";
	// Method mappings
	c.setReturnFunction = CalendarPopup_setReturnFunction;
	c.setReturnMonthFunction = CalendarPopup_setReturnMonthFunction;
	c.setReturnQuarterFunction = CalendarPopup_setReturnQuarterFunction;
	c.setReturnYearFunction = CalendarPopup_setReturnYearFunction;
	c.setMonthNames = CalendarPopup_setMonthNames;
	c.setMonthAbbreviations = CalendarPopup_setMonthAbbreviations;
	c.setDayHeaders = CalendarPopup_setDayHeaders;
	c.setWeekStartDay = CalendarPopup_setWeekStartDay;
	c.setDisplayType = CalendarPopup_setDisplayType;
	c.setDisabledWeekDays = CalendarPopup_setDisabledWeekDays;
	c.setYearSelectStartOffset = CalendarPopup_setYearSelectStartOffset;
	c.setTodayText = CalendarPopup_setTodayText;
	c.showYearNavigation = CalendarPopup_showYearNavigation;
	c.showCalendar = CalendarPopup_showCalendar;
	c.refresh = CalendarPopup_refresh;
	c.hideCalendar = CalendarPopup_hideCalendar;
	c.clickHideCalendar = CalendarPopup_clickHideCalendar;
	c.refreshCalendar = CalendarPopup_refreshCalendar;
	c.getCalendar = CalendarPopup_getCalendar;
	c.select = CalendarPopup_select;
	// Return the object

	return c;
}

// Run this immediately to attach the event listener
function CalendarWindow_attachListener() {
	if (document.layers) {
		document.captureEvents(Event.MOUSEUP);
	}

	window.popupWindowOldEventListener = document.onmouseup;

	if (window.popupWindowOldEventListener != null) {
		document.onmouseup = new Function("window.popupWindowOldEventListener(); CalendarPopup_clickHideCalendar();");
	}
	else {
		document.onmouseup = CalendarPopup_clickHideCalendar;
	}
}


// Temporary default functions to be called when items clicked, so no error is thrown
function CalendarPopup_tmpReturnFunction(y,m,d) { 
	if (window.CalendarPopup_targetInput!=null) {
		var d = new Date(y,m-1,d,0,0,0);
		window.CalendarPopup_targetInput.value = formatDate(d,window.CalendarPopup_dateFormat);
	}
	else {
		alert('Use setReturnFunction() to define which function will get the clicked results!'); 
	}
}

function CalendarPopup_tmpReturnMonthFunction(y,m) { 
	alert('Use setReturnMonthFunction() to define which function will get the clicked results!\nYou clicked: year='+y+' , month='+m); 
}

function CalendarPopup_tmpReturnQuarterFunction(y,q) { 
	alert('Use setReturnQuarterFunction() to define which function will get the clicked results!\nYou clicked: year='+y+' , quarter='+q); 
}

function CalendarPopup_tmpReturnYearFunction(y) { 
	alert('Use setReturnYearFunction() to define which function will get the clicked results!\nYou clicked: year='+y); 
}

// Set the name of the functions to call to get the clicked item
function CalendarPopup_setReturnFunction(name) { this.returnFunction = name; }
function CalendarPopup_setReturnMonthFunction(name) { this.returnMonthFunction = name; }
function CalendarPopup_setReturnQuarterFunction(name) { this.returnQuarterFunction = name; }
function CalendarPopup_setReturnYearFunction(name) { this.returnYearFunction = name; }

// Over-ride the built-in month names
function CalendarPopup_setMonthNames() {
	for (var i=0; i<arguments.length; i++) { this.monthNames[i] = arguments[i]; }
}

// Over-ride the built-in month abbreviations
function CalendarPopup_setMonthAbbreviations() {
	for (var i=0; i<arguments.length; i++) { this.monthAbbreviations[i] = arguments[i]; }
}

// Over-ride the built-in column headers for each day
function CalendarPopup_setDayHeaders() {
	for (var i=0; i<arguments.length; i++) { this.dayHeaders[i] = arguments[i]; }
}

// Set the day of the week (0-7) that the calendar display starts on
// This is for countries other than the US whose calendar displays start on Monday(1), for example
function CalendarPopup_setWeekStartDay(day) { this.weekStartDay = day; }

// Show next/last year navigation links
function CalendarPopup_showYearNavigation() { this.isShowYearNavigation = true; }

// Which type of calendar to display
function CalendarPopup_setDisplayType(type) {
	if (type!="date"&&type!="week-end"&&type!="month"&&type!="quarter"&&type!="year") { alert("Invalid display type! Must be one of: date,week-end,month,quarter,year"); return false; }
	this.displayType=type;
}

// How many years back to start by default for year display
function CalendarPopup_setYearSelectStartOffset(num) { this.yearSelectStartOffset=num; }

// Set which weekdays should not be clickable
function CalendarPopup_setDisabledWeekDays() {
	this.disabledWeekDays = new Object();
	for (var i=0; i<arguments.length; i++) { this.disabledWeekDays[arguments[i]] = true; }
}
	
// Set the text to use for the "Today" link
function CalendarPopup_setTodayText(text) {
	this.todayText = text;
}

// Hide a calendar object
function CalendarPopup_hideCalendar() {
//	if (arguments.length > 0) { window.popupWindowObjects[arguments[0]].hidePopup(); }
//	else { c.hide(); }
	calendar.hide();
}

// Hide a calendar object
function CalendarPopup_clickHideCalendar(e) {
// Get correct starting event w/o error
	var t = (is.ie) ? window.event.srcElement : e.target;

// Check if it is calendar
	while (t.parentNode != null) {
		if (t.id==calendar.name) {
// It is
			return;
		}
		t = t.parentNode;
	}

// It wasn't, hide it
	calendar.hide();
}


// Refresh the contents of the calendar display
function CalendarPopup_refreshCalendar(index) {
//	var calObject = window.popupWindowObjects[index];
	if (arguments.length>1) {
		calendar.populate(calendar.getCalendar(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]));
	}
	else {
		calendar.populate(calendar.getCalendar());
	}

	calendar.refresh();
}

// Populate, position and display the calendar
function CalendarPopup_showCalendar(srcObj) {
	var xPos = 0;
	var yPos = 0;

// Compute location of anchor looping through parents
	while (srcObj.offsetParent != null) {
		xPos += srcObj.offsetLeft;
		yPos += srcObj.offsetTop;
		srcObj = srcObj.offsetParent;
	}

// Move calendar
	this.moveLayerTo(xPos,yPos);
	this.updateLayer();

	this.populate(this.getCalendar());

	if (!this.populated && (this.contents != "")) {
		this.populated = true;
		this.refresh();
	}

	calendar.show();
}

// Refresh the displayed contents of the popup
function CalendarPopup_refresh() {
	if (this.name != null) {
		// refresh the DIV object
		document.getElementById(this.name).innerHTML = this.contents;
	}
	else {
		if (this.popupWindow != null && !this.popupWindow.closed) {
			this.popupWindow.document.open();
			this.popupWindow.document.writeln(this.contents);
			this.popupWindow.document.close();
			this.popupWindow.focus();
		}
	}
}


// Simple method to interface popup calendar with a text-entry box
function CalendarPopup_select(objName, calWidget, format) {
	if (!window.getDateFromFormat) {
		alert("calendar.select: To use this method you must also include 'date.js' for date formatting");
		return;
	}
	if (this.displayType!="date"&&this.displayType!="week-end") {
		alert("calendar.select: This function can only be used with displayType 'date' or 'week-end'");
		return;
	}

	var inputobj = document.getElementById(objName);
	if (!inputobj) {
		alert("Can't find field: " + objName);
		return;
	}
		
	if ((inputobj.type!="text") && (inputobj.type!="hidden") && (inputobj.type!="textarea")) { 
		alert("calendar.select: Input object passed (" + inputobj.name +") s not a valid form input object (type = '" + inputobj.type + "')"); 
		window.CalendarPopup_targetInput=null;
		return;
	}

	window.CalendarPopup_targetInput = inputobj;
	if (inputobj.value!="") {
		var time = getDateFromFormat(inputobj.value,format);
		if (time==0) { this.currentDate=null; }
		else { this.currentDate=new Date(time); }
	}
	else { this.currentDate=null; }

	window.CalendarPopup_dateFormat = format;
	this.showCalendar(calWidget);
}
	
// Return a string containing all the calendar code to be displayed
function CalendarPopup_getCalendar() {
	// If separate POPUP window, give up, and report error
	if (this.type == "WINDOW") {
		alert("trying to pop separate window");
		return;
	}

	var now = new Date();
	// Reference to window
	if (this.type == "WINDOW") { var windowref = "window.opener."; }
	else { var windowref = ""; }

	var result = "";

	// Code for DATE display (default)
	// -------------------------------
	if (this.displayType=="date" || this.displayType=="week-end") {
		if (this.currentDate==null) { this.currentDate = now; }
		if (arguments.length > 0) { var month = arguments[0]; }
			else { var month = this.currentDate.getMonth()+1; }
		if (arguments.length > 1) { var year = arguments[1]; }
			else { var year = this.currentDate.getFullYear(); }
		var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
		if ( ( (year%4 == 0)&&(year%100 != 0) ) || (year%400 == 0) ) {
			daysinmonth[2] = 29;
			}
		var current_month = new Date(year,month-1,1);
		var display_year = year;
		var display_month = month;
		var display_date = 1;
		var weekday= current_month.getDay();
		var offset = 0;
		if (weekday >= this.weekStartDay) {
			offset = weekday - this.weekStartDay;
			}
		else {
			offset = 7-this.weekStartDay+weekday;
			}
		if (offset > 0) {
			display_month--;
			if (display_month < 1) { display_month = 12; display_year--; }
			display_date = daysinmonth[display_month]-offset+1;
			}
		var next_month = month+1;
		var next_month_year = year;
		if (next_month > 12) { next_month=1; next_month_year++; }
		var last_month = month-1;
		var last_month_year = year;
		if (last_month < 1) { last_month=12; last_month_year--; }
		var date_class;

// Build calender table
		result += '<table cellspacing="0" id="calendarPopUp">\n';

		result += '<caption>\n';
		var refresh = 'javascript:'+windowref+'CalendarPopup_refreshCalendar';
		if (this.isShowYearNavigation) {
			result += '<a href="'+refresh+'(1,'+last_month+','+last_month_year+');"><&nbsp;&nbsp;</a>';
			result += this.monthNames[month-1];
			result += '<a href="'+refresh+'(1,'+next_month+','+next_month_year+');">&nbsp;&nbsp;></a>';
			result += ' &nbsp;&nbsp; ';
			result += '<a href="'+refresh+'(1,'+month+','+(year-1)+');"><<&nbsp;&nbsp;</a>';
			result += year;
			result += '<a href="'+refresh+'(1,'+month+','+(year+1)+');">&nbsp;&nbsp;>></a>';
		}
		else {
			result += '	<a href="'+refresh+'('+this.index+','+last_month+','+last_month_year+');"><<&nbsp;&nbsp;</a>\n';
			result += this.monthNames[month-1]+' '+year+'\n';
			result += '	<a href="'+refresh+'('+this.index+','+next_month+','+next_month_year+');">&nbsp;&nbsp;>></a>\n';
		}
		result += '</caption>\n';

		result += '<thead>\n';
		result += '<tr>\n';
		for (var j=0; j<7; j++) {
			result += '	<th>'+this.dayHeaders[(this.weekStartDay+j)%7]+'</th>\n';
		}
		result += '</tr>\n';
		result += '</thead>\n';

		result += '<tbody>\n';

		for (var row=1; row<=6; row++) {
			result += '<tr>\n';
			for (var col=1; col<=7; col++) {
				if (display_month == month) {
					date_class = "calCurMonth";
				}
				else {
					date_class = "calOtherMonth";
				}

				if ((display_month == this.currentDate.getMonth()+1) && (display_date==this.currentDate.getDate()) && (display_year==this.currentDate.getFullYear())) {
					date_class="calSelected";
				}

				if (this.disabledWeekDays[col-1]) {
					date_class="calnotclickable";
					result += '	<td>'+display_date+'</td>\n';
				}
				else {
					var selected_date = display_date;
					var selected_month = display_month;
					var selected_year = display_year;

					if (this.displayType=="week-end") {
						var d = new Date(selected_year,selected_month-1,selected_date,0,0,0,0);
						d.setDate(d.getDate() + (7-col));
						selected_year = d.getYear();
						if (selected_year < 1000) { selected_year += 1900; }
						selected_month = d.getMonth()+1;
						selected_date = d.getDate();
					}
					result += '	<td><a class="'+date_class+'" href="javascript:'+windowref+this.returnFunction+'('+selected_year+','+selected_month+','+selected_date+');'+windowref+'CalendarPopup_hideCalendar();">'+display_date+'</a></td>\n';
				}

				display_date++;
				if (display_date > daysinmonth[display_month]) {
					display_date=1;
					display_month++;
				}
				if (display_month > 12) {
					display_month=1;
					display_year++;
				}
			}
			result += '</tr>\n';
		}

		var current_weekday = now.getDay();
		result += '<tr>\n';
		result += '	<td colspan="7" class="calToday">\n';
		if (this.disabledWeekDays[current_weekday+1]) {
			result += '		<span class="disabledtextlink">'+this.todayText+'</SPAN>';
		}
		else {
			result += '		<a href="javascript:'+windowref+this.returnFunction+'(\''+now.getFullYear()+'\',\''+(now.getMonth()+1)+'\',\''+now.getDate()+'\');'+windowref+'CalendarPopup_hideCalendar();">'+this.todayText+'</a>';
		}
		result += '</td>\n</tr>\n';
		result += '</tbody>\n</table>';
	}

	return result;
}

// ===================================================================
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
//
// NOTICE: You may use this code for any purpose, commercial or
// private, without any further permission from the author. You may
// remove this notice from your final code if you wish, however it is
// appreciated by the author if at least my web site address is kept.
//
// You may *NOT* re-distribute this code in any way except through its
// use. That means, you can include it in your product, or your web
// site, or any other form where the code is actually being used. You
// may not put the plain javascript up on your site for download or
// include it in your javascript libraries for download. Instead,
// please just point to my URL to ensure the most up-to-date versions
// of the files. Thanks.
// ===================================================================


// ------------------------------------------------------------------
// These functions use the same 'format' strings as the 
// java.text.SimpleDateFormat class, with minor exceptions.
// The format string consists of the following abbreviations:
// 
// Field        | Full Form          | Short Form
// -------------+--------------------+-----------------------
// Year         | yyyy (4 digits)    | yy (2 digits), y (2 or 4 digits)
// Month        | MMM (name or abbr.)| MM (2 digits), M (1 or 2 digits)
// Day of Month | dd (2 digits)      | d (1 or 2 digits)
// Hour (1-12)  | hh (2 digits)      | h (1 or 2 digits)
// Hour (0-23)  | HH (2 digits)      | H (1 or 2 digits)
// Hour (0-11)  | KK (2 digits)      | K (1 or 2 digits)
// Hour (1-24)  | kk (2 digits)      | k (1 or 2 digits)
// Minute       | mm (2 digits)      | m (1 or 2 digits)
// Second       | ss (2 digits)      | s (1 or 2 digits)
// AM/PM        | a                  |
//
// NOTE THE DIFFERENCE BETWEEN MM and mm! Month=MM, not mm!
// Examples:
//  "MMM d, y" matches: January 01, 2000
//                      Dec 1, 1900
//                      Nov 20, 00
//  "M/d/yy"   matches: 01/20/00
//                      9/2/00
//  "MMM dd, yyyy hh:mm:ssa" matches: "January 01, 2000 12:30:45AM"
// ------------------------------------------------------------------

var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
function LZ(x) {return(x<0||x>9?"":"0")+x}

// ------------------------------------------------------------------
// isDate ( date_string, format_string )
// Returns true if date string matches format of format string and
// is a valid date. Else returns false.
// It is recommended that you trim whitespace around the value before
// passing it to this function, as whitespace is NOT ignored!
// ------------------------------------------------------------------
function isDate(val,format) {
	var date=getDateFromFormat(val,format);
	if (date==0) { return false; }
	return true;
	}

// -------------------------------------------------------------------
// compareDates(date1,date1format,date2,date2format)
//   Compare two date strings to see which is greater.
//   Returns:
//   1 if date1 is greater than date2
//   0 if date2 is greater than date1 of if they are the same
//  -1 if either of the dates is in an invalid format
// -------------------------------------------------------------------
function compareDates(date1,dateformat1,date2,dateformat2) {
	var d1=getDateFromFormat(date1,dateformat1);
	var d2=getDateFromFormat(date2,dateformat2);
	if (d1==0 || d2==0) {
		return -1;
		}
	else if (d1 > d2) {
		return 1;
		}
	return 0;
	}

// ------------------------------------------------------------------
// formatDate (date_object, format)
// Returns a date in the output format specified.
// The format string uses the same abbreviations as in getDateFromFormat()
// ------------------------------------------------------------------
function formatDate(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		if (value[token] != null) { result=result + value[token]; }
		else { result=result + token; }
		}
	return result;
	}
	
// ------------------------------------------------------------------
// Utility functions for parsing in getDateFromFormat()
// ------------------------------------------------------------------
function _isInteger(val) {
	var digits="1234567890";
	for (var i=0; i < val.length; i++) {
		if (digits.indexOf(val.charAt(i))==-1) { return false; }
		}
	return true;
	}
function _getInt(str,i,minlength,maxlength) {
	for (var x=maxlength; x>=minlength; x--) {
		var token=str.substring(i,i+x);
		if (token.length < minlength) { return null; }
		if (_isInteger(token)) { return token; }
		}
	return null;
	}
	
// ------------------------------------------------------------------
// getDateFromFormat( date_string , format_string )
//
// This function takes a date string and a format string. It matches
// If the date string matches the format string, it returns the 
// getTime() of the date. If it does not match, it returns 0.
// ------------------------------------------------------------------
function getDateFromFormat(val,format) {
	val=val+"";
	format=format+"";
	var i_val=0;
	var i_format=0;
	var c="";
	var token="";
	var token2="";
	var x,y;
	var now=new Date();
	var year=now.getYear();
	var month=now.getMonth()+1;
	var date=now.getDate();
	var hh=now.getHours();
	var mm=now.getMinutes();
	var ss=now.getSeconds();
	var ampm="";
	
	while (i_format < format.length) {
		// Get next token from format string
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		// Extract contents of value based on format token
		if (token=="yyyy" || token=="yy" || token=="y") {
			if (token=="yyyy") { x=4;y=4; }
			if (token=="yy")   { x=2;y=2; }
			if (token=="y")    { x=2;y=4; }
			year=_getInt(val,i_val,x,y);
			if (year==null) { return 0; }
			i_val += year.length;
			if (year.length==2) {
				if (year > 70) { year=1900+(year-0); }
				else { year=2000+(year-0); }
				}
			}
		else if (token=="MMM"){
			month=0;
			for (var i=0; i<MONTH_NAMES.length; i++) {
				var month_name=MONTH_NAMES[i];
				if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
					month=i+1;
					if (month>12) { month -= 12; }
					i_val += month_name.length;
					break;
					}
				}
			if ((month < 1)||(month>12)){return 0;}
			}
		else if (token=="MM"||token=="M") {
			month=_getInt(val,i_val,token.length,2);
			if(month==null||(month<1)||(month>12)){return 0;}
			i_val+=month.length;}
		else if (token=="dd"||token=="d") {
			date=_getInt(val,i_val,token.length,2);
			if(date==null||(date<1)||(date>31)){return 0;}
			i_val+=date.length;}
		else if (token=="hh"||token=="h") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>12)){return 0;}
			i_val+=hh.length;}
		else if (token=="HH"||token=="H") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>23)){return 0;}
			i_val+=hh.length;}
		else if (token=="KK"||token=="K") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>11)){return 0;}
			i_val+=hh.length;}
		else if (token=="kk"||token=="k") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>24)){return 0;}
			i_val+=hh.length;hh--;}
		else if (token=="mm"||token=="m") {
			mm=_getInt(val,i_val,token.length,2);
			if(mm==null||(mm<0)||(mm>59)){return 0;}
			i_val+=mm.length;}
		else if (token=="ss"||token=="s") {
			ss=_getInt(val,i_val,token.length,2);
			if(ss==null||(ss<0)||(ss>59)){return 0;}
			i_val+=ss.length;}
		else if (token=="a") {
			if (val.substring(i_val,i_val+2).toLowerCase()=="am") {ampm="AM";}
			else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {ampm="PM";}
			else {return 0;}
			i_val+=2;}
		else {
			if (val.substring(i_val,i_val+token.length)!=token) {return 0;}
			else {i_val+=token.length;}
			}
		}
	// If there are any trailing characters left in the value, it doesn't match
	if (i_val != val.length) { return 0; }
	// Is date valid for month?
	if (month==2) {
		// Check for leap year
		if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
			if (date > 29){ return false; }
			}
		else { if (date > 28) { return false; } }
		}
	if ((month==4)||(month==6)||(month==9)||(month==11)) {
		if (date > 30) { return false; }
		}
	// Correct hours value
	if (hh<12 && ampm=="PM") { hh+=12; }
	else if (hh>11 && ampm=="AM") { hh-=12; }
	var newdate=new Date(year,month-1,date,hh,mm,ss);
	return newdate.getTime();
	}

<!-- Browser Detection "Object -->

function Browser() {
	var b=navigator.appName;

	if (b=="Netscape") this.b="ns";
	else if ((b=="Opera") || (navigator.userAgent.indexOf("Opera")>0)) this.b = "opera";
	else if (b=="Microsoft Internet Explorer") this.b="ie";

	this.version=navigator.appVersion;
	this.v=parseInt(this.version);

	this.ns=(this.b=="ns" && this.v>=4);
	this.ns4=(this.b=="ns" && this.v==4);
	this.ns5up = (this.ns && this.v >= 5);
	this.ns6=(this.b=="ns" && this.v==5);

	this.ie=(this.b=="ie" && this.v>=4);
	this.ie4=(this.version.indexOf('MSIE 4')>0);
	this.ie4up = (this.ie && this.v >= 4);

	this.ie5=(this.version.indexOf('MSIE 5')>0); // IE 5 mac returns version 4.0
	this.ie5up = (this.ie5);
	this.ie55=(this.version.indexOf('MSIE 5.5')>0);

	this.opera=(this.b=="opera");

	this.def=(this.ie||this.dom); 

	var ua=navigator.userAgent.toLowerCase();
	this.mac = (ua.indexOf("mac")!=-1);if (ua.indexOf("win")>-1) this.platform="win32";
	else if (ua.indexOf("mac")>-1) this.platform="mac";
	else this.platform="other";
}

var is = new Browser();

function LayerObject(divId) {
	this.name = divId;
	this.menuName = "(not defined)";

	if (is.ns4) this.ob = eval("document." +divId);
	else if (is.ie4) this.ob = document.all(divId);
	else this.ob = document.getElementById(divId);

	this.x = 0;
	this.y = 0;
	this.width = this.getWidth();
	this.height = this.getHeight();

	this.populated = false;
}

LayerObject.prototype.px = ((is.ie5up)||(is.v>=5))?"px":"";

LayerObject.prototype.hideSyntax = (is.ns4)? "hide":"hidden";

LayerObject.prototype.showSyntax = "visible";

LayerObject.prototype.ptOn = function(ptX, ptY) {
// Correct for scolling of FIXED elements in Mozilla scrollX/Y ignored by IE
	if (window.scrollY) {
		ptX -= window.scrollX;
		ptY -= window.scrollY;
	}

	if (ptX < this.x) return false;
	if (ptY < this.y) return false;

	if (ptX > this.x + this.width) return false;
	if	(ptY > this.y + this.height) return false;

	if	(!this.isVisible()) return false;

	return true;
}

LayerObject.prototype.getInlineLeft = function() {
	if (is.ns4) return this.ob.pageX;
	else if ((is.ie) || (is.opera)) {
		var elem = this.ob;
		var xPos = 0;
		var yPos = 0;
		while (elem.offsetParent != null) {
			xPos += elem.offsetLeft;
			yPos += elem.offsetTop;
			elem = elem.offsetParent;
		}

		return xPos;
	}
	else return (this.ob.offsetLeft + document.body.offsetLeft);
}

LayerObject.prototype.getInlineTop = function() {
	if (is.ns4) return this.ob.pageY;
	else if ((is.ie) || (is.opera)) {
		var elem = this.ob;
		var yPos=0;
		while (elem.offsetParent != null) {
			yPos += elem.offsetTop;
			elem = elem.offsetParent;
		}
	
		return yPos;
	}
	else return (this.ob.offsetTop+ document.body.offsetTop);
}

LayerObject.prototype.getWidth = function () {
	if (is.ns4) return this.ob.clip.width;
//	else if (is.opera) return this.ob.style.pixelWidth;
	else return this.ob.offsetWidth;
}

LayerObject.prototype.getHeight = function () {
	if (is.ns4) return this.ob.clip.height;
//	else if (is.opera) return this.ob.style.pixelHeight;
	else if (is.ie5) return this.ob.offsetHeight;
	else return this.ob.offsetHeight;
}

LayerObject.prototype.isVisible = function() {
	if (is.ns4) return( this.ob.visibility == this.showSyntax );
	else return( this.ob.style.visibility == this.showSyntax );
}

LayerObject.prototype.hide = function() {
	if (this.isVisible()) {
		if (is.ns4) this.ob.visibility = this.hideSyntax;
		else this.ob.style.visibility = this.hideSyntax;
		
		if (this.child) {
			if (this.child.ptOn(mouseX,mouseY)) {
				this.child.hide();
			}
			else if (this.trigger) this.trigger.showUnselected();
		}
		else if (this.trigger) this.trigger.showUnselected();
		this.moveLayerTo(0,0); // Relocate in window in case overlapping edge of screen
	}
}

LayerObject.prototype.show = function() {
	if (!this.isVisible()) {
		if (is.ns4) this.ob.visibility = this.showSyntax;
		else this.ob.style.visibility = this.showSyntax;

		if (this.child) this.child.show();

		if (this.parent) this.parent.show();

		if (this.trigger) this.trigger.showSelected();
	}
}

function addString(srcStr, addStr) {
	var retVal = srcStr;

	if (retVal.indexOf(addStr) < 0) {
		retVal += " " + addStr;
	}

	return retVal;
}

function removeString(srcStr, addStr) {
	var retVal = srcStr;

	if (retVal.indexOf(addStr) >= 0) {
		retVal = retVal.substring( 0, retVal.indexOf(addStr));
	}

	return retVal;
}

LayerObject.prototype.showSelected = function() {
	if (is.ns4) this.ob.background = "#000";
	else this.ob.className = addString( this.ob.className, "AltSelected");
}

LayerObject.prototype.showUnselected = function() {
	if (is.ns4) this.ob.background = "";
	else this.ob.className = removeString( this.ob.className, "AltSelected");
}

LayerObject.prototype.moveLayerTo = function(toX, toY) {
	this.x = toX;
	this.y = toY;
	this.updateLayer();
}

LayerObject.prototype.updateLayer = function() {
	if (is.ns4) {
		this.ob.left = Math.round(this.x) + this.px;
		this.ob.top = Math.round(this.y)+ this.px;
	}
	else {
	// Correct for Mac IE 5.x display errors of width and display:block width for <ul>
		if (is.mac && is.ie5up) {
			this.x -= 20;
			this.y -= 6;
			this.ob.style.width = "20em";
		}
		this.ob.style.left = Math.round(this.x) + this.px;
		this.ob.style.top = Math.round(this.y) + this.px;
	}
}

/* Redefines layer contents (for calendar) */
LayerObject.prototype.populate = function(contents) {
	this.contents = contents;
	this.populated = false;
}

function resizefix() {
	if((document.resizeFix.initWidth != window.innerWidth) ||
		(document.resizeFix.initHeight != window.innerHeight)) {
		document.location = document.location;
	}
}

document.resizeFix = new Object();

if(is.ns4){
	document.resizeFix.initWidth = window.innerWidth;
	document.resizeFix.initHeight = window.innerHeight;
	window.onresize=resizefix;
}

/*
var navReady = false;
var toolsReady = false;

var over = -1;
var lastMenu = -1;
var overTrigger = -1;
var menus = null;
var menuTriggers = null;
var numberOfMenus = 0;

var mouseX = 0;
var mouseY = 0;
*/
var fontElementId = "themeBody"; //CHANGE ME TO YOUR ELEMENT ID

//DO NOT MODIFY BELOW

/* Module Change Font (string) */
function changeFont(fontClass){
	var element = document.getElementById(fontElementId);
	element.className = "wptheme-mainbody tundra " + fontClass;
	setCookie("fontSize", fontClass, 3);
}		

/* Module Set Default Font Size (void) */
function setDefaultFontSize(){
	var fontSize = getCookie("fontSize");
	var element = document.getElementById(fontElementId);
	if(fontSize){		
		element.className = "wptheme-mainbody tundra " + fontSize;
	}
	else {
		element.className = "wptheme-mainbody tundra normalFont";	
	}
}

/* Module Set Cookie (string, string, int) -- http://www.w3schools.com/js/js_cookies.asp */
function setCookie(c_name,value,expiredays){
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString())+ "; path=/";

}
/* Module Get Cookie (string) -- http://www.w3schools.com/js/js_cookies.asp */
function getCookie(c_name){
	if(document.cookie.length>0){
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start!=-1){ 
			c_start=c_start + c_name.length+1;
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) c_end=document.cookie.length;
			return unescape(document.cookie.substring(c_start,c_end));
		}
	}
	return false;
}


delete djConfig.baseUrl;

