function openWin(){ 
catalog = window.open("http://leisurepro.richfx.com/catalog_leisurepro/catalog1/html/index.asp",'catalog'); 
catalog.focus(); 
} 
 
function MM_swapImgRestore() { //v3.0 
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; 
}  

function MM_preloadImages() { //v3.0 
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); 
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) 
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} 
} 
 
function MM_findObj(n, d) { //v4.0 
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { 
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} 
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; 
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); 
  if(!x && document.getElementById) x=document.getElementById(n); return x; 
}  

function MM_swapImage() { //v3.0 

  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) 
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc)  x.oSrc=x.src; x.src=a[i+2];} 
} 
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
function load1(form) { 
     var url = form.Llist_1.options[form.Llist_1.selectedIndex].value; 
     location.href = url 
     return false; 
}  

function updateURL1(prrfnbr) { 
        	document.addFeaturedProduct.url.value = "/webapp/commerce/command/OrderItemList"; 
		document.addFeaturedProduct.product_rn.value = prrfnbr; 
		window.document.addFeaturedProduct.submit(); 
} 
	
function updateURL2(prrfnbr) { 
		document.addFeaturedProduct.action = "/webapp/commerce/command/InterestItemAdd"; 
		document.addFeaturedProduct.product_rn.value = prrfnbr; 
        	document.addFeaturedProduct.url.value = "/webapp/commerce/command/InterestItemDisplay"; 
		window.document.addFeaturedProduct.submit(); 
} 

function MM_changeProp(objName,x,theProp,theValue) { //v6.0
			
			var obj = MM_findObj(objName);
			
			if (obj && (theProp.indexOf("style.")==-1 || obj.style)){
				if (theValue == true || theValue == false)
				eval("obj."+theProp+"="+theValue);
				else eval("obj."+theProp+"='"+theValue+"'");
		}
}
function autojump(fieldName,nextFieldName,fakeMaxLength)
{


var myField=document.getElementById (fieldName);
myField.nextField=document.getElementById (nextFieldName);

if (myField.maxLength == null)
   myField.maxLength=fakeMaxLength;

myField.onkeydown=autojump_keyDown;
myField.onkeyup=autojump_keyUp;

}
function autojump_keyDown()
{
this.beforeLength=this.value.length;
downStrokeField=this;
}

function autojump_keyUp()
{
if (
   (this == downStrokeField) && 
   (this.value.length > this.beforeLength) && 
   (this.value.length >= this.maxLength)
   )
   {
  
   this.nextField.focus();
   this.nextField.select();
   }
downStrokeField=null;
}

/*
Script Name: Javascript Cookie Script
Author: Public Domain, with some modifications
Script Source URI: http://techpatterns.com/downloads/javascript_cookies.php
Version 1.0.0
Last Update: 30 May 2004

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
*/

