﻿$(function () {
    $.validator.addMethod("day", function (value, element) {
        value = $.trim(value);
        var result = /^[0-9]{1,2}$/.test(value);
        result = result && (parseInt(value, 10) > 0 && parseInt(value, 10) < 32);
        return this.optional(element) || result;
    }, "");

    $.validator.addMethod("month", function (value, element) {
        value = $.trim(value);
        var result = /^[0-9]{1,2}$/.test(value);
        result = result && (parseInt(value, 10) > 0 && parseInt(value, 10) < 13);
        return this.optional(element) || result;
    }, "");

    $.validator.addMethod("year", function (value, element) {
        value = $.trim(value);
        var result = /^[0-9]{4}$/.test(value);
        result = result && (parseInt(value, 10) > 1900 && parseInt(value, 10) < 2100);
        return this.optional(element) || result;
    }, "");

    $('#ageCheckForm').validate({
        errorPlacement: function ($label, $element) {
            var $error = $("#ageCheckForm div." + $element.attr('name') + "_errormsg");
        },
        highlight: function (element, errorClass, validClass) {
            var $element = $(element);
            var $error = $("<div class='" + $element.attr('name') + "_errormsg'>&nbsp;</div>");
            $error.insertBefore('div.ageCheck a.close');

            if (!$element.hasClass(errorClass)) {
                $error.show();
            }
        },
        unhighlight: function (element, errorClass) {
            var $element = $(element);
            var $error = $("#ageCheckForm div." + $element.attr('name') + "_errormsg");
            $element.removeClass(errorClass);
            $error.remove();
            $("#ageCheckForm .age_errormsg").remove();
        }
    });


    $('div.ageCheck a.close').click(function () {
        if (!$('#ageCheckForm').valid()) return;
        var date = new Date();
        var day = parseInt($('#day').val(), 10);
        var month = parseInt($('#month').val(), 10);
        var year = parseInt($('#year').val(), 10);
        var age = date.getFullYear() - year;
        if ((month - 1) > date.getMonth() || ((month - 1) == date.getMonth() && day > date.getDate()))
            age--;
        if (age < 18) {
            $.cookie('age_check_passed', null, {domain:'.grolsch.nl'});
            var $error = $("<div class='age_errormsg'>&nbsp;</div>");
            $error.insertBefore('div.ageCheck a.close');
        }
        else {
            $.cookie('age_check_passed', 'true', { expires: 10, path: '/', domain: '.grolsch.nl' });
            $(this).closest('.ageCheck').hide();
            $('body>.content').show();
            if ($('#scroll-panel').length > 0)
                $("#scroll-panel").jScrollPane({ scrollbarWidth: 5 });
            $("<div class='age_errormsg'>&nbsp;</div>").remove();
            window.onAgeCheckPassed && window.onAgeCheckPassed();
        }
    });
});
