/*
Copyright (c) 2007, The Travelers Companies. All rights reserved.
Version: 1.0.8422.0
*/

if (typeof STA4JS == "undefined") {
	var STA4JS = {};
	STA4JS["EventManager"] = {};
}

STA4JS.EventManager.addEvent = function(obj, evType, fn)
{
	if (!(typeof YAHOO == "undefined"))
		YAHOO.util.Event.addListener(obj, evType, fn);
}

STA4JS.EventManager.removeEvent = function(obj, evType, fn) {
	if (!(typeof YAHOO == "undefined"))
		YAHOO.util.Event.removeListener(obj, evType, fn);
}

function setCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; 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;
}

function eraseCookie(name) {
	setCookie(name,"",-1);
}

/* http://cass-hacks.com/articles/code/js_url_encode_decode/ */
function URLEncode(clearString)
{
	var output = '';
	var x = 0;
	clearString = clearString.toString();
	var regex = /(^[a-zA-Z0-9_.]*)/;
	while (x < clearString.length)
	{
		var match = regex.exec(clearString.substr(x));
		if (match != null && match.length > 1 && match[1] != '')
		{
			output += match[1];
			x += match[1].length;
		}
		else
		{
			if (clearString[x] == ' ')
				output += '+';
			else
			{
				var charCode = clearString.charCodeAt(x);
				var hexVal = charCode.toString(16);
				output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
			}
			x++;
		}
	}
	return output;
}

var selectedFontSize = readCookie("fontSize");
var pageWidth = readCookie("pageWidth");

function setFontStyleSheet(size,isPageLoadInitial)
{
	selectedFontSize = size;
	if ((typeof (document.getElementById('pfs_base').href) != 'undefined') ||
		(typeof (document.getElementById('pfs_medium').href) != 'undefined') ||
		(typeof (document.getElementById('pfs_large').href) != 'undefined'))
	{
		var small_css = document.getElementById('pfs_base');
		var medium_css = document.getElementById('pfs_medium');
		var large_css = document.getElementById('pfs_large');

		if (size == "large")
		{
			large_css.disabled = false;
			medium_css.disabled = true;
			small_css.disabled = true;
			textimageSwapper("large","selected");
			textimageSwapper("medium","off");
			textimageSwapper("small","off");
		}
		else if (size == "medium")
		{
			large_css.disabled = true;
			medium_css.disabled = false;
			small_css.disabled = true;
			textimageSwapper("large","off");
			textimageSwapper("medium","selected");
			textimageSwapper("small","off");
		}
		else if (size == "small")
		{
			large_css.disabled = true;
			medium_css.disabled = true;
			small_css.disabled = false;
			textimageSwapper("large","off");
			textimageSwapper("medium","off");
			textimageSwapper("small","selected");
		}
		else
		{
			large_css.disabled = true;
			medium_css.disabled = true;
			small_css.disabled = false;
			textimageSwapper("large","off");
			textimageSwapper("medium","off");
			textimageSwapper("small","selected");
			selectedFontSize = 'small';
		}
		
		setCookie("fontSize",size,0);
		
		if (window.styleSheetSwapper)
			styleSheetSwapper(size);
		if(isPageLoadInitial != null)
			setLeftNavHeight(isPageLoadInitial);
		else
			setLeftNavHeight(false);
	}
}

function setPageWidth(pwidth)
{
	if (pwidth == 'fullWidth')
	{
		classSwapper('layoutPanelShade', 'layoutPanelShadefullWidth');
		classSwapper('layoutPanel', 'layoutPanelfullWidth');
		classSwapper('widthControl','widthControlCentered');
		swapHref('widthControl','javascript:setPageWidth(\'centered\')');
	}
	else if (pwidth == 'centered')
	{
		classSwapper('layoutPanelShade', 'layoutPanelShadecentered');
		classSwapper('layoutPanel', 'layoutPanelcentered');	
		classSwapper('widthControl','widthControlfullwidth');
		swapHref('widthControl','javascript:setPageWidth(\'fullWidth\')');
	}
	else
	{
		classSwapper('layoutPanelShade', 'layoutPanelShadefullWidth');
		classSwapper('layoutPanel', 'layoutPanelfullWidth');
		classSwapper('widthControl','widthControlCentered');
		swapHref('widthControl','javascript:setPageWidth(\'centered\')');
	}
	setCookie("pageWidth",pwidth,0);
}

function imageSwapper(elementId,switchToImageName)
{
	if (document.getElementById(elementId) != null)
		document.getElementById(elementId).src = switchToImageName;
}

function swapStyleSheet(elementId,stylsheetHref)
{
	
	if (document.getElementById(elementId) != null)
	{
		var styleSheetElement = document.getElementById(elementId);
		var slashloc = styleSheetElement.href.lastIndexOf('/');
		themeBaseUrl = styleSheetElement.href.substring(0,slashloc + 1);
		if (styleSheetElement.href != themeBaseUrl + stylsheetHref)
		{
			styleSheetElement.href = themeBaseUrl + stylsheetHref;
		}
	}
}

function swapHref(elementId,ref)
{
	if (document.getElementById(elementId) != null)
	{
			var styleSheetElement = document.getElementById(elementId);
			styleSheetElement.href = ref;
	}
}

