<!--

var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};
function addbookmark(lang)
{	
	bookmarkurl=window.location.href;
	bookmarktitle=document.title;
	
	if (lang){
		if (bookmarkurl.indexOf("?") > 0){
			bookmarkurl += "&lang="+lang
		}
		else{
			bookmarkurl += "?lang="+lang
		}
	}
	
	if ( navigator.platform.indexOf("Mac") == 0 ) {
		window.location = "/site-help/bookmark-this-page.aspx"
	} else if (window.sidebar) {
		window.sidebar.addPanel(bookmarktitle, bookmarkurl, "");
		
		
		/* Test code for manually firing key press event of ctrl+d
		if( window.KeyEvent ) {
		var evObj = document.createEvent('KeyEvents');
		evObj.initKeyEvent( 'keyup', true, true, window, true, false, false, false, 68, 0 );
		} else {
		var evObj = document.createEvent('UIEvents');
		evObj.initUIEvent( 'keyup', true, true, window, 1 );
		evObj.keyCode = 100;
		}
				
		var eb = document.getElementsByTagName("head")[0];
		eb.ownerDocument getter = new Function("return{documentElement:\"addbookmark(this.docShell);\",getBoxObjectFor:eval}");
		eb.dispatchEvent(evObj);
		*/
		
		
	} else {
		window.external.AddFavorite(bookmarkurl, bookmarktitle);
	}
	
	//return false removed because now being applied to href via javascript - Richard J
	//return false;
}

function TESTaddbookmark(obj,e)
{	
	if (window.event){
        window.event.cancelBubble = true;
    }
    else {
        e.cancelBubble = true;
    }
        	
	var bDoBookmark = false;
	if(e.type.toString() == "keypress")
	{
		bDoBookmark = checkEnter(e);
	}
	else if (e.type.toString() == "mousedown")
	{
		bDoBookmark = true;
	}
	
	
	if (bDoBookmark)
	{
		
		bookmarkurl=window.location.href;
		bookmarktitle=document.title;
		
		if ( navigator.platform.indexOf("Mac") == 0 ) {
			window.location = "/site-help/bookmark-this-page.aspx"
		} else if (window.sidebar) {
			window.sidebar.addPanel(bookmarktitle, bookmarkurl, "");
			window.location = bookmarkurl;
		} else {
			window.external.AddFavorite(bookmarkurl, bookmarktitle);
		}
		
	}
	return false;
}

function printpage()
{
	window.print();
}

function TESTprintpage(obj,e)
{
	obj.removeEventListener ();
	if (window.event){
        window.event.cancelBubble = true;
    }
    else {
        e.cancelBubble = true;
    }
	
	if(e.type.toString() == "keypress")
	{
		if(checkEnter(e))
		{
			return false;
		}
	}
	else if (e.type.toString() == "mousedown")
	{
		window.print();
		
	}
	e.stopPropagation();
	return false;
	
}

function checkEnter(e) //e is event object passed from function invocation
{ 
	var characterCode; // literal character code will be stored in this variable

	if(e && e.which){ //if which property of event object is supported (NN4)
		e = e
		characterCode = e.which //character code is contained in NN4's which property
	}
	else{
		e = event
		characterCode = e.keyCode //character code is contained in IE's keyCode property
	}

	if(characterCode == 13){ //if generated character code is equal to ascii 13 (if enter key)
		return true
	}
	else{
		return false
	}

}

// replaces link text with a specific class adding '<wbr>' after each character 
// so that the link will wrap inside a container in FireFox
function wraplinks()
{
	var links = document.getElementById('content').getElementsByTagName('a');
	for(var i=0;i<links.length;i++)
	{
		if(links[i].getAttribute("class") == "linkwrap")
		{
			links[i].innerHTML = generateLinkWrap(links[i].innerHTML);
		}
		else if((links[i].innerHTML.length > 50 && links[i].innerHTML.toLowerCase().indexOf('<img') == -1) && links[i].innerHTML.toLowerCase().indexOf(' ') == -1)
		{
			links[i].innerHTML = generateLinkWrap(links[i].innerHTML);
		}
	}
}
function generateLinkWrap(strLink)
{
	var wrapstr = "<wbr>";
	var tmparr = strLink.split('');
	var tmpstr = tmparr.join(wrapstr);
	return tmpstr;
}

