/** 
 * flashembed 0.31. Adobe Flash embedding script
 * 
 * http://flowplayer.org/tools/flash-embed.html
 *
 * Copyright (c) 2008 Tero Piirainen (tipiirai@gmail.com)
 *
 * Released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * >> Basically you can do anything you want but leave this header as is <<
 *
 * version 0.01 - 03/11/2008 
 * version 0.31 - Tue Jul 22 2008 06:30:31 GMT+0200 (GMT+02:00)
 */
function flashembed(root, userParams, flashvars) {
    function getHTML() {

        debug = false;
    
        var html = "";
        
        if (typeof flashvars == 'function') {
            flashvars = flashvars();
        }
        
        if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) {
            html = '<embed type="application/x-shockwave-flash" ';
            if (params.id) {
                extend(params, { name: params.id });
            }

            for (var key in params) {

                if (params[key] !== null) {

                    html += [key] + '="' + params[key] + '"\n\t';
                }
            }
            
            if (flashvars) {
                html += 'flashvars=\'' + concatVars(flashvars) + '\'';
            }
            
            html += '/>';
            
        }
        else 
        {
            html = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ';
            html += 'width="' + params.width + '" height="' + params.height + '"';

            if (!params.id && document.all) {
                params.id = "_" + ("" + Math.random()).substring(5);
            }
            if (params.id) {
                html += ' id="' + params.id + '"';
            }
            
            html += '>';
            html += '\n\t<param name="movie" value="' + params.src + '" />';
            params.id = params.src = params.width = params.height = null;

            for (var k in params) {
                if (params[k] !== null) {
                    html += '\n\t<param name="' + k + '" value="' + params[k] + '" />';
                }
            }
            
            if (flashvars) {
                html += '\n\t<param name="flashvars" value=\'' + concatVars(flashvars) + '\' />';
            }

            html += "</object>";
            if (debug)
            { alert(html); }
        }
        return html;
    }

    function init(name) {
        var timer = setInterval(function() {
            var doc = document;
            var el = doc.getElementById(name);
            if (el) {
                flashembed(el, userParams, flashvars);
                clearInterval(timer);
            } else if (doc && doc.getElementsByTagName && doc.getElementById && doc.body) {
                clearInterval(timer);
            }
        }, 13);
        return true;
    }
    
    function extend(to, from) {
        if (from) {

            for (key in from) {

                if (from.hasOwnProperty(key)) {
                    to[key] = from[key];
                }
            }
        }
    }
    
    var params = { src: '#', width: '100%', height: '100%',
    version: null, onFail: null, expressInstall: null, debug: false,
    bgcolor: '#ffffff', allowfullscreen: true, allowscriptaccess: 'always',
    quality: 'high', type: 'application/x-shockwave-flash',
    pluginspage: 'http://www.adobe.com/go/getflashplayer'
    };

    if (typeof userParams == 'string') {
        userParams = { src: userParams };
    }
    extend(params, userParams);
    var version = flashembed.getVersion();
    var required = params.version;
    var express = params.expressInstall;
    var debug = params.debug;

    if (typeof root == 'string') {
        var el = document.getElementById(root);
        if (el) { root = el; } else {
            return init(root);
        }
    }

    if (!root) { return; }

    if (!required || flashembed.isSupported(required)) {
        params.onFail = params.version = params.expressInstall = params.debug = null;
        root.innerHTML = getHTML();
        return root.firstChild;
    }
    else if (params.onFail) {
        var ret = params.onFail.call(params, flashembed.getVersion(), flashvars);
        if (ret) { root.innerHTML = ret; }
    }
    else if (required && express && flashembed.isSupported([6, 65])) {
        extend(params, { src: express });
        flashvars = { MMredirectURL: location.href, MMplayerType: 'PlugIn', MMdoctitle: document.title };
        root.innerHTML = getHTML();
    }
    else {
        if (root.innerHTML.replace(/\s/g, '') !== '') { }
        else {
            root.innerHTML = "<h2>Flash version " + required + " or greater is required</h2>" + "<h3>" + (version[0] > 0 ? "Your version is " + version : "You have no flash plugin installed") + "</h3>" + "<p>Download latest version from <a href='" + params.pluginspage + "'>here</a></p>";
        }
    }

    function concatVars(vars) {
        var out = "";
        for (var key in vars) {
            if (vars[key]) {
                out += [key] + '=' + asString(vars[key]) + '&';
            }
        }
        return out.substring(0, out.length - 1);
    }
    function asString(obj) {
        switch (typeOf(obj)) {
            case 'string':
                return '"' + obj.replace(new RegExp('(["\\\\])', 'g'), '\\$1') + '"';
            case 'array':
                return '[' + map(obj, function(el) { return asString(el); }).join(',') + ']';
            case 'function':
                return '"function()"';
            case 'object':
                var str = [];
                for (var prop in obj) {
                    if (obj.hasOwnProperty(prop)) {
                        str.push('"' + prop + '":' + asString(obj[prop]));
                    }
                }
                return '{' + str.join(',') + '}';
        }
        return String(obj).replace(/\s/g, " ").replace(/\'/g, "\"");
    }
    
    function typeOf(obj) {
        if (obj === null || obj === undefined) {
            return false;
        }
        var type = typeof obj;
        return (type == 'object' && obj.push) ? 'array' : type;
    }
    
    if (window.attachEvent) {
        window.attachEvent("onbeforeunload", function() { __flash_unloadHandler = function() { }; __flash_savedUnloadHandler = function() { }; });
    }
    
    function map(arr, func) {
        var newArr = [];
        for (var i in arr) {
            if (arr.hasOwnProperty(i)) {
                newArr[i] = func(arr[i]);
            }
        }
        return newArr;
    }

    return root;


}
    if(typeof jQuery=='function'){(function($){$.fn.extend({flashembed:function(params,flashvars){return this.each(function(){flashembed(this,params,flashvars);});}});})(jQuery);}flashembed=flashembed||{};flashembed.getVersion=function(){var version=[0,0];if(navigator.plugins&&typeof navigator.plugins["Shockwave Flash"]=="object"){var _d=navigator.plugins["Shockwave Flash"].description;if(typeof _d!="undefined"){_d=_d.replace(/^.*\s+(\S+\s+\S+$)/,"$1");var _m=parseInt(_d.replace(/^(.*)\..*$/,"$1"),10);var _r=/r/.test(_d)?parseInt(_d.replace(/^.*r(.*)$/,"$1"),10):0;version=[_m,_r];}}else if(window.ActiveXObject){try{var _a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{_a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");version=[6,0];_a.AllowScriptAccess="always";}catch(ee){if(version[0]==6){return;}}try{_a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(eee){}}if(typeof _a=="object"){_d=_a.GetVariable("$version");if(typeof _d!="undefined"){_d=_d.replace(/^\S+\s+(.*)$/,"$1").split(",");version=[parseInt(_d[0],10),parseInt(_d[2],10)];}}}return version;};flashembed.isSupported=function(version){var now=flashembed.getVersion();var ret=(now[0]>version[0])||(now[0]==version[0]&&now[1]>=version[1]);return ret;};