﻿/*
 * Loads flash movies into the page by replacing custom placeholders with flash equivalents 
 * in order to get around Microsoft's ActiveX update which prevents immediate interaction with a movie.
 *
 * Example placeholder DIV:
 * <div class="flashPlaceHolder" name="HeaderTitleNoOverflow" width="777" height="135" align="middle" src="flash/HeaderTitleNoOverflow.swf" menu="false" loop="false" quality="high" bgcolor="#000000" flashvars="mainTitle=about us&fillColor=0x0095CC&photoUrl=photos/flash/HeaderTitle1.png"></div>
 * 
 * Example usage:
 * new FlashLoader("flashPlaceHolder"); - MUST NOT BE CALLED UNTIL AFTER THE PAGE LOADS! (i.e. use window.onload to trigger).
 *
 * Requirements: prototype v1.4+, which can be found at http://prototype.conio.net/
 */
FlashLoader = Class.create();

FlashLoader.prototype = {
    
    // Constructor.
    //
    // sClassName: The CSS class name applied to the placeholders in the page.
    initialize:function(sClassName) {
        // Get the placeholder objects that exist in the page.
        this.aElements = document.getElementsByClassName(sClassName); // If you want to write custom functionality that emulates this call you can drop the
                                                                      // prototype.js requirement.
        // Loop through the elements.
        for(var i = 0; i < this.aElements.length; i++) {
            var oAttr = this.buildAttributes(this.aElements[i]);
            var sHtml = this.buildHtml(oAttr);

            // Fill the elemnt with html.
            this.aElements[i].innerHTML = sHtml;
        }
    },
    
    // Builds the attribute list.
    buildAttributes:function(oElement) {
        // Create the defaults.
        var oAttr = {
            name: "",
            width: "100%",
            height: "100%",
            align: "middle",
            src: "",
            menu: "false",
            loop: "false",
            quality: "high",
            bgcolor: "",
            flashvars: ""    
        };
        
        // Replace the defaults with present attributes.
        for(property in oAttr) {
            if (oElement.attributes.getNamedItem(property)) {
                eval("oAttr." + property + "=\"" + oElement.attributes.getNamedItem(property).value + "\";");
            }
        }

        return oAttr;
    },
    
    // Builds the html.
    buildHtml:function(oAttr) {
        // Create the html.
        return "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0\" width=\"" + oAttr.width + "\" height=\"" + oAttr.height + "\" id=\"" + oAttr.name + "\" align=\"" + oAttr.align + "\">" +
                        "<param name=\"allowScriptAccess\" value=\"sameDomain\" />" +
                        "<param name=\"movie\" value=\"" + oAttr.src + "\" />" +
                        "<param name=\"menu\" value=\"" + oAttr.menu + "\" />" +
                        "<param name=\"loop\" value=\"" + oAttr.loop + "\" />" +
                        "<param name=\"quality\" value=\"" + oAttr.quality + "\" />" +
                        "<param name=\"bgcolor\" value=\"" + oAttr.bgcolor + "\" />" +
                        "<param name=\"flashvars\" value=\"" + oAttr.flashvars + "\">" +
                        "<embed src=\"" + oAttr.src + "\" flashvars=\"" + oAttr.flashvars + "\" menu=\"" + 
                            oAttr.menu + "\" loop=\"" + oAttr.loop + "\" quality=\"" + oAttr.quality + "\" bgcolor=\"" +
                            oAttr.bgcolor + "\" width=\"" + oAttr.width + "\" height=\"" + oAttr.height + "\" name=\"" +
                            oAttr.name + "\" align=\"" + oAttr.align + "\" allowScriptAccess=\"sameDomain\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" />" +
                    "</object>";
    }
}

Event.observe(window, "load", initializeFlashLoader, false);
function initializeFlashLoader() {
    new FlashLoader("flashPlaceHolder");
}