sfHover = function() {
	var oNav = document.getElementById("nav");
	if (oNav != null) {
		var sfEls = oNav.getElementsByTagName("LI");
		if (null != sfEls)
			for (var i=0; i<sfEls.length; i++) {
				sfEls[i].onmouseover=function() {
					this.className+=" sfhover";
				}
				sfEls[i].onmouseout=function() {
					this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
				}
			}	
	}
}

if (window.attachEvent) window.attachEvent("onload", sfHover);

function show() {   
	which = document.getElementById("small");
	which2 = document.getElementById("big");
	which.style.display = 'none';
	which2.style.display = 'block';
}

function hide() {   
	which = document.getElementById("small");
	which2 = document.getElementById("big");
	which.style.display = 'block';
	which2.style.display = 'none';
}

function hideMetaFields(aLink) {
	var oEl = $("metaFields");
	oEl.style.display = (oEl.style.display == "") ? "none" : "";			
	aLink.innerText = (oEl.style.display == "") ? "Hide" : "Show";
	return false;
}
	
function tagPopups() {
	if (!document.getElementsByTagName) return false;

	var links=document.getElementsByTagName("a");
	for (var i=0; i < links.length; i++) {
		if (links[i].className.match("popup")) {

			links[i].onclick=function(event) {

				if (null != event) {
					event.target.href = event.target.href.replace("%26", "&");
				}

				var anchor = (null != event) ? event.target : window.event.srcElement;
				
				if (anchor.tagName != 'A') {						// access the anchor around this element tag.
					anchor = anchor.parentElement;
				}

				if (anchor.href.indexOf('&features') == -1 && anchor.href.indexOf('?features') == -1) {
					window.open(anchor.href, "", "top=40,left=40,width=600,height=600");
				}
				else {
					var fIndex = anchor.href.indexOf('&features');
					if (fIndex == -1)
						fIndex = anchor.href.indexOf('?features');
						
					var url = anchor.href.substring(0, fIndex );
					
					var params = anchor.href.substr(anchor.href.indexOf('top=', anchor.href.indexOf('?features')));
					window.open(url, "", params);
				}
			    return false;
			}
		}
		else if (links[i].className.match("back")) {
			links[i].onclick=function() {
				history.go(-1);
				return false;
			}
		}
	}
}

function tagTermsAndConditions() {
	if (!document.getElementsByTagName) return false; 
	var links = document.getElementsByTagName("span");
	for (var i=0 ; i<links.length ; i++) {
		if (links[i].className.match("hide")) {
			links[i].onmouseover=function() {
				which = document.getElementById("small");
				which2 = document.getElementById("big");
				which.style.display = 'none';
				which2.style.display = 'block';
			}
		}
		else if (links[i].className.match("show")) {
			links[i].onmouseout=function() {
				which = document.getElementById("small");
				which2 = document.getElementById("big");
				which.style.display = 'block';
				which2.style.display = 'none';
			}
		}
	}
}

function onMasterLoad() {
	toggleLayer('zipBox');
	tagPopups();
	tagTermsAndConditions();
	
	var cookieName = "CookieName";		
	var cookie = getCookie(cookieName);

	if (null == cookie || cookie.indexOf("Lang_Code") < 0)
		cookie = "Business=&Lang_Code=&Region=";
		
	var expr = new Date();
	expr.setTime(expr.getTime() + 30 * 24 * 60 * 60 * 1000);

	var lang = getLangFromUrl();
	if (lang.length > 0)
		cookie = setValueInCookie(cookie, "Lang_Code", lang);

	var type = getTypeFromUrl();
	cookie = setValueInCookie(cookie, "Business", type);

	var region = getRegionFromUrl();
	cookie = setValueInCookie(cookie, "Region", region);

	setCookie(cookieName, cookie, expr, "/");
}

