// XFlash Processor

var XFlash =
{
	factory: new Object(),
	
	flashVersion: 8,
	
	apply: function (context)
	{
		var elements = context[0] == null ? $("*.xf") : $("*.xf", context[0]);
		var elData;
		var r;
		for (var k = 0; k < elements.length; k++)
		{
			elData = XFlash.getParams( elements[k] );
			r = XFlash.factory[elData.type](elData);
			if ( r != null )
				XFlash.render( r, elData.element, k );
			
			//k == elements.length -1 && typeof callback == "function" && callback( elData );
		}
	},
	
	/*render: function ( recipe, target )
	{
		target = $(target);
		recipe.width = target.width();
		recipe.height = target.height();
		recipe.wmode = "transparent";
		target.flash 
		(
			recipe,
			{ version: XFlash.flashVersion }
		)
	},*/

	render: function ( recipe, target, num )
	{
		target = $(target);
		var dimensions = recipe.width != null ? 
			{ w:recipe.width, h:recipe.height } : 
			{ w: target.width(), h: target.height() };
			
		var flash = new SWFObject(recipe.src, "tituloFlash_"+num, dimensions.w, dimensions.h, this.flashVersion, "#336699");
		flash.addParam("wmode", "transparent");
		for (var key in recipe )
		{
			if ( key != "src" && key != "width" && key != "height" && key != "flashvars")
			{
				flash.addParam( key, recipe[key] );
			}
		}
		flash.doCache = false;//recipe.cache != null ? recipe.cache : true;
		var fv = recipe.flashvars;
		for ( var key in fv )
		{
			flash.addVariable(key, fv[key]);
		}
		
		flash.write(target[0]);
		//target.html(flash.getSWFHTML());
	},



	getParams: function ( el )
	{
		var params = el.className;
		params = params.substr( params.indexOf("xf ") + 3 ).split(" ");

		var ret	= new XFlash.ElementData( el, params );
		return ret;
	},
	
	ElementData: function ( el, params )
	{
		this.element = el;
		this.type = params[0];
		this.params = params.slice(1);
	},
	
	addFactory: function ( name, fnProcessor )
	{
		XFlash.factory[name] = fnProcessor;
	}
}

$( XFlash.apply );