var Base=function(){};Base.extend=function(B,E){var F=Base.prototype.extend;Base._prototyping=true;var D=new this;F.call(D,B);delete Base._prototyping;var C=D.constructor;var A=D.constructor=function(){if(!Base._prototyping){if(this._constructing||this.constructor==A){this._constructing=true;C.apply(this,arguments);delete this._constructing}else{if(arguments[0]!=null){return(arguments[0].extend||F).call(arguments[0],D)}}}};A.ancestor=this;A.extend=this.extend;A.forEach=this.forEach;A.implement=this.implement;A.prototype=D;A.toString=this.toString;A.valueOf=function(G){return(G=="object")?A:C.valueOf()};F.call(A,E);if(typeof A.init=="function"){A.init()}return A};Base.prototype={extend:function(B,H){if(arguments.length>1){var E=this[B];if(E&&(typeof H=="function")&&(!E.valueOf||E.valueOf()!=H.valueOf())&&/\bbase\b/.test(H)){var A=H.valueOf();H=function(){var K=this.base||Base.prototype.base;this.base=E;var J=A.apply(this,arguments);this.base=K;return J};H.valueOf=function(J){return(J=="object")?H:A};H.toString=Base.toString}this[B]=H}else{if(B){var G=Base.prototype.extend;if(!Base._prototyping&&typeof this!="function"){G=this.extend||G}var D={toSource:null};var F=["constructor","toString","valueOf"];var C=Base._prototyping?0:1;while(I=F[C++]){if(B[I]!=D[I]){G.call(this,I,B[I])}}for(var I in B){if(!D[I]){G.call(this,I,B[I])}}}}return this},base:function(){}};Base=Base.extend({constructor:function(){this.extend(arguments[0])}},{ancestor:Object,version:"1.1",forEach:function(A,D,C){for(var B in A){if(this.prototype[B]===undefined){D.call(C,A[B],B,A)}}},implement:function(){for(var A=0;A<arguments.length;A++){if(typeof arguments[A]=="function"){arguments[A](this.prototype)}else{this.prototype.extend(arguments[A])}}return this},toString:function(){return String(this.valueOf())}});if(!this.JSON){JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z"};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapeable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapeable.lastIndex=0;return escapeable.test(string)?'"'+string.replace(escapeable,function(a){var c=meta[a];if(typeof c==="string"){return c}return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(typeof value.length==="number"&&!value.propertyIsEnumerable("length")){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==="string"){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}})();$b.extend({toggleClass:function(A){if(this.hasClass(A)){this.removeClass(A)}else{this.addClass(A)}return this},mAttr:function(B,C){var A=[];this.each(function(D){var E=$b(D).attr(B);if(E!=""||E!=null){A.checkAgainst(E)}});return $type(C)?A.join(C):A}});extendObject(String.prototype,{format:function(A){switch(A){case"uc":return this.toUpperCase();break;case"lc":return this.toLowerCase();break;case"sc":case"wc":var E=A;var B=E=="sc"?".":" ";var C="";var D=this.split(B);D.map(function(F){if(F.trim()!=""){firstChar=F.substring(0,1).toUpperCase();remainChar=F.substring(1).toLowerCase();C+=firstChar+remainChar+B+" "}});return C.trim();break;default:return this.replace(A,replace);break}},clean:function(){return this.replace(/\s+/g," ").trim()}});mocha={components:{core:"0.9b"},release:false};var mochajs=Base.extend({formObj:null,validates:[],log:"",advcheckslog:"",textInput:["text","select-one","textarea"],textFields:["text","textarea"],lang:{},constructor:function(C,A){this.extend({errors:function(){return new Array()}(),adverrors:function(){return new Array()}(),options:function(){return $merge({checklist:{},formparser:null,trigger:false,requiredKey:"required",UImode:"default",UIcallback:false,error:mochaSetup.hcolor,lang:mochaSetup.setLang},(A||{}))}()});this.options.formId=C;this.options.method="post";var B=this;$b.ready(function(){var D=$b.getForm(B.options.formId);B.lang=mochaSetup.lang[B.options.lang];D.preventSubmit();var E=B.options.trigger?"#"+B.options.trigger:D.buttons.submits[0];$b(E).on("click",function(){if($type(B.options.checklist)=="object"){B.errorCheck()}else{if(B.options.checklist=="remote"){var F=B.lang.processError+(B.log.length>0?":\n\n"+B.log:"");alert(F);return false}}})})},setLang:function(A){this.lang=mochaSetup.lang[A]},getLangString:function(E,A,F){var D=this.lang[E];if($type(F)){var B=D.match(/({)/).length;for(i=0;i<B;i++){var H=D.match(/{.+?}/)[0];var G=H.slice(1,H.length-1).split("|");var C=$defined(F[i])?G[F[i]]:"";D=D.replace(/{.+?}/,C)}D+=" "}if($type(A)=="array"){A.map(function(J,I){D=D.replace(new RegExp("\\%"+I.toString()),J.toString())});return D.trim()}else{return D.replace(/\%0/g,A.toString()).trim()}},setMethod:function(B,A){this.options.ajaxCallback=(A||false);this.options.method=B},loadChecklist:function(url){var _this=this;var myRequest=new ajaxObject(url);myRequest.callback=function(responseText,responseStatus){if(responseStatus==200){_this.options.checklist=$defined(window.JSON)?JSON.parse(responseText):eval("("+responseText+")")}else{_this.log+=_this.lang.noCheckListLoaded}};$b.ready(function(){myRequest.update("","POST")})},getFormObj:function(){return $b.getForm(this.options.formId)},getFields:function(B){if(B.test(",")){var A=[];var C=B.split(",");var D=this;C.map(function(E){A.merge($b.getForm(D.options.formId).field(E).fields)});return A}else{return $b.getForm(this.options.formId).field(B).fields}},getFieldValue:function(A){return $b.getForm(this.options.formId).field(A).value()},getFieldLabel:function(D){var E=$b(D).attr("id");var A=(E!=null&&E!="")?E:D.name;var B=$b("#"+this.options.formId).get("label",{"for":A});if(B.length()>0){return B.txt().clean()}else{var C=D.parentNode;B=C.nodeName=="LABEL"?$b(C):false;return B?B.txt().clean():(A.charAt(0).toUpperCase()+A.substr(1,A.length-1))}},errorCheck:function(){this.errors=new Array();this.adverrors=new Array();this.validates=new Array();this.advcheckslog="";this.log="";var _this=this;var _form=this.getFormObj();_form.fields.map(function(el){if($b(el).hasClass(_this.options.requiredKey)&&!_this.getFieldValue(el.name)){if(el.type=="checkbox"){_this.adverrors.checkAgainst(el);_this.advcheckslog+=_this.lang.singleCheckboxIntro+" "+_this.getFieldLabel(el)+"\n"}else{_this.errors.checkAgainst(el)}}else{_this.validates.checkAgainst(el)}});for(check in this.options.checklist){var field=this.getFields(check);var rules=this.options.checklist[check];rules=isArray(rules)?rules:[rules];field.map(function(f){var pass=[f];rules.map(function(r){if(r.test(/\[.*\]/)){var rFunc=r.split("[",1)[0];var rArgs=eval(r.slice(rFunc.length));_this[rFunc].apply(_this,pass.merge(rArgs))}else{_this[r].apply(_this,pass)}})})}if((this.errors.length+this.adverrors.length)>0){this.errorUI(this.options.UImode)}else{switch(this.options.method){case"ajax":var callback=$type(this.options.ajaxCallback)=="function"?this.options.ajaxCallback:function(){};_form.send(this.options.formparser,callback);break;case"post":default:_form.f.action=this.options.formparser;_form.f.submit();break}}},colorize:function(){if(this.options.error.charAt(0)=="."){$b(this.validates).removeClass(this.options.error.substr(1));$b(this.errors,this.adverrors).addClass(this.options.error.substr(1))}else{$b(this.validates).css("background-color","");$b(this.errors,this.adverrors).css("background-color",this.options.error)}},buildLog:function(B){var B=B||"default";var A="";switch(B){case"default":A+=this.lang.defaultAlert;if(this.adverrors.length>0){A+="\n-----------------------------------\n";A+=this.advcheckslog}break;case"verbose":var C=this;A+=this.lang.verboseIntro+"\n";A+="-----------------------------------\n";$b(this.errors).each(function(D){A+=C.getFieldLabel(D)+" "+C.lang.verboseEmpty+"\n"});A+=this.advcheckslog;break}return A},errorUI:function(B){switch(B){case"single":var A=$b(this.errors,this.adverrors).item(0,true);alert(this.getLangString("singleError",this.getFieldLabel(A)));A.focus();break;case"verbose":this.colorize();this.log=this.buildLog("verbose");alert(this.log);break;case"custom":if($type(this.options.UIcallback)=="function"){this.options.UIcallback.apply(this,[{valids:this.validates,errors:this.errors,adverrors:this.adverrors,logs:[this.log,this.advcheckslog]}])}break;case"default":default:this.colorize();this.log=this.buildLog("default");alert(this.log);break}},required:function(A){if(!this.errors.inArray(A)){if(!this.getFieldValue(A.name)){this.errors.push(A)}}},email:function(C){var B=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;var A=this.getFieldValue(C.name);if(A&&!A.test(B)){this.adverrors.checkAgainst(C);this.advcheckslog+=this.getFieldLabel(C)+" "+this.lang.validEmail+"\n"}},checkbox:function(){var A=[];for(i=0;i<arguments.length-1;i++){A.push(arguments[i])}var C=arguments[arguments.length-1];var C=C=="all"?C=A.length:parseInt(arguments[arguments.length-1]);var B=0;$b(A).each(function(E){if(E.checked==false){B++}});if(B>A.length-(C||1)){this.adverrors.merge(A);var D=[];_this=this;A.map(function(E){D.push(_this.getFieldLabel(E))});this.advcheckslog+=this.getLangString("checkboxIntro",[C,D.join(", ")])+"\n"}},radio:function(B){var C=$b.getForm(this.options.formId).field(B[0].name).value();if(!C){this.adverrors.merge(B);var D=[];for(i=0;i<B.length;i++){var A=this.getFieldLabel(B[i]);if(!D.inArray(A)){D.push(A)}}this.advcheckslog+=this.lang.radioIntro+" "+D.join(", ")+"\n"}},match:function(A,B){if(this.getFieldValue(A.name)!=this.getFieldValue(B.name)){this.adverrors.merge([A,B]);var C=[this.getFieldLabel(A),this.getFieldLabel(B)];this.advcheckslog+=this.getLangString("matchError",C)+"\n"}},chars:function(field,type,match,min,max){var fieldValue=this.getFieldValue(field.name);if(!fieldValue){return }var options={type:(type||false),match:($defined(match)?match:fieldValue.length)};var minC=(eval(min)||0);var maxC=(max||fieldValue.length);if(options.match!=false){if($type(options.match)=="array"){var matchStr="{"+options.match.join(",")+"}"}else{var matchStr="{"+options.match.toString()+"}"}}else{var matchStr=""}var ren="";if($type(options.type)=="string"&&$defined(mochaSetup.charMatch[options.type])){var exp=mochaSetup.charMatch[options.type];var ren=new RegExp(exp+matchStr)}else{if($type(options.type)=="regexp"){var ren=options.type}}if((fieldValue.length>maxC||fieldValue.length<minC||fieldValue.test(ren)==false)&&fieldValue!=""){this.adverrors.checkAgainst(field);var langStr=[this.getFieldLabel(field)];if($type(options.type)=="string"&&$defined(this.lang[options.type])){var langKey="charError";var matchOpt=[$defined(match)?0:1];var matchStr=$defined(match)?match+" ":"";langStr.push(matchStr+this.lang[options.type]);var minStr=$defined(min)&&min?min.toString():"0";var maxStr=$defined(max)&&max?max.toString():this.lang.more;if(minStr+maxStr!=""){matchOpt.push(0);langStr.push(minStr,maxStr)}this.advcheckslog+=this.getLangString("charError",langStr,matchOpt)+"\n"}else{this.advcheckslog+=this.getLangString("charErrorRegexp",langStr)+"\n"}}}});mochaSetup={lang:{EN_en:{processError:"Error processing the form",noCheckListLoaded:"Unable to remotely load Advanced Checklist",verboseIntro:"Followings Errors have been detected:",verboseEmpty:"is empty",singleError:"Field %0 is empty or incorrectly filled",radioIntro:"Select an option for",checkboxIntro:"Select at least %0 between: %1",singleCheckboxIntro:"You must check",defaultAlert:"Warning: highlighted fields are empty or incorrectly filled",validEmail:"must be a valid email address",matchError:"Values of fields %0 and %1 don't match",charError:"Field %0 must contain {at least|only} %1 {and %2 to %3 chars}",charErrorRegexp:"Field %0 doesn't match content's requirements",l:"letters",n:"numbers",more:"more"},IT_it:{processError:"Errore nell'analisi del modulo",noCheckListLoaded:"Impossibile caricare la lista remota di controllo avanzata",verboseIntro:"Sono stati rilevati i seguenti errori:",verboseEmpty:"e' vuoto",singleError:"Il campo %0 e' vuoto o errato",radioIntro:"Selezionare un'opzione fra:",checkboxIntro:"Selezionare almeno %0 fra i campi: %1",singleCheckboxIntro:"Selezionare la casella",defaultAlert:"Attenzione: i campi evidenziati sono vuoti o errati",validEmail:"dev'essere un campo email valido",matchError:"I campi %0 e %1 devono coincidere",charError:"Il campo %0 deve contenere {almeno|solo} %1 {e da %2 a %3 caratteri}",charErrorRegexp:"Il campo %0 non rispetta le regole di inserimento",l:"lettere",n:"numeri",more:"piu'"}},charMatch:{l:"[a-zA-Z]",n:"[0-9]"},setLang:"IT_it",hcolor:"#FF5656"};mocha.components.addons="0.2b";mochaSetup.lang.EN_en.onTypeCountMax="Max field length reached";mochaSetup.lang.IT_it.onTypeCountMax="Numero massimo di caratteri raggiunto";mochajs.implement({eventsTypes:{"select-one":"change",text:["keyup","blur","focus"],textarea:["keyup","blur","focus"],checkbox:"click",radio:"click",button:"click"},getInputs:function(E){var D=(E||false);var C=[];var F=this.getFormObj().fieldsByType("textarea");var A=this.getFormObj().fieldsByType("text");var B=$type(D)?this.getFormObj().fieldsByType("select-one"):{};for(prop in $merge(F,A,B)){C.push($EN(prop))}return C},highlight:function(A){var C=this;var B=this.getInputs(true);$b(B).on(["focus","blur"],function(D){switch(D.type){case"focus":$b(this).css("background-color",(A||"#FFFFCC"));break;case"blur":C.validates.length>0?C.colorize():$b(this).css("background-color","");break}})},onTypeCount:function(D,B,G){var F=B;var A=$type(G)=="function"?G:alert;var E=this;var C=this.getFields(D);$b(C).on("keyup",function(){var H=F;if(this.value.length>=H){this.value=this.value.substring(0,F);A.apply(this,($type(G)?[E.lang.onTypeCountMax+": "+H]:[this.value.length,H]))}})},firstFocus:function(D,E){var A=this.getFields(D);for(i=0;i<A.length;i++){var B=this.getFields(A[i]);var C=this.getFieldValue(D[i]);$b(B).on("focus",function(){if($b(this).val()==C){this.value=""}});if($type(E)&&E==true){$b(FieldE).on("blur",function(){if($b(this).val()==""){$b(this).val(C)}})}}},showOn:function(D,C,B){var A=this.getFields(D);var G=this;var E=this.eventsTypes[$b(A).item(0,true).type];$b(C).css("display","none");if($type(B)=="function"){var F=B}else{var F=function(H){return(isArray(B)?B:[B]).inArray($b(H).val())}}$b(A).on(E,function(I){var H=$b(C);if(F.call(G,this)){H.css("display","").item(0,true).focus()}else{H.css("display","none")}})},enableOn:function(C,D,B){var A=this.getFields(C);var E=this.eventsTypes[$b(A).item(0,true).type];$b(D).each(function(G){G.disabled=true});var F=isArray(B)?B:[B];$b(A).on(E,function(){var H=F.inArray($b(this).val())?false:true;var G=$b(D);G.each(function(I){I.disabled=H})})},autoTags:function(E){var C=$merge({buttons:"btn_",tables:"tbl_",blocks:"blk_",blockLabels:"bll_",required:"mocha_req"},E||{});var A=function(H){return $E($merge({tag:"input",type:"hidden"},H))};var G=this;var D=this.getFormObj().buttons;$b(D.buttons,D.submits,D.resets).each(function(I){var H=$b(I).attr("name");$b(I).attr("name",C.buttons+H)});$b("#"+this.options.formId).get("fieldset").each(function(L,K){var H=[];var N=$b(L).attr("id");var J=$b(L).get("*",{name:"*"}).each(function(O){H.checkAgainst('"'+O.name+'":"'+G.getFieldLabel(O)+'"')}).mAttr("name",",");var M=A({name:C.blocks+((N!=""&&N!=null)?N:K),value:J});$b(L).append(M);if($b(L).get("legend").length()>0){var I=A({name:C.blockLabels+((N!=""&&N!=null)?N:K),value:$b(L).get("legend").txt()+"|{"+H.join(",")+"}"});$b(L).append(I)}});var D=this.getFormObj().buttons;$b(D.buttons,D.submits,D.resets).each(function(I){var H=$b(I).attr("name");$b(I).attr("name",C.buttons+H)});var B=$b("."+this.options.requiredKey).mAttr("name",",");var F=A({name:C.required,value:B});$b("#"+this.options.formId).append(F)}});
