/* * jQuery Address Plugin v1.4 * 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: 2011-05-04 14:22:12 +0300 (Wed, 04 May 2011) */ (function ($) { $.address = (function () { var _trigger = function(name) { $($.address).trigger( $.extend($.Event(name), (function() { var parameters = {}, parameterNames = $.address.parameterNames(); for (var i = 0, l = parameterNames.length; i < l; i++) { parameters[parameterNames[i]] = $.address.parameter(parameterNames[i]); } return { value: $.address.value(), path: $.address.path(), pathNames: $.address.pathNames(), parameterNames: parameterNames, parameters: parameters, queryString: $.address.queryString() }; }).call($.address) ) ); }, _bind = function(value, data, fn) { $().bind.apply($($.address), Array.prototype.slice.call(arguments)); return $.address; }, _supportsState = function() { return (_h.pushState && _opts.state !== UNDEFINED); }, _hrefState = function() { return ('/' + _l.pathname.replace(new RegExp(_opts.state), '') + _l.search + (_hrefHash() ? '#' + _hrefHash() : '')).replace(_re, '/'); }, _hrefHash = function() { var index = _l.href.indexOf('#'); return index != -1 ? _crawl(_l.href.substr(index + 1), FALSE) : ''; }, _href = function() { return _supportsState() ? _hrefState() : _hrefHash(); }, _window = function() { try { return top.document !== UNDEFINED ? top : window; } catch (e) { return window; } }, _js = function() { return 'javascript'; }, _strict = function(value) { value = value.toString(); return (_opts.strict && value.substr(0, 1) != '/' ? '/' : '') + value; }, _crawl = function(value, direction) { if (_opts.crawlable && direction) { return (value !== '' ? '!' : '') + value; } return value.replace(/^\!/, ''); }, _cssint = function(el, value) { return parseInt(el.css(value), 10); }, _search = function(el) { var url, s; for (var i = 0, l = el.childNodes.length; i < l; i++) { try { if ('src' in el.childNodes[i] && el.childNodes[i].src) { url = String(el.childNodes[i].src); } } catch (e) { // IE Invalid pointer problem with base64 encoded images } s = _search(el.childNodes[i]); if (s) { url = s; } } return url; }, _listen = function() { if (!_silent) { var hash = _href(), diff = _value != hash; if (diff) { if (_msie && _version < 7) { _l.reload(); } else { if (_msie && _version < 8 && _opts.history) { _st(_html, 50); } _value = hash; _update(FALSE); } } } }, _update = function(internal) { _trigger(CHANGE); _trigger(internal ? INTERNAL_CHANGE : EXTERNAL_CHANGE); _st(_track, 10); }, _track = function() { if (_opts.tracker !== 'null' && _opts.tracker !== null) { var fn = $.isFunction(_opts.tracker) ? _opts.tracker : _t[_opts.tracker], value = (_l.pathname + _l.search + ($.address && !_supportsState() ? $.address.value() : '')) .replace(/\/\//, '/').replace(/^\/$/, ''); if ($.isFunction(fn)) { fn(value); } else if ($.isFunction(_t.urchinTracker)) { _t.urchinTracker(value); } else if (_t.pageTracker !== UNDEFINED && $.isFunction(_t.pageTracker._trackPageview)) { _t.pageTracker._trackPageview(value); } else if (_t._gaq !== UNDEFINED && $.isFunction(_t._gaq.push)) { _t._gaq.push(['_trackPageview', decodeURI(value)]); } } }, _html = function() { var src = _js() + ':' + FALSE + ';document.open();document.writeln(\'' + _d.title.replace('\'', '\\\'') + '