// jsEffects.js


// 01. toggleInputbox
//------------------------------------------------------------------------------------------

function toggleInputbox(id,text,userevent){

	var obj = document.getElementById(id);
	if(obj.value == text && userevent != "blur"){
		obj.value = "";
		obj.className = obj.className + " input_box_active";
	}else if(obj.value == text){
		obj.className = obj.className.replace("input_box_active","");
	}else if(trim(obj.value) == ""){
		obj.value = text;
		obj.className = obj.className.replace("input_box_active","");
	}else{
		obj.value = trim(obj.value);
	}
	
}


// 02. trim
//------------------------------------------------------------------------------------------

function trim(str) {
	str = str.replace(/^\s+/, '');
	for (var i = str.length - 1; i >= 0; i--) {
		if (/\S/.test(str.charAt(i))) {
			str = str.substring(0, i + 1);
			break;
		}
	}
	return str;
}


// 03. toggleTabs
//------------------------------------------------------------------------------------------

function toggleTabs(id){
	
	$('.tab_container').hide();
	$('#'+id).show();
	$('.tab_selected').removeClass('tab_selected');
	$('#tab_'+id).addClass('tab_selected');

}


// 04. formAddReview
//------------------------------------------------------------------------------------------

function formAddReview(){
	replaceButton();
	resetForm('review_form');
	empty = false;
	fm 	= document.review_form;
	
	input_validator('author','_sm');
	input_validator('email','_sm');
	email_validator('email','_sm');
	input_validator('rating_num','_sm');
	input_validator('review','_sm');
	sec_validator('security','_sm');

	if (empty == false){
		document.review_form.submit()
	}else{
		document.getElementById('form_buttons').innerHTML = "<a href='#' onclick='formAddReview()' class='link_variable'><span>Send</span></a>";
	}
}

// 05. formSignUp
//------------------------------------------------------------------------------------------

function formSignUp()
	{
	replaceButton();
	resetForm('signup_form');
	empty 	= false;
	fm 		= document.signup_form;
	
	if(fm.dealer0 && ((fm.dealer0.checked==false && fm.dealer1.checked==false && fm.dealer2.checked==false) && empty == false))
		{
		$('#msg_response').html("Please ensure you have selected at least one dealer");
		$('#msg_response').addClass("msg_error");
		$('#msg_response').slideDown();
		empty=true;
		}
	
	input_validator('fname','');
	input_validator('lname','');
	input_validator('add_1','');
	input_validator('postcode','');
	input_validator('tel','');
	input_validator('email','');
	input_validator('captcha','');
		
	if($('#captcha').val()!=get_cookie('security_code') && empty==false)
		{
		$('#msg_response').html("Please ensure you have entered the security code correctly at the bottom of the form");
		$('#msg_response').addClass("msg_error");
		$('#msg_response').slideDown();
		empty=true;	
		}
	
	if(empty==false)
		document.signup_form.submit()
	else
		document.getElementById('form_buttons').innerHTML = "<a href='#' onclick='formSignUp()' class='link_variable'><span>Send</span></a>";
}


// 05. replaceButton
//------------------------------------------------------------------------------------------

function replaceButton()
	{
	document.getElementById('form_buttons').innerHTML = "<img src='/images/2010/general/eld_sending.gif' alt='Sending' />";
	}


// 06. resetForm
//------------------------------------------------------------------------------------------

function resetForm(obj)
	{
	$('.input_box').removeClass('input_warning');
	$('textarea').removeClass('input_warning');
	$('.warning').addClass('required');
	$('.warning').removeClass('warning');
	$('.hidden').show();
	$('#msg_response').hide();
	}


// 07. input_validator
//------------------------------------------------------------------------------------------

function sec_validator(id,size)
	{
	if($('#'+id).val()!="")
		{
		if(empty == false)
			{
			$('#msg_response').html("Please ensure you have entered all the required information");
			$('#msg_response').addClass("msg_error"+size);
			$('#msg_response').slideDown();
			}
		$('#'+id+' ~ span.required').addClass("warning");
		$('#'+id+' ~ span.hidden').hide();
		$('.warning').removeClass("required");
		$('#'+id).addClass('input_warning');
		empty=true;
		}
	}

