/*
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)
{
	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);
		
		setLeftNavHeight();
	}
}

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/TCOM/images/largeSelected.gif');
	else if ((state == "selected") && (size == 'medium'))
		imageSwapper('mediumTextImage',contextRoot+'/theme/TCOM/images/mediumSelected.gif');
	else if ((state == "selected") && (size == 'small'))
		imageSwapper('smallTextImage',contextRoot+'/theme/TCOM/images/smallSelected.gif');
	else if ((state == "off") && (size == 'large') && !(selectedFontSize == size))
		imageSwapper('largeTextImage',contextRoot+'/theme/TCOM/images/largeUnselected.gif');
	else if ((state == "off") && (size == 'medium') && !(selectedFontSize == size))
		imageSwapper('mediumTextImage',contextRoot+'/theme/TCOM/images/mediumUnselected.gif');
	else if ((state == "off") && (size == 'small') && !(selectedFontSize == size))
		imageSwapper('smallTextImage',contextRoot+'/theme/TCOM/images/smallUnselected.gif');
	else if ((state == "on") && (size == 'large') && !(selectedFontSize == size))
		imageSwapper('largeTextImage',contextRoot+'/theme/TCOM/images/largeHover.gif');
	else if ((state == "on") && (size == 'medium') && !(selectedFontSize == size))
		imageSwapper('mediumTextImage',contextRoot+'/theme/TCOM/images/mediumHover.gif');
	else if ((state == "on") && (size == 'small') && !(selectedFontSize == size))
		imageSwapper('smallTextImage',contextRoot+'/theme/TCOM/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);
}
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(arrangePrimaryMenu);
	YAHOO.util.Event.onDOMReady(arrangeSecondaryMenu);
	YAHOO.util.Event.onDOMReady(loadFontStyleFromCookie);
	YAHOO.util.Event.onDOMReady(loadPageWidthFromCookie);
	YAHOO.util.Event.onDOMReady(executeUserScripts);
}

function arrangePrimaryMenu()
{
	var primaryMenu = document.getElementById('primaryMenu');
	var primaryMenuContainer = document.getElementById('primaryMenuContainer');
	var subMenuContainer = document.getElementById('primarySubMenuContainer');
	primaryMenuContainer.appendChild(primaryMenu);
	subMenuContainer.removeChild(primaryMenu);
}

function arrangeSecondaryMenu()
{
	var secondaryMenu = document.getElementById('secondaryMenu');
	var secondaryMenuContainer = document.getElementById('secondaryMenuContainer');
	var subMenuContainer = document.getElementById('secondarySubMenuContainer');
	secondaryMenuContainer.appendChild(secondaryMenu);
	subMenuContainer.removeChild(secondaryMenu);
}

function setLeftNavHeight()
{
	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;
		
		// 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)+".";
}

var MENU_DELAY = 1000;
function getDropDownDiv(nestedLevel)
{
	var divObjNm = "DropDownLvl_" + nestedLevel;
	var dropDownDiv = YAHOO.util.Dom.get(divObjNm);
	if (dropDownDiv == null)
	{
		var html = "<div id='"+divObjNm+"' class='subMenu'></div>";
		var parentDiv = document.createElement("div");
		parentDiv.innerHTML = html;
		document.getElementsByTagName("body")[0].appendChild(parentDiv);
		dropDownDiv = YAHOO.util.Dom.get(divObjNm);
		dropDownDiv.nestedLevel = nestedLevel;
		dropDownDiv.timer = null;
		STA4JS.EventManager.addEvent(dropDownDiv, 'mouseover', onEventMouseover );
		STA4JS.EventManager.addEvent(dropDownDiv, 'mousemove', onEventMouseover );
		STA4JS.EventManager.addEvent(dropDownDiv, 'mouseout', onEventMouseout);
		if(nestedLevel == 1)
		{
			dropDownDiv.childExists = true; 
			dropDownDiv.childId = "DropDownLvl_2";
		}
		else if(nestedLevel == 2)
		{
			dropDownDiv.style.zIndex = 10;
			dropDownDiv.isChildElement = true;
			dropDownDiv.parentId = 	"DropDownLvl_1"	;
		}
	}
	return dropDownDiv;
}

function onEventMouseover()
{
	menuOver(this);
}

function onEventMouseout()
{
	menuOut(this.id);
}

function isMenuOpen(divObj)
{
	if(divObj != null && divObj.style.visibility == 'visible')
	{
		return true;
	}
	return false;
}

function isChildMenuOpen(divObj)
{
	if (divObj.childExists)
	{
		var childDiv = YAHOO.util.Dom.get(divObj.childId);
		return isMenuOpen(childDiv);
	}
	return false;
}

function menuOver(divObj)
{
	if(isMenuOpen(divObj) == false )
	{ // If menu is not already open
		divObj.style.visibility = 'visible';
		divObj.style.display = 'block';
	}
	stayOpen(divObj);
}

function menuOut(divId)
{
	var fn = 'hideNow("'+divId+'");';
	var divObj = YAHOO.util.Dom.get(divId);
	divObj.timer = setTimeout(fn,MENU_DELAY);
}

function stayOpen(divObj)
{
	clearTimeout(divObj.timer);
}

function hideNow(divId)
{
	var divObj = YAHOO.util.Dom.get(divId);
	if (isChildMenuOpen(divObj))
	{
		menuOver(divObj);
		return;
	}
	if(divObj.isChildElement)
	{
		var parenDiv = YAHOO.util.Dom.get(divObj.parentId);
		if(isMenuOpen(parenDiv))
		{
			divObj.style.visibility = 'hidden';
			if(!parenDiv.RemainOpen)
			{
				parenDiv.timer = setTimeout('hideNow("'+parenDiv.id+'");',(MENU_DELAY));
				parenDiv.RemainOpen = false;
			}
		}
	}
	else
	{
		showSelectBoxes();
	}
	divObj.style.visibility = 'hidden';
	if(divObj.isChildElement)
	{
		var parenDiv = YAHOO.util.Dom.get(divObj.parentId);
		var menuElmnt = GetLiMenuElement(parenDiv, divObj.parentMenuId)
		HighlightMenuElement('off',menuElmnt, 2);
	}
	else
	{
		var mainMenuElmnt = YAHOO.util.Dom.get(divObj.parentMenuId);
		HighlightPrimaryMenuElmnt('off', mainMenuElmnt);
	}	
}

function GetLiMenuElement(dropDownDiv, liId)
{
	var menuElmnt = null;
	var menuElmnts = dropDownDiv.getElementsByTagName('li');
	for(var i=0; i<menuElmnts.length; i++)
	{
		if(menuElmnts[i].id == liId)
		{
			menuElmnt = menuElmnts[i];
			break;
		}
	}
	return menuElmnt;
}

function showDropDown(divId, parentId, nestedLevel)
{
	var dropDownDiv = getDropDownDiv(nestedLevel);
	if(divId.indexOf("PFS_MENU1") != -1)	
	{ // Primary Menu
		dropDownDiv.className = "subMenu";
		dropDownDiv.parentMenuId = parentId;
		HighlightElement(parentId, nestedLevel);
	}
	else if(divId.indexOf("PFS_MENU2") != -1)
	{	//SecondaryMenu
		dropDownDiv.className = "secSubMenu";
		HighlightPrimaryMenuElmnt('off', null);
	}
	var oDiv = YAHOO.util.Dom.get(divId);
	dropDownDiv.innerHTML = oDiv.innerHTML;
	positionDropDown(parentId,dropDownDiv.id,nestedLevel);
	if (isChildMenuOpen(dropDownDiv))
	{
		var childDiv = YAHOO.util.Dom.get(dropDownDiv.childId);
		childDiv.style.visibility = 'hidden';
		clearTimeout(childDiv.timer);
	}
	hideSelectBoxes(dropDownDiv);
	menuOver(dropDownDiv);
}

function hideSelectBoxes(dropDownDiv)
{
	var selectBoxes = document.getElementsByTagName('select');
	var menuBottom = dropDownDiv.offsetTop + dropDownDiv.offsetHeight;
	var menuRight = dropDownDiv.offsetLeft + dropDownDiv.offsetWidth;
	var menuLeft = dropDownDiv.offsetLeft;
	var parentMenuBottom = 0;
	var parentMenuRight = 0;
	var parentMenuLeft = 0;
	if(dropDownDiv.isChildElement)
	{
		var parentDiv = YAHOO.util.Dom.get(dropDownDiv.parentId);
		parentMenuBottom = parentDiv.offsetTop + parentDiv.offsetHeight;
		parentMenuRight = parentDiv.offsetLeft + parentDiv.offsetWidth;
		parentMenuLeft =  parentDiv.offsetLeft;
	}
	for(var i=0;i<selectBoxes.length;i++)
	{
		var selectTop = getFinalOffsetTop(selectBoxes[i]);
		var selectLeft = getFinalOffsetLeft(selectBoxes[i]);
		var selectWidth = selectBoxes[i].offsetWidth;
		var selectHeight = selectBoxes[i].offsetHeight;
		if (selectTop < menuBottom && selectLeft < menuRight && (selectLeft + selectWidth) > menuLeft )
		{
			selectBoxes[i].style.visibility = 'hidden';
		}
		else if(dropDownDiv.isChildElement)
		{
			if (selectTop < parentMenuBottom && selectLeft < parentMenuRight && (selectLeft + selectWidth) > parentMenuLeft )
			{
				selectBoxes[i].style.visibility = 'hidden';
			}
			else if(selectBoxes[i].style.visibility == 'hidden')
			{
				selectBoxes[i].style.visibility = 'visible';
			}			
		}
		else if(selectBoxes[i].style.visibility == 'hidden')
		{
			selectBoxes[i].style.visibility = 'visible';
		}
	}
}

function showSelectBoxes()
{
	var selectBoxes = document.getElementsByTagName('select');
	for(var i=0;i<selectBoxes.length;i++)
	{
		if(selectBoxes[i].style.visibility == 'hidden')
		{
			selectBoxes[i].style.visibility = 'visible';
		}
	}
}

function getFinalOffsetTop(element)  {
	var offsetTrail = element;
	var offsetTop = 0;
	while (offsetTrail) {
			offsetTop += offsetTrail.offsetTop;
			offsetTrail = offsetTrail.offsetParent;
		}
	return offsetTop;
}

function getFinalOffsetLeft(element)  {
	var offsetTrail = element;
	var offsetLeft = 0;
	while (offsetTrail)
	{
		offsetLeft += offsetTrail.offsetLeft;
		offsetTrail = offsetTrail.offsetParent;
	}
	return offsetLeft;
}

function hideDropDown(nestedLevel)
{
	var dropDownDiv = getDropDownDiv(nestedLevel);
	menuOut(dropDownDiv.id);
}

function positionDropDown(source, target,nestedLevel)
{
	if(nestedLevel == 1)
	{
		var pos = YAHOO.util.Dom.getXY(source);
		var top = YAHOO.util.Dom.getStyle(source, 'top');
		var offsetHeight = YAHOO.util.Dom.get(source).offsetHeight;
		var leftDiff = 0;
		var topDiff = 0;
		if (PFS_IsIE())
		{
			leftDiff = 2;
			topDiff = 2
		}
		var left = pos[0] - leftDiff;
		// -1 to make the borders overlapping		
		top = (pos[1] + offsetHeight - topDiff - 1)+'px';
		YAHOO.util.Dom.setStyle([target], 'left', left);
		YAHOO.util.Dom.setStyle([target], 'top', top); 
	}
	else if(nestedLevel == 2) 
	{
		var parentDiv = getDropDownDiv(1);
		var pos = YAHOO.util.Dom.getXY(parentDiv.id);
		var offsetWidth = YAHOO.util.Dom.get(parentDiv.id).offsetWidth;
		var left = pos[0];
		var top = pos[1];
		var leftDiff = 0;
		var topDiff = 0;
		if (PFS_IsIE())
		{
			leftDiff = 2;
			topDiff = 2;
		}
		var li = GetLiMenuElement(parentDiv, source);
		if(li.offsetHeight != 0)
		{
			var liPos = YAHOO.util.Dom.getXY(li);
			menuHeight = li.offsetHeight;
			offsetWidth = li.offsetWidth;
			left = liPos[0];
			top = liPos[1];
		}
		left = (left - leftDiff + offsetWidth) + 'px';
		top = ( top - topDiff) + 'px';
		YAHOO.util.Dom.setStyle([target], 'left', left);
		YAHOO.util.Dom.setStyle([target], 'top', top); 
	}
}

function PFS_IsIE()
{
	 var agt = navigator.userAgent.toLowerCase();
	 if (agt.indexOf("msie") != -1)
		return true;
	else
		return false;
}

function MouseOverMenuElement(obj, nestedLevel, parentDivId)
{
	var parentDiv = getDropDownDiv(1);
	parentDiv.RemainOpen = false;
	if (nestedLevel == 2)
		parentDiv.RemainOpen = true;
	if(parentDivId.indexOf("PFS_MENU1") != -1) //Primary Menu
		HighlightMenuElement('on', obj, nestedLevel);
	else if(parentDivId.indexOf("PFS_MENU2") != -1) //Secondary Menu
		ToggleMenuElementClass('on', obj);
}

function MouseOutMenuElement(obj, nestedLevel, parentDivId)
{
	if(parentDivId.indexOf("PFS_MENU1") != -1) //Primary Menu
		HighlightMenuElement('off', obj, nestedLevel);
	else if(parentDivId.indexOf("PFS_MENU2") != -1)
		ToggleMenuElementClass('off', obj);
}

function HighlightElement(parentId, nestedLevel)
{
	
	if(nestedLevel == 1)
	{
		var mainMenuElmnt = YAHOO.util.Dom.get(parentId);
		HighlightPrimaryMenuElmnt('on', mainMenuElmnt);
	}
	else if(nestedLevel == 2)
	{	
		var firstLvlDiv = getDropDownDiv(1);
		var menuElmnt = GetLiMenuElement(firstLvlDiv, parentId);
		HighlightMenuElement('on',menuElmnt, nestedLevel);
	}
}

function HighlightMenuElement(state, obj, nestedLevel)
{
	var divMenu = getDropDownDiv(nestedLevel - 1);
	if (state == "on")
	{	
		if (divMenu.HighLightedElmnt != null)
		{
			var highLightedElmnt = divMenu.HighLightedElmnt;
			ToggleMenuElementClass('off', highLightedElmnt);
		}
	}
	ToggleMenuElementClass(state, obj);
	divMenu.HighLightedElmnt = obj;
}

function ToggleMenuElementClass(state, obj)
{
	if (state == 'on')
	{
		SwapCssClassForElmnt(obj, 'arrowBgOff', 'arrowBgOn');
		SwapCssClassForElmnt(obj, 'subMenuOff', 'subMenuOn');
	}
	else
	{
		SwapCssClassForElmnt(obj, 'arrowBgOn', 'arrowBgOff');
		SwapCssClassForElmnt(obj, 'subMenuOn', 'subMenuOff');
		
	}	
}

function HighlightPrimaryMenuElmnt(state, obj)
{
	var firstLvlDropDown = getDropDownDiv(1);
	if (firstLvlDropDown.PrimaryElmnt != null)
	{
		var highLightedElement = firstLvlDropDown.PrimaryElmnt;
		highLightedElement.className = highLightedElement.OriginalCssClass;
	}
	if (state == "on")
	{
		obj.OriginalCssClass = obj.className;
		obj.className = "primaryMenuElementOn";
		firstLvlDropDown.PrimaryElmnt = obj;		
	}
	else
	{
		firstLvlDropDown.PrimaryElmnt = null;
	}
}

function SwapCssClassForElmnt(obj,origClass,newClass)
{
	if (obj.className == origClass)
	{
		obj.className = newClass;
	}
}