/* Copyright (c) 2007 Spill Group. Parts by Alessandro Fulciniti (a.fulciniti@html.it). */
var flash = new Object();
flash.load = function (typ, name, path, asag, width, height, wm) {
    if (typeof deconcept == "undefined") {
        var deconcept = new Object()
    }
    if (typeof deconcept.util == "undefined") {
        deconcept.util = new Object()
    }
    if (typeof deconcept.SWFObjectUtil == "undefined") {
        deconcept.SWFObjectUtil = new Object()
    }
    deconcept.SWFObject = function (swf, id, w, h, ver, c, quality, xiRedirectUrl, redirectUrl, detectKey) {
        if (!document.getElementById) {
            return
        }
        this.DETECT_KEY = detectKey ? detectKey : 'detectflash';
        this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY);
        this.params = new Object();
        this.variables = new Object();
        this.attributes = new Array();
        if (swf) {
            this.setAttribute('swf', swf)
        }
        if (id) {
            this.setAttribute('id', id)
        }
        if (w) {
            this.setAttribute('width', w)
        }
        if (h) {
            this.setAttribute('height', h)
        }
        if (ver) {
            this.setAttribute('version', new deconcept.PlayerVersion(ver.toString().split(".")))
        }
        this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion();
        if (!window.opera && document.all && this.installedVer.major > 7) {
            deconcept.SWFObject.doPrepUnload = true
        }
        if (c) {
            this.addParam('bgcolor', c)
        }
        var q = quality ? quality : 'high';
        this.addParam('quality', q);
        this.setAttribute('useExpressInstall', false);
        this.setAttribute('doExpressInstall', false);
        var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location;
        this.setAttribute('xiRedirectUrl', xir);
        this.setAttribute('redirectUrl', '');
        if (redirectUrl) {
            this.setAttribute('redirectUrl', redirectUrl)
        }
    };

    deconcept.SWFObject.prototype = {
        useExpressInstall: function (path) {
            this.xiSWFPath = !path ? "expressinstall.swf" : path;
            this.setAttribute('useExpressInstall', true)
        },
        setAttribute: function (name, value) {
            this.attributes[name] = value
        },
        getAttribute: function (name) {
            return this.attributes[name]
        },
        addParam: function (name, value) {
            this.params[name] = value
        },
        getParams: function () {
            return this.params
        },
        addVariable: function (name, value) {
            this.variables[name] = value
        },
        getVariable: function (name) {
            return this.variables[name]
        },
        getVariables: function () {
            return this.variables
        },
        getVariablePairs: function () {
            var variablePairs = new Array();
            var key;
            var variables = this.getVariables();
            for (key in variables) {
                variablePairs[variablePairs.length] = key + "=" + variables[key]
            }
            return variablePairs
        },
        getSWFHTML: function () {
            var mctype = '"application/x-shockwave-flash"';
            var classid = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000';
            var swfNode = "";
            if (typ == 'sw') {
                mctype = 'type="application/x-director"';
                classid = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000'
            }
            if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) {
                if (this.getAttribute("doExpressInstall")) {
                    this.addVariable("MMplayerType", "PlugIn");
                    this.setAttribute('swf', this.xiSWFPath)
                }
                swfNode = '<embed ' + mctype + ' src="' + this.getAttribute('swf') + '" width="' + this.getAttribute('width') + '" height="' + this.getAttribute('height') + '" style="' + this.getAttribute('style') + '" allowScriptAccess="' + asag + '" pluginspage="http://www.macromedia.com/go/getflashplayer"';
                swfNode += ' name="' + this.getAttribute('id') + '" ';
                var params = this.getParams();
                for (var key in params) {
                    swfNode += [key] + '="' + params[key] + '" '
                }
                var pairs = this.getVariablePairs().join("&");
                if (pairs.length > 0) {
                    swfNode += 'flashvars="' + pairs + '"'
                }
                swfNode += '/>'
            } else {
                if (typ == 'sw') {
                    swfNode = '<object id="' + this.getAttribute('id') + '" classid="' + classid + '" width="' + this.getAttribute('width') + '" height="' + this.getAttribute('height') + '" style="' + this.getAttribute('style') + '">';
                    var params = this.getParams();
                    for (var key in params) {
                        swfNode += '<param name="' + key + '" value="' + params[key] + '" />'
                    }
                    swfNode += '<param name="allowScriptAccess" value="' + asag + '" />';
                    swfNode += '<param name="src" value="' + this.getAttribute('swf') + '" />';
                    swfNode += '<param name="swStretchStyle" value="meet" />';
                    swfNode += "</object>"
                } else {
                    if (this.getAttribute("doExpressInstall")) {
                        this.addVariable("MMplayerType", "ActiveX");
                        this.setAttribute('swf', this.xiSWFPath)
                    }
                    swfNode = '<object id="' + this.getAttribute('id') + '" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + this.getAttribute('width') + '" height="' + this.getAttribute('height') + '" style="' + this.getAttribute('style') + '">';
                    swfNode += '<param name="movie" value="' + this.getAttribute('swf') + '" />';
                    swfNode += '<param name="allowScriptAccess" value="' + asag + '" />';
                    var params = this.getParams();
                    for (var key in params) {
                        swfNode += '<param name="' + key + '" value="' + params[key] + '" />'
                    }
                    var pairs = this.getVariablePairs().join("&");
                    if (pairs.length > 0) {
                        swfNode += '<param name="flashvars" value="' + pairs + '" />'
                    }
                    swfNode += "</object>"
                }
            }
            return swfNode
        },
        write: function (elementId) {
            if (this.getAttribute('useExpressInstall')) {
                var expressInstallReqVer = new deconcept.PlayerVersion([6, 0, 65]);
                if (this.installedVer.versionIsValid(expressInstallReqVer) && !this.installedVer.versionIsValid(this.getAttribute('version'))) {
                    this.setAttribute('doExpressInstall', true);
                    this.addVariable("MMredirectURL", escape(this.getAttribute('xiRedirectUrl')));
                    document.title = document.title.slice(0, 47) + " - Flash Player Installation";
                    this.addVariable("MMdoctitle", document.title)
                }
            }
            if (this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))) {
                var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;
                n.innerHTML = this.getSWFHTML();
                return true
            } else {
                if (this.getAttribute('redirectUrl') != "") {
                    document.location.replace(this.getAttribute('redirectUrl'))
                }
            }
            return false
        }
    };
    deconcept.SWFObjectUtil.getPlayerVersion = function () {
        var PlayerVersion = new deconcept.PlayerVersion([0, 0, 0]);
        if (navigator.plugins && navigator.mimeTypes.length) {
            var x = navigator.plugins["Shockwave Flash"];
            if (x && x.description) {
                PlayerVersion = new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."))
            }
        } else if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0) {
            var axo = 1;
            var counter = 3;
            while (axo) {
                try {
                    counter++;
                    axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + counter);
                    PlayerVersion = new deconcept.PlayerVersion([counter, 0, 0])
                } catch (e) {
                    axo = null
                }
            }
        } else {
            try {
                var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")
            } catch (e) {
                try {
                    var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
                    PlayerVersion = new deconcept.PlayerVersion([6, 0, 21]);
                    axo.AllowScriptAccess = asag
                } catch (e) {
                    if (PlayerVersion.major == 6) {
                        return PlayerVersion
                    }
                }
                try {
                    axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash")
                } catch (e) {}
            }
            if (axo != null) {
                PlayerVersion = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","))
            }
        }
        return PlayerVersion
    };
    deconcept.PlayerVersion = function (arrVersion) {
        this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0;
        this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0;
        this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0
    };
    deconcept.PlayerVersion.prototype.versionIsValid = function (fv) {
        if (this.major < fv.major) {
            return false
        }
        if (this.major > fv.major) {
            return true
        }
        if (this.minor < fv.minor) {
            return false
        }
        if (this.minor > fv.minor) {
            return true
        }
        if (this.rev < fv.rev) {
            return false
        }
        return true
    };
    deconcept.util = {
        getRequestParameter: function (param) {
            var q = document.location.search || document.location.hash;
            if (param == null) {
                return q
            }
            if (q) {
                var pairs = q.substring(1).split("&");
                for (var i = 0; i < pairs.length; i++) {
                    if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
                        return pairs[i].substring((pairs[i].indexOf("=") + 1))
                    }
                }
            }
            return ""
        }
    };
    deconcept.SWFObjectUtil.cleanupSWFs = function () {
        var objects = document.getElementsByTagName("OBJECT");
        for (var i = objects.length - 1; i >= 0; i--) {
            objects[i].style.display = 'none';
            for (var x in objects[i]) {
                if (typeof objects[i][x] == 'function') {
                    objects[i][x] = function () {}
                }
            }
        }
    };
    if (deconcept.SWFObject.doPrepUnload) {
        if (!deconcept.unloadSet) {
            deconcept.SWFObjectUtil.prepUnload = function () {
                __flash_unloadHandler = function () {};
                __flash_savedUnloadHandler = function () {};
                window.attachEvent("onunload", deconcept.SWFObjectUtil.cleanupSWFs)
            };
            window.attachEvent("onbeforeunload", deconcept.SWFObjectUtil.prepUnload);
            deconcept.unloadSet = true
        }
    }
    if (!document.getElementById && document.all) {
        document.getElementById = function (id) {
            return document.all[id]
        }
    }
    var getQueryParamValue = deconcept.util.getRequestParameter;
    var FlashObject = deconcept.SWFObject;
    var SWFObject = deconcept.SWFObject;
    var width = width > 0 ? width : '100%';
    var height = height > 0 ? height : '100%';
    var fla = new FlashObject(path, name + "_mc", width, height, "6");
    if (wm == 'transparent') {
        fla.addParam("wmode", "transparent")
    }
    fla.write(name)
};

