function validateEmail(str) {
	var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return str.match(emailRegEx);
}

function erroConexao(dados, request) {
	var infoAdicional = '';
	if (dados != null) {
		infoAdicional += 'Informações adicionais:\n' + dados;
	}
	alert('Erro: Ocorreu um erro ao obter os dados do servidor. Verifique sua conexão e tente novamente mais tarde.\n' + infoAdicional);
}

function validar_form(campos) {
	for (i = 0; i < campos.length; i++) {
		var campo = dojo.byId(campos[i]);
		if (campo.value == "") {
			return false;
		}
	}
	return true;
}

function carregarValoresCombo(nivel, nomeCombo, idCategoria) {
   		combo = dijit.byId(nomeCombo);
   		var store = new dojo.data.ItemFileReadStore({url: 'php/cadastrar_produtos_listar_categorias.php?categoria=' + (idCategoria)});
   		combo.setValue('');
   		combo.store = store;
	}
   function categoriaSelecionada(nivel) {
   		store = dijit.byId('combo_' + nivel).store; //obtem o DataStore da combo que chamou esta funcao
   		
   		function gotItem(item) {
		    if (store.isItem(item)){
		    	idCategoriaPai = store.getValue(item,"id");
		    	
	    		console.debug("Setando o campo hidden " + "combo_" + nivel + "_id" + " para " + idCategoriaPai);
		    	dojo.byId("combo_" + nivel + "_id").value = idCategoriaPai; //seta o valor do campo hidden
		    	//O campo hiddenIdOriginal nao existe caso não esteja cadastrando produtos. Isto está envolvido na funcionalidade de 'atualizar o nome dos produtos'
		    	var hiddenIdOriginal = dojo.byId("combo_" + nivel + "_id_original");
		    	if (hiddenIdOriginal != null)
		    		hiddenIdOriginal.value = idCategoriaPai; //seta o valor do campo hidden
		    	
		    	if (nivel < 3) {
	    	   		nomeNovoCombo = 'combo_' + (nivel + 1);
	    	   		carregarValoresCombo(nivel, nomeNovoCombo, idCategoriaPai);
    	   		}
		    } else{
		    	for (i = nivel; i < 4; i++) {
		    		console.debug("esvaziando i = " + i);
		        	dojo.byId("combo_" + nivel + "_id").value = ''; //seta o valor do campo hidden para desconhecido, ou seja, criando novos campos
		        	dojo.byId("combo_" + i).store = null; //FIXME: nao esta funcionando (resetar a lista de valores conhecidos)
		        }
		        
		        //TODO: deve remover os itens listados (store) a partir das categorias que foram listadas anteriormente?
		        //provavel, porque caso o item não seja modificado ele irá manter o ID anterior, fazendo o banco de dados uma bagunça
		    }
		}
		//Invoke the lookup.  This is an async call as it may have to call back to a server to get data.
		store.fetchItemByIdentity({identity: dijit.byId('combo_' + nivel).getValue(), onItem: gotItem});
   }
   
   function show_message(msg) {
   	   dijit.byId('mensagem').setContent("<span class='txtcinzaeb9'>" + msg + "</span>");
   }