function toggleLayer(whichLayer)
{
	if (document.getElementById) {
		// this is the way the standards work
		if (document.getElementById(whichLayer) == null) 
			return;
		
		var style2 = document.getElementById(whichLayer).style;
		style2.display = style2.display? "":"block";
	} else if (document.all) {
		if (document.all[whichLayer] == null)
			return;
	
		// this is the way old msie versions work
		var style2 = document.all[whichLayer].style;
		style2.display = style2.display? "":"block";
	} else if (document.layers) {
		if (document.layers[whichLayer] == null)
			return;
			
		// this is the way nn4 works
		var style2 = document.layers[whichLayer].style;
		style2.display = style2.display? "":"block";
	}
}

function toggleOnOff(toggleOn,toggleOff) {
	//toggleOn
	toggleLayer(toggleOn);
	if (document.getElementById) {
		// this is the way the standards work
		var style2 = document.getElementById(toggleOff).style;
		style2.display = "";

		var styleLinkOffName=toggleOff+"Link";
		var styleLinkOffElem = document.getElementById(styleLinkOffName);
		if(styleLinkOffElem != 'undefined' && styleLinkOffElem != null)
		{
            var styleLinkOff=styleLinkOffElem.style;
            styleLinkOff.display = "none";
        }
        
        var styleLinkOnName=toggleOn+"Link";
		var styleLinkOnElem = document.getElementById(styleLinkOnName);
		if(styleLinkOnElem != 'undefined' && styleLinkOnElem != null)
		{
            var styleLinkOn=styleLinkOnElem.style;
            styleLinkOn.display = "block";
        }
	} else if (document.all) {
		// this is the way old msie versions work
		var style2 = document.all[toggleOff].style;
		style2.display = "";
		
		var styleLinkOffName=toggleOff+"Link";
		var styleLinkOffElem = document.all[styleLinkOffName];
		if(styleLinkOffElem != 'undefined' && styleLinkOffElem != null)
		{
            var styleLinkOff=styleLinkOffElem.style;
            styleLinkOff.display = "none";
        }
        
        var styleLinkOnName=toggleOn+"Link";
		var styleLinkOnElem = document.all[styleLinkOnName];
		if(styleLinkOnElem != 'undefined' && styleLinkOnElem != null)
		{
            var styleLinkOn=styleLinkOnElem.style;
            styleLinkOn.display = "block";
        }
	} else if (document.layers) {
		// this is the way nn4 works
		var style2 = document.layers[toggleOff].style;
		style2.display = "";
		
		var styleLinkOffName=toggleOff+"Link";
		var styleLinkOffElem = document.layers[styleLinkOffName];
		if(styleLinkOffElem != 'undefined' && styleLinkOffElem != null)
		{
            var styleLinkOff=styleLinkOffElem.style;
            styleLinkOff.display = "none";
        }
        
        var styleLinkOnName=toggleOn+"Link";
		var styleLinkOnElem = document.layers[styleLinkOnName];
		if(styleLinkOnElem != 'undefined' && styleLinkOnElem != null)
		{
            var styleLinkOn=styleLinkOnElem.style;
            styleLinkOn.display = "block";
        }
	}
}

