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

