Suagencia.HTMLTemplates = 
{
	defaultOptions: $H({position:'top'}),
	items:new Hash(),
	config: function (event , vDOM)
	{
		if( vDOM )
			{var vTemps = $(vDOM).select("[suag:objeto~=HTMLtemplate]");}
		else
			{var vTemps = $$("[suag:objeto~=HTMLtemplate]");}		

		vTemps.each( function( obj ) {
			if (obj.readAttribute("suag:templateParam"))
			var vOptions = $H( obj.readAttribute("suag:templateParam").evalJSON() );
			new Suagencia.Classes.HTMLTemplate( obj.innerHTML , vOptions); 
		} );
	},
	draw: function(vDOM)
	{
		var vTemps = Suagencia.HTMLTemplates.items.values();
		for ( i = 0 ; i < vTemps.length ; i ++ )
			{vTemps[ i ].draw( vDOM );}
	},
	changeDefaultOptions: SuagenciaFramework.changeDefaultOptions
}

Suagencia.Classes.HTMLTemplate = Class.create();

Suagencia.Classes.HTMLTemplate.prototype = {
	initialize: function( vHTML , vOptions )
	{
		var vID = Suagencia.HTMLTemplates.items.size();
		Suagencia.HTMLTemplates.items.set( vID , this );

		if( vOptions )
			{this.Options = Suagencia.HTMLTemplates.defaultOptions.merge(vOptions)}
		else
			{this.Options = Suagencia.HTMLTemplates.defaultOptions.clone()}

		this.HTMLCode = new Template(vHTML);		
		this.vtext = vHTML
	},
	draw: function ( vDOM ) {
		if( vDOM )
			{var vTarget = $(vDOM).select( this.Options.get("target") ) }
		else
			{var vTarget = $$( this.Options.get("target") ) }

		vTarget.each( function( elemento ) {
				if( elemento.readAttribute("suag:templateValues" ) )
				{
					var valor = $H(elemento.readAttribute("suag:templateValues" ).evalJSON());
					elemento.insert( this.HTMLCode.evaluate( valor ));
				} else 
					{elemento.insert( this.HTMLCode.evaluate( $H({}) ))}
		} , this );
		return this;

	}	
}