function input_validator(id,size)
	{
	if($('#'+id).val()=="")
		{
		if(empty == false)
			{
			$('#msg_response').html("Please ensure you have entered all the required information");
			$('#msg_response').addClass("msg_error"+size);
			$('#msg_response').slideDown();
			}
		$('#'+id+' ~ span.required').addClass("warning");
		$('#'+id+' ~ span.hidden').hide();
		$('.warning').removeClass("required");
		$('#'+id).addClass('input_warning');
		empty=true;
		}
	}


// 08. email_validator
//------------------------------------------------------------------------------------------

function email_validator(obj,size)
	{
	var emailStr 	= $('#'+obj).val()
	var emailPat	= /^(.+)@(.+)$/;
	var specialChars= "\\(\\)!£$%^&*()+='#~?<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars	= "\[^\\s" + specialChars + "\]";
	var quotedUser	= "(\"[^\"]*\")";
	var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom		= validChars + '+';
	var word		= "(" + atom + "|" + quotedUser + ")";
	var userPat		= new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat	= new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray	= emailStr.match(emailPat)
	if ((matchArray==null) && empty==false){message("Email address seems incorrect (check @ and .'s)",obj,size)}
	if (empty==false){var user=matchArray [1];var domain=matchArray [2];if (user.match(userPat)==null){message("The username doesn't seem to be valid.",obj)}}
	if (empty==false){var IPArray=domain.match(ipDomainPat);if (IPArray!=null){for (var j=1;j<=4;j++){if (IPArray[j]>255){message("Destination IP address is invalid!",obj,size)}}}}
	if (empty==false){var domainArray=domain.match(domainPat);if (domainArray==null){message("The domain name doesn't seem to be valid.",obj,size)}}
	if (empty==false){var atomPat=new RegExp(atom,"g");var domArr=domain.match(atomPat);var len=domArr.length;if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3){message("The address must end in a three-letter domain, or two letter country.",obj,size)}}
	if ((len<2) && empty==false){message("This address is missing a hostname!",obj,size)}
	}


// 09. message
//------------------------------------------------------------------------------------------

function message(msg,id,size){

	if(empty == false){
		$('#msg_response').html("Please ensure you have entered all the required information");
		$('#msg_response').addClass("msg_error"+size);
		$('#msg_response').slideDown();
	}
	$('#'+id+' ~ span.required').addClass("warning");
	$('#'+id+' ~ span.hidden').hide();
	$('.warning').removeClass("required");
	$('#'+id).addClass('input_warning');
	empty=true;

}

// 10. Rating Effects
//------------------------------------------------------------------------------------------

function ratingHover(num){
	for (i = 1; i<=5; i++){
		document.getElementById("star_"+i).src = '/images/2010/icon_nostar.jpg';
	}
	for (i = 1; i<=num; i++){
		document.getElementById("star_"+i).src = '/images/2010/icon_star.jpg';
	}		
}
function ratingOut2(){
	window.setTimeout('ratingOut()', 1000);
}
function ratingOut(){
	for (i = 1; i<=5; i++){
		document.getElementById("star_"+i).src = '/images/2010/icon_nostar.jpg';
	}
	var selected = document.getElementById("rating_num").value;
	for (i = 1; i<=selected; i++){
		document.getElementById("star_"+i).src = '/images/2010/icon_star.jpg';
	}
}
function ratingDown(num){
	document.getElementById("rating_num").value = num;
}


// 11. toggleBuyersGuide
//------------------------------------------------------------------------------------------