function getFlashMovieObject(movieName) {
    if (window.document[movieName]) {
        return window.document[movieName];
    }
    if (navigator.appName.indexOf("Microsoft Internet") == -1) {
        if (document.embeds && document.embeds[movieName]) {
            return document.embeds[movieName];
        }
    } else {
        return document.getElementById(movieName);
    }
};
var preTimer = 15000;
var actPerc = 0;
var preFull = 15000;
var spillpretimeout = null;
var sometime = null;
var spillpreLang = new Array();

spillpreLang['whileloading'] = 'Game is being loaded';
spillpreLang['clicktoclose'] = 'Close the advertisement and go on to the game';

function showSpillGameNow(movieName, dWidth, dHeight, cbfoo) {
    $("#spillpre_ad").hide();
    $("#" + movieName).css('width', dWidth + 'px');
    $("#" + movieName).css('height', dHeight + 'px');
    clearTimeout(spillpretimeout);
    spillpretimeout = -1;
    try {
        var callback = eval(cbfoo);
        callback();
    } catch (e) {
        try {
            console.log('CANNOT CALL CALLBACK FUNCTION (after)');
        } catch (e) {}
    }
    showSpillGameNow = function () {};
};

function check98percent(oldvalue, moviename, timer, dWidth, dHeight, cbfoo) {
    var showmoviename = moviename.substr(0, moviename.length - 3);
    var fromTimer = parseInt((preFull - timer) * 100 / preFull);
    var flashMovie = getFlashMovieObject("" + moviename);
    var loaded = flashMovie.PercentLoaded();
    if (oldvalue == loaded) {
        showSpillGameNow(showmoviename, dWidth, dHeight, cbfoo);
        if (sometime != null) {
            clearTimeout(sometime);
            sometime = null;
        }
    }
};

