jQuery(function($)
{
	var frm = document.forms["frmorder"];
	var customerRegion = $("#customer-errors");
	$(frm.OrderCustomerFirstName).attachValidator("nonempty",         {region: customerRegion, failMessage: "Vänligen fyll i ditt förnamn."});
	$(frm.OrderCustomerLastName).attachValidator("nonempty",          {region: customerRegion, failMessage: "Vänligen fyll i ditt efternamn."});
	//$(frm.OrderCustomerPersonNo).attachValidator(["nonempty", "ssn"], {region: customerRegion, failMessage: function(type) { if(type=="ssn") return "Ifyllt personnummer verkar inte vara korrekt."; return "Vänligen fyll i ditt personnummer"; }});
	$(frm.OrderCustomerCity).attachValidator("nonempty",              {region: customerRegion, failMessage: "Vänligen fyll i din ort."});
	$(frm.OrderCustomerAddress).attachValidator("nonempty",           {region: customerRegion, failMessage: "Vänligen fyll i din gatuaddress."});
	$(frm.OrderCustomerEmail).attachValidator(["nonempty", "email"],  {region: customerRegion, failMessage: function(type) { if(type=="email") return "Ifylld epostaddress verkar inte vara korrekt."; return "Vänligen fyll i din epostaddress"; }});
	$(frm.OrderPrescribed).attachValidator("checked",                 {region: customerRegion, failMessage: "Du måste verifiera att du har ordinerats dina linser."});
	
	$(frm).attachValidator();
	
	
	// Save any changes to customer info to session, only for 'show'..
	$("#customer-block input, #customer-block select").change(function()
	{
		var em = $(this);
		var value = em.is(":checkbox")?em.is(":checked"):em.val();
		if(em.data("onSave")) value = em.data("onSave")(value);
		
		$.get("/_session.asp", { "var": em.attr("name"), "val": escape(value) });
	});
	
	
	$(frm.OrderCustomerPersonNo).defaultvalue("ÅÅMMDDXXXX")
	// var personNo = $(document.frmorder.OrderCustomerPersonNo);
	// personNo.click(function()
	// {
		// if(this.value == "ÅÅMMDD-XXXX") this.value = "";
	// });
	// personNo.change(function() {0);
	
	$(".hide").hide();
});

(function($) {
	$.fn.defaultvalue = function(value)
	{
		this.each(function()
		{
			var el = $(this);
			el.focus(function()
			{
				if(el.val() == value) el.val("");
				el.removeClass("dim");
			});
			el.blur(function()
			{
				if(el.val() == "")
				{
					el.addClass("dim");
					el.val(value);
				}				
			});
			if(el.val()=="") el.val(value);
			if(el.val()==value) el.addClass("dim");
			
		});
		return this;
	}
})(jQuery)

///                 
/// Subscription    
///                 
jQuery(function($)
{
	// find subscription information regions
	var subscriptionCheckbox = $("#order-subscription-checkbox");
	var subscriptionDetails = $("#SUB_1");
	
	// if the subscriptioncheckbox isnt checked, hide the details region.
	if(!subscriptionCheckbox.is(":checked")) subscriptionDetails.hide();
	
	// when the subscription checkbox is toggled, toggle the details region.
	subscriptionCheckbox.click(function()
	{
		subscriptionDetails.hide();
		if(this.checked) subscriptionDetails.fadeIn(250);
	});
	// Next delivery date
	var nextDelivery = $("#nextDeliveryDate");
	var updateDeliveryDate = function(diff)
	{
		diff = new Number(diff||0);
		var date = new Date();
		date.setDate(date.getDate() + diff);
		var dd = date.getDate().toString();
		var mo = (date.getMonth()+1).toString();
		
		nextDelivery.html(date.getFullYear() + "-" + (mo.length==1?"0":"") + mo + "-" + (dd.length==1?"0":"") + dd);
	}
	
	// add date picker
	//var calendarButton = $("#calbutton"); //calendarButton.show();
	var getMin = function() { return document.frmorder["MinimumDeliveryTime"].value||10; }
	var calendarField = $("#custom-days-until-delivery");
	var calendarTB = $("#custom-days-until-delivery");
	calendarField.change(function() { updateDeliveryDate(this.value); });
	calendarField.data("onSave", function(value) { return calendarField[0].value = Math.max(value,getMin())||0; });
	calendarField.date_input({ validate: function(date) { return Math.max(date,getMin()); } });
	
	// handle the subscription type radio buttons
	var methodRadios = subscriptionDetails.find("input[name=OrderSubscribeMethod]");
	var methodHighlight = function()
	{
		methodRadios.each(function(i)
		{
			$(this).parent().addClass(    this.checked?"subactive":"subinactive");
			$(this).parent().removeClass(!this.checked?"subactive":"subinactive");
			
			if(this.checked)
				updateDeliveryDate(i==0?$("#ORDERCONSUMATION").html():calendarField.val());
		});
	}
	methodHighlight();
	methodRadios.click(methodHighlight);

	calendarTB.click(function(){methodRadios.filter("[value=1]").click();methodHighlight();});
	
});