function toggleBuyersGuide(id,thisid){

	obj = $('#tblcolnum').val()
	obj = parseInt(obj)
	
	$('#msg_response').hide();
	$('#tbl_comparison').show();
	
	if($('.'+id).is(':hidden')){
		if(obj >= 4){
			$('#msg_response').html("Only 4 models can be shown at one time, please deselect a model to select a new one");
			$('#msg_response').addClass("msg_error");
			$('#msg_response').slideDown();
			$('#'+thisid).attr("checked","");
		}else{
			$('.'+id).show();
			$('#tblcolnum').val(obj+1);
			$('#'+thisid).attr("checked","checked");
		}
	}else{
		$('.'+id).hide();
		$('#tblcolnum').val(obj-1);
		$('#'+thisid).attr("checked","");
		if((obj-1) == 0){
			$('#tbl_comparison').hide();
		}
	}

}

// 12. hideColumn
//------------------------------------------------------------------------------------------

function hideColumn(obj){	
	$('.'+obj).hide();
}

function hideColumns(objArray){
	obj = objArray.split(",");for(i=0;i<=obj.length;i++){$('.'+obj[i]).hide();}
}


// 13. toggleOptions
//------------------------------------------------------------------------------------------

function toggleOptions(id){
	$("#"+id+" ~ div").toggle();
}

// 14. Get Cookie
//------------------------------------------------------------------------------------------
function get_cookie(Name) 
	{
	var search = Name + "="
	var returnvalue = "";
	if (document.cookie.length > 0) 
		{
		offset = document.cookie.indexOf(search)
		// if cookie exists
		if (offset != -1) 
			{ 
			offset += search.length
			// set index of beginning of value
			end = document.cookie.indexOf(";", offset);
			// set index of end of cookie value
			if (end == -1) end = document.cookie.length;
			returnvalue=unescape(document.cookie.substring(offset, end))
			}
		}
 	return returnvalue;
	}

// 100. Drop Down Menus
//------------------------------------------------------------------------------------------

var timeout	= 500;
var timein = 0;
var closetimer	= 0;
var currentSub = 0;
var opentimer = 0;


function subOpen(id){
	cancelClose();
	opentimer = window.setTimeout('subOpen2(\''+id+'\')', timein);
	timein = 500;
}

function subOpen2(id){	
	if(opentimer){
		if(currentSub) currentSub.style.display = "none";
		currentSub = document.getElementById(id);
		currentSub.style.display = "block";
		var links = document.getElementById(id).parentNode.parentNode.getElementsByTagName("a");
		for (var i = 0; i < links.length; i++){
			links[i].id = "";
		}
		var links = document.getElementById(id).parentNode.getElementsByTagName("a");
		for (var i = 0; i < links.length; i++){
			links[i].id = "nav_hover";
		}
	}	
}

function subClose(){
	if(currentSub){
		var currentlink = document.getElementById("nav_hover");
		currentlink.id = "";
		currentSub.style.display = "none";
	}
}

function subCloseTimer(){	
	closetimer = window.setTimeout(subClose, timeout);
}

function cancelClose(){
	if(closetimer){
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}

function subCancelClose(){
	subCancelOpen()
	if(closetimer){
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}

function subCancelOpen(){
	if(opentimer){
		window.clearTimeout(opentimer);
		opentimer = null;
	}
}

document.onclick = subClose;

// 101. Zebra Table
//------------------------------------------------------------------------------------------

var stripe = function() 
	{
	//BJD start up event	
	input_btn()
	tab_format()
	
	if(location.hash)toggleTabs(location.hash.replace('#',''))
	
	//
	var tables = document.getElementsByTagName("table");  
	
	for(var x=0;x!=tables.length;x++){
	var table = tables[x];
	if (! table) { return; }
	
	var tbodies = table.getElementsByTagName("tbody");
	
	for (var h = 0; h < tbodies.length; h++) {
	  var even = true;
	  var trs = tbodies[h].getElementsByTagName("tr");
	  
	  for (var i = 0; i < trs.length; i++) {
		trs[i].onmouseover=function(){
		  this.className += " ruled"; return false
		}
		trs[i].onmouseout=function(){
		  this.className = this.className.replace("ruled", ""); return false
		}
		
		if(even)
		  trs[i].className += " even";
		
		even = !even;
	  }
	}
	}
}

window.onload = stripe;