-
Notifications
You must be signed in to change notification settings - Fork 64
/
javelin.min.js
1 lines (1 loc) · 22.1 KB
/
javelin.min.js
1
JX.$E=function(c){var b=new Error(c);var a=JX.$E.caller;if(a)b.caller_fn=a.caller;throw b;};JX.$A=function(b){var c=[];for(var a=0;a<b.length;a++)c.push(b[a]);return c;};JX.$AX=function(a){return JX.isArray(a)?a:[a];};JX.isArray=Array.isArray||function(a){return Object.prototype.toString.call(a)=='[object Array]';};JX.copy=function(a,b){for(var c in b)a[c]=b[c];return a;};JX.bind=function(b,c,d){var a=JX.$A(arguments).slice(2);if(c.bind)return c.bind.apply(c,[b].concat(a));return function(){return c.apply(b||window,a.concat(JX.$A(arguments)));};};JX.bag=function(){};JX.keys=Object.keys||function(b){var c=[];for(var a in b)c.push(a);return c;};JX.id=function(a){return a;};JX.log=JX.bag;JX.now=(Date.now||function(){return new Date().getTime();});JX.install=function(f,e){if(f in JX)return;(JX.install._queue||(JX.install._queue=[])).push([f,e]);var d;do{var c;var b;d=null;for(var a=0;a<JX.install._queue.length;++a){c=JX.install._queue[a][1];if(c.extend&&!JX[c.extend])continue;d=JX.install._queue.splice(a,1)[0][0];--a;if(c.extend)c.extend=JX[c.extend];b=c.initialize;delete c.initialize;c.name='JX.'+d;JX[d]=JX.createClass(c);if(b)if(JX.Stratcom&&JX.Stratcom.ready){b.apply(null);}else JX['install-init'](b);}}while(d);};JX.createClass=function(i){var k=i.name||'';var j;var h;var a=(function(u,t){var v=function(){this.__id__='__obj__'+(++JX.install._nextObjectID);return (t.construct||t.extend||JX.bag).apply(this,arguments);};return v;})(k,i);a.__readable__=k;for(j in i.statics)a[j]=i.statics[j];var q;if(i.extend){var b=function(){};b.prototype=i.extend.prototype;q=a.prototype=new b();}else q=a.prototype={};q.__class__=a;var r=function(t){return function(u){this[t]=u;return this;};};var f=function(t){return function(u){return this[t];};};for(j in (i.properties||{})){var d=j.charAt(0).toUpperCase()+j.substr(1);var o='__auto__'+j;q[o]=i.properties[j];q['set'+d]=r(o);q['get'+d]=f(o);}for(j in i.members)q[j]=i.members[j];var e=JX.install._enumerables;if(i.members&&e){h=e.length;while(h--){var p=e[h];if(i.members[p])q[p]=i.members[p];}}var n=i.extend||{};var m=n.__events__;var l=i.events||[];var g=m||l.length;if(g){var s={};a.__events__=s;a.__name__='class:'+k;var c=n.__path__||[];a.__path__=c.concat([a.__name__]);q.invoke=function(t){return JX.Stratcom.invoke('obj:'+t,this.__class__.__path__.concat([this.__id__]),{args:JX.$A(arguments).slice(1)});};q.listen=function(u,t){return JX.Stratcom.listen('obj:'+u,this.__id__,JX.bind(this,function(v){return t.apply(this,v.getData().args);}));};a.listen=function(u,t){return JX.Stratcom.listen('obj:'+u,this.__name__,JX.bind(this,function(v){return t.apply(this,v.getData().args);}));};}return a;};JX.install._nextObjectID=0;JX.flushHoldingQueue('install',JX.install);(function(){for(var a in {toString:1})return;JX.install._enumerables=['toString','hasOwnProperty','valueOf','isPrototypeOf','propertyIsEnumerable','toLocaleString','constructor'];})();JX.install('Event',{members:{stop:function(){var a=this.getRawEvent();if(a){a.cancelBubble=true;a.stopPropagation&&a.stopPropagation();}this.setStopped(true);return this;},prevent:function(){var a=this.getRawEvent();if(a){a.returnValue=false;a.preventDefault&&a.preventDefault();}this.setPrevented(true);return this;},kill:function(){this.prevent();this.stop();return this;},getSpecialKey:function(){var a=this.getRawEvent();if(!a||a.shiftKey)return null;return JX.Event._keymap[a.keyCode]||null;},isRightButton:function(){var a=this.getRawEvent();return a.which==3||a.button==2;},isNormalMouseEvent:function(){var b=['click','mouseup','mousedown'];if(b.indexOf(this.getType())==-1)return false;var a=this.getRawEvent();if(a.metaKey||a.altKey||a.ctrlKey||a.shiftKey)return false;if(('which' in a)&&(a.which!=1))return false;if(('button' in a)&&a.button)return false;return true;},isNormalClick:function(){if(this.getType()!='click')return false;return this.isNormalMouseEvent();},getNode:function(a){return this.getNodes()[a]||null;},getNodeData:function(a){return JX.Stratcom.getData(this.getNode(a));}},statics:{_keymap:{8:'delete',9:'tab',10:'return',13:'return',27:'esc',37:'left',38:'up',39:'right',40:'down',63232:'up',63233:'down',62234:'left',62235:'right'}},properties:{rawEvent:null,type:null,target:null,data:null,path:[],stopped:false,prevented:false,nodes:{},nodeDistances:{}},initialize:function(){}});JX.install('Stratcom',{statics:{ready:false,_targets:{},_handlers:[],_need:{},_auto:'*',_data:{},_execContext:[],_dataBlock:2,_dataIndex:0,invoke:function(c,b,a){b=JX.$AX(b);return this._dispatchProxy(new JX.Event().setType(c).setData(a||{}).setPath(b||[]));},listen:function(l,i,a){var c=[];l=JX.$AX(l);if(!i)i=this._auto;if(!JX.isArray(i)){i=[[i]];}else if(!JX.isArray(i[0]))i=[i];var g={_callback:a};for(var d=0;d<l.length;++d){var j=l[d];if(('onpagehide' in window)&&j=='unload')j='pagehide';if(!(j in this._targets))this._targets[j]={};var k=this._targets[j];for(var e=0;e<i.length;++e){var h=i[e];var b=this._handlers.length;this._handlers.push(g);this._need[b]=h.length;c.push(b);for(var f=0;f<h.length;++f)(k[h[f]]||(k[h[f]]=[])).push(b);}}g.remove=function(){if(g._callback){delete g._callback;for(var m=0;m<c.length;m++)delete JX.Stratcom._handlers[c[m]];}};return g;},removeCurrentListener:function(){var a=this._execContext[this._execContext.length-1];var c=a.listeners;var b=a.cursor-1;if(c[b])c[b].handler.remove();},dispatch:function(event){var i=[];var h={};var d={};var k=function(o,p,n){if(!h.hasOwnProperty(o)){h[o]=p;d[o]=n;i.push(o);}};var m=event.srcElement||event.target;if(m&&m.nodeType===3)m=m.parentNode;if(!m||!m.getAttribute)m=null;var c=1;var b=m;while(b&&b.getAttribute){k('tag:'+b.nodeName.toLowerCase(),b,c);var f=b.id;if(f)k('id:'+f,b,c);var l=b.getAttribute('data-sigil');if(l){l=l.split(' ');for(var g=0;g<l.length;g++)k(l[g],b,c);}var a=b.getAttribute('data-autoid');if(a)k('autoid:'+a,b,c);++c;b=b.parentNode;}var e=event.type;if(e=='focusin'){e='focus';}else if(e=='focusout')e='blur';var j=new JX.Event().setRawEvent(event).setData(event.customData).setType(e).setTarget(m).setNodes(h).setNodeDistances(d).setPath(i.reverse());return this._dispatchProxy(j);},_dispatchProxy:function(n){var p=this._targets[n.getType()];if(!p)return n;var m=n.getPath();var b=n.getNodeDistances();var i=m.length;var f={};var e={};var l;var c=1e+06;for(var o=-1;o<i;++o){l=p[(o==-1)?this._auto:m[o]];if(l){var a=b[m[o]]||c;for(var g=0;g<l.length;++g){var k=l[g];f[k]=(f[k]||0)+1;e[k]=Math.min(e[k]||a,a);}}}var j=[];for(var h in f)if(f[h]==this._need[h]){var d=this._handlers[h];if(d)j.push({distance:e[h],handler:d});}j.sort(function(q,r){return q.distance-r.distance;});this._execContext.push({listeners:j,event:n,cursor:0});this.pass();this._execContext.pop();return n;},pass:function(){var a=this._execContext[this._execContext.length-1];var event=a.event;var d=a.listeners;while(a.cursor<d.length){var b=a.cursor++;if(d[b]){var c=d[b].handler;c._callback&&c._callback(event);}if(event.getStopped())break;}return event.getStopped()||event.getPrevented();},context:function(){var a=this._execContext.length;return a?this._execContext[a-1].event:null;},mergeData:function(a,b){if(this._data[a]){JX.copy(this._data[a],b);}else{this._data[a]=b;if(a===0){JX.Stratcom.ready=true;JX.flushHoldingQueue('install-init',function(c){c();});JX.__rawEventQueue({type:'start-queue'});}}},hasSigil:function(a,b){var c=a.getAttribute('data-sigil')||false;return c&&(' '+c+' ').indexOf(' '+b+' ')>-1;},addSigil:function(a,b){var c=a.getAttribute('data-sigil')||'';if(!JX.Stratcom.hasSigil(a,b))c+=' '+b;a.setAttribute('data-sigil',c);},getData:function(e){var d=(e.getAttribute('data-meta')||'').split('_');if(d[0]&&d[1]){var a=this._data[d[0]];var c=d[1];if(a&&(c in a))return a[c];}var b={};if(!this._data[1])this._data[1]={};this._data[1][this._dataIndex]=b;e.setAttribute('data-meta','1_'+(this._dataIndex++));return b;},addData:function(b,a){return JX.copy(JX.Stratcom.getData(b),a);},allocateMetadataBlock:function(){return this._dataBlock++;}}});JX.behavior=function(b,a){JX.behavior._behaviors[b]=a;JX.behavior._statics[b]={};};JX.initBehaviors=function(c){var d=[];for(var e in c){if(!(e in JX.behavior._behaviors)){d.push(e);continue;}var a=c[e];if(!a.length){if(JX.behavior._initialized.hasOwnProperty(e))continue;a=[null];}for(var b=0;b<a.length;b++)JX.behavior._behaviors[e](a[b],JX.behavior._statics[e]);JX.behavior._initialized[e]=true;}if(d.length)JX.$E('JX.initBehavior(map): behavior(s) not registered: '+d.join(', '));};JX.behavior._behaviors={};JX.behavior._statics={};JX.behavior._initialized={};JX.flushHoldingQueue('behavior',JX.behavior);JX.install('Request',{construct:function(b,a){this.setURI(b);if(a)this.listen('done',a);},events:['start','open','send','statechange','done','error','finally','uploadprogress'],members:{_xhrkey:null,_transport:null,_sent:false,_finished:false,_block:null,_data:null,_getSameOriginTransport:function(){try{try{return new XMLHttpRequest();}catch(a){return new ActiveXObject("Msxml2.XMLHTTP");}}catch(a){return new ActiveXObject("Microsoft.XMLHTTP");}},_getCORSTransport:function(){try{var xport=new XMLHttpRequest();if(!('withCredentials' in xport))if(typeof XDomainRequest!='undefined')xport=new XDomainRequest();return xport;}catch(a){return new XDomainRequest();}},getTransport:function(){if(!this._transport)this._transport=this.getCORS()?this._getCORSTransport():this._getSameOriginTransport();return this._transport;},send:function(){if(this._sent||this._finished)return;this.invoke('start',this);if(this._finished)return;var e=this.getTransport();e.onreadystatechange=JX.bind(this,this._onreadystatechange);if(e.upload)e.upload.onprogress=JX.bind(this,this._onuploadprogress);var b=this.getMethod().toUpperCase();var a=this._data||[];a.push(['__ajax__',true]);this._block=JX.Stratcom.allocateMetadataBlock();a.push(['__metablock__',this._block]);var c=(this.getDataSerializer()||JX.Request.defaultDataSerializer)(a);var d=this.getURI();if(b=='GET'||this.getRawData())d+=((d.indexOf('?')===-1)?'?':'&')+c;if(this.getTimeout())this._timer=setTimeout(JX.bind(this,this._fail,JX.Request.ERROR_TIMEOUT),this.getTimeout());e.open(b,d,true);this.invoke('open',this);if(this._finished)return;this.invoke('send',this);if(this._finished)return;if(b=='POST'){if(this.getRawData()){e.send(this.getRawData());}else{e.setRequestHeader('Content-Type','application/x-www-form-urlencoded');e.send(c);}}else e.send(null);this._sent=true;},abort:function(){this._cleanup();},_onuploadprogress:function(a){this.invoke('uploadprogress',a);},_onreadystatechange:function(){var c=this.getTransport();var b;try{this.invoke('statechange',this);if(this._finished)return;if(c.readyState!=4)return;if(c.status!==0&&(c.status<200||c.status>=300)){this._fail();return;}b=this._extractResponse(c);if(!b)JX.$E('JX.Request("'+this.getURI()+'", ...): '+'server returned an invalid response.');}catch(a){this._fail();return;}try{this._handleResponse(b);this._cleanup();}catch(a){setTimeout(function(){throw a;},0);}},_extractResponse:function(e){var c=e.responseText;if(this.getExpectCSRFGuard())c=c.substring('for (;;);'.length);var d=this.getResponseType().toUpperCase();if(d=='TEXT'){return c;}else if(d=='JSON'||d=='JAVELIN'){return JX.JSON.parse(c);}else if(d=='XML'){var a;try{if(typeof DOMParser!='undefined'){var parser=new DOMParser();a=parser.parseFromString(c,"text/xml");}else{a=new ActiveXObject("Microsoft.XMLDOM");a.async=false;a.loadXML(e.responseText);}return a.documentElement;}catch(b){this._fail();return null;}}return null;},_fail:function(a){this._cleanup();this.invoke('error',a,this);this.invoke('finally');},_done:function(c){this._cleanup();if(c.onload)for(var a=0;a<c.onload.length;a++)(new Function(c.onload[a]))();var b;if(this.getRaw()){b=c;}else{b=c.payload;JX.Request._parseResponsePayload(b);}this.invoke('done',b,this);this.invoke('finally');},_cleanup:function(){this._finished=true;clearTimeout(this._timer);this._timer=null;if(this._transport&&this._transport.readyState!=4)this._transport.abort();},setData:function(a){this._data=null;this.addData(a);return this;},addData:function(a){if(!this._data)this._data=[];for(var b in a)this._data.push([b,a[b]]);return this;},setDataWithListOfPairs:function(a){this._data=a;return this;},_handleResponse:function(a){if(this.getResponseType().toUpperCase()=='JAVELIN'){if(a.error){this._fail(a.error);}else{JX.Stratcom.mergeData(this._block,a.javelin_metadata||{});var b=JX.bind(this,function(){this._done(a);JX.initBehaviors(a.javelin_behaviors||{});});if(a.javelin_resources){JX.Resource.load(a.javelin_resources,b);}else b();}}else{this._cleanup();this.invoke('done',a,this);this.invoke('finally');}}},statics:{ERROR_TIMEOUT:-9000,defaultDataSerializer:function(b){var e=[];for(var a=0;a<b.length;a++){var d=b[a];var c=encodeURIComponent(d[0]);var f=encodeURIComponent(d[1]);e.push(c+'='+f);}return e.join('&');},_parseResponsePayload:function(e,b){var f=JX.Request._parseResponsePayload;var d=(typeof b!=='undefined')?e[b]:e;if(JX.isArray(d)){for(var a=0;a<d.length;a++)f(d,a);}else if(d&&typeof d=='object')if(d.__html!=null){e[b]=JX.$H(d.__html);}else for(var c in d)f(d,c);}},properties:{URI:null,dataSerializer:null,method:'POST',rawData:null,raw:false,timeout:null,expectCSRFGuard:true,CORS:false,responseType:'JAVELIN'}});JX.$V=function(a,b){return new JX.Vector(a,b);};JX.install('Vector',{construct:function(a,b){if(typeof b=='undefined')return JX.Vector.getPos(a);this.x=(a===null)?null:parseFloat(a);this.y=(b===null)?null:parseFloat(b);},members:{x:null,y:null,setPos:function(a){a.style.left=(this.x===null)?'':(parseInt(this.x,10)+'px');a.style.top=(this.y===null)?'':(parseInt(this.y,10)+'px');return this;},setDim:function(a){a.style.width=(this.x===null)?'':(parseInt(this.x,10)+'px');a.style.height=(this.y===null)?'':(parseInt(this.y,10)+'px');return this;},add:function(a,b){if(a instanceof JX.Vector){b=a.y;a=a.x;}return new JX.Vector(this.x+parseFloat(a),this.y+parseFloat(b));}},statics:{_viewport:null,getPos:function(b){JX.Event&&(b instanceof JX.Event)&&(b=b.getRawEvent());if(('pageX' in b)||('clientX' in b)){var a=JX.Vector._viewport;return new JX.Vector(b.pageX||(b.clientX+a.scrollLeft),b.pageY||(b.clientY+a.scrollTop));}var f=0;var g=0;do{var c=b.offsetParent;var d=0;var e=0;if(c&&c!=document.body){d=c.scrollLeft;e=c.scrollTop;}f+=(b.offsetLeft-d);g+=(b.offsetTop-e);b=c;}while(b&&b!=document.body);return new JX.Vector(f,g);},getDim:function(a){return new JX.Vector(a.offsetWidth,a.offsetHeight);},getScroll:function(){var a=document.body;var b=document.documentElement;return new JX.Vector(window.pageXOffset||a.scrollLeft||b.scrollLeft,window.pageYOffset||a.scrollTop||b.scrollTop);},getViewport:function(){var a=JX.Vector._viewport;return new JX.Vector(window.innerWidth||a.clientWidth||0,window.innerHeight||a.clientHeight||0);},getDocument:function(){var a=JX.Vector._viewport;return new JX.Vector(a.scrollWidth||0,a.scrollHeight||0);}},initialize:function(){JX.Vector._viewport=document.documentElement||document.body;}});JX.$=function(a){var b=document.getElementById(a);if(!b||(b.id!=a))JX.$E("JX.$('"+a+"') call matched no nodes.");return b;};JX.install('HTML',{construct:function(a){if(a instanceof JX.HTML){this._content=a._content;return;}this._content=a;},members:{_content:null,getFragment:function(){var b=JX.$N('div');b.innerHTML=this._content;var a=document.createDocumentFragment();while(b.firstChild)a.appendChild(b.removeChild(b.firstChild));return a;}}});JX.$H=function(a){return new JX.HTML(a);};JX.$N=function(d,a,b){if(typeof b=='undefined'&&(typeof a!='object'||a instanceof JX.HTML)){b=a;a={};}var c=document.createElement(d);if(a.style){JX.copy(c.style,a.style);delete a.style;}if(a.sigil){JX.Stratcom.addSigil(c,a.sigil);delete a.sigil;}if(a.meta){JX.Stratcom.addData(c,a.meta);delete a.meta;}JX.copy(c,a);if(b)JX.DOM.setContent(c,b);return c;};JX.install('DOM',{statics:{_autoid:0,_uniqid:0,_metrics:{},setContent:function(b,a){while(b.firstChild)JX.DOM.remove(b.firstChild);JX.DOM.appendContent(b,a);},prependContent:function(b,a){this._insertContent(b,a,this._mechanismPrepend,true);},appendContent:function(b,a){this._insertContent(b,a,this._mechanismAppend);},_mechanismPrepend:function(b,a){b.insertBefore(a,b.firstChild);},_mechanismAppend:function(b,a){b.appendChild(a);},_insertContent:function(d,a,c,e){if(JX.isArray(a)){if(e)a=[].concat(a).reverse();for(var b=0;b<a.length;b++)JX.DOM._insertContent(d,a[b],c,e);}else{var f=typeof a;if(a instanceof JX.HTML){a=a.getFragment();}else if(f=='string'||f=='number')a=document.createTextNode(a);a&&c(d,a);}},remove:function(a){a.parentNode&&JX.DOM.replace(a,null);return a;},replace:function(b,d){var a;if(b.nextSibling){a=JX.bind(b.nextSibling,function(f,e){f.insertBefore(e,this);});}else a=this._mechanismAppend;var c=b.parentNode;c.removeChild(b);this._insertContent(c,d,a);return b;},convertFormToListOfPairs:function(c){var b=c.getElementsByTagName('*');var a=[];for(var d=0;d<b.length;++d){if(!b[d].name)continue;if(b[d].disabled)continue;var f=b[d].type;var e=b[d].tagName;if((f in {radio:1,checkbox:1}&&b[d].checked)||f in {text:1,hidden:1,password:1,email:1,tel:1,number:1}||e in {TEXTAREA:1,SELECT:1})a.push([b[d].name,b[d].value]);}return a;},convertFormToDictionary:function(b){var a={};var d=JX.DOM.convertFormToListOfPairs(b);for(var c=0;c<d.length;c++)a[d[c][0]]=d[c][1];return a;},isNode:function(a){return !!(a&&a.nodeName&&(a!==window));},isType:function(b,c){b=(''+(b.nodeName||'')).toUpperCase();c=JX.$AX(c);for(var a=0;a<c.length;++a)if(c[a].toUpperCase()==b)return true;return false;},listen:function(d,f,e,b){var a=['autoid:'+JX.DOM._getAutoID(d)];e=JX.$AX(e||[]);if(!e.length){e=a;}else for(var c=0;c<e.length;c++)e[c]=a.concat(JX.$AX(e[c]));return JX.Stratcom.listen(f,e,b);},invoke:function(b,c,a){return JX.Stratcom.dispatch({target:b,type:c,customData:a});},uniqID:function(a){if(!a.getAttribute('id'))a.setAttribute('id','uniqid_'+(++JX.DOM._uniqid));return a.getAttribute('id');},alterClass:function(d,b,a){var c=((' '+d.className+' ').indexOf(' '+b+' ')>-1);if(a&&!c){d.className+=' '+b;}else if(c&&!a)d.className=d.className.replace(new RegExp('(^|\\s)'+b+'(?:\\s|$)','g'),' ');},htmlize:function(a){return (''+a).replace(/&/g,'&').replace(/"/g,'"').replace(/</g,'<').replace(/>/g,'>');},show:function(){for(var a=0;a<arguments.length;++a)arguments[a].style.display='';},hide:function(){for(var a=0;a<arguments.length;++a)arguments[a].style.display='none';},textMetrics:function(c,e,f){if(!this._metrics[e]){var b=JX.$N('var',{className:e});this._metrics[e]=b;}var d=this._metrics[e];document.body.appendChild(d);d.style.width=f?(f+'px'):'';JX.DOM.setContent(d,JX.$H(JX.DOM.htmlize(c.value).replace(/\n/g,'<br />')));var a=JX.Vector.getDim(d);document.body.removeChild(d);return a;},scry:function(d,f,e){var b=d.getElementsByTagName(f);if(!e)return JX.$A(b);var c=[];for(var a=0;a<b.length;a++)if(JX.Stratcom.hasSigil(b[a],e))c.push(b[a]);return c;},find:function(b,d,c){var a=JX.DOM.scry(b,d,c);if(!a.length)JX.$E('JX.DOM.find(<node>, "'+d+'", "'+c+'"): '+'matched no nodes.');return a[0];},focus:function(b){try{b.focus();}catch(a){}},scrollTo:function(a){window.scrollTo(0,JX.$V(a).y);},_getAutoID:function(a){if(!a.getAttribute('data-autoid'))a.setAttribute('data-autoid','autoid_'+(++JX.DOM._autoid));return a.getAttribute('data-autoid');}}});JX.install('JSON',{statics:{parse:function(data){if(typeof data!='string')return null;if(window.JSON&&JSON.parse){var obj;try{obj=JSON.parse(data);}catch(e){}return obj||null;}data=data.replace(/\u2028/g,'\\u2028').replace(/\u2029/g,'\\u2029');return eval('('+data+')');},stringify:function(e){if(window.JSON&&JSON.stringify)return JSON.stringify(e);var c=[];if(e===null||e===true||e===false||typeof e=='number')return ''+e;if(e.push&&e.pop){var d;for(var a=0;a<e.length;a++){d=(typeof e[a]=='undefined')?null:e[a];c.push(JX.JSON.stringify(d));}return '['+c.join(',')+']';}if(typeof e=='string')return JX.JSON._esc(e);for(var b in e)c.push(JX.JSON._esc(b)+':'+JX.JSON.stringify(e[b]));return '{'+c.join(',')+'}';},_escexp:/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,_meta:{'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},_esc:function(a){JX.JSON._escexp.lastIndex=0;return JX.JSON._escexp.test(a)?'"'+a.replace(JX.JSON._escexp,JX.JSON._replace)+'"':'"'+a+'"';},_replace:function(a){if(a in JX.JSON._meta)return JX.JSON._meta[a];return '\\u'+(('0000'+a.charCodeAt(0).toString(16)).slice(-4));}}});JX.$U=function(a){return new JX.URI(a);};JX.install('URI',{statics:{_uriPattern:/(?:([^:\/?#]+):)?(?:\/\/([^:\/?#]*)(?::(\d*))?)?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/,_queryPattern:/(?:^|&)([^&=]*)=?([^&]*)/g,_defaultQuerySerializer:function(c){var b=[];for(var a in c)if(c[a]!=null){var d=encodeURIComponent(c[a]);b.push(encodeURIComponent(a)+(d?'='+d:''));}return b.join('&');}},construct:function(f){this.setQueryParams({});if(f){var e=JX.URI._uriPattern.exec(f);this.setProtocol(e[1]||undefined);this.setDomain(e[2]||undefined);this.setPort(e[3]||undefined);var b=e[4];var c=e[5];this.setFragment(e[6]||undefined);this.setPath(b.charAt(0)=='/'?b:'/'+b);if(c){var d={};var a;while((a=JX.URI._queryPattern.exec(c))!=null)d[decodeURIComponent(a[1].replace(/\+/g,' '))]=decodeURIComponent(a[2].replace(/\+/g,' '));this.setQueryParams(d);}}},properties:{protocol:undefined,port:undefined,path:undefined,queryParams:undefined,fragment:undefined,querySerializer:undefined},members:{_domain:undefined,addQueryParams:function(a){JX.copy(this.getQueryParams(),a);return this;},setQueryParam:function(a,c){var b={};b[a]=c;return this.addQueryParams(b);},setDomain:function(a){var b=new RegExp('[\\x00-\\x2c\\x2f\\x3b-\\x40\\x5c\\x5e\\x60\\x7b-\\x7f'+'\\uFDD0-\\uFDEF\\uFFF0-\\uFFFF'+'\\u2047\\u2048\\uFE56\\uFE5F\\uFF03\\uFF0F\\uFF1F]');if(b.test(a))JX.$E('JX.URI.setDomain(...): invalid domain specified.');this._domain=a;return this;},getDomain:function(){return this._domain;},toString:function(){var a='';if(this.getProtocol())a+=this.getProtocol()+'://';a+=this.getDomain()||'';if(this.getPort())a+=':'+this.getPort();a+=this.getPath()||(a?'/':'');a+=this._getQueryString();if(this.getFragment())a+='#'+this.getFragment();return a;},_getQueryString:function(){var a=(this.getQuerySerializer()||JX.URI._defaultQuerySerializer)(this.getQueryParams());return a?'?'+a:'';},go:function(){var a=this.toString();if(JX.Stratcom.invoke('go',null,{uri:a}).getPrevented())return;if(!a)a=window.location.pathname+(window.location.query||'');window.location=a;}}});