// --------------------------------------- DLESE Script ---------------------------------------
// $Id: dlese_script.js,v 1.1 2005/09/08 20:41:17 ryandear Exp $ 

var dlese_isFrontPage = false; // Set to true only for homepage (no specialty areas button)
var vocabQueryString = '';	// Only used by Discovery searches
var dlese_DISCOVERY_ROOT = '/dds/'; // Root (servlet context) of the DDS
var dlese_menusOnly = false;	// CRS site does not use search banner
var dlese_ddsQueryForm = null; // HTML/Struts query form
var dlese_ddsQueryFormName = "ddsQueryForm"; // Name of the query form
var dlese_isDevServer = false;	// Dev servers have absolute links re-written
var surveyIsPresent = true;	// Set to false to supress surveys
var dlese_myHost = document.location.href.substring( 0, document.location.href.indexOf( '/', 7 ) ); // Current URL host address
var dlese_debuggingOn = true; // Allows for page CSS debugging when true
var dlese_allNav = new Array(); // List of every navigation list defined so far
var dlese_navSelected = ''; // which banner button is highlighted (not used)
var dlese_isFrames = false; // banners rendering inside a frameset?
if ( ( dlese_myHost.indexOf( 'local' ) > -1 ) ||
		( dlese_myHost.indexOf( 'aegean' ) > -1 ) || 
		( dlese_myHost.indexOf( 'ionian' ) > -1 ) || 
		( dlese_myHost.indexOf( 'dev.dpc' ) > -1 ) || 
		( dlese_myHost.indexOf( 'dev.dlese' ) > -1 ) || 
		( dlese_myHost.indexOf( 'beta.dlese' ) > -1 ) || 
		( dlese_myHost.indexOf( 'preaccession.dlese' ) > -1 ) ||  
		( dlese_myHost.indexOf( 'aegean.dlese' ) > -1 ) || 
		( dlese_myHost.indexOf( 'preview.dlese' ) > -1 ) || 
		( dlese_myHost.indexOf( 'moab' ) > -1 ) ||
		( dlese_myHost.indexOf( '66.7.185.166' ) > -1 ) ||			
		( dlese_myHost.indexOf( 'tremor.dpc' ) > -1 ) )
	dlese_isDevServer = true;
if ( document.location.href.indexOf( "dev=false" ) > -1 ) {
	dlese_isDevServer = false;
	createCookie( "dleseDev", "false" );
}
else if ( document.location.href.indexOf( "dev=true" ) > -1 ) {
	dlese_isDevServer = true;
	createCookie( "dleseDev", "true" );
}
if ( readCookie( "dleseDev" ) == "false" )
	dlese_isDevServer = false;
else if ( readCookie( "dleseDev" ) == "true" )
	dlese_isDevServer = true;

function dlese_highlightSectionTitle() {
	if ( !dlese_noscript ) {
		var obj = getObject( 'dlese_sectionTitle' );
		if ( obj && !obj.innerHTML && !( dlese_isMac && dlese_isIE ) ) {
			obj.innerHTML = "Welcome to<br/>DLESE!";
		}
	}
}

// ------------------------------------- Browser detection -------------------------------------
var dlese_isIE;
var dlese_isNetscape;
var dlese_isN4 = false;
var dlese_isSafari = false;
var dlese_isMac = false;
var dlese_agt = navigator.userAgent.toLowerCase();
var dlese_noscript = true; 
var dlese_isSearchPage = false;
var dlese_isNewsOpps = false;
var dlese_isSiteSearch = false;
var surveyMOCount = 0;  // mouseOver detection of survey (click outside closes it)
if ( navigator.appName.indexOf( 'Microsoft' ) > -1 )
	dlese_isIE = true;
if ( navigator.appName == 'Netscape' ) {
	if ( parseInt( navigator.appVersion ) == 4 ) {
		dlese_isN4 = true;
		dlese_noscript = true;
	}
}
if ( document.getElementById  ) {	
	dlese_noscript = false;
	if ( navigator.appName == 'Netscape' ) {
		dlese_isNetscape = true;
	}
}
if ( dlese_agt.indexOf( "safari" ) > -1 )
	dlese_isSafari = true;
if ( dlese_agt.indexOf( "mac" ) != -1 )
	dlese_isMac = true;

if ( dlese_isMac && dlese_isIE )
	document.writeln( "<style type='text/css'>.dlese_treeMenuIcons { height: 18px; visibility: hidden; }</style>" );

// --------------------------------- Include survey Javascript ---------------------------------
if ( surveyIsPresent )
	document.writeln( "<script type='text/javascript' src='/dlese_shared/dlese_script_survey.js'></script>" );

// ------------------------------------- DDS/Site searches -------------------------------------

