EmbedFlash = function(src, params, attrs) {
    this.src = src;
    this.params = params;
    this.attrs = attrs;
}

EmbedFlash.prototype = {
    embed: function(selector) {
        $(selector).get(0).innerHTML = this._generate();
    },
    
    write: function() {
      document.write(this._generate());
    },
    
    _generate: function() {
      return $.browser.msie ? this._generateForIe() : this._generateForOthers();
    },
    
    _generateForIe: function() {
        
        var params = this._addParams('', this.params);
        params = this._addParams(params, {movie: this.src});
        var attrs = this._addAttrs('', this.attrs);
        
        var html = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"'
                          + attrs + '>'
                          + params + '</object>';
        return html;
    },
    
    _generateForOthers: function() {
        var attrs = this._addAttrs('', this.attrs);
        attrs = this._addAttrs(attrs, this.params);
        attrs = this._addAttrs(attrs, {src: this.src});
        var html = '<embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"'
                          + attrs + '/>';
        return html;
    },
    
    _addAttrs: function(tag, attrs) {
        for(var i in attrs) {
            if(typeof attrs[i] == 'string') {
                tag += ' ' + i + '="' + attrs[i] + '"';
            }
        }
        return tag;
    }, 
    
    _addParams: function(str, params) {
        for(var i in params) {
            if(typeof params[i] == 'string') {
                str += '<param name="' + i + '" value="' + params[i] + '"/>';
            }
        }
        return str;
    }
}

