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

