//cookie
jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1;}
var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}
expires='; expires='+date.toUTCString();}
var path=options.path?'; path='+options.path:'';var domain=options.domain?'; domain='+options.domain:'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}
return cookieValue;}};

//treeview
;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)
callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)
this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}
return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("<div class=\""+CLASSES.hitarea+"\"/>").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}
this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){settings=$.extend({cookieId:"treeview"},settings);if(settings.add){return this.trigger("add",[settings.add]);}
if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}
function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}
$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}
function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}
function serialize(){function binary(arg){return arg?1:0;}
var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}
function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}
this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}
break;}
branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}
return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery);(function(){var u=navigator.userAgent.toLowerCase(),i=function(t){return u.indexOf(t)>-1;},g='gecko',w='webkit',c=[(!(/opera|webtv/i.test(u))&&/msie\s(\d)/.test(u))?('ie ie'+RegExp.$1):i('firefox/2')?g+'ff2':i('firefox/3')?g+'ff3':i(g+'/')?g:/opera\s(\d)/.test(u)?'opera opera'+RegExp.$1:i('konqueror')?w+'konqueror':i('chrome')?w+'chrome':i('applewebkit/')?w+'safari':i('mozilla/')?g:'',,i('mac')?'mac':i('win')?'win':'','js'];document.getElementsByTagName('html')[0].className+=c.join(' ');})();

//easing
jQuery.easing['jswing']=jQuery.easing['swing'];jQuery.extend(jQuery.easing,{def:'easeOutQuad',swing:function(x,t,b,c,d){return jQuery.easing[jQuery.easing.def](x,t,b,c,d);},easeInQuad:function(x,t,b,c,d){return c*(t/=d)*t+b;},easeOutQuad:function(x,t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOutQuad:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},easeInCubic:function(x,t,b,c,d){return c*(t/=d)*t*t+b;},easeOutCubic:function(x,t,b,c,d){return c*((t=t/d-1)*t*t+1)+b;},easeInOutCubic:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b;},easeInQuart:function(x,t,b,c,d){return c*(t/=d)*t*t*t+b;},easeOutQuart:function(x,t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b;},easeInOutQuart:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b;},easeInQuint:function(x,t,b,c,d){return c*(t/=d)*t*t*t*t+b;},easeOutQuint:function(x,t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b;},easeInOutQuint:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b;},easeInSine:function(x,t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b;},easeOutSine:function(x,t,b,c,d){return c*Math.sin(t/d*(Math.PI/2))+b;},easeInOutSine:function(x,t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b;},easeInExpo:function(x,t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOutExpo:function(x,t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOutExpo:function(x,t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},easeInCirc:function(x,t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b;},easeOutCirc:function(x,t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b;},easeInOutCirc:function(x,t,b,c,d){if((t/=d/2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b;},easeInElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},easeOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},easeInOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;},easeInBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b;},easeOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},easeInOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},easeInBounce:function(x,t,b,c,d){return c-jQuery.easing.easeOutBounce(x,d-t,0,c,d)+b;},easeOutBounce:function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;}},easeInOutBounce:function(x,t,b,c,d){if(t<d/2)return jQuery.easing.easeInBounce(x,t*2,0,c,d)*.5+b;return jQuery.easing.easeOutBounce(x,t*2-d,0,c,d)*.5+c*.5+b;}});

