(function($){
	$.fn.InsertObject = function(settings) {
		var fn = new Object();
		var o = this;
		
		settings = jQuery.extend({
			bgcolor: '#ffffff',
			quality: 'high',
			cache: 'true',
			autoplay: 'true',
			controller: 'true',
			scale: 'tofit',
			version: '9,0,0,0',
			allowscriptaccess: 'always',
			wmode: 'transparent',
			loop: 'false',
			append: false,
			flashVars: null,
			type: null,
			classid: null,
			other: null,
			src: null
		}, settings);
		
		fn.createObject = function(param, classid, codebase) {
			var object = new String();
			if ($.browser.msie) {
				if (classid) {
					classid = ' classid="' + classid + '"';
				} else {
					classid = '';
				}
				if (codebase) {
					codebase = ' codebase="' + codebase + '"';
				} else {
					codebase = '';
				}
				object += '<object id="objInsert_' + o.attr('id') + '"' + classid + codebase + settings.type + ' height="' + settings.height + '" width="' + settings.width + '">\n';
				for (var i = 0; i < param.length; i++) {
					object += '<param name="' + param[i][0] + '" value="' + param[i][1] +'">\n';
				}
				object += '</object>\n';
			} else {
				if (settings.type) {
					settings.type = ' type="' + settings.type + '"';
				} else {
					settings.type = '';
				}
				if (settings.src) {
					settings.src = ' src="' + settings.src + '"';
				} else {
					settings.src = '';
				}
				object += '<embed name="objInsert_' + o.attr('id') + '"' + settings.src + settings.type + ' width="' + settings.width + '" height="' + settings.height + '" ';
				for (var i = 0; i < param.length; i++) {
					object += param[i][0] + '="' + param[i][1] +'" ';
				}
				object += ' />\n';
			}
			return object;
		};
		
		fn.createParams = function() {
			var param = new Array();
			var classid, codebase;
			
			if (settings.type) {
				classid = settings.classid;
				codebase = null;
			} else if (settings.src.indexOf('.mov') != -1 || settings.src.indexOf('.mp3') != -1 || settings.src.indexOf('.mp4') != -1 || settings.src.indexOf('.m4v') != -1) {
				classid = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';
				codebase = 'http://www.apple.com/qtactivex/qtplugin.cab';
				param[0] = ['pluginspage', 'http://www.apple.com/quicktime/download/'];
				param[1] = ['src', settings.src];
				param[2] = ['controller', settings.controller];
				param[3] = ['autoplay', settings.autoplay];
				param[4] = ['cache', settings.cache];
				param[5] = ['scale', settings.scale];
			} else if (settings.src.indexOf('.swf') != -1) {
				classid = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000';
				codebase = 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + settings.version;
				param[0] = ['pluginspage', 'http://www.macromedia.com/go/getflashplayer'];
				param[1] = ['movie', settings.src];
				param[2] = ['quality', settings.quality];
				param[3] = ['bgcolor', settings.bgcolor];
				param[4] = ['allowscriptaccess', settings.allowscriptaccess];
				param[5] = ['flashvars', settings.flashVars];
				param[6] = ['wmode', settings.wmode];
				param[7] = ['scale', settings.scale];
				param[8] = ['type', 'application/x-shockwave-flash'];
			}
			if (settings.other) {
				for (var paramName in settings.other) {
					param[param.length] = [paramName, settings.other[paramName]];
				}
			}
			
			if ($.browser.msie) {
				o.each(function() {
				    if (!settings.append) {
					    this.innerHTML = fn.createObject(param, classid, codebase);
					} else {
					    this.innerHTML += fn.createObject(param, classid, codebase);
					}
				});
			} else {
			    if (!settings.append) {
				    o.html(fn.createObject(param, classid, codebase));
				} else {
				    o.append(fn.createObject(param, classid, codebase));
				}
			}
		};
		fn.createParams();
	}
})(jQuery);