function dlese_siteSearch() {
	var stype = '';
	if ( dlese_isFrontPage ) {
		if ( dlese_ddsQueryForm.over[ 0 ].checked )
			stype = 1;
		if ( dlese_ddsQueryForm.over[ 1 ].checked )
			stype = 2;
		if ( dlese_ddsQueryForm.over[ 2 ].checked )
			stype = 3;
		if ( dlese_ddsQueryForm.over[ 3 ].checked )
			stype = 4;
	}
	else {
		stype = dlese_ddsQueryForm.over.value;
	}
	createCookie( "searchOverSelected", stype - 1 );
	if ( stype > 1 ) {
		if ( self != top )
			top.location.href = dlese_ddsQueryForm.action + "?q=" 
				+ dlese_ddsQueryForm.q.value + "&over=" + stype;
		else {
			if ( stype == 2 ) { // News search
				var searchURL = "/news_opportunities/search.jsp?q=" + dlese_ddsQueryForm.q.value;
				if ( dlese_ddsQueryForm.announcementType )
					searchURL = searchURL + "&announcementType=" + dlese_ddsQueryForm.announcementType.value;
				top.location.href = searchURL;
			}
			else
				dlese_ddsQueryForm.submit();
		}
	}
	else {
		var query = "q=" + dlese_ddsQueryForm.q.value + vocabQueryString + "&s=0";			
		if ( dlese_isDevServer )
			top.location.href = dlese_DISCOVERY_ROOT + "query.do?" + query;
		else {
			if ( self != top )
				top.location.href = "http://www.dlese.org" + dlese_DISCOVERY_ROOT + "query.do?" + query;
			else
				document.location.href = "http://www.dlese.org" + dlese_DISCOVERY_ROOT + "query.do?" + query;
		}
	}
	return false;
}
function dlese_setSearchOver() {
	// Set the search over select list to whatever was just searched over:
	ind = docLocation.indexOf( '&over=' );
	if ( ind > -1 ) {
		var overIndex = docLocation.substring( ind + 6, ind + 7 );
		dlese_ddsQueryForm.over.selectedIndex = overIndex - 1;
	}
	else {
		if ( docLocation.indexOf( '/news_opportunities/' ) > -1 ) {
			dlese_ddsQueryForm.over.selectedIndex = 1;
			dlese_isNewsOpps = true;
		}
	}
}
function dlese_setQueryStringForBannerSearches() {
	var docLocation = document.location.href;
	docLocation = docLocation.replace( /\?q=/, "?&q=" );
	var ind = docLocation.indexOf( '&q=' );
	var indAdd = 3;
	if ( ind == -1 ) {
		ind = docLocation.indexOf( '&query=' );
		indAdd = 7;
	}
	if ( ind > -1 ) {
		var ind2 = docLocation.indexOf( '&', ind + 1 );
		if ( ind2 == -1 )
			ind2 = docLocation.length;
		if ( dlese_ddsQueryForm ) {
			dlese_ddsQueryForm.q.value = unescape( docLocation.substring( ind + indAdd, ind2 ) );
			dlese_ddsQueryForm.q.value = removePluses( dlese_ddsQueryForm.q.value );
		}
	}
}
function removePluses( str ) {
	var ret = str;
	var ind = ( ret.indexOf( "+" ) );
	while ( ind > -1 ) {
		ret = ret.substring( 0, ind ) + " " + ret.substring( ind + 1, ret.length );
		ind = ( ret.indexOf( "+" ) );
	}
	return ret;
}
var omnitureInserted = false;
function insertOmnitureCode() {
	if ( !omnitureInserted ) {
		omnitureInserted = true;
		document.writeln( "<script type='text/javascript' src='/dlese_shared/s_code_remote.js'></script>" );
	}
}
function dlese_changeDevDomains() {
	dlese_ddsQueryForm = document.getElementById( "ddsQueryForm" );
	// Change developer domains:
	if ( dlese_isDevServer ) {
		// Change all doc links that go to http://www.dlese.org to current domain:
		for ( var i = 0; i < document.links.length; i++ ) {
			if ( document.links[ i ].href.indexOf( 'javascript:' ) == -1 ) {
				var ind = document.links[ i ].href.indexOf( 'http://www.dlese.org' );
				if ( ind == 0 ) {
					document.links[ i ].href = dlese_myHost + document.links[ i ].href.substring( 20, document.links[ i ].href.length );
				}
			}
		}
		if ( dlese_ddsQueryForm ) {
			if ( dlese_ddsQueryForm.action.indexOf( "http://" ) > -1 ) {
				var ind = dlese_ddsQueryForm.action.indexOf( "/", 8 );
				if ( ind > -1 )
					dlese_ddsQueryForm.action = dlese_myHost + dlese_ddsQueryForm.action.substring( ind, dlese_ddsQueryForm.action.length );
			}
			else
				dlese_ddsQueryForm.action = dlese_myHost + dlese_ddsQueryForm.action;				
		}
	}
}
setTimeout( "dlese_changeDevDomains()", 100 );
function dlese_changeDevDomainSingleLink( link ) {
	// Change developer domains:
	if ( dlese_isDevServer ) {
		var ind = link.indexOf( 'http://www.dlese.org' );
		if ( ind == 0 ) {
				link = dlese_myHost + link.substring( 20, link.length );
		}
	}
	return link;
}

