/**
 * Front-end functions file
 * Raido Aasoja - raido.aasoja@gmail.com
 */

$(document).ready(function(){
	
        /**
	 * Helpers carousel:
	 */
        $("#carousel2").jcarousel({
                wrap: 'circular',
                scroll: 1,
                auto: 4,
                speed: "fast"
        });
	
        /**
	 * Vertically scoll to center when on products/categories page and viewport/screen is too small in height
	 */
        //	var scroll_center = $("#sc-center").length;
        //	if (scroll_center > 0) { // if length is 1, we know that we have to scroll to that element
        //		var viewport_half = Math.round($(window).height() / 2);
		
        //		$('html,body').animate({
        //			scrollTop: $("#sc-center").offset().top - viewport_half
        //		}, 'fast');
        //	}
	
        /**
	 * 
	 * Lightbox for products
	 * 
	 */
        $(".fancy").fancybox({
                'cyclic': true,
                'centerOnScroll': true,
                'hideOnContentClick': true,
                'overlayColor' : '#333'
        //		'index': 4
        });

        
        $(".cofi").fancybox({
                'scrolling'		: 'auto',
                'titleShow'		: false,
                'height'		: 500,
                'width'                 : 600,
                'autoDimensions'        : false,
                ajax : {
                        beforeSend: function(header){
                                //Recommended, however for IE browsers this is an unsupported method, so leave it commented out (for now).
                                //header.overrideMimeType('text/plain');
                                header.setRequestHeader('From',SB_SandboxKey);
                        },
                        type : "POST",
                        data : 'act=cofi-form&data='+$('a.cofi').attr('d')
                },
                'onClosed' : function(){
                        window.location.reload();
                },
                'onComplete'               : function(){
                        $("#cofi-credit-form input").focusin(function() {
                                $(this).siblings("span").fadeIn(500);
                        });

                        $("#cofi-credit-form input").focusout(function() {
                                $(this).siblings("span").hide();
                        });
                        
                        /**
                         * 
                         * submit cofi form
                         * 
                         */
                        $("#cofi-credit-form-submit").click(function() {
                                errors = 0;
                                // Check for required fields:
                                var email_regexp = new RegExp("^.+@[^\.].*\.[a-z]{2,}$", "i"); // will allow addresses with + sign too
                                $("#cofi-credit-form input.required, #cofi-credit-form select.required, #cofi-credit-form textarea.required").each(function() {
                                        var element = $(this).attr("name");
                                        if ($.trim($(this).val()) == '' || $.trim($(this).val()).length < 3) {
                                                $(this).css({
                                                        "border-color" : "red", 
                                                        "color" : "#000", 
                                                        "background" : "#FFBDCB"
                                                });
                                                errors = 1;
                                        } else {
				
                                                // validate email and phone too:
                                                if (element == 'email' && false) {
                                                        var email_validated = email_regexp.test(removeSpaces($(this).val()));
                                                        if ( ! email_validated) {
                                                                errors = 1;
                                                                $(this).css({
                                                                        "border-color" : "red", 
                                                                        "color" : "#000", 
                                                                        "background" : "#FFBDCB"
                                                                });
                                                        } else {
                                                                $(this).css({
                                                                        "border-color" : "#C7C9C9", 
                                                                        "color" : "#989898", 
                                                                        "background" : "#FFFFFF"
                                                                });
                                                        }
                                                } else if (element == 'personal_code' && false) {
                                                        var code_validated = validateCode(removeSpaces($(this).val()));
                                                        if ( ! code_validated) {
                                                                errors = 1;
                                                                $(this).css({
                                                                        "border-color" : "red", 
                                                                        "color" : "#000", 
                                                                        "background" : "#FFBDCB"
                                                                });
                                                        } else {
                                                                $(this).css({
                                                                        "border-color" : "#C7C9C9", 
                                                                        "color" : "#989898", 
                                                                        "background" : "#FFFFFF"
                                                                });
                                                        }
                                                } else if (element == 'document_expiration') {
                                                        var date_validated = isDate(removeSpaces($(this).val()));
                                                        if ( ! date_validated) {
                                                                errors = 1;
                                                                $(this).css({
                                                                        "border-color" : "red", 
                                                                        "color" : "#000", 
                                                                        "background" : "#FFBDCB"
                                                                });
                                                        } else {
                                                                $(this).css({
                                                                        "border-color" : "#C7C9C9", 
                                                                        "color" : "#989898", 
                                                                        "background" : "#FFFFFF"
                                                                });
                                                        }
                                                } 
                                                else {
                                                        $(this).css({
                                                                "border-color" : "#999999", 
                                                                "color" : "#989898", 
                                                                "background" : "#FFFFFF"
                                                        });
                                                }
                                        }
			
			
                                });
		
                                if (errors == 0) {
                                        var serialized_form = $("#cofi-credit-form").serialize();
                                        $.ajax({
                                                type: "POST",
                                                url: "/controllers/ajax.php",
                                                data: "act=submit-cofi-form&="+serialized_form,
                                                dataType: "json",
                                                async: false,
                                                beforeSend: function(header){
                                                        //Recommended, however for IE browsers this is an unsupported method, so leave it commented out (for now).
                                                        //header.overrideMimeType('text/plain');
                                                        header.setRequestHeader('From',SB_SandboxKey);
                                                },
                                                success: function(msg){
                                                        if (msg.status == 'OK') {
                                                                $.fancybox(msg.message);
                                                        
                                                        } else {
                                                                $.fancybox(msg.message);
                                                        }
                                                },
                                                error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                                        var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
						textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                                                }
                                        }); // END: $.ajax
                                } else {
                                        $("p.error").fadeIn(500);
                                }
                                
                                return false;
                        });
                }

        });
        
        /**
	 * 
	 * Product view: when small picture is clicked, load bigger version of it
	 * 
	 */
        $(".zoom_trigger").click(function() {
                var big_picture_a = $("a.fancy_big_picture_a");
                var big_picture_img = $("img.fancy_big_picture_img");
		
                big_picture_a.attr("href", "/uploads/pictures/" + $(this).attr('title'));
                big_picture_img.attr("src", "/uploads/pictures/large/" + $(this).attr('title'));
        });
	
	
        /**
	 * 
	 * User registration:
	 * 
	 */
        $("#create-user-submit").click(function() {
                var serialized_form = $("#create-user").serialize();
                var lang_code = $("#lang-code").html();
                var errors = 0;
                $("p.error").hide();
                var phone_regexp = new RegExp("^[+]?[0-9]{0,3}[\.]?[0-9]{1,14}$", "i");
                var email_regexp = new RegExp("^.+@[^\.].*\.[a-z]{2,}$", "i"); // will allow addresses with + sign too - like raido.aasoja+test@mikare.net
		
                // hide message:
                $("#create-user-message").hide();
		
                // Check for required fields:
                $("#create-user .required").each(function() {
                        var element = $(this).attr("name");
                        //			alert(element);
			
                        if ($.trim($(this).val()) == '' || $.trim($(this).val()).length < 3) {
                                if (element == 'f_billing_county' || element == 'f_delivery_county') {
                                        var selected_value = $(this + ":selected").val();
                                        if (selected_value == '') {
                                                $(this).css({
                                                        "border-color" : "red", 
                                                        "color" : "#000", 
                                                        "background" : "#FFBDCB"
                                                });
                                                errors = 1;
                                        } else {
                                                $(this).css({
                                                        "border-color" : "#C7C9C9", 
                                                        "color" : "#989898", 
                                                        "background" : "#FFFFFF"
                                                });
                                        }
					
                                } else {
                                        $(this).css({
                                                "border-color" : "red", 
                                                "color" : "#000", 
                                                "background" : "#FFBDCB"
                                        });
                                        errors = 1;
                                }
                        } else {
                                if (element == 'f_password' || element == 'f_password_again') {
                                        // Check for password matching:
                                        if ($("input[name='f_password']").val() != $("input[name='f_password_again']").val()) {
                                                errors = 1;
                                                $("input[name='f_password']").css({
                                                        "border-color" : "red", 
                                                        "color" : "#000", 
                                                        "background" : "#FFBDCB"
                                                });
                                                $("input[name='f_password_again']").css({
                                                        "border-color" : "red", 
                                                        "color" : "#000", 
                                                        "background" : "#FFBDCB"
                                                });
                                        } else {
                                                $("input[name='f_password']").css({
                                                        "border-color" : "#C7C9C9", 
                                                        "color" : "#989898", 
                                                        "background" : "#FFFFFF"
                                                });
                                                $("input[name='f_password_again']").css({
                                                        "border-color" : "#C7C9C9", 
                                                        "color" : "#989898", 
                                                        "background" : "#FFFFFF"
                                                });
                                        }					
                                } else {
                                        // validate email and phone too:
                                        if (element == 'f_phone') {
                                                var phone_validated = phone_regexp.test(removeSpaces($(this).val()));
                                                if ( ! phone_validated) {
                                                        errors = 1;
                                                        $(this).css({
                                                                "border-color" : "red", 
                                                                "color" : "#000", 
                                                                "background" : "#FFBDCB"
                                                        });
                                                } else {
                                                        $(this).css({
                                                                "border-color" : "#C7C9C9", 
                                                                "color" : "#989898", 
                                                                "background" : "#FFFFFF"
                                                        });
                                                }
                                        } else if (element == 'f_email') {
                                                var email_validated = email_regexp.test(removeSpaces($(this).val()));
                                                if ( ! email_validated) {
                                                        errors = 1;
                                                        $(this).css({
                                                                "border-color" : "red", 
                                                                "color" : "#000", 
                                                                "background" : "#FFBDCB"
                                                        });
                                                } else {
                                                        $(this).css({
                                                                "border-color" : "#C7C9C9", 
                                                                "color" : "#989898", 
                                                                "background" : "#FFFFFF"
                                                        });
                                                }
                                        } else {
                                                $(this).css({
                                                        "border-color" : "#C7C9C9", 
                                                        "color" : "#989898", 
                                                        "background" : "#FFFFFF"
                                                });
                                        }
					
                                }
                        }
			
			
                });
                // Check if user agreed with terms:
                if($("input[name='f_agree_with_terms']" + ":checked").length < 1) {
                        $("input[name='f_agree_with_terms']").parent("td").css({
                                "border" : "1px solid red", 
                                "color" : "red", 
                                "background" : "#FFBDCB", 
                                "padding" : "6px"
                        });
                        errors = 1;
                } else {
                        $("input[name='f_agree_with_terms']").parent("td").css({
                                "border" : "0", 
                                "color" : "#989898", 
                                "background" : "#FFFFFF", 
                                "padding" : "6px 0"
                        });
                }
		
                /**
		 * Check if discount card was filled in and if it gets positive match:
		 */
                var discount_card_field = $("input[name='f_discount_card']");
                var discount_card_code = $.trim(discount_card_field.val());
                var name = $.trim($("input[name='f_name']").val());
                var company_name = $.trim($("input[name='f_company_name']").val());
		
                if (discount_card_code != '' && (name != '' || company_name != '')) {
                        // Do ajax call to check if card is valid:
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                data: {
                                        act: "check_discount_card",
                                        lang_code: lang_code,
                                        discount_card_code: discount_card_code,
                                        client_name: name,
                                        client_company_name: company_name
                                },
                                dataType: "json",
                                async: false,
                                success: function(msg){
                                        if (msg.status == 'OK') {
                                        // 1) hide form:
                                        //						$("#create-user").fadeOut(500, function() {
                                        //							$("#create-user-message").html(msg.message);
                                        // style message box:
                                        //							$("#create-user-message").css({"border" : "1px solid green", "color" : "green", "background" : "#dbe7d6"});
                                        // show message:
                                        //							$("#create-user-message").fadeIn(500);
                                        //						});
                                        // 2) clear all form fields:
                                        //						$("#create-user input").val("");
						
                                        } else {
                                                errors = 1;
                                                // display message about failed account creation:
                                                $("#create-user-message").html(msg.message);
                                                $("#create-user-message").css({
                                                        "border" : "1px solid red", 
                                                        "color" : "red", 
                                                        "background" : "#FFBDCB"
                                                });
                                                $("#create-user-message").fadeIn(500);
                                                alert("discount card check failed");
                                                return false;
                                        }
                                },
                                error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                        var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
						textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                                        errors = 1;
                                }
                        });
                }
		
		
		
                // Continue with form posting:
                if (errors == 0) {
			
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                data: "act=create_user&lang_code=" + lang_code + "&" + serialized_form,
                                dataType: "json",
                                success: function(msg){
                                        if (msg.status == 'OK') {
                                                // 1) hide form:
                                                $("#create-user").fadeOut(500, function() {
                                                        $("#create-user-message").html(msg.message);
                                                        // style message box:
                                                        $("#create-user-message").css({
                                                                "border" : "1px solid green", 
                                                                "color" : "green", 
                                                                "background" : "#dbe7d6"
                                                        });
                                                        // show message:
                                                        $("#create-user-message").fadeIn(500);
                                                });
					 
                                                // 2) clear all form fields:
                                                $("#create-user input").val("");
						
                                        } else {
                                                // display message about failed account creation:
                                                $("#create-user-message").html(msg.message);
                                                $("#create-user-message").css({
                                                        "border" : "1px solid red", 
                                                        "color" : "red", 
                                                        "background" : "#FFBDCB"
                                                });
                                                $("#create-user-message").fadeIn(500);
                                        }
                                },
                                error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                        var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
						textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                                }
                        });
                } else {
                        $("p.error").fadeIn(500);
			
                }
		
                return false;
		
        });
	
	
        /**
	 * 
	 * User login (on login page):
	 * 
	 */
        $("#main-login-button").click(function() {
		
                var errors = 0;
		
                var email_regexp = new RegExp("^.+@[^\.].*\.[a-z]{2,}$", "i"); // will allow addresses with + sign too - like raido.aasoja+test@mikare.net
                if ($.trim($("#login-form input[name='f_email']").val()) != '') {
                        var email_validated = email_regexp.test(removeSpaces($("#login-form input[name='f_email']").val()));
                        if ( ! email_validated) {
                                errors = 1;
                        }
                } else {
                        errors = 1;
                }
		
		
                if (errors == 0) {
                        $("#login-form").submit();
                        return false;
                } else {
                        $("#login-form input[name='f_email']").css({
                                "border-color" : "red", 
                                "color" : "#000", 
                                "background" : "#FFBDCB"
                        });
                        return false;
                }
        });
	
	
        /**
	 * 
	 * User login (on sidebar):
	 * 
	 */
        $("#sidebar-login-button").click(function() {
			
                var errors = 0;
		
                var email_regexp = new RegExp("^.+@[^\.].*\.[a-z]{2,}$", "i"); // will allow addresses with + sign too - like raido.aasoja+test@mikare.net
                if ($.trim($("#sidebar-login-form input[name='f_email']").val()) != '') {
                        var email_validated = email_regexp.test(removeSpaces($("#sidebar-login-form input[name='f_email']").val()));
                        if ( ! email_validated) {
                                errors = 1;
                        } else {
                                $("#sidebar-login-form input[name='f_email']").prev().css({
                                        "color" : "#000"
                                });
                        }
                } else {
                        $("#sidebar-login-form input[name='f_email']").prev().css({
                                "color" : "red"
                        });
                        errors = 1;
                }
		
                if ($.trim($("#sidebar-login-form input[name='f_password']").val()) != '') {
                        $("#sidebar-login-form input[name='f_password']").prev().css({
                                "color" : "#000"
                        });
                } else {
                        $("#sidebar-login-form input[name='f_password']").prev().css({
                                "color" : "red"
                        });
                        errors = 1;
                }
		
		
		
                if (errors == 0) {
                        $("#sidebar-login-form").submit();
                        return false;
                } else {
                        //			$("#sidebar-login-form input[name='f_email']").css({"border-color" : "red", "color" : "#000", "background" : "#FFBDCB"});
                        $("#sidebar-login-form input[name='f_email']").prev().css({
                                "border-color" : "red", 
                                "color" : "red"
                        });
                        return false;
                }
        });
	
	
        /**
	 * 
	 * Add product to cart
	 * 
	 */
        $(".add-to-cart-trigger").click(function() {


                var product_quantity = $("#product-quantity-input").val();
                if (product_quantity == undefined) {
                        product_quantity = 1;
                }
                //		var product_quantity = 1;
                //		var product_id = $(".product_id", $(this).parent()).val();
                var span = $(this).children("span");
                span.html("Lisan...");
		
                var product_id = $(this).attr("product_id");
		
                if (product_quantity > 0) {
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                data: "act=add_to_cart&product_id=" + product_id + "&product_quantity=" + product_quantity,
                                dataType: "json",
                                async: false,
                                beforeSend: function(header){
                                        //Recommended, however for IE browsers this is an unsupported method, so leave it commented out (for now).
                                        //header.overrideMimeType('text/plain');
                                        header.setRequestHeader('From',SB_SandboxKey);
                                },
                                success: function(msg){
                                        if (msg.status == 'OK') {
                                                span.html("Lisatud!");
                                                window.location.reload();
                                        } else {
						
                                        }
                                },
                                error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                        var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
						textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                                }
                        }); // END: $.ajax
                }
                return false;
        });
	
	
        /**
	 * 
	 * Change product quantity in cart
	 * 
	 */
        $(".change_quantity_trigger").click(function() {
		
		

                var product_id = $(this).attr("product_id");
                var product_quantity = $("."+product_id+"_change_quantity").val();
        
                if (product_quantity > 0) {
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                data: "act=add_to_cart&product_id=" + product_id + "&product_quantity=" + product_quantity + "&subact=change_quantity",
                                dataType: "json",
                                async: false,
                                beforeSend: function(header){
                                        //Recommended, however for IE browsers this is an unsupported method, so leave it commented out (for now).
                                        //header.overrideMimeType('text/plain');
                                        header.setRequestHeader('From',SB_SandboxKey);
                                },
                                success: function(msg){
                                        if (msg.status == 'OK') {
                                                window.location.reload();
                                        } else {
						
                                        }
                                },
                                error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                        var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
						textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                                }
                        }); // END: $.ajax
                }
		
                return false;
        });
	
	
        /**
	 * 
	 * Remove product from cart
	 * 
	 */
        $("button.remove_product_trigger").click(function() {
                var product_id = $(this).attr("product_id");
		
                $.ajax({
                        type: "POST",
                        url: "/controllers/ajax.php",
                        data: "act=remove_from_cart&product_id=" + product_id,
                        dataType: "json",
                        async: false,
                        beforeSend: function(header){
                                //Recommended, however for IE browsers this is an unsupported method, so leave it commented out (for now).
                                //header.overrideMimeType('text/plain');
                                header.setRequestHeader('From',SB_SandboxKey);
                        },
                        success: function(msg){
                                if (msg.status == 'OK') {
                                        window.location.reload();
                                } else {
					
                                }
                        },
                        error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
					textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                        }
                }); // END: $.ajax
		
                return false;
        });
	
	
	
	
        $("button.forgot_password_trigger").click(function() {
                var email = $("input[name='f_email']").val();
                var lang_code = $("#lang-code").html();
                $("#mail-not-sent-message").hide();
		
                if ($.trim(email) != '') {
                        $("input[name='f_email']").css({
                                "border-color" : "#C7C9C9", 
                                "color" : "#989898", 
                                "background" : "#FFFFFF"
                        });
			
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                data: "act=forgot_password&email=" + email + "&lang_code=" + lang_code,
                                dataType: "json",
                                //				async: true,
                                beforeSend: function(header){
                                        //Recommended, however for IE browsers this is an unsupported method, so leave it commented out (for now).
                                        //header.overrideMimeType('text/plain');
                                        header.setRequestHeader('From',SB_SandboxKey);
                                },
                                success: function(msg){
                                        if (msg.status == 'OK') {
                                                //						window.location.reload();
                                                $("input[name='f_email']").val("");
                                                $("#mail-sent-message").fadeIn(1000);
                                        } else {
						
                                        }
                                },
                                error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                        var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
						textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                                }
                        }); // END: $.ajax
                } else {
                        $("input[name='f_email']").css({
                                "border-color" : "red", 
                                "color" : "#000", 
                                "background" : "#FFBDCB"
                        });
                        $("#mail-not-sent-message").fadeIn(500);
                }
                return false;
        });
	
	
	
        /**
	 * 
	 * Send user to bank (it creates order, fetches banklinks and finally sends user to bank - OR sends invoice):
	 * 
	 */
        $("#to-bank-trigger").click(function() {
                var lang_code = $("#lang-code").html();
                var serialized_form = $("#order-form").serialize();
                var errors = 0;
                var phone_regexp = new RegExp("^[+]?[0-9]{0,3}[\.]?[0-9]{1,14}$", "i");
                var email_regexp = new RegExp("^.+@[^\.].*\.[a-z]{2,}$", "i"); // will allow addresses with + sign too - like raido.aasoja+test@mikare.net
                // reset all input colors:
                $("#order-form input").css({
                        "border-color" : "#C7C9C9", 
                        "color" : "#989898", 
                        "background" : "#FFFFFF"
                });
		
		
                // Check for required fields:
                $("#order-form input.required, #order-form select.required").each(function() {
                        var element = $(this).attr("name");
			
                        if ($.trim($(this).val()) == '' || $.trim($(this).val()).length < 3 && element != 'f_agree_with_terms') {
                                // 1) checks for legal and civilian fields:
                                if (element == 'f_billing_county' || element == 'f_delivery_county') {
                                        var selected_value = $(this + ":selected").val();
                                        if (selected_value == '') {
                                                $(this).css({
                                                        "border-color" : "red", 
                                                        "color" : "#000", 
                                                        "background" : "#FFBDCB"
                                                });
                                                errors = 1;
                                        } else {
                                                $(this).css({
                                                        "border-color" : "#C7C9C9", 
                                                        "color" : "#989898", 
                                                        "background" : "#FFFFFF"
                                                });
                                        }
					
                                } else {
                                        $(this).css({
                                                "border-color" : "red", 
                                                "color" : "#000", 
                                                "background" : "#FFBDCB"
                                        });
                                        errors = 1;
                                }
                        } else {
                                // validate email and phone too:
                                if ($(this).attr("name") == 'f_phone') {
                                        var phone_validated = phone_regexp.test(removeSpaces($(this).val()));
                                        if ( ! phone_validated) {
                                                errors = 1;
                                                $(this).css({
                                                        "border-color" : "red", 
                                                        "color" : "#000", 
                                                        "background" : "#FFBDCB"
                                                });
                                        } else {
                                                $(this).css({
                                                        "border-color" : "#C7C9C9", 
                                                        "color" : "#989898", 
                                                        "background" : "#FFFFFF"
                                                });
                                        }
                                } else if ($(this).attr("name") == 'f_email') {
                                        var email_validated = email_regexp.test(removeSpaces($(this).val()));
                                        if ( ! email_validated) {
                                                errors = 1;
                                                $(this).css({
                                                        "border-color" : "red", 
                                                        "color" : "#000", 
                                                        "background" : "#FFBDCB"
                                                });
                                        } else {
                                                $(this).css({
                                                        "border-color" : "#C7C9C9", 
                                                        "color" : "#989898", 
                                                        "background" : "#FFFFFF"
                                                });
                                        }
                                } else if($(this).attr("name") == 'f_agree_with_terms') {
                                        if($(this + ":checked").length < 1) {
                                                errors = 1;
                                                $(this).parent("td").css({
                                                        "border" : "1px solid red", 
                                                        "color" : "#000", 
                                                        "background" : "#FFBDCB", 
                                                        "padding" : "6px"
                                                });
                                        } else {
                                                $(this).parent("td").css({
                                                        "border" : "0", 
                                                        "color" : "#989898", 
                                                        "background" : "#FFFFFF", 
                                                        "padding" : "6px 0"
                                                });
                                        }
                                } else {
                                        $(this).css({
                                                "border-color" : "#C7C9C9", 
                                                "color" : "#989898", 
                                                "background" : "#FFFFFF"
                                        });
                                }
                        }
                });
                // and manually check for name & company name. (either name or company name must be present...and if company name is filled in, reg nr becomes required as well)
		
                var name = $("input[name='f_name']");
                var company_name = $("input[name='f_company_name']");
                var reg_nr = $("input[name='f_company_reg_nr']")
		
		
                if ($.trim(name.val()) == '' && $.trim(company_name.val()) == '') {
                        errors = 1;
                        name.css({
                                "border-color" : "red", 
                                "color" : "#000", 
                                "background" : "#FFBDCB"
                        });
                        company_name.css({
                                "border-color" : "red", 
                                "color" : "#000", 
                                "background" : "#FFBDCB"
                        });
                } else { // we must check legal fields - company name and reg nr
                        if ($.trim(company_name.val()) != '' && $.trim(reg_nr.val()) == '') {
                                reg_nr.css({
                                        "border-color" : "red", 
                                        "color" : "#000", 
                                        "background" : "#FFBDCB"
                                });
                                company_name.css({
                                        "border-color" : "#C7C9C9", 
                                        "color" : "#989898", 
                                        "background" : "#FFFFFF"
                                });
                                errors = 1;
                        } else {
                                reg_nr.css({
                                        "border-color" : "#C7C9C9", 
                                        "color" : "#989898", 
                                        "background" : "#FFFFFF"
                                });
                        }
                }
		
		
                // Also check for selected bank:
                var selected_bank = $("#bank-selection-form input[name='bank_selection']:checked").val();
		
                if (selected_bank != undefined && selected_bank != '') {
                        $("#bank-selection-form table").css({
                                "background" : "#FFFFFF"
                        });
                } else {
                        $("#bank-selection-form table").css("background", "#FFBDCB");
                        errors = 1;
                }
		
                // Also check if user has selected transport:
                var shipping_choice_val = $("#order-form input[name='f_shipping_choice']:checked").val();
		
                if (shipping_choice_val == undefined) {
                        $("#shipping-choice-table").css("background", "#FFBDCB");
                        errors = 1;
                } else {
                        $("#shipping-choice-table").css("background", "#FFFFFF");
                }
		
		
                // check if delivery county is set:
                var delivery_county_val = $("select[name='f_delivery_county'] option:selected").val();
                if (delivery_county_val == '') {
                        $("#order-form select[name='f_delivery_county']").css({
                                "border-color" : "red", 
                                "background" : "#FFBDCB"
                        });
                        errors = 1;
                } else {
                        $("#order-form select[name='f_delivery_county']").css({
                                "border-color" : "#C7C9C9", 
                                "background" : "#FFFFFF"
                        });	
			
                }
		
                // check if shipping county is set:
                var shipping_county_val = $("select[name='f_shipping_county'] option:selected").val();
                if (shipping_county_val == '') {
                        $("#order-form select[name='f_shipping_county']").css({
                                "border-color" : "red", 
                                "background" : "#FFBDCB"
                        });
                        errors = 1;
                } else {
                        $("#order-form select[name='f_shipping_county']").css({
                                "border-color" : "#C7C9C9", 
                                "background" : "#FFFFFF"
                        });	
			
                }
		
                // And finally check if user agreed with terms:
                if($("input[name='f_agree_with_terms']" + ":checked").length < 1) {
                        $("input[name='f_agree_with_terms']").parent("td").css({
                                "border" : "1px solid red", 
                                "color" : "red", 
                                "background" : "#FFBDCB", 
                                "padding" : "6px"
                        });
                        errors = 1;
                } else {
                        $("input[name='f_agree_with_terms']").parent("td").css({
                                "border" : "0", 
                                "color" : "#989898", 
                                "background" : "#FFFFFF", 
                                "padding" : "6px 0"
                        });
                }
		
                /**
		 * Check if discount card was filled in and if it gets positive match:
		 */
                var discount_card_field = $("#f_discount_card_code");
                var discount_card_code = $.trim(discount_card_field.val());
                var name = $.trim($("input[name='f_name']").val());
                var company_name = $.trim($("input[name='f_company_name']").val());
		
                if (discount_card_code != '' && (name != '' || company_name != '')) {
                        // Do ajax call to check if card is valid:
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                data: {
                                        act: "check_discount_card",
                                        lang_code: lang_code,
                                        discount_card_code: discount_card_code,
                                        client_name: name,
                                        client_company_name: company_name
                                },
                                dataType: "json",
                                success: function(msg){
                                        if (msg.status == 'OK') {
						
                                        } else {
                                                errors = 1;
                                                // display message about failed account creation:
                                                $("#create-user-message").html(msg.message);
                                                $("#create-user-message").css({
                                                        "border" : "1px solid red", 
                                                        "color" : "red", 
                                                        "background" : "#FFBDCB"
                                                });
                                                $("#create-user-message").fadeIn(500);
                                                return false;
                                        }
                                },
                                error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                        var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
						textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                                        errors = 1;
                                }
                        });
                }
		
		
                if (errors == 0) {
                        var shipping_choice = $("#order-form input[name='f_shipping_choice']:checked").val();
                        //			var county = $("#order-form select[name='f_delivery_county'] option:selected").val();
			
                        // 1) Save order info
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                //				data: "act=create_order&f_payment_method=" + selected_bank + "&lang_code=" + lang_code + "&" + serialized_form,
                                data: {
                                        act : "create_order", 
                                        f_payment_method : selected_bank, 
                                        lang_code : lang_code, 
                                        serialized_form : serialized_form,
                                        f_shipping_choice : shipping_choice
                                },
                                dataType: "json",
                                async: false,
                                beforeSend: function(header){
                                        //Recommended, however for IE browsers this is an unsupported method, so leave it commented out (for now).
                                        //header.overrideMimeType('text/plain');
                                        header.setRequestHeader('From',SB_SandboxKey);
                                },
                                success: function(msg){
                                        if (msg.status == 'OK') {
                                                // Push banklinks to #banklinks-placeholder
                                                if (selected_bank != 'bill') {
                                                        $("#banklinks-placeholder").html(msg.banklinks);
							
                                                        // Sumbmit selected banklink:
                                                        $("#" + selected_bank + "_bankform").submit();
                                                } else {
                                                        window.location.reload();
                                                }
                                        } else {
                                                alert("FAILed");
                                        }
                                },
                                error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                        var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
						textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                                }
                        }); // END: $.ajax
                } else {
			
                }
                return false;
        });
	
	
	
        /**
	 * 
	 * Discount card check in cart:
	 * 
	 */
        $("#check-discount-card-in-cart").click(function() {
		
                /**
		 * Check if discount card was filled in and if it gets positive match:
		 */
                var lang_code = $("#lang-code").html();
                var discount_card_field = $("#f_discount_card_code");
                var discount_card_code = $.trim(discount_card_field.val());
                var name = $.trim($("input[name='f_name']").val());
                var company_name = $.trim($("input[name='f_company_name']").val());
                var discount_card_check_row = $("#discount-card-check-row");
                var discount_card_check_message = $(".discount-card-check-message");
		
                discount_card_check_row.hide();
                discount_card_check_message.hide();
		
                if (discount_card_code != '' && (name != '' || company_name != '')) {
                        // Do ajax call to check if card is valid:
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                async: false,
                                data: {
                                        act: "check_discount_card",
                                        lang_code: lang_code,
                                        discount_card_code: discount_card_code,
                                        client_name: name,
                                        client_company_name: company_name,
                                        check_type: "cart"
                                },
                                dataType: "json",
                                success: function(msg){
                                        if (msg.status == 'OK') {
                                                discount_card_check_row.show();
                                                $("#discount-card-check-message-4").fadeIn(500);
                                                // - discount card matched - recalculate cart -
						
                                                // 1) Substract total discount(stored in msg.total_discount) from cart-total-cost original 
                                                // Get current original total:
                                                var cart_original_total = $("#cart-total-cost-original").html();
                                                // Convert it to float(number):
                                                cart_original_total = parseFloat(cart_original_total); 
                                                // Calculate new original total:
                                                cart_original_total_new = cart_original_total - msg.total_discount;
                                                // Format it:
                                                cart_original_total_new = cart_original_total_new.toFixed(2);
                                                //Assign new original total:
                                                $("#cart-total-cost-original").html(cart_original_total_new);
						
                                                // 2) substract total discount from cart-total-cost-val
                                                // Get current total:
                                                var cart_total = $("#cart-total-cost-val").html();
                                                // Convert it to float(number):
                                                cart_total = parseFloat(cart_total);
                                                // Calculate new total:
                                                cart_total_new = cart_total - msg.total_discount;
                                                // Format it:
                                                cart_total_new = cart_total_new.toFixed(2);
                                                // Assign new total:
                                                $("#cart-total-cost-val").html(cart_total_new);
						
                                                // 3) Update cart total discount row:
                                                $("#cart-total-discount-val").html(msg.total_discount.toFixed(2));
                                                // 4) Update discount percent visual:
                                                $("#discount-percent-val").html(parseInt(msg.discount_percent));
                                                // 5) Show discount row:
                                                $("#cart-discount-total-row").show();
                                                // Remove discount card check placeholder:
                                                $(".discount_card_check_delete_candidate").remove();
						
						
                                                // 4) hide options for purchasing discount card:
                                                $(".discount_card_delete_candidate").fadeOut(500);
                                        } else {
                                                errors = 1;
                                                discount_card_check_row.show();
                                                $("#discount-card-check-message-3").fadeIn(500);
                                        }
                                },
                                error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                        var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
						textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                                        errors = 1;
                                }
                        });
                } else if (discount_card_code == '') {
                        discount_card_check_row.show();
                        $("#discount-card-check-message-1").fadeIn(500);
                } else if (name == '' && company_name == '') {
                        discount_card_check_row.show();
                        $("#discount-card-check-message-2").fadeIn(500);
                }
		
                return false;
        });
	
	
        /**
	 * 
	 * Save user dashboard info:
	 * 
	 */
        $("#change-user-details-submit").click(function() {
                var lang_code = $("#lang-code").html();
                var serialized_form = $("#change-details-form").serialize();
                var errors = 0;
                var phone_regexp = new RegExp("^[+]?[0-9]{0,3}[\.]?[0-9]{1,14}$", "i");
                var email_regexp = new RegExp("^.+@[^\.].*\.[a-z]{2,}$", "i"); // will allow addresses with + sign too - like raido.aasoja+test@mikare.net
		
                $("#account-changed-msg").remove();
                // reset all input colors:
                $("#change-details-form input").css({
                        "border-color" : "#C7C9C9", 
                        "color" : "#989898", 
                        "background" : "#FFFFFF"
                });
		
		
                // Check for required fields:
                $("#change-details-form input.required").each(function() {
                        var element = $(this).attr("name");
			
                        if ($.trim($(this).val()) == '' || $.trim($(this).val()).length < 3) {
                                // 1) checks for legal and civilian fields:
                                $(this).css({
                                        "border-color" : "red", 
                                        "color" : "#000", 
                                        "background" : "#FFBDCB"
                                });
                                errors = 1;
                        } else {
                                // validate email and phone too:
                                if ($(this).attr("name") == 'f_phone') {
                                        var phone_validated = phone_regexp.test(removeSpaces($(this).val()));
                                        if ( ! phone_validated) {
                                                errors = 1;
                                                $(this).css({
                                                        "border-color" : "red", 
                                                        "color" : "#000", 
                                                        "background" : "#FFBDCB"
                                                });
                                        } else {
                                                $(this).css({
                                                        "border-color" : "#C7C9C9", 
                                                        "color" : "#989898", 
                                                        "background" : "#FFFFFF"
                                                });
                                        }
                                } else if ($(this).attr("name") == 'f_email') {
                                        var email_validated = email_regexp.test(removeSpaces($(this).val()));
                                        if ( ! email_validated) {
                                                errors = 1;
                                                $(this).css({
                                                        "border-color" : "red", 
                                                        "color" : "#000", 
                                                        "background" : "#FFBDCB"
                                                });
                                        } else {
                                                $(this).css({
                                                        "border-color" : "#C7C9C9", 
                                                        "color" : "#989898", 
                                                        "background" : "#FFFFFF"
                                                });
                                        }
                                } else {
                                        $(this).css({
                                                "border-color" : "#C7C9C9", 
                                                "color" : "#989898", 
                                                "background" : "#FFFFFF"
                                        });
                                }
                        }
                });
                // and manually check for name & company name. (either name or company name must be present...and if company name is filled in, reg nr becomes required as well)
		
                var name = $("input[name='f_name']");
                var company_name = $("input[name='f_company_name']");
                var reg_nr = $("input[name='f_company_reg_nr']")
		
                if ($.trim(name.val()) == '' && $.trim(company_name.val()) == '') {
                        errors = 1;
                        name.css({
                                "border-color" : "red", 
                                "color" : "#000", 
                                "background" : "#FFBDCB"
                        });
                        company_name.css({
                                "border-color" : "red", 
                                "color" : "#000", 
                                "background" : "#FFBDCB"
                        });
                } else { // we must check legal fields - company name and reg nr
                        if ($.trim(company_name.val()) != '' && $.trim(reg_nr.val()) == '') {
                                reg_nr.css({
                                        "border-color" : "red", 
                                        "color" : "#000", 
                                        "background" : "#FFBDCB"
                                });
                                company_name.css({
                                        "border-color" : "#C7C9C9", 
                                        "color" : "#989898", 
                                        "background" : "#FFFFFF"
                                });
                                errors = 1;
                        } else {
                                reg_nr.css({
                                        "border-color" : "#C7C9C9", 
                                        "color" : "#989898", 
                                        "background" : "#FFFFFF"
                                });
                        }
                }
		
                // Manually check passwords (if both fields are empty, then it's ok...)
                var password = $("input[name='f_password']");
                var password2 = $("input[name='f_password_again']");
		
                if ($.trim(password.val()) == '' && $.trim(password2.val()) == '') {
                        password.css({
                                "border-color" : "#C7C9C9", 
                                "color" : "#989898", 
                                "background" : "#FFFFFF"
                        });
                        password2.css({
                                "border-color" : "#C7C9C9", 
                                "color" : "#989898", 
                                "background" : "#FFFFFF"
                        });
                } else {
                        if ($.trim(password.val()) == '' || $.trim(password.val()).length < 3) {
                                password.css({
                                        "border-color" : "red", 
                                        "color" : "#000", 
                                        "background" : "#FFBDCB"
                                });
                                errors = 1;
                        }
				
                        if ($.trim(password2.val()) == '' || $.trim(password2.val()).length < 3) {
                                password2.css({
                                        "border-color" : "red", 
                                        "color" : "#000", 
                                        "background" : "#FFBDCB"
                                });
                                errors = 1;
                        }
			
                        if ($.trim(password.val()) != $.trim(password2.val())) {
                                password.css({
                                        "border-color" : "red", 
                                        "color" : "#000", 
                                        "background" : "#FFBDCB"
                                });
                                password2.css({
                                        "border-color" : "red", 
                                        "color" : "#000", 
                                        "background" : "#FFBDCB"
                                });
                                errors = 1;
                        }
                }
		
		
                if (errors == 0) {
                        // 1) Save order info
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                //				data: "act=create_order&f_payment_method=" + selected_bank + "&lang_code=" + lang_code + "&" + serialized_form,
                                data: {
                                        act : "change_user_details", 
                                        lang_code : lang_code, 
                                        serialized_form : serialized_form
                                },
                                dataType: "json",
                                async: false,
                                beforeSend: function(header){
                                        //Recommended, however for IE browsers this is an unsupported method, so leave it commented out (for now).
                                        //header.overrideMimeType('text/plain');
                                        header.setRequestHeader('From',SB_SandboxKey);
                                },
                                success: function(msg){
                                        if (msg.status == 'OK') {
                                                $(".create_new_user_submit").append("<p class='success' id='account-changed-msg' style='margin-top: 10px;'>" + msg.message + "</p>");
                                        } else {
                                                $(".create_new_user_submit").append("<p class='error' id='account-changed-msg' style='margin-top: 10px;'>Andmete muutmine ebaõnnestus</p>");
                                        }
                                },
                                error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                        var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
						textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                                }
                        }); // END: $.ajax
                } else {
			
                }
                return false;
        });
	
	
        /**
	 * 
	 * Show order contents
	 * 
	 */
        $("a.show_content_trigger").click(function() {
                var order_id = $(this).attr("order_id");
                var parent_tr = $(this).closest("tr");
		
                if($("tr.order_"+ order_id + "_content").css("display") == 'none') {
                        $(this).html("Peida sisu");
                        $("tr.order_"+ order_id + "_content").fadeIn(500);
                        if (parent_tr.attr("class") == 'light') {
                                parent_tr.toggleClass("dark");
                        }
                } else {
                        $(this).html("Kuva sisu");
                        $("tr.order_"+ order_id + "_content").fadeOut(300);
                }
                return false;
        });
	
	
        /**
	 * 
	 * Submit dashboard form:
	 * 
	 */
        $(".save-dashboard-trigger").click(function() {
                var serialized_form = $("#change-details-form").serialize();
		
                alert(serialized_form);
		
		
                return false;
        });
	
	
        /**
	 * 
	 * Send feedback:
	 * 
	 */
        $("#feedback-form-submit-trigger").click(function() {
                var url = $("input[name='f_url']").val();
                var fid = $("input[name='f_fid']").val();
                var bah = $("input[name='f_bah']").val();
                var name = $("input[name='f_name']").val();
                var email = $("input[name='f_email']").val();
                var content = $("textarea[name='f_content']").val();
		
                var lang_code = $("#lang-code").html();
                var errors = 0;
		
                if ($.trim(name) != '') {
                        $("input[name='f_name']").css({
                                "border-color" : "#C7C9C9", 
                                "color" : "#989898", 
                                "background" : "#FFFFFF"
                        });
                } else {
                        errors = 1;
                        $("input[name='f_name']").css({
                                "border-color" : "red", 
                                "color" : "#000", 
                                "background" : "#FFBDCB"
                        });
                }
		
                if ($.trim(email) != '') {
                        $("input[name='f_email']").css({
                                "border-color" : "#C7C9C9", 
                                "color" : "#989898", 
                                "background" : "#FFFFFF"
                        });
                } else {
                        errors = 1;
                        $("input[name='f_email']").css({
                                "border-color" : "red", 
                                "color" : "#000", 
                                "background" : "#FFBDCB"
                        });
                }
		
		
                if ($.trim(content) != '') {
                        $("textarea[name='f_content']").css({
                                "border-color" : "#C7C9C9", 
                                "color" : "#989898", 
                                "background" : "#FFFFFF"
                        });
                } else {
                        errors = 1;
                        $("textarea[name='f_content']").css({
                                "border-color" : "red", 
                                "color" : "#000", 
                                "background" : "#FFBDCB"
                        });
                }
		
                // check if there were any errors..if not, post data
                if (errors == 0) {
		
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                data: {
                                        act: 'send_feedback', 
                                        f_url: url, 
                                        f_fid: fid,
                                        f_bah: bah, 
                                        f_name: name, 
                                        f_email: email, 
                                        f_content: content, 
                                        lang_code: lang_code
                                },
                                dataType: "json",
                                async: true,
                                beforeSend: function(header){
                                        //Recommended, however for IE browsers this is an unsupported method, so leave it commented out (for now).
                                        //header.overrideMimeType('text/plain');
                                        header.setRequestHeader('From',SB_SandboxKey);
                                },
                                success: function(msg){
                                        if (msg.status == 'OK') {
                                                // display message:
                                                $("#feedback-sent-message").fadeIn(1000);
                                                // clear fields:
                                                $("#feedback-form input").val("");
                                                $("#feedback-form textarea").val("");
                                        } else {
						
                                        }
                                },
                                error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                        var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
						textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                                }
                        }); // END: $.ajax
                }
                return false;
        });
	

        /**
	 * 
	 * Client type change
	 * 
	 */
        $('#client-type').change(function() {
                if ($(this).val() == 'civilian') {
                        $("#billing-info tr.legal_row").hide();
                        $("#billing-info tr.civilian_row").show();
                } else {
                        $("#billing-info tr.civilian_row").hide();
                        $("#billing-info tr.legal_row").show();
			
                }
        });
	
	
        /**
	 * 
	 * Facebook button hover - DEPRECATED
	 * 
	 */
        $("#facebook-placeholder").hover(
                function () {
                        $("#facebook-gs").hide();
                        $("#facebook").show();
                        $('#facebook').stop().animate({
                                top: '-12px'
                        }, 300, function() {
                                // animation complete - do something?
                                });
                },
                function () {
                        //			$('#facebook').css("top", "0px");
                        $('#facebook').stop().animate({
                                top: '0px'
                        }, 300, function() {
                                // animation complete - do something?
                                $("#facebook").hide();
                                $("#facebook-gs").show();
                        });
                }
                );
	
	
	
        /**
	 * 
	 * Reclamation form submit:
	 * 
	 */
        $("#reclamation-form-submit").click(function() {
                var serialized_form = $("#reclamation-form").serialize();
                var errors = 0;
                $("p.error").hide();
                //		var phone_regexp = new RegExp("^[+]?[0-9]{0,3}[\.]?[0-9]{1,14}$", "i");
                var email_regexp = new RegExp("^.+@[^\.].*\.[a-z]{2,}$", "i"); // will allow addresses with + sign too - like raido.aasoja+test@mikare.net
		
                // hide message:
                //		$("#create-user-message").hide();
		
                // Check for required fields:
                $("#reclamation-form input.required, #reclamation-form textarea.required").each(function() {
                        var element = $(this).attr("name");
                        //			alert(element);
			
                        if ($.trim($(this).val()) == '' || $.trim($(this).val()).length < 3) {
                                $(this).css({
                                        "border-color" : "red", 
                                        "color" : "#000", 
                                        "background" : "#FFBDCB"
                                });
                                errors = 1;
                        } else {
				
                                // validate email and phone too:
                                if (element == 'f_email') {
                                        var email_validated = email_regexp.test(removeSpaces($(this).val()));
                                        if ( ! email_validated) {
                                                errors = 1;
                                                $(this).css({
                                                        "border-color" : "red", 
                                                        "color" : "#000", 
                                                        "background" : "#FFBDCB"
                                                });
                                        } else {
                                                $(this).css({
                                                        "border-color" : "#C7C9C9", 
                                                        "color" : "#989898", 
                                                        "background" : "#FFFFFF"
                                                });
                                        }
                                } else {
                                        $(this).css({
                                                "border-color" : "#999999", 
                                                "color" : "#989898", 
                                                "background" : "#FFFFFF"
                                        });
                                }
                        }
			
			
                });
		
                if (errors == 0) {
                        $("#reclamation-form").submit();
                } else {
                        $("p.error").fadeIn(500);
                }
                return false;
        });
	
	
        /**
	 * 
	 * Swed credit form submit:
	 * 
	 */
        $("#swed-credit-form-submit").click(function() {
                var serialized_form = $("#swed-credit-form").serialize();
                var errors = 0;
                $("p.error").hide();
                //		var phone_regexp = new RegExp("^[+]?[0-9]{0,3}[\.]?[0-9]{1,14}$", "i");
                var email_regexp = new RegExp("^.+@[^\.].*\.[a-z]{2,}$", "i"); // will allow addresses with + sign too - like raido.aasoja+test@mikare.net
		
                // hide message:
                //		$("#create-user-message").hide();
		
                // Check for required fields:
                $("#swed-credit-form input.required, #swed-credit-form select.required, #swed-credit-form textarea.required").each(function() {
                        var element = $(this).attr("name");
                        //			alert(element);
			
                        if ($.trim($(this).val()) == '' || $.trim($(this).val()).length < 3) {
                                $(this).css({
                                        "border-color" : "red", 
                                        "color" : "#000", 
                                        "background" : "#FFBDCB"
                                });
                                errors = 1;
                        } else {
				
                                // validate email and phone too:
                                if (element == 'f_email') {
                                        var email_validated = email_regexp.test(removeSpaces($(this).val()));
                                        if ( ! email_validated) {
                                                errors = 1;
                                                $(this).css({
                                                        "border-color" : "red", 
                                                        "color" : "#000", 
                                                        "background" : "#FFBDCB"
                                                });
                                        } else {
                                                $(this).css({
                                                        "border-color" : "#C7C9C9", 
                                                        "color" : "#989898", 
                                                        "background" : "#FFFFFF"
                                                });
                                        }
                                } else {
                                        $(this).css({
                                                "border-color" : "#999999", 
                                                "color" : "#989898", 
                                                "background" : "#FFFFFF"
                                        });
                                }
                        }
			
			
                });
		
                if (errors == 0) {
                        $("#swed-credit-form").submit();
                } else {
                        $("p.error").fadeIn(500);
                }
                return false;
        });
	
	
        /**
	 * Form helptexts:
	 */
        $("#order-form input").focusin(function() {
                $(this).siblings("span").fadeIn(500);
        });
	
        $("#order-form input").focusout(function() {
                $(this).siblings("span").hide();
        });
	
	
	
        $("#create-user input").focusin(function() {
                $(this).siblings("span").fadeIn(500);
        });
	
        $("#create-user input").focusout(function() {
                $(this).siblings("span").hide();
        });
	
	
	
        $("#change-details-form input, #change-details-form textarea").focusin(function() {
                $(this).siblings("span").fadeIn(500);
        });
	
        $("#change-details-form input, #change-details-form textarea").focusout(function() {
                $(this).siblings("span").hide();
        });
	
	
        $("#swed-credit-form input, #swed-credit-form textarea").focusin(function() {
                $(this).siblings("span").fadeIn(500);
        });
	
        $("#swed-credit-form input, #swed-credit-form textarea").focusout(function() {
                $(this).siblings("span").hide();
        });
	
	
        $("#reclamation-form input, #reclamation-form textarea").focusin(function() {
                $(this).siblings("span").fadeIn(500);
        });
	
        $("#reclamation-form input, #reclamation-form textarea").focusout(function() {
                $(this).siblings("span").hide();
        });
	
	
        /**
	 * 
	 * Generate helptext icons for Swed credit form:
	 * 
	 */
        $("#swed-credit-form input, #swed-credit-form select, #swed-credit-form textarea").each(function() {
                var element = $(this).attr("name");
                var helptext_content = $.trim($(this).siblings("span").html());
                if (helptext_content != '') {
                        $(this).after("<img src='/design/information.png' style='padding-top: 4px; padding-left: 3px;' class='information_icon' />");
                }
                if ($(this).hasClass("required")) {
                        $(this).closest("tr").children("td:first").append("<p class='rqred'>*</p>");
                }
        });
	
	
        /**
	 * 
	 * Generate helptext icons for reclamation form:
	 * 
	 */
        $("#reclamation-form input, #reclamation-form textarea").each(function() {
                var element = $(this).attr("name");
                var helptext_content = $.trim($(this).siblings("span").html());
                if (helptext_content != '') {
                        $(this).after("<img src='/design/information.png' style='padding-top: 4px; padding-left: 3px;' class='information_icon' />");
                }
                if ($(this).hasClass("required")) {
                        $(this).closest("tr").children("td:first").append("<p class='rqred'>*</p>");
                }
        });
	
	
        /**
	 * 
	 * Generate helptext icons for create user form:
	 * 
	 */
        $("#create-user input").each(function() {
                var element = $(this).attr("name");
                var helptext_content = $.trim($(this).siblings("span").html());
                if (helptext_content != '') {
                        $(this).after("<img src='/design/information.png' style='padding-top: 4px; padding-left: 3px;' class='information_icon' />");
                }
                if ($(this).hasClass("required")) {
                        $(this).closest("tr").children("td:first").append("<p class='rqred'>*</p>");
                }
        });
	
	
        /**
	 * 
	 * Generate helptext icons for dashboard user edit form:
	 * 
	 */
        $("#change-details-form input").each(function() {
                var element = $(this).attr("name");
                var helptext_content = $.trim($(this).siblings("span").html());
                if (helptext_content != '') {
                        $(this).after("<img src='/design/information.png' style='padding-top: 4px; padding-left: 3px;' class='information_icon' />");
                }
                if ($(this).hasClass("required")) {
                        $(this).closest("tr").children("td:first").append("<p class='rqred'>*</p>");
                }
        });
	
	
        /**
	 * 
	 * Generate helptext icons for cart order form:
	 * 
	 */
        $("#order-form input").each(function() {
                var element = $(this).attr("name");
                var helptext_content = $.trim($(this).siblings("span").html());
                if (helptext_content != '') {
                        $(this).after("<img src='/design/information.png' style='padding-top: 4px; padding-left: 3px;' class='information_icon' />");
                }
                if ($(this).hasClass("required")) {
                        $(this).closest("tr").children("td:first").append("<p class='rqred'>*</p>");
                }
        });
	
	
        /**
	 * 
	 * When hovering (I) icon, display helptext:
	 * 
	 */
        $("td .information_icon").hover(function() {
                $(this).siblings("span").fadeIn(300);
        }, function () {
                $(this).siblings("span").hide();
        }
        );

	
        /**
	 * 
	 * Shipping change/choice
	 * 
	 */
        $("#shipping-choice-table input[name='f_shipping_choice']").change(function() {
                var lang_code = $("#lang-code").html();
                var checked_val = $("#shipping-choice-table input[name='f_shipping_choice']:checked").val();
                var checked_delivery_county = $("#order-form select[name='f_delivery_county'] option:selected").val();
                if (checked_val == 'with_shipping' && checked_delivery_county != '') {
                        //			alert("do ajax call to get shipping cost for county called: " + checked_delivery_county + "\n\n ALSO MUST DO SAME AJAX CALL WHEN f_delivery_county IS CHANGED AND transport VALUE IS with_shipping");
                        // Do ajax call to get shipping cost for county 
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                data: {
                                        act: "get_shipping_cost",
                                        lang_code: lang_code,
                                        county: checked_delivery_county
                                },
                                dataType: "json",
                                success: function(msg){
                                        if (msg.status == 'OK') {
                                                recalculate_cart(msg.shipping_cost);
                                        }
                                }
                        });
                        //			$("#floor-consideration-row").css("visibility", "visible");
                        $("#floor-consideration-row").fadeIn(500);
                } else if (checked_val == 'with_shipping' && (checked_delivery_county == '' || checked_delivery_county == undefined)) {
                        $("#choose-transport-helptext").css("visibility", "visible");
                        $("#choose-transport-helptext").fadeIn(500);
                        $("#order-form select[name='f_delivery_county']").css({
                                "border-color" : "orange", 
                                "background" : "#fff2c0"
                        });
                        //			$("#floor-consideration-row").css("visibility", "visible");
                        $("#floor-consideration-row").fadeIn(500);
                        $("#floor-consideration-cart-row").show();
                } else {
                        $("#order-form select[name='f_delivery_county']").css({
                                "border-color" : "#C7C9C9", 
                                "background" : "#FFFFFF"
                        });
                        $("#choose-transport-helptext").css("visibility", "hidden");
                        $("#floor-consideration-row").fadeOut(500);
                        //			$("#floor-consideration-row").css("visibility", "visible");
                        // reset shipping cost too:
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                data: {
                                        act: "get_shipping_cost",
                                        lang_code: lang_code,
                                        county: ""
                                },
                                dataType: "json",
                                success: function(msg){
                                        if (msg.status == 'OK') {
                                                recalculate_cart(0)
                                        } 
                                }
                        });
                }
        });
	
        /**
	 * 
	 * Order form delivery/billing county change:
	 * 
	 */
        $("#order-form select[name='f_billing_county'], #order-form select[name='f_delivery_county']").change(function() {
                var lang_code = $("#lang-code").html();
                var county = $("#order-form select[name='f_delivery_county'] option:selected").val();
                var selected_shipping = $("#shipping-choice-table input[name='f_shipping_choice']:checked").val();
                // check if client requested shipping:
                if (selected_shipping == 'with_shipping') {
                        // check if we have valid county:
                        if ($.trim(county) != '') {
                                // Do ajax call to get shipping cost for county 
                                $.ajax({
                                        type: "POST",
                                        url: "/controllers/ajax.php",
                                        data: {
                                                act: "get_shipping_cost",
                                                lang_code: lang_code,
                                                county: county
                                        },
                                        dataType: "json",
                                        success: function(msg){
                                                if (msg.status == 'OK') {
                                                        recalculate_cart(msg.shipping_cost);
                                                } 
                                        }
                                });
                        }
                } else {
                        // make sure that shipping gets set to 0.00
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                data: {
                                        act: "get_shipping_cost",
                                        lang_code: lang_code,
                                        county: ""
                                },
                                dataType: "json",
                                success: function(msg){
                                        if (msg.status == 'OK') {
                                                recalculate_cart(0)
                                        } else {
                                                errors = 1;
                                                // display message about failed account creation:
                                                return false;
                                        }
                                },
                                error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                        var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
						textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                                        errors = 1;
                                }
                        });
                }
        });
	
	
        /**
	 * Floor consideration change:
	 */
        $('#floor-consideration').keyup(function() {
                var lang_code = $("#lang-code").html();
                var floor_nr = $(this).val();
                var floor_fee = $("#floor-consideration-fee").html();
                var total_fee = 0.00;
		
                if (floor_nr >= 0) {
                        total_fee = floor_nr * floor_fee;
			
                        // Do Ajax call to set floor consideration
                        $.ajax({
                                type: "POST",
                                url: "/controllers/ajax.php",
                                data: {
                                        act: "set_floor_consideration",
                                        lang_code: lang_code,
                                        floor_nr: floor_nr
                                },
                                dataType: "json",
                                success: function(msg){
                                //					if (msg.status == 'OK') {
                                //						recalculate_cart(0)
                                //					} else {
                                //						errors = 1;
                                // display message about failed account creation:
                                //						return false;
                                //					}
                                },
                                error: function(xml_request, textStatus, errorThrown) { // somth went completly wrong
                                        var error_html = "Ilmnes kriitiline viga. <br />Info vea kohta:<br /><br />\
						textStatus: " + textStatus + "<br /<br />Vea sisu: <br /><br />" + errorThrown;
                                        errors = 1;
                                }
                        }); // END: $.ajax
			
                        // Update transport line:
                        var current_transport = $.trim($("#cart-shipping-cost-val").html());
                        current_transport = parseFloat(current_transport);
                        total_fee = parseFloat(total_fee);
                        $("#floor-consideration-total").html(total_fee.toFixed(2));
			
                        var original_shipping_cost = $("#cart-shipping-cost-hidden-val").html();
                        if (original_shipping_cost == "") {
                                original_shipping_cost = 0.00;
                        }
                        original_shipping_cost = parseFloat(original_shipping_cost);
                        var shipping_total_orig = original_shipping_cost + total_fee;
                        shipping_total = shipping_total_orig.toFixed(2);
			
                        $("#cart-shipping-cost-val").html(shipping_total);
			
                        // Recalculate cart total cost:
                        var cart_original_total = $("#cart-total-cost-original").html();
                        cart_original_total = parseFloat(cart_original_total); 

                        var cart_total = cart_original_total + shipping_total_orig;
                        cart_total = cart_total.toFixed(2);
                        //			alert(cart_total);
                        $("#cart-total-cost-val").html(cart_total);
			
                //			alert(typeof(original_shipping_cost));
                //			alert(typeof(total_fee));
			
                //			alert(original_shipping_cost + total_fee);
                } else {
                        $(this).val("0");
                }
		
        //		total_fee = total_fee.toFixed(2);
        });
	
        /**
	 * 
	 * Discount cart change:
	 * 
	 */
        // f_discount_card_choice
        $("#discount-card-choice-table input[name='f_discount_card_choice']").change(function() {
                var lang_code = $("#lang-code").html();
                var checked_val = $(this+ ":checked").val();
                var possible_discount = $("#possible-discount-hidden-val").html();
                possible_discount = parseFloat(possible_discount);
                var discount_card_cost = $("#discount-card-price-hidden-val").html();
                discount_card_cost = parseFloat(discount_card_cost);
		
                if (checked_val == "yes_thanks") {
                        // hide card entry:
                        // 1) recalculate cart
			
                        /** Update total cost **/
                        // Get current total:
                        var cart_total = $("#cart-total-cost-val").html();
                        // Convert it to float(number):
                        cart_total = parseFloat(cart_total);
                        // Calculate new total:
                        cart_total_new = cart_total - possible_discount + discount_card_cost;
                        // Format it:
                        cart_total_new = cart_total_new.toFixed(2);
                        // Assign new total:
                        $("#cart-total-cost-val").html(cart_total_new);
			
                        /** Update original cost(tranport depends on it) **/
                        // Get current original total:
                        var cart_original_total = $("#cart-total-cost-original").html();
                        // Convert it to float(number):
                        cart_original_total = parseFloat(cart_original_total); 
                        // Calculate new original total:
                        cart_original_total_new = cart_original_total - possible_discount + discount_card_cost;
                        // Format it:
                        cart_original_total_new = cart_original_total_new.toFixed(2);
                        //Assign new original total:
                        $("#cart-total-cost-original").html(cart_original_total_new);
			
                        // 2) display alternate discount row:
                        $("#discount-card-check-placeholder").fadeOut(500);
                        $("#cart-possible-discount-total-row").fadeIn(500);
                } else {
                        /** Update total cost **/
                        // Get current total:
                        var cart_total = $("#cart-total-cost-val").html();
                        // Convert it to float(number):
                        cart_total = parseFloat(cart_total);
                        // Calculate new total:
                        cart_total_new = cart_total + possible_discount - discount_card_cost;
                        // Format it:
                        cart_total_new = cart_total_new.toFixed(2);
                        // Assign new total:
                        $("#cart-total-cost-val").html(cart_total_new);
			
                        /** Update original cost(tranport depends on it) **/
                        // Get current original total:
                        var cart_original_total = $("#cart-total-cost-original").html();
                        // Convert it to float(number):
                        cart_original_total = parseFloat(cart_original_total); 
                        // Calculate new original total:
                        cart_original_total_new = cart_original_total + possible_discount - discount_card_cost;
                        // Format it:
                        cart_original_total_new = cart_original_total_new.toFixed(2);
                        //Assign new original total:
                        $("#cart-total-cost-original").html(cart_original_total_new);
                        // Show card entry
                        $("#discount-card-check-placeholder").fadeIn(500);
                        // 2) Hide alternate discount row:
                        $("#cart-possible-discount-total-row").fadeOut(500);
                }
        });
	
        /**
	 * 
	 * Product view: when small picture is clicked, load bigger version of it
	 * 
	 */
        $(".zoom_trigger").hover(function() {
                var big_picture_a = $("a.fancy_big_picture_a");
                var big_picture_img = $("img.fancy_big_picture_img");
		
                big_picture_a.attr("href", "/uploads/pictures/" + $(this).attr('title'));
                big_picture_img.attr("src", "/uploads/pictures/large/" + $(this).attr('title'));
        });
	
}); // END document.ready

