/*
 * jQuery Address Plugin v1.4
 * http://www.asual.com/jquery/address/
 *
 * Copyright (c) 2009-2010 Rostislav Hristov
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * Date: 2011-05-04 14:22:12 +0300 (Wed, 04 May 2011)
 */
(function(d){d.address=function(){var s=function(a){d(d.address).trigger(d.extend(d.Event(a),function(){for(var a={},c=d.address.parameterNames(),F=0,e=c.length;F<e;F++)a[c[F]]=d.address.parameter(c[F]);return{value:d.address.value(),path:d.address.path(),pathNames:d.address.pathNames(),parameterNames:c,parameters:a,queryString:d.address.queryString()}}.call(d.address)))},t=function(){d().bind.apply(d(d.address),Array.prototype.slice.call(arguments));return d.address},q=function(){return("/"+f.pathname.replace(RegExp(c.state),
"")+f.search+(n()?"#"+n():"")).replace(N,"/")},n=function(){var a=f.href.indexOf("#");return a!=-1?x(f.href.substr(a+1),h):""},r=function(){return z.pushState&&c.state!==k?q():n()},I=function(a){a=a.toString();return(c.strict&&a.substr(0,1)!="/"?"/":"")+a},x=function(a,b){if(c.crawlable&&b)return(a!==""?"!":"")+a;return a.replace(/^\!/,"")},u=function(a,b){return parseInt(a.css(b),10)},O=function(a){for(var b,d,c=0,e=a.childNodes.length;c<e;c++){try{"src"in a.childNodes[c]&&a.childNodes[c].src&&(b=
String(a.childNodes[c].src))}catch(f){}(d=O(a.childNodes[c]))&&(b=d)}return b},B=function(){if(!G){var a=r();e!=a&&(v&&o<7?f.reload():(v&&o<8&&c.history&&p(J,50),e=a,A(h)))}},A=function(a){s(P);s(a?Q:R);p($,10)},$=function(){},J=function(){var a="javascript:"+h+";document.open();document.writeln('<html><head><title>"+g.title.replace("'","\\'")+"</title><script>var "+y+' = "'+encodeURIComponent(r())+(g.domain!=f.hostname?'";document.domain="'+g.domain:"")+"\";<\/script></head></html>');document.close();";
o<7?j.src=a:j.contentWindow.location.replace(a)},T=function(){if(C&&S!=-1){var a,b=C.substr(S+1).split("&");for(i=0;i<b.length;i++)a=b[i].split("="),/^(autoUpdate|crawlable|history|strict|wrap)$/.test(a[0])&&(c[a[0]]=isNaN(a[1])?/^(true|yes)$/i.test(a[1]):parseInt(a[1],10)!==0),/^(state|tracker)$/.test(a[0])&&(c[a[0]]=a[1]);C=null}e=r()},V=function(){if(!U){U=l;T();var a=function(){aa.call(this);ba.call(this)},b=d("body").ajaxComplete(a);a();c.wrap&&(d("body > *").wrapAll('<div style="padding:'+(u(b,
"marginTop")+u(b,"paddingTop"))+"px "+(u(b,"marginRight")+u(b,"paddingRight"))+"px "+(u(b,"marginBottom")+u(b,"paddingBottom"))+"px "+(u(b,"marginLeft")+u(b,"paddingLeft"))+'px;" />').parent().wrap('<div id="'+y+'" style="height:100%;overflow:auto;position:relative;'+(D&&!window.statusbar.visible?"resize:both;":"")+'" />'),d("html, body").css({height:"100%",margin:0,padding:0,overflow:"hidden"}),D&&d('<style type="text/css" />').appendTo("head").text("#"+y+"::-webkit-resizer { background-color: #fff; }"));
if(v&&o<8)a=g.getElementsByTagName("frameset")[0],j=g.createElement((a?"":"i")+"frame"),a?(a.insertAdjacentElement("beforeEnd",j),a[a.cols?"cols":"rows"]+=",0",j.noResize=l,j.frameBorder=j.frameSpacing=0):(j.style.display="none",j.style.width=j.style.height=0,j.tabIndex=-1,g.body.insertAdjacentElement("afterBegin",j)),p(function(){d(j).bind("load",function(){var a=j.contentWindow;e=a[y]!==k?a[y]:"";if(e!=r())A(h),f.hash=x(e,l)});j.contentWindow[y]===k&&J()},50);p(function(){s("init");A(h)},1);z.pushState&&
c.state!==k||(v&&o>7||!v&&"on"+E in m?m.addEventListener?m.addEventListener(E,B,h):m.attachEvent&&m.attachEvent("on"+E,B):ca(B,50))}},aa=function(){var a,b=d("a"),c=b.size(),e=-1,f=function(){++e!=c&&(a=d(b.get(e)),a.is('[rel*="address:"]')&&a.address(),p(f,1))};p(f,1)},da=function(){e!=r()&&(e=r(),A(h))},ea=function(){m.removeEventListener?m.removeEventListener(E,B,h):m.detachEvent&&m.detachEvent("on"+E,B)},ba=function(){if(c.crawlable){var a=f.pathname.replace(/\/$/,"");d("body").html().indexOf("_escaped_fragment_")!=
-1&&d('a[href]:not([href^=http]), a[href*="'+document.domain+'"]').each(function(){var b=d(this).attr("href").replace(/^http:/,"").replace(RegExp(a+"/?$"),"");(b===""||b.indexOf("_escaped_fragment_")!=-1)&&d(this).attr("href","#"+b.replace(/\/(.*)\?_escaped_fragment_=(.*)$/,"!$2"))})}},k,y="jQueryAddress",E="hashchange",P="change",Q="internalChange",R="externalChange",l=!0,h=!1,c={autoUpdate:l,crawlable:h,history:l,strict:l,wrap:h},w=d.browser,o=parseFloat(d.browser.version),W=w.mozilla,v=w.msie,
X=w.opera,D=w.webkit||w.safari,K=h,m;try{m=top.document!==k?top:window}catch(ga){m=window}var g=m.document,z=m.history,f=m.location,ca=setInterval,p=setTimeout,N=/\/{2,9}/g,w=navigator.userAgent,j,C=O(document),S=C?C.indexOf("?"):-1,L=g.title,G=h,U=h,M=l,Y=l,H=h,e=r();if(v){o=parseFloat(w.substr(w.indexOf("MSIE")+4));g.documentMode&&g.documentMode!=o&&(o=g.documentMode!=8?7:8);var Z=g.onpropertychange;g.onpropertychange=function(){Z&&Z.call(g);if(g.title!=L&&g.title.indexOf("#"+r())!=-1)g.title=L}}if(K=
W&&o>=1||v&&o>=6||X&&o>=9.5||D&&o>=523){if(X)history.navigationMode="compatible";if(document.readyState=="complete")var fa=setInterval(function(){d.address&&(V(),clearInterval(fa))},50);else T(),d(V);d(window).bind("popstate",da).bind("unload",ea)}else!K&&n()!==""&&f.replace(f.href.substr(0,f.href.indexOf("#")));return{bind:function(a,b,d){return t(a,b,d)},init:function(a){return t("init",a)},change:function(a){return t(P,a)},internalChange:function(a){return t(Q,a)},externalChange:function(a){return t(R,
a)},baseURL:function(){var a=f.href;a.indexOf("#")!=-1&&(a=a.substr(0,a.indexOf("#")));/\/$/.test(a)&&(a=a.substr(0,a.length-1));return a},autoUpdate:function(a){if(a!==k)return c.autoUpdate=a,this;return c.autoUpdate},crawlable:function(a){if(a!==k)return c.crawlable=a,this;return c.crawlable},history:function(a){if(a!==k)return c.history=a,this;return c.history},state:function(a){if(a!==k){c.state=a;var b=q();c.state!==k&&(z.pushState?b.substr(0,3)=="/#/"&&f.replace(c.state.replace(/^\/$/,"")+b.substr(2)):
b!="/"&&b.replace(/^\/#/,"")!=n()&&p(function(){f.replace(c.state.replace(/^\/$/,"")+"/#"+b)},1));return this}return c.state},strict:function(a){if(a!==k)return c.strict=a,this;return c.strict},tracker:function(a){if(a!==k)return c.tracker=a,this;return c.tracker},wrap:function(a){if(a!==k)return c.wrap=a,this;return c.wrap},update:function(){H=l;this.value(e);H=h;return this},title:function(a){if(a!==k)return p(function(){L=g.title=a;if(Y&&j&&j.contentWindow&&j.contentWindow.document)j.contentWindow.document.title=
a,Y=h;!M&&W&&f.replace(f.href.indexOf("#")!=-1?f.href:f.href+"#");M=h},50),this;return g.title},value:function(a){if(a!==k){a=I(a);a=="/"&&(a="");if(e==a&&!H)return;M=l;e=a;if(c.autoUpdate||H)if(A(l),z.pushState&&c.state!==k)z[c.history?"pushState":"replaceState"]({},"",c.state.replace(/\/$/,"")+(e===""?"/":e));else{G=l;if(D)c.history?f.hash="#"+x(e,l):f.replace("#"+x(e,l));else if(e!=r())c.history?f.hash="#"+x(e,l):f.replace("#"+x(e,l));v&&o<8&&c.history&&p(J,50);D?p(function(){G=h},1):G=h}return this}if(!K)return null;
return I(e)},path:function(a){if(a!==k){var b=this.queryString(),d=this.hash();this.value(a+(b?"?"+b:"")+(d?"#"+d:""));return this}return I(e).split("#")[0].split("?")[0]},pathNames:function(){var a=this.path(),b=a.replace(N,"/").split("/");(a.substr(0,1)=="/"||a.length===0)&&b.splice(0,1);a.substr(a.length-1,1)=="/"&&b.splice(b.length-1,1);return b},queryString:function(a){if(a!==k){var b=this.hash();this.value(this.path()+(a?"?"+a:"")+(b?"#"+b:""));return this}a=e.split("?");return a.slice(1,a.length).join("?").split("#")[0]},
parameter:function(a,b,c){var e,f;if(b!==k){var h=this.parameterNames();f=[];b=b?b.toString():"";for(e=0;e<h.length;e++){var j=h[e],g=this.parameter(j);typeof g=="string"&&(g=[g]);j==a&&(g=b===null||b===""?[]:c?g.concat([b]):[b]);for(var l=0;l<g.length;l++)f.push(j+"="+g[l])}d.inArray(a,h)==-1&&b!==null&&b!==""&&f.push(a+"="+b);this.queryString(f.join("&"));return this}if(b=this.queryString()){c=[];f=b.split("&");for(e=0;e<f.length;e++)b=f[e].split("="),b[0]==a&&c.push(b.slice(1).join("="));if(c.length!==
0)return c.length!=1?c:c[0]}},parameterNames:function(){var a=this.queryString(),b=[];if(a&&a.indexOf("=")!=-1)for(var a=a.split("&"),c=0;c<a.length;c++){var e=a[c].split("=")[0];d.inArray(e,b)==-1&&b.push(e)}return b},hash:function(a){if(a!==k)return this.value(e.split("#")[0]+(a?"#"+a:"")),this;a=e.split("#");return a.slice(1,a.length).join("#")}}}();d.fn.address=function(s){if(!d(this).attr("address")){var t=function(q){if(q.shiftKey||q.ctrlKey||q.metaKey)return!0;if(d(this).is("a")){var n=s?s.call(this):
/address:/.test(d(this).attr("rel"))?d(this).attr("rel").split("address:")[1].split(" ")[0]:d.address.state()!==void 0&&d.address.state()!="/"?d(this).attr("href").replace(RegExp("^(.*"+d.address.state()+"|\\.)"),""):d(this).attr("href").replace(/^(#\!?|\.)/,"");d.address.value(n);q.preventDefault()}};d(this).click(t).live("click",t).live("submit",function(q){if(d(this).is("form")){var n=d(this).attr("action"),n=s?s.call(this):(n.indexOf("?")!=-1?n.replace(/&$/,""):n+"?")+d(this).serialize();d.address.value(n);
q.preventDefault()}}).attr("address",!0)}return this}})(jQuery);