// ------------------------------------ Site navigation functions ------------------------------------
// Banner site navigation fly-downs (click to open, click *outside* to close)

var siteNavButtonsRendered = false;
function dlese_renderSiteNavButtons() {
	if ( !siteNavButtonsRendered ) {
		for ( var i = 0; i < dlese_allNav.length; i++ ) {
				dlese_NavigationRender( eval( dlese_allNav[ i ] ) );
		}
		siteNavButtonsRendered = true;
	}
}
function dlese_NavigationList( name, 
		imgClosed, 
		imgOpen, 
		imgSelectedClosed, 
		imgSelectedOpen, 
		imgWidth, 
		imgHeight, 
		left, 
		top, 
		noscriptHref, 
		altText ) {
	this.name = name;
	this.div = name + 'navDiv';
	this.closeCall = 0;
	this.imgClosed = new Image();
	this.imgClosedSrc = imgClosed;	
	this.imgOpen = new Image();
	this.imgSelectedClosed = new Image();
	this.imgSelectedClosedSrc = imgSelectedClosed;	
	this.imgSelectedOpen = new Image();
	if ( imgClosed ) {	
		this.imgClosed.src = imgClosed;	
		this.imgOpen.src = imgOpen;
		this.imgSelectedClosed.src = imgSelectedClosed;
		this.imgSelectedOpen.src = imgSelectedOpen;
	}
	this.imgWidth = imgWidth;
	this.imgHeight = imgHeight;
	this.left = left;
	this.top = top;
	this.noscriptHref = noscriptHref;
	this.altText = altText;
	this.moCount = 0;
	this.isOpen = false;
	this.parent = 0;
	this.label = new Array();
	this.href = new Array();
	this.target = new Array();	
	this.sublist = new Array();
	if ( altText )
		dlese_allNav[ dlese_allNav.length ] = name;
}
function dlese_AddNav( list, label, href, target, sublist ) {
	var ind = list.label.length;
	list.label[ ind ] = label;
	list.href[ ind ] = href;
	list.target[ ind ] = target;
	if ( !target )
		list.target[ ind ] = '_top';
	if ( sublist ) {
		list.sublist[ ind ] = sublist;
		sublist.parent = list;
	}
}	
function dlese_displayNavList( list, left, top ) {
	if ( list.label.length > 0 ) {
		var topList = list;
		while ( topList.parent )
			topList = topList.parent;
		if ( left && top ) {
			left += 2; top += 2;
			document.writeln( "<style type='text/css'><!--" );
			document.writeln( ".navDivStyle" + list.div + " { display: none; visibility: hidden; position: absolute;" );
			document.writeln( "left: " + left + "px; top: " + top + "px; " );
			document.writeln( "background-color: #FFFFFF; font-family: arial, helvetica, sans-serif;" );
			document.writeln( "margin: 0px; padding: 5px; border: 2px outset #DDDDDD; z-index: 100000; }" );
			document.writeln( "-->\n</style>" );
			document.writeln( "<div id='" + list.div 
				+ "' class='navDivStyle" + list.div + "' "
				+ "onMouseOver='dlese_navOver( " + topList.name + " );' "
				+ "onMouseOut='setTimeout( \"dlese_navOut( " + topList.name + " );\", 1 )'>" );
		}
		else
			document.writeln( "<div id='" + list.div + "' class='dlese_siteNavInnerLayer' onMouseOver='dlese_navOver( " + topList.name + " );' "
				+ "onMouseOut='setTimeout( \"dlese_navOut( " + topList.name + " );\", 1 )'>" );
		document.writeln( "<table border='0' cellpadding='0' cellspacing='0' onMouseOver='dlese_navOver( " + topList.name + " );' "
			+ "onMouseOut='setTimeout( \"dlese_navOut( " + topList.name + " );\", 1 )'>" );
		for ( var i = 0; i < list.label.length; i++ ) {
			var hasTarget = false;
			var target = " target='" + list.target[ i ] + "'";
			if ( list.target[ i ] != '_top' )
				hasTarget = true;
			if ( list.sublist[ i ] ) {
				document.writeln( "<tr><td valign='top' nowrap><a href='javascript:dlese_toggleNav( " 
					+ list.sublist[ i ].name + " );' "
					+ "onMouseOver='dlese_navOver( " + topList.name + " ); window.status=\"\"; "
					+ "return true;' onMouseOut='setTimeout( \"dlese_navOut( " + topList.name + " );\", 1 )' "
					+ "class='dlese_siteNavLinks'>" + list.label[ i ] 
					+ " <img alt='List of " + list.label[ i ] + "' border='0' src='" 
					+ dlese_ARROW_CLOSED_DROPDOWN_SRC + "' id='" + list.sublist[ i ].name + "navToggle'></a>" ); 
				dlese_displayNavList( list.sublist[ i ] );
				document.writeln( "</td></tr>" );
			}
			else {
				document.writeln( "<tr><td valign='top' nowrap>" );
				if ( list.href[ i ] && !hasTarget && !dlese_isFrames )
					document.write( "<a href='javascript:dlese_openPage( \"" 
					+ dlese_changeDevDomainSingleLink( list.href[ i ] ) + "\", \""
					+ list.name + "\", \"" + list.label[ i ] + "\" );'" + target 
					+ " class='dlese_siteNavLinks' onMouseOver='dlese_navOver( " + topList.name + " );' "
					+ "onMouseOut='setTimeout( \"dlese_navOut( " + topList.name + " );\", 1 )'>" );
				else if ( list.href[ i ] )
					document.write( "<a href='" + list.href[ i ] + "'" + target 
					+ " class='dlese_siteNavLinks' onMouseOver='dlese_navOver( " + topList.name + " );' "
					+ "onMouseOut='setTimeout( \"dlese_navOut( " + topList.name + " );\", 1 )'>" );
				document.write( list.label[ i ] );
				if ( list.href[ i ] )
					document.write( "</a>" );
				document.writeln( "</td></tr>" );
			}
		}		
		document.writeln( "</table></div>" );
	}
}
function dlese_NavigationRender( list ) {
	if ( !dlese_noscript ) {
		var imgSrc = list.imgClosedSrc;
		if ( dlese_navSelected == list.name )
			imgSrc = list.imgSelectedClosedSrc;
		document.writeln( "<style type='text/css'>" );
		document.writeln( ".dlese_Nav" + list.name + " { position: absolute; left: " 
			+ list.left + "px; top: " + list.top + "px; z-index: 50000; padding: 0px; margin: 0px; }" );
		document.writeln( "</style>" );
		if ( list.label.length > 0 ) {
			document.writeln( "<div class='dlese_bannerNavButtons'>" );
			var buttonLink = document.getElementById( "dlese_NavButton" + list.name );
			if ( buttonLink ) {
				buttonLink.href = "javascript:dlese_toggleNavButton( " + list.name + " )";
			}
			var buttonDiv = document.getElementById( "dlese_NavDiv" + list.name );
			document.writeln( "<div class='dlese_Nav" + list.name + "' id='dlese_NavButton" + list.name
				+ "'><a href='javascript:dlese_toggleNavButton( " 
				+ list.name + " )' onMouseOver='dlese_navOver( " + list.name + " ); "
				+ "window.status=\"\"; return false;' "
				+ "onMouseOut='setTimeout( \"dlese_navOut( " + list.name + " );\", 1 )'><img border='0' alt=\"" 
				+ list.altText + "\" src='" + imgSrc + "' width='" + list.imgWidth + "' " + "height='" 
				+ list.imgHeight + "' id='" + list.name	+ "navImg'>" + "</a></div>" );
			document.writeln( "</div>" );
		}
		else {
			document.writeln( "<div class='dlese_Nav" + list.name + "'><a href='" + list.noscriptHref 
				+ "'><img border='0' alt=\"" + list.altText + "\" src='" + imgSrc + "' width='" + list.imgWidth + "' " + "height='" 
				+ list.imgHeight + "'>" + "</a></div>" );	
		}	
		dlese_displayNavList( list, list.left - 2, list.top + list.imgHeight - 1 );
	}
}
// ------------------------------------ Assign the DIV code to the given object's innerHTML 
// (alternate version of above that can be rendered after page has already loaded) ------------------------------------
function dlese_NavigationRenderInnerHtml( list, divName ) {
	if ( !dlese_noscript ) {
		var newInner = "";
		var imgSrc = list.imgClosedSrc;
		if ( dlese_navSelected == list.name )
			imgSrc = list.imgSelectedClosedSrc;
		newInner += "<style type='text/css'><!--";
		newInner += ".dlese_Nav" + list.name + " { position: absolute; left: " 
			+ list.left + "px; top: " + list.top + "px; border: 1px solid #000000; z-index: 50000; padding: 0px; margin: 0px; }";
		newInner += "-->\n</style>";
		if ( list.label.length > 0 ) {
			newInner += "<div class='dlese_Nav" + list.name + "' id='dlese_NavButton" + list.name
				+ "'><a href='javascript:dlese_toggleNavButton( " 
				+ list.name + " )' onMouseOver='dlese_navOver( " + list.name + " ); "
				+ "window.status=\"\"; return false;' "
				+ "onMouseOut='setTimeout( \"dlese_navOut( " + list.name + " );\", 1 )'><img border='0' alt=\"" 
				+ list.altText + "\" src='" + imgSrc + "' width='" + list.imgWidth + "' " + "height='" 
				+ list.imgHeight + "' id='" + list.name	+ "navImg'>" + "</a></div>";
		}
		else {
			newInner += "<div class='dlese_Nav" + list.name + "'><a href='" + list.noscriptHref 
				+ "'><img border='0' alt=\"" + list.altText + "\" src='" + imgSrc + "' width='" + list.imgWidth + "' " + "height='" 
				+ list.imgHeight + "'>" + "</a></div>";	
		}	
		newInner += dlese_displayNavListInnerHtml( list, list.left - 1, list.top + list.imgHeight );
	}
	var obj = document.getElementById( divName );
	if ( obj )
		obj.innerHTML = obj.innerHTML + newInner;
}	
function dlese_displayNavListInnerHtml( list, left, top ) {
	if ( list.label.length > 0 ) {
		var newInner = "";
		var topList = list;
		while ( topList.parent )
			topList = topList.parent;
		if ( left && top ) {
			left += 2; top += 2;
			newInner += "<style type='text/css'><!--";
			newInner += ".navDivStyle" + list.div + " { display: none; visibility: hidden; position: absolute;";
			newInner += "left: " + left + "px; top: " + top + "px; ";
			newInner += "background-color: #FFFFFF; font-family: arial, helvetica, sans-serif;";
			newInner += "margin: 0px; padding: 5px; border: 2px outset #DDDDDD; z-index: 100000; }";
			newInner += "-->\n</style>";
			newInner += "<div id='" + list.div 
				+ "' class='navDivStyle" + list.div + "' "
				+ "onMouseOver='dlese_navOver( " + topList.name + " );' "
				+ "onMouseOut='setTimeout( \"dlese_navOut( " + topList.name + " );\", 1 )'>";
		}
		else
			newInner += "<div id='" + list.div + "' class='dlese_siteNavInnerLayer' onMouseOver='dlese_navOver( " + topList.name + " );' "
				+ "onMouseOut='setTimeout( \"dlese_navOut( " + topList.name + " );\", 1 )'>";
		newInner += "<table border='0' cellpadding='0' cellspacing='0' onMouseOver='dlese_navOver( " + topList.name + " );' "
			+ "onMouseOut='setTimeout( \"dlese_navOut( " + topList.name + " );\", 1 )'>";
		for ( var i = 0; i < list.label.length; i++ ) {
			var hasTarget = false;
			var target = " target='" + list.target[ i ] + "'";
			if ( list.target[ i ] != '_top' )
				hasTarget = true;
			if ( list.sublist[ i ] ) {
				newInner += "<tr><td valign='top' nowrap><a href='javascript:dlese_toggleNav( " 
					+ list.sublist[ i ].name + " );' "
					+ "onMouseOver='dlese_navOver( " + topList.name + " ); window.status=\"\"; "
					+ "return true;' onMouseOut='setTimeout( \"dlese_navOut( " + topList.name + " );\", 1 )' "
					+ "class='dlese_siteNavLinks'>" + list.label[ i ] 
					+ " <img alt='List of " + list.label[ i ] + "' border='0' src='" 
					+ dlese_ARROW_CLOSED_DROPDOWN_SRC + "' id='" + list.sublist[ i ].name + "navToggle'></a>"; 
				newInner += dlese_displayNavListInnerHtml( list.sublist[ i ] );
				newInner += "</td></tr>";
			}
			else {
				newInner += "<tr><td valign='top' nowrap>";
				if ( list.href[ i ] && !hasTarget && !dlese_isFrames )
					newInner += "<a href='javascript:dlese_openPage( \"" 
					+ dlese_changeDevDomainSingleLink( list.href[ i ] ) + "\", \""
					+ list.name + "\", \"" + list.label[ i ] + "\" );'" + target 
					+ " class='dlese_siteNavLinks' onMouseOver='dlese_navOver( " + topList.name + " );' "
					+ "onMouseOut='setTimeout( \"dlese_navOut( " + topList.name + " );\", 1 )'>";
				else if ( list.href[ i ] )
					newInner += "<a href='" + list.href[ i ] + "'" + target 
					+ " class='dlese_siteNavLinks' onMouseOver='dlese_navOver( " + topList.name + " );' "
					+ "onMouseOut='setTimeout( \"dlese_navOut( " + topList.name + " );\", 1 )'>";
				newInner += list.label[ i ];
				if ( list.href[ i ] )
					newInner += "</a>";
				newInner += "</td></tr>";
			}
		}		
		newInner += "</table></div>";
	}
	return newInner;
}
function dlese_toggleNavButton( list ) {
	if ( !dlese_noscript ) {
		//dlese_hideAllNav();
		window.status = '';
		toggleObjDisplay( list.div, '' );
		var obj = document.getElementById( list.div );
		var imgSrc;
		if ( list.name == dlese_navSelected ) {
			if ( obj.style.visibility == 'visible' ) {
				imgSrc = list.imgSelectedOpen.src;
				list.isOpen = true;
			}
			else {
				imgSrc = list.imgSelectedClosed.src;
				list.isOpen = false;
			}
		}
		else {
			if ( obj.style.visibility == 'visible' ) {
				imgSrc = list.imgOpen.src;
				list.isOpen = true;
			}
			else {
				imgSrc = list.imgClosed.src;
				list.isOpen = false;
			}
		}
		//eval( "document.images." + list.name + "navImg.src = '" + imgSrc + "'" );
		if ( list.isOpen )
			dlese_hideSelectListsIE( true );
		else
			dlese_hideSelectListsIE( false );	
	}
}
function dlese_toggleNav( list ) {
	window.status = '';
	toggleObjDisplay( list.div, '' );
	var obj = document.getElementById( list.div );
	if ( obj.style.visibility == 'visible' )
		eval( "document.images." + list.name + "navToggle.src = '" + dlese_ARROW_OPEN_DROPDOWN.src + "'" );
	else
		eval( "document.images." + list.name + "navToggle.src = '" + dlese_ARROW_CLOSED_DROPDOWN.src + "'" );		
}
function dlese_navOver( list ) {
	list.moCount++;
}
function dlese_navOut( list ) {
	list.moCount--;
}
function dlese_hideAllNav() {
	for ( var i = 0; i < dlese_allNav.length; i++ ) {
		var nav = eval( dlese_allNav[ i ] );
		if ( nav.isOpen && nav.moCount < 1 ) {
			var imgSrc = nav.imgClosed.src;
			if ( nav.name == dlese_navSelected )
				imgSrc = nav.imgSelectedClosed.src;
			//eval( "document.images." + nav.name + "navImg.src = '" + imgSrc + "'" );
			hideObj( nav.div, '' );
			nav.isOpen = false;
			dlese_hideSelectListsIE( false );
		}
	}
}
function dlese_openPage( url, navList, linkLabel ) {
	window.open( url, '_top' );
}
function dlese_pageOnLoad() {
}

