var errors="";function validate(B){var A=B.target;if(A&&A.id){return validationImpl(A.id)}return true}function validationImpl(A){checkRequired(A);validateFormats(A);validateLengths(A);if(errors!=""){alert(errors);errors="";return false}return true}function checkRequired(D){var A=$("#"+D+" input[required=true]");var C=false;for(var B=0;B<A.length;B++){if(A[B].type.toLowerCase()=="text"||A[B].type.toLowerCase()=="password"||A[B].type.toLowerCase()=="file"){if(jQuery.trim(A[B].value)==""){if(jQuery.trim(A[B].getAttribute("display-name"))!=""){errors+="The required field "+A[B].getAttribute("display-name")+" needs to be filled.\n"}else{if(!C){errors+="Fields displayed in red are mandatory and need to be filled.\n";C=true}}$("#"+D+" input[required=true]:eq("+B+")").addClass("req-empty");$("#"+D+" input[required=true]:eq("+B+")").change(function(){if(jQuery.trim($(this).val())!=""){$(this).removeClass("req-empty")}})}}}}function validateFormats(I){var B=$("#"+I+" input[validate]");for(var E=0;E<B.length;E++){var H=B[E].getAttribute("validate");var C=B[E].value;if(C!=null&&C!=""){switch(H){case"nickname":var F=C.match(/[/\\"&#'*:;$%!?\|<>+=@,]/);if(F!=null){errors+='The "'+B[E].getAttribute("display-name")+'" field contains invalid characters.\n';$("#"+I+" input[validate]:eq("+E+")").addClass("invalid")}else{$("#"+I+" input[validate]:eq("+E+")").removeClass("invalid")}break;case"digit":var F=C.match(/\D/);if(F!=null){errors+='The "'+B[E].getAttribute("display-name")+'" field must contain only numbers.\n';$("#"+I+" input[validate]:eq("+E+")").addClass("invalid")}else{$("#"+I+" input[validate]:eq("+E+")").removeClass("invalid")}break;case"time":var F=C.match(/^([0-1][0-9]|[2][0-3]):([0-5][0-9]):([0-5][0-9])$/);if(F==null){errors+='The "'+B[E].getAttribute("display-name")+'" field does not match the HH:MM:SS format.\n';$("#"+I+" input[validate]:eq("+E+")").addClass("invalid")}break;case"date":var F=C.match(/^((29\/02\/((19|20)(([02468][048])|([13579][26]))))|((((0[1-9])|(1\d)|(2[0-8]))\/((0[1-9])|(1[0-2])))|((31\/((0[13578])|(1[02])))|((29|30)\/((0[1,3-9])|(1[0-2])))))\/((20[0-9][0-9])|(19[0-9][0-9])))$/);if(F==null){errors+='The "'+B[E].getAttribute("display-name")+'" field does not match the DD/MM/YYYY format.\n';$("#"+I+" input[validate]:eq("+E+")").addClass("invalid")}break;case"ulFile":var F=C.match(/.*\.(rep|zip|rar)$/i);if(F==null){errors+='The file format on the "'+B[E].getAttribute("display-name")+'" field is not supported (only rep/zip/rar files)\n';$("#"+I+" input[validate]:eq("+E+")").addClass("invalid")}break;case"wordlist":var G=C.split(/\s*,\s*/);var A=0;for(var D=0;D<G.length;D++){var F=G[D].match(/[/\\"&#'*:;$%!?\|<>+=@,]/);if(F!=null){errors+='The keyword "'+G[D]+'" contains invalid characters.\n';$("#"+I+" input[validate]:eq("+E+")").addClass("invalid")}else{A++}}if(A==G.length){$("#"+I+" input[validate]:eq("+E+")").removeClass("invalid")}break;default:break}}}}function validateLengths(E){var B=$("#"+E+" input[valid-length]");for(var C=0;C<B.length;C++){var A=B[C].getAttribute("valid-length");var D=B[C].value;if(D!=null&&D!=""&&D.length>A){errors+='The "'+B[C].getAttribute("display-name")+'" field is too long. Maximum number of characters is '+A+"\n";$("#"+E+" input[valid-length]:eq("+C+")").addClass("tooLong")}else{$("#"+E+" input[valid-length]:eq("+C+")").removeClass("tooLong")}}};