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_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_nbGroup(event, grpName) { //v6.0
var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true;img.MM_up = args[3];img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    }}
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])?args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {img = document.MM_nbOver[i];img.src = (img.MM_dn) ? img.MM_dn : img.MM_up;}
  } else if (event == "down") {
    nbArr = document[grpName];
    if (nbArr) for (i=0; i < nbArr.length; i++) {img=nbArr[i];img.src = img.MM_up;img.MM_dn = 0;}
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
  }}
}

function isIE(){return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);}

Cufon.replace('#level1 .cfs', {
	/*textShadow: '-1px 1px rgba(51, 51, 51, 0.3)*/
});
/*
//if(isIE()){
	// not quite working yet but it should do! - works if you run in the console
	var replace_img = 0;
	$$('#level2 .cfs').each(function(el){
		replace_img++;
		var txt = escape(el.innerHTML+' ');
		var img_html = '<img border="0" onmouseover="MM_swapImage(\'_ri_'+replace_img+'\',\'\',\'images/text.php?text='+txt+'&shadow&colour=0071BA\',1);" onmouseout="MM_swapImgRestore();" src="images/text.php?text='+txt+'&shadow" name="_ri_'+replace_img+'" id="_ri_'+replace_img+'" />';
		el.innerHTML = img_html;
	});
//} else {
	Cufon.replace('#level2 .cfs', {
		textShadow: '-1px 1px rgb(138, 171, 52)',
		hover: true
	});
//}
*/
Cufon.replace(".cf");

var selectedNavEl = null;
var lastRolledNavEl = null;

Event.observe(window, 'load', function() {
	if($('topnav')){
		MM_preloadImages(
			'images/btn_login_f2.png',
			'images/btn_logout_f2.png',
			'images/btn_register_f2.png',
			'images/btn_amend-a-policy_f2.png',
			'images/btn_amend-a-policy_f3.png',
			'images/btn_my-account_f2.png',
			'images/btn_my-account_f3.png',
			'images/btn_contact_f2.png',
			'images/btn_contact_f3.png',
			'images/btn_s_more_f2.png',
			'images/home_banner_important-info_f2.png'
		);
		$$('#level1 li').each(function(el){
			Event.observe(el, "mouseover", subnav_mouseover);
			Event.observe(el, "mouseout", subnav_mouseout);
			Event.observe(el, "click", subnav_click);
			if(el.className=="on"){
				selectedNavEl = el;
			}
		});

		var el = $('level2');
		Event.observe(el, "mouseover", subnav_level2_mouseover);
		Event.observe(el, "mouseout", subnav_level2_mouseout);
		if($('important_info')!=undefined){
			Event.observe('important_info', "mouseover", function(ev){
				var el = Event.findElement(ev, 'div.greenbar_single');
				el.setStyle("background-image:url(images/home_banner_important-info_f2.png);");
			});
			Event.observe('important_info', "mouseout", function(ev){
				var el = Event.findElement(ev, 'div.greenbar_single');
				el.setStyle("background-image:url(images/home_banner_important-info.png);");
			});
		}
		// hide any unwanted subnav items
		hide_subnavs_except(tab);
	}
});

function hide_subnavs_except(shownav){
	for(var i=0; i<subnavs.length; i++){
		if(shownav!=subnavs[i]){
			$(subnavs[i]).hide();
			if(selectedNavEl!=null){
				var selectedName = selectedNavEl.id.substr(2);
				if(subnavs[i]!=selectedName){
					$('t_'+subnavs[i]).className = '';
					
				} 
			}
		} else {
			$(subnavs[i]).show();
			$('t_'+subnavs[i]).className = 'on';
		}
	}
	Cufon.refresh("#level1 .cfs");
}

