(function($){
	/* Model overview click */
	$('.img-wrap div a').click(function (e) {
		e.preventDefault();
		var data = $(this).find("img").attr("src"), html = "<img src=\""+data+"\"/>";
		$.modal(html);
	});
	$('.zoom').click(function (e) {
		e.preventDefault();
		var data = $(this).prev().find("img").attr("src"), html = "<img src=\""+data+"\"/>";
		$.modal(html);
	});

	/* Cart */
	var select = $("#sBoatType");
	select.change(function(){
		// ajax stuff for assortiment 
		var uc = $(this).find("option:selected").html();
		$.getJSON("/remote/remote.php", {"unique_code":uc},function(json){
			var content = '';
			$.each(json.products, function(i,v){
				content += "<option value=\""+v.url+"add-to-cart/?relocate=/show-catalog/show-cart/\">"+v.unique_code+"</option>\n";
			});
			if (json.products.length == 0){
				content = "<option disabled=\"disabled\">Geen accessoires beschikbaar</option>";
			}
			$("#sAccesoire").html(content);
		})
	});
	$(".add").click(function(e){
		val = $(this).prev().val();
		if (val != "x"){
			postFormData(function(){
				window.location.href = val;			
			});			
		}
		return false;
	});
	
	
	$("li.active a:not(.add)").click(function(){
		link = this.href;
		if ($(this).hasClass("delete")){
			var c = confirm("Weet u zeker dat u dit product wilt verwijderen?");
			if(c === false){
				return false;
			}
		}
		postFormData(function(){
			window.location.href = link;
		});
		return false;
	});	
	
	var postFormData = function(callback){
		var formdata = $("#order-form").serializeArray();
		$.post("/remote/saveForm.php", formdata, function(data){
			callback();
		});		
	}
	
	
	/* Validate cart */
	$.extend($.validator.messages, {
		required: "Dit is een verplicht veld.",
		remote: "Controleer dit veld.",
		email: "Vul hier een geldig email adres in.",
		url: "Vul hier een geldige URL in.",
		date: "Vul hier een geldige datum in.",
		number: "Vul hier een geldig nummer in.",
		digits: "Vul hier alleen nummers in.",
		maxlength: $.format("Vul hier maximaal {0} tekens in."),
		minlength: $.format("Vul hier minimaal {0} tekens in."),
		rangelength: $.format("Vul een waarde in van minimaal {0} en maximaal {1} tekens."),
		range: $.format("Vul een waarde in tussen {0} en {1}."),
		max: $.format("Vul hier een waarde in kleiner dan of gelijk aan {0}."),
		min: $.format("Vul hier een waarde in groter dan of gelijk aan {0}.")
	});
	
	/* Postal validator */
	$.validator.addMethod("postal", function(value, element) {return this.optional(element) || /^[0-9]{4}\s?([a-zA-Z]{2})?$/.test(value);}, "Geef een geldige postcode op");		
	
	var of = $("#order-form");
	if (of.size() > 0){
		var container = $('div.container'),
		validateOptions = {
			"errorPlacement": function(label, input){
				var labelcontent = "";
				label.prependTo(input.closest("li"));
			}
		};
		
		validateOptions = {
			"rules": {
				"address[Default][contact]": {"required":"#bSameAsBillingAddress:unchecked"},
				"address[Default][company]": {"required":"#bSameAsBillingAddress:unchecked"},
				"address[Default][line1]": {"required":"#bSameAsBillingAddress:unchecked"},
				"address[Default][postal]": {"required":"#bSameAsBillingAddress:unchecked"},
				"address[Default][city]": {"required":"#bSameAsBillingAddress:unchecked"}
			},
			"errorPlacement": function(label,input){},
			"invalidHandler": function(form, validator) {
				var fb = $("#warning");
				if (fb.size() === 0){
					$(".content").prepend('<div id="warning"><p>Vul aub alle verplichte velden in. [<a onclick="jQuery(this).parent().parent().remove();return false;" href="#">verberg bericht</a>]</p></div>');
				}
				$(".content").get(0).scrollIntoView(true);
			},
			"submitHandler": function(f){
				// all seems right, check if there are items in the cart..
				if ($("tr.article").size() > 0){
					f.submit();
				}else{
					var fb = $("#warning");
					fb.remove();
					//if (fb.size() === 0){
						$(".content").prepend('<div id="warning"><p>Uw winkelwagen is nog leeg, voeg aub minimaal 1 artikel toe. [<a onclick="jQuery(this).parent().parent().remove();return false;" href="#">verberg bericht</a>]</p></div>');
					//}
					$(".content").get(0).scrollIntoView(true);			
				}
			}
		};
		
		of.validate(validateOptions);
	}
})(jQuery);
