var EXANIMO=EXANIMO||{};
(function(){EXANIMO.managers=EXANIMO.managers||{};
var _1=false;
var _2;
var _3;
var _4;
var _5;
var _6=false;
var _7="EXANIMO-managers-StateManager-iFrame";
var _e;
function _self(){return EXANIMO.managers.StateManager;}
var _9=navigator.appName.indexOf("Microsoft Internet")!=-1?"IFRAME":navigator.userAgent.indexOf("Safari")!=-1?"LINK":"HASH";
function _getStateID()
{
  return document.location.href.split("#")[1]||_self().defaultStateID;
}
function _getSWF()
{
  var _a=["object","embed"];
  for(var i=0;i<_a.length;i++)
  {
    var a=document.getElementsByTagName(_a[i]);
    for(var j=0;j<a.length;j++)
    {
      if(a[j].dispatchStateChangeEvents){return a[j];}
    }
  }
}
function _dispatchEvent(_e,_f)
{
  _e = _e || _self().defaultStateID;
  if(!_4)
  {
    _e={id:_e};
    var f;
    if(f=_self().onstatechange){_e.type="stateChange";f(_e);}
    if(_f){if(f=_self().onstateset){_e.type="stateSet";f(_e);}}
    else{if(f=_self().onstaterevisit){_e.type="stateRevisit";f(_e);}}
    _e=null;
   }
   else
   {
    if(!_f){_4.dispatchStateChangeEvents(_e);}
   }
}
var _11=(function()
{
switch(_9){
  case "HASH":
    return function(_12)
    {
      document.location.hash = _12 == _self().defaultStateID ? "#" : _12;
      _5=_12;
      //icy did this
      d(_12);   //firefox detects this one
    };
  case "IFRAME":
    return function(_13)
    {
      _6=true;
      var _14=document.getElementById(_7);
      frames[_7].document.open();
      frames[_7].document.write("<script>parent.document.location.hash = \""+(_13==_self().defaultStateID?"#":_13)+"\"; /* Wait for IE to impose its title before setting ours. */ setTimeout( function(){ parent.EXANIMO.managers.StateManager._updateIFrame(\""+_13+"\"); }, 0);</script>");
      frames[_7].document.close();
      //icy did this
      d(_13);   //ie detects this one
      };
  case "LINK":
    return function(_15)
    {
      _6=true;
      var a=document.createElement("a");
      a.setAttribute("href",_15==_self().defaultStateID?"#":"#"+_15);
      var evt=document.createEvent("MouseEvents");
      evt.initEvent("click",true,true);
      a.dispatchEvent(evt);
      document.location.EXANIMO.managers.StateManager.stateList.push(_15);
      //icy did this
      d(_15);   //safari detects this one
    };
  }
  })();

EXANIMO.managers.StateManager={
  CHECK_RATE : 100, 
  onstatechange : null, 
  onstateset : null, 
  onstaterevisit : null, 
  DEFAULT_STATE : "defaultState", 
  defaultStateID : "defaultState", 
  initialize : function(swf)
  {
    if(_1){return;}
    _1=true;
    _4 = swf == true ? _getSWF() : swf;
    switch(_9)
    {
      case "HASH":
        _5=_getStateID()==_self().defaultStateID?_self().defaultStateID:null;
        var _19=function(){var _1a=_getStateID();if(_1a!=_5){_5=_1a;_dispatchEvent(_1a);}};
        _2=setInterval(_19,_self().CHECK_RATE);
        break;
      case "IFRAME":
        _6=true;
        var _1b=document.createElement("iframe");
        _1b.setAttribute("src","about:blank");
        _1b.setAttribute("name",_7);
        _1b.setAttribute("id",_7);
        _1b.style.visibility="hidden";
        _1b.style.width="0";
        _1b.style.height="0";
        _1b.style.position="absolute";
        _1b.style.overflow="hidden";
        document.body.appendChild(_1b);
        var _1c=_getStateID();
        if(_1c!=_self().defaultStateID){setTimeout(function(){_dispatchEvent(_1c);},0);}
        frames[_7].document.open();
        if(_1c){frames[_7].document.write("<script>parent.document.location.hash = \""+(_1c==_self().defaultStateID?"":_1c)+"\"; parent.EXANIMO.managers.StateManager._updateIFrame(\""+_1c+"\");</script>");}
        else{frames[_7].document.write("<script>parent.document.location.hash = \"\"; parent.EXANIMO.managers.StateManager._updateIFrame();</script>");}
        frames[_7].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(loc.deepLink&&loc.deepLink!=_self().defaultStateID){loc.oldHistoryLength=-1;loc.deepLink=null;}
        if(typeof loc.stateList=="undefined")
        {
          loc.stateList=[_getStateID()||_self().defaultStateID];
          loc.deepLink=loc.stateList[0];
          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 _1e=function(){var loc=document.location.EXANIMO.managers.StateManager;if(_6){_6=false;loc.oldHistoryLength=history.length;return;}if(history.length!=loc.oldHistoryLength){var _20=loc.stateList[history.length-1];_dispatchEvent(_20);loc.oldHistoryLength=history.length;}};
        _2=setInterval(_1e,_self().CHECK_RATE);
        break;
    }
  },
  setState:function(_21,_22)
  {
    if(_22){_self().setTitle(_22);}
    if(_e){return;}
    _11(_21);
    _dispatchEvent(_21,true);
  },
  setTitle:function(_23)
  {
    window.document.title=_23||" ";
  },
  _updateIFrame:function(_24)
  {
    if(!_6){_dispatchEvent(_24);}
    _6=false;
  }
  };
  })();