$(document).ready(function() {

    // a custom method making the default value for companyurl ("http://") invalid, without displaying the "invalid url" message
    jQuery.validator.addMethod("defaultInvalid", function(value, element) {
        return value != element.defaultValue;
    }, "");

    jQuery.validator.addMethod("billingRequired", function(value, element) {
        if ($("#bill_to_co").is(":checked"))
            return $(element).parents(".subTable").length;
        return !this.optional(element);
    }, "");

    jQuery.validator.addMethod('postcode', function(value) {
    return /^\d{4}[\s-][a-zA-Z]{2}$/.test(value);
    }, 'Vul een geldig postcode in (met spatie 1000 AA)');
    
    jQuery.validator.addMethod('telefoon', function(value) {
    return /(0)(\d{2})-(\d{7})/.test(value) || /(0)(6)-(\d{8})/.test(value) || /(0)(\d{3})-(\d{6})/.test(value);
    }, 'Vul een geldige telefoonnummer in (010-1234567)');
    
    
    jQuery.validator.messages.required = "";
    $("form").validate({
        invalidHandler: function(e, validator) {
            var errors = validator.numberOfInvalids();
            if (errors) {
                var message = errors == 1
					? 'U heeft 1 veld niet ingevuld. Velden met een * zijn verplicht.'
					: 'U heeft ' + errors + ' velden niet ingevuld. Velden met een * zijn verplicht.';
                $("div.error span").html(message);
                $("div.error").show();
            } else {
                $("div.error").hide();
            }
        },
        message :{
        email: { email: "Vul een geldig email adres in" }
        }
        
          
    });

    $(".resize").vjustify();
    $("div.buttonSubmit").hoverClass("buttonSubmitHover");

    if ($.browser.safari) {
        $("body").addClass("safari");
    }

    
    

    // toggle optional billing address
    var subTableDiv = $("div.subTableDiv");
    var toggleCheck = $("input.toggleCheck");
    toggleCheck.is(":checked")
  	? subTableDiv.hide()
	: subTableDiv.show();
    $("input.toggleCheck").click(function() {
        if (this.checked == true) {
            subTableDiv.slideUp("medium");
            $("form").valid();
        } else {
            subTableDiv.slideDown("medium");
        }
    });


});

$.fn.vjustify = function() {
    var maxHeight = 0;
    $(".resize").css("height", "auto");
    this.each(function() {
        if (this.offsetHeight > maxHeight) {
            maxHeight = this.offsetHeight;
        }
    });
    this.each(function() {
        $(this).height(maxHeight);
        if (this.offsetHeight > maxHeight) {
            $(this).height((maxHeight - (this.offsetHeight - maxHeight)));
        }
    });
};

$.fn.hoverClass = function(classname) {
    return this.hover(function() {
        $(this).addClass(classname);
    }, function() {
        $(this).removeClass(classname);
    });
};
