if(!window.History.Adapter){
(typeof JSON!='object'&&(JSON={}),
(function (){
'use strict';
function f(e){
return e < 10 ? '0' + e:e;
}
function quote(e){
return (
(escapable.lastIndex=0),
escapable.test(e)
? '"' +
e.replace(escapable, function (e){
var t=meta[e];
return typeof t=='string' ? t:'\\u' + ('0000' + e.charCodeAt(0).toString(16)).slice(-4);
}) +
'"'
: '"' + e + '"'
);
}
function str(e, t){
var n,
r,
i,
s,
o=gap,
u,
a=t[e];
(a&&typeof a=='object'&&typeof a.toJSON=='function'&&(a=a.toJSON(e)), typeof rep=='function'&&(a=rep.call(t, e, a)));
switch (typeof a){
case 'string':
return quote(a);
case 'number':
return isFinite(a) ? String(a):'null';
case 'boolean':
case 'null':
return String(a);
case 'object':
if(!a) return 'null';
((gap +=indent), (u=[]));
if(Object.prototype.toString.apply(a)==='[object Array]'){
s=a.length;
for (n=0; n < s; n +=1) u[n]=str(n, a)||'null';
return ((i=u.length===0 ? '[]':gap ? '[\n' + gap + u.join(',\n' + gap) + '\n' + o + ']':'[' + u.join(',') + ']'), (gap=o), i);
}
if(rep&&typeof rep=='object'){
s=rep.length;
for (n=0; n < s; n +=1) typeof rep[n]=='string'&&((r=rep[n]), (i=str(r, a)), i&&u.push(quote(r) + (gap ? ': ':':') + i));
} else for (r in a) Object.prototype.hasOwnProperty.call(a, r)&&((i=str(r, a)), i&&u.push(quote(r) + (gap ? ': ':':') + i));
return ((i=u.length===0 ? '{}':gap ? '{\n' + gap + u.join(',\n' + gap) + '\n' + o + '}':'{' + u.join(',') + '}'), (gap=o), i);
}}
typeof Date.prototype.toJSON!='function' &&
((Date.prototype.toJSON=function (e){
return isFinite(this.valueOf()) ? this.getUTCFullYear() + '-' + f(this.getUTCMonth() + 1) + '-' + f(this.getUTCDate()) + 'T' + f(this.getUTCHours()) + ':' + f(this.getUTCMinutes()) + ':' + f(this.getUTCSeconds()) + 'Z':null;
}),
(String.prototype.toJSON =
Number.prototype.toJSON =
Boolean.prototype.toJSON =
function (e){
return this.valueOf();
}));
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
gap,
indent,
meta={ '\b': '\\b', '	': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"': '\\"', '\\': '\\\\' },
rep;
(typeof JSON.stringify!='function' &&
(JSON.stringify=function (e, t, n){
var r;
((gap=''), (indent=''));
if(typeof n=='number') for (r=0; r < n; r +=1) indent +=' ';
else typeof n=='string'&&(indent=n);
rep=t;
if(!t||typeof t=='function'||(typeof t=='object'&&typeof t.length=='number')) return str('', { '': e });
throw new Error('JSON.stringify');
}),
typeof JSON.parse!='function' &&
(JSON.parse=function (text, reviver){
function walk(e, t){
var n,
r,
i=e[t];
if(i&&typeof i=='object') for (n in i) Object.prototype.hasOwnProperty.call(i, n)&&((r=walk(i, n)), r!==undefined ? (i[n]=r):delete i[n]);
return reviver.call(e, t, i);
}
var j;
((text=String(text)),
(cx.lastIndex=0),
cx.test(text) &&
(text=text.replace(cx, function (e){
return '\\u' + ('0000' + e.charCodeAt(0).toString(16)).slice(-4);
})));
if(/^[\],:{}\s]*$/.test(text
.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
.replace(/(?:^|:|,)(?:\s*\[)+/g, '')
)
)
return ((j=eval('(' + text + ')')), typeof reviver=='function' ? walk({ '': j }, ''):j);
throw new SyntaxError('JSON.parse');
}));
})(),
(function (e, t){
'use strict';
var n=(e.History=e.History||{}),
r=e.jQuery;
if(typeof n.Adapter!='undefined') throw new Error('History.js Adapter has already been loaded...');
((n.Adapter={
bind: function (e, t, n){
r(e).bind(t, n);
},
trigger: function (e, t, n){
r(e).trigger(t, n);
},
extractEventData: function (e, n, r){
var i=(n&&n.originalEvent&&n.originalEvent[e])||(r&&r[e])||t;
return i;
},
onDomLoad: function (e){
r(e);
},
}),
typeof n.init!='undefined'&&n.init());
})(window),
(function (e, t){
'use strict';
var n=e.document,
r=e.setTimeout||r,
i=e.clearTimeout||i,
s=e.setInterval||s,
o=(e.History=e.History||{});
if(typeof o.initHtml4!='undefined') throw new Error('History.js HTML4 Support has already been loaded...');
((o.initHtml4=function (){
if(typeof o.initHtml4.initialized!='undefined') return !1;
((o.initHtml4.initialized = !0),
(o.enabled = !0),
(o.savedHashes=[]),
(o.isLastHash=function (e){
var t=o.getHashByIndex(),
n;
return ((n=e===t), n);
}),
(o.isHashEqual=function (e, t){
return ((e=encodeURIComponent(e).replace(/%25/g, '%')), (t=encodeURIComponent(t).replace(/%25/g, '%')), e===t);
}),
(o.saveHash=function (e){
return o.isLastHash(e) ? !1:(o.savedHashes.push(e), !0);
}),
(o.getHashByIndex=function (e){
var t=null;
return (typeof e=='undefined' ? (t=o.savedHashes[o.savedHashes.length - 1]):e < 0 ? (t=o.savedHashes[o.savedHashes.length + e]):(t=o.savedHashes[e]), t);
}),
(o.discardedHashes={}),
(o.discardedStates={}),
(o.discardState=function (e, t, n){
var r=o.getHashByState(e),
i;
return ((i={ discardedState: e, backState: n, forwardState: t }), (o.discardedStates[r]=i), !0);
}),
(o.discardHash=function (e, t, n){
var r={ discardedHash: e, backState: n, forwardState: t };
return ((o.discardedHashes[e]=r), !0);
}),
(o.discardedState=function (e){
var t=o.getHashByState(e),
n;
return ((n=o.discardedStates[t]||!1), n);
}),
(o.discardedHash=function (e){
var t=o.discardedHashes[e]||!1;
return t;
}),
(o.recycleState=function (e){
var t=o.getHashByState(e);
return (o.discardedState(e)&&delete o.discardedStates[t], !0);
}),
o.emulated.hashChange &&
((o.hashChangeInit=function (){
o.checkerFunction=null;
var t='',
r,
i,
u,
a,
f=Boolean(o.getHash());
return (
o.isInternetExplorer()
? ((r='historyjs-iframe'),
(i=n.createElement('iframe')),
i.setAttribute('id', r),
i.setAttribute('src', '#'),
(i.style.display='none'),
n.body.appendChild(i),
i.contentWindow.document.open(),
i.contentWindow.document.close(),
(u=''),
(a = !1),
(o.checkerFunction=function (){
if(a) return !1;
a = !0;
var n=o.getHash(),
r=o.getHash(i.contentWindow.document);
return (
n!==t
? ((t=n), r!==n&&((u=r = n), i.contentWindow.document.open(), i.contentWindow.document.close(), (i.contentWindow.document.location.hash=o.escapeHash(n))), o.Adapter.trigger(e, 'hashchange'))
: r!==u&&((u=r), f&&r==='' ? o.back():o.setHash(r, !1)),
(a = !1),
!0
);
}))
: (o.checkerFunction=function (){
var n=o.getHash()||'';
return (n!==t&&((t=n), o.Adapter.trigger(e, 'hashchange')), !0);
}),
o.intervalList.push(s(o.checkerFunction, o.options.hashChangeInterval)),
!0
);
}),
o.Adapter.onDomLoad(o.hashChangeInit)),
o.emulated.pushState &&
((o.onHashChange=function (t){
var n=(t&&t.newURL)||o.getLocationHref(),
r=o.getHashByUrl(n),
i=null,
s=null,
u=null,
a;
return o.isLastHash(r)
? (o.busy(!1), !1)
: (o.doubleCheckComplete(),
o.saveHash(r),
r&&o.isTraditionalAnchor(r)
? (o.Adapter.trigger(e, 'anchorchange'), o.busy(!1), !1)
: ((i=o.extractState(o.getFullUrl(r||o.getLocationHref()), !0)),
o.isLastSavedState(i) ? (o.busy(!1), !1):((s=o.getHashByState(i)), (a=o.discardedState(i)), a ? (o.getHashByIndex(-2)===o.getHashByState(a.forwardState) ? o.back(!1):o.forward(!1), !1):(o.pushState(i.data, i.title, encodeURI(i.url), !1), !0))));
}),
o.Adapter.bind(e, 'hashchange', o.onHashChange),
(o.pushState=function (t, n, r, i){
r=encodeURI(r).replace(/%25/g, '%');
if(o.getHashByUrl(r)) throw new Error('History.js does not support states with fragment-identifiers (hashes/anchors).');
if(i!==!1&&o.busy()) return (o.pushQueue({ scope: o, callback: o.pushState, args: arguments, queue: i }), !1);
o.busy(!0);
var s=o.createStateObject(t, n, r),
u=o.getHashByState(s),
a=o.getState(!1),
f=o.getHashByState(a),
l=o.getHash(),
c=o.expectedStateId==s.id;
return (
o.storeState(s),
(o.expectedStateId=s.id),
o.recycleState(s),
o.setTitle(s),
u===f ? (o.busy(!1), !1):(o.saveState(s), c||o.Adapter.trigger(e, 'statechange'), !o.isHashEqual(u, l)&&!o.isHashEqual(u, o.getShortUrl(o.getLocationHref()))&&o.setHash(u, !1), o.busy(!1), !0)
);
}),
(o.replaceState=function (t, n, r, i){
r=encodeURI(r).replace(/%25/g, '%');
if(o.getHashByUrl(r)) throw new Error('History.js does not support states with fragment-identifiers (hashes/anchors).');
if(i!==!1&&o.busy()) return (o.pushQueue({ scope: o, callback: o.replaceState, args: arguments, queue: i }), !1);
o.busy(!0);
var s=o.createStateObject(t, n, r),
u=o.getHashByState(s),
a=o.getState(!1),
f=o.getHashByState(a),
l=o.getStateByIndex(-2);
return (o.discardState(a, s, l), u===f ? (o.storeState(s), (o.expectedStateId=s.id), o.recycleState(s), o.setTitle(s), o.saveState(s), o.Adapter.trigger(e, 'statechange'), o.busy(!1)):o.pushState(s.data, s.title, s.url, !1), !0);
})),
o.emulated.pushState &&
o.getHash() &&
!o.emulated.hashChange &&
o.Adapter.onDomLoad(function (){
o.Adapter.trigger(e, 'hashchange');
}));
}),
typeof o.init!='undefined'&&o.init());
})(window),
(function (e, t){
'use strict';
var n=e.console||t,
r=e.document,
i=e.navigator,
s = !1,
o=e.setTimeout,
u=e.clearTimeout,
a=e.setInterval,
f=e.clearInterval,
l=e.JSON,
c=e.alert,
h=(e.History=e.History||{}),
p=e.history;
try {
((s=e.sessionStorage), s.setItem('TEST', '1'), s.removeItem('TEST'));
} catch (d){
s = !1;
}
((l.stringify=l.stringify||l.encode), (l.parse=l.parse||l.decode));
if(typeof h.init!='undefined') throw new Error('History.js Core has already been loaded...');
((h.init=function (e){
return typeof h.Adapter=='undefined' ? !1:(typeof h.initCore!='undefined'&&h.initCore(), typeof h.initHtml4!='undefined'&&h.initHtml4(), !0);
}),
(h.initCore=function (d){
if(typeof h.initCore.initialized!='undefined') return !1;
((h.initCore.initialized = !0),
(h.options=h.options||{}),
(h.options.hashChangeInterval=h.options.hashChangeInterval||100),
(h.options.safariPollInterval=h.options.safariPollInterval||500),
(h.options.doubleCheckInterval=h.options.doubleCheckInterval||500),
(h.options.disableSuid=h.options.disableSuid||!1),
(h.options.storeInterval=h.options.storeInterval||1e3),
(h.options.busyDelay=h.options.busyDelay||250),
(h.options.debug=h.options.debug||!1),
(h.options.initialTitle=h.options.initialTitle||r.title),
(h.options.html4Mode=h.options.html4Mode||!1),
(h.options.delayInit=h.options.delayInit||!1),
(h.intervalList=[]),
(h.clearAllIntervals=function (){
var e,
t=h.intervalList;
if(typeof t!='undefined'&&t!==null){
for (e=0; e < t.length; e++) f(t[e]);
h.intervalList=null;
}}),
(h.debug=function (){
(h.options.debug||!1)&&h.log.apply(h, arguments);
}),
(h.log=function (){
var e=typeof n!='undefined'&&typeof n.log!='undefined'&&typeof n.log.apply!='undefined',
t=r.getElementById('log'),
i,
s,
o,
u,
a;
e ? ((u=Array.prototype.slice.call(arguments)), (i=u.shift()), typeof n.debug!='undefined' ? n.debug.apply(n, [i, u]):n.log.apply(n, [i, u])):(i='\n' + arguments[0] + '\n');
for (s=1, o=arguments.length; s < o; ++s){
a=arguments[s];
if(typeof a=='object'&&typeof l!='undefined')
try {
a=l.stringify(a);
} catch (f){}
i +='\n' + a + '\n';
}
return (t ? ((t.value +=i + '\n-----\n'), (t.scrollTop=t.scrollHeight - t.clientHeight)):e||c(i), !0);
}),
(h.getInternetExplorerMajorVersion=function (){
var e=(h.getInternetExplorerMajorVersion.cached =
typeof h.getInternetExplorerMajorVersion.cached!='undefined'
? h.getInternetExplorerMajorVersion.cached
: (function (){
var e=3,
t=r.createElement('div'),
n=t.getElementsByTagName('i');
while ((t.innerHTML='<!--[if gt IE ' + ++e + ']><i></i><![endif]-->')&&n[0]);
return e > 4 ? e:!1;
})());
return e;
}),
(h.isInternetExplorer=function (){
var e=(h.isInternetExplorer.cached=typeof h.isInternetExplorer.cached!='undefined' ? h.isInternetExplorer.cached:Boolean(h.getInternetExplorerMajorVersion()));
return e;
}),
h.options.html4Mode
? (h.emulated={ pushState: !0, hashChange: !0 })
: (h.emulated={
pushState: !Boolean(e.history&&e.history.pushState&&e.history.replaceState&&!/ Mobile\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i.test(i.userAgent)&&!/AppleWebKit\/5([0-2]|3[0-2])/i.test(i.userAgent)),
hashChange: Boolean(!('onhashchange' in e||'onhashchange' in r)||(h.isInternetExplorer()&&h.getInternetExplorerMajorVersion() < 8)),
}),
(h.enabled = !h.emulated.pushState),
(h.bugs={
setHash: Boolean(!h.emulated.pushState&&i.vendor==='Apple Computer, Inc.'&&/AppleWebKit\/5([0-2]|3[0-3])/.test(i.userAgent)),
safariPoll: Boolean(!h.emulated.pushState&&i.vendor==='Apple Computer, Inc.'&&/AppleWebKit\/5([0-2]|3[0-3])/.test(i.userAgent)),
ieDoubleCheck: Boolean(h.isInternetExplorer()&&h.getInternetExplorerMajorVersion() < 8),
hashEscape: Boolean(h.isInternetExplorer()&&h.getInternetExplorerMajorVersion() < 7),
}),
(h.isEmptyObject=function (e){
for (var t in e) if(e.hasOwnProperty(t)) return !1;
return !0;
}),
(h.cloneObject=function (e){
var t, n;
return (e ? ((t=l.stringify(e)), (n=l.parse(t))):(n={}), n);
}),
(h.getRootUrl=function (){
var e=r.location.protocol + '//' + (r.location.hostname||r.location.host);
if(r.location.port||!1) e +=':' + r.location.port;
return ((e +='/'), e);
}),
(h.getBaseHref=function (){
var e=r.getElementsByTagName('base'),
t=null,
n='';
return (e.length===1&&((t=e[0]), (n=t.href.replace(/[^\/]+$/, ''))), (n=n.replace(/\/+$/, '')), n&&(n +='/'), n);
}),
(h.getBaseUrl=function (){
var e=h.getBaseHref()||h.getBasePageUrl()||h.getRootUrl();
return e;
}),
(h.getPageUrl=function (){
var e=h.getState(!1, !1),
t=(e||{}).url||h.getLocationHref(),
n;
return (
(n=t.replace(/\/+$/, '').replace(/[^\/]+$/, function (e, t, n){
return /\./.test(e) ? e:e + '/';
})),
n
);
}),
(h.getBasePageUrl=function (){
var e =
h
.getLocationHref()
.replace(/[#\?].*/, '')
.replace(/[^\/]+$/, function (e, t, n){
return /[^\/]$/.test(e) ? '':e;
})
.replace(/\/+$/, '') + '/';
return e;
}),
(h.getFullUrl=function (e, t){
var n=e,
r=e.substring(0, 1);
return (
(t=typeof t=='undefined' ? !0:t),
/[a-z]+\:\/\//.test(e) ||
(r==='/'
? (n=h.getRootUrl() + e.replace(/^\/+/, ''))
: r==='#'
? (n=h.getPageUrl().replace(/#.*/, '') + e)
: r==='?'
? (n=h.getPageUrl().replace(/[\?#].*/, '') + e)
: t
? (n=h.getBaseUrl() + e.replace(/^(\.\/)+/, ''))
: (n=h.getBasePageUrl() + e.replace(/^(\.\/)+/, ''))),
n.replace(/\#$/, '')
);
}),
(h.getShortUrl=function (e){
var t=e,
n=h.getBaseUrl(),
r=h.getRootUrl();
return (h.emulated.pushState&&(t=t.replace(n, '')), (t=t.replace(r, '/')), h.isTraditionalAnchor(t)&&(t='./' + t), (t=t.replace(/^(\.\/)+/g, './').replace(/\#$/, '')), t);
}),
(h.getLocationHref=function (e){
return (
(e=e||r),
e.URL===e.location.href
? e.location.href
: e.location.href===decodeURIComponent(e.URL)
? e.URL
: e.location.hash&&decodeURIComponent(e.location.href.replace(/^[^#]+/, ''))===e.location.hash
? e.location.href
: e.URL.indexOf('#')==-1&&e.location.href.indexOf('#')!=-1
? e.location.href
: e.URL||e.location.href
);
}),
(h.store={}),
(h.idToState=h.idToState||{}),
(h.stateToId=h.stateToId||{}),
(h.urlToId=h.urlToId||{}),
(h.storedStates=h.storedStates||[]),
(h.savedStates=h.savedStates||[]),
(h.normalizeStore=function (){
((h.store.idToState=h.store.idToState||{}), (h.store.urlToId=h.store.urlToId||{}), (h.store.stateToId=h.store.stateToId||{}));
}),
(h.getState=function (e, t){
(typeof e=='undefined'&&(e = !0), typeof t=='undefined'&&(t = !0));
var n=h.getLastSavedState();
return (!n&&t && (n=h.createStateObject()), e&&((n=h.cloneObject(n)), (n.url=n.cleanUrl||n.url)), n);
}),
(h.getIdByState=function (e){
var t=h.extractId(e.url),
n;
if(!t){
n=h.getStateString(e);
if(typeof h.stateToId[n]!='undefined') t=h.stateToId[n];
else if(typeof h.store.stateToId[n]!='undefined') t=h.store.stateToId[n];
else {
for (;;){
t=new Date().getTime() + String(Math.random()).replace(/\D/g, '');
if(typeof h.idToState[t]=='undefined'&&typeof h.store.idToState[t]=='undefined') break;
}
((h.stateToId[n]=t), (h.idToState[t]=e));
}}
return t;
}),
(h.normalizeState=function (e){
var t, n;
if(!e||typeof e!='object') e={};
if(typeof e.normalized!='undefined') return e;
if(!e.data||typeof e.data!='object') e.data={};
return (
(t={}),
(t.normalized = !0),
(t.title=e.title||''),
(t.url=h.getFullUrl(e.url ? e.url:h.getLocationHref())),
(t.hash=h.getShortUrl(t.url)),
(t.data=h.cloneObject(e.data)),
(t.id=h.getIdByState(t)),
(t.cleanUrl=t.url.replace(/\??\&_suid.*/, '')),
(t.url=t.cleanUrl),
(n = !h.isEmptyObject(t.data)),
(t.title||n)&&h.options.disableSuid!==!0&&((t.hash=h.getShortUrl(t.url).replace(/\??\&_suid.*/, '')), /\?/.test(t.hash)||(t.hash +='?'), (t.hash +='&_suid=' + t.id)),
(t.hashedUrl=h.getFullUrl(t.hash)),
(h.emulated.pushState||h.bugs.safariPoll)&&h.hasUrlDuplicate(t)&&(t.url=t.hashedUrl),
t
);
}),
(h.createStateObject=function (e, t, n){
var r={ data: e, title: t, url: n };
return ((r=h.normalizeState(r)), r);
}),
(h.getStateById=function (e){
e=String(e);
var n=h.idToState[e]||h.store.idToState[e]||t;
return n;
}),
(h.getStateString=function (e){
var t, n, r;
return ((t=h.normalizeState(e)), (n={ data: t.data, title: e.title, url: e.url }), (r=l.stringify(n)), r);
}),
(h.getStateId=function (e){
var t, n;
return ((t=h.normalizeState(e)), (n=t.id), n);
}),
(h.getHashByState=function (e){
var t, n;
return ((t=h.normalizeState(e)), (n=t.hash), n);
}),
(h.extractId=function (e){
var t, n, r, i;
return (e.indexOf('#')!=-1 ? (i=e.split('#')[0]):(i=e), (n=/(.*)\&_suid=([0-9]+)$/.exec(i)), (r=n ? n[1]||e:e), (t=n ? String(n[2]||''):''), t||!1);
}),
(h.isTraditionalAnchor=function (e){
var t = !/[\/\?\.]/.test(e);
return t;
}),
(h.extractState=function (e, t){
var n=null,
r,
i;
return ((t=t||!1), (r=h.extractId(e)), r&&(n=h.getStateById(r)), n||((i=h.getFullUrl(e)), (r=h.getIdByUrl(i)||!1), r&&(n=h.getStateById(r)), !n&&t && !h.isTraditionalAnchor(e)&&(n=h.createStateObject(null, null, i))), n);
}),
(h.getIdByUrl=function (e){
var n=h.urlToId[e]||h.store.urlToId[e]||t;
return n;
}),
(h.getLastSavedState=function (){
return h.savedStates[h.savedStates.length - 1]||t;
}),
(h.getLastStoredState=function (){
return h.storedStates[h.storedStates.length - 1]||t;
}),
(h.hasUrlDuplicate=function (e){
var t = !1,
n;
return ((n=h.extractState(e.url)), (t=n&&n.id!==e.id), t);
}),
(h.storeState=function (e){
return ((h.urlToId[e.url]=e.id), h.storedStates.push(h.cloneObject(e)), e);
}),
(h.isLastSavedState=function (e){
var t = !1,
n,
r,
i;
return (h.savedStates.length&&((n=e.id), (r=h.getLastSavedState()), (i=r.id), (t=n===i)), t);
}),
(h.saveState=function (e){
return h.isLastSavedState(e) ? !1:(h.savedStates.push(h.cloneObject(e)), !0);
}),
(h.getStateByIndex=function (e){
var t=null;
return (typeof e=='undefined' ? (t=h.savedStates[h.savedStates.length - 1]):e < 0 ? (t=h.savedStates[h.savedStates.length + e]):(t=h.savedStates[e]), t);
}),
(h.getCurrentIndex=function (){
var e=null;
return (h.savedStates.length < 1 ? (e=0):(e=h.savedStates.length - 1), e);
}),
(h.getHash=function (e){
var t=h.getLocationHref(e),
n;
return ((n=h.getHashByUrl(t)), n);
}),
(h.unescapeHash=function (e){
var t=h.normalizeHash(e);
return ((t=decodeURIComponent(t)), t);
}),
(h.normalizeHash=function (e){
var t=e.replace(/[^#]*#/, '').replace(/#.*/, '');
return t;
}),
(h.setHash=function (e, t){
var n, i;
return t!==!1&&h.busy()
? (h.pushQueue({ scope: h, callback: h.setHash, args: arguments, queue: t }), !1)
: (h.busy(!0), (n=h.extractState(e, !0)), n&&!h.emulated.pushState ? h.pushState(n.data, n.title, n.url, !1):h.getHash()!==e&&(h.bugs.setHash ? ((i=h.getPageUrl()), h.pushState(null, null, i + '#' + e, !1)):(r.location.hash=e)), h);
}),
(h.escapeHash=function (t){
var n=h.normalizeHash(t);
return ((n=e.encodeURIComponent(n)), h.bugs.hashEscape||(n=n.replace(/\%21/g, '!').replace(/\%26/g, '&').replace(/\%3D/g, '=').replace(/\%3F/g, '?')), n);
}),
(h.getHashByUrl=function (e){
var t=String(e).replace(/([^#]*)#?([^#]*)#?(.*)/, '$2');
return ((t=h.unescapeHash(t)), t);
}),
(h.setTitle=function (e){
var t=e.title,
n;
t||((n=h.getStateByIndex(0)), n&&n.url===e.url&&(t=n.title||h.options.initialTitle));
try {
r.getElementsByTagName('title')[0].innerHTML=t.replace('<', '&lt;').replace('>', '&gt;').replace(' & ', ' &amp; ');
} catch (i){}
return ((r.title=t), h);
}),
(h.queues=[]),
(h.busy=function (e){
typeof e!='undefined' ? (h.busy.flag=e):typeof h.busy.flag=='undefined'&&(h.busy.flag = !1);
if(!h.busy.flag){
u(h.busy.timeout);
var t=function (){
var e, n, r;
if(h.busy.flag) return;
for (e=h.queues.length - 1; e >=0; --e){
n=h.queues[e];
if(n.length===0) continue;
((r=n.shift()), h.fireQueueItem(r), (h.busy.timeout=o(t, h.options.busyDelay)));
}};
h.busy.timeout=o(t, h.options.busyDelay);
}
return h.busy.flag;
}),
(h.busy.flag = !1),
(h.fireQueueItem=function (e){
return e.callback.apply(e.scope||h, e.args||[]);
}),
(h.pushQueue=function (e){
return ((h.queues[e.queue||0]=h.queues[e.queue||0]||[]), h.queues[e.queue||0].push(e), h);
}),
(h.queue=function (e, t){
return (typeof e=='function'&&(e={ callback: e }), typeof t!='undefined'&&(e.queue=t), h.busy() ? h.pushQueue(e):h.fireQueueItem(e), h);
}),
(h.clearQueue=function (){
return ((h.busy.flag = !1), (h.queues=[]), h);
}),
(h.stateChanged = !1),
(h.doubleChecker = !1),
(h.doubleCheckComplete=function (){
return ((h.stateChanged = !0), h.doubleCheckClear(), h);
}),
(h.doubleCheckClear=function (){
return (h.doubleChecker&&(u(h.doubleChecker), (h.doubleChecker = !1)), h);
}),
(h.doubleCheck=function (e){
return (
(h.stateChanged = !1),
h.doubleCheckClear(),
h.bugs.ieDoubleCheck &&
(h.doubleChecker=o(function (){
return (h.doubleCheckClear(), h.stateChanged||e(), !0);
}, h.options.doubleCheckInterval)),
h
);
}),
(h.safariStatePoll=function (){
var t=h.extractState(h.getLocationHref()),
n;
if(!h.isLastSavedState(t)) return ((n=t), n||(n=h.createStateObject()), h.Adapter.trigger(e, 'popstate'), h);
return;
}),
(h.back=function (e){
return e!==!1&&h.busy()
? (h.pushQueue({ scope: h, callback: h.back, args: arguments, queue: e }), !1)
: (h.busy(!0),
h.doubleCheck(function (){
h.back(!1);
}),
p.go(-1),
!0);
}),
(h.forward=function (e){
return e!==!1&&h.busy()
? (h.pushQueue({ scope: h, callback: h.forward, args: arguments, queue: e }), !1)
: (h.busy(!0),
h.doubleCheck(function (){
h.forward(!1);
}),
p.go(1),
!0);
}),
(h.go=function (e, t){
var n;
if(e > 0) for (n=1; n <=e; ++n) h.forward(t);
else {
if(!(e < 0)) throw new Error('History.go: History.go requires a positive or negative integer passed.');
for (n=-1; n >=e; --n) h.back(t);
}
return h;
}));
if(h.emulated.pushState){
var v=function (){};
((h.pushState=h.pushState||v), (h.replaceState=h.replaceState||v));
} else
((h.onPopState=function (t, n){
var r = !1,
i = !1,
s,
o;
return (
h.doubleCheckComplete(),
(s=h.getHash()),
s
? ((o=h.extractState(s||h.getLocationHref(), !0)), o ? h.replaceState(o.data, o.title, o.url, !1):(h.Adapter.trigger(e, 'anchorchange'), h.busy(!1)), (h.expectedStateId = !1), !1)
: ((r=h.Adapter.extractEventData('state', t, n)||!1),
r ? (i=h.getStateById(r)):h.expectedStateId ? (i=h.getStateById(h.expectedStateId)):(i=h.extractState(h.getLocationHref())),
i||(i=h.createStateObject(null, null, h.getLocationHref())),
(h.expectedStateId = !1),
h.isLastSavedState(i) ? (h.busy(!1), !1):(h.storeState(i), h.saveState(i), h.setTitle(i), h.Adapter.trigger(e, 'statechange'), h.busy(!1), !0))
);
}),
h.Adapter.bind(e, 'popstate', h.onPopState),
(h.pushState=function (t, n, r, i){
if(h.getHashByUrl(r)&&h.emulated.pushState) throw new Error('History.js does not support states with fragement-identifiers (hashes/anchors).');
if(i!==!1&&h.busy()) return (h.pushQueue({ scope: h, callback: h.pushState, args: arguments, queue: i }), !1);
h.busy(!0);
var s=h.createStateObject(t, n, r);
return (h.isLastSavedState(s) ? h.busy(!1):(h.storeState(s), (h.expectedStateId=s.id), p.pushState(s.id, s.title, s.url), h.Adapter.trigger(e, 'popstate')), !0);
}),
(h.replaceState=function (t, n, r, i){
if(h.getHashByUrl(r)&&h.emulated.pushState) throw new Error('History.js does not support states with fragement-identifiers (hashes/anchors).');
if(i!==!1&&h.busy()) return (h.pushQueue({ scope: h, callback: h.replaceState, args: arguments, queue: i }), !1);
h.busy(!0);
var s=h.createStateObject(t, n, r);
return (h.isLastSavedState(s) ? h.busy(!1):(h.storeState(s), (h.expectedStateId=s.id), p.replaceState(s.id, s.title, s.url), h.Adapter.trigger(e, 'popstate')), !0);
}));
if(s){
try {
h.store=l.parse(s.getItem('History.store'))||{};} catch (m){
h.store={};}
h.normalizeStore();
} else ((h.store={}), h.normalizeStore());
(h.Adapter.bind(e, 'unload', h.clearAllIntervals),
h.saveState(h.storeState(h.extractState(h.getLocationHref(), !0))),
s &&
((h.onUnload=function (){
var e, t, n;
try {
e=l.parse(s.getItem('History.store'))||{};} catch (r){
e={};}
((e.idToState=e.idToState||{}), (e.urlToId=e.urlToId||{}), (e.stateToId=e.stateToId||{}));
for (t in h.idToState){
if(!h.idToState.hasOwnProperty(t)) continue;
e.idToState[t]=h.idToState[t];
}
for (t in h.urlToId){
if(!h.urlToId.hasOwnProperty(t)) continue;
e.urlToId[t]=h.urlToId[t];
}
for (t in h.stateToId){
if(!h.stateToId.hasOwnProperty(t)) continue;
e.stateToId[t]=h.stateToId[t];
}
((h.store=e), h.normalizeStore(), (n=l.stringify(e)));
try {
s.setItem('History.store', n);
} catch (i){
if(i.code!==DOMException.QUOTA_EXCEEDED_ERR) throw i;
s.length&&(s.removeItem('History.store'), s.setItem('History.store', n));
}}),
h.intervalList.push(a(h.onUnload, h.options.storeInterval)),
h.Adapter.bind(e, 'beforeunload', h.onUnload),
h.Adapter.bind(e, 'unload', h.onUnload)));
if(!h.emulated.pushState){
h.bugs.safariPoll&&h.intervalList.push(a(h.safariStatePoll, h.options.safariPollInterval));
if(i.vendor==='Apple Computer, Inc.'||(i.appCodeName||'')==='Mozilla')
(h.Adapter.bind(e, 'hashchange', function (){
h.Adapter.trigger(e, 'popstate');
}),
h.getHash() &&
h.Adapter.onDomLoad(function (){
h.Adapter.trigger(e, 'hashchange');
}));
}}),
(!h.options||!h.options.delayInit)&&h.init());
})(window));
};