/**
 *
 * Press Release Grader Client Side Library
 *
 * Adapted from Mawi's Website Grader Client Side Library
 * 
 */
(function($){

    var grader = window.grader = window.grader ||
    {}, prg = grader.prg = grader.prg ||
    {}, grader_form = prg.grader_form = prg.grader_form ||
    {};
    
    grader_form.formId = "";
    
    grader_form.init = function(formId){
        jQuery.validator.addMethod("optional_domain", function(value, element){
            if (value == '') {
                return true;
            }
            var StrToCheck = value.replace(/^\s+|\s+$/, '');
            var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+(travel|[\w]{2,4})(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
            return RegExp.test(StrToCheck);
        }, "Please use a valid URL format eg. www.mydomain.com");
        
        grader_form.formId = formId;
        $(window.grader.prg.grader_form.formId).validate({
            errorPlacement: function(error, element){
                error.insertBefore(element);
            },
            onkeyup: false,
            onfocusout: false,
            rules: {
                text: {
                    required: true,
                    minlength: 30
                },
                company_web: {
                    optional_domain: true
                },
                email: {
                    email: true
                }
            },
            messages: {
                text: {
                    required: "Please enter a press release to be graded",
                    minlength: "That doesn't look like a real press release to me ;)"
                },
                company_web: {
                  optional_domain: "Please use a valid URL format eg. www.mydomain.com"
                },
                email: {
                    email: "Please use a valid email format eg. name@domain.com"
                }
            },
            invalidHandler: function (f, v){
                var invalid_elements = v.invalidElements();
                var text_area = jQuery('#text');
                text_area.show();
                jQuery.scrollTo(invalid_elements[0]);
                text_area.hide();
            }
        });
    }
})(jQuery);
