var Monte = function( $target )
{
	if( !$target ) return;
	this.targetForm = $target;

	// criando div para suportar as tabelas
	this.containerDiv = DOM.create( 'div' );
	DOM.before( this.containerDiv , $t('input', $('formMonteSeuMicro'))[0].parentNode );

	// criando o feedback do valor
	var fv = DOM.create( 'div' );
	fv.className = 'feedback';

	var tn = document.createTextNode( 'Valor total de seu micro:' );
	DOM.inside( tn, fv );

	this.feedbackValor = DOM.create('strong');
	this.feedbackValor.setAttribute( 'id', 'feedbackValor' );
	DOM.inside( this.feedbackValor, fv );

	DOM.after( fv , this.containerDiv );

	// parseando as linhas
	var o=this;
	$target.$t('input').forEach(
		function( el )
		{
			if( el.getAttribute('id').substring(0, 32) == 'formMonteSeuMicro_produtoDaLinha' )
				o.parseLinha(el);

		}
	);

	this.valor = 0;
	Monte.instance = this;
}

Monte.prototype.parseLinha = function(el)
{
	var linha, texto, o=this;


	el.parentNode.style.display = 'none';

	linha = DOM.create( 'div' );
	linha.className = 'linha';
	texto = el.previousSibling.innerHTML;
	texto = texto.substring(17, texto.length-1 );

	linha.innerHTML = texto;
	linha.idLin = el.getAttribute('id').substring(32);
	linha.setAttribute( 'id' , 'linha'+ linha.idLin );

	Evt.add( linha, 'click', function(){ o.toggleLinha(this); } );


	DOM.inside( linha , this.containerDiv );
}

Monte.prototype.toggleLinha = function(el)
{
	var $id = 'produtosDaLinha'+el.idLin;
	if( !el.loaded && !el.loading ) {

		el.loading = 1;

		var a = new Ajax();

		// criando a div que conterá os produtos
		var d = DOM.create( 'div' );
		d.setAttribute('id', $id);
		d.className = 'loading';
		DOM.after( d, el );

		a.setTarget(d);

		a.onComplete = function(r) {
			// new Animator
			d.className = 'loaded';
			el.loaded = 1;
			el.loading = null;

			this.content(r);
		};
		a.makeFeedBack("Processando...", "activity");
		a.callServer( URL +'produto/MonteProdutosDaLinha/' + el.idLin );
	} else if( el.loaded ) {
		var $tgt = $($id);
		if( $tgt.getStyle("display")=='block') $tgt.style.display='none';
		else if($('formMonteSeuMicro_produtoDaLinha'+el.idLin).value.toString().length==0) $tgt.style.display='block';
	}
}

Monte.prototype.atualizaValor = function()
{
	var v = this.valor.toString() , comma=v.length-2;
	var reais = comma<0 ? 0 : v.substring( 0, comma );
	this.feedbackValor.innerHTML = "R$"+ reais +','+ v.substring( comma );
}

Monte.adicionar = function( $linha, $id, $preco )
{
	if( ! $preco ) return;
	Monte.instance.valor += $preco;
	Monte.instance.atualizaValor();

	$('formMonteSeuMicro_produtoDaLinha'+$linha).value = $id;
	var ntr = $('tr'+$id).cloneNode(true);

	ntr.setAttribute('id','');
	var $link = $t('a', ntr)[0];
	$link.innerHTML = 'Trocar';
	$link.setAttribute('title', 'trocar produto');
	$link.parentNode.className = 'trocar';
	$link.setAttribute('href','javascript:Monte.retirar('+$linha+','+$preco+')');

	var $table, $tbody, btnLinha=$('linha'+ $linha);



	$table = DOM.create( 'table' );
	$table.className = 'selecionado';
	$tbody = DOM.create( 'tbody' );

	DOM.inside( ntr, $tbody );
	DOM.inside( $tbody, $table );
	DOM.after( $table, btnLinha );


	Monte.instance.toggleLinha(btnLinha);
}

Monte.retirar = function( $linha, $preco )
{
	Monte.instance.valor -= $preco;
	Monte.instance.atualizaValor();

	$('formMonteSeuMicro_produtoDaLinha'+$linha).value = '';

	var btnLinha = $('linha'+$linha);
	DOM.rem(btnLinha.nextSibling);
	Monte.instance.toggleLinha(btnLinha);
}

Monte.init = function( $target ) { new Monte($target); };

onElementLoad( 'formMonteSeuMicro', Monte.init );