// JavaScript Document


function setup_smug(){
	setup_forms();
	give_login_focus();
	setup_product();
	replaceJovers();
}


var Ctrl = {init:function(){
	Ctrl.isDown = false;
	$(document).keydown(function(e) {
		if(e.ctrlKey) Ctrl.isDown = true;
	}).keyup(function(e) {
		if(!e.ctrlKey) Ctrl.isDown = false;
	});
}}; Ctrl.init();

function replaceJovers(){
		var jovers = $('.jover');
		jovers.each(function(index){
			var jover = $(this);		
			var over = jover.attr("data-jover");
			var out = jover.attr("data-joff");
			var href = jover.find("a").attr("href");
			if(!href) return false;
			var target = jover.find("a").attr("target");
			jover.hover(function(){
				if(over) jover.css('backgroundImage',"url('"+over+"')");
				jover.css('cursor',"pointer");
				jover.addClass('over');			
			},function(){
				if(out) jover.css('backgroundImage',"url('"+out+"')");
				jover.css('cursor',"auto");
				jover.removeClass('over');						
			});

			jover.click(function(e){
				e.preventDefault();
				if(Ctrl.isDown || target == "_blank"){
					window.open(href, "_blank");	
				}else{
					window.location.href = href;
				}

			})
			//Preload
			if(over){
				var img = new Image();
				img.src = over;
			}
		});
	}


function give_login_focus(){

	var f = $("form.login_form");
	if(f.size()){
	
		var e = f.find("[name='xEmailAddress']");
		var p = f.find("[name='xCustPassword']");
		if(!e.val()){
			e.get(0).focus();
		}else{
			p.get(0).focus();
		}
	}
}

function setup_forms(_form){
	$("input.submittable").keypress(function(event) {
		if (event.keyCode == '13') {
			$(this).parents("form").get(0).submit();
			return false;
		}
   });
}

function setup_product(){
	var main 	= $(".product-image-main");
	var thumbs 	= $(".product-thumb");
	thumbs.click(
		function(){
			if(main) main.attr("src",$(this).attr("src"));
		}
	)	
}

var Excludes = function(_selects,_outputs){

	var selects = _selects;
	var outputs = _outputs;
	
	var setup = function(){
		if(!outputs.length) return false;
		for(var i in selects) $('select[name="'+selects[i]+'"]').change(update);
		update();
	}
	
	var update = function(){
		var selected = {};
		
		//Reset all the selects
		for(var i in selects){
			var name = selects[i];
			var s = $('select[name="'+name+'"]');
			var v = s.val();
			if(v) selected[name] = v;
			//Turn all the options back on
			s.find("option").each(function(){
				var option = $(this);
				option.attr("disabled",null);
				if(option.data("default")) option.html(option.data("default"));
			})					
		}
		
		var excludes = getExcludes(selected);
		
		var excludes_exist = false;
		for(var key in excludes){
			var s = $('select[name="'+key+'"]');				
			var values = excludes[key];
			for(var i in values){
				var value = values[i];
				var option = s.find("option[value='"+value+"']");
				option.attr("disabled",1);
				option.data("default",option.html());
				option.html(option.data("default") + "*");
			}
			excludes_exist = true;				
		}
		
		if(excludes_exist){
			$(".excludes_error").show();
		}else{
			$(".excludes_error").hide();
		}
	}
	
	var getExcludes = function(selected){

		var results = {};
		
		for(var i in outputs){
			var output = outputs[i];
			var output_copy = clone(output);
			var matches = 0;
			var total = 0;
			for(var output_key in output){
				total++;					
				var output_value = output[output_key];
				for(var selected_key in selected){
					var selected_value = selected[selected_key];
					if(output_key == selected_key && output_value == selected_value){
						delete output_copy[output_key];
						matches++
					}
				}
			}
			if(matches == total -1){
				for(var index in output_copy){ var result = output_copy[index]; break; }
				if(!results[index]) results[index] = [];
				results[index].push(result);
			}
		}
		return results;		
	}
	
	var clone = function(obj) {
		if (null == obj || "object" != typeof obj) return obj;
		var copy = obj.constructor();
		for (var attr in obj) {
			if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];
		}
		return copy;
	}
	
	setup();
	
};

	var GeneralNextBack = function(backLink,nextForm){
		
		var setup = function(backLink,nextForm){
			//Setup navigation
			$(".next_button a").click(function(){
				var d = document.getElementsByName(nextForm);
				d[0].submit();
				return false;
			})
			
			$(".back_button a").click(function(e){
				window.location  = backLink;
				return false;			
			})
		}
		
		setup(backLink,nextForm);
	}

