/**
 *
 * Website Grader Client Side Library
 * @author Mawi
 */
(function($){

    var grader = window.grader = window.grader ||
    {}, wsg = grader.wsg = grader.wsg ||
    {}, reportForm = wsg.reportForm = wsg.reportForm ||
    {};
    
    reportForm.formId = "";
    
    reportForm.init = function(formId){
        jQuery.validator.addMethod("domain", function(value, element){
            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");
        
        jQuery.validator.addMethod("multiLineUrls", function(value, element){
            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})*)?$/;
            var Competitors = StrToCheck.split(/[;,\n]+/);
            var all = Competitors.length;
            var valid = 0;
            if (Competitors.length > 0) {
                for (i = 0; i < Competitors.length; i++) {
                    var url = Competitors[i];
                    url = url.replace(/^\s+|\s+$/, '');
                    //alert("url :"+url);
                    //alert(url.length)
                    if (url.length == 0) {
                        all--;
                        continue;
                    }
                    if (RegExp.test(url)) {
                        valid++;
                    }
                }
            }
            //alert(valid);
            //alert(all);
            return (valid == all);
        }, "Please use a valid URL format eg. www.mydomain.com");
        
        reportForm.formId = formId;
        $(window.grader.wsg.reportForm.formId).validate({
            errorPlacement: function(error, element){
                error.insertBefore(element);
            },
			onkeyup: false,
			onfocusout: false,
            rules: {
                txtWebsite: {
                    required: true,
                    domain: true
                },
                userEmail: {
                    email: true
                },
                competitors: {
                    multiLineUrls: true
                }
            
            },
            messages: {
                txtWebsite: {
                    required: "Please enter a website eg. www.mydomain.com",
                    domain: "Please use a valid URL format eg. www.mydomain.com"
                },
                userEmail: {
                    email: "Please use a valid email format eg. comany@domain.com"
                },
                competitors: {
                    multiLineUrls: " Some of competitors URLS you entered are in invalid format"
                }
            }
        });
    }
})(jQuery);

