/*
	Montar seu prato v1
	Por					leonardo pereira
	
	funções para funcionamento da página
	
*/
	
	
	
	function gE ( id )
	{
		return document.getElementById(id);
	}
	
	function ControlElement ()
	{
		this.elements		= new Array(10);
		this.prato			= "none";
		this.subtipo		= "none";
		this.refogar		= "none";
		this.molho			= "none";
		this.sobremesa		= "none";
	}
	
	ControlElement.prototype.add = function ( element )
	{
		if ( !element )
			return false;
		for ( var i = 0, iMax = this.elements.length; i < iMax; i++ )
		{
			if ( this.elements[i] == "" || this.elements[i] == null )
			{
				this.elements[i]		=	element;
				return;
			}
		}
	}
	
	ControlElement.prototype.Delete = function ( element )
	{
		if ( !element )
			return false;
		for ( var i = 0, iMax = this.elements.length; i < iMax; i++ )
		{
			if ( this.elements[i] == element )
			{
				this.elements[i]		=	null;
				return;
			}
		}
	}
							
	ControlElement.prototype.list = function ()
	{
	
		var selectedes = Array(), pos = 0;
	
		for ( var i = 0, i_max = this.elements.length; i < i_max; i++ )
		{
			if ( this.elements[i] == null || this.elements[i] == "" )
			{
				continue;
			}
			selectedes[pos++] = this.elements[i];
		}
		
		var geCC = document.getElementById('campo_combina');
		
		if ( selectedes.length == 0 )
		{
			geCC.innerHTML = '';
			return false;
		}
		
		geCC.innerHTML = 'estamos pensando...';
	
		new Ajax ( 'index.php/monteseuprato/ajax/combinacom/' + selectedes.join(";"),
		{
			method:	'post',
			onSuccess:	function ( obj )
			{
				geCC.innerHTML = obj;
			}
		}).request();
	}
	
	ControlElement.prototype.kcal = function ()
	{
		
		var selectedes = Array(), pos = 0;
		
		for ( var i = 0, i_max = this.elements.length; i < i_max; i++ )
		{
			if ( this.elements[i] == null || this.elements[i] == "" )
				continue;
			selectedes[pos++] = this.elements[i];
		}
		
		var calorias = document.getElementById('campo_calorias');
		
		if ( selectedes.length == 0 )
			cal_sel	=	"none";
		else
			cal_sel =	selectedes.join(";");
		
		new Ajax ( 'index.php/monteseuprato/ajax/calorias/' + cal_sel + '/' + this.prato + '/' + this.subtipo + '/' + this.refogar + '/' + this.molho + '/' + this.sobremesa,
		{
			method:		'post',
			onSuccess:	function ( obj )
			{
				calorias.innerHTML = obj;
			}
		}).request();
		
	}
	
	
	var element = new ControlElement();
	
	gE('prato_molho').onchange = function ()
	{
		element.molho = this.value;
		element.kcal();
	}
	
	gE('prato_refogar').onchange = function ()
	{
		element.refogar = this.value;
		element.kcal();
	}
	
	gE('sobremesa').onchange = function ()
	{
		element.sobremesa = this.value;
		element.kcal();
	}
	
	function mudarPrato ( label )
	{
		var pratos_mb = {"massas_farfalle":"massas_farfalle", "massas_penne":"massas_penne", "massas_fettuccine":"massas_fettuccine", "massas_spaghetti":"massas_spaghetti", "massas_fusilli_integrale":"massas_fusilli_integrale"};
		
		element.prato = label;
		element.kcal();
		
		if ( pratos_mb[label] )
		{
			var setHTML = '<select class="form_selec" name="prato_subtipo" id="prato_subtipo" onchange="setSubTipo(this.value);" style="width:155px; height:22px">';
			setHTML += '<option value="" selected="selected">Sub-tipo</option>';
			setHTML += '<option value="bambini">Bambini - 4 ingredientes</option>';
			setHTML += '<option value="normal">Normal - 8 ingredientes</option>';
			setHTML += '<option value="mamma">Mamma- 10 ingredientes</option>';
			setHTML += '</select>';
			gE('campo_subtipo').innerHTML = setHTML;
		}
		else
		{
			var setHTML = '<select class="form_selec" name="prato_subtip" id="prato_subtipo2" style="width:155px; height:22px">';
			setHTML += '<option value="">sem sub-tipo</option>';
			setHTML += '</select>';
			gE('campo_subtipo').innerHTML = setHTML;
			setaIngredientes(8);
		}
	}
	
	var ingredientes_qtd_def = 8;
	
	function setaIngredientes ( qtd )
	{
		var iDiv = gE('ingredientes_qtd_max');
		if ( qtd < 10 )
			iDiv.innerHTML = "0"+qtd;
		else
			iDiv.innerHTML = qtd;
		var ig = parseInt(Number(gE('ingredientes_qtd_atual').innerHTML));
		if ( ig > parseInt(Number(iDiv.innerHTML)) )
			ingredientesLimpar();
		ingredientes_qtd_def = qtd;
	}
	
	function ingredientesLimpar ()
	{
		var ings = ["abobrinha", "alcaparras", "alho_poro", "atum", "azeitona_verde", "bacon", "beringela", "brocolis", "camarao", "carne_de_sol", "castanha_de_caju", "cebola", "cenoura", "champignon", "ervilha", "espinafre", "frango", "gorgonzola", "kani", "ling_calabresa", "milho", "mussarela", "nozes", "ovo_codorna", "palmito", "passas", "peito_de_peru_coz", "pimentao", "presunto", "queijo_coalho", "queijo_minas", "mussarela_bufala", "salame", "salmao", "tomate", "tomate_seco"];
		for ( i = 0, maxI = ings.length; i < maxI; i++ )
		{
			gE('ing['+ings[i]+']').value = 0;
		}
		gE('ingredientes_qtd_atual').innerHTML = "00";
	}
	
	function setSubTipo ( num )
	{
		var labelsPratos = {"":8,"bambini":4,"normal":8,"mamma":10};
		setaIngredientes(labelsPratos[num]);
		element.subtipo = num;
		element.kcal();;
	}
	
	function updateIngredientes ( id, value )
	{
		
		// verifica se prato, refogar e molho foram escolhidos antes
		var s = {
			"prato":	gE('prato_frm_principal'),
			"refogar":	gE('prato_refogar'),
			"molho":	gE('prato_molho')
		}
		
		if ( s.prato.value == "" || s.prato.value == null )
		{
			alert("Antes de começar a escolher os ingredientes, escolha o seu prato !");
			s.prato.focus();
			return false;
		}
		
		if ( s.refogar.value == "" || s.refogar.value == null )
		{
			if ( s.prato.value.substr(0,7) != "saladas" )
			{
				alert("Antes de começar a escolher os ingredientes, escolha se vai querer refogar no azeite ou na manteiga !");
				s.refogar.focus();
				return false;
			}
		}
		
		if ( s.molho.value == "" || s.molho.value == null )
		{
			alert("Antes de começar a escolhe os ingredientes, escolha o molho !");
			s.molho.focus();
			return false;
		}
		
		var doc = gE('ing['+id+']'), newV = Number(doc.value)+value, ingV = parseInt(Number(gE('ingredientes_qtd_atual').innerHTML)), maxV = parseInt(Number(gE('ingredientes_qtd_max').innerHTML)), newVI = ingV + value;
		//alert("newV: "+newV+" | ingV: "+ingV+" | maxV: "+maxV+" | newVI: "+newVI);
		if ( newV > 8 )
		{
			newV = 8;
			newVI = ingV;
			
		}
		else if ( newV < 0 )
		{
			newV = 0;
			newVI = ingV;
		}
		else if ( newVI < 0 )
		{
			newVI = ingV;
		}
		else if ( newVI > maxV )
		{
			newVI = ingV;
			newV = doc.value;
		}
		
		if ( newV < 8 || newV > 0 )
		{
			//combina-com
		
			if ( value == '1' )
				element.add(id);
			else
				element.Delete(id);
			
			element.list();
			element.kcal();
			
		}
		
		doc.value = newV;
		gE('ingredientes_qtd_atual').innerHTML = ( newVI < 10 ) ? "0"+newVI : newVI;
		
	}