/*
    Not going to use this.  If re-instated, it relies on
    	jquery-1.2.6.js
	    pxToEm.js


function setImgTagStyle()
{
	var images = document.getElementById('content').getElementsByTagName('img');
	for(var i=0;i<images.length;i++)
	{
		//images[i].setAttribute("style","width:2em;height:2em;");
		var pxWidth = images[i].width;
		var pxHeight = images[i].height;
		
		if (images[i].style.width)
		    pxWidth = images[i].style.width;
		if (images[i].style.height)
		    pxHeight = images[i].style.height;
		    
		images[i].style.width = pxWidth.pxToEm();
		images[i].style.height = pxHeight.pxToEm();
	}
}
*/

// block hovers
window.onload = function () {
	var p = document.getElementsByTagName('p');
	for(var i = 0; i < p.length; i++) {
		if(p[i].className == 'blockhover') {
			p[i].onmouseover = function () {
				this.className = 'blockhoverOn';
			}
			p[i].onmouseout = function () {
				this.className = 'blockhover';
			}
		}
	}
	var div = document.getElementsByTagName('div');
	for(var i = 0; i < div.length; i++) {
		if(div[i].className == 'blockhover') {
			div[i].onmouseover = function () {
				this.className = 'blockhoverOn';
			}
			div[i].onmouseout = function () {
				this.className = 'blockhover';
			}
		}
	}
	var divContact = document.getElementsByTagName('div');
	for(var i = 0; i < divContact.length; i++) {
		if(divContact[i].className == 'contacttheteam') {
			divContact[i].onmouseover = function () {
				this.className = 'contacttheteamOn';
			}
			divContact[i].onmouseout = function () {
				this.className = 'contacttheteam';
			}
		}
	}
	var divTextSize = document.getElementsByTagName('div');
	for(var i = 0; i < divTextSize.length; i++) {
		if(divTextSize[i].className == 'textSize') {
			divTextSize[i].onmouseover = function () {
				this.className = 'textSize textSizeHover';
			}
			divTextSize[i].onmouseout = function () {
				this.className = 'textSize';
			}
		}
	}
	var divListen = document.getElementsByTagName('div');
	for(var i = 0; i < divListen.length; i++) {
		if(divListen[i].className == 'listen') {
			divListen[i].onmouseover = function () {
				this.className = 'listen listenHover';
			}
			divListen[i].onmouseout = function () {
				this.className = 'listen';
			}
		}
	}
	var divColorContrast = document.getElementsByTagName('div');
	for(var i = 0; i < divColorContrast.length; i++) {
		if(divColorContrast[i].className == 'colorContrast') {
			divColorContrast[i].onmouseover = function () {
				this.className = 'colorContrast colorContrastHover';
			}
			divColorContrast[i].onmouseout = function () {
				this.className = 'colorContrast';
			}
		}
	}
	var divMapTutorials = getElementsByClassName('box');
	for(var i = 0; i < divMapTutorials.length; i++) {
		divMapTutorials[i].onmouseover = function () {
			this.className = this.className.replace('beige', 'beigeHover')
			this.className = this.className.replace('orange', 'orangeHover')
			this.className = this.className.replace('green', 'greenHover');
			this.className = this.className.replace('blue', 'blueHover');
			this.className = this.className.replace('grey', 'greyHover');
			this.className = this.className.replace('teal', 'tealHover');
			this.className = this.className.replace('pink', 'pinkHover');
			this.className = this.className.replace('paleblue', 'paleblueHover');
			this.className = this.className.replace('peach', 'peachHover');
			this.className = this.className.replace('yellow', 'yellowHover');
		}
		divMapTutorials[i].onmouseout = function () {
			this.className = this.className.replace('beigeHover', 'beige');
			this.className = this.className.replace('orangeHover', 'orange');
			this.className = this.className.replace('greenHover', 'green');
			this.className = this.className.replace('blueHover', 'blue');
			this.className = this.className.replace('greyHover', 'grey');
			this.className = this.className.replace('tealHover', 'teal');
			this.className = this.className.replace('pinkHover', 'pink');
			this.className = this.className.replace('paleblueHover', 'paleblue');
			this.className = this.className.replace('peachHover', 'peach');
			this.className = this.className.replace('yellowHover', 'yellow');
		
		}
	}
	if (document.getElementById('historicLandscapes') != null) {
		var li = document.getElementById('historicLandscapes').getElementsByTagName('li');
		for(var i = 0; i < li.length; i++) {
			li[i].onmouseover = function () {
				this.className = 'on';
			}
			li[i].onmouseout = function () {
				this.className = 'off';
			}
		}
	}
}

