/**
 *	Produto()
 *	Construtor do objeto Produto
 */
function Produto() {
	this.nome = null;
	this.opcao = null;
	this.qtd = 0;
	this.info = null;
	this.preco =  {
		aVista: null,
		aPrazo: null
	};
}


/**
 *	validaForm()
 *	Valida o formul?rio do produto
 *
 *	@return		False, se os dados n?o s?o v?lidos, ou um array com os dados, caso contr?rio
 *	@see		adicionarProduto()
 */
Produto.prototype.validaForm = function() {
	/**
	 *	Definindo valores
	 */
	var input, opcao, qtd, precoAVista, precoAPrazo,  nome;
	
	// nome
	nome = document.getElementsByTagName('h2')[0].innerHTML;
	for(var i = 0; (input = document.getElementsByTagName('input')[i]); i++) {
		// op??es e pre?o
		if(input.name == 'opcoes' && input.checked) {
			// pegando o pre?o direto do fieldset (toLowerCase porque no IE as tags ficam em mai?sculo)
			var preco = document.getElementById(('valor'+input.id.replace('opcao', '')));
			if (preco) {
				precoAVista = preco.getElementsByTagName('p')[0].innerHTML.toLowerCase().replace(' fixed_bound="true"', '').replace('<strong>preço à vista:</strong> r$', '');
				precoAPrazo = preco.getElementsByTagName('p')[1].innerHTML.toLowerCase().replace(' fixed_bound="true"', '').replace('<strong>preço 28 dias:</strong> r$', '');
			}
			opcao = input.value;
		}
		
		// quantidade
		if(input.name == 'qtd[]' && !input.parentNode.parentNode.disabled)
			qtd = input.value;
	}
	
	// informações de vazão e pressão
	var infoTextarea = document.getElementsByTagName('textarea')[0];
	var info = infoTextarea ? infoTextarea.value : null;
	
	/**
	 *	Valida??es
	 */
	// array com todos erros
	var erro = new Array();
	
	// op??es
	if(!opcao || opcao == 'undefined')
		erro.push('Você deve selecionar uma opção');
	
	// quantidade
	if(precoAVista && (!qtd || qtd == 'undefined' || qtd < 1 || isNaN(qtd)))
		erro.push('Você deve definir uma quantidade válida');
	
	if(erro.length) {
		// mostra todos erros
		for(var j = 0; (msg = erro[j]); j++)
			alert(msg);
		return false;
	}
	
	this.nome = nome;
	this.opcao = opcao;
	this.qtd = isNaN(qtd) ? 1 : parseInt(qtd);
	this.info = info;
	if(precoAVista && precoAPrazo) {
		this.preco.aVista = precoAVista;
		this.preco.aPrazo = precoAPrazo;
	}
	return true;
}