﻿(function($){
var _2=document.location,_3={a:"href",img:"src",form:"action",base:"href",script:"src",iframe:"src",link:"href"};
var _4=function(_5){
return typeof _5==="string";
};
var _6=function(_7){
return typeof _7==="object";
};
var _8=function(_9){
return typeof _9==="function";
};
var _a=function(_b){
return (_b.length==1&&!_6(_b[0]));
};
var _c=function(_d){
return (_d.length>=2||(_d.length==1&&_6(_d[0])));
};
var _e=function(_f){
return _f.replace(/\?.*$/,"");
};
var _10=function(str){
return str.replace(/^#/,"");
};
function splitQuery(_12){
var ret={},seg=_12.replace(/^\?/,"").split("&"),len=seg.length,i=0,s;
for(;i<len;i++){
if(!seg[i]){
continue;
}
s=seg[i].split("=");
ret[s[0]]=s[1];
}
return ret;
}
var _18=function(_19,_1a){
var _1b=(_1a===true)?"?":"";
for(i in _19){
_1b+=i+"="+_19[i]+"&";
}
return _1b.slice(0,-1);
};
var _1c=function(_1d){
return _1d.join("/");
};
function splitHashSegments(_1e){
if(_1e.indexOf("=")===-1){
if(_1e.charAt(_1e.length-1)=="/"){
_1e=_1e.slice(0,-1);
}
return _1e.replace(/^\//,"").split("/");
}
return null;
}
function splitHashParams(_1f){
if(_1f.indexOf("=")!==-1){
return splitQuery(_1f);
}
return null;
}
var _20=function(elm){
var tg=$(elm).get(0).tagName;
if(tg!==undefined){
return tg.toLowerCase();
}
return tg;
};
var _23=function(msg){
if(msg===undefined){
msg="url parser error";
}
};
var _25=function(_26,_27){
var _28=new RegExp(":"+_27);
return _26.replace(_28,"");
};
$.extend($.expr[":"],{external:function(elm,i,m){
var _2c=elm.tagName;
if(_2c!==undefined){
var tg=_2c.toLowerCase();
var _2e=_3[tg];
if(elm[_2e]){
if(tg!=="a"){
var a=document.createElement("a");
a.href=elm[_2e];
}else{
var a=elm;
}
return a.hostname&&_25(a.hostname,a.port)!==_25(_2.hostname,_2.port);
}
}
return false;
},internal:function(elm,i,m){
var _33=elm.tagName;
if(_33!==undefined){
var tg=_33.toLowerCase();
var _35=_3[tg];
if(elm[_35]){
if(tg!=="a"){
var a=document.createElement("a");
a.href=elm[_35];
}else{
var a=elm;
}
return a.hostname&&_25(a.hostname,a.port)===_25(_2.hostname,_2.port);
}
}
return false;
}});
$.url=function(_37){
return new _38(_37);
};
$.fn.url=function(){
if(this.size()>1){
var _39={};
this.each(function(i){
_39[i]=new _38($(this));
});
return _39;
}else{
return new _38(this);
}
};
$.observeUrl=function(_3b){
if(_3b===undefined){
_3b=100;
}
var _3c,_3d,_3e,_3f,_40,_41,_42=$.browser.msie,_43=$.browser.safari,_44=false,_45;
var _46=function(){
_3c=_e(_2.hash);
if(_42){
if(_3c==""){
_3c="#";
}
$("body").prepend("<iframe id=\"browser_history\" style=\"display: none;\" src=\""+_2.href+"\"></iframe>");
_47(_3c);
}else{
if($.browser.safari){
_3e=[];
_3e.length=history.length;
_3f=[];
_40=history.length;
isFirst=true;
}
}
if(_3c){
_48(_10(_3c));
}
_45=setInterval(_49,_3b);
};
var _4a=function(_4b){
_3e.push(_4b);
_3f.length=0;
isFirst=true;
};
var _49=function(){
if(_42){
var _4c=$("#browser_history")[0];
var _4d=_4c.contentDocument||_4c.contentWindow.document;
var _4e=_e(_4d.location.hash);
if(_4e!=_3c){
_2.hash=_4e;
_3c=_4e;
_48(_10(_4e));
}else{
if(_10(_3c)!=_10(_2.hash)){
_4f(_10(_2.hash));
}
}
}else{
if(_43){
if(_40==history.length&&_3e.length>_40){
_3e.shift();
}
if(!_41){
var _50=history.length-_3e.length;
_40=history.length;
if(_50){
isFirst=false;
if(_50<0){
for(var i=0;i<Math.abs(_50);i++){
_3f.unshift(_3e.pop());
}
}else{
for(var i=0;i<_50;i++){
_3e.push(_3f.shift());
}
}
var _52=_3e[_3e.length-1];
if(_52!=undefined){
_3c=_e(_2.hash);
_48(_52);
}
}else{
if(_3e[_3e.length-1]==undefined&&!isFirst){
if(_2.hash){
_48(_10(_2.hash));
}else{
_48("");
}
isFirst=true;
}
}
}
}else{
var _4e=_e(_2.hash);
if(_4e!=_3c){
_3c=_4e;
_48(_10(_4e));
}
}
}
};
var _4f=function(_53){
_53=decodeURIComponent(_e(_53));
if($.browser.safari){
newHash=_53;
}else{
newHash="#"+_53;
_2.hash=newHash;
}
_3c=newHash;
if(_42){
_47(newHash);
_40=history.length;
_48(_53);
}else{
if(_43){
_41=true;
_4a(_53);
window.setTimeout(function(){
_41=false;
},200);
_48(_53);
_2.hash=newHash;
}else{
_48(_53);
}
}
};
var _47=function(_54){
var _55=$("#browser_history")[0];
var _56=_55.contentDocument||_55.contentWindow.document;
_56.open();
_56.close();
_56.location.hash=_54;
};
var _48=function(){
if(!_44){
$(document).trigger("hash:change",_10(_2.hash));
}
_44=false;
};
$(document).bind("hash:unwatch",function(){
_44=true;
});
_46();
};
function parseUrl(url){
var a=document.createElement("a");
a.href=url;
return {source:url,protocol:a.protocol.replace(":",""),host:_25(a.hostname,a.port),base:(function(){
if(a.port!=0&&a.port!==null&&a.port!==""){
return a.protocol+"//"+_25(a.hostname,a.port)+":"+a.port;
}
return a.protocol+"//"+a.host;
})(),port:a.port,query:a.search,params:splitQuery(a.search),file:(a.pathname.match(/\/([^\/?#]+)$/i)||[,""])[1],hash:_10(a.hash),path:(function(){
var pn=a.pathname.replace(/^([^\/])/,"/$1");
if(pn=="/"){
pn="";
}
return pn;
})(),segments:a.pathname.replace(/^\//,"").split("/"),hashSegments:splitHashSegments(_10(a.hash)),hashParams:splitHashParams(_10(a.hash))};
}
var _38=function(_5a){
var _5b=null,ref=null,_5d={};
var _5e=function(_5f){
var _60="";
if(_5d.hashParams!=null){
_60=makeQueryString(_5d.hashParams);
}else{
if(_5d.hashSegments!=null){
_60=makePathString(_5d.hashSegments);
}
}
if(_60!==""){
if(_5d.hash.charAt(0)=="/"){
_60="/"+_60;
}
if(_5f===true){
return "#"+_60;
}
return _60;
}
return "";
};
var _61=function(){
if(_5b=="elm"){
ref.attr(_3[_20(ref)],_5d.source);
}else{
if(_5b=="doc"){
_2.href=_5d.source;
}
}
};
var _62=function(){
_5d.source=_5d.base+_5d.path+_5d.query;
if(_5d.hash&&_5d.hash!=""){
_5d.source+="#"+_5d.hash;
}
};
var _63=function(key,val){
switch(key){
case "source":
_5d=parseUrl(val);
break;
case "base":
if(val.charAt(val.length-1)=="/"){
val=val.slice(0,-1);
}
var a=document.createElement("a");
a.href=_5d.base=val;
_5d.protocol=a.protocol.replace(":","");
_5d.host=_25(a.hostname,a.port);
_5d.port=a.port;
break;
case "protocol":
case "host":
case "port":
_5d[key]=val;
if(a.port!=0&&a.port!==null&&a.port!==""){
_5d.base=a.protocol+"//"+_25(a.hostname,a.port)+":"+a.port;
}else{
_5d.base=a.protocol+"//"+a.host;
}
break;
case "query":
_5d.query="?"+val.replace(/\?/,"");
_5d.params=splitQuery(val);
break;
case "file":
_5d.path=_5d.path.replace(new RegExp(_5d.file+"$"),val);
_5d.file=val;
break;
case "hash":
_5d.hash=val;
_5d.hashSegments=splitHashSegments(val);
_5d.hashParams=splitHashParams(val);
break;
case "path":
if(val.charAt(0)!="/"){
val="/"+val;
}
_5d.path=val;
_5d.file=(val.match(/\/([^\/?#]+)$/i)||[,""])[1];
_5d.segments=val.replace(/^\//,"").split("/");
break;
default:
_23("you can't update this property directly");
break;
}
_62();
};
var _67=function(key,val){
_5d.params[key]=val;
_5d.query=_18(_5d.params,true);
_62();
};
var _6a=function(key,val){
_5d.segments[key]=val;
_5d.path="/"+_1c(_5d.segments);
_5d.file=(_5d.path.match(/\/([^\/?#]+)$/i)||[,""])[1];
_62();
};
var _6d=function(key,val){
_5d.hashParams[key]=val;
_5d.hash=_18(_5d.hashParams,true);
_62();
};
var _70=function(key,val){
var _73=(_5d.hash.charAt(0)=="/")?"/":"";
_5d.hashSegments[key]=val;
_5d.hash=_73+_1c(_5d.hashSegments);
_62();
};
var _74=function(_75,_76,_77){
if(_a(_77)){
var key=_77[0];
return (_75===undefined||_75[key]===undefined||_75[key]==="")?null:_75[key];
}else{
if(_c(_77)){
if(_6(_77[0])){
for(var key in _77[0]){
_76(key,_77[0][key]);
}
if(_77[1]!==false){
_61();
}
}else{
_76(_77[0],_77[1]);
if(_77[2]!==false){
_61();
}
}
return this;
}
}
};
var _79=function(){
if(_6(_5a)&&_5a.size()){
urlAttr=undefined;
var _7a=_20(_5a);
if(_7a!==undefined){
urlAttr=_3[_7a];
}
if(_7a!==undefined&&urlAttr!==undefined){
_5b="elm";
ref=_5a;
var url=_5a.attr(urlAttr);
}else{
if(_7a!==undefined&&urlAttr===undefined){
_23("no valid URL on object");
return;
}else{
_5b="doc";
var url=_2.href;
$(document).bind("hash:change",function(_7c){
_63("hash",_10(_2.hash));
});
}
}
}else{
if(!_6(_5a)){
_5b="str";
var url=_2.href;
}else{
_23("no valid item");
return;
}
}
_5d=parseUrl(url);
}();
return {attr:function(){
return _74(_5d,_63,arguments);
},param:function(){
return _74(_5d.params,_67,arguments);
},segment:function(){
return _74(_5d.segments,_6a,arguments);
},hashParam:function(){
return _74(_5d.hashParams,_6d,arguments);
},hashSegment:function(){
return _74(_5d.hashSegments,_70,arguments);
},is:function(_7d){
if(_7d==="internal"||_7d===":internal"){
return _5d.host&&_5d.host===_25(_2.hostname);
}else{
if(_7d==="external"||_7d===":external"){
return _5d.host&&_5d.host!==_25(_2.hostname);
}
}
},toString:function(){
return _5d.source;
}};
};
})(jQuery);

