window._g=window._g||{};_g.shared={};if(window.console===undefined)window.console={log:function(m){}}; _g.shared.HTTP=new function(){var createResponse=function(){var response=new Object;response.headers=new Object;response.body=new Object;return response};var getResponseFromXhr=function(request){if(!request)return null;var response=createResponse();response.body=request.responseText;response.headers[_g.HTTP.HEADER_STATUS]=request.status;response.responseText=request.responseText;response.status=request.status;return response};return{EXTENSION_HTML:".html",EXTENSION_JSON:".json",EXTENSION_RES:".res", HEADER_STATUS:"Status",HEADER_MESSAGE:"Message",HEADER_LOCATION:"Location",HEADER_PATH:"Path",PARAM_NO_CACHE:"cq_ck",get:function(url,callback,scope,suppressForbiddenCheck){url=_g.HTTP.getXhrHookedURL(_g.HTTP.externalize(url,true));if(callback!=undefined)return _g.$.ajax({type:"GET",url:url,externalize:false,encodePath:false,hook:false,complete:function(request,textStatus){var response=getResponseFromXhr(request);if(!suppressForbiddenCheck)_g.HTTP.handleForbidden(response);callback.call(scope||this, this,textStatus=="success",response)}});else try{var request=_g.$.ajax({type:"GET",url:url,async:false,externalize:false,encodePath:false,hook:false});var response=getResponseFromXhr(request);if(!suppressForbiddenCheck)_g.HTTP.handleForbidden(response);return response}catch(e){return null}},post:function(url,callback,params,scope,suppressErrorMsg,suppressForbiddenCheck){url=_g.HTTP.externalize(url,true);var hook=_g.HTTP.getXhrHook(url,"POST",params);if(hook){url=hook.url;params=hook.params}if(callback!= undefined)return _g.$.ajax({type:"POST",url:url,data:params,externalize:false,encodePath:false,hook:false,complete:function(request,textStatus){var response=_g.HTTP.buildPostResponseFromHTML(request.responseText);if(!suppressForbiddenCheck)_g.HTTP.handleForbidden(request);callback.call(scope||this,this,textStatus=="success",response)}});else try{var request=_g.$.ajax({type:"POST",url:url,data:params,async:false,externalize:false,encodePath:false,hook:false});var response=_g.HTTP.buildPostResponseFromHTML(request.responseText); if(!suppressForbiddenCheck)_g.HTTP.handleForbidden(request);return response}catch(e){return null}},getParameter:function(url,name){var params=_g.HTTP.getParameters(url,name);return params!=null?params[0]:null},getParameters:function(url,name){var values=[];if(!name)return null;name=encodeURIComponent(name);if(url.indexOf("?")==-1)return null;if(url.indexOf("#")!=-1)url=url.substring(0,url.indexOf("#"));var query=url.substring(url.indexOf("?")+1);if(query.indexOf(name)==-1)return null;var queryPts= query.split("\x26");for(var i=0;i1?decodeURIComponent(paramPts[1]):"")}return values.length>0?values:null},addParameter:function(url,name,value){if(value&&value instanceof Array){for(var i=0;iobj.length-2||index==-1)index=obj.length-2;for(var i=0;i0?url.replace("."+selectors.join("."),""):url;if(selectors.length>0)for(var i=0;i0){var begin=dc.indexOf(cname);if(begin!=-1){begin+=cname.length;var end=dc.indexOf(";",begin);if(end==-1)end=dc.length;return decodeURIComponent(dc.substring(begin,end))}}return null},setCookie:function(name,value,path, days,domain,secure){if(typeof days!="number")days=7;var date;if(days>0){date=new Date;date.setTime(date.getTime()+days*24*60*60*1E3)}else date=new Date(0);document.cookie=encodeURIComponent(name)+"\x3d"+encodeURIComponent(value)+"; "+(days!=0?"expires\x3d"+date.toGMTString()+"; ":"")+(domain?"domain\x3d"+domain+"; ":"")+(path?"path\x3d"+path:"")+(secure?"; secure":"");return value},clearCookie:function(name,path,domain,secure){_g.HTTP.setCookie(name,"null",path||"",-1,domain||"",secure||"")},getSchemeAndAuthority:Granite.HTTP.getSchemeAndAuthority, getContextPath:Granite.HTTP.getContextPath,externalize:function(url,encode){if(typeof G_IS_HOOKED!="undefined"&&G_IS_HOOKED(url))return url;if(encode)url=_g.HTTP.encodePathOfURI(url);url=Granite.HTTP.externalize(url);return url},internalize:Granite.HTTP.internalize,getPath:Granite.HTTP.getPath,getSuffix:function(){if(window.CQURLInfo&&CQURLInfo.suffix)return CQURLInfo.suffix;return null},getSelectors:function(url){if(!url&&window.CQURLInfo)if(CQURLInfo.selectors)return CQURLInfo.selectors;var selectors= [];url=url||window.location.href;url=_g.HTTP.removeParameters(url);url=_g.HTTP.removeAnchor(url);var fragment=url.substring(url.lastIndexOf("/"));if(fragment){var split=fragment.split(".");if(split.length>2)for(var i=0;i0&&i/g,"\x26gt;").replace(/length)if(word){var vs=value.substr(0,length-2);var index=Math.max(vs.lastIndexOf(" "),vs.lastIndexOf("."),vs.lastIndexOf("!"),vs.lastIndexOf("?"),vs.lastIndexOf(";")); if(index==-1||indexpath.lastIndexOf("/"))path=path.substr(0,path.indexOf(".",path.lastIndexOf("/")));if(relPath)if(relPath.indexOf("/")==0)path=relPath;else{if(allowParentPaths)while(relPath.indexOf("../")==0){relPath=relPath.substring(3);path=path.substring(0,path.lastIndexOf("/"))}relPath=relPath.replace("./","");path=path+"/"+relPath}return path}}}();_g.Sling=_g.shared.Sling; _g.shared.XSS=new function(){return{getXSSPropertyName:function(propertyName){if(!propertyName)return"";if(_g.XSS.KEY_REGEXP.test(propertyName))return propertyName;return propertyName+=_g.XSS.KEY_SUFFIX},getXSSRecordPropertyValue:function(rec,propertyName,ellipsisLimit){var value="";if(rec&&propertyName){var xssPropValue=rec.get(this.getXSSPropertyName(propertyName));if(xssPropValue)value=xssPropValue;else value=this.getXSSValue(rec.get(propertyName));if(ellipsisLimit&&!isNaN(ellipsisLimit))value= _g.Util.ellipsis(value,ellipsisLimit,true)}return value},getXSSTablePropertyValue:function(table,propertyName,ellipsisLimit){var value="";if(table&&propertyName){var xssPropValue=table[this.getXSSPropertyName(propertyName)];if(xssPropValue)value=xssPropValue;else value=this.getXSSValue(table[propertyName]);if(ellipsisLimit&&!isNaN(ellipsisLimit))value=_g.Util.ellipsis(value,ellipsisLimit,true)}return value},getXSSValue:function(val){if(val)return _g.Util.htmlEncode(val);else return""},updatePropertyName:function(cfg, propertyName){if(!cfg||!propertyName||!cfg[propertyName])return;if(cfg["xssProtect"]&&!cfg["xssKeepPropName"])cfg[propertyName]=this.getXSSPropertyName(cfg[propertyName])},xssPropertyRenderer:function(val,meta,rec,cfg){if(cfg&&cfg["dataIndex"]&&rec&&rec.data&&rec.data[this.getXSSPropertyName(cfg["dataIndex"])]){val=rec.data[this.getXSSPropertyName(cfg["dataIndex"])];if(cfg["ellipsisLimit"]&&!isNaN(cfg["ellipsisLimit"]))val=_g.Util.ellipsis(val,cfg["ellipsisLimit"],true);return val}else if(val)return val; else return""}}};_g.XSS=_g.shared.XSS;_g.XSS.KEY_SUFFIX="_xss";_g.XSS.KEY_REGEXP=new RegExp(_g.XSS.KEY_SUFFIX+"$");_g.shared.I18n=Granite.I18n;_g.I18n=_g.shared.I18n;_g.shared.I18n.getMessage=Granite.I18n.get;_g.shared.I18n.getVarMessage=Granite.I18n.getVar; _g.shared.String=new function(){return{startsWith:function(str,prefix){if(str==null||prefix==null)return str==null&&prefix==null;if(prefix.length>str.length)return false;var sMatch=str.toString();var sSearch=prefix.toString();return sMatch.indexOf(sSearch)==0},endsWith:function(str,suffix){if(str==null||suffix==null)return str==null&&suffix==null;if(suffix.length>str.length)return false;str=str.toString();suffix=suffix.toString();return str.lastIndexOf(suffix)==str.length-suffix.length},contains:function(str, searchStr){if(str==null||searchStr==null)return false;str=str.toString();searchStr=searchStr.toString();return str.indexOf(searchStr)>=0}}};_g.String=_g.shared.String; _g.shared.ClientSidePersistence=function(cfg){var session={PERSISTENCE_NAME:_g.shared.ClientSidePersistence.decoratePersistenceName("ClientSidePersistence"),config:{},cache:null,getMode:function(){return this.config.mode},getWindow:function(){return this.config["window"]||_g.shared.Util.getTopWindow()},debug:function(){if(console){var map=this.getMap();var debugInfo="[ClientSidePersistence -\x3e mode\x3d"+this.getMode().name+", container\x3d"+(this.config.container||"")+"]\n";var count=0;var containerRE= new RegExp("^"+this.config.container+"/");for(var idx=0,keys=Object.keys(map).sort(),last=null;idx0){inLocalNode=true;selector=$CQ(node).attr("class").replace(/\s/g,".")}if(node.getAttribute&&node.getAttribute("name"))visitNamedNode(node,inLocalNode,selector);for(var i=0;node.childNodes&&i