/*
 * URL Utils - v1.11 - 9/10/2009
 * http://benalman.com/
 * 
 * Copyright (c) 2009 "Cowboy" Ben Alman
 * Licensed under the MIT license
 * http://benalman.com/about/license/
 */
(function($){var N,r={},o,E=this,x=true,L=false,F="onhashchange" in E,a=Array.prototype.slice,l=document.location,i,g,d,y,t,I,C,K,p="urlInternal",b="urlExternal",A="queryString",J="fragment",f="update",G="passQueryString",s="passFragment",e="fragmentChange",q="hashchange."+e,h,H;function k(O){return typeof O==="string"}function B(O){return typeof O==="object"}function n(){var O=a.call(arguments),P=O.shift();return function(){return P.apply(this,O.concat(a.call(arguments)))}}function m(){return l.href.replace(/^[^#]*#?/,"")}$.urlTagAttrList=i=function(O){return $.extend(r,O)};i({a:"href",img:"src",form:"action",base:"href",script:"src",iframe:"src",link:"href"});function v(O){var P=O.nodeName;return P?r[P.toLowerCase()]:""}$.urlInternalHost=g=function(Q){Q=Q?"(?:"+Q+"\\.)?":"";var O=new RegExp("^"+Q+"(.*)","i"),P="^"+l.protocol+"//"+l.hostname.replace(O,Q+"$1")+(l.port?":"+l.port:"")+"/";return d(P)};$.urlInternalRegExp=d=function(O){if(O){N=k(O)?new RegExp(O,"i"):O}return N};g("www");$.isUrlInternal=y=function(O){if(!O){return o}if(N.test(O)){return x}if(/^https?:\/\//i.test(O)){return L}if(/^(?:#|[a-z\d.-]+:)/i.test(O)){return o}return x};$.isUrlExternal=t=function(P){var O=y(P);return typeof O==="boolean"?!O:O};I=function(P,O){return this.filter(":"+P+(O?"("+O+")":""))};$.fn[p]=n(I,p);$.fn[b]=n(I,b);C=function(S,R,Q,P){var O=P[3]||v(R);return O?!!S($(R).attr(O)):L};$.expr[":"][p]=n(C,y);$.expr[":"][b]=n(C,t);function c(R,Q,P,O){var S;if(k(P)||B(P)){return z(Q,P,O,R)}else{if(B(Q)){return $.param(Q)}else{if(k(Q)){return D(Q,P,R)}else{S=R?m():l.search;return D(S,Q,R)}}}}$[A]=n(c,0);$[J]=n(c,1);function M(){var P,S,O,Q=a.call(arguments),R=Q.shift();if(k(Q[1])||B(Q[1])){P=Q.shift()}S=Q.shift();O=Q.shift();return this.each(function(){var V=$(this),T=P||v(this),U=T&&V.attr(T)||"";U=c(R,U,S,O);V.attr(T,U)})}$.fn[A]=n(M,0);$.fn[J]=n(M,1);function j(){var P=a.call(arguments),Q=P.shift(),O=P.shift(),R=c(Q);if($.isFunction(P[0])){R=P.shift()(R)}else{if($.isArray(P[0])){$.each(P.shift(),function(T,S){delete R[S]})}}return c(Q,O,R,P.shift())}$[G]=n(j,0);$[s]=n(j,1);function u(){var O,P=a.call(arguments),Q=P.shift();if(k(P[0])){O=P.shift()}return this.each(function(){var T=$(this),R=O||v(this),S=R&&T.attr(R)||"";S=j.apply(this,[Q,S].concat(P));T.attr(R,S)})}$.fn[G]=n(u,0);$.fn[s]=n(u,1);function D(R,Q,T){var O,W,P,S={},U={"null":null,"true":x,"false":L},V=decodeURIComponent,X=T?/^.*[#]/:/^.*[?]|#.*$/g;R=R.replace(X,"").replace(/\+/g," ").split("&");while(R.length){O=R.shift().split("=");W=V(O[0]);if(O.length===2){P=V(O[1]);if(Q){if(P&&!isNaN(P)){P=Number(P)}else{if(P==="undefined"){P=o}else{if(U[P]!==o){P=U[P]}}}}if($.isArray(S[W])){S[W].push(P)}else{if(S[W]!==o){S[W]=[S[W],P]}else{S[W]=P}}}else{if(W){S[W]=Q?o:""}}}return S}function z(O,Q,P,T){var U,W=T?/^([^#]*)[#]?(.*)$/:/^([^#?]*)[?]?([^#]*)(#?.*)/,S=O.match(W),V=D(S[2],0,T),R=S[3]||"";if(k(Q)){Q=D(Q,0,T)}if(P===2){U=Q}else{if(P===1){U=$.extend({},Q,V)}else{U=$.extend({},V,Q)}}U=$.param(U);return S[1]+(T?"#":U||!S[1]?"?":"")+U+R}$.setFragment=K=function(P,O){var Q=B(P)?c(x,P):(P||"").replace(/^#/,"");Q=P?z("#"+m(),"#"+Q,O,1):"#";l.href=l.href.replace(/#.*$/,"")+Q};$[e]=function(P){if(P===x){P=100}function O(){var R=$.Event(e);R[J]=m();$(document).trigger(R)}F&&$(E).unbind(q);h&&clearTimeout(h);h=null;if(typeof P==="number"){if(F){$(E).bind(q,O)}else{H=m();if($.isFunction(w)){w=w()}(function Q(){var S=m(),R=w[J](H);if(S!==H){w[f](S,R);H=S;O()}else{if(R!==H){K(R,2)}}h=setTimeout(Q,P<0?0:P)})()}}};function w(){var P,O=$.browser,Q={};Q[f]=Q[J]=function(R){return R};if(O.msie&&O.version<8){Q[f]=function(T,R){var S=P.document;if(T!==R){S.open();S.close();S.location.hash="#"+T}};Q[J]=function(){return P.document.location.hash.replace(/^#/,"")};P=$("<iframe/>").hide().appendTo("body").get(0).contentWindow;Q[f](m())}return Q}})(jQuery);