/**
 * Function for scrolling
 */
function goToByScroll(id){
        $('html,body').animate({
                scrollTop: $("#"+id).offset().top
        },'slow');
}


/**
 * Function for re-calculating cart total cost and shipping
 */
function recalculate_cart(shipping_cost) {
        shipping_cost = parseFloat(shipping_cost);
	
        var cart_original_total = $("#cart-total-cost-original").html();
        cart_original_total = parseFloat(cart_original_total); 
	
        var cart_total = cart_original_total + shipping_cost;
        shipping_cost = shipping_cost.toFixed(2);
	
        cart_total = cart_total.toFixed(2);
	
	
        $("#cart-shipping-cost-val").html(shipping_cost);
        $("#cart-shipping-cost-hidden-val").html(shipping_cost);
        $("#cart-total-cost-val").html(cart_total);
	
        var floor_consideration = $("#floor-consideration-total").html();
	
        // if floor is selected and 'want shipping' is also 'yes'
        if (floor_consideration != "0.00" && $("#shipping-choice-table input[name='f_shipping_choice']:checked").val() == "with_shipping" ) {
                cart_total = parseFloat(cart_total);
                floor_consideration = parseFloat(floor_consideration);
                var cart_total2 = cart_total + floor_consideration;
                cart_total2 = cart_total2.toFixed(2);
                $("#cart-total-cost-val").html(cart_total2);
		
                shipping_cost = parseFloat(shipping_cost);
                var new_shipping = shipping_cost + floor_consideration;
                new_shipping = new_shipping.toFixed(2);
		
                $("#cart-shipping-cost-val").html(new_shipping);
        }
}