// -------------------------------------- KeyUp functions --------------------------------------
// Used for keyboard launching of DDS admin area, and Alt+C clearing of vocab lists

if ( dlese_isNetscape )
	document.onkeyup = keyUpFirefox;
else
	document.onkeyup = keyUp;
function keyUp( ev ) {
	if ( window.event.ctrlKey && ( window.event.keyCode == 192 ) )
		document.location.href = "/dds/admin/admin.do";
	else if ( ( document.location.href.indexOf( "/dds/" ) > -1 ) && 
			window.event.altKey && ( window.event.keyCode == 67 ) ) // Alt+C = clear vocabs
		doClearAll();
	else if ( window.event.ctrlKey && ( window.event.keyCode == 123 ) ) // Ctrl+F12 = stylesheet debugger toggle
		dlese_CSSDebuggerToggle();		
}
function keyUpFirefox( evt ) {
	var e = evt ? evt : window.event;
	if ( !e ) return;
	var key = 0;
	if ( e.keyCode ) { 
		key = e.keyCode; 
	} 
	else if ( typeof( e.which ) != 'undefined' ) { // for moz/fb, if keyCode==0 use 'which'
		key = e.which; 
	}
	if ( e.ctrlKey && ( key == 192 ) )
		document.location.href = "/dds/admin/admin.do";	
	else if ( ( document.location.href.indexOf( "/dds/" ) > -1 ) && 
			e.altKey && ( key == 67 ) ) // Alt+C = clear vocabs
		doClearAll();	
	else if ( e.ctrlKey && ( key == 123 ) ) // Ctrl+F12 = stylesheet debugger toggle
		dlese_CSSDebuggerToggle();		
}

