/*
Copyright (C) 2009-2010, Albert Filella, Gestio i Programes S.L.  All rights reserved.
<info@gestioprogrames.es>
*/

(function(b){b.fn.lastValidation=function(g){if(b(this)[0]==undefined){alert("El formulario no existe");return false}var n=this,l=this.attr("id"),c=true,a="",f="",e=[],j=[],d,i,m;c={error_empty:"Rellene el campo ###",error_email:"El ### no tiene el formato correcto",error_repeat:"La confirmaci&oacute;n de la contrase&ntilde;a no es v&aacute;lida",error_url:"La ### no tiene el formato correcto",error_nif:"El ### no tiene el formato correcto",error_cif:"El ### no tiene el formato correcto",error_nifcif:"El ###  no tiene el formato correcto",
error_alphanumeric:"Los datos de ### no son alfanum&eacute;ricos",error_code:'Los datos de ### solo pueden contener: letras, numeros, "-" y "_"',error_integer:"Los datos de ### no son un n&uacute;mero entero",error_integerpos:"Los datos de ### no son un n&uacute;mero entero positivo",error_integerneg:"Los datos de ### no son un n&uacute;mero entero negativo",error_float:"Los datos de ### no son un n&uacute;mero decimal",error_floatpos:"Los datos de ### no son un n&uacute;mero decimal positivo",error_floatneg:"Los datos de ### no son un n&uacute;mero decimal negativo",
error_integerrank:"Los datos de ### no son un n&uacute;mero entero con rango ( #MIN , #MAX )",error_limit:"Los datos de ### exceden el l&iacute;mite de car&aacute;cteres <strong>#LIMIT</strong>",error_minimum:"Los datos de ### deben tener un m&iacute;nimo de <strong>#LIMIT</strong> car&aacute;cteres",error_radio:"Debe seleccionar una opci&oacute;n del apartado ###",error_check:"Debe seleccionar una opci&oacute;n del apartado ###",error_select:"Debe seleccionar un item del menu ###",error_selectmulti:"Debe seleccionar un item del menu ###",
error_file:"Debe seleccionar un archivo ###",error_percentage:"Los datos de ### no son un porcentaje",error_percentagepos:"Los datos de ### no son un porcentaje positivo",error_percentageneg:"Los datos de ### no son un porcentaje negativo",error_starts:'Los datos de ### no empiezan con "#CAD"',error_ends:'Los datos de ### no terminan con "#CAD"',error_has:'Los datos de ### no contienen la cadena "#CAD"'};var h=jQuery.extend({language:"spanish",field_bold:1,field_italic:0,field_quotes:0,field__start_hyphen:1,
field_final_dot:0},g.format);if(h.language=="spanish")var k=jQuery.extend(c,g.errors);if(h.cssReset)for(var o=0;o<h.cssReset.length;o++)n.find("."+h.cssReset[o]).removeClass(h.cssReset[o]);for(o=0;o<g.fields.length;o++){c=true;d=0;a=g.fields[o].name;f=g.fields[o].text;e=g.fields[o].rules;for(m=b("#"+l+" :input[name='"+a+"']");d<e.length&&c==true;){if(m.is("input:text:enabled")||m.is("input:password")||m.is("input:file")||m.is("textarea")){if(e[d]=="required")if(m.val().empty()){c=false;i=k.error_empty;
if(m.is("input:file"))i=k.error_file;j.push({field:a,error:b.lastValidationFormat(a,f,i,h)})}if(!m.val().empty()){if(e[d]=="email")if(!m.val().email()){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_email,h)})}if(e[d]=="repeat")if(!m.val().equal(n.find("input.ripitir").val())){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_repeat,h)})}if(e[d]=="url")if(!m.val().url()){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_url,h)})}if(e[d]=="nif")if(!m.val().nif()){c=
false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_nif,h)})}if(e[d]=="cif")if(!m.val().cif()){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_cif,h)})}if(e[d]=="nifcif")if(!m.val().nif()&&!m.val().cif()){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_nifcif,h)})}if(e[d]=="alphanumeric")if(!m.val().alphanumeric()){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_alphanumeric,h)})}if(e[d]=="code")if(!m.val().code()){c=false;j.push({field:a,
error:b.lastValidationFormat(a,f,k.error_code,h)})}if(e[d]=="integer")if(!m.val().integer()){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_integer,h)})}if(e[d]=="integerpos")if(!m.val().integerpos()){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_integerpos,h)})}if(e[d]=="integerneg")if(!m.val().integerneg()){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_integerneg,h)})}if(e[d]=="float")if(!m.val().floatval()){c=false;j.push({field:a,error:b.lastValidationFormat(a,
f,k.error_float,h)})}if(e[d]=="floatpos")if(!m.val().floatpos()){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_floatpos,h)})}if(e[d]=="floatneg")if(!m.val().floatneg()){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_floatneg,h)})}if(e[d]=="percentage")if(!m.val().percentage()){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_percentage,h)})}if(e[d]=="percentagepos")if(!m.val().percentagepos()){c=false;j.push({field:a,error:b.lastValidationFormat(a,
f,k.error_percentagepos,h)})}if(e[d]=="percentageneg")if(!m.val().percentageneg()){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_percentageneg,h)})}if(/starts/.test(e[d])){i=e[d].split("##")[1];if(!b(":input[name='"+a+"']").val().starts(i)){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_starts,h,{sentence:i})})}}if(/ends/.test(e[d])){i=e[d].split("##")[1];if(!b(":input[name='"+a+"']").val().ends(i)){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_ends,
h,{sentence:i})})}}if(/has/.test(e[d])){i=e[d].split("##")[1];if(!b(":input[name='"+a+"']").val().has(i)){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_has,h,{sentence:i})})}}if(/integerrank/.test(e[d])){i=e[d].split("##")[1].split("#")[0];var p=e[d].split("##")[1].split("#")[1];if(i>p){var q=i;i=p;p=q}if(!b(":input[name='"+a+"']").val().integrrank(i,p)){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_integerrank,h,{minimum:i,maximum:p})})}}if(/charmax/.test(e[d])){i=
e[d].split("##")[1];if(b(":input[name='"+a+"']").val().length>i){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_limit,h,{charmax:i})})}}if(/charmin/.test(e[d])){i=e[d].split("##")[1];if(b(":input[name='"+a+"']").val().length<i){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_minimum,h,{charmin:i})})}}}}if(b(":input[name='"+a+"']").is("input:radio"))if(e[d]=="required"){i=b(":input:checked[name='"+a+"']");if(i.length==0){c=false;j.push({field:a,error:b.lastValidationFormat(a,
f,k.error_radio,h)})}}if(b(":input[name='"+a+"']").is("input:checkbox"))if(e[d]=="required"){i=b(":input:checked[name='"+a+"']");if(i.length==0){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_check,h)})}}if(b(":input[name='"+a+"']").is("select"))if(e[d]=="required")if(b(":input[name='"+a+"']").attr("multiple")){if(!b(":input[name='"+a+"']").val()){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_selectmulti,h)})}}else{i=b(":input[name='"+a+"']").attr("selectedIndex");
if(i==null||i==0){c=false;j.push({field:a,error:b.lastValidationFormat(a,f,k.error_select,h)})}}d++}}return j.length!=0?j:true};b.lastValidationFormat=function(g,n,l,c,a){if(a){if(a.sentence)l=l.replace(/#CAD/,a.sentence);if(a.charmax)l=l.replace(/#LIMIT/,a.charmax);if(a.charmin)l=l.replace(/#LIMIT/,a.charmin);if(a.minimum)l=l.replace(/#MIN/,a.minimum);if(a.maximum)l=l.replace(/#MAX/,a.maximum)}if(c.field_bold==1)n="<b>"+n+"</b>";if(c.field_italic==1)n="<i>"+n+"</i>";if(c.field_quotes!=0)n=c.field_quotes+
n+c.field_quotes;if(c.field__start_hyphen==1)l="- "+l;if(c.field_final_dot==1)l+=".";return l.replace(/###/,n)};b.extend({netmotorFWK_stringStrip:{empty:function(){return this==null||this.length==0||/^\s+$/.test(this)?true:false},alphanumeric:function(){return/^[a-zA-Z0-9]+$/.test(this)},code:function(){return/^[a-zA-Z0-9_-]+$/.test(this)},integer:function(){return/^[-+]?\d*$/.test(this)},integrrank:function(g,n){var l=Number(this);if(isNaN(l))return false;if(l!=Math.round(l))return false;return l>=
g&&l<=n},integerpos:function(){return/^[+]?\d*$/.test(this)},integerneg:function(){return/^-\d+$/.test(this)},floatval:function(){if(this.indexOf(".")==-1)return false;return/^-?(0|[1-9]{1}\d{0,})(\.(\d{1}\d{0,}))?$/.test(this)},floatpos:function(){if(this.indexOf(".")==-1)return false;return/(^\d*\.?\d*[0-9]+\d*$)|(^[0-9]+\d*\.\d*$)/.test(this)},floatneg:function(){if(this.indexOf(".")==-1)return false;return/(^-\d*\.?\d*[1-9]+\d*$)|(^-[1-9]+\d*\.\d*$)/.test(this)},percentage:function(){if(this.indexOf("%")==
-1)return false;return/^[+-]? *100(\.0{0,2})? *%?$|^[+-]? *\d{1,2}(\.\d{1,2})? *%?$/.test(this)},percentagepos:function(){if(this.indexOf("%")==-1)return false;return/^[+]? *100(\.0{0,2})? *%?$|^[+]? *\d{1,2}(\.\d{1,2})? *%?$/.test(this)},percentageneg:function(){if(this.indexOf("%")==-1)return false;if(this.indexOf("-")==-1)return false;return/^-*100(\.0{0,2})? *%?$|^-*\d{1,2}(\.\d{1,2})? *%?$/.test(this)},email:function(){return/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/.test(this)},
url:function(){return/^(((ht|f)tp(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/.test(this.toLowerCase())},nif:function(){var g=this.toUpperCase().substr(0,this.toUpperCase().length-1)%23,n=this.toUpperCase().substr(this.toUpperCase().length-1,1);return"TRWAGMYFPDXBNJZSQVHLCKET".substring(g,g+1)!=n?false:true},cif:function(){var g=0,n=0,l,c=new Array("J","A","B","C","D","E","F","G","H","I"),a;if(!(new RegExp(/^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g)).exec(this.toUpperCase()))return false;
l=this.toUpperCase().substr(8,1);for(var f=1;f<7;f++){a=(2*parseInt(this.toUpperCase().substr(f++,1))).toString()+"0";n+=parseInt(a.substr(0,1))+parseInt(a.substr(1,1));g+=parseInt(this.toUpperCase().substr(f,1))}a=(2*parseInt(this.toUpperCase().substr(f,1))).toString()+"0";n+=parseInt(a.substr(0,1))+parseInt(a.substr(1,1));g=(g+n).toString();g=parseInt(g.substr(g.length-1,1));g=(10-g).toString();if(g==10)g=0;return l==g||l==c[g]?true:false},starts:function(g){return this.indexOf(g)==0},ends:function(g){var n=
this.length-g.length;return n>=0&&this.lastIndexOf(g)===n},has:function(g){return this.indexOf(g)>-1},equal:function(g){return this==g?true:false}}});b.extend(String.prototype,jQuery.netmotorFWK_stringStrip)})(jQuery);
