function log(o) {
    console.log.apply(console, arguments);
}


var ageChecker = (function() {
    var defaults = {
        container: null,
        fields: null,
        submit: null
    };
    
    var defaultFieldValues = {};
    
    var tmp_fields = {};
    
    var validations = {};
    
    //'day': /^((0?[1-9])|([1-2][0-9])|(3[0-2]))$/,
    //'month': /^((0?[1-9])|(1[0-2]))$/,
    //'year': /^(19([1-9][0-3]))/     ///^(19([1-9][0-9])|(20[0-1][0-2]))/
    
    
    var initializeValidations = function() {
        validations = {
            'date': /^((0?[1-9])|([1-2][0-9])|(3[0-2]))$/,
            'month': /^((0?[1-9])|(1[0-2]))$/,
            'year': /^(19([1-9][0-9])|(20[0-1][0-2]))/     ///^(19([1-9][0-9])|(20[0-1][0-2]))/
        }
    }
    
    /**
     * initialize input events - focus, blur, keyup
     */
    var initializeFields = function() {
        // set the default values
        $(defaults.fields).each(function(i, val) {
            defaultFieldValues[$(this).attr('id')] = $(this).val();
        });
        
        $(defaults.fields).focus(function() {
            if($(this).val() != defaultFieldValues[$(this).attr('id')]) {
                return;
            }
            tmp_fields[this] = $(this).val();
            $(this).val('');
        });
        
        $(defaults.fields).blur(function() {
            if($(this).val() == defaultFieldValues[$(this).attr('id')]) {
                return;
            }
            var $this = $(this);
            if($this.val() == '') {
                $(this).val(tmp_fields[this]);
            }
        });
        
        $(defaults.fields).keydown(function(e) {
            if(e.keyCode == 13)
                $(defaults.submit).click();
        });
    }
    
    /**
     * initialize submit button
     */
    var initializeSubmit = function() {
        $(defaults.submit).click(function(e) {
            e.preventDefault();
            validateFields();
        });
    }
    
    /**
     * should validate the fields
     */
    var validateFields = function() {
        var errors = false;
        var currentAgeFields = {};
        
        $(defaults.fields).each(function() {
            var val = $(this).val();
            var fieldType = $(this).attr('id').replace('age-check-', '');
            currentAgeFields[fieldType] = val;
            if(!validations[fieldType].test(val)) {
                errors = true;
            }
        });
        
        if(validateAge(currentAgeFields)) {
            errors = true;
        }
        
        if(errors) {
            $(defaults.container).find('.errors').show();
            return;
        } else {
            $(defaults.container).find('.errors').hide();
        }
        
        rememberCookie();
        closeAgeChecker();
    }
    
    var validateAge = function(ageObj) {
        var age = new Date((parseInt(ageObj.year) + 18), ageObj.month, ageObj.date);
        var today = new Date();
        if((today.getTime() - age.getTime()) > 0) {
            return false;
        }
        return true;
    }
    
    var closeAgeChecker = function() {
        $("#age-checker").dialog('destroy');
    }
    
    var rememberCookie = function() {
        var cookieTimestamp = 1;
        if($(defaults.container).find('#checker-holdme').is(':checked')) {
            cookieTimestamp = 30;
        }
        $.cookie('rememberAge', '1', { path: '/', expires: cookieTimestamp });
    }
    
    // public
    return {
        initialize: function(options) {
            $.extend(defaults, options);
            initializeValidations();
            initializeFields();
            initializeSubmit();
        }
    }
}());


function AgeCheckWrapper() {
if(typeof ClickTaleExec=='function')
    ClickTaleExec("AgeCheckWrapper()");
    
    if($.cookie('rememberAge') == null) {
        ageChecker.initialize({
            container: $('#age-checker'),
            fields: $('#age-check-form').find('input[id!="checker-input-dummy"]'),
            submit: $('#age-check-submit')
        });
        
        $("#age-checker").dialog({
            minHeight: 288,
            minWidth: 792,
            modal: true,
            closeOnEscape: false,
            resizable: false,
            open: function() {
                $('#age-checker').show();
            }
        });
    }
    $('#checker-input-dummy').css({ 'display': 'none' });
}

$(function() {
	AgeCheckWrapper();
});

