var SISAL=(function SISAL(){var popUpAppender,logger,defaultDomain;function isNull(value){return(value===undefined||value===null);}function isNullOrEmpty(value){return(isNull(value)||value==="");}function copy(object){var i,myObject;if(isNull(object)||(typeof object==="boolean")||(typeof object==="number")||(typeof object==="string")||(typeof object==="function")){return object;}else{if(object instanceof Array){myObject=[];}else{if(typeof object==="object"){myObject={};}}}if(object instanceof Array||typeof object==="object"){for(i in object){if(object.hasOwnProperty(i)){myObject[i]=copy(object[i]);}}return myObject;}return null;}function toStringAsLiteral(object,options){options=isNullOrEmpty(options)?{}:options;options.indentation=isNaN(options.indentation)?0:options.indentation;var tab=4,tabIndentation="",i,indentationString="",string="{\n",property;for(i=0;i<tab;i=i+1){tabIndentation=tabIndentation+" ";}for(i=0;i<options.indentation;i=i+1){indentationString=indentationString+" ";}if(!isNull(object)&&(typeof object==="object")){for(i in object){if(object.hasOwnProperty(i)){property=object[i];if(!isNull(property)&&(typeof property==="object")){string=string+tabIndentation+indentationString+i+": "+toStringAsLiteral(property,{indentation:tab+options.indentation+(i+": ").length})+"\n";}else{if(typeof property==="string"){string=string+tabIndentation+indentationString+i+': "'+property+'"\n';}else{string=string+tabIndentation+indentationString+i+": "+property+"\n";}}}}string=string+indentationString+"}";return string;}else{if(typeof object==="string"){return indentationString+'"'+object+'"';}else{return indentationString+object;}}}function getLogger(options){var popUpLayout,logger=null,myOptions,categorySplitted,i;try{myOptions=(isNullOrEmpty(options)||(typeof options!=="object"))?{}:copy(options);myOptions.category=(typeof myOptions.category!=="string")?location.pathname:myOptions.category;categorySplitted=myOptions.category.split("/");if(!isNull(categorySplitted)){categorySplitted.reverse();i=null;for(i in categorySplitted){if(categorySplitted.hasOwnProperty(i)){myOptions.category=categorySplitted[i];if(!isNullOrEmpty(myOptions.category)){break;}}}}popUpLayout=new log4javascript.PatternLayout("%d [%5p] [%c] %m%n");popUpAppender=new log4javascript.PopUpAppender();popUpAppender.setLayout(popUpLayout);logger=log4javascript.getLogger(myOptions.category);logger.addAppender(popUpAppender);logger.setLevel(log4javascript.Level.ALL);if(logger.isInfoEnabled()){logger.info("getLogger - logger recuperato");}if(logger.isDebugEnabled()){logger.debug("getLogger - options:\n"+toStringAsLiteral(options));}if(logger.isTraceEnabled()){logger.trace("getLogger - options:\n"+toStringAsLiteral(myOptions));}}catch(e){alert(e);throw e;}finally{return logger;}}function hideLogger(){try{popUpAppender.hide();}catch(e){}}function showLogger(){try{popUpAppender.show();popUpAppender.focus();}catch(e){}}logger=isNull(logger)?getLogger():logger;function getXMLHttpRequest(){var request=null;try{request=new XMLHttpRequest();}catch(e){try{request=new ActiveXObject("Msxml2.XMLHTTP");}catch(ee){try{request=new ActiveXObject("Microsoft.XMLHTTP");}catch(eee){if(logger.isErrorEnabled()){logger.error("getXMLHttpRequest - ",eee);}alert("Il tuo browser non supporta AJAX!");throw eee;}}}finally{return request;}}function goodEval(script){if(typeof script==="string"){var scriptElement=document.createElement("script");scriptElement.type="text/javascript";try{scriptElement.innerHTML=script;}catch(e){scriptElement.text=script;}$(document).ready(function(){document.getElementsByTagName("body")[0].appendChild(scriptElement);});}}function htmlEval(html){try{if(logger.isDebugEnabled()){logger.debug("htmlEval - inizio");}if(logger.isTraceEnabled()){logger.trace("htmlEval - html: "+html);}if(typeof html==="string"){var startScriptTagRegExp=new RegExp('<(script|SCRIPT)\\s+(type|TYPE)\\s*=\\s*"text/javascript"\\s*>'),endScriptTagRegExp=new RegExp("</(script|SCRIPT)\\s*>"),script,myHtml=html,startScriptTagIndex=myHtml.search(startScriptTagRegExp),endScriptTagIndex=startScriptTagIndex+myHtml.substring(startScriptTagIndex).search(endScriptTagRegExp);while(startScriptTagIndex!==-1&&endScriptTagIndex!==-1){if(isNull(script)){script=[];}script[script.length]=myHtml.substring(startScriptTagIndex,endScriptTagIndex).replace(startScriptTagRegExp,"");if(logger.isTraceEnabled()){logger.trace("htmlEval - javascript fragment: "+script[script.length-1]);}myHtml=myHtml.substring(endScriptTagIndex).replace(endScriptTagRegExp,"");startScriptTagIndex=myHtml.search(startScriptTagRegExp);endScriptTagIndex=startScriptTagIndex+myHtml.substring(startScriptTagIndex).search(endScriptTagRegExp);}if(!isNull(script)){if(logger.isDebugEnabled()){logger.debug("htmlEval - javascript: "+script.join("\n"));}goodEval(script.join("\n"));}}if(logger.isDebugEnabled()){logger.debug("htmlEval - fine");}}catch(e){if(logger.isErrorEnabled()){logger.error("htmlEval - ",e);}}}function htmlCSSEval(html){try{if(logger.isDebugEnabled()){logger.debug("htmlCSSEval - inizio");}if(logger.isTraceEnabled()){logger.trace("htmlCSSEval - html: "+html);}if(typeof html==="string"){}if(logger.isDebugEnabled()){logger.debug("htmlCSSEval - fine");}}catch(e){if(logger.isErrorEnabled()){logger.error("htmlCSSEval - ",e);}}}function ajax(url,options){var targetElement,semaforo,request;function removeLock(){if(!isNullOrEmpty(options)){if(options.softSync){semaforo=document.getElementById("semaforo_"+options.target);if(!isNull(semaforo)){targetElement=document.getElementById(options.target);if(!isNull(targetElement)){targetElement.removeChild(semaforo);}else{document.getElementsByTagName("body")[0].removeChild(semaforo);}if(logger.isDebugEnabled()){logger.debug("ajax - "+url+" - semaforo rimosso: semaforo_"+options.target);}}}}}function onComplete(){if(request.readyState===4){if(request.status===200){if(logger.isTraceEnabled()){logger.trace("ajax - "+url+" - responseText: "+request.responseText);}if(!isNull(targetElement)){if(logger.isTraceEnabled()){logger.trace("ajax - "+url+" - innerHTML: "+targetElement.innerHTML);}targetElement.innerHTML=request.responseText;}if(options.javascript&&!options.response){htmlEval(request.responseText);}if(options.css&&!options.response){htmlCSSEval(request.responseText);}if(logger.isDebugEnabled()){logger.debug("ajax - "+url+" - fine esito positivo");}if(typeof options.success==="function"){if(options.response){options.success(request.responseText);}else{options.success();}}}else{if(logger.isErrorEnabled()){logger.error("ajax - "+url+" - status: "+request.status);}}removeLock();}}try{if(logger.isDebugEnabled()){logger.debug("ajax - "+url+" - inizio");logger.debug("ajax - "+url+" - url: "+url);logger.debug("ajax - "+url+" - options:\n"+toStringAsLiteral(options));}if(isNull(url)){throw new Error("Parametro obbligatorio url nullo.");}else{if(typeof url!=="string"){throw new Error("Tipo parametro obbligatorio url non corretto: "+typeof url+".");}}options=isNullOrEmpty(options)?{}:copy(options);options.method=options.method!=="GET"?"POST":options.method;options.async=options.async!==false?true:options.async;options.softSync=options.softSync!==false?true:options.softSync;options.target=typeof options.target!=="string"?null:options.target;options.javascript=options.javascript!==false?true:options.javascript;options.css=options.css!==false?true:options.css;options.success=typeof options.success!=="function"?null:options.success;options.response=options.response!==true?false:options.response;options.data=typeof options.data!=="string"?"":options.data;if(logger.isTraceEnabled()){logger.trace("ajax - "+url+" - options:\n"+toStringAsLiteral(options));}if(!options.softSync||(options.softSync&&(isNull(document.getElementById("semaforo_"+options.target))))){targetElement=document.getElementById(options.target);if(options.softSync&&options.target!==null){semaforo=document.createElement("div");semaforo.setAttribute("id","semaforo_"+options.target);if(!isNull(targetElement)){targetElement.appendChild(semaforo);}else{document.getElementsByTagName("body")[0].appendChild(semaforo);}if(logger.isDebugEnabled()){logger.debug("ajax - "+url+" - semaforo creato: semaforo_"+options.target);}}request=getXMLHttpRequest();if(options.async){request.onreadystatechange=onComplete;}request.open(options.method,url,options.async);request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");request.setRequestHeader("Content-length",options.data.length);request.send(options.data);if(!options.async){onComplete();}}else{if(logger.isDebugEnabled()){logger.debug("ajax - "+url+" - semaforo presente: semaforo_"+options.target);}}if(logger.isDebugEnabled()){logger.debug("ajax - "+url+" - fine");}}catch(e){if(logger.isErrorEnabled()){logger.error("ajax - "+url+" - ",e);}try{removeLock();}catch(ee){if(logger.isErrorEnabled()){logger.error("ajax - "+url+" - ",ee);}}}}function loadApplicationAsync(components,randomNum){var i;try{if(logger.isDebugEnabled()){logger.debug("loadApplicationAsync - "+randomNum+" - inizio");logger.debug("loadApplicationAsync - "+randomNum+" - components:\n"+toStringAsLiteral(components));}for(i in components){if(components.hasOwnProperty(i)&&!isNullOrEmpty(components[i].options)&&!isNull(document.getElementById(components[i].options.target))){ajax(components[i].url,components[i].options);}}if(logger.isDebugEnabled()){logger.debug("loadApplicationAsync - "+randomNum+" - fine");}}catch(e){if(logger.isErrorEnabled()){logger.error("loadApplicationAsync - "+randomNum+" - ",e);}}}function loadApplication(components){var firstComponent,success,randomNum=Math.random(),i;try{if(logger.isDebugEnabled()){logger.debug("loadApplication - "+randomNum+" - inizio");logger.debug("loadApplication - "+randomNum+" - components:\n"+toStringAsLiteral(components));}if(!(components instanceof Array)){throw new Error(randomNum+" Classe parametro obbligatorio portlets non corretto: atteso Array.");}for(i in components){if(components.hasOwnProperty(i)){if(!isNull(document.getElementById(components[i].options.target))){break;}}}firstComponent=copy(components[i]);components=copy(components.slice(Number(i)+1));if(logger.isDebugEnabled()){logger.debug("loadApplication - "+randomNum+" - localComponents:\n"+toStringAsLiteral(components));}firstComponent.options=isNullOrEmpty(firstComponent.options)?{}:copy(firstComponent.options);if(typeof firstComponent.options.success==="function"){success=function(){firstComponent.options.success();loadApplicationAsync(components,randomNum);};}else{success=function(){loadApplicationAsync(components,randomNum);};}firstComponent.options.success=success;if(!isNull(document.getElementById(firstComponent.options.target))){ajax(firstComponent.url,firstComponent.options);}if(logger.isDebugEnabled()){logger.debug("loadApplication - "+randomNum+" - fine");}}catch(e){if(logger.isErrorEnabled()){logger.error("loadApplication - "+randomNum+" - ",e);}}}function unloadComponents(components){var i,targetElement;try{if(logger.isDebugEnabled()){logger.debug("unloadComponents - components:\n"+toStringAsLiteral(components));}for(i in components){if(components.hasOwnProperty(i)&&!isNullOrEmpty(components[i].options)&&!isNull(document.getElementById(components[i].options.target))){targetElement=document.getElementById(components[i].options.target);if(!isNull(targetElement)){targetElement.innerHTML="";}}}if(logger.isDebugEnabled()){logger.debug("unloadComponents - fine");}}catch(e){if(logger.isErrorEnabled()){logger.error("unloadComponents - ",e);}}}function addParameters(components,parameters){var i,k,separator;try{if(logger.isDebugEnabled()){logger.debug("addParameters - components:\n"+toStringAsLiteral(components));logger.debug("addParameters - parameters:\n"+toStringAsLiteral(parameters));}components=copy(components);for(i in components){if(components.hasOwnProperty(i)){for(k in parameters){if(parameters.hasOwnProperty(k)){separator=components[i].url.search("[?]")!==-1?"&":"?";components[i].url=components[i].url+separator+k+"="+parameters[k];}}}}if(logger.isDebugEnabled()){logger.debug("addParameters - components:\n"+toStringAsLiteral(components));}return components;}catch(e){if(logger.isErrorEnabled()){logger.error("addParameters - ",e);}}return null;}function switchDisplay(element,options){var display,el;try{if(logger.isDebugEnabled()){logger.debug("switchDisplay - inizio");logger.debug("switchDisplay - element: "+element);logger.debug("switchDisplay - options:\n"+toStringAsLiteral(options));}if(isNull(element)){throw new Error("Parametro obbligatorio element nullo.");}else{if(typeof element!=="string"){throw new Error("Tipo parametro obbligatorio element non corretto: "+typeof element+".");}}options=isNullOrEmpty(options)?{}:copy(options);options.display=options.display!=="inline"?"block":options.display;if(logger.isTraceEnabled()){logger.trace("ajax - options:\n"+toStringAsLiteral(options));}el=document.getElementById(element);if(!isNull(el)){if(el.style.display==="none"){display=options.display;}else{display="none";}el.style.display=display;}if(logger.isDebugEnabled()){logger.debug("switchDisplay - fine");}}catch(e){if(logger.isErrorEnabled()){logger.error("switchDisplay - ",e);}}finally{return display;}}function setDefaultDomain(domain){if(!isNullOrEmpty(domain)){defaultDomain=domain;}else{defaultDomain=location.hostname;if(logger.isDebugEnabled()){logger.debug("setDefaultDomain - defaultDomain: "+defaultDomain);}}}function getDefaultDomain(){if(isNullOrEmpty(defaultDomain)){defaultDomain=location.hostname;if(logger.isDebugEnabled()){logger.debug("getDefaultDomain - defaultDomain: "+defaultDomain);}}return defaultDomain;}function setCookie(name,options){var cookie,cookieExpireDate,minutesInADay=60*24;try{if(logger.isDebugEnabled()){logger.debug("setCookie - inizio");logger.debug("setCookie - name: "+name);logger.debug("setCookie - options:\n"+toStringAsLiteral(options));}if(isNull(name)){throw new Error("Parametro obbligatorio name nullo.");}else{if(typeof name!=="string"){throw new Error("Tipo parametro obbligatorio name non corretto: "+typeof name+".");}}options=isNullOrEmpty(options)?{}:copy(options);options.value=typeof options.value!=="string"?null:options.value;options.days=isNaN(options.days)?null:options.days;options.secure=options.secure!==true?false:options.secure;options.domain=typeof options.domain!=="string"?null:options.domain;options.path=typeof options.path!=="string"?"/":options.path;if(logger.isTraceEnabled()){logger.trace("setCookie - options:\n"+toStringAsLiteral(options));}cookie=encodeURIComponent(name)+"="+encodeURIComponent(options.value);if(!isNullOrEmpty(options.days)){cookieExpireDate=new Date();cookieExpireDate.setMinutes(cookieExpireDate.getMinutes()+(options.days*minutesInADay));cookie=cookie+"; expires="+cookieExpireDate.toGMTString();}if(options.secure){cookie=cookie+"; secure";}if(!isNullOrEmpty(options.domain)){cookie=cookie+"; domain="+encodeURIComponent(options.domain);}else{if(!isNullOrEmpty(defaultDomain)){cookie=cookie+"; domain="+encodeURIComponent(defaultDomain);}}if(!isNullOrEmpty(options.path)){cookie=cookie+"; path="+encodeURI(options.path);}document.cookie=cookie;if(logger.isDebugEnabled()){logger.debug("setCookie - fine");}}catch(e){if(logger.isErrorEnabled()){logger.error("setCookie - ",e);}}}function unsetCookie(name,options){options=isNullOrEmpty(options)?{}:copy(options);options.domain=typeof options.domain!=="string"?null:options.domain;options.secure=options.secure!==true?false:options.secure;setCookie(name,{value:null,days:-1,secure:options.secure,domain:options.domain});}function getCookie(name){var cookies,cookie,cookieIndex,myName,i;try{if(logger.isDebugEnabled()){logger.debug("getCookie - inizio");logger.debug("getCookie - name: "+name);}if(isNull(name)){throw new Error("Parametro obbligatorio name nullo.");}else{if(typeof name!=="string"){throw new Error("Tipo parametro obbligatorio name non corretto: "+typeof name+".");}}cookies=document.cookie.split(";");for(i in cookies){if(cookies.hasOwnProperty(i)){cookie=cookies[i];myName=encodeURIComponent(name)+"=";cookieIndex=cookie.indexOf(myName);if(cookieIndex!==-1){return decodeURIComponent(cookie.substring(cookieIndex+myName.length));}}}if(logger.isDebugEnabled()){logger.debug("getCookie - fine");}return null;}catch(e){if(logger.isErrorEnabled()){logger.error("getCookie - ",e);}}}function getCookieField(cookie,field){var myCookie,fields,myField,name,value,i;try{if(logger.isDebugEnabled()){logger.debug("getCookieField - inizio");logger.debug("getCookieField - cookie: "+cookie);logger.debug("getCookieField - field: "+field);}if(isNull(cookie)){throw new Error("Parametro obbligatorio cookie nullo.");}else{if(isNull(field)){throw new Error("Parametro obbligatorio field nullo.");}else{if(typeof cookie!=="string"){throw new Error("Tipo parametro obbligatorio cookie non corretto: "+typeof cookie+".");}else{if(typeof field!=="string"){throw new Error("Tipo parametro obbligatorio field non corretto: "+typeof field+".");}}}}myCookie=getCookie(cookie);if(!isNull(myCookie)){fields=myCookie.split(";");for(i in fields){if(fields.hasOwnProperty(i)){myField=fields[i].split("=");if(myField[0]===field){return myField[1].replace(/\+/g," ");}}}}if(logger.isDebugEnabled()){logger.debug("getCookieField - fine");}return null;}catch(e){if(logger.isErrorEnabled()){logger.error("getCookieField - ",e);}}}function getParameter(parameter){var queryString,paramRegExp,result;queryString=location.search;paramRegExp=new RegExp("[\\?&]"+parameter+"=([^&#]*)");result=queryString.match(paramRegExp);return result===null?null:decodeURIComponent(result[1]);}function loadCSS(url){if(typeof url==="string"){var linkElement=document.createElement("link");linkElement.type="text/css";linkElement.rel="stylesheet";linkElement.href=url;document.getElementsByTagName("head")[0].appendChild(linkElement);}else{throw new Error("Parametro obbligatorio url nullo.");}}function matchRegExp(e,reg){var key=null,keychar=null;key=window.event?e.keyCode:e.which;keychar=String.fromCharCode(key);if(key===8||key===0){return true;}else{return reg.test(keychar);}}return{isNull:isNull,isNullOrEmpty:isNullOrEmpty,copy:copy,toStringAsLiteral:toStringAsLiteral,hideLogger:hideLogger,showLogger:showLogger,logger:logger,htmlEval:htmlEval,ajax:ajax,loadApplication:loadApplication,unloadComponents:unloadComponents,addParameters:addParameters,switchDisplay:switchDisplay,setDefaultDomain:setDefaultDomain,getDefaultDomain:getDefaultDomain,setCookie:setCookie,unsetCookie:unsetCookie,getCookie:getCookie,getCookieField:getCookieField,getParameter:getParameter,loadCSS:loadCSS,matchRegExp:matchRegExp};}());if(SISAL.logger.isInfoEnabled()){SISAL.logger.info("SISAL - namespace creato");}