// this function gets the cookie, if it exists
function Get_Cookie( name ) {
	
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) )
	{
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

/*
only the first 2 parameters are required, the cookie name, the cookie
value. Cookie time is in milliseconds, so the below expires will make the 
number you pass in the Set_Cookie function call the number of days the cookie
lasts, if you want it to be hours or minutes, just get rid of 24 and 60.

Generally you don't need to worry about domain, path or secure for most applications
so unless you need that, leave those parameters blank in the function call.
*/
function Set_Cookie( name, value, expires, path, domain, secure ) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	// if the expires variable is set, make the correct expires time, the
	// current script below will set it for x number of days, to make it
	// for hours, delete * 24, for minutes, delete * 60 * 24
	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	//alert( 'today ' + today.toGMTString() );// this is for testing purpose only
	var expires_date = new Date( today.getTime() + (expires) );
	//alert('expires ' + expires_date.toGMTString());// this is for testing purposes only

	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + //expires.toGMTString()
		( ( path ) ? ";path=" + path : "" ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

// this deletes the cookie when called
function Delete_Cookie( name, path, domain ) {
    //if (Get_Cookie(name)) 
	document.cookie = name + "=" +
			( ( path ) ? ";path=" + path : "") +
			( ( domain ) ? ";domain=" + domain : "" ) +
			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}
function ValidatorEnableOnly(val, enable) 
{

	val.enabled = (enable != false);

}

function MakeProductURL(e, url)
{
/*
	if (url.indexOf("?") > -1)
	{
		inde = url.indexOf("?");
		len = url.length;
		res = url.substring(url, inde);
		e.href = res;
	}
	else
	{
		e.href=url;
	}
*/
	e.href=url;
}

function SetValue(e,value)
{

	e.value=value;

}

// get the object with the specified id
function getObject(id)
{
  if (document.getElementById)
  {
  	return document.getElementById(id);
  }
  else if (document.all)
  {
	return  document.all[id];
  }
  else if (document.layers)
  {
   	return getObjectNN4(document, id);
  }
  else
  {
  	return null;
  }
}
// helper function for getObject
// get object in Netscape 4
function getObjectNN4(obj,name)
{
	var x = obj.layers;
	var foundLayer;
	for (var i=0;i<x.length;i++)
	{
		if (x[i].id == name)
		 	foundLayer = x[i];
		else if (x[i].layers.length)
			var tmp = getObjectNN4(x[i],name);
		if (tmp) foundLayer = tmp;
	}
	return foundLayer;
}
// this replaces getElementsWithTagName
// works in IE4+, NS6+
function getTags(obj, tagName)
{
 
 // we can take in an id string or an object pointer
 // if it's a string, just use getObject on the id
 if (typeof(obj) == 'string') obj = getObject(obj);

 if (obj.getElementsByTagName)
 {

 	return obj.getElementsByTagName(tagName);
 }
 else if (document.all)
 {
	 if (tagName == "*")
	 {
		return obj.all;
	 }
	 else
	 {
 	 // IE4 (and maybe some other browsers) support this method
	 // but tagname must be in uppercase
	 tagName = tagName.toUpperCase();
	 return obj.all.tags(tagName);
	 }
  }
 else
 {
 // we can't get the tags, so we'll return nothing
 return null;
 }
}
// add the CSS class to the object
function addClass(obj, className)
{
 // we can take in an id string or an object pointer
 // if it's a string, just use getObject on the id
 if (typeof(obj) == 'string') obj = getObject(obj);

	if (!hasClass(obj, className))
	{
		if (obj.className == null || obj.className == "")
		{
			obj.className = className;
		}
		else
		{
			// append this to the list of existing classes
			obj.className = obj.className + " " + className;
		}
	}
}

// remove the CSS class (if it exists)
function removeClass(obj, className)
{
 // we can take in an id string or an object pointer
 // if it's a string, just use getObject on the id
 if (typeof(obj) == 'string') obj = getObject(obj);

	var classes = obj.className.split(" ");
	var newClasses = new Array();
	
	for (var i = 0; i < classes.length; i++)
	{
		if (classes[i]	!= className)
		{
			newClasses[newClasses.length] = classes[i];
		}
	}
	
	var newClassString = newClasses.join(" ");
	obj.className = newClassString; 
}

// toggle the CSS class
// if it's not there, add it
// if it is, remove it
function toggleClass(obj, className)
{
	if (hasClass(obj, className))
	{
		removeClass(obj, className);
	}
	else
	{
		addClass(obj, className);
	}
}

// Returns the horizontal center coordinate. This is just the left scroll offset + browser width/2.
function getCenterX()
{
	return ((getScrollLeft() + getScreenWidth())/2);
}

//  Returns the vertical center coordinate. This is just the top scroll offset + browser height/2.
function getCenterY()
{
	return ((getScrollTop() + getScreenHeight())/2);
}

// will this object fit in the document horizontally?
function fitHorizontal(obj, xpos)
{
	return (xpos + getWidth(obj) <= getScreenWidth() + getScrollLeft() && xpos - getScrollLeft() >= 0);
}

function fitVertical(obj, ypos)
{
	return (ypos + getHeight(obj) <= getScreenHeight() + getScrollTop() && ypos - getScrollTop() >= 0);
}

// cribbed from quirksmode.org
// ms browsers (surprise!) have some quirks here
// find the horizontal offset
function findPosX(obj)
{
        var curleft = 0;
        if (obj.offsetParent)
        {
                while (obj.offsetParent)
                {
                        curleft += obj.offsetLeft
                        obj = obj.offsetParent;
                }
        }
        else if (obj.x)
                curleft += obj.x;
        return curleft;
}

// find the vertical offset
function findPosY(obj)
{
        var curtop = 0;
        if (obj.offsetParent)
        {
                while (obj.offsetParent)
                {
                        curtop += obj.offsetTop
                        obj = obj.offsetParent;
                }
        }
        else if (obj.y)
                curtop += obj.y;
        return curtop;
}

// end screen functions
//---------------------------------------------------------------------------------------------------------
// resize object (stretch) functions

function stretchWidth(obj, offset)
{
	if (typeof(obj) == 'string') obj = getObject(obj);
	var w = getScreenWidth();
	obj.style.width = (w - offset) + "px";
}

function stretchHeight(obj, offset)
{
	if (typeof(obj) == 'string') obj = getObject(obj);
	var h = getScreenHeight();
	obj.style.height = (h - offset) + "px";
}
	
// end resize object (stretch) functions
//-------
// get the document / body width
function getBodyWidth() {
	var x,y;
	
	if (document.getElementsByTagName) {
		var bd = document.getElementsByTagName("body").item(0);
		x = getWidth(bd);
	}	
	return x;
}

function getBodyHeight() {
	var x,y;
	
	if (document.getElementsByTagName) {
		var bd = document.getElementsByTagName("body").item(0);
		y = getHeight(bd);
	}	
	return y;
}
// get the browser width
function getScreenWidth()
{
	var x,y;
	if (self.innerHeight) // all except Explorer
	{
			x = self.innerWidth;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
			// Explorer 6 Strict Mode
	{
			x = document.documentElement.clientWidth;
	}
	else if (document.body) // other Explorers
	{
			x = document.body.clientWidth;
	}
	return x;
}

// get the browser height
function getScreenHeight()
{
	var x,y;
	if (self.innerHeight) // all except Explorer
	{
			y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
			// Explorer 6 Strict Mode
	{
			y = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
			y = document.body.clientHeight;
	}
	return y;
}
// this is a more compatible version of element.childNodes
// works in IE4+, NS6+
// moz/opera count whitespace nodes, but IE does not
function getChildren(obj)
{
 // we can take in an id string or an object pointer
 // if it's a string, just use getObject on the id
 if (typeof(obj) == 'string') obj = getObject(obj);
 
 if (obj.childNodes)
 {
 	// for non IE browsers, we need to clean out the whitespace nodes
	// for consistency
	var nonWhitespace = new Array();
	
	for (var i = 0; i < obj.childNodes.length; i++)
	{
		if (obj.childNodes[i].tagName != null && obj.childNodes[i].tagName != "!")
		{
			nonWhitespace[nonWhitespace.length] = obj.childNodes[i];
		}
	}
	return nonWhitespace;
 }
 else if (obj.children)
 {	
	var nonWhitespace = new Array();
	
	// don't include comment tags (tags that have a tagName of !)
	for (var i = 0; i < obj.children.length; i++)
	{
		if (obj.children[i].tagName != "!")
		{
			nonWhitespace[nonWhitespace.length] = obj.children[i];
		}
	}
 	return nonWhitespace;
 }
 else if (obj.layers)
 {
 	return obj.layers;
 }
 else
 {
	 // we can't get the tags, so we'll return nothing
	 return null;
 }
}
// get the height of an element
function getHeight(obj)
{
	if (typeof(obj) == 'string') obj = getObject(obj);
		
	return obj.offsetHeight;
	
}

// get the width
function getWidth(obj)
{
	if (typeof(obj) == 'string') obj = getObject(obj);
		
	return obj.offsetWidth;
}
// show an element
// unless you specify a display type, the default of "block" is used
function show(obj, displayType)
{
 // we can take in an id string or an object pointer
 // if it's a string, just use getObject on the id
 if (typeof(obj) == 'string') obj = getObject(obj);

	if (document.layers)
	{
		obj.visibility  = "show";
		if (displayType != null)
		{
			obj.display = displayType;
		}
		else
		{
			obj.display = "block";
		}
	}
	else if (obj.style)
	{
		obj.style.visibility  = "visible";
		if (displayType != null)
		{
			obj.style.display = displayType;
		}
		else
		{
			obj.style.display = "block";
		}
	}
	else
	{
		return false;
	}
}
// hide all objects in a container
// then show the other one
function showOnly(obj)
{
	if (typeof(obj) == "string") obj = getObject(obj);
	show(obj);
	
	var container = getParent(obj);	
	var children = getChildren(container);
	
	for (var i = 0; i < children.length; i++)
	{
		if (children[i] != obj)
		{
			hideDisplayNone(children[i]);
			//hide(children[i]);
		}
	}
}
// set the style for an object
function setStyle(obj, styleTag, value)
{
 // we can take in an id string or an object pointer
 // if it's a string, just use getObject on the id
 if (typeof(obj) == 'string') obj = getObject(obj);
 
 // get the style object
 var style;
  if (document.getElementById)
  {
  	style = obj.style;
  }
  else if (document.all)
  {
	style = obj.style;
  }
  else if (document.layers)
  {
   	style = obj;
  } 
  else
  {
  	// we can't get the style, so return
  	return false;
  }
  
  // now, set the style
  style[styleTag] = value;
}
// generic popup function -- opens new browser window

function popup(alink, popup_width, popup_height, scrollbars, toolbars, resize) {
		var url = alink.href;
		var name = alink.target;
		
		// by default
		// scrollbars = no
		// toolbars = no
		// resize = no

		//set parameters -- the value 1 = yes; 0 = no
		var popup_window = window.open(url,name,"toolbar="+toolbars+",directories="+toolbars+",status="+toolbars+",menubar="+toolbars+",location="+toolbars+",scrollbars="+scrollbars+",resizable="+resize+",width="+popup_width+",height="+popup_height);
		popup_window.focus();
}

// hide an object
// note that objects set display: none are inaccessible
// in the NN4.x DOM. If this matters, use hide instead
function hideDisplayNone(obj)
{
 // we can take in an id string or an object pointer
 // if it's a string, just use getObject on the id
 if (typeof(obj) == 'string') obj = getObject(obj);

	if (document.layers)
	{
		obj.visibility  = "hidden";
		obj.display = "none";
	}
	else if (obj.style)
	{
		obj.style.visibility  = "hidden";
		obj.style.display = "none";
	}
	else
	{
		return false;
	}
}

// hide the object by setting visibility: hidden
// objects hidden with this function will remain in
// the document flow
function hide(obj)
{
 // we can take in an id string or an object pointer
 // if it's a string, just use getObject on the id
 if (typeof(obj) == 'string') obj = getObject(obj);
 
	if (document.layers)
	{
		obj.visibility  = "hidden";
	}
	else if (obj.style)
	{
		obj.style.visibility  = "hidden";
	}
	else
	{
		return false;
	}
}
// CSS class functions

function hasAnyClass(obj) {
	var result = false;
	if (obj.getAttributeNode("class") != null) {
		result = obj.getAttributeNode("class").value;
	}
	return result;
}

// returns true if the object has the specified class
function hasClass(obj, className)
{
 // we can take in an id string or an object pointer
 // if it's a string, just use getObject on the id
 if (typeof(obj) == 'string') obj = getObject(obj);

	if (obj.className)
	{
		var classes = obj.className.split(" ");
		for (var i = 0; i < classes.length; i++)
		{
			if (classes[i]	== className)
			{
				return true;
			}
		}
	
		return false;
	}
	else
	{
		return false;
	}
}
// get the vertical scroll
function getScrollTop()
{
   var scrollTop = 0;
   if (self.pageYOffset) {
      scrollTop = self.pageYOffset;
   }
   else if (document.documentElement && document.documentElement.scrollTop) {
      scrollTop = document.documentElement.scrollTop;
   }
   else if (document.body) {
      scrollTop = document.body.scrollTop;
   }
   return scrollTop;
}

// get the horizontal scroll
function getScrollLeft()
{
   var scrollLeft = 0;
   if (self.pageXOffset) {
      scrollLeft = self.pageXOffset;
   }
   else if (document.documentElement && document.documentElement.scrollLeft) {
      scrollLeft = document.body.scrollLeft;
   }
   else if (document.body) {
      scrollLeft = document.body.scrollLeft;
   }
   return scrollLeft;
}


// return the object's parent
// this does not work in NS 4.x
function getParent(obj)
{
 // we can take in an id string or an object pointer
 // if it's a string, just use getObject on the id
 if (typeof(obj) == 'string') obj = getObject(obj);

	if (obj.parentNode)
	{
		return obj.parentNode;
	}
	else if (obj.parentElement)
	{
		return obj.parentElement;
	}
	else if (obj.parentLayer)
	{
		return obj.parentLayer;
	}
	else
	{
		// we can't get the parent, so return null
		return null;
	}
}

   function sleep(naptime, scriptToEval){
      naptime = naptime * 1000;
      var sleeping = true;
      var now = new Date();
      var alarm;
      var startingMSeconds = now.getTime();

      while(sleeping){
         alarm = new Date();
         alarmMSeconds = alarm.getTime();
         if(alarmMSeconds - startingMSeconds > naptime){ sleeping = false; }
      }
      eval(scriptToEval);
}

//using maxlen and not maxlength, because asp.net runtime filters out this attribute from textBoxes that are TextMode=MultiLine
function ismaxlength(obj){
	var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlen")) : ""
	if (obj.getAttribute && obj.value.length>mlength)
	obj.value=obj.value.substring(0,mlength)
}

function getTimezoneName() {
    tmSummer = new Date(Date.UTC(2005, 6, 30, 0, 0, 0, 0));
    so = -1 * tmSummer.getTimezoneOffset();
    tmWinter = new Date(Date.UTC(2005, 12, 30, 0, 0, 0, 0));
    wo = -1 * tmWinter.getTimezoneOffset();

    if (-660 == so && -660 == wo) return 'Pacific/Midway';
    if (-600 == so && -600 == wo) return 'Pacific/Tahiti';
    if (-570 == so && -570 == wo) return 'Pacific/Marquesas';
    if (-540 == so && -600 == wo) return 'America/Adak';
    if (-540 == so && -540 == wo) return 'Pacific/Gambier';
    if (-480 == so && -540 == wo) return 'US/Alaska';
    if (-480 == so && -480 == wo) return 'Pacific/Pitcairn';
    if (-420 == so && -480 == wo) return 'US/Pacific';
    if (-420 == so && -420 == wo) return 'US/Arizona';
    if (-360 == so && -420 == wo) return 'US/Mountain';
    if (-360 == so && -360 == wo) return 'America/Guatemala';
    if (-360 == so && -300 == wo) return 'Pacific/Easter';
    if (-300 == so && -360 == wo) return 'US/Central';
    if (-300 == so && -300 == wo) return 'America/Bogota';
    if (-240 == so && -300 == wo) return 'US/Eastern';
    if (-240 == so && -240 == wo) return 'America/Caracas';
    if (-240 == so && -180 == wo) return 'America/Santiago';
    if (-180 == so && -240 == wo) return 'Canada/Atlantic';
    if (-180 == so && -180 == wo) return 'America/Montevideo';
    if (-180 == so && -120 == wo) return 'America/Sao_Paulo';
    if (-150 == so && -210 == wo) return 'America/St_Johns';
    if (-120 == so && -180 == wo) return 'America/Godthab';
    if (-120 == so && -120 == wo) return 'America/Noronha';
    if (-60 == so && -60 == wo) return 'Atlantic/Cape_Verde';
    if (0 == so && -60 == wo) return 'Atlantic/Azores';
    if (0 == so && 0 == wo) return 'Africa/Casablanca';
    if (60 == so && 0 == wo) return 'Europe/London';
    if (60 == so && 60 == wo) return 'Africa/Algiers';
    if (60 == so && 120 == wo) return 'Africa/Windhoek';
    if (120 == so && 60 == wo) return 'Europe/Amsterdam';
    if (120 == so && 120 == wo) return 'Africa/Harare';
    if (180 == so && 120 == wo) return 'Europe/Athens';
    if (180 == so && 180 == wo) return 'Africa/Nairobi';
    if (240 == so && 180 == wo) return 'Europe/Moscow';
    if (240 == so && 240 == wo) return 'Asia/Dubai';
    if (270 == so && 210 == wo) return 'Asia/Tehran';
    if (270 == so && 270 == wo) return 'Asia/Kabul';
    if (300 == so && 240 == wo) return 'Asia/Baku';
    if (300 == so && 300 == wo) return 'Asia/Karachi';
    if (330 == so && 330 == wo) return 'Asia/Calcutta';
    if (345 == so && 345 == wo) return 'Asia/Katmandu';
    if (360 == so && 300 == wo) return 'Asia/Yekaterinburg';
    if (360 == so && 360 == wo) return 'Asia/Colombo';
    if (390 == so && 390 == wo) return 'Asia/Rangoon';
    if (420 == so && 360 == wo) return 'Asia/Almaty';
    if (420 == so && 420 == wo) return 'Asia/Bangkok';
    if (480 == so && 420 == wo) return 'Asia/Krasnoyarsk';
    if (480 == so && 480 == wo) return 'Australia/Perth';
    if (540 == so && 480 == wo) return 'Asia/Irkutsk';
    if (540 == so && 540 == wo) return 'Asia/Tokyo';
    if (570 == so && 570 == wo) return 'Australia/Darwin';
    if (570 == so && 630 == wo) return 'Australia/Adelaide';
    if (600 == so && 540 == wo) return 'Asia/Yakutsk';
    if (600 == so && 600 == wo) return 'Australia/Brisbane';
    if (600 == so && 660 == wo) return 'Australia/Sydney';
    if (630 == so && 660 == wo) return 'Australia/Lord_Howe';
    if (660 == so && 600 == wo) return 'Asia/Vladivostok';
    if (660 == so && 660 == wo) return 'Pacific/Guadalcanal';
    if (690 == so && 690 == wo) return 'Pacific/Norfolk';
    if (720 == so && 660 == wo) return 'Asia/Magadan';
    if (720 == so && 720 == wo) return 'Pacific/Fiji';
    if (720 == so && 780 == wo) return 'Pacific/Auckland';
    if (765 == so && 825 == wo) return 'Pacific/Chatham';
    if (780 == so && 780 == wo) return 'Pacific/Enderbury'
    if (840 == so && 840 == wo) return 'Pacific/Kiritimati';
    return 'US/Pacific';
}