function SpillPreload(moviename, dWidth, dHeight, timer, bwidth, cbfoo) {
    var showmoviename = moviename.substr(0, moviename.length - 3);
    var fromTimer = parseInt((preFull - timer) * 100 / preFull);
    var flashMovie = getFlashMovieObject("" + moviename);
    var loaded = flashMovie.PercentLoaded();
    if (loaded < 0) loaded = 100;
    actPerc = fromTimer < loaded ? fromTimer : loaded;
    var barContainerWidth = bwidth;
    var barWidth = parseInt((actPerc * barContainerWidth) / 100);
    $("#spillpre_bar").css('width', barWidth + 'px');
    $("#spillpre_percent").html('<span>' + actPerc + '%</span>');
    preTimer -= 200;
    if (fromTimer >= 100) {
        sometime = setTimeout("check98percent('" + loaded + "','" + moviename + "','" + timer + "','" + dWidth + "', '" + dHeight + "', '" + cbfoo + "')", 2500);
    };
    if (actPerc < 100) {
        if (loaded >= 100) {
            $("#spillpre_whilead").hide();
            $("#spillpre_closead").show();
        }
        if (spillpretimeout != -1) {
            spillpretimeout = setTimeout("SpillPreload('" + moviename + "','" + dWidth + "','" + dHeight + "','" + preTimer + "','" + bwidth + "','" + cbfoo + "')", 200);
        }
    } else {
        clearTimeout(spillpretimeout);
        spillpretimeout = -1;
        showSpillGameNow(showmoviename, dWidth, dHeight, cbfoo);
    }
};
var flashLoadTries = 0;
var flashLoadTriesMax = 3;