function subnav_mouseover(ev){
	var el = Event.findElement(ev, 'li');
	lastRolledNavEl = el;
	if(selectedNavEl!=null){
		if(el!=selectedNavEl) el.className = 'on';
		if(el!=selectedNavEl) selectedNavEl.className = '';
	}
	if(resetInt != null){
		window.clearTimeout(resetInt);
		resetInt = null;
	}
	var showtab = el.id.substr(2);
	hide_subnavs_except(showtab);
}

function subnav_mouseout(ev){
	var el = Event.findElement(ev, 'li');
	if(selectedNavEl!=null){
		if(el!=selectedNavEl){
			var showtab = selectedNavEl.id.substr(2);
			//hide_subnavs_except(showtab);
			if(lastRolledNavEl!=null){
				resetEv = ev;
				// also check mouse bounds as we might be on a link inside menu level2
				if(resetInt==null) resetInt = window.setTimeout(resetLevel2,1000);
			}
		}
	}
}

function subnav_level2_mouseover(ev){
	if(lastRolledNavEl!=null){
		if(resetInt != null){
			window.clearTimeout(resetInt);
			resetInt = null;
		}
		if(lastRolledNavEl!=selectedNavEl) lastRolledNavEl.className = 'on';
		var showtab = lastRolledNavEl.id.substr(2);
		hide_subnavs_except(showtab);
	}
}

var resetInt = null;
var resetEv = null;
function subnav_level2_mouseout(ev){
	if(lastRolledNavEl!=null){
		resetEv = ev;
		// also check mouse bounds as we might be on a link inside menu level2		
		if(resetInt==null) resetInt = window.setTimeout(resetLevel2,1000);
	}
}

function resetLevel2(){
	resetInt = null;
	var ev = resetEv;
	var mousex = Event.pointerX(ev);
	var mousey = Event.pointerY(ev);
	var boundingEl = $('level2'); 
	var topLeft = boundingEl.viewportOffset();
	var size = boundingEl.getDimensions();
	var bottomRight = [topLeft[0]+size.width,topLeft[1]+size.height];
	//console.log("mouse: "+mousex+","+mousey);
	//console.log("bounds: "+topLeft[0]+","+topLeft[1]+" > "+bottomRight[0]+","+bottomRight[1]);
	if((mousex > topLeft[0] && mousex < bottomRight[0]) && (mousey > topLeft[1] && mousey < bottomRight[1])) return false;
	// mouse must be outside area
	if(lastRolledNavEl!=selectedNavEl) lastRolledNavEl.className = '';
	var showtab = '';
	if(selectedNavEl!=null){
		showtab = selectedNavEl.id.substr(2);
	}
	hide_subnavs_except(showtab);
	lastRolledNavEl = null;
}

function subnav_click(ev){
	selectedNavEl = Event.findElement(ev, 'li');
	$$('#level1 li').each(function(el){ 
		el.className = ''; 
	});
	selectedNavEl.className = 'on';
	var showtab = selectedNavEl.id.substr(2);
	hide_subnavs_except(showtab);
	return false;
}

function new_freecap(){
	// loads new freeCap image
	if(document.getElementById){
		// extract image name from image source (i.e. cut off ?randomness)
		thesrc = document.getElementById("freecap").src;
		thesrc = thesrc.substring(0,thesrc.lastIndexOf(".")+4);
		// add ?(random) to prevent browser/isp caching
		document.getElementById("freecap").src = thesrc+"?"+Math.round(Math.random()*100000);
	} else {
		alert("Sorry, cannot autoreload freeCap image\nSubmit the form and a new freeCap will be loaded");
	}
}

function backToTop(){
	Effect.ScrollTo('top');
}

function more(id){
	// display more text by grabbing text from page and feeding in place of the more btn
	var btn = $('btn_'+id);
	Effect.Fade(btn.id, {
		duration: 0.5,
		afterFinish: function(){
			var id = btn.next().identify();
			var el = $(id);
			el.setStyle('display:none');
			el.className = '';
			Effect.Appear(el, {duration:0.25});
			Effect.BlindDown(id, {duration:0.25});
		}
	});
}