var DeliveryAddresses = function(_selects,_outputs){
	
	var setup = function(){
		
		$("input[type='radio']").click(update);
	
		//Setup navigatino
		$(".next_button a").click(function(){

			return next();
		})
		
		$(".back_button a").click(function(e){
			return prev($(this).parent().attr("data-jsscart"));
		})
		
		
		update(true);
		
	}
	
	var update = function(init){

		var label = 'label_billing';
		if(document.getElementById('billing').checked == true) highlight(label,true);
		else highlight(label,false);
		
		$(".alt_addresses input").each(function(){
			var label = "label_" + $(this).attr("id");
			if($(this).attr("checked")) highlight(label,true);
			else  highlight(label,false);
		});

		var label = 'label_new_address';
		if(document.getElementById('new_address').checked == true){
		
			highlight(label,true);
			disable(false)
			
		}else{
			highlight(label,false);
			disable(true);
			if(init) clearForm();
		}
			
	}

	var disable = function(dir){
		var inputs = $(".new_address input, .new_address select");
		inputs.attr('disabled', dir ? 'disabled' : null);
		
		if(dir) inputs.parent().addClass("disabled");
		else 	inputs.parent().removeClass("disabled");

		inputs.parent().unbind("click");
		if(dir){
			inputs.parent().click(function(){
				$('#new_address').attr("checked","checked");
				update();
			});
		}

	}
	
	var highlight = function(label,dir){
		if(dir) $('#'+label).addClass("selected");
		else $('#'+label).removeClass("selected");
	} 
	
	var clearForm = function(){
		$(".new_address input, .new_address select").val("");
	}
	
	var next = function(){
		
	
		
		//Use billing address
		if(document.getElementById('billing').checked == true)  window.location =  unescape($("#billing").attr("data-link"));
		
		
		//Use alt address
		$(".alt_addresses input").each(function(){
			if($(this).attr("checked"))  window.location = unescape($(this).attr("data-link"));
		});

		//Submit new
		if(document.getElementById('new_address').checked == true) $('.new_address').submit();
				
		return false;	
	}
	
		
	
	
	var prev = function(jssCart){
		return true;
	}
	
	setup();
}

var PaymentOptions = function(currentPaymentOption, total){
		
		this.current = "";
		this.radios;
		this.radioHolders;
	
		var setup = function(currentPaymentOption, total){

			this.radios = $('form .checkout_select input');
			this.radioHolders = $('form .checkout_select');

			closePayments();				
			if(total == 0){
				unselectAll();
			}else{
				openPayment(currentPaymentOption);				
			}
		
			
			this.radios.each(function(){
				var r = $(this);
				r.click(function(){
					togglePayment(r.val(),true);
				});
			});
			
			$('#toggleSwitchSelect').change(function(){ toggleSwitch($(this).val(),false) });
			
			toggleSwitch($('#toggleSwitchSelect').val(),true);
			
			//Setup navigatino
			$(".next_button a").click(function(){
				return next();
			})
			
			$(".back_button a").click(function(e){
				return prev($(this).parent().attr("data-jsscart"));
			})
			

			
		}
		
		var closePayments = function(except,animate){
			var radios = this.radios;
		
			radios.each(function(){
				var holder = $(this).parent();
				var content = holder.next();
				var value = $(this).val();
				if(except == value) return;
				if(animate) content.slideUp();
				else content.hide();
			})
			
		};
		
		var openPayment = function(val,animate){

			var radio = this.radioHolders.find("input[value='"+val+"']");
			var content = radio.parent().next();
			
			if(animate) content.slideDown();
			else content.show();

		};
		
		var togglePayment = function(val,animate){
			closePayments(val,animate);
			openPayment(val,animate);
			this.current = val;
		};
		
		var toggleSwitch = function(val,instant){
			var d = $('#switch');
			if(instant){
				if(val == 'Switch' || val == 'Solo') d.show();
				else d.hide();
			}else{
				if(val == 'Switch' || val == 'Solo') d.slideDown();
				else d.slideUp();
			}
		};
		
		var unselectAll = function(){
			//<#if:cart.totals.orderNumber:gt:0#>
			this.radios.attr("checked","");
		}
		
		var next = function(jssCart){
			document.checkoutForm.submit();
			return false;			
		}
		
		var prev = function(jssCart){
			var l = "/checkout.php?xCmd=s2&xFrom=s3&jssCart=" + jssCart
			window.location  = l;
			return false;
		}
		
		setup(currentPaymentOption,total);
	}
	
	var Confirmation = function(backLink,confirmForm){
		
		var setup = function(backLink,confirmForm){
			//Setup navigatino
			$(".next_button a").click(function(){
				var d = document.getElementsByName(confirmForm);
				d[0].submit();
				return false;
			})
			
			$(".back_button a").click(function(e){
				window.location  = backLink;
				return false;			
			})
		}
		
		setup(backLink,confirmForm);
	}
	
	var Wishlist = function(_defaultText){
	
		var textareas = $('textarea');
		var defaultText = _defaultText;


	
		var setup = function(){
			textareas.each(function(){
				var t = $(this);
				updateDefault($(this))
				t.focus(	function(){updateDefault(t,true)}	);
				t.blur(		function(){updateDefault(t,false)}	);				
			})
			
			$(".submit_button").click(function(){
				update()
				$(".submit_button").parents("form").get(0).submit();
				return false;
			});
			
			$(".qty_select").change(function(){
				update()
				$(".qty_select").parents("form").get(0).submit();
				console.log("pdate")
				return false;
			});
			
		}
		
		var updateDefault = function(t,blank){
			if(!t) t = $(this);
			

			if(!t.val())					showDefault(t);
			else if(t.val() != defaultText)	hideDefault(t);
			else if(blank) hideDefault(t,true);
		}
		
		var showDefault = function(t){
			if(t.is(":focus")) return false;
			t.val(defaultText).addClass("defaultText")
		}
		
		var hideDefault = function(t,blank){
			if(blank) t.val("");
			t.removeClass("defaultText")
			
		}
		

		var update = function(){
			//Swap button to a span
			var b = $(".submit_button");
			var t = b.html();
			var c = b.attr("class");
			var n = $("<span class='"+c+"'>" + t + "</span>");
			b.replaceWith(n);

			textareas.each(function(){
				updateDefault($(this),true);
			});
		}
		setup();
	
	}
