var HomePage = {
	//start up - set some initial properties and get elements
	init: function(){
		if (window.HomeIE6 != undefined){
			HomeIE6.init();
			return false;
			}
		else {
		HomePage.activeElement = document.getElementById('mainsection');
		HomePage.negOpacity = 100;
		HomePage.posOpacity = 0;
		var tools = document.getElementById('tools').getElementsByTagName('a');
			for(var i=0; i<tools.length; i++) {
				HomePage.postcodelink = tools[0];
				HomePage.ratefinderlink = tools[1];
				HomePage.trackandtracelink = tools[2];
				}
		HomePage.fadeEvents();
		}
	},
	//this is used to switch between step 1 and 2 of the ratefinder tool
	ratefinderstep: function(element){
		HomePage.fadeParam(element, HomePage.activeElement, 'length');
		HomePage.activeElement = document.getElementById(element);
		return false;
	},
	
	clearlinkids: function(){
		HomePage.postcodelink.id = '';
		HomePage.ratefinderlink.id = '';
		HomePage.trackandtracelink.id = '';
	},
	
	//add our click events to the three tools links	
	fadeEvents: function(){
		HomePage.postcodelink.onclick = function(){ 
			RecordEvent("homepage/postcode/click")
			//cancel the auto rotate on the rotating adverts
			Rotate.cancelauto();
			this.blur();
			if(document.getElementById('postcode') != HomePage.activeElement){
				 HomePage.fadeParam('postcode', HomePage.activeElement, 'number');
				 HomePage.activeElement = document.getElementById('postcode');
				 HomePage.clearlinkids();
				 this.id = 'activelink'; 
				 return false;
				 }
			 else {
				 return false;
				 }
				};
		HomePage.ratefinderlink.onclick = function() {
			RecordEvent("homepage/ratefinder/click")
			//cancel the auto rotate on the rotating adverts
			Rotate.cancelauto();
			this.blur();
			if(document.getElementById('postage') != HomePage.activeElement){
				 HomePage.fadeParam('postage', HomePage.activeElement, 'weight');
				 HomePage.activeElement = document.getElementById('postage');
				 HomePage.clearlinkids();
				 this.id = 'activelink'; 
				 return false;
				 }
				 else {
					 return false;
					 }
					 
		}
		HomePage.trackandtracelink.onclick = function() {
			RecordEvent("homepage/trackandtrace/click")
			//cancel the auto rotate on the rotating adverts
			Rotate.cancelauto();
			this.blur();
			if(document.getElementById('track') != HomePage.activeElement){
						HomePage.fadeParam('track', HomePage.activeElement, 'trackingNumber1');
						HomePage.activeElement = document.getElementById('track');
						HomePage.clearlinkids();
						this.id = 'activelink'; 
						return false;
						}
					else {
					    return false;
					   
					    }
					}
		//set up our actions for 'close' links on each step		
		var formclose = document.getElementsByTagName('a');
				for(var i=0; i<formclose.length; i++) {
					if(formclose[i].className == 'close'){
						formclose[i].onclick = function() {
							var parentElm = this.parentNode;
							while(parentElm.className != 'form')
							{
							parentElm = parentElm.parentNode;
							}
							//keep a track of everyone who closes a tool
							TrackClicks.track(this, 'close');
							//restart the auto rotation of the marketing adverts
							Rotate.pauseauto();
							HomePage.fadeParam('mainsection', parentElm);
							HomePage.activeElement = document.getElementById('mainsection');
							HomePage.clearlinkids();
							return false;
						}
					
					}
				}
	},
	
	//sets up some propeties including the element to fade in 'fadeinel', element to fade out 'fadeoutel'
	// and sets which form field gets focus - also sets properites for initial opacity on each element
	fadeParam: function(fadeinel, fadeoutel, focusid){
		HomePage.fadeOutElement = fadeoutel;
		HomePage.fadeOutElement.style.opacity = '1';
		HomePage.fadeOut();
		HomePage.fadeInElement = document.getElementById(fadeinel);
		HomePage.fadeInElement.style.display = 'block';
		HomePage.fadeInElement.style.opacity = '0';
		HomePage.focusid = focusid;
		HomePage.fadeIn();	 
		HomePage.disableLinks();
		return false;
	},	
	
	//used to prevent users clicking another link to a tool when a fade is running
	disableLinks: function(){
		HomePage.postcodelink.onclick = function(){ return false; };
		HomePage.ratefinderlink.onclick = function(){ return false; };
		HomePage.trackandtracelink.onclick = function(){ return false; };
	},
	
	//fade out function fades element (property 'HomePage.fadeOutElement' set in fadeParam, 
	//on complete it clears the timer, sets the fadeOutElement to 'display: none', resets
	//negOpacity property amd calls fadeEvents again to reset our click events (disabled by 'disableLinks')
	fadeOut: function(){
		var fader = setTimeout('HomePage.fadeOut()', 100);
		if(HomePage.fadeOutElement.style.opacity > 0){
			HomePage.fadeOutElement.style.opacity = HomePage.negOpacity/100;
			HomePage.fadeOutElement.style.filter = "alpha(opacity=" + HomePage.negOpacity + ")";
			HomePage.negOpacity = HomePage.negOpacity - 20;
			}
		else {
			clearTimeout(fader);
			HomePage.fadeOutElement.style.display = 'none';
			HomePage.negOpacity = 100;
			HomePage.fadeEvents();
			}
	
	},
	//As above, however on complete it also calls SetFocus() in Tools.js to set focus on the desired form element
	fadeIn: function(){
		var fader2 = setTimeout('HomePage.fadeIn()', 100);
		if(HomePage.fadeInElement.style.opacity < 1){
			HomePage.fadeInElement.style.opacity = HomePage.posOpacity/100;
			HomePage.fadeInElement.style.filter = "alpha(opacity=" + HomePage.posOpacity + ")";
			HomePage.posOpacity = HomePage.posOpacity + 20;
			}
		else {
			clearTimeout(fader2);
			HomePage.posOpacity = 0;
			SetFocus(HomePage.focusid);
			}
	
	}

}

