$(document).ready(function(){

	var bodyid = $('body').attr('id');
	
	// A. Close Response Messages
	//------------------------------------------------------------------------------------------

	$('#msg_response').bind("click", function(){
		if($('#msg_response').is(':visible')){
			$("#msg_response").slideUp();
		}
	});

	// B. Sub Navigation
	//------------------------------------------------------------------------------------------

	$('#side_navigation > li').bind('mouseover', jsddm_open);
	$('#side_navigation > li').bind('mouseout',  jsddm_timer);
	$('#side_navigation ul > li').bind('mouseover',  jsddm_subnav);
	$('#side_navigation ul > li').bind('mouseout',  jsddm_subnav);
	
	// C. Tab Lists
	//------------------------------------------------------------------------------------------

	$('.tab_products').hide(); 
	$('.tab_container').find('.tab_products:first').show(); 
	$('.tab_links li:first-child a').addClass('tab_selected');
	$('.tab_links li a').bind('click', toggleSideTabs);
	
	// D. Category Content
	//------------------------------------------------------------------------------------------

	$('#short_content').after("<div class=\"cat_showhide\"><a id=\"show_link\">show information</a></div>"); 
	$('#short_content').hide(); 
	$('.cat_showhide a').bind('click', toggleCatContent);
	
	// E. Rating Hover
	//------------------------------------------------------------------------------------------

	if(bodyid == 'shop-view_product'){
		var url = $('#add_a_review').attr('href');
		$('#product_info .ratings').append('<li><a href="'+url+'" class="colorbox">Add a Review</a></li>'); 
		$('#product_info .ratings li :last').hide(); 
		$('#product_info .ratings li :last').css({position:"absolute", top:"2px", width:"100px"});
		$('#product_info .ratings').css({cursor:"pointer"});
		$('#product_info .ratings').bind('mouseover', toggleRatingsHover);
		$('#product_info .ratings').bind('mouseout', toggleRatingsHover);
		$('#product_info .ratings').colorbox({href:url})
	}

	// F. Initiate Colorbox
	//------------------------------------------------------------------------------------------

	if(bodyid == 'shop-view_product' || bodyid == 'shop-checkout'){
		$(".colorbox").colorbox();
	}
	if(bodyid == 'shop-checkout' || bodyid == 'shop-confirm'){
		$(".colorbox-text").colorbox({width:"75%",height:"550px"});
	}
	
	// G. Checkout Shipping
	//------------------------------------------------------------------------------------------

	if(bodyid == 'shop-checkout'){
		if($("#shipping_details").hasClass('shipping_hide')){
			$("#shipping_details").hide();
		}
	}
	$('#alt_shipping').bind('click', toggleShipping);
	
	
	// H. Quote
	//------------------------------------------------------------------------------------------
	
	if($("#posted").attr('value') == ''){
		$("input[type='submit']").attr('disabled',true);
		$("input[type='submit']").addClass('disabled');
		$("#quote_inputs").parent().hide();
		$("#quote_inputs").hide();
	}
	if($("#posted").attr('value') == 'quote'){
		$("#quote_textarea span").hide();
	}
	if($("#posted").attr('value') == 'advice'){
		$("#quote_inputs").hide();
		$("#quote_inputs").parent().children('h2').html('What problem would you like advice on?');
		$("#quote_textarea label").html("Your Enquiry");
		$("#quote_textarea label").next().addClass('advice');
		$("#quote_textarea span").show();
		
	}
	$('.help_radio').bind('click', toggleQuoteAdvice);
	
	
	// I. Account Address Copy
	//------------------------------------------------------------------------------------------

	if(bodyid == 'my-account' && $('h1').html() == 'Addresses'){
		$('#shipping_details h2').after('<a class="link_simple">Copy Billing Address</a>');
	}
	$('#shipping_details .link_simple').bind('click', copyBillingAddress);
	
	
	// J. Banner Cycle
	//------------------------------------------------------------------------------------------

	if(bodyid == 'index'){
		$(function() {
		eval($('#cycle').cycle({
				fx: 'fade',
				speed: 2500,
				timeout: 5000,
				random: 1,
				pause: 1
			}));
		});	
	}	
	
	
	// K. Xmas Opening
	//------------------------------------------------------------------------------------------
		
	$('.xmasopening').mouseover(function(){
		$('.xmasopeningmore').show();
	});
	$('.xmasopening').mouseout(function(){
		$('.xmasopeningmore').hide();
	});
	

});


// 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. toggleSideTabs
//------------------------------------------------------------------------------------------