/**
 * Function for prefilling fields:
 */
// $('#kogus').keyup(function() {
function prefill(field1, field2) {
        //	if ($("input['name=" + field1 + "'").attr('was_empty'))
        //	alert(field1);
        if (field1 == 'f_billing_county') {
                //		alert($("select[name='" + field1 + "'] option:selected").val());
                $("select[name='" + field2 + "']").val($("select[name='" + field1 + "'] option:selected").val())
        // $("select[name='" + field1 + "'] option:selected").val()
        } else {
                $("input[name='" + field2 + "']").val($("input[name='" + field1 + "']").val());
        }
}


/**
 * Function for removing spaces from string
 */
function removeSpaces(string) {
        return string.split(' ').join('');
}

/**
 * Liisi credit calculator:
 */

var complects = new Array('640.01-6400,1-49,20', '130.01-640,1-49,22', '0-130,1-49,25'); 

function calc_payment() {
        var l_price = new Number(document.getElementById('l_price').value);
        var l_deposit = new Number(document.getElementById('l_deposit').value);
        var months_obj = document.getElementById('l_months');
        if (months_obj.options == undefined) var l_months = new Number(months_obj.value);
        else var l_months = new Number(months_obj.options[months_obj.selectedIndex].value);
        var l_interest = 0;
        for (var i = 0; i < complects.length; i++) {
                if (l_interest == 0) {
                        var complect = complects[i].split(',');
                        var p_range = complect[0].split('-');
                        var m_range = complect[1].split('-');
                        if (l_price - l_deposit >= Number(p_range[0]) && l_price - l_deposit <= Number(p_range[1]) && l_months >= Number(m_range[0]) && l_months <= Number(m_range[1])) l_interest = Number(complect[2]);
                }
        }
        if (l_interest == 0 || l_price == 0) {
                document.getElementById('l_result_error').style.display = '';
                document.getElementById('l_result_div').style.display = 'none';
                document.getElementById('l_result_min_error').style.display = 'none';
        }
        else {
                document.getElementById('payments-label').style.display = '';
                l_interest = l_interest / 1200;
                var m_loan = (l_price - l_deposit) / l_months;
                var m_interest = (l_price - l_deposit) * l_interest;
                var m_payment = m_loan + m_interest;
                m_payment = Math.round(m_payment * 100) / 100;
                if (m_payment < 7) {
                        document.getElementById('l_result_min_error').style.display = '';
                        document.getElementById('l_result_error').style.display = 'none';
                        document.getElementById('l_result_div').style.display = 'none';
                }
                else {
                        document.getElementById('l_result_error').style.display = 'none';
                        document.getElementById('l_result_min_error').style.display = 'none';
                        document.getElementById('l_result_div').style.display = '';
                        document.getElementById('l_result').innerHTML = l_months.toString() + ' x ' + m_payment.toString();
                }
        }
}

