window.EXANIMO = window.EXANIMO || {}; EXANIMO.namespace = function(ns){ if (!ns || !ns.length)return; var levels = ns.split('.'); var nsobj = EXANIMO; for (var i = (levels[0] == 'EXANIMO') ? 1 : 0; i < levels.length; i++){ nsobj[levels[i]] = nsobj[levels[i]] || {}; nsobj = nsobj[levels[i]];}return nsobj;}EXANIMO.namespace('EXANIMO.utils'); EXANIMO.utils.getBrowserInfo = function(){ if (navigator.appName.indexOf('Microsoft Internet') != -1)return {browser: 'MSIE'}; if (navigator.userAgent.indexOf('Safari') != -1)return {browser: 'SAFARI'}; elsereturn {browser: 'OTHER'};}EXANIMO.namespace('EXANIMO.utils'); EXANIMO.utils.getSWFObject = function(id){ if (window.document[id])return window.document[id]; if (navigator.appName.indexOf('Microsoft Internet') == -1)if (document.embeds && document.embeds[id])return document.embeds[id]; elsereturn document.getElementById(id);}EXANIMO.namespace('EXANIMO.managers'); if (!EXANIMO.managers.StateManager){ EXANIMO.managers.StateManager = { CHECK_RATE: 100, stateChangeHandler: null, _initialized: false, _method: null, _oldStateID: '', _swf: null, _refreshPage: null, _cancelLoad: false, initialize: function(swf){ clearInterval(EXANIMO.managers.StateManager._autoInit); if (EXANIMO.managers.StateManager._initialized) return; EXANIMO.managers.StateManager._initialized = true; if (typeof swf != 'undefined'){ EXANIMO.managers.StateManager._swf = typeof(swf) == 'string' ? EXANIMO.utils.getSWFObject(swf) : swf || null;}var browserInfo = EXANIMO.utils.getBrowserInfo(); switch(browserInfo.browser){ case 'MSIE':EXANIMO.managers.StateManager._method = 'IFRAME'; break; case 'SAFARI':EXANIMO.managers.StateManager._method = 'LINK'; break; default:EXANIMO.managers.StateManager._method = 'HASH'; break;}switch(EXANIMO.managers.StateManager._method){ case 'HASH':var checkForHashChange = function(){ var stateID = EXANIMO.managers.StateManager._getStateID(); if (stateID != EXANIMO.managers.StateManager._oldStateID){ EXANIMO.managers.StateManager._oldStateID = stateID; EXANIMO.managers.StateManager.loadState(stateID, false)}}setInterval(checkForHashChange, EXANIMO.managers.StateManager.CHECK_RATE); break; case 'IFRAME':EXANIMO.managers.StateManager._refreshPage = false; var iframe = document.createElement('iframe'); iframe.setAttribute('src', 'about:blank'); iframe.setAttribute('name', 'EXANIMO-managers-StateManager-iFrame'); iframe.setAttribute('id', 'EXANIMO-managers-StateManager-iFrame'); iframe.style.visibility = 'hidden'; iframe.style.width = '0'; iframe.style.height = '0'; iframe.style.position = 'absolute'; iframe.style.overflow = 'hidden'; document.body.appendChild(iframe); var stateID = EXANIMO.managers.StateManager._getStateID(); if (stateID){ setTimeout( function(){ EXANIMO.managers.StateManager.loadState(stateID, false)}, 0 );}frames['EXANIMO-managers-StateManager-iFrame'].document.open(); if (stateID)frames['EXANIMO-managers-StateManager-iFrame'].document.write('<script>parent.document.location.hash = "' + stateID + '"; parent.EXANIMO.managers.StateManager._updateIFrame("' + stateID + '");</script>'); elseframes['EXANIMO-managers-StateManager-iFrame'].document.write('<script>parent.document.location.hash = ""; parent.EXANIMO.managers.StateManager._updateIFrame();</script>'); frames['EXANIMO-managers-StateManager-iFrame'].document.close(); break; case 'LINK':document.location.EXANIMO = document.location.EXANIMO || {}; document.location.EXANIMO.managers = document.location.EXANIMO.managers || {}; document.location.EXANIMO.managers.StateManager = document.location.EXANIMO.managers.StateManager || {}; var loc = document.location.EXANIMO.managers.StateManager; window.onunload = function(){ loc.oldHistoryLength = -1;}if (typeof loc.stateList == 'undefined'){ loc.stateList = [EXANIMO.managers.StateManager._getStateID() || 'home']; loc.offset = history.length - 1; while (loc.offset){ loc.stateList.unshift(null); loc.offset--;}delete loc.offset; loc.oldHistoryLength = document.location.hash ? -1 : history.length;}var checkForHistoryLengthChange = function(){ var loc = document.location.EXANIMO.managers.StateManager; if (EXANIMO.managers.StateManager._cancelLoad){ EXANIMO.managers.StateManager._cancelLoad = false; loc.oldHistoryLength = history.length; return;}if (history.length != loc.oldHistoryLength){ var stateID = loc.stateList[history.length - 1]; EXANIMO.managers.StateManager.loadState(stateID, false)loc.oldHistoryLength = history.length;}}setInterval(checkForHistoryLengthChange, EXANIMO.managers.StateManager.CHECK_RATE); break;}}, loadState: function(stateID, logState){ stateID = stateID || 'home'; if ((typeof EXANIMO.utils.JSInterface != 'undefined') && (EXANIMO.utils.JSInterface.swfObject)){ EXANIMO.managers.StateManager._swf = EXANIMO.managers.StateManager._swf || EXANIMO.utils.JSInterface.swfObject;}if (EXANIMO.managers.StateManager._swf){ if (EXANIMO.managers.StateManager._swf.loadState){ EXANIMO.managers.StateManager._swf.loadState(stateID, logState);}}else{ if (logState != false){ EXANIMO.managers.StateManager.logState(stateID);}if (EXANIMO.managers.StateManager.stateChangeHandler){ var e = {id: stateID}; EXANIMO.managers.StateManager.stateChangeHandler(e);}}}, logState: function(stateID){ switch(EXANIMO.managers.StateManager._method){ case 'HASH':document.location.hash = stateID == 'home' ? '#' : stateID; EXANIMO.managers.StateManager._oldStateID = stateID; break; case 'IFRAME':EXANIMO.managers.StateManager._setIFrame(stateID); break; case 'LINK':EXANIMO.managers.StateManager._cancelLoad = true; var a = document.createElement('a'); a.setAttribute('href', '#' + stateID); var evt = document.createEvent('MouseEvents'); evt.initEvent('click', true, true); a.dispatchEvent(evt); document.location.EXANIMO.managers.StateManager.stateList.push(stateID); break;}}, setTitle: function(title){ window.document.title = title || ' ';}, _getStateID: function(){ return document.location.href.split('#')[1] || '';}, _setIFrame: function(stateID){ EXANIMO.managers.StateManager._refreshPage = false; var iframe = document.getElementById('EXANIMO-managers-StateManager-iFrame'); switch(EXANIMO.managers.StateManager._method){ case 'IFRAME':frames['EXANIMO-managers-StateManager-iFrame'].document.open(); frames['EXANIMO-managers-StateManager-iFrame'].document.write('<script>parent.document.location.hash = "' + (stateID == 'home' ? '#' : stateID) + '"; /* Wait for IE to impose its title before setting ours. */ setTimeout( function(){ parent.EXANIMO.managers.StateManager._updateIFrame("' + stateID + '"); }, 0);</script>'); frames['EXANIMO-managers-StateManager-iFrame'].document.close(); break;}}, _updateIFrame: function(stateID){ if (EXANIMO.managers.StateManager._refreshPage){ EXANIMO.managers.StateManager.loadState(stateID, false);}else{ EXANIMO.managers.StateManager._refreshPage = true;}}}}