function hpTrack(tabState) {
	var whatLang = getLangFromUrl();
	var ucLang = whatLang.toLowerCase();
	var isEnglish = "en";
	var isSpanish = "es";
	//alert(ucLang);
	//alert(tabState);
	if (ucLang == isEnglish) {
		switch(tabState) {
			case 'tabResON':
			alert(tabState + " " + "dcsMultiTrack('WT.ac', 'HP_RES_MENU_BAR_ON', 'WT.cg_n', 'HP_RES_BAR', 'WT.cg_s', 'HP_RES_BAR GREENBAR');");
			dcsMultiTrack('WT.ac', 'HP_RES_MENU_BAR_ON', 'WT.cg_n', 'HP_RES_BAR', 'WT.cg_s', 'HP_RES_BAR GREENBAR');
			break;
			case 'tabBusON':
			alert(tabState + " " + "dcsMultiTrack('WT.ac', 'HP_BUS_MENU_BAR_ON', 'WT.cg_n', 'HP_BUS_BAR', 'WT.cg_s', 'HP_BUS_BAR ORANGEBAR');");
			dcsMultiTrack('WT.ac', 'HP_BUS_MENU_BAR_ON', 'WT.cg_n', 'HP_BUS_BAR', 'WT.cg_s', 'HP_BUS_BAR ORANGEBAR');
			break;
			case 'tabNone':
			alert(tabState);
			break;
		}
	} else if (ucLang == isSpanish) {
			switch(tabState) {
			case 'tabResON':
			//alert(tabState);
			//dcsMultiTrack('WT.ac', 'HP_RES_MENU_BAR_ON', 'WT.cg_n', 'HP_RES_BAR', 'WT.cg_s', 'HP_RES_BAR GREENBAR');
			break;
			case 'tabBusOFF':
			//alert(tabState);
			//dcsMultiTrack('WT.ac', 'HP_BUS_MENU_BAR_ON', 'WT.cg_n', 'HP_BUS_BAR', 'WT.cg_s', 'HP_BUS_BAR ORANGEBAR');
			break;
			break;
			case 'tabNone':
			//alert(tabState);
			break;
			}
	}
}

function toggleNewOnOff(toggleState,toggleOn,toggleOff,toggleInit, wtState) {
	var sameTracker="tabSame";
	var diffTracker="tabDiff";
	var initTracker="tabStart";
	//toggleOn
	//toggleNewLayer(toggleOn);
	if (document.getElementById) {
		// this is the way the standards work
		if (toggleState==initTracker) {
				var style5 = document.getElementById(toggleOn).style;
				style5.display ="block";

				var style2 = document.getElementById(toggleOff).style;
				style2.display = "none";

				var style3 = document.getElementById(toggleInit).style;
				style3.display ="none";
				//alert("1");
			} else if (toggleState==sameTracker) {
				var style5 = document.getElementById(toggleOn).style;
				style5.display ="none";
				
				var style2 = document.getElementById(toggleOff).style;
				style2.display = "none";
		
				var style3 = document.getElementById(toggleInit).style;
				style3.display ="block";
			} else if (toggleState==diffTracker) {
				var style5 = document.getElementById(toggleOn).style;
				style5.display ="block";
				
				var style2 = document.getElementById(toggleOff).style;
				style2.display = "none";
		
				var style3 = document.getElementById(toggleInit).style;
				style3.display ="none";	
			}
	
	} else if (document.all) {
		// this is the way old msie versions work
		if (toggleState==initTracker) {
				var style5 = document.getElementById(toggleOn).style;
				style5.display ="block";

				var style2 = document.getElementById(toggleOff).style;
				style2.display = "none";

				var style3 = document.getElementById(toggleInit).style;
				style3.display ="none";
				//alert("1");
			} else if (toggleState==sameTracker) {
				var style5 = document.getElementById(toggleOn).style;
				style5.display ="none";
				
				var style2 = document.getElementById(toggleOff).style;
				style2.display = "none";
		
				var style3 = document.getElementById(toggleInit).style;
				style3.display ="block";
			} else if (toggleState==diffTracker) {
				var style5 = document.getElementById(toggleOn).style;
				style5.display ="block";
				
				var style2 = document.getElementById(toggleOff).style;
				style2.display = "none";
		
				var style3 = document.getElementById(toggleInit).style;
				style3.display ="none";	
			}
		
	} else if (document.layers) {
		// this is the way nn4 works
		if (toggleState==initTracker) {
				var style5 = document.getElementById(toggleOn).style;
				style5.display ="block";

				var style2 = document.getElementById(toggleOff).style;
				style2.display = "none";

				var style3 = document.getElementById(toggleInit).style;
				style3.display ="none";
				//alert("1");
			} else if (toggleState==sameTracker) {
				var style5 = document.getElementById(toggleOn).style;
				style5.display ="none";
				
				var style2 = document.getElementById(toggleOff).style;
				style2.display = "none";
		
				var style3 = document.getElementById(toggleInit).style;
				style3.display ="block";
			} else if (toggleState==diffTracker) {
				var style5 = document.getElementById(toggleOn).style;
				style5.display ="block";
				
				var style2 = document.getElementById(toggleOff).style;
				style2.display = "none";
		
				var style3 = document.getElementById(toggleInit).style;
				style3.display ="none";	
			}
	} hpTrack(wtState);
}