////cofi function
function calcCofi(){
        var c_price = new Number(document.getElementById('c_price').value);
        var c_deposit = new Number(document.getElementById('c_deposit').value);
        var months_obj = document.getElementById('c_months');
        if (months_obj.options == undefined) var c_months = new Number(months_obj.value);
        else var c_months = new Number(months_obj.options[months_obj.selectedIndex].value);
	
        $.ajax({
                type: "GET",
                url: "https://aatrium.cofi.ee/calculator/calculate", 
                data: "p[assets_price]="+c_price+"&p[payments]="+c_months+"&p[down_payment]="+c_deposit,
                dataType: "jsonp",
                success: function(json){
                        if(json=='error'){
                                document.getElementById('c_result_error').style.display = '';
                                document.getElementById('c_result_div').style.display = 'none';
                                document.getElementById('c_result_min_error').style.display = 'none';
                        } else {
                                document.getElementById('payments-label').style.display = '';
                                if (json['monthly_payment'] < 7) {
                                        document.getElementById('c_result_min_error').style.display = '';
                                        document.getElementById('c_result_error').style.display = 'none';
                                        document.getElementById('c_result_div').style.display = 'none';
                                }
                                else {
                                        document.getElementById('c_result_error').style.display = 'none';
                                        document.getElementById('c_result_min_error').style.display = 'none';
                                        document.getElementById('c_result_div').style.display = '';
                                        document.getElementById('c_result').innerHTML = c_months.toString() + ' x ' + json['monthly_payment'].toString();
                                }
                        }
                }
        });
	
}
function validateCode(kood) {
    
        var multiplier_1 = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 1);
        var multiplier_2 = new Array(3, 4, 5, 6, 7, 8, 9, 1, 2, 3);
            
        var control = kood.charAt(10);
        var retval  = false;
    
        var mod   = 0;
        var total = 0;
    
        /* Do first run. */
        for (i=0; i < 10; i++) {
                total += kood.charAt(i) * multiplier_1[i];
        }
        mod = total % 11;

        /* If modulus is ten we need second run. */
        total = 0;
        if (10 == mod) { 
                for (i=0; i < 10; i++) {
                        total += kood.charAt(i) * multiplier_2[i];
                }
                mod = total % 11;
        
                /* If modulus is still ten revert to 0. */
                if (10 == mod) {
                        mod = 0;
                }
        }
    
        return control == mod;
}
// Read a page's GET URL variables and return them as an associative array.
function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