// ------------------------------------ MouseDown functions ------------------------------------
// Used for hiding of survey, and IE select lists

function dlese_doMouseDown( event ) {
	if ( !dlese_noscript ) {
		if ( !dlese_isNetscape ) {
			if ( ( window.event.clientX < getInsideWindowWidth() ) &&
				 ( window.event.clientY < getInsideWindowHeight() ) )
			 	setTimeout( "dlese_mouseDown()", 1 );
		}
		else {
			if ( ( event.pageX < getInsideWindowWidth() ) &&
				 ( event.pageY < getInsideWindowHeight() ) )
			 	setTimeout( "dlese_mouseDown()", 1 );
		}
	}
}
function dlese_mouseDown() {
	if ( !dlese_noscript ) {
		var obj = document.getElementById( "dleseSurvey" );
		if ( obj != null && surveyMOCount == 0 ) {
			obj.style.display = 'none';
			surveyIsShowing = false;
			dlese_hideAllNav();
			dlese_hideSelectListsIE( false );
		}		
	}
}
document.onmousedown = dlese_doMouseDown;

// -------------------------------------- Browser patches --------------------------------------
// IE doesn't allow basic page DIVs (layers, paragraphs, etc.) to overlap <form> dropdowns

function dlese_hideSelectListsIE( hide ) {
	// IE select lists don't support z-index or zIndex, so we hide all of them:
	if ( dlese_isIE ) {
		for ( var i = 0; i < document.forms.length; i++ ) {
			for ( var j = 0; j < document.forms[i].elements.length; j++ ) {
				if ( document.forms[i].elements[j].type && 
					( document.forms[i].elements[j].type.indexOf( "select" ) == 0 ) ) {
					if ( hide )
						document.forms[i].elements[j].style.visibility = "hidden";
					else
						document.forms[i].elements[j].style.visibility = "visible";
				}
			}
		}
	}
}