function getCookie(name) {

  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);

  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
    var end = document.cookie.indexOf(";", begin);     

    if (end == -1)
    	end = dc.length;

  return unescape(dc.substring(begin + prefix.length, end));
}   

function setCookie(name, value, expires, path, domain, secure) {
	var curCookie = name + "=" + escape(value) +
	  ((expires) ? "; expires=" + expires.toGMTString() : "") +
	  ((path) ? "; path=" + path : "") +
	  ((domain) ? "; domain=" + domain : "") +
	  ((secure) ? "; secure" : "");
	document.cookie = curCookie;
}

function getValueFromCookie(cookie, keyToFind) {

	var cookie_pieces = cookie.split('&');
	for(var i=0; i<cookie_pieces.length; i++){

		var piece = trim(cookie_pieces[i]);

		var a = piece.indexOf('=');
		if (a == -1) {
			var key = piece;
			var value = '';
		} else { 
			var key = piece.substr(0,a);
			var value = piece.substr(a+1);
		}

		if (key == keyToFind)
			return value;
	}
	
	return "";
}

function setValueInCookie(cookie, keyToFind, valueToReplace) {

	var cookie_pieces = cookie.split('&');
	for(var i=0; i<cookie_pieces.length; i++){

		var piece = trim(cookie_pieces[i]);

		var a = piece.indexOf('=');
		if (a == -1) {
			var key = piece;
			var value = '';
		} else { 
			var key = piece.substr(0,a);
			var value = piece.substr(a+1);
		}

		if (key == keyToFind) {
			cookie = cookie.replace(key + "=" + value, key + "=" + valueToReplace);		
			return cookie;
		}
	}
	
	cookie = cookie + "&" + keyToFind + "=" + valueToReplace;
	return cookie;
}

function getLangFromUrl() {

	var url = document.location.toString();
	var pathAndQuery = url.substr(7);
	pathAndQuery = pathAndQuery.substr(pathAndQuery.indexOf("/"));
	
	if (pathAndQuery.length > 3)
		return pathAndQuery.substr(1, 2);

	return "";
}

function getTypeFromUrl() {
	var url = document.location.toString();

	if (url.indexOf("/MMC/") > 0)
		return "SBC";
	else if (url.indexOf("/DEBS/") > 0)
		return "ENT";
	else if (url.indexOf("/RES/") > 0)
		return "RES";
	
	return "";
}

function getRegionFromUrl() {
	var url = document.location.toString();
	var lang = getLangFromUrl();
	
	if (lang.length > 0) {
		var t = url.substr(url.indexOf("/" + lang + "/") + 4);
		var region = t.substr(0, t.indexOf("/"));
		
		if (region != "Pages" && region != getTypeFromUrl())
			return region;
	}
	
	return "";
}

function trim(str){
		
	while (str.charAt(0) == ' ')
		str = str.substring(1);
	
	while (str.charAt(str.length-1) == ' ')
		str = str.substring(0,str.length-1);

	return str;
}

