/* 
 * Hovers li's in IE as it does not support CSS hovers on LI tags 
 * Requires the hover style to also apply to the class .over 
*/

function assignHoverNav()
{
	var menu = document.getElementById('mainNav');
	if (!menu) return false;
	var index=0;
	var elems = menu.getElementsByTagName('li');
	if (!elems) return false;

	for(index=0;index<elems.length;index++)
	{
		var li = elems[index];
		li.onmouseover = function () 
		{
			this.className += " over";
		}

		li.onmouseout = function ()
		{
			this.className=this.className.replace("over", "");
		}
	}
}


if (window.attachEvent) window.attachEvent("onload", assignHoverNav);
	else window.onload = assignHoverNav;



/*** Water Tank Wizard  ***/
var currentStep = 1

function nextStep(){
	
	//Can see what step the user is on by checking the ticked fields.
	//eg waterUsage is checked so hence must be up to step 2. 
	if (!optionsChecked('waterUsage[]','waterWizard'))
	{
		alert('Please tick the boxes that apply.');
	}	else {		
		activateStep('secondStep');							
	}
}


var DIYVals = {};

function isEmail(emailString){
	return (emailString.search(/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/) != -1);
}

var DIY = {			
	check : function (f){
		var requiredList = ['tank_type','pump_type','install_kit','delivery'];
		var msgs = ['Please select a tank type.','Please select a pump type.','Please select an install kit.','Please select a method of delivery.'];
		var valid = true;
		var msgList = new Array();
		
		for (var y = 0; y < requiredList.length	; y++){
						
			var nlist = f.elements[requiredList[y]];
			var isSelected = false;
			var listTotal = nlist.length ;			
			for (var i = 0; i < listTotal ; i++){
				if (nlist[i].checked){
					isSelected = true;		
					break;
				}
			}
			
			if (!isSelected){
				msgList.push(msgs[y]);
				valid = false;
			}
		}
		
		if (!valid){
			DIY.displayError(msgList,'diyWizard',2);
		}
				
		return valid;
	},
	
	detailsValidate : function (f){
		var requiredList = ['first_name','surname','phone','email_address','postcode'];
		var msgs = ['Please enter your first name.','Please enter your surname.',
					'Please enter a contact number.','Please enter a valid email address.',
					'Please enter your postcode.'];
		var msgList = new Array();
		var valid = true;
		
		for (var y = 0; y < requiredList.length	; y++){
			
			if (requiredList[y] == 'email_address' ){
				if (!isEmail(f.elements['email_address'].value)){
					msgList.push(msgs[y]);
					valid = false;
				}
			} else {
				if (f.elements[requiredList[y]].value == ''){
					msgList.push(msgs[y]);
					valid = false;	
				}	
			}
		}
		
		if (!valid){
			DIY.displayError(msgList,'DIYDetailsForm',3);
		}		
		
		return valid;				
	},
	
	
	displayError : function (msg, referenceId, area){		
		var msgBox1 = document.getElementById('msgBox1');
		var msgBox2 = document.getElementById('msgBox2');
		msg = msg.join('<br/>');
		
		if (!msgBox2){
			var f = document.getElementById(referenceId);
			var msgBox1 = document.createElement('div');
			msgBox1.className = 'errorMsg';
			msgBox1.innerHTML = msg;
			msgBox1.id = 'msgBox1';
			
			var msgBox2 = msgBox1.cloneNode(true);
			msgBox2.id = 'msgBox2';
			
			if (area == 3){
				f.parentNode.insertBefore(msgBox2,f);					
			} else {
				f.parentNode.insertBefore(msgBox2,f.nextSilbing);	
			}
			
			
			if (area == 2){
				f.parentNode.insertBefore(msgBox1,f);	
			}			
			
		} else {
			if (area == 2){
				msgBox1.innerHTML = msg;	
			} 			
			msgBox2.innerHTML = msg;
		}
					
	},
	
	update : function(e, price){
		
		//tank_type, pump_type, install_kit, extras1, extras2, extras3, delivery		
		var eName = e.name;		
		var diff = 0;
		var offsetPrice = price;
		
		if (e.type == 'radio'){
			
			if (DIYVals[eName]){						
				offsetPrice = price - DIYVals[eName];
			}
			DIYVals[eName] = price;	
			
		} else if (e.type == 'checkbox'){			
			
			offsetPrice = price;
						
			if (!e.checked){
				offsetPrice = -price;
			} else if (e.checked){
				offsetPrice = price;
			}
			DIYVals[eName] = price;
		}
		
		DIY.updateTotal(offsetPrice);
	},	
	updateTotal : function (price){
		var  e = document.getElementById('diyTotal');
		var current = new Number(e.innerHTML);
		e.innerHTML = price+ current;
	},
	reset : function(){
		var f = document.getElementById('diyWizard');
		f.reset();
	}
}