// ------------ Render XML buttons (assumes request includes xml and xsl parameters) ------------
function dlese_getRenderedXmlButton( href, buttonLabel, textLabelPrefix, textLabelPostfix, addCss, tooltipText ) {
	if ( !tooltipText )
		tooltipText = "";
	return "<a href=\"" + href + "\" title=\"" + tooltipText 
		+ "\" style=\"text-decoration: none;\"><span class=\"" + addCss + " dlese_xmlButton\">" 
		+ buttonLabel + "</span></a>&nbsp;"	+ "<a href=\"" + href + "\" title=\"" + tooltipText + "\">" 
		+ textLabelPrefix + "</a> " + textLabelPostfix;
}
function dlese_renderXmlButton( href, buttonLabel, textLabelPrefix, textLabelPostfix, addCss, tooltipText ) {
	document.writeln( dlese_getRenderedXmlButton( href, buttonLabel, textLabelPrefix, textLabelPostfix, addCss, tooltipText ) );
}
function dlese_getRequestParam( param, includeAmpersandsInValue ) {
	var ret = "&" + document.location.href.substring( document.location.href.indexOf( "?" ) + 1,
		document.location.href.length ) + "&";
	var ind = ret.indexOf( "&" + param + "=" );
	if ( ind > -1 ) {
		if ( includeAmpersandsInValue )
			return ret.substring( ind + param.length + 2, ret.length - 1 );
		else
			return ret.substring( ind + param.length + 2, ret.indexOf( "&", ind + 1 ) );
	}
	return "";
}

