// -----------------------------------------------
// ## Flash Object
// ## v1.0
// ## Hiz0, http://www.nkdeus.com/
// ## 02.09.07
// ## MooTools Inspired
// -----------------------------------------------

var $merge = function(){
	var mix = {};
	for(var i = 0; i < arguments.length; i++){
		for(var property in arguments[i]){
			var ap = arguments[i][property];
			var mp = mix[property];
			if(mp && typeof ap == 'object' && typeof mp == 'object') mix[property] = $merge(mp, ap);
			else mix[property] = ap;
		}
	}
	return mix;
};

var FlashUID = 0;
var Flash = function(movie, options){

	options = $merge({
		width: 1,
		height: 1,
		id: null,
		area: null,
		params: {
			quality: 'best',
			wmode: 'transparent',
			bgcolor: 'transparent',
			menu: 'false',
			scale: 'exactfit',
			allowScriptAccess: 'sameDomain'
		},
		properties: {},
		vars: {}
	}, options);

	var properties = $merge(options.properties, {
		id: options.id || 'AutoFlash' + (++FlashUID),
		width: options.width,
		height: options.height
	});
	var area = options.area;
	var params = options.params;
	var vars = options.vars;

	if(typeof vars == 'object'){
		var queryString = [];
		for(var property in vars) queryString.push(encodeURIComponent(property) + '=' + encodeURIComponent(vars[property]));
		vars = queryString.join('&');
	}
	if(vars) params.flashvars = (params.flashvars) ? (params.flashvars + '&' + vars) : vars;

	if(window.ActiveXObject){
		properties.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
		params.movie = movie;
	} else{
		properties.type = 'application/x-shockwave-flash';
		properties.data = movie;
	}

	var build = '<object';
	for(var attr in properties) build += ' ' + attr + '="' + properties[attr] + '"';
	build += '>';
	for(var name in params) build += '<param name="' + name + '" value="' + params[name] + '" />';
	build += '</object>';

	if(area){
		try{
			if(typeof area == 'object') area.innerHTML = build;
			else if(typeof area == 'string') document.getElementById(area).innerHTML = build;
		} catch(e){}
	}
	else document.write(build);

	return true;
};