function toggleSideTabs(){
	
	/*var id = $(this).attr('id');
	id = id.replace("tab_","tab_products_");
	$('.tab_products').hide(); 
	$('#'+id).show();
	$('.tab_links li a').removeClass('tab_selected');
	$(this).addClass('tab_selected');*/
	var id = $(this).attr('class');
	id = id.replace("tab_products","");
	id = id.replace("tab_","tab_products_");
	id = id.replace("tab_selected","");
	$(this).parents().filter('.tab_container').children('.tab_products').hide(); 
	$(this).parents().filter('.tab_container').children('.'+id).show();
	$(this).parents().filter('.tab_container').children('.tab_links').children('li').children('a').removeClass('tab_selected');
	$(this).addClass('tab_selected');

}

// 04. toggleCatContent
//------------------------------------------------------------------------------------------

function toggleCatContent(){

	if($('#short_content').is(':hidden')){
		$('#short_content').slideDown(); 
		$(this).attr('id','hide_link');
		$(this).html('hide information');
	}else{
		$('#short_content').slideUp(); 
		$(this).attr('id','show_link');
		$(this).html('show information');
	}
}

// 05. toggleRatingsHover
//------------------------------------------------------------------------------------------

function toggleRatingsHover(){

	if($('#product_info .ratings li :last').is(':hidden')){
		$('#product_info .ratings li :last').show();
	}else{
		$('#product_info .ratings li :last').hide();
	}
	
}


// 06. show_image
//------------------------------------------------------------------------------------------

function show_image(img){
	$('.main_img').attr("src","/images/336/336/"+img+".jpg");
	$('.main_img').parent('a').attr("href","/images/1000/1000/"+img+".jpg");
}

// 07. Rating Effects
//------------------------------------------------------------------------------------------

function ratingHover(num){
	$('#add_rating img').attr('src','/img/icon_nostar.jpg');
	for (i = 1; i<=num; i++){
		$('#star_'+i).attr('src','/img/icon_star.jpg');
	}		
}
function ratingOut2(){
	window.setTimeout('ratingOut()', 1000);
}
function ratingOut(){
	$('#add_rating img').attr('src','/img/icon_nostar.jpg');
	var selected = $('#rating_num').val();
	for (i = 1; i<=selected; i++){
		$('#star_'+i).attr('src','/img/icon_star.jpg');
	}
}
function ratingDown(num){
	$('#rating_num').attr('value',num);
}

// 08. replaceButton
//------------------------------------------------------------------------------------------

function replaceButton(){
	$('#form_buttons').html("<img src='/img/sending.gif' alt='Sending' />");
}

// 09. resetForm
//------------------------------------------------------------------------------------------

function resetForm(){

	$("input[type='text']").removeClass('input_warning');
	$('textarea').removeClass('input_warning');
	$('.warning').addClass('required');
	$('.warning').removeClass('warning');
	$('.hidden').show();
	$('#msg_response').remove();

}

// 10. input_validator
//------------------------------------------------------------------------------------------

function input_validator(id){
	if($('#'+id).val()=="" && id != 'security'){
		message(id);
	}else if($('#'+id).val()!="" && id == 'security'){
		if(empty == false){
			$('.common_form').prepend("<div id='msg_response'><div>Please ensure the hidden security field is empty</div></div>");
			$('#msg_response').addClass("msg_error");
			$('#msg_response').slideDown();
		}
		$('#'+id).addClass('input_warning');
		empty=true;
	}
	
}

// 11. email_validator
//------------------------------------------------------------------------------------------

function email_validator(obj){
	
	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(obj,"Email address seems incorrect (check @ and .'s)")}
	if (empty==false){var user=matchArray [1];var domain=matchArray [2];if (user.match(userPat)==null){message(obj,"The username doesn't seem to be valid.")}}
	if (empty==false){var IPArray=domain.match(ipDomainPat);if (IPArray!=null){for (var j=1;j<=4;j++){if (IPArray[j]>255){message(obj,"Destination IP address is invalid!")}}}}
	if (empty==false){var domainArray=domain.match(domainPat);if (domainArray==null){message(obj,"The domain name doesn't seem to be valid.")}}
	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(obj,"The address must end in a three-letter domain, or two letter country.")}}
	if ((len<2) && empty==false){message(obj,"This address is missing a hostname!")}
}

// 12. message
//------------------------------------------------------------------------------------------

function message(id,msg){

	if(!msg){
		msg = "Please ensure you have entered all the required information";
	}
	if(empty == false){
		$('.common_form').prepend("<div id='msg_response'><div>"+msg+"</div></div>");
		$('#msg_response div').addClass("msg_error");
		$('#msg_response').slideDown();
	}
	$('#'+id+' ~ span.required').addClass("warning");
	$('#'+id+' ~ span.hidden').hide();
	$('.warning').removeClass("required");
	$('#'+id).addClass('input_warning');
	empty=true;

}

// 13. IsNumeric
//------------------------------------------------------------------------------------------