String._typeName = 'String';
String.format = function(format) {

    var result = "";
    
    for (var i=0;;) {
                var next = format.indexOf("{", i);
        if (next < 0) {
            result += format.slice(i);
            break;
        }
        
        result += format.slice(i, next);
        i = next+1;
        
        if (format.charAt(i) == '{') {
            result += '{';
            i++;
            continue;
        }
        
        var next = format.indexOf("}", i);
        var brace = format.slice(i, next).split(':');
        
        var argNumber = Number.parse(brace[0])+1;
        var arg = arguments[argNumber];
        if (arg == null) {
            arg = '';
        }

        if (arg.toFormattedString)
            result += arg.toFormattedString(brace[1] ? brace[1] : '');
        else
            result += arg.toString();
        
        i = next+1;
    }
    
    return result;
}

Number.parse = function(value) {
    if (!value || (value.length == 0)) {
        return 0;
    }
    return parseFloat(value);
}
 
function clearTextBox(id) {
	var textbox = document.getElementById(id);
	textbox.value = '';
}

/* This function ensures that we do a postback only for valid State or Province name selection. 
*  We have some DDL values that do not require a postback, like State and Province header names.
*  Return true indicates not to do postback and false indicates to do a postback. 
*  See C# file PostalSoftWebPart.cs where we add a call to this function
*/
function VerifyRegionSelection(regionId)
{
    var region = document.getElementById(regionId);
    var myindex  = region.selectedIndex;
    var selVal = region.options[myindex].value;
    if(selVal == 'undefined' || selVal == '')
    {
        return true;
    }
    else
    {
        return false;
    }
}