//form validator
function FormValidator(id,validations){this.theForm=YAHOO.util.Dom.get(id);this.validations=validations;FormValidator.validClass='valid';FormValidator.invalidClass='invalid';};FormValidator.prototype.isValid=function(){for(var fieldName in this.validations){var formEl=this.getField(fieldName);var validation=this.validations[fieldName];if(!formEl){alert('inpossibile trovare '+fieldName+' in form #'+this.theForm.id);}
var a_validation=[];if(validation instanceof Array){a_validation=validation;}else{a_validation.push(validation);}
for(var i=0;i<a_validation.length;i++){var params=a_validation[i].params||{};if(typeof a_validation[i].validator!='undefined'){var isValid=a_validation[i].validator(formEl,params);}else{alert('manca "validator" nel validatore di '+fieldName);}
this.postFieldValidation(formEl,isValid);if(!isValid){return false;}}}
return true;};FormValidator.prototype.disable=function(doDisable){if(typeof doDisable=='undefined'){var doDisable=true;}
var submitButton=this.getSubmit();if(doDisable){YAHOO.util.Dom.removeClass(submitButton,'enabled');YAHOO.util.Dom.addClass(submitButton,'disabled');submitButton.setAttribute("disabled","disabled");}else{YAHOO.util.Dom.removeClass(submitButton,'disabled');YAHOO.util.Dom.addClass(submitButton,'enabled');submitButton.removeAttribute("disabled");}};FormValidator.prototype.enable=function(){this.disable(false);};FormValidator.prototype.getSubmit=function(){var fields=this.theForm.getElementsByTagName('input');for(var i=0;i<fields.length;i++){if(fields[i].type=='submit'){return fields[i];}}
var fields=this.theForm.getElementsByTagName('button');for(var i=0;i<fields.length;i++){return fields[i];}
return false;};FormValidator.prototype.getField=function(name){var f=this.theForm[name];if(typeof f=='undefined'){var fields=this.theForm.getElementsByTagName('input');for(var i=0;i<fields.length;i++){if(fields[i].name==name){return fields[i];}}
return false;}else{return f;}};FormValidator.prototype.onKeyStrokeEnable=function(){if(!this.isValid()){this.disable(true);}else{this.disable(false);}};FormValidator.prototype.postFieldValidation=function(formEl,isValid){if(!isValid){YAHOO.util.Dom.removeClass(formEl,FormValidator.validClass);YAHOO.util.Dom.addClass(formEl,FormValidator.invalidClass);}else{YAHOO.util.Dom.removeClass(formEl,FormValidator.invalidClass);YAHOO.util.Dom.addClass(formEl,FormValidator.validClass);}};FormValidator.prototype.init=function(){this.onKeyStrokeEnable();YAHOO.util.Event.addListener(this.theForm,'keyup',this.onKeyStrokeEnable,this,true);YAHOO.util.Event.addListener(this.theForm,'submit',this.onKeyStrokeEnable,this,true);};FormValidator.prototype.listenChange=function(els_name){if(typeof els_name=='string'){els_name=[els_name];}
for(var i in els_name){var el_name=els_name[i];var el=this.theForm.elements[el_name];if(el){if(el.length){for(var j in el){YAHOO.util.Event.addListener(el[j],'click',this.onKeyStrokeEnable,this,true);}}else{YAHOO.util.Event.addListener(el,'change',this.onKeyStrokeEnable,this,true);}}}};FormValidator.prototype.setAJAXsubmit=function(rpc_url,query_str,callback){var form=this.theForm;YAHOO.util.Event.addListener(form,'submit',function(e,obj){YAHOO.util.Event.preventDefault(e);YAHOO.util.Connect.setForm(form);var cObj=YAHOO.util.Connect.asyncRequest('POST',rpc_url,{success:callback,failure:function(o){alert('failure form submit');}},query_str);return false;});};FormValidator.validateLength=function(formEl,params){var value=formEl.value;if(value.length>params.maxLength||value.length<params.minLength){return false;}else{return true;}};FormValidator.validateEmail=function(formEl,params){var value=formEl.value;var regEx=/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;var emailTest=regEx.test(value);if(emailTest){return true;}else{return false;}};FormValidator.validateInt=function(formEl,params){params=(typeof params!='undefined')?params:{};params['min']=(typeof params['min']!='undefined')?params['min']:false;params['max']=(typeof params['max']!='undefined')?params['max']:false;var h=parseInt(formEl.value);if(isNaN(h)){return false;}
if(params['min']){if(h<params['min']){return false;}}
if(params['max']){if(h>params['max']){return false;}}
return true;};FormValidator.validateNonEmpty=function(formEl,params){var val=formEl.value;return!empty(val);}
FormValidator.validateBoolean=function(formEl,params){function getCheckedValue(radioObj){if(!radioObj)
return"";var radioLength=radioObj.length;if(radioLength==undefined)
if(radioObj.checked)
return radioObj.value;else
return"";for(var i=0;i<radioLength;i++){if(radioObj[i].checked){return radioObj[i].value;}}
return"";};var val=getCheckedValue(formEl);return val>0;}
FormValidator.validateFloat=function(input,min,max,allowEmpty){if(input.value.isEmpty()){return allowEmpty;}
var v=input.value.replace(/[\s,]/g,"");var h=parseFloat(v);if(isNaN(h))return false;if(min){if(h<min)return false;if(max){if(h>max)return false;}}
input.value=h;return true;}
FormValidator.validateDate=function(input,allowEmpty){var dateFormat='M/d/yyyy';var date;if(input.value.isEmpty()){return allowEmpty;}
if(isDate(input.value,dateFormat)){date=new Date(getDateFromFormat(input.value,dateFormat));}else{var v=input.value.replace(/\s/g,"");if(v.length==8){v=v.substr(0,2)+'/'+v.substr(2,2)+'/'+v.substr(4);if(isDate(v,dateFormat)){date=new Date(getDateFromFormat(v,dateFormat));}}else if(v.length==6){v=v.substr(0,1)+'/'+v.substr(1,1)+'/'+v.substr(2);if(isDate(v,dateFormat)){date=new Date(getDateFromFormat(v,dateFormat));}}else if(v.length==7){v=v.substr(0,1)+'/'+v.substr(1,2)+'/'+v.substr(3);if(isDate(v,dateFormat)){date=new Date(getDateFromFormat(v,dateFormat));}else{v=input.value;v=v.substr(0,2)+'/'+v.substr(2,1)+'/'+v.substr(3);if(isDate(v,dateFormat)){date=new Date(getDateFromFormat(v,dateFormat));}}}}
if(date){input.value=date.shortDate();return true;}
return false;}
FormValidator.validatePhone=function(input,isRequired){var v=input.value.replace(/\s/g,"");var v=v.replace(/[()\.-]/g,"");if(v.length==10){input.value='('+v.substr(0,3)+') '+v.substr(3,3)+'-'+v.substr(6);return true;}else if(isRequired){return false;}
return true;}
if(typeof empty=='undefined'){function empty(v){if(typeof v=='object'){for(var k in v){return false;}
return true;}
return(v===''||v===0||v==='0'||v===null||v===false||v===undefined);}}