function IsNumeric(strString){
	
   var strValidChars = "0123456789.-\u00A3";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;
   for (i = 0; i < strString.length && blnResult == true; i++){
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1){
         blnResult = false;
      }
   }
   return blnResult;
}

// 14. formAddReview
//------------------------------------------------------------------------------------------

function formAddReview(){
	
	replaceButton();
	resetForm();
	
	empty = false;
	input_validator('author');
	input_validator('rating_num');
	input_validator('review');
	input_validator('security');

	if (empty == false){
		$('#review_form').submit();
	}else{
		$('#form_buttons').html("<a href=\"javascript:formAddReview()\" class=\"link60\">Send</a>");
	}
}

// 15. formEmailAFriend
//------------------------------------------------------------------------------------------

function formEmailAFriend(){
	
	replaceButton();
	resetForm();
	
	empty = false;
	input_validator('from_name');
	input_validator('to_name');
	input_validator('to_email');
	email_validator('to_email');

	if (empty == false){
		$('#friend_form').submit();
	}else{
		$('#form_buttons').html("<a href=\"javascript:formEmailAFriend()\" class=\"link60\">Send</a>");
	}	
}

// 16. formBeatThePrice
//------------------------------------------------------------------------------------------

function formBeatThePrice(){
	
	replaceButton();
	resetForm();
	
	empty = false;
	input_validator('name');
	input_validator('email');
	email_validator('email');
	input_validator('price');
	var price = $('#price').val();
	//price = price.replace("\u00A3","");
	if(!IsNumeric(price)){
		message('price','Please ensure the price entered is a number');						 
	}
	input_validator('website');

	if (empty == false){
		$('#beat_form').submit();
	}else{
		$('#form_buttons').html("<a href=\"javascript:formBeatThePrice()\" class=\"link60\">Send</a>");
	}	
}


// 17. toggleShipping
//------------------------------------------------------------------------------------------

function toggleShipping(){
	if ($('#shipping_details').is(":hidden")){
        $('#shipping_details').fadeIn("normal");
	}else{
        $('#shipping_details').fadeOut("normal");
	}
}


// 18. toggleQuoteAdvice
//------------------------------------------------------------------------------------------

function toggleQuoteAdvice(){
	$("#quote_textarea").show();
	$("input[type='submit']").attr('disabled','');
	$("input[type='submit']").removeClass('disabled');
	if($(this).attr('value') == 'quote'){
		$("#quote_inputs").parent().show();
		$("#quote_inputs").show();
		$("#quote_textarea label").html("Additional Information");
		$("#quote_textarea label").next().removeClass('advice');
		$("#quote_inputs").parent().children('h2').html('Your Quote');
		$("#quote_textarea span").hide();
	}else{
		$("#quote_inputs").parent().show();
		$("#quote_inputs").hide();
		$("#quote_inputs").parent().children('h2').html('What problem would you like advice on?');
		$("#quote_textarea label").html("Your Enquiry");
		$("#quote_textarea label").next().addClass('advice');
		$("#quote_textarea span").show();
	}
}


// 19. copyBillingAddress
//------------------------------------------------------------------------------------------

function copyBillingAddress(){
	$('#del_firstname').val($('#billing_firstname').val())
	$('#del_lastname').val($('#billing_lastname').val())
	$('#del_addr1').val($('#billing_addr1').val())
	$('#del_addr2').val($('#billing_addr2').val())
	$('#del_addr3').val($('#billing_addr3').val())
	$('#del_city').val($('#billing_city').val())
	$('#del_county').val($('#billing_county').val())
	$('#del_postcode').val($('#billing_postcode').val())
}

// 100. drop down navigation
//------------------------------------------------------------------------------------------

var timeout    = 500;
var closetimer = 0;
var ddmenuitem = 0;

function jsddm_open(){  
	jsddm_canceltimer();
	jsddm_close();
	ddmenuitem = $(this).find('ul').css('display', 'block');
	$(this).addClass("nav_hover");
	$(this).prev().addClass("no_border");
}

function jsddm_close(){
	if(ddmenuitem) ddmenuitem.css('display', 'none');
	if(ddmenuitem) $('.nav_hover').removeClass("nav_hover");
	if(ddmenuitem) $('#side_navigation > li.no_border').removeClass("no_border");
}

function jsddm_timer(){
	closetimer = window.setTimeout(jsddm_close, timeout);
}

function jsddm_canceltimer(){
	if(closetimer){
		window.clearTimeout(closetimer);
      	closetimer = null;
	}
}

function jsddm_subnav(){  
	if($(this).prev().hasClass('no_border')){
		$(this).prev().removeClass('no_border');
	}else{
		$(this).prev().addClass("no_border");
	}
}

document.onclick = jsddm_close;
