/*** SWFAddress 2.3: Deep linking for Flash and Ajax ** SWFAddress is (c) 2006-2009 Rostislav Hristov and contributors* This software is released under the MIT License **/if(typeof asual == "undefined") {   var asual = {      }   }if(typeof asual.util == "undefined") {   asual.util = {      }   }asual.util.Browser = new function() {   var b = navigator.userAgent.toLowerCase(), a = /webkit/.test(b), e = /opera/.test(b), c = /msie/.test(b) &&!/opera/.test(b), d = /mozilla/.test(b) &&!/(compatible|webkit)/.test(b), f = parseFloat(c ? b.substr(b.indexOf("msie") + 4) : (b.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1]);   this.toString = function() {      return"[class Browser]"};    this.getVersion = function() {      return f};    this.isMSIE = function() {      return c};    this.isSafari = function() {      return a};    this.isOpera = function() {      return e};    this.isMozilla = function() {      return d}   }; asual.util.Events = new function() {   var c = "DOMContentLoaded", j = "onstop", k = window, h = document, b = [], a = asual.util, e = a.Browser, d = e.isMSIE(), g = e.isSafari();    this.toString = function() {      return"[class Events]"};    this.addListener = function(n, l, m) {      b.push( {         o : n, t : l, l : m}      );       if(!(l == c && (d || g))) {         if(n.addEventListener) {            n.addEventListener(l, m, false)}         else {            if(n.attachEvent) {               n.attachEvent("on" + l, m)}            }         }      };    this.removeListener = function(p, m, n) {      for(var l = 0, o; o = b[l]; l++) {         if(o.o == p && o.t == m && o.l == n) {            b.splice(l, 1);             break}         }      if(!(m == c && (d || g))) {         if(p.removeEventListener) {            p.removeEventListener(m, n, false)}         else {            if(p.detachEvent) {               p.detachEvent("on" + m, n)}            }         }      };    var i = function() {      for(var m = 0, l; l = b[m]; m++) {         if(l.t != c) {            a.Events.removeListener(l.o, l.t, l.l)}         }      };    var f = function() {      if(h.readyState == "interactive") {         function l() {            h.detachEvent(j, l);             i()}         h.attachEvent(j, l);          k.setTimeout(function() {            h.detachEvent(j, l)}         , 0)}      };    if(d || g) {      (function() {         try {            if((d && h.body) ||!/loaded|complete/.test(h.readyState)){h.documentElement.doScroll("left")}}catch(m){return setTimeout(arguments.callee,0)}for(var l=0,m;m=b[l];l++){if(m.t==c){m.l.call(null)}}})()}if(d){k.attachEvent("onbeforeunload",f)}this.addListener(k,"unload",i)};            asual.util.Functions = new function() {               this.toString = function() {                  return"[class Functions]"};                this.bind = function(f, b, e) {                  for(var c = 2, d, a = []; d = arguments[c]; c++) {                     a.push(d)}                  return function() {                     return f.apply(b, a)}                  }               };             var SWFAddressEvent = function(d) {               this.toString = function() {                  return"[object SWFAddressEvent]"};                this.type = d;                this.target = [SWFAddress][0];                this.value = SWFAddress.getValue();                this.path = SWFAddress.getPath();                this.pathNames = SWFAddress.getPathNames();                this.parameters = {                  };                var c = SWFAddress.getParameterNames();                for(var b = 0, a = c.length; b < a; b++) {                  this.parameters[c[b]] = SWFAddress.getParameter(c[b])}               this.parameterNames = c};             SWFAddressEvent.INIT = "init";             SWFAddressEvent.CHANGE = "change";             var SWFAddress = new function() {               var _getHash = function() {                  var index = _l.href.indexOf("#");                   return index !=- 1 ? _ec(_dc(_l.href.substr(index + 1))) : ""};                var _getWindow = function() {                  try {                     top.document;                      return top}                  catch(e) {                     return window}                  };                var _strictCheck = function(value, force) {                  if(_opts.strict) {                     value = force ? (value.substr(0, 1) != "/" ? "/" + value : value) : (value == "" ? "/" : value)}                  return value};                var _ieLocal = function(value, direction) {                  return(_msie && _l.protocol == "file:") ? (direction ? _value.replace(/\?/,"%3F"):_value.replace(/%253F/,"?")):value};                  var _searchScript = function(el) {                     for(var i = 0, l = el.childNodes.length, s; i < l; i++) {                        if(el.childNodes[i].src) {                           _url = String(el.childNodes[i].src)}                        if(s = _searchScript(el.childNodes[i])) {                           return s}                        }                     };                   var _titleCheck = function() {                     if(_d.title != _title && _d.title.indexOf("#") !=- 1) {                        _d.title = _title}                     };                   var _listen = function() {                     if(!_silent) {                        var hash = _getHash();                         var diff =!(_value == hash);                         if(_safari && _version < 523) {                           if(_length != _h.length) {                              _length = _h.length;                               if(typeof _stack[_length - 1] != UNDEFINED) {                                 _value = _stack[_length - 1]}                              _update.call(this)}                           }                        else {                           if(_msie && diff) {                              if(_version < 7) {                                 _l.reload()}                              else {                                 this.setValue(hash)}                              }                           else {                              if(diff) {                                 _value = hash;                                  _update.call(this)}                              }                           }                        if(_msie) {                           _titleCheck.call(this)}                        }                     };                   var _bodyClick = function(e) {                     if(_popup.length > 0) {                        var popup = window.open(_popup[0], _popup[1], eval(_popup[2]));                         if(typeof _popup[3] != UNDEFINED) {                           eval(_popup[3])}                        }                     _popup = []};                   var _swfChange = function() {                     for(var i = 0, id, obj, value = SWFAddress.getValue(), setter = "setSWFAddressValue"; id = _ids[i]; i++) {                        obj = document.getElementById(id);                         if(obj) {                           if(obj.parentNode && typeof obj.parentNode.so != UNDEFINED) {                              obj.parentNode.so.call(setter, value)}                           else {                              if(!(obj && typeof obj[setter] != UNDEFINED)) {                                 var objects = obj.getElementsByTagName("object");                                  var embeds = obj.getElementsByTagName("embed");                                  obj = ((objects[0] && typeof objects[0][setter] != UNDEFINED) ? objects[0] : ((embeds[0] && typeof embeds[0][setter] != UNDEFINED) ? embeds[0] : null))}                              if(obj) {                                 obj[setter](value)}                              }                           }                        else {                           if(obj = document[id]) {                              if(typeof obj[setter] != UNDEFINED) {                                 obj[setter](value)}                              }                           }                        }                     };                   var _jsDispatch = function(type) {                     this.dispatchEvent(new SWFAddressEvent(type));                      type = type.substr(0, 1).toUpperCase() + type.substr(1);                      if(typeof this["on" + type] == FUNCTION) {                        this["on" + type]()}                     };                   var _jsInit = function() {                     if(_util.Browser.isSafari()) {                        _d.body.addEventListener("click", _bodyClick)}                     _jsDispatch.call(this, "init")};                   var _jsChange = function() {                     _swfChange();                      _jsDispatch.call(this, "change")};                   var _update = function() {                     _jsChange.call(this);                      _st(_functions.bind(_track, this), 10)};                   var _track = function() {                     var value = (_l.pathname + (/\/$/.test(_l.pathname)?"":"/")+this.getValue()).replace(/\/\//,"/").replace(/^\/$/,"");                     var fn = window[_opts.tracker];                      if(typeof fn == FUNCTION) {                        fn(value)}                     else {                        if(typeof pageTracker != UNDEFINED && typeof pageTracker._trackPageview == FUNCTION) {                           pageTracker._trackPageview(value)}                        else {                           if(typeof urchinTracker == FUNCTION) {                              urchinTracker(value)}                           }                        }                     };                   var _htmlWrite = function() {                     var doc = _iframe.contentWindow.document;                      doc.open();                      doc.write("<html><head><title>" + _d.title + "</title><script>var " + ID + ' = "' + _getHash() + '";<\/script></head></html>');                      doc.close()};                   var _htmlLoad = function() {                     var win = _iframe.contentWindow;                      var src = win.location.href;                      _value = (typeof win[ID] != UNDEFINED ? win[ID] : "");                      if(_value != _getHash()) {                        _update.call(SWFAddress);                         _l.hash = _ieLocal(_value, true)}                     };                   var _load = function() {                     if(!_loaded) {                        _loaded = true;                         if(_msie && _version < 8) {                           var iframe = '<iframe id="' + ID + '" src="javascript:false;" width="0" height="0"></iframe>';                            _d.body.innerHTML = iframe + _d.body.innerHTML;                            _iframe = _d.getElementById(ID);                            _st(function() {                              _events.addListener(_iframe, "load", _htmlLoad); if(typeof _iframe.contentWindow[ID] == UNDEFINED) {                                 _htmlWrite()}                              }                           , 50)}                        else {                           if(_safari) {                              if(_version < 418) {                                 _d.body.innerHTML += '<form id="' + ID + '" style="position:absolute;top:-9999px;" method="get"></form>';                                  _form = _d.getElementById(ID)}                              if(typeof _l[ID] == UNDEFINED) {                                 _l[ID] = {                                    }                                 }                              if(typeof _l[ID][_l.pathname] != UNDEFINED) {                                 _stack = _l[ID][_l.pathname].split(",")}                              }                           }                        _st(_functions.bind(function() {                           _jsInit.call(this); _jsChange.call(this); _track.call(this)}                        , this), 1);                         if(_msie && _version >= 8) {                           _d.body.onhashchange = _functions.bind(_listen, this);                            _si(_functions.bind(_titleCheck, this), 50)}                        else {                           _si(_functions.bind(_listen, this), 50)}                        }                     };                   var ID = "swf_address", FUNCTION = "function", UNDEFINED = "undefined", _util = asual.util, _browser = _util.Browser, _events = _util.Events, _functions = _util.Functions, _version = _browser.getVersion(), _msie = _browser.isMSIE(), _mozilla = _browser.isMozilla(), _opera = _browser.isOpera(), _safari = _browser.isSafari(), _supported = false, _t = _getWindow(), _d = _t.document, _h = _t.history, _l = _t.location, _si = setInterval, _st = setTimeout, _dc = decodeURI, _ec = encodeURI, _iframe, _form, _url, _title = _d.title, _length = _h.length, _silent = false, _loaded = false, _justset = true, _juststart = true, _ref = this, _stack = [], _ids = [], _popup = [], _listeners = {                     }                  , _value = _getHash(), _opts = {                     history : true, strict : true};                   _supported = (_mozilla && _version >= 1) || (_msie && _version >= 6) || (_opera && _version >= 9.5) || (_safari && _version >= 312);                   if(_supported) {                     for(var i = 1; i < _length; i++) {                        _stack.push("")}                     _stack.push(_getHash());                      if(_msie && _l.hash != _getHash()) {                        _l.hash = "#" + _ieLocal(_getHash(), true)}                     if(_opera) {                        history.navigationMode = "compatible"}                     _searchScript(document);                      var _qi = _url.indexOf("?");                      if(_url && _qi >- 1) {                        var param, params = _url.substr(_qi + 1).split("&");                         for(var i = 0, p; p = params[i]; i++) {                           param = p.split("=");                            if(/^(history|strict)$/.test(param[0])){_opts[param[0]]=(isNaN(param[1])?/^(true|yes)$/i.test(param[1]):(parseInt(param[1])!=0))}if(/^tracker$/.test(param[0])){_opts[param[0]]=param[1]}}}if(_msie){_titleCheck.call(this)}if(window==_t){_events.addListener(document,"DOMContentLoaded",_functions.bind(_load,this))}_events.addListener(_t,"load",_functions.bind(_load,this))}else{if((!_supported&&_l.href.indexOf("#")!=-1)||(_safari&&_version<418&&_l.href.indexOf("#")!=-1&&_l.search!="")){_d.open();                           _d.write('<html><head><meta http-equiv="refresh" content="0;url=' + _l.href.substr(0, _l.href.indexOf("#")) + '" /></head></html>');                            _d.close()}                        else {                           _track()}                        }                     this.toString = function() {                        return"[class SWFAddress]"};                      this.back = function() {                        _h.back()};                      this.forward = function() {                        _h.forward()};                      this.up = function() {                        var path = this.getPath();                         this.setValue(path.substr(0, path.lastIndexOf("/", path.length - 2) + (path.substr(path.length - 1) == "/" ? 1 : 0)))};                      this.go = function(delta) {                        _h.go(delta)};                      this.href = function(url, target) {                        target = typeof target != UNDEFINED ? target : "_self";                         if(target == "_self") {                           self.location.href = url}                        else {                           if(target == "_top") {                              _l.href = url}                           else {                              if(target == "_blank") {                                 window.open(url)}                              else {                                 _t.frames[target].location.href = url}                              }                           }                        };                      this.popup = function(url, name, options, handler) {                        try {                           var popup = window.open(url, name, eval(options));                            if(typeof handler != UNDEFINED) {                              eval(handler)}                           }                        catch(ex) {                           }                        _popup = arguments};                      this.getIds = function() {                        return _ids};                      this.getId = function(index) {                        return _ids[0]};                      this.setId = function(id) {                        _ids[0] = id};                      this.addId = function(id) {                        this.removeId(id);                         _ids.push(id)};                      this.removeId = function(id) {                        for(var i = 0; i < _ids.length; i++) {                           if(id == _ids[i]) {                              _ids.splice(i, 1);                               break}                           }                        };                      this.addEventListener = function(type, listener) {                        if(typeof _listeners[type] == UNDEFINED) {                           _listeners[type] = []}                        _listeners[type].push(listener)};                      this.removeEventListener = function(type, listener) {                        if(typeof _listeners[type] != UNDEFINED) {                           for(var i = 0, l; l = _listeners[type][i]; i++) {                              if(l == listener) {                                 break}                              }                           _listeners[type].splice(i, 1)}                        };                      this.dispatchEvent = function(event) {                        if(this.hasEventListener(event.type)) {                           event.target = this;                            for(var i = 0, l; l = _listeners[event.type][i]; i++) {                              l(event)}                           return true}                        return false};                      this.hasEventListener = function(type) {                        return(typeof _listeners[type] != UNDEFINED && _listeners[type].length > 0)};                      this.getBaseURL = function() {                        var url = _l.href;                         if(url.indexOf("#") !=- 1) {                           url = url.substr(0, url.indexOf("#"))}                        if(url.substr(url.length - 1) == "/") {                           url = url.substr(0, url.length - 1)}                        return url};                      this.getStrict = function() {                        return _opts.strict};                      this.setStrict = function(strict) {                        _opts.strict = strict};                      this.getHistory = function() {                        return _opts.history};                      this.setHistory = function(history) {                        _opts.history = history};                      this.getTracker = function() {                        return _opts.tracker};                      this.setTracker = function(tracker) {                        _opts.tracker = tracker};                      this.getTitle = function() {                        return _d.title};                      this.setTitle = function(title) {                        if(!_supported) {                           return null}                        if(typeof title == UNDEFINED) {                           return}                        if(title == "null") {                           title = ""}                        title = _dc(title);                         _st(function() {                           _title = _d.title = title; if(_juststart && _iframe && _iframe.contentWindow && _iframe.contentWindow.document) {                              _iframe.contentWindow.document.title = title; _juststart = false}                           if(!_justset && _mozilla) {                              _l.replace(_l.href.indexOf("#") !=- 1 ? _l.href : _l.href + "#")}                           _justset = false}                        , 50)};                      this.getStatus = function() {                        return _t.status};                      this.setStatus = function(status) {                        if(!_supported) {                           return null}                        if(typeof status == UNDEFINED) {                           return}                        if(status == "null") {                           status = ""}                        status = _dc(status);                         if(!_safari) {                           status = _strictCheck((status != "null") ? status : "", true);                            if(status == "/") {                              status = ""}                           if(!(/http(s)?:\/\//.test(status))){var index=_l.href.indexOf("#");                           status = (index ==- 1 ? _l.href : _l.href.substr(0, index)) + "#" + status}                        _t.status = status}                     };                   this.resetStatus = function() {                     _t.status = ""};                   this.getValue = function() {                     if(!_supported) {                        return null}                     return _dc(_strictCheck(_ieLocal(_value, false), false))};                   this.setValue = function(value) {                     if(!_supported) {                        return null}                     if(typeof value == UNDEFINED) {                        return}                     if(value == "null") {                        value = ""}                     value = _ec(_dc(_strictCheck(value, true)));                      if(value == "/") {                        value = ""}                     if(_value == value) {                        return}                     _justset = true;                      _value = value;                      _silent = true;                      _update.call(SWFAddress);                      _stack[_h.length] = _value;                      if(_safari) {                        if(_opts.history) {                           _l[ID][_l.pathname] = _stack.toString();                            _length = _h.length + 1;                            if(_version < 418) {                              if(_l.search == "") {                                 _form.action = "#" + _value;                                  _form.submit()}                              }                           else {                              if(_version < 523 || _value == "") {                                 var evt = _d.createEvent("MouseEvents");                                  evt.initEvent("click", true, true);                                  var anchor = _d.createElement("a");                                  anchor.href = "#" + _value;                                  anchor.dispatchEvent(evt)}                              else {                                 _l.hash = "#" + _value}                              }                           }                        else {                           _l.replace("#" + _value)}                        }                     else {                        if(_value != _getHash()) {                           if(_opts.history) {                              _l.hash = "#" + _ieLocal(_value, true)}                           else {                              _l.replace("#" + _value)}                           }                        }                     if((_msie && _version < 8) && _opts.history) {                        _st(_htmlWrite, 50)}                     if(_safari) {                        _st(function() {                           _silent = false}                        , 1)}                     else {                        _silent = false}                     };                   this.getPath = function() {                     var value = this.getValue();                      var value = SWFAddress.getValue();                      if(value.indexOf("?") !=- 1) {                        return value.split("?")[0]}                     else {                        if(value.indexOf("#") !=- 1) {                           return value.split("#")[0]}                        else {                           return value}                        }                     };                   this.getPathNames = function() {                     var path = this.getPath();                      var names = path.split("/");                      if(path.substr(0, 1) == "/" || path.length == 0) {                        names.splice(0, 1)}                     if(path.substr(path.length - 1, 1) == "/") {                        names.splice(names.length - 1, 1)}                     return names};                   this.getQueryString = function() {                     var value = this.getValue();                      var index = value.indexOf("?");                      return(index !=- 1 && index < value.length) ? value.substr(index + 1) : ""};                   this.getParameter = function(param) {                     var value = this.getValue();                      var index = value.indexOf("?");                      if(index !=- 1) {                        value = value.substr(index + 1);                         var params = value.split("&");                         var p, i = params.length;                         while(i--) {                           p = params[i].split("=");                            if(p[0] == param) {                              return p[1]}                           }                        }                     };                   this.getParameterNames = function() {                     var value = this.getValue();                      var index = value.indexOf("?");                      var names = [];                      if(index !=- 1) {                        value = value.substr(index + 1);                         if(value != "" && value.indexOf("=") !=- 1) {                           var params = value.split("&");                            var i = 0;                            while(i < params.length) {                              names.push(params[i].split("=")[0]);                               i++}                           }                        }                     return names};                   this.onInit = null;                   this.onChange = null;                   (function() {                     var _args; if(typeof FlashObject != UNDEFINED) {                        SWFObject = FlashObject}                     if(typeof SWFObject != UNDEFINED && SWFObject.prototype && SWFObject.prototype.write) {                        var _s1 = SWFObject.prototype.write; SWFObject.prototype.write = function() {                           _args = arguments; if(this.getAttribute("version").major < 8) {                              this.addVariable("$swfaddress", SWFAddress.getValue()); ((typeof _args[0] == "string") ? document.getElementById(_args[0]) : _args[0]).so = this}                           var success; if(success = _s1.apply(this, _args)) {                              _ref.addId(this.getAttribute("id"))}                           return success}                        }                     if(typeof swfobject != UNDEFINED) {                        var _s2r = swfobject.registerObject; swfobject.registerObject = function() {                           _args = arguments; _s2r.apply(this, _args); _ref.addId(_args[0])}; var _s2c = swfobject.createSWF; swfobject.createSWF = function() {                           _args = arguments; _s2c.apply(this, _args); _ref.addId(_args[0].id)}; var _s2e = swfobject.embedSWF; swfobject.embedSWF = function() {                           _args = arguments; if(typeof _args[8] == UNDEFINED) {                              _args[8] = {                                 }                              }                           if(typeof _args[8].id == UNDEFINED) {                              _args[8].id = _args[1]}                           _s2e.apply(this, _args); _ref.addId(_args[8].id)}                        }                     if(typeof UFO != UNDEFINED) {                        var _u = UFO.create; UFO.create = function() {                           _args = arguments; _u.apply(this, _args); _ref.addId(_args[0].id)}                        }                     if(typeof AC_FL_RunContent != UNDEFINED) {                        var _a = AC_FL_RunContent; AC_FL_RunContent = function() {                           _args = arguments; _a.apply(this, _args); for(var i = 0, l = _args.length; i < l; i++) {                              if(_args[i] == "id") {                                 _ref.addId(_args[i + 1])}                              }                           }                        }                     }                  )()};