function isDate(txtDate) {
    var objDate,  // date object initialized from the txtDate string
        mSeconds, // txtDate in milliseconds
        day,      // day
        month,    // month
        year;     // year
    // date length should be 10 characters (no more no less)
    if (txtDate.length !== 10) {
        return false;
    }
    // third and sixth character should be '.'
    if (txtDate.substring(2, 3) !== '.' || txtDate.substring(5, 6) !== '.') {
        return false;
    }
    // extract month, day and year from the txtDate (expected format is mm.dd.yyyy)
    // subtraction will cast variables to integer implicitly (needed
    // for !== comparing)
    month = txtDate.substring(3, 5) - 1; // because months in JS start from 0
    day = txtDate.substring(0, 2) - 0;
    year = txtDate.substring(6, 10) - 0;
    // test year range
    if (year < 2010 || year > 3000) {
        return false;
    }
    // convert txtDate to milliseconds
    mSeconds = (new Date(year, month, day)).getTime();
    // initialize Date() object from calculated milliseconds
    objDate = new Date();
    objDate.setTime(mSeconds);
    // compare input date and parts from Date() object
    // if difference exists then date isn't valid
    if (objDate.getFullYear() !== year ||
        objDate.getMonth() !== month ||
        objDate.getDate() !== day) {
        return false;
    }
    // otherwise return true
    return true;
}
