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