/*BEGIN: Code for new Zip/Postal Code Layer*/

    function hidePostalLayer()
    {
      document.getElementById("postalLayer").style.visibility='hidden';
    }

    var wtac = "WT.ac";
    var wtcgn = "WT.cg_n";
    var wtcgs = "WT.cg_s";
    var webtrend1 = "";
    var webtrend2 = "";
    var webtrend3 = "";
    // This function calculates the click location and shows the pop-up layer close to the 
    // click location. It also stores the Web Trend params into a temporary storage until 
    // they are used when the Submit button is clicked
    function showPostalLayer(bizType, commType, elementId, wt1, wt2, wt3 )
    {
      //alert("bizType = " + bizType);
      //alert("commType = " + commType);
	webtrend1 = wt1;
	webtrend2 = wt2;
	webtrend3 = wt3;
        var bizTypeHiddenField = document.getElementById(placeHolderClientId + '_DE_bizType');
        bizTypeHiddenField.value = bizType;
        var commodityTypeHiddenField = document.getElementById(placeHolderClientId + '_DE_commodityType');
        commodityTypeHiddenField.value = commType;

        // Layer positioning by finding the clicked link's position
        var yVal = 0;
        var xVal = 0;
        var element = document.getElementById(elementId);
        while( element != null )
        {
            //alert("In While : " + element.id);
            yVal += element.offsetTop;
            xVal += element.offsetLeft;
            element = element.offsetParent;
        }
        //alert("yVal = " + yVal);
        //alert("xVal = " + xVal);

        document.getElementById("postalLayer").style.top = yVal + "px";
        document.getElementById("postalLayer").style.left = xVal + "px";
        document.getElementById("postalLayer").style.visibility='visible';
        
        //On MouseDown event call 'MouseDownEvent' function 
        document.onmousedown = MouseDownEvent;
    }

    function placePostalLayer(x, y)
    {
        document.getElementById("postalLayer").style.top = x + "px";
        document.getElementById("postalLayer").style.left = y + "px";
    }
    
    function InLineSubmitButtonClicked()
    {
        var bizTypeHiddenField = document.getElementById(placeHolderClientId + '_DE_bizType');
        //alert("Biz Type = " + bizTypeHiddenField.value);
        var commodityTypeHiddenField = document.getElementById(placeHolderClientId + '_DE_commodityType');
        //alert("Commodity Type = " + commodityTypeHiddenField.value);
        //alert("Calling dcsMultiTrack with wtac = '" + wtac + "', webtrend1 = '" + webtrend1 + "', wtcgn = '" + wtcgn + "', webtrend2 = '" + webtrend2 + "', wtcgs = '" + wtcgs + "', webtrend3 = '" +  webtrend3 + "'");
	dcsMultiTrack(wtac, webtrend1, wtcgn, webtrend2, wtcgs, webtrend3);
	webtrend1 = "";
	webtrend2 = "";
	webtrend3 = "";
        return true;
    }
    
    function MouseDownEvent(e)
    {
        //alert('In MouseDownEvent');
        var submitBtn = document.getElementById(placeHolderClientId + '_inLineSubmitButton');
        var inLinePostalTxtBox = document.getElementById(placeHolderClientId + '_inLineZipcode');
        var srcEventId;
        if(e == null)
        {
            srcEventId = event.srcElement.id;
        }
        else
        {
            srcEventId = e.target.id;
        }
        //alert('MouseDownEvent - ' + srcEventId);
        if(srcEventId == submitBtn.id)
        {
            document.onmousedown = null;
            submitBtn.click();
        }
        else if(srcEventId == inLinePostalTxtBox.id || srcEventId == 'postalLayerText')
        {
            // do nothing
        }
        else
        {
            document.onmousedown = null;
            hidePostalLayer();
        }
    }
    
    function handleResMouseOut(e)
    {
        // This is the source element that mouse is getting away from
	    var tg = e.srcElement;
	    //alert("tg ID = " + tg.id);
	    
	    // This is the target element where the mouse moved to
        var reltg = e.toElement;
        //alert("reltg Id = " + reltg.id);
        while (reltg != null && reltg != 'undefined' && reltg.id != 'tabResidential')
        {
            reltg= reltg.parentNode;
            //alert("In While, new reltg ID = " + reltg.id);
            // Special condition : If the mouse moved over the Business Tab, we do not want to close yet
            if(reltg != null && reltg != 'undefined' && reltg.id == 'tabResidentialBusLink')
                break;
        }
        //if(reltg != null && reltg != 'undefined')
            //alert("After While reltg Id is : " + reltg.id);
            
        if (reltg != null && reltg != 'undefined' && reltg.id == 'tabResidential')
        {
            return;
        }
        else
        {
            //alert("call toggleNewOnOff ");
            toggleNewOnOff('tabSame', 'tabBusiness', 'tabResidential', 'tabInit')
        }
    }

    function handleBizMouseOut(e)
    {
        // This is the source element that mouse is getting away from
	    var tg = e.srcElement;
	    //alert("tg ID = " + tg.id);

	    // This is the target element where the mouse moved to
        var reltg = e.toElement;
        //alert("reltg Id = " + reltg.id);
        while (reltg != null && reltg != 'undefined' && reltg.id != 'tabBusiness')
        {
            reltg= reltg.parentNode;
            //alert("In While, new reltg ID = " + reltg.id);
            // Special condition : If the mouse moved over the Residential Tab, we do not want to close yet
            if(reltg != null && reltg != 'undefined' && reltg.id == 'tabBusinessResLink')
                break;
        }
        //if(reltg != null && reltg != 'undefined')
            //alert("After While reltg Id is : " + reltg.id);
            
        if (reltg != null && reltg != 'undefined' && reltg.id == 'tabBusiness')
        {
            return;
        }
        else
        {
            //alert("call toggleNewOnOff ");
            toggleNewOnOff('tabSame', 'tabResidential', 'tabBusiness', 'tabInit')
        }
    }

    function showSection(sec1,sec2,sec3)
    {
        //section one will always show
        //alert("show section called" + sec1);
    	document.getElementById(sec1).style.display="block";
       	document.getElementById(sec2).style.display="none";
 	   	document.getElementById(sec3).style.display="none";
    	
    }

/*END: Code for new Zip/Postal Code Layer*/
