// JavaScript Document
ieHover = function() {
	var elms = document.getElementById("vnav").getElementsByTagName("li");
	for (var i=0; i<elms.length; i++) {
		elms[i].onmouseover=function() {
			this.className+=" iehover";
		}
		elms[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" iehover\\b"), "");
		}
	}
}
//addLoadEvent(ieHover);


addLoadEvent(dropDownMenus);
addLoadEvent(baseImagePreloads);
addLoadEvent(highlightSubMenu);


function dropDownMenus() {
	var ddms = getElementsByClassName('dropdown');
	if (ddms) {
		for(i=0;i<ddms.length;i++) {
			if (ddms[i].tagName == 'LI') {
				ddms[i].onmouseover = function () { addClass(this,'iehover') };
				ddms[i].onmouseout = function () { removeClass(this,'iehover') };
			}
		}
	}
}

function baseImagePreloads() {
	// preload base images
	if (document.getElementById('ukmap')) {
		// UK map images, if present
		MM_preloadImages('/images/map-frames/southwest.jpg','/images/map-frames/southeast.jpg','/images/map-frames/east_anglia.jpg','/images/map-frames/london.jpg','/images/map-frames/wales.jpg','/images/map-frames/west_midlands.jpg','/images/map-frames/east_midlands.jpg','/images/map-frames/yorkshire.jpg','/images/map-frames/northwest.jpg','/images/map-frames/northeast.jpg','/images/map-frames/scotland.jpg','/images/map-frames/northern_ireland.jpg','/images/map-frames/ireland.jpg');
	}
	// menu tab backgrounds
	MM_preloadImages('/images/backgrounds/tabs/tab-franchise-rhs-on.png','/images/backgrounds/tabs/tab-franchise-lhs-on.png','/images/backgrounds/tabs/tab-about-lhs-on.png','/images/backgrounds/tabs/tab-about-rhs-on.png');
}

function highlightSubMenu() {
	// look through submenu links and add class 'on' to li if enclosed link is for the current page
	var submenu = document.getElementById('submenu');
	if (submenu) {
		// get links in submenu
		var links = submenu.getElementsByTagName('a');
		if (links) {
			for(i=0; i<links.length; i++) {
				if (links[i].href == window.location.href) {
					addClass(links[i].parentNode,'on');
				}
			}
		}
	}
}

/******************

	window load and unload helpers
		
*******************/

function addEvent(elm,func) {
	// event to elemment
	elm = E(elm)
	
}

function addLoadEvent(func) {
	// Allow multiple loaders
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
			window.onload = function() {
				oldonload();
				func();
			}
	}
}

function addUnloadEvent(func) {
	// Allow multiple unloaders
	var oldonunload = window.onunload;
	if (typeof window.onunload != 'function') {
		window.onunload = func;
	} else {
			window.onunload = function() {
				oldonunload();
				func();
			}
	}
}

/******************
		DOM Helpers
*******************/

function nextElement(elm,n) {
	n=n||0;
	elm = E(elm)
	if (!elm) return null;
	do { 
		elm = elm.nextSibling; 
		if (elm && elm.nodeType == 1) n--;
	}	while (elm && n>=0);
	return elm;
}

function previousElement(elm,n) {
	n=n||0;
	elm = E(elm)
	if (!elm) return null;
	do {
		elm = elm.previousSibling; 
		if (elm && elm.nodeType == 1) n--;
	}	while (elm && n>=0);
	return elm;
}

function E(elm) {
	return elm =  (typeof elm == 'string') ? ((document.getElementById) ? document.getElementById(elm) : null) : elm;
}

/******************
		CSS Helpers
*******************/

function hasClass(elm,v) {
	elm = E(elm)
	return elm.className.match(new RegExp('(\\s|^)'+v+'(\\s|$)'));
}

function addClass(elm,v) {
	elm = E(elm)
	if (!hasClass(elm,v)) elm.className += (elm.className) ? " "+v : v;
}
 
function removeClass(elm,v) {
	elm = E(elm)
	if (hasClass(elm,v))	elm.className=elm.className.replace(new RegExp('(\\s|^)'+v+'(\\s|$)'),' ');
}

function getElementsByClassName(className,container,tag) {
	var m=[];
	c=container||document; 	// default container to document
	tag=tag||'*';		// default tag to *
	if (c.getElementsByTagName) {
		var elms = c.getElementsByTagName(tag);	// find tags in container
		for (i=0; i<elms.length; i++) {
			if (hasClass(elms[i],className)) m.push(elms[i]); // collect for class
		}
	}
	return m;
}

/******************
	Jump menu
*******************/
function FS_jumpMenu(selObj,restore){ //v1.0
 if (selObj.options[selObj.selectedIndex].value == '' || selObj.options[selObj.selectedIndex].value == null) return false;
 window.location = selObj.options[selObj.selectedIndex].value;
 if (restore) selObj.selectedIndex=0; 
} 

/********************

	MM functions

********************/

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_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_findObj(n, d) { //v4.01
  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 && d.getElementById) x=d.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_setTextOfLayer(objId,x,newText) { //v9.0
  with (document) if (getElementById && ((obj=getElementById(objId))!=null))
    with (obj) innerHTML = unescape(newText);
}