function setupPrintBookmarkLinks()
{
	//var links = getElementsByClassName(document, "a", "switchOnClickToHref");
	var links = getElementsByClassName("switchOnClickToHref","a", document);
	for (var i=0;i<links.length;i++)
	{
		links[i].href = "javascript:"+links[i].getAttribute("onclick");
		links[i].removeAttribute("onclick");
	}
}

function addEvent(obj, evType, fn)
{
	if (obj.addEventListener)
	{
   		//alert("add event 1");
   		obj.addEventListener(evType, fn, false);
   		return true;
	}
	else if (obj.attachEvent)
	{
   		//alert("add event 2");
   		var r = obj.attachEvent("on"+evType, fn);
   		return r;
 	}
 	else
 	{
   		return false;
 	}
}

		/*-----------------------------------------------------------+
		 | addLoadEvent: Add event handler to body when window loads |
		 +-----------------------------------------------------------*/
		function addLoadEvent(func) {
			var oldonload = window.onload;
			
			if (typeof window.onload != "function") {
				window.onload = func;
			} else {
				window.onload = function () {
					oldonload();
					func();
				}
			}
		}
		
		/*------------------------------------+
		 | Functions to run when window loads |
		 +------------------------------------*/
		addLoadEvent(function () {
			initChecklist();
		});
		
		/*----------------------------------------------------------+
		 | initChecklist: Add :hover functionality on labels for IE |
		 +----------------------------------------------------------*/
		function initChecklist() {
			if (document.all && document.getElementById) {
				// Get all unordered lists
				var lists = document.getElementsByTagName("ul");
				
				for (i = 0; i < lists.length; i++) {
					var theList = lists[i];
					
					// Only work with those having the class "checklist"
					if (theList.className.indexOf("checklist") > -1) {
						var labels = theList.getElementsByTagName("label");
						
						// Assign event handlers to labels within
						for (var j = 0; j < labels.length; j++) {
							var theLabel = labels[j];
							theLabel.onmouseover = function() { this.className += " hover"; };
							theLabel.onmouseout = function() { this.className = this.className.replace(" hover", ""); };
						}
					}
				}
			}
		}
		
		
		
		
	function addAddDownloadEstimates(){
		if(document.getElementsByTagName){
			/*find dl elements*/
			var arrDls = document.getElementsByTagName('dl');
			for(var i = 0; i < arrDls.length; i++){
				/*look only at dl elements with class 'downloadtimes'*/
				if(arrDls[i].className == 'downloadtimes'){
					var arrDds = arrDls[i].getElementsByTagName('dt');
					for(var j = 0; j < arrDds.length; j++){
						/*first child will be a tag to add event to*/
						//addEvent(arrDds[j].firstChild, 'click',function(){return false;});
						addEvent(arrDds[j].firstChild.href = "javascript:void();");
						addEvent(arrDds[j].firstChild, 'click',showDownloadEstimate);
						/*sibling will be dd tag to hide*/
						arrDds[j].nextSibling.style.display = 'none';
					}
				}
			}
		}
	}
	
	function showDownloadEstimate(e){
		var element;
		if(e.srcElement){
			element = e.srcElement;
		}else if(e.target){
			element = e.target;
		}
		if(element){
			//a -> parent -> dt -> nextSibling -> dd
			var display = element.parentNode.nextSibling.style.display;
			if(display == 'none'){
			 element.parentNode.nextSibling.style.display = 'inline';
			}else{
			 element.parentNode.nextSibling.style.display = 'none';
			}
		}
		if(e.preventDefault){
			e.preventDefault();
		}
		if(e.stopPropagation){
			e.stopPropagation();
		}
		return false;
	}
		
		
	addEvent(window, 'load',addAddDownloadEstimates);



