if(!window.console){window.console={log:function(){}};}window.jsr={lang:"ru",charset:"utf-8",contextPath:".",suffix:"/bin",isCrossDomain:false,start:function(target,version,script){this.setup(target);this.writeScript(this.extjsContext+"/"+version+"/adapter/ext/ext-base.js");this.writeScript(this.extjsContext+"/"+version+"/ext-all.js");this.writeStyle(this.extjsContext+"/"+version+"/resources/css/ext-all.css");this.writeScript(this.contextPath+this.suffix+script);},setup:function(script){var params={};function parseParams(query){var seg=query.replace(/^\?/,"").split("&");for(var i=0;i<seg.length;i++){if(!seg[i]){continue;}var s=seg[i].split("=");params[s[0]]=s[1]?s[1]:true;}}var base=location.href;var hostname;var arr=location.href.split("/");if(base.charAt(base.length-1)!="/"){arr.pop();base=arr.join("/")+"/";}hostname=arr.slice(0,3).join("/");if(script){function findScriptTag(re){re=new RegExp("^.*"+re+".*$");var scriptTags=document.getElementsByTagName("script");for(var i=0;i<scriptTags.length;i++){var src=scriptTags[i].src;if(src){if(!src.match(/^https?:\/\//)){src=(src.match(/^\//)?hostname:base)+src;}if(src.match(re)){return src;}}}return null;}var src=findScriptTag(script);console.log("src: "+src);this.charset="utf-8";var arr=src.split("?");if(arr[1]){parseParams(arr[1]);}arr=arr[0].split("/");this.extjsContext=arr.slice(0,3).join("/")+"/extjs";this.contextPath="";this.suffix="bin";for(var i=0;i<arr.length;i++){if(/^(bin|debug|src)$/.test(arr[i])){this.suffix="/"+arr[i];break;}if(i>0){this.contextPath+="/";}this.contextPath+=arr[i];}this.isCrossDomain=base.match(this.contextPath)?false:true;}if(location.search.length>0){parseParams(location.search.substring(1));}this.params=params;this.lang=navigator.language||navigator.userLanguage;this.lang=this.lang.split("-")[0];if(params.crossDomain){this.isCrossDomain=params.crossDomain;}if(params.charset){this.charset=params.charset;}if(params.lang){this.lang=params.lang;}console.log("hostname: "+hostname);console.log("suffix: "+this.suffix);console.log("contextPath: "+this.contextPath);console.log("isCrossDomain: "+this.isCrossDomain);console.log("lang: "+this.lang);console.log("charset: "+this.charset);console.log("extjsContext: "+this.extjsContext);},url:function(uri){if(!uri||uri.match(/^https?:\/\//)){return uri;}else{return jsr.contextPath+uri;}},writeScript:function(src){document.write('<script src="'+src);document.write('" type="text/javascript"');document.write(' charset="'+this.charset+'"');document.write("><\/script>");},writeStyle:function(src){document.write('<link rel="stylesheet" type="text/css" href="'+src+'" />');}};var JSR=jsr;JSR.css=JSR.js=JSR.run=JSR.invoke=function(){jsr.Loader.invoke.apply(jsr.Loader,arguments);};JSR.param=function(n){return jsr.params[n];};JSR.str=function(v){deprecated("Use jsr.strval()");return Ext.isDate(v)?v.format(Date.patterns.DATE):v;};JSR.include=function(uri){jsr.Loader.include(uri);};JSR.commons=function(){deprecated("remove this code");};JSR.inRoles=function(){deprecated("Use isUserInRole()");return isUserInRole.apply(window,arguments);};JSR.loader={map:{},add:function(){deprecated("Use: jsr.Loader.push()");for(var i=0;i<arguments.length;i++){var el=arguments[i];if(typeof el=="string"){var arr=el.split(",");arr.each(function(s){jsr.Loader.push(s);});}else{if(typeof el=="function"){jsr.Loader.push(el);}else{if(typeof el=="object"){if(el.css){this.add(el.css);}if(el.js){this.add(el.js);}if(el.fn&&el.scope){jsr.Loader.push(el);}}}}}},commit:function(){deprecated("Use: jsr.Loader.commit()");jsr.Loader.commit();}};window.log=function(m){console.log("WARNING: "+m);console.trace();};function deprecated(m){console.log("DEPRECATED METHOD!");}jsr.Loader={stack:[],scripts:[],runing:false,def:function(name,c){},check:function(url){if(typeof url!="string"){return true;}if(this.scripts[url]){return false;}this.scripts[url]=true;return true;},push:function(el){if(typeof(el)=="string"&&!el.match(/^(http|https):\/\//)){el=this.cwd(el);el=jsr.url(jsr.suffix+el);}if(this.check(el)){this.stack.push(el);}},execute:function(el){this[typeof(el)+"Launcher"].call(this,el);},stringLauncher:function(str){var arr=str.split(".");var ext=arr[arr.length-1];if(ext=="js"){this.createScript(str);}if(ext=="css"){this.createStyle(str);}},objectLauncher:function(o){if(o.fn){o.fn.apply(o.scope||this,o.args||[]);}this.next();},functionLauncher:function(fn){fn.call(this);this.next();},createStyle:function(str){if(!Ext.isReady){console.log("WARNING: Ext.isReady = false");}var el=document.createElement("link");el.setAttribute("href",str);el.setAttribute("type","text/css");el.setAttribute("rel","stylesheet");document.getElementsByTagName("head")[0].appendChild(el);this.next();},createScript:function(str){var el=document.createElement("script");el.type="text/javascript";el.src=str;el.charset=jsr.charset;this.applyEvents(el);document.getElementsByTagName("head")[0].appendChild(el);},applyEvents:function(script,success,failure){if(Ext.isIE){var loader=this;script.onreadystatechange=function(e){if(this.readyState=="loaded"||this.readyState=="complete"){loader.next();}};}else{Ext.get(script).on("load",function(e){this.next();},this,{single:true});Ext.get(script).on("error",function(e){this.next();},this,{single:true});}},invoke:function(){for(var i=0;i<arguments.length;i++){this.push(arguments[i]);}this.commit();},next:function(){this.runing=true;if(this.stack.length==0){this.runing=false;}else{this.execute(this.stack.shift());}},commit:function(){if(!this.runing){this.next();}},cwd:function(uri){if(uri.charAt(0)!="/"&&!uri.match("^https?\\:\\/\\/")){uri=(this.wd||"/")+uri;}return uri;},include:function(uri){var url=uri;if(!uri.match(/^https?:\/\//)){uri=this.cwd(uri);url=jsr.url(jsr.suffix+uri);}if(this.check(url)){var wd=this.wd=uri.substring(0,uri.lastIndexOf("/")+1);this.ajaxLoad(url);this.wd=wd;}},ajaxLoad:function(url){var http=null;try{http=new XMLHttpRequest();}catch(e){for(var i=Ext.isIE6?1:0;i<activeX.length;++i){try{http=new ActiveXObject(activeX[i]);break;}catch(e){}}}http.open("GET",url,false);http.send(null);if(http.status==200||http.status==304){(function(code){window.eval(code);}).call(this.ctx,http.responseText);}else{console.log("loader:ajaxLoad",http);}}};jsr.start("/init.js","3.4.0","/run.js");