// ---------------------------------- mailto: spambot avoiding ----------------------------------
function renderEmailAddress( prefix, postfix ) {
	var address = prefix + "@" + postfix;
	document.write( "<a href='mailto:" + address + "'>" + address + "</a>" );
}

function dlese_rea13( prefix, postfix ) {
	if ( typeof rot13 != "undefined" )
		renderEmailAddress( rot13( prefix ), rot13( postfix ) );
}

// ------------------------------------------ Cookies ------------------------------------------
// DLESE only uses *session* cookies that disappear when the browser is closed... 

function createCookie( name, value ) {
	document.cookie = name + "=" + value + "; path=/";
}
function readCookie( name ) {
	var nameEQ = name + "=";
	var ca = document.cookie.split( ';' );
	for( var i = 0; i < ca.length; i++ ) {
		var c = ca[i];
		while ( c.charAt( 0 ) == ' ' ) 
			c = c.substring( 1, c.length );
		if ( c.indexOf( nameEQ ) == 0 ) {
			return c.substring( nameEQ.length, c.length );
		}
	}
	return null;
}

// ------------------------------- Rot13 for mailto: obfuscation -------------------------------
// This work is hereby released into the Public Domain. To view a copy of the 
// public domain dedication, visit http://creativecommons.org/licenses/publicdomain/ 
// or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
// origin: 2000-01-08 nospam@geht.net http://tools.geht.net/rot13.html
// Use at own risk.
// The problem is that JavaScript 1.0 does not provide a Char to Numeric value conversion.
// Thus we define a map.
// Because there are 64K UniCode characters, this map does not cover all characters.
//
var rot13map; 
function rot13init() { 
	var map = new Array(); 
	var s = "abcdefghijklmnopqrstuvwxyz"; 
	for (i=0; i<s.length; i++) 
		map[s.charAt(i)] = s.charAt((i+13)%26); 
	for (i=0; i<s.length; i++) 
		map[s.charAt(i).toUpperCase()] = s.charAt((i+13)%26).toUpperCase(); 
	return map; 
} 
function rot13(a) { 
	if (!rot13map) 
		rot13map = rot13init(); 
	s = ""; 
	for (i=0; i<a.length; i++) { 
		var b = a.charAt(i); 
		s += (b>='A' && b<='Z' || b>='a' && b<='z' ? rot13map[b] : b); 
	} 
	return s; 
}