//Used to track clicks on any links within marketingPromotions & exits from the useful tools, every click passes the 
//ParentElm.id and the href of the link to RecordEvent() - see google.js
var TrackClicks = {
	init: function(){
		//track clicks on marketingPromotions
		var marketinglinks = document.getElementById('marketingPromotions').getElementsByTagName('a')
			for (i=0; i < marketinglinks.length; i++){
				marketinglinks[i].onclick = function(){
						TrackClicks.track(this, 'marketing');
						}
			}		
		//track clicks on links other than 'close' button on useful tools
		var divs = document.getElementsByTagName('div')
			for (var i=0; i<divs.length; i++){
				if(divs[i].className == 'form'){
					if(divs[i].getElementsByTagName('a')[1]){
						var toolslinks = divs[i].getElementsByTagName('a');
						for (var j=0; j<toolslinks.length; j++)
						if(toolslinks[j].className != 'close'){
							toolslinks[j].onclick = function(){
								TrackClicks.track(this, 'full tool');
								}
							}
						}
					}
			}
	},
	track: function(link, linktype){
		var link = link;
		var linktype = linktype;
		var thisurl = link.href;
		var parentElm = link.parentNode;
		//walk back up the dom to get the parent div
		while(parentElm.nodeName != 'DIV')
		{
			parentElm = parentElm.parentNode;
		}
		if(linktype == 'marketing'){
			var divid = parentElm.id.substring((parentElm.id.lastIndexOf('_') + 1));
			RecordEvent("homepage/marketing/" + divid + "&link=" + thisurl);
			}
		else {
			//walk back up the dom to get the parent form
			while(parentElm.className != 'form')
			{
				parentElm = parentElm.parentNode;
			}
			RecordEvent("homepage/toolexits/" + parentElm.id + "/&whereto?=" + linktype);
			}
	}

}
