/*
 * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010
 * http://benalman.com/projects/jquery-bbq-plugin/
 *
 * Copyright (c) 2010 "Cowboy" Ben Alman
 * Dual licensed under the MIT and GPL licenses.
 * http://benalman.com/about/license/
 */
(function($,P){var I,M=Array.prototype.slice,R=decodeURIComponent,A=$.param,C,L,V,B=$.bbq=$.bbq||{},Q,U,J,E=$.event.special,D="hashchange",a="querystring",d="fragment",Y="elemUrlAttr",G="location",K="href",T="src",X=/^.*\?|#.*$/g,W=/^.*\#/,H,c={};function e(f){return typeof f==="string"}function b(g){var f=M.call(arguments,1);return function(){return g.apply(this,f.concat(M.call(arguments)))}}function N(f){return f.replace(/^[^#]*#?(.*)$/,"$1")}function O(f){return f.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function F(h,m,f,i,g){var o,l,k,n,j;if(i!==I){k=f.match(h?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);j=k[3]||"";if(g===2&&e(i)){l=i.replace(h?W:X,"")}else{n=L(k[2]);i=e(i)?L[h?d:a](i):i;l=g===2?i:g===1?$.extend({},i,n):$.extend({},n,i);l=A(l);if(h){l=l.replace(H,R)}}o=k[1]+(h?"#":l||!k[1]?"?":"")+l+j}else{o=m(f!==I?f:P[G][K])}return o}A[a]=b(F,0,O);A[d]=C=b(F,1,N);C.noEscape=function(g){g=g||"";var f=$.map(g.split(""),encodeURIComponent);H=new RegExp(f.join("|"),"g")};C.noEscape(",/");$.deparam=L=function(i,f){var h={},g={"true":!0,"false":!1,"null":null};$.each(i.replace(/\+/g," ").split("&"),function(m,r){var l=r.split("="),q=R(l[0]),k,p=h,n=0,s=q.split("]["),o=s.length-1;if(/\[/.test(s[0])&&/\]$/.test(s[o])){s[o]=s[o].replace(/\]$/,"");s=s.shift().split("[").concat(s);o=s.length-1}else{o=0}if(l.length===2){k=R(l[1]);if(f){k=k&&!isNaN(k)?+k:k==="undefined"?I:g[k]!==I?g[k]:k}if(o){for(;n<=o;n++){q=s[n]===""?p.length:s[n];p=p[q]=n<o?p[q]||(s[n+1]&&isNaN(s[n+1])?{}:[]):k}}else{if($.isArray(h[q])){h[q].push(k)}else{if(h[q]!==I){h[q]=[h[q],k]}else{h[q]=k}}}}else{if(q){h[q]=f?I:""}}});return h};function Z(h,f,g){if(f===I||typeof f==="boolean"){g=f;f=A[h?d:a]()}else{f=e(f)?f.replace(h?W:X,""):f}return L(f,g)}L[a]=b(Z,0);L[d]=V=b(Z,1);$[Y]||($[Y]=function(f){return $.extend(c,f)})({a:K,base:K,iframe:T,img:T,input:T,form:"action",link:K,script:T});J=$[Y];function S(i,g,h,f){if(!e(h)&&typeof h!=="object"){f=h;h=g;g=I}return this.each(function(){var l=$(this),j=g||J()[(this.nodeName||"").toLowerCase()]||"",k=j&&l.attr(j)||"";l.attr(j,A[i](k,h,f))})}$.fn[a]=b(S,a);$.fn[d]=b(S,d);B.pushState=Q=function(i,f){if(e(i)&&/^#/.test(i)&&f===I){f=2}var h=i!==I,g=C(P[G][K],h?i:{},h?f:2);P[G][K]=g+(/#/.test(g)?"":"#")};B.getState=U=function(f,g){return f===I||typeof f==="boolean"?V(f):V(g)[f]};B.removeState=function(f){var g={};if(f!==I){g=U();$.each($.isArray(f)?f:arguments,function(j,h){delete g[h]})}Q(g,2)};E[D]=$.extend(E[D],{add:function(f){var h;function g(j){var i=j[d]=C();j.getState=function(k,l){return k===I||typeof k==="boolean"?L(i,k):L(i,l)[k]};h.apply(this,arguments)}if($.isFunction(f)){h=f;return g}else{h=f.handler;f.handler=g}}})})(jQuery,this);
/*
 * jQuery hashchange event - v1.2 - 2/11/2010
 * http://benalman.com/projects/jquery-hashchange-plugin/
 *
 * Copyright (c) 2010 "Cowboy" Ben Alman
 * Dual licensed under the MIT and GPL licenses.
 * http://benalman.com/about/license/
 */
(function($,I,B){var J,K=$.event.special,C="location",D="hashchange",L="href",F=$.browser,G=document.documentMode,H=F.msie&&(G===B||G<8),E="on"+D in I&&!H;function A(M){M=M||I[C][L];return M.replace(/^[^#]*#?(.*)$/,"$1")}$[D+"Delay"]=100;K[D]=$.extend(K[D],{setup:function(){if(E){return false}$(J.start)},teardown:function(){if(E){return false}$(J.stop)}});J=(function(){var M={},R,N,O,Q;function P(){O=Q=function(S){return S};if(H){N=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;Q=function(){return A(N.document[C][L])};O=function(U,S){if(U!==S){var T=N.document;T.open().close();T[C].hash="#"+U}};O(A())}}M.start=function(){if(R){return }var T=A();O||P();(function S(){var V=A(),U=Q(T);if(V!==T){O(T=V,U);$(I).trigger(D)}else{if(U!==T){I[C][L]=I[C][L].replace(/#.*/,"")+"#"+U}}R=setTimeout(S,$[D+"Delay"])})()};M.stop=function(){if(!N){R&&clearTimeout(R);R=0}};return M})()})(jQuery,this);
