jQuery(document).ready(function() {
	
	/*****DO this if Javascript is ON*******/
	$('#order_form').show();
	
	/***** Disable ENTER key as form submission *****/
	$('form.orderInfo').keypress(function(e) { 
		if (e.which == 13) return false;
	});
	
	/******* initialize forms - onload or reload page **********/
	$('#enter-customer-id').show();
	$('#enter-contact-person, #enter-billing-address, #review-order, #change-frakt, .delivery-method').hide();
	if ($('input:radio[name=vCartFakturaTil]:checked').val() == '1'){ //If form is reloaded, and radio buttons value is 1, then it will not hide the div.deliveryAddress 
       	$('div.deliveryAddress').show();
	}
	if ($('#subscribe-newsletter-check').attr('checked')){
		$('#subscribe-options').show();		
	}
	else{
		$('#subscribe-options').hide();		
	}
	/******* end of initialize form **********/	
	
	/************ Functions / Validation START****************/
	function isValidTwoChar(text){
		if (text.length < 2) return false; else return true;
	}
	
	function isValidEmailAddress(emailAddress) {
 		var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
 		return pattern.test(emailAddress);
	}
	
	function isEqualTo(text1, text2){
		if ( text1 == text2 ) return true; else return false;
	}
	
	function get_poststeds_navn(value, tag_id) {
		$("#"+tag_id).html('<img src="/img/loading_facebook.gif" alt="">');
		var minlength = 4;
       	var resp = false;
       	
       	if (value.length >= minlength ) {
       		var date = new Date();
       		var timestamp = date.getTime();
       		$.ajax({ 
				url : '/4daction/Ajax_Get_Poststed?t=' + timestamp,
				type : 'POST',
				data : { Nr: value },
				dataType : 'jSon',
				async: false, //Loads data synchronously. Blocks the browser while the requests is active. It is better to block user interaction by other means when synchronization is necessary.
				success : function(obj) { 
            		var result = obj.result;    
					poststed = obj.poststed; 
					if (result == 1) {
						$("#"+tag_id).html(poststed);
						resp = true;
					}
					else {
						$("#"+tag_id).html('<span style="color:red;">postnummer finnes ikke</span>');
						resp = false;
					}
				}
			});
     	}
     	else {
     		$("#"+tag_id).html('<img src="/img/loading_facebook.gif" alt=""> <span style="color:blue;">postnummer må være 4 sifre</span>');
     	}
     	return resp;     	
	}
			
	function showDeliveryAddress(){ 
		$('#enter-delivery-address').fadeIn(500);
		$('#change-frakt').hide();
		$('.delivery-option').show();
		$('.delivery-method').hide();
		$('#enter-contact-person').hide(); 
		$('#enter-billing-address').hide();
		$('#review-order').hide();
	}
		
	function showContactPerson(){ 
		var OK = false;
		
		if( isValidTwoChar( $('#adresserNavn').val() ) ){ 
			$('label.error[for=adresserNavn]').hide(); OK = true;
		}
		else{
			$('label.error[for=adresserNavn]').show(); OK = false;	
		}

		if( isValidTwoChar( $('#adresserLeveringsadresse').val() ) ){ 
			$('label.error[for=adresserLeveringsadresse]').hide(); OK = true && OK;
		}
		else{
			$('label.error[for=adresserLeveringsadresse]').show(); OK = false;	
		}
		
		var adresserPoststed = $('#adresserPoststed').val();
		var resp = get_poststeds_navn(adresserPoststed, 'leveringssted_navn');
		if (!resp) {
			OK = false;
		}
		
		if(OK){
			$('#enter-delivery-address').hide();
			$('#change-frakt').show();
			$('.delivery-option').hide();
			$('.delivery-method').show();
			$('#enter-contact-person').fadeIn(500); 
			$('#enter-billing-address').hide();
			$('#review-order').hide();
		}
		
	}
	
	function showBillingAddress(){ 
		var OK = false;
		
		if(isValidTwoChar($('#ordreBestiltAv').val())){ 
			$('label.error[for=ordreBestiltAv]').hide();OK = true; 
		}
		else{ 
			$('label.error[for=ordreBestiltAv]').show(); OK = false; 
		}
		
		if( isValidEmailAddress( $('#adresserEpost').val() ) ){ 
			$('label.error[for=adresserEpost]').hide(); OK = true && OK;
			if( isEqualTo( $('#adresserEpost').val(), $('#gjentaEpost').val() ) ){ 
				$('label.error[for=gjentaEpost]').hide(); OK = true && OK;
			}
			else{
				$('label.error[for=gjentaEpost]').show(); OK = false;
			}
		}
		else{
			$('label.error[for=adresserEpost]').show(); OK = false;
		}
		
		if( isValidTwoChar( $('#adresserTelefon').val() ) ){ 
			$('label.error[for=adresserTelefon]').hide(); OK = true && OK;
		}
		else{
			$('label.error[for=adresserTelefon]').show(); OK = false;	
		}
			
		if (OK){
			$('#enter-delivery-address').hide();
			$('#change-frakt').show();
			$('.delivery-option').hide();
			$('.delivery-method').show();
			$('#enter-contact-person').hide(); 
			$('#enter-billing-address').fadeIn(500);
			$('#review-order').hide();
		}
	}
	
	function showReviewOrder(){
		var OK = false;
		
		$("#review-delivery-Info").html("<p>Navn (firmanavn/instans): " + $('#adresserNavn').val() + "</p>");
		$("#review-delivery-Info").append("<p>c/o: " + $('#adresserCareOf').val() + "</p>");
		$("#review-delivery-Info").append("<p>Leveringsadresse: " + $('#adresserLeveringsadresse').val() + "</p>");
		$("#review-delivery-Info").append("<p>Poststed: "+$('#adresserPoststed').val()+" "+$('#leveringssted_navn').html()+"</p>");
		
		$("#review-contact-person").html('<p>Kontaktperson/Attention: ' + $('#ordreBestiltAv').val() + '</p>');
		$("#review-contact-person").append("<p>Referanse/rekvisisjon: " + $('#ordreReferanse').val() + "</p>");
		$("#review-contact-person").append("<p>E-post: " + $('#adresserEpost').val() + "</p>");
		$("#review-contact-person").append("<p>Telefon: " + $('#adresserTelefon').val() + "</p>");
		$("#review-contact-person").append("<p>Telefaks: " + $('#adresserTelefaks').val() + "</p>");
						
		if ($('input:radio[name=vCartFakturaTil]:checked').val() == '1'){
			if( isValidTwoChar( $('#cartFakturaNavn').val() ) ){ 
				$('label.error[for=cartFakturaNavn]').hide(); OK = true;
			}
			else{
				$('label.error[for=cartFakturaNavn]').show(); OK = false;	
			}
			
			if( isValidTwoChar( $('#cartFakturaAdresse').val() ) ){ 
				$('label.error[for=cartFakturaAdresse]').hide(); OK = true && OK;
			}
			else{
				$('label.error[for=cartFakturaAdresse]').show(); OK = false;	
			}
			
			var postnummer = $('#cartFakturaPoststed').val();
			var resp = get_poststeds_navn(postnummer, 'getFakturaPoststed');
			if (!resp) {
				OK = false;
			}
		
			$("#review-billing-info").html("<p>Navn (firmanavn/instans): " + $('#cartFakturaNavn').val() + "</p>");
			$("#review-billing-info").append("<p>c/o: " + $('#cartFakturaCareOf').val() +"</p>");
			$("#review-billing-info").append("<p>Fakturaadresse: " + $('#cartFakturaAdresse').val() + "</p>");
			$("#review-billing-info").append("<p>Poststed: " + $('#cartFakturaPoststed').val() + " " + $('#getFakturaPoststed').html() + "</p>"); //Query poststed here
			$("#review-billing-info").append("<p>Anmerkning til bestilling: " + $('textarea#cartBestillingAnmerkning').val() + "</p>");
			
		}
		else{
			$("#review-billing-info").html("<p>Fakturaen sendes med leveransen</p>"); OK = true;
		}
		$('#subscribe-newsletter-email').val( $('#adresserEpost').val() );
		
		if(OK){
			$('#enter-delivery-address').hide();
			$('#change-frakt').show();
			$('.delivery-option').hide();
			$('.delivery-method').show();
			$('#enter-contact-person').hide(); 
			$('#enter-billing-address').hide();
			$('#review-order').fadeIn(500);
		}
	}
	
	/************ Functions / Validation END ****************/

	
	/************* EVENTS BEGIN *****************/
	
	$("#adresserPoststed").keyup(function () {
		var value = $(this).val();
		var resp = get_poststeds_navn(value, 'leveringssted_navn');
    });
    	  	
	$('#kunde, #poststed').focus(function(){ 
		$('#AnonymPoststed').val(""); 
	});
	$('#AnonymPoststed').focus(function(){ 
		$('#kunde, #poststed').val(""); 
	});
	
	$('.show-delivery-address').click(function(){ 
		showDeliveryAddress(); 
	});
		
	$('.show-contact-person').click(function(){ 
		showContactPerson(); 
	});  
	
	$('#adresserNavn, #adresserCareOf, #adresserLeveringsadresse').keydown(function(e){ 
		if (e.which == 13) showContactPerson(); else return true; 
	});
	
	$('.show-billing-address').click(function(){ 
		showBillingAddress(); 
	}); 
	$('#ordreBestiltAv, #ordreReferanse, #adresserEpost, #gjentaEpost, #adresserTelefon, #adresserTelefaks').keydown(function(e){ 
		if (e.which == 13) showBillingAddress(); else return true; 
	});	
	
	$('.show-review-order').click(function(){ 
		showReviewOrder(); 
	});
	$('#cartFakturaTil1, #cartFakturaTil2, #cartFakturaNavn, #cartFakturaCareOf, #cartFakturaAdresse').keydown(function(e){ 
		if (e.which == 13) showReviewOrder(); else return true; 
	});
	
	$("#cartFakturaPoststed").keyup(function(){ 
		var value = $(this).val();
		var resp = get_poststeds_navn(value, 'getFakturaPoststed');
	});
	
	$('input:radio[name=vCartFakturaTil]').change(function(){
    	if ($('input:radio[name=vCartFakturaTil]:checked').val() == '0'){
        	$('div.deliveryAddress').slideUp(200);
		}
   		else if ($('input:radio[name=vCartFakturaTil]:checked').val() == '1'){
        	$('div.deliveryAddress').slideDown(200);
		}
	});
	
	$('#subscribe-newsletter-check').change(function(){
		if ($('#subscribe-newsletter-check').attr('checked')){
			$('#subscribe-options').slideDown(100);		
		}
		else{
			$('#subscribe-options').slideUp(100);		
		}
	});
	
});