function startPreloaderIfMovieExist(mc, w, h, t, bw, cba) {
    flashLoadTries++;
    try {
        var flashMovie_temp = getFlashMovieObject(mc);
        var loaded_temp = flashMovie_temp.PercentLoaded();
        spillpretimeout = setTimeout("SpillPreload('" + mc + "', '" + w + "','" + h + "','" + t + "','" + bw + "','" + cba + "')", 500);
    } catch (e) {
        if (flashLoadTries <= flashLoadTriesMax) {
            try {
                console.log('couldn\'t load preloader [' + flashLoadtries + ']');
            } catch (e) {}
            setTimeout("startPreloaderIfMovieExist('" + mc + "', '" + w + "','" + h + "','" + t + "','" + bw + "','" + cba + "')", 1000);
        } else {
            var mn = mc.substr(0, mc.length - 3);
            showSpillGameNow(mn, w, h, cba);
            try {
                console.log('couldn\'t load preloader after ' + flashLoadTries + ' tries.');
            } catch (e) {}
        }
    }
};

function showSpillPreloader(flashDivId, ad, width, height, barwidth, cbfooBefore, cbfooAfter, extraParams) {
    if (cbfooBefore != null) {
        try {
            var callbackBefore = eval(cbfooBefore);
            callbackBefore();
        } catch (e) {
            try {
                console.log('CANNOT CALL CALLBACK FUNCTION (before)');
            } catch (e) {}
        }
    }
    try {
        if (js_spillpre_whileloading != '' && js_spillpre_whileloading != null && js_spillpre_whileloading != "undefined") {
            spillpreLang['whileloading'] = js_spillpre_whileloading;
        }
        if (js_spillpre_click2close != '' && js_spillpre_click2close != null && js_spillpre_click2close != "undefined") {
            spillpreLang['clicktoclose'] = js_spillpre_click2close;
        }
    } catch (e) {}
    var barWidth = barwidth;
    $("#" + flashDivId).css('width', '0px');
    $("#" + flashDivId).css('height', '0px');
    $("#" + flashDivId).after('<div id="spillpre_ad"><div id="spillpre_loader"><div id="spillpre_bar">&#160;</div></div></div>');
    $("#spillpre_ad").css('width', extraParams.ad_width + 'px');
    $("#spillpre_ad").prepend('<div id="spillpre_adcont">' + ad + '</div>');
    $("#spillpre_ad").append('<div id="spillpre_c2c_container"></div>');
    if (extraParams.loading_bar == '0') {
        $("#spillpre_loader").hide();
        $("#spillpre_c2c_container").hide();
    }
    $("#spillpre_c2c_container").css('width', barWidth + 'px');
    $("#spillpre_c2c_container").append('<div id="spillpre_click2close"><div id="spillpre_whilead">' + spillpreLang['whileloading'] + '</div></div>');
    $("#spillpre_c2c_container").append('<div id="spillpre_percent">&#160;</div>');
    $("#spillpre_click2close").css('width', (barWidth - 35) + 'px');
    $("#spillpre_percent").css('width', '35px');
    $("#spillpre_c2c_container").after('<div id="spillpre_clear">&#160;</div>');
    $("#spillpre_loader").css('width', barWidth + 'px');
    $("#spillpre_click2close").append('<a id="spillpre_closead" href="#" onClick="showSpillGameNow(\'' + flashDivId + '\',\'' + width + '\',\'' + height + '\',\'' + cbfooAfter + '\'); return false;" style="display: none;">' + spillpreLang['clicktoclose'] + '</a>');
    setTimeout("startPreloaderIfMovieExist('" + flashDivId + "_mc', '" + width + "','" + height + "','" + preTimer + "','" + barWidth + "','" + cbfooAfter + "')", 7000);
};