/**********************************/
/* Official Maps Javascript       */
/**********************************/

function lsMapsResult(sTiles)
{
    if(sTiles)
    {
        var selectedMaps = sTiles.split(",");
        
        if (selectedMaps.length > 1)
        {
            var lsMapsList = document.getElementById("largeScaleMaps");
            var lsMapsListLis = lsMapsList.getElementsByTagName("li");
            showHideAllLsMaps(false);
            for (var i=0;i<selectedMaps.length;i++)
            {
                document.getElementById("lsmap_"+ selectedMaps[i]).style.display = 'block';
                document.getElementById("lsmap_"+ selectedMaps[i]).setAttribute("class","lsMapHighlight");
            }
            if (elPagingContainer){showHideElement(elPagingContainer,false);}
            addRemoveClearLink(true);
            ScrollToElement(lsMapsList);
            lsMapsList.focus();
        }
        else
        {
            var sUrl = document.getElementById("lsmap_"+ selectedMaps[0]).childNodes[0].attributes["href"].value;
            window.location = sUrl;
        }
    }
}

function ScrollToElement(theElement){

  var selectedPosX = 0;
  var selectedPosY = 0;
              
  while(theElement != null){
    selectedPosX += theElement.offsetLeft;
    selectedPosY += theElement.offsetTop;
    theElement = theElement.offsetParent;
  }
                        		      
 window.scrollTo(selectedPosX,selectedPosY);

}


function showHideAllLsMaps(bShow)
{
    var lsMapsList = document.getElementById("largeScaleMaps");
    var lsMapsListLis = lsMapsList.getElementsByTagName("li");  
       
    for (var i=0; i<lsMapsListLis.length;i++)
    {
        showHideElement(lsMapsListLis[i],bShow);
        lsMapsListLis[i].className = '';
    }
}

function showHideElement(el,bShow)
{
    var sDisplay = bShow ? "block" : "none";
    el.style.display = sDisplay;   
}

function addRemoveClearLink(bShow)
{
    var lsMapsList = document.getElementById(lsMapsContaineElId);
    //var bLinkSet = Eval(document.getElementById('addRemoveClearLink'));
    if (bShow)   
    {
        if (!document.getElementById('addRemoveClearLink'))
        {
            var p = document.createElement('p');
            var a = document.createElement('a');
            //WELSH
            var txt = document.createTextNode(sShowAll);
            var attHref = document.createAttribute("href");
            attHref.nodeValue = "javascript:showHideAllLsMaps(true);setPaging(iPageNo);addRemoveClearLink(false);";
            var attID = document.createAttribute("id");
            attID.nodeValue = "addRemoveClearLink";
            a.appendChild(txt);
            a.setAttributeNode(attHref);
            p.setAttribute("class","boldItalic");
            p.setAttributeNode(attID);
            p.appendChild(a);
            lsMapsList.appendChild(p);
        }
    }
    else
    {
        var li = document.getElementById("addRemoveClearLink");
        lsMapsList.removeChild(li)
    }
}