//form
function dom_form_get_value(){getValue=function(el){getInputChecked=function(el){return el.checked?el.value:null;};getSelectSingle=function(el){var selectedIndex=el.selectedIndex;return selectedIndex>=0?el.options[selectedIndex].value:null;};function getCheckedValue(radioObj){if(!radioObj)
return"";var radioLength=radioObj.length;if(radioLength==undefined)
if(radioObj.checked)
return radioObj.value;else
return"";for(var i=0;i<radioLength;i++){if(radioObj[i].checked){return radioObj[i].value;}}
return"";};getSelectMultiple_=function(el){var values=[];for(var option,i=0;option=el.options[i];i++){if(option.selected){values.push(option.value);}}
return values.length?values:null;};if(typeof(el.value)!='undefined'){return el.value;}
var type=el.type;if(!typeof(type)!='undefined'){return null;}
switch(type.toLowerCase()){case'checkbox':return getInputChecked(el);case'radio':return getCheckedValue(el);case'select-one':return getSelectSingle(el);case'select-multiple':return getSelectMultiple(el);default:return typeof(el.value)!='undefined'?el.value:null;}};if(arguments.length=2){var form=arguments[0];var name=arguments[1];var els=form.elements[name];if(els.type){return getValue(els);}else{for(var i=0;i<els.length;i++){var val=getValue(els[i]);if(val){return val;}}
return null;}}else if(arguments.length=1){var els=arguments[0];return getValue(els);}};
