/**

 * SWFAddress 2.1: Deep linking for Flash and Ajax - http://www.asual.com/swfaddress/

 *

 * SWFAddress is (c) 2006-2007 Rostislav Hristov and is released under the MIT License:

 * http://www.opensource.org/licenses/mit-license.php

 *

 * Uses code from SWFObject 2.0 - http://code.google.com/p/swfobject/

 * SWFObject is (c) 2007 Geoff Stearns, Michael Williams, and Bobby van der Sluis 

 * and is released under the MIT License:

 * http://www.opensource.org/licenses/mit-license.php

 *

 */

 

SWFAddressOptimizer = new function() {



    var _hash = location.href.indexOf('#');

    var _url, _opts = {};

    

    var _checkFlash = function(version){

    

        var rv = version.toString().split('.');

        for (var i = 0; i < 3; i++)

            rv[i] = typeof rv[i] != 'undefined' ? parseInt(rv[i]) : 0;



        var pv = [0,0,0];

        var d = null;

        

        if (typeof navigator.plugins != 'undefined' && typeof navigator.plugins['Shockwave Flash'] == 'object') {

            d = navigator.plugins['Shockwave Flash'].description;

            if (d) {

                d = d.replace(/^.*\s+(\S+\s+\S+$)/, '$1');

                pv[0] = parseInt(d.replace(/^(.*)\..*$/, '$1'), 10);

                pv[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, '$1'), 10);

                pv[2] = /r/.test(d) ? parseInt(d.replace(/^.*r(.*)$/, '$1'), 10) : 0;

            }

        } else if (typeof window.ActiveXObject != 'undefined') {

            var a = null;

            var fp6Crash = false;

            try {

                a = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.7');

            } catch(e) {

                try { 

                    a = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');

                    pv = [6,0,21];

                    a.AllowScriptAccess = 'always';

                } catch(e) {

                    if (pv[0] == 6) {

                        fp6Crash = true;

                    }

                }

                if (!fp6Crash) {

                    try {

                        a = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');

                    } catch(e) {}

                }

            }

            if (!fp6Crash && typeof a == 'object') {

                try {

                    d = a.GetVariable('$version');

                    if (d) {

                        d = d.split(' ')[1].split(',');

                        pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];

                    }

                } catch(e) {}

            }

        }    

        

        return (pv[0] > rv[0] || (pv[0] == rv[0] && pv[1] > rv[1]) || 

            (pv[0] == rv[0] && pv[1] == rv[1] && pv[2] >= rv[2])) ? true : false;

    }

    

    var _redirect = function(swfaddress, base) {

        var value = location.href.split(location.hostname)[1].replace(base, '');

        if (swfaddress != '/' && (_hash == -1 || _hash == location.href.length - 1) && (value != '' && value != '/')) {

            var xhr;

            if (window.XMLHttpRequest) {

                xhr = new XMLHttpRequest();

            } else if (window.ActiveXObject) {

                try {

                    try {

                        xhr = new ActiveXObject('Msxml2.XMLHTTP');

                    } catch(e) {

                        xhr = new ActiveXObject('Microsoft.XMLHTTP');

                    }

                } catch(e) {}

            }

            if (xhr) {

                xhr.open('get', ((typeof base != 'undefined') ? base : '') + '/?' + swfaddress, false);                

                xhr.setRequestHeader('Content-Type', 'application/x-swfaddress');

                xhr.send('');

                eval(xhr.responseText);

            }

        }

    }

    

    var _searchScript = function(el) {

        if (el.src && /swfaddress-optimizer\.js(\?.*)?$/.test(el.src)) return el;

        for (var i = 0, l = el.childNodes.length, s; i < l; i++) {

            if (s = _searchScript(el.childNodes[i])) return s;

        }        

    }



    try {

        _url = String(_searchScript(document).src);

        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 (/^(flash|base|swfaddress)$/.test(param[0])) {

                    _opts[param[0]] = unescape(param[1]);

                }

            }

        }

    } catch(e) {}

        

    if (typeof _opts.flash != 'undefined') {

        if (_checkFlash(_opts.flash)) {

            _redirect(_opts.swfaddress, _opts.base);

        } else if (_hash != -1) {

            location.replace(location.href.replace(/#(\/)?/, ''));

        }

    } else {

        _redirect(_opts.swfaddress, _opts.base);

    }

}