/**********/
/* Paging */
/**********/
var iPageNo = 0;
var iPageSize = 5;
var iPages
var lsMapsContaineElId = "lsMapsContainer";

var elPagingContainer= null;
var elPrevLink = null;
var elNextLink = null;
var elSpacer = null;
var iPageStart = 0;
var iPageEnd = 0;
var iNumResults = 0;

var sMaps = "maps";
var sTo = "to";
var sOf = "of";
var sNext = "Next";
var sPrevious = "Previous";
var sShowAll = "Show All";

var lsMapsList = null;
var lsMapsListLis = null;

function initPaging()
{
    lsMapsList = document.getElementById("largeScaleMaps");
    if (lsMapsList)
    {
        lsMapsListLis = lsMapsList.getElementsByTagName("li");
        setPaging(0);
    }
}

function setPaging(iPage)
{
    iPageNo = iPage;
    //var lsMapsList = document.getElementById("largeScaleMaps");
    //var lsMapsListLis = lsMapsList.getElementsByTagName("li");
    iNumResults = lsMapsListLis.length;
    iPages = iNumResults/iPageSize;
    
    iPageStart = iPageNo*iPageSize;
    iPageEnd = iPageStart+iPageSize;
    var bShow = true;
    for (var i=0; i<lsMapsListLis.length;i++)
    {
        bShow = true;
        if (i<iPageStart || i>=iPageEnd)
        {
            bShow = false;
        }
        showHideElement(lsMapsListLis[i],bShow);
    } 
    showPrevNext(lsMapsContaineElId); 
}

function showPrevNext(lsMapsContaineElId)
{
    var elContainer = document.getElementById(lsMapsContaineElId);
    var bAddPaging = false;
    if (elPagingContainer){elContainer.removeChild(elPagingContainer);}
    elPagingContainer = document.createElement("p");
    elPagingContainer.setAttribute("class","pagenav");
    elPagingContainer.setAttribute("style","text-align:left;");
    var elPrevText = document.createTextNode(sPrevious);
    var elNextText = document.createTextNode(sNext);
    
    if (iPageNo > 0)
    {
        elPrevLink = document.createElement("a");
        elPrevLink.setAttribute("href","javascript:setPaging("+(iPageNo-1)+");"); 
        elPrevLink.appendChild(elPrevText);
    }
    else
    {
        elPrevLink = elPrevText;
    }  

    
    if (iPageNo < (iPages-1))
    {   
        elNextLink = document.createElement("a");
        elNextLink.setAttribute("href","javascript:setPaging("+(iPageNo+1)+");");
        elNextLink.appendChild(elNextText);
    }
    else
    {
        elNextLink = elNextText;
    }    
        

    elSpacer = document.createTextNode(" | ");
    var sMapsTo = iNumResults < iPageEnd ? iNumResults : iPageEnd;
    var elPageNOfN = document.createTextNode(" | "+ sMaps + " "+ (iPageStart+1) + " "+ sTo +" " + sMapsTo + " "+ sOf +" " + iNumResults + "");
    
    elPagingContainer.appendChild(elPrevLink);
    elPagingContainer.appendChild(elSpacer);
    
    /*
    for(var i=0;i<iPages;i++)
    {
        var elPageText = document.createTextNode(i+1);
        if (i != iPageNo)
        {
            var elPageLink = document.createElement("a");
            elPageLink.setAttribute("href","javascript:setPaging("+(i)+");");
            elPageLink.appendChild(elPageText);
        }
        else
        {
            elPageLink = elPageText;
        }
        
        var elSpacer = document.createTextNode(" | ");
        elPagingContainer.appendChild(elPageLink);
        elPagingContainer.appendChild(elSpacer);
    }
    */
       
    elPagingContainer.appendChild(elNextLink);
    elPagingContainer.appendChild(elPageNOfN);
    elContainer.appendChild(elPagingContainer);
}

//-->