;(function($,g){var h={a:'href',img:'src',form:'action',base:'href',script:'src',iframe:'src',link:'href'},key=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","fragment"],aliases={"anchor":"fragment"},parser={strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/},querystring_parser=/(?:^|&|;)([^&=;]*)=?([^&;]*)/g,fragment_parser=/(?:^|&|;)([^&=;]*)=?([^&;]*)/g;function parseUri(d,e){var f=decodeURI(d),res=parser[e||false?"strict":"loose"].exec(f),uri={attr:{},param:{},seg:{}},i=14;while(i--){uri.attr[key[i]]=res[i]||""}uri.param['query']={};uri.param['fragment']={};uri.attr['query'].replace(querystring_parser,function(a,b,c){if(b){uri.param['query'][b]=c}});uri.attr['fragment'].replace(fragment_parser,function(a,b,c){if(b){uri.param['fragment'][b]=c}});uri.seg['path']=uri.attr.path.replace(/^\/+|\/+$/g,'').split('/');uri.seg['fragment']=uri.attr.fragment.replace(/^\/+|\/+$/g,'').split('/');uri.attr['base']=uri.attr.host?uri.attr.protocol+"://"+uri.attr.host+(uri.attr.port?":"+uri.attr.port:''):'';return uri};function getAttrName(a){var b=a.tagName;if(b!==g)return h[b.toLowerCase()];return b}$.fn.url=function(a){var b='';if(this.length){b=$(this).attr(getAttrName(this[0]))||''}return $.url(b,a)};$.url=function(b,c){if(arguments.length===1&&b===true){c=true;b=g}c=c||false;b=b||window.location.toString();return{data:parseUri(b,c),attr:function(a){a=aliases[a]||a;return a!==g?this.data.attr[a]:this.data.attr},param:function(a){return a!==g?this.data.param.query[a]:this.data.param.query},fparam:function(a){return a!==g?this.data.param.fragment[a]:this.data.param.fragment},segment:function(a){if(a===g){return this.data.seg.path}else{a=a<0?this.data.seg.path.length+a:a-1;return this.data.seg.path[a]}},fsegment:function(a){if(a===g){return this.data.seg.fragment}else{a=a<0?this.data.seg.fragment.length+a:a-1;return this.data.seg.fragment[a]}}}}})(jQuery);