// ----------------------- Cross-browser object/div/layer functionality -----------------------

function getObject( name ) {
	if ( !dlese_noscript )
		return document.getElementById( name );
}
function getInsideWindowWidth() {
	if ( !dlese_noscript )
		return document.body.clientWidth;
}
function getInsideWindowHeight() {
	if ( !dlese_noscript )
		return document.body.clientHeight;
}
function showObj( name ) {
	var obj = getObject( name );
	if ( !dlese_noscript ) {
		obj.style.display = "block";
		obj.style.visibility = "visible";
	}
}
function hideObj( name ) {
	var obj = getObject( name );
	if ( obj ) {
		if ( !dlese_noscript ) {
			obj.style.display = "none";
			obj.style.visibility = "hidden";
		}
	}
}
function toggleObjDisplay( name ) {
	var obj = getObject( name );
	var showing;
	showing = obj.style.display;
	if ( !showing || showing == "none" ) {
		showObj( name );
	}
	else {
		hideObj( name );
	}
}

// ----------------------- Page debugging (on-the-fly toggle of CSS properties) -----------------------
// Used to "debug" page layout (CSS style properties) on-the-fly

var dlese_stylesDebuggerRendered = false;
var dlese_stylesDebuggerShowing = false;
var dlese_stylesDefined = new Array();
dlese_stylesDefined[ 0 ] = 'dlese_banner';
dlese_stylesDefined[ 1 ] = 'dlese_dlese_';
dlese_stylesDefined[ 2 ] = '';
dlese_stylesDefined[ 2 ] = '';
dlese_stylesDefined[ 2 ] = '';
dlese_stylesDefined[ 2 ] = '';
dlese_stylesDefined[ 2 ] = '';
dlese_stylesDefined[ 2 ] = 'dlese_footerLinks';
function dlese_getPageStylesAsSelect() {
	var ret = "<select name='pageElement'>";
	for ( var i = 0; i < dlese_stylesDefined.length; i++ )
		ret += "<option>" + dlese_stylesDefined[ i ] + "</option>";
	return ret + "</select>";
}
function dlese_CSSDebuggerRender() {
	var dbug = document.getElementById( 'dlese_stylesDebugger' );
	if ( dbug && dbug.style ) {
		dbug.innerHTML = "<form name='dlese_stylesDebuggerValues' style='border: 0px; margin: 0px;'>"
			+ "<table border='0' cellpadding='1' cellspacing='0'><tr>"
			+ "<tr class='dlese_stylesDebuggerWindowTitleBackCol'><td colspan='2' align='right'><a onClick='dlese_closeCSSDebugger'>X</a></td></tr>"
			+ "<td align='right'><b>Page style:</b></td><td>" + dlese_getPageStylesAsSelect() + "</td></tr><tr>"
			+ "<td align='right'><b>CSS Property:</b></td><td><input type='text' width='20' name='cssProperty' /></td></tr><tr>"
			+ "<td align='right'><b>Value:</b></td><td><input type='text' width='20' name='cssValue' /></td></tr><tr>"
			+ "<td></td><td><input type='button' value='Update' onClick='dlese_CSSDebuggerSetCSS()' />"
			+ "</td></tr></table></form>";
	}
	dlese_CSSDebuggerSetCSS();
	dlese_stylesDebuggerRendered = true;
}
function dlese_CSSDebuggerToggle() {
	//var obj = document.getElementById( 'dlese_stylesDebugger' );
	//obj.style.border = "4px outset gold";
	//alert( obj.style.border );
	if ( !dlese_stylesDebuggerRendered )
		dlese_CSSDebuggerRender();
	dlese_stylesDebuggerShowing = !dlese_stylesDebuggerShowing;
	toggleObjDisplay( 'dlese_stylesDebugger' );
}
function dlese_CSSDebuggerSetCSS() {
	document.forms.dlese_stylesDebuggerValues.cssValue.value = getObject( 'dlese_stylesDebugger' ).style.border;
}

