var answers=new Object();
answers.filled=0;
answers.total=0;
answers.ans=new Object();
answers.changed=new Object();
answers.labels=new Object();

var report=new Object();
report.shown=false;

function header_fade(){

	//header_images is meant to be global

	if(typeof header_images=='undefined')
		{
		header_images=new Object();

		header_images.length=$.className('header').length+1;
		header_images.current=1;
		}

	fader('header-'+header_images.current,-0.7,0,100,1);

	header_images.current++;
	
	if(header_images.current>=header_images.length)
		header_images.current=1;

	fader('header-'+header_images.current,0.7,100,0,1);

}

function show_report(){
	
	if(!report.shown)
		{
		$.id('questions').style.display='none';
		
		for(property in answers.ans)
			{
			var block=$.id('answers-'+property);

			var answer=answers.ans[property];

			var content=block.innerHTML;
			content='<h4 style="margin-left:10px">'+answers.labels[property]+'</h4><p style="position:relative; display:block; width:90%; margin:0px 0px 0px 15px !important; font-style:italic">"'+answer+'"</p>'+content;

			block.innerHTML=content;

			answer=answer.replace(/ /g,'_');
			answer=answer.toLowerCase();

			var obj=null;
			obj=$.id(answer);
			
			if(!obj)
				obj=$.id('q'+property+'_'+answer);

			DomUtils.setAnyAttribute(obj,'className','answer');
			obj.style.display='block';
			block.style.display='block';
			}

		$.id('contact').style.display='block';
		$.id('healthcheck-form-submit-button').style.display='block';

		report.shown=true;
		}
		
}

function mark_answer(){
	
	var n=this._question_number;

	answers.ans[n]=this.value;
	answers.changed[n]=true;
	/*
	var i=0;
	for(property in answers.ans)
		i++;

	if(i==answers.total)
	   	show_report();
	*/
}


function sort_out_form(){

	var form=$.id('healthcheck-form');

	if(!form)
		return;

	var questions=$.id('questions');
	var contact=$.id('contact');
	
	questions.innerHTML+='<a href="javascript:show_report()" id="answers-submit">Click here to submit your answers &raquo;</a>';
	
	var tags=questions.getElementsByTagName('SELECT');

	var c=DomUtils.getAnyAttribute('healthcheck-form','class');

	if(c.indexOf('intro')!=-1)
		{
		for(var i=0;i<tags.length;i++)
			{
			var label=DomUtils.getPrevious(tags[i]);
			
			answers.labels[i+1]=label.innerHTML;
			
			tags[i]._question_number=i+1;
			EventUtils.addEventListener(tags[i],'change',mark_answer);
			}
		}
	else
		{
		questions.style.display='none';
		contact.style.display='block';
		$.id('healthcheck-form-submit-button').style.display='block';
		}

	answers.total=i;

	var messages=$.id('form-message');

	ElementHandler.remove('form-message');

	var destination=DomUtils.getChildren(contact)[0];
	contact.insertBefore(messages,destination);
	
	messages.style.display='block';
}

function setup(){

	sort_out_form();
	deal_with_pngs();

	setInterval('header_fade()',5000);
}

function form_submit(frm){
	document.getElementById(frm).submit();
}

function nospam(domain,name){
	window.location="mailto:"+name+"@"+domain+"?subject=web site contact";
}

function fade(obj,d,target,f){

	lyr=document.getElementById(obj);
	lyr.fade+=(d*20);

	if((d>0 && lyr.fade>=target) || (d<0 && lyr.fade<=target))
		{
		if(target>99)
			lyr.style.filter='';

		lyr.fade=target*0.9999999;
		clearInterval(lyr.fade_on);
		lyr.fade_on=0;
		if(f==1 && d>0)
			{
			lyr.style.display='block';
			}
		}

	if(f>0)
		{
		if(lyr.fade==0)
			lyr.style.display='none';
		else
			lyr.style.display='block';
		}

	lyr.style.opacity=lyr.fade/100;
	lyr.style.filter="progid:DXImageTransform.Microsoft.Alpha(Opacity="+lyr.fade+")";
}

function fader(lyr,d,target,init,f){
	obj=$.id(lyr);
	
	if(obj.fade_on==null)
		{			
		obj.fade_on=0;
		obj.fade=init;
		}

	if(obj.fade_on!=0)
		{
		clearInterval(obj.fade_on);
		obj.fade_on=0;
		}

	obj.fade_on=setInterval("fade('"+lyr+"',"+(d/2)+","+target+","+f+")",50);
}

var dimensions=new Array('top','left','width','height','marginLeft','marginTop');

function animLS(lyr,dim,target,step,mode,overflow){

	obj=document.getElementById(lyr);

	real=obj.lsReal[dim];
	delta=Math.sqrt(Math.abs(target-real))*0.0125;

	step=obj.sig[dim]*10;

	new_dim=obj.lsReal[dim];
	obj.lsReal[dim]=real+(obj.step[dim]*step*delta);

	var d=dimensions[dim];

	if((new_dim>=target && obj.sig[dim]>0) || (new_dim<=target && obj.sig[dim]<0))
		{
		target=target+''+mode;
		obj.style[d]=target;
		clearInterval(obj.lsInterval[dim]);
		obj.lsInterval[dim]=0;
		}
	else
		{
		new_dim=new_dim+''+mode;
		obj.style[d]=new_dim;
		}
}

function changeDim(lyr,dim,target,step,mode,overflow){

	obj=$.id(lyr);

	if(obj.lsReal==null)
		{
		w_w=document.body.clientWidth;
		w_h=document.body.clientHeight;

		obj.step=new Array();
		obj.sig=new Array();
		obj.lsReal=new Array();
		obj.lsInterval=new Array();
		}

	if(obj.lsInterval[dim]!=0)
		{
		clearInterval(obj.lsInterval[dim]);
		obj.lsInterval[dim]=0;
		}

	switch(dim)
		{
		case 0:
			obj.lsReal[0]=(!parseInt(obj.offsetTop))?0:parseInt(obj.offsetTop);
			break;
		case 1:
			obj.lsReal[1]=(mode=='%')?((parseInt(obj.offsetLeft)/w_w)*100):parseInt(obj.offsetLeft);
			break;
		case 2:
			obj.lsReal[2]=(mode=='%')?((parseInt(obj.offsetWidth)/w_w)*100):parseInt(obj.offsetWidth);
			break;
		case 3:
			obj.lsReal[3]=(mode=='%')?((parseInt(obj.offsetHeight)/w_h)*100):parseInt(obj.offsetHeight);
			break;
		case 4:
			obj.lsReal[4]=parseInt(obj.style.marginLeft);
			break;
		case 5:
			obj.lsReal[5]=(!parseInt(obj.style.marginTop))?0:parseInt(obj.style.marginTop);
			break;
		}

	obj.step[dim]=step;
	obj.sig[dim]=((target-obj.lsReal[dim])>0)?1:-1;

	obj.lsInterval[dim]=setInterval("animLS('"+lyr+"',"+dim+","+target+","+step+",'"+mode+"','"+overflow+"')",30);
}

function deal_with_pngs(){

	if(BrowserDetect.browser=='Explorer' && BrowserDetect.version==6)
		{
		var imgs=document.getElementsByTagName('IMG');

		for(var i=0;i<imgs.length;i++)
			{
			var img=imgs[i];

			if(img.src.indexOf('.png')>-1)
				{			
				var cur=img.src;

				img.src='http://www.energy-healthcheck.co.uk/grfx/s.gif';
				
				if(img.style.filter=='')
					img.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+cur+'")';
				}
			}			
		}
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};

BrowserDetect.init();