function textimageSwapper(size,state)
{
	var contextRoot = "PortalWebResource.axd?n=";

	if ((state == "selected") && (size == 'large'))
		imageSwapper('largeTextImage',contextRoot+'/theme/ITU/images/largeSelected.gif');
	else if ((state == "selected") && (size == 'medium'))
		imageSwapper('mediumTextImage',contextRoot+'/theme/ITU/images/mediumSelected.gif');
	else if ((state == "selected") && (size == 'small'))
		imageSwapper('smallTextImage',contextRoot+'/theme/ITU/images/smallSelected.gif');
	else if ((state == "off") && (size == 'large') && !(selectedFontSize == size))
		imageSwapper('largeTextImage',contextRoot+'/theme/ITU/images/largeUnselected.gif');
	else if ((state == "off") && (size == 'medium') && !(selectedFontSize == size))
		imageSwapper('mediumTextImage',contextRoot+'/theme/ITU/images/mediumUnselected.gif');
	else if ((state == "off") && (size == 'small') && !(selectedFontSize == size))
		imageSwapper('smallTextImage',contextRoot+'/theme/ITU/images/smallUnselected.gif');
	else if ((state == "on") && (size == 'large') && !(selectedFontSize == size))
		imageSwapper('largeTextImage',contextRoot+'/theme/ITU/images/largeHover.gif');
	else if ((state == "on") && (size == 'medium') && !(selectedFontSize == size))
		imageSwapper('mediumTextImage',contextRoot+'/theme/ITU/images/mediumHover.gif');
	else if ((state == "on") && (size == 'small') && !(selectedFontSize == size))
		imageSwapper('smallTextImage',contextRoot+'/theme/ITU/images/smallHover.gif');
}

function classSwapper(elementId,switchToClassName)
{
	if (document.getElementById(elementId) != null)
			document.getElementById(elementId).className = switchToClassName;
}

function loadPageWidthFromCookie()
{
	pageWidth = readCookie("pageWidth");
	setPageWidth(pageWidth);
}

function loadFontStyleFromCookie()
{
	selectedFontSize = readCookie("fontSize");
	setFontStyleSheet(selectedFontSize,true);
}
function executeUserScripts()
{
	if(window.onAfterPageLoad)
		setTimeout("onAfterPageLoad()",0);
}

// Another hack until the loading of PFS-Style is kept separate from visual image styling
// How the control is painted should be in the style sheet instead of being JS logic
if (!(typeof YAHOO == "undefined"))
{
	YAHOO.util.Event.onDOMReady(loadFontStyleFromCookie);
	YAHOO.util.Event.onDOMReady(loadPageWidthFromCookie);
	YAHOO.util.Event.onDOMReady(executeUserScripts);
}

function setLeftNavHeight(isPageLoadInitial)
{
	if (!(typeof YAHOO == "undefined"))
	{
	YAHOO.util.Event.onAvailable("pfs_base", function() {
		if (document.body == null) return;
		if ( document.getElementById("pfsMySiteMapText") != null) return;
		if ( document.getElementById("bodyPanel") == null) return;
		if(!isPageLoadInitial)
		{
		// Setting height to auto allows for resizing
		 document.getElementById("whitespaceContainer").style.height="auto";
		 document.getElementById("bodyPanel").style.height="auto";
		}

		var h = Math.max(document.body.scrollHeight - document.getElementById("bodyPanel").offsetTop, YAHOO.util.Dom.get('whitespaceContainer').scrollHeight);
		
		// If using left nav get height if tallest
		if (document.getElementById("leftNavigationContainer") != null) {
			h = Math.max(YAHOO.util.Dom.get('leftNavigationContainer').scrollHeight, h);
		}

		// If using right column get height if tallest
		if (document.getElementById("rightNavigationContainer") != null) {
			h = Math.max(YAHOO.util.Dom.get('rightNavigationContainer').scrollHeight, h);
		}
	
		YAHOO.util.Dom.setStyle('bodyPanel', 'height', h + 'px');
		YAHOO.util.Dom.setStyle('whitespaceContainer', 'height', h + 'px');
	});
	}
}

function enableLeftNavigationResize(fn, args, customObject)  //type <string>, args <array>, customobject <object>
{
	if (!(typeof YAHOO == "undefined"))
	{
		var resize = new YAHOO.util.Resize('leftNavigationContainer', {proxy: true, minWidth: customObject.minWidth, maxWidth: customObject.maxWidth});
		resize.on('resize', function(ev)
		{
			var leftNavWidth = parseInt(YAHOO.util.Dom.getStyle('leftNavigationContainer', 'width'), 10);
			YAHOO.util.Dom.setStyle(YAHOO.util.Dom.get('whitespaceContainer'), 'left', leftNavWidth +'px');
		});
	}
}
function makePrintSafe()
{
	if (!(typeof closeAllMenus == "undefined"))
			closeAllMenus();
	if (!(typeof menuDisplay == "undefined"))
		menuDisplay(getMenuByName('PrimaryNavigationMenu'), 0);
}
function makePrintUnsafe()
{
	if (!(typeof menuDisplay == "undefined"))
		menuDisplay(getMenuByName('PrimaryNavigationMenu'), 1);
}
STA4JS.EventManager.addEvent(window, 'beforeprint', makePrintSafe);
STA4JS.EventManager.addEvent(window, 'afterprint', makePrintUnsafe);

/* Email Page */
function emailPage() 
{
	window.location = "mailto:"+"?subject=Information from Travelers" + "&body=I thought this information might interest you. You can view it here: "+URLEncode(window.location)+".";
}