/*** Water tank list ***/
//This function activates the relevant tank information div
function activateTank(tankName){
	//List of tankIds 
	//var tankIdArray = new Array ('Corrugated', 'Smooth', 'Underground', 'Slimline','Bladder');
	var tankIdArray = new Array ('Rural', 'Corrugated', 'Smooth', 'Slimline','Bladder');
	
	//Need to disable all tank specifications id, and the tabs, 
	//then enable the one we are viewing
	for (ii=0; ii < tankIdArray.length ; ii++ )
	{		
		disableField('tank'+tankIdArray[ii]);
		changeIdClass('tab'+tankIdArray[ii],'blah');
	}
		
	changeIdClass('tab'+tankName,'active');
	enableField('tank'+tankName);
	changeIdClass('tank'+tankName,'visibleBlock');

	return false;

}

//Swaps the tank image with the corresponding colourName match
function showTankImage(tankName, colourName){
	var imgName = 'tanks-' + tankName.toLowerCase() + '-' + colourName + '.gif';
	var img = document.images['tankImage'+tankName].src = 'images/'+imgName;
	colourDiv = document.getElementById('colour'+tankName);
	colourDiv.innerHTML = colourName.replace(/-/,' ');
	return false;
}

/* Activate the relevant step by hiding all and showing 1*/
function activateStep(stepToActivate){

	var stepDivList = new Array ('firstStep', 'secondStep', 'thirdStep', 'fourthStep');
	var stepTabList = new Array ('step1', 'step2', 'step3', 'step4'); 
	for (ii=0; ii < stepArray.length ; ii++ )
	{	
		if (stepDivList[ii] == stepToActivate){
			currentStep = ii + 1;
		}
		disableField(stepArray[ii]);
	}
	enableField(stepToActivate);
	changeIdClass(stepToActivate,'visibleBlock');
}



function enableField(elementID){
    document.getElementById(elementID).style.visibility="visible";
    document.getElementById(elementID).style.display="";
}

function disableField(elementID){  
    document.getElementById(elementID).style.visibility="hidden";
    document.getElementById(elementID).style.display="none";
}

//Changes the class of an element with id.
function changeIdClass(elementID, newClass){	
	document.getElementById(elementID).className = newClass;	
}


/* Checks to see if checkboxes are empty
*/
function optionsChecked(checkBoxName,formName){
    var obj,len;
    obj = document.forms[formName].elements;
    len= obj.length;

    for(ii=0;ii<len;ii++){
        if ((obj[ii].name==checkBoxName) && (obj[ii].checked == true)){
            return true;
        }
    }
    return false;
}


/** Contact Form **/
function show_other(obj)
{
		document.getElementById("otherlabel").style.display = (obj.value == "Other") ? "" : "none";
		document.getElementById("otherfield").style.display = (obj.value == "Other") ? "" : "none";
}
function validate_text_field(val)
{
	return (val.value.length != 0);
}
function validate_select_field(val)
{
	return (val.value != '');
}
function validate_email_field(val)
{
	//simple email validation, just checks for an @ and a .
	//remove space
	var value = val.value.replace(/^\s*|\s*$/g,"");
	if (value.length < 5)
	{
		return false;
	}
	var valid = false;
	if ((value.indexOf('@') != -1) && (value.indexOf('.') != -1))
	{
		valid = true;
	}
	return valid;
}

function validate()
{
	var form = window.document.getElementById("contactform");
	
	if(!validate_text_field(form.first_name)) 
	{
		alert("You must specify a first name"); 
		form.first_name.focus();
		return false;
	}
	
	if(!validate_text_field(form.surname)) 
	{
		alert("You must specify a surname"); 
		form.surname.focus();
		return false;
	}
	if(!validate_text_field(form.phone)) 
	{
		alert("You must specify a telephone or mobile number"); 
		form.phone.focus();
		return false;
	}
	if(!validate_email_field(form.email_address)) 
	{
		alert("You must specify a valid email address"); 
		form.email_address.focus();
		return false;
	}
	if(!validate_text_field(form.postcode)) 
	{
		alert("You must specify a postcode"); 
		form.postcode.focus();
		return false;
	}
	if(!validate_select_field(form.how_you_heard)) 
	{
		alert("You must specify how you heard about us"); 
		form.how_you_heard.focus();
		return false;
	}
	if(!validate_text_field(form.enquiry_details)) 
	{
		alert("You must specify an enquiry message"); 
		form.enquiry_details.focus();
		return false;
	}
	return true;
}	

