//Introdução ao funcionamento
//
// IU->Função Geral->CallBack
//
// UI - Funções que manipulam a interface ou recebem eventos do visitante
//		As funções de UI deve retorna 'false' para evitar que se gere o link '#'

// Funções Gerais - São as que chamam as funções de maneira assincrona
// CallBack - Como funciona de maneira assincrona, as funções callback recebem as ações ora para demostrar alguma mensagem, ora manipular as atividades de UI
//
//

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Funções de Interface Humana quando não for possível ficar dentro do Jquery
//
//

//Definições de constates
var CONSTTimeout = 6000;
var gintProximoIdImovel;
var gblnSemaforo = 1; //Vermelho


gintProximoIdImovel = -1;

//Quando um documento for carregado, vincula os controles aos eventos
$(document).ready(function() {
//Funções de tratamento de UI
//
//

	//Quando clica no botão para cadastrar
	$("#btnCadatreseFormCadastrar").click(function() {
		Registration("RegistrationCallBackSuccess","RegistrationCallBackFailure");
	});

	//Quando clica no botão de enviar senha
	$("#btnForgetPassword").click(function() {
		ForgetPassword("ForgetPasswordCallBackSuccess", "ForgetPasswordCallBackFailure");
	});

	//Quando clica no link de logout
	$("#lnkIndexLogout").click(function() {
		Logout("LogoutCallBackSuccess","LogoutCallBackFailure");
		//Retorna false para evitar o back
		return false;		
	});

	//Quando clica no botão de login
	$("#btnLogin").click(function() {
		Login($("#email").val(), $("#password").val(), "LoginCallBackSucess", "LoginCallBackFailure");
	});
	
	
	//Quando o Link para Logar for clicado
	$("#lnkIndexFormReg").click(function() {
		//Esconde as anteriores
		$("#divIndexFormLogin").hide();
		//	
		$("#divFormReg").show();
		
		//Retorna false para evitar o back
		return false;
	});	
	
	$("#lnkIndexLogin").click(function() {
		//Esconde as anteriores
		$("#divFormReg").hide();
		//
		$("#divIndexFormLogin").show();
		
		//Retorna false para evitar o back
		return false;		
	});

	//Quando o link do Formulário de Login para o Formulario de Registro for clicado
	$("#lnkFormLoginToFormReg").click(function() {
		$("#divIndexFormLogin").hide();
		$("#divFormReg").show();
		
		//Retorna false para evitar o back
		return false;
	});
	
	//Quando o link do Formulário de Login para o Formulario de Esquecer a senha for clicado
	$("#lnkFormLoginToFormForgetPassword").click(function() {
		$("#divIndexFormLogin").hide();	
		$("#divIndexFormForgetPassword").show();
		
		//Retorna false para evitar o back
		return false;
	});	
	
	//Quando o link do Formulário de Esqueceu a senha para o Formulario de Cadastro a senha for clicado
	$("#lnkFormForgetPasswordToFormReg").click(function() {
		$("#divIndexFormForgetPassword").hide();
		$("#divFormReg").show();
		//Retorna false para evitar o back
		return false;
		
	});	
	
	//Quando o link do Formulário de Cadastro  para o Formulario de Login  a senha for clicado
	$("#lnkFormRegToFormLogin").click(function() {
		$("#divFormReg").hide();	
		$("#divIndexFormLogin").show();
		//Retorna false para evitar o back
		return false;

	});	
	

	//Quando o botão Fechar do Form Login
	$("#lnkCloseFormLogin").click(function() {
		$("#divIndexFormLogin").hide();
		//Retorna false para evitar o back
		return false;
		
	});	

	//Quando o botão Fechar do Form Esqueceu a senha
	$("#lnkCloseFormForgetPassword").click(function() {
		$("#divIndexFormForgetPassword").hide();
		//Retorna false para evitar o back
		return false;
		
	});	

	//Quando o botão Fechar do Form Reg
	$("#lnkCloseFormReg").click(function() {
		$("#divFormReg").hide();
		//Retorna false para evitar o back
		return false;
		
	});
	
	$("#lnkAddBookmark").click(function() {
		if(gblnImovel ==0 ) {//Ainda não foi salvo via ajax
			gintProximoIdImovel = gintIDDoImovel; //Adiciona fila			 
			AddBookMark("AddBookMarkCallBackSuccess","AddBookMarkCallBackFailure", "AddBookMarkCallBackFailureNeedLogin", "AddBookMarkCallBackFailureAlreadyExists");
		}
		//Retorna false para evitar o back
		return false;
				
	});
	
	$("#lnkIndexMeuVericiaLogout").click(function() {
		window.location.href = url_inc + "/profile/";
		//Retorna false para evitar o back
		return false;
		
	});
	
	$("#lnkIndexMeuVericiaLogin").click(function() {
		//Esconde as anteriores
		$("#divFormReg").hide();
		//
		$("#divIndexFormLogin").show();
		//Retorna false para evitar o back
		return false;
			
	});	
	

	//Exclui todos os imoveis da lista dos imóveis salvos	
	$("#lnkPropertySavedDeleteAll").click(function() {
		PropertySavedDeleteAll("PropertySavedDeleteAllCallBackSuccess","PropertySavedDeleteAllCallBackFailure");
		//Retorna false para evitar o back
		return false;
		
	});	
	
});


//Delete um Item específico
function UIPropertySavedDeleteItem(intIdDoImovel) {
	PropertySavedDeleteItem(intIdDoImovel,"UIPropertySavedDeleteItemCallBackSuccess","UIPropertySavedDeleteItemCallBackFailure")
}



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Funções de Callback
//
//

function UIPropertySavedDeleteItemCallBackSuccess() {
	//Atualiza a lista
	PropertySavedGetList("UIPropertySavedGetListCallBackSuccess","UIPropertySavedGetListCallBackFailureNotExistHomes","UIPropertySavedGetListCallBackFailure");
	$("#imgSoap").hide();	
}

function UIPropertySavedDeleteItemCallBackFailure() {
	//Não faz nada - Reservado para uso futuro
	$("#imgSoap").hide();
}

function UIPropertySavedGetListCallBackFailureNotExistHomes() {
	//Limpa tudos
	PropertySavedDeleteAllCallBackSuccess();
}

function UIPropertySavedGetListCallBackSuccess(strHtml, intQuantidade, objJson) {
	var intCount;
	//Coloca o html no resultado específico
	$("#divProperty").html(strHtml);		
	//Acerta o contador	
	$("#divHomeNumbers").html("Imóveis salvos&nbsp;(" + intQuantidade + ")");

	//Esconde Mensagem padrão	
	$("#divNaoTemImoveisSalvos").hide();
	
	//Show Area de Imoveis
	$("#divTemImoveisSalvos").show();
	
	//Acerta as posições do mapa
	ClearAllMarks();

	

	//Para cada retorno, cria um novo marke no mapa
	for(intCount = 0; intCount < intQuantidade; intCount++) {
		PlotProperty(objJson.properties[intCount].lat, objJson.properties[intCount].long, objJson.properties[intCount].address, objJson.properties[intCount].price, objJson.properties[intCount].url, objJson.properties[intCount].url_img, 10, objJson.properties[intCount].id);
	}
	
	
		
	//Esconde o loader do Ajax
	$("#imgSoap").hide();
}

function UIPropertySavedGetListCallBackFailure() {
	//Não faz nada - Reservado para uso futuro
	$("#imgSoap").hide();
}	

function UIPropertySavedGetCountCallBackSuccess(intQuantidade) {
	//Acerta o contador
	$("#divHomeNumbers").html("Imóveis salvos&nbsp;(" + intQuantidade + ")");
			
	//Esconde o loader	
	$("#imgSoap").hide();	
}
	
function UIPropertySavedGetCountCallBackFailure() {
		//Não faz nada - Reservado para uso futuro
}
	

	
function PropertySavedDeleteAllCallBackSuccess() {
	//Coloca o html no resultado específico
	$("#divProperty").html(" ");		
	//Acerta o contador
	$("#divHomeNumbers").html("Imóveis salvos&nbsp;(0)");
	
	//Esconde Area de Imoveis
	$("#divTemImoveisSalvos").hide();	

	//Mostra Mensagem Padrão	
	$("#divNaoTemImoveisSalvos").show();
	
	//Acerta as posições do mapa
	ClearAllMarks();
	
	//Esconde o loader do Ajax
	$("#imgSoap").hide();	
}

function PropertySavedDeleteAllCallBackFailure() {
	//Não faz nada - Reservado para uso futuro
}

function AddBookMarkCallBackFailureAlreadyExists() {
	gblnImovel = 1; //Informa que o imóvel já está armazenado
	gintProximoIdImovel = -1; //Retira da fila
	gblnSemaforo = 1; //Vermelho;		
	$("#lnkAddBookmark").html("<img src='/static/img/btnSalvarImovel_salvo.gif' alt='Imóvel salvo em Meu Vericia'>");
}

function AddBookMarkCallBackSuccess() {
	gblnImovel = 1; //Já foi salvo
	gintProximoIdImovel = -1; //Retira da fila
	gblnSemaforo = 1; //Vermelho;
	$("#lnkAddBookmark").html("<img src='/static/img/btnSalvarImovel_salvo.gif' alt='Imóvel salvo em Meu Vericia'>");
};

function AddBookMarkCallBackFailure() {
	//Não faz nada - Reservado para uso futuro
	gintProximoIdImovel = -1; //Retira da Fila
	gblnSemaforo = 1; //Vermelho;		
	gblnImovel = 0; //Ainda não foi salvo		
};

function AddBookMarkCallBackFailureNeedLogin() {
	gintProximoIdImovel = gintIDDoImovel; //Adiciona fila
	gblnSemaforo = 0; //Verde	
	$("#divIndexFormLogin").show();
};

function RegistrationCallBackSuccess() {
		$("#msg_err").html("");
		//Esconde o formulario
		$("#divFormReg").hide();
		//Loga o usuário	
		Login($("#CadastreseFormEmail").val(), $("#CadastreseFormPassword1").val(), "LoginCallBackSucess", "LoginCallBackFailure");
		
	}

function RegistrationCallBackFailure() {
	$("#msg_err").html("");
}

function ForgetPasswordCallBackSuccess() {
	//Não faz nada - Reservado para uso futuro
}

function ForgetPasswordCallBackFailure() {
	//Não faz nada - Reservado para uso futuro
}

function LogoutCallBackFailure() {
	//Não faz nada - Reservado para uso futuro
}

function LoginCallBackFailure() {
	//Não faz nada - Reservado para uso futuro
};
	
function LogoutCallBackSuccess() {
	
	//Esconde o nome
	$("#divTopoNamePosition").hide();
	//Esconde o meu vericia
	$("#lnkIndexMeuVericiaLogout").hide();	
	//Esconde Link Logout
	$("#lnkIndexLogout").hide();
	//Mostra o link login
	$("#lnkIndexLogin").show();		
	//Mostra o link Cadastro
	$("#lnkIndexFormReg").show();	
	//Mostra o link login do meu vericia
	$("#lnkIndexMeuVericiaLogin").show();
	$("#divTopoNamePosition").html("Bem-vindo(a), False!");
	
	//Informa que o imóvel ainda não foi salvo
	gblnImovel = 0; 
	gintProximoIdImovel = -1; //Retira da Fila
	gblnSemaforo = 1; //Vermelho;		
	$("#lnkAddBookmark").html("<img src='/static/img/btnSalvarImovel.gif' alt='Salvar em Meu Vericia'>");
	
	//Determina se está dentro do meu Vericia, neste caso deve colocar o usuário na página de signup 
	//TODO: Melhorar isto no futuro, criando um Url mais significativa ou uma variável que fala qual é a página
	//
	var strHref;
	strHref = window.location.href;
	if(strHref.indexOf("profile")> 0 || strHref.indexOf("saved")> 0 || strHref.indexOf("alert")> 0 || strHref.indexOf("esqueceusenha")> 0  || strHref.indexOf("politicaprivacidade")> 0) {
		window.location.href = url_inc + "/login/";
	}
	
};	
	
function LoginCallBackSucess(UserName) {

	//Esconde a caixa de login
	$("#divIndexFormLogin").hide();
	//Esconde o link login do meu vericia
	$("#lnkIndexMeuVericiaLogin").hide();
	//Esconde o link login
	$("#lnkIndexLogin").hide();		
	//Esconde o link Cadastro
	$("#lnkIndexFormReg").hide();
	//Show Link Logout
	$("#lnkIndexMeuVericiaLogout").show();
	//Mostrea o meu vericia
	$("#lnkIndexLogout").show();
	//Esconde o nome
	//colocar o conteúdo do nome
	$("#divTopoNamePosition").html("Bem-vindo(a), " + UserName + "! ");
	$("#divTopoNamePosition").show(); 

	//Libera o semaforo para salvar
	if(gblnSemaforo == 0) { //Verde
		AddBookMark("AddBookMarkCallBackSuccess","AddBookMarkCallBackFailure", "AddBookMarkCallBackFailureNeedLogin", "AddBookMarkCallBackFailureAlreadyExists");
	}
	
	//Determina se está dentro do meu Vericia, neste caso deve colocar o usuário na página de signup 
	//TODO: Melhorar isto no futuro, criando um Url mais significativa ou uma variável que fala qual é a página
	//
	var strHref;
	strHref = window.location.href;
	if(strHref.indexOf("login")> 0 || strHref.indexOf("esqueceusenha")> 0  || strHref.indexOf("politicaprivacidade")> 0) {
		window.location.href = url_inc + "/profile/";
	}
	
	
					
};


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Funções de Negócios
//
//


//Exclui um item dos imóveis salvos
function PropertySavedDeleteItem(intIdDoImovel, CallBackSuccess, CallBackFailure) {
   //Envia a requisição Ajax para o servidor   	
	var parametros;
	var fnCallBack;  	
	
	$("#imgSoap").show();
	parametros = 'propertid=' + intIdDoImovel;
	$.ajax({
 		url: url_inc + '/webservice/meuvericia/property_saved/ws_delete_item/',
 		type: 'POST',
 		data:parametros,
 		timeout: CONSTTimeout,
 		error: function(){
     		alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
			fnCallBack = eval(CallBackFailure);
			fnCallBack();
 		},
 		success: function(json){
     		var objRes;
			objRes = eval("(" + json + ")");
     		if(objRes.ws_property_saved_delete_item == "NOK") {
     			//determina o motivo
     			switch(objRes.response) {
     				case 'nodonutforyou':
     					fnCallBack = eval(CallBackFailure);
     					alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
     					break;
     				case 'needslogin':
     					fnCallBack = eval(CallBackFailure);
     					alert("Você não está logado !");
     				default:
     					fnCallBack = eval(CallBackFailure);
     					break
     			}
				fnCallBack();
     		}
     		else {		
     			fnCallBack = eval(CallBackSuccess);
				fnCallBack();
     		}
 		}
	});	
}

function PropertySavedGetList(CallBackSuccess, CallBackFailureNotExistHomes, CallBackFailure) {
   //Envia a requisição Ajax para o servidor   	
	var parametros;
	var fnCallBack;
	  	
	$("#imgSoap").show();
	parametros = '';		
	$.ajax({
 		url: url_inc + '/webservice/meuvericia/property_saved/ws_get_list/',
 		type: 'POST',
 		data:parametros,
 		timeout: CONSTTimeout,
 		error: function(){
     		alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
			fnCallBack = eval(CallBackFailure);
			fnCallBack();
 		},
 		success: function(json){
     		var objRes;
			objRes = eval("(" + json + ")");
     		if(objRes.ws_property_saved_get_list == "NOK") {
     			//determina o motivo
     			switch(objRes.response) {
     				case 'nodonutforyou':
     					fnCallBack = eval(CallBackFailure);
     					alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
     					break;
     				case 'needslogin':
     					fnCallBack = eval(CallBackFailure);
     					alert("Você não está logado !");     					
     				case 'notexisthomes':
     					fnCallBack = eval(CallBackFailureNotExistHomes);
     					break;
     				default:
     					fnCallBack = eval(CallBackFailure);
     					break
     					
     			}
				fnCallBack();
     		}
     		else {		
     			fnCallBack = eval(CallBackSuccess);
				fnCallBack(objRes.response, objRes.homes_saved, objRes);
     		}
 		}
	});		
}


function PropertySavedGetCount(CallBackSuccess, CallBackFailure) {
   //Envia a requisição Ajax para o servidor   	
	var parametros;
	var fnCallBack;  	
	
	$("#imgSoap").show();
	parametros = '' + intIdDoImovel;
	$.ajax({
 		url: url_inc + '/webservice/meuvericia/property_saved/ws_get_count_itens/',
 		type: 'POST',
 		data:parametros,
 		timeout: CONSTTimeout,
 		error: function(){
     		alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
			fnCallBack = eval(CallBackFailure);
			fnCallBack();
 		},
 		success: function(json){
     		var objRes;
			objRes = eval("(" + json + ")");
     		if(objRes.wsws_property_saved_get_count_itens == "NOK") {
     			//determina o motivo
     			switch(objRes.response) {
     				case 'nodonutforyou':
     					fnCallBack = eval(CallBackFailure);
     					alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
     					break;
     				case 'needslogin':
     					fnCallBack = eval(CallBackFailure);
     					alert("Você não está logado !");     					
     				default:
     					fnCallBack = eval(CallBackFailure);
     					break
     					
     			}
				fnCallBack();
     		}
     		else {		
     			fnCallBack = eval(CallBackSuccess);
				fnCallBack(objRes.response);
     		}
 		}
	});		
}

function PropertySavedDeleteAll(CallBackSuccess, CallBackFailure) {
   //Envia a requisição Ajax para o servidor   	
	var parametros;
	var fnCallBack;  	
	
	$("#imgSoap").show();
	parametros = '';
	$.ajax({
 		url: url_inc + '/webservice/meuvericia/property_saved/ws_delete_all/',
 		type: 'POST',
 		data:parametros,
 		timeout: CONSTTimeout,
 		error: function(){
     		alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
			fnCallBack = eval(CallBackFailure);
			fnCallBack();
 		},
 		success: function(json){
     		var objRes;
			objRes = eval("(" + json + ")");
     		if(objRes.ws_property_saved_delete_all == "NOK") {
     			//determina o motivo
     			switch(objRes.response) {
     				case 'nodonutforyou':
     					fnCallBack = eval(CallBackFailure);
     					alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
     					break;
     				case 'needslogin':
     					fnCallBack = eval(CallBackFailure);
     					alert("Você não está logado !");     					
     				default:
     					fnCallBack = eval(CallBackFailure);
     					break
     					
     			}
				fnCallBack();
     		}
     		else {		
     			fnCallBack = eval(CallBackSuccess);
				fnCallBack();
     		}
 		}
	});
	
}

function AddBookMark(CallBackSuccess, CallBackFailure, CallBackFailureLogin, CallBackFailureAlreadyExists) {
   //Envia a requisição Ajax para o servidor   	
	var parametros;
	var fnCallBack;  	
	
	parametros = 'imovel=' + gintProximoIdImovel;
	$.ajax({
 		url: url_inc + '/webservice/meuvericia/property_saved/ws_save_property/',
 		type: 'POST',
 		data:parametros,
 		timeout: CONSTTimeout,
 		error: function(){
     		alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
			fnCallBack = eval(CallBackFailure);
			fnCallBack();
 		},
 		success: function(json){
     		var objRes;
			objRes = eval("(" + json + ")");
     		if(objRes.saved_property == "NOK") {
     			//determina o motivo
     			switch(objRes.response) {
     				case 'needlogin':        					
     					fnCallBack = eval(CallBackFailureLogin);
     					break;
     				case 'alreadyexists':
     					fnCallBack = eval(CallBackFailureAlreadyExists);        					
     					alert("O imóvel já está no seu bookmark !");
     					break;
     				case 'nodonutforyou':
     					fnCallBack = eval(CallBackFailure);
     					alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
     					break;
     				default:
     					fnCallBack = eval(CallBackFailure);
     					break;
     					
     			}
				fnCallBack();
     		}
     		else {		
     			fnCallBack = eval(CallBackSuccess);
				fnCallBack();
     		}
 		}
	});
	
};

function Registration(CallBackSuccess, CallBackFailure) {
	//Envia a requisição Ajax para o servidor
	var fnCallBack;
	var parametros;
	var msg;
	msg = "";
	//Testa antes de enviar
	if($("#CadastreseFormEmail").val() == "") {
		msg = "Por favor, digite um e-mail.";
	}
	if($("#CadastreseFormPassword1").val() == "") {
		msg = msg +  "\nPor favor, digite uma senha.";
	}
	if($("#CadastreseFormPassword2").val() == "") {
		msg = msg +  "\nPor favor, digite uma confirmação de senha.";
	}
	if($("#CadastreseFormPassword2").val() != $("#CadastreseFormPassword1").val()) {
		msg = msg +  "\nA senha e a confirmação de senha não são iguais.";
	}
	else {
		if($("#CadastreseFormPassword1").val().length < 5) {
			msg = msg +  "\nA senha é muito curta.";
		}
		else {
		  	if($("#CadastreseFormPassword1").val().length > 16) {
				msg = msg +  "\nA senha é muito longa.";
			}
		}
	}
	if($("#CadastreseFormName").val() == "") {
		msg = msg +  "\nPor favor, digite o nome.";
	}
	if($("#CadastreseFormListEstados").val() == 0) {
		msg = msg +  "\nPor favor, selecione um estado.";
	}
	if($("#CadastreseFormListCidades").val() == 0) {
		msg = msg +  "\nPor favor, selecione uma cidade.";
	}
	if($("#CadastreseFormGender").val() == -1) {
		msg = msg +  "\nPor favor, selecione o sexo.";
	}   	
	if($("#CadastreseFormMaritalStatus").val() == -1) {
		msg = msg +  "\nPor favor, selecione o estado civil.";
	}   	
	if($("#CadastreseFormEducationLevel").val() == -1) {
		msg = msg +  "\nPor favor, selecione o nível de instrução.";
	}   	   	 	
	if($("#CadastreseFormNumberSon").val() == -1) {
		msg = msg +  "\nPor favor, selecione o número de filhos.";
	}   	   
	if($("#CadastreseFormAno_Nasc").val() == -1) {
		msg = msg +  "\nPor favor, selecione o ano de nascimento.";
	}
	if($("#CadastreseFormUserType").val() == -1) {
		msg = msg +  "\nPor favor, selecione uma melhor descrição.";
	}   	
	if(msg != "") {
		alert(msg);
		fnCallBack = eval(CallBackFailure);
		fnCallBack();
		return;
	}
	

	//
	parametros = 'email=' + $("#CadastreseFormEmail").val();
	parametros = parametros + '&password1=' + $("#CadastreseFormPassword1").val();
	parametros = parametros + '&password2=' + $("#CadastreseFormPassword2").val();
	parametros = parametros + '&name=' + $("#CadastreseFormName").val();
	parametros = parametros + '&listEstados=' + $("#CadastreseFormListEstados").val();
	parametros = parametros + '&listCidades=' + $("#CadastreseFormListCidades").val();
	parametros = parametros + '&gender=' + $("#CadastreseFormGender").val();
	parametros = parametros + '&maritalstatus=' + $("#CadastreseFormMaritalStatus").val();
	parametros = parametros + '&educationlevel=' + $("#CadastreseFormEducationLevel").val();
	parametros = parametros + '&son=' + $("#CadastreseFormNumberSon").val();
	parametros = parametros + '&ano_nasc=' + $("#CadastreseFormAno_Nasc").val();
	parametros = parametros + '&usertype_id=' + $("#CadastreseFormUserType").val();
	//
	$("#msg_err").html("Por favor, aguarde.");
	$.ajax({
 		url: url_inc + '/webservice/meuvericia/ws_signup/',
 		type: 'POST',
 		data:parametros,
 		timeout: CONSTTimeout,
 		error: function(){
     		alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");        		
     		fnCallBack = eval(CallBackFailure);
			fnCallBack();
 		},
 		success: function(json){
     		var objRes;
			objRes = eval("(" + json + ")");
     		if(objRes.ws_signup == "NOK") {
     			//determina o motivo
     			switch(objRes.response) {
     				case 'emailalreadyexists':        					
     					alert("O e-mail já existe!");
     					break;
     				case 'emailnotexist':        					
     					alert("O e-mail é inválido!");
     					break;
     				case 'passwordisshort':        					
     					alert("A senha é muito curta!");
     					break;
     				case 'passwordislong':        					
     					alert("A senha é longa!");
     					break;
     				case 'passwordsnotmatch':        					
     					alert("A senha e confirmar senha não estão iguais!");
     					break;       
     				case 'nameisinvalid':        					
     					alert("O nome é inválido!");
     					break;
     				case 'selectstate':        					
     					alert("Selecione um Estado!");
     					break;
     				case 'selectcity':        					
     					alert("Selecione uma Cidade!");
     					break;
     				case 'selectgender':        					
     					alert("Selecione o sexo!");
     					break;        		
     				case 'selectmaritalstatus':        					
     					alert("Selecione o estado civil!");
     					break;
     				case 'selecteducationlevel':        					
     					alert("Selecione o nível de instrução!");
     					break;
     				case 'selectsonnumber':        					
     					alert("Selecione o número de filhos!");
     					break;
     				case 'selectano_nasc':        					
     					alert("Selecione o ano de nascimento!");
     					break;
     				case 'selectusertype':        					
     					alert("Selecione uma descrição!");
     					break;        				
     				case 'nodonutforyou':
     					alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
     					break;
     				default:
     					fnCallBack = eval(CallBackFailure);
     					break;     					
     			}
     			fnCallBack = eval(CallBackFailure);
				fnCallBack();
     		}
     		else {
     			fnCallBack = eval(CallBackSuccess);
				fnCallBack();       			
     		}
 		}
	});

};

function ForgetPassword(CallBackSuccess, CallBackFailure) {
   //Envia a requisição Ajax para o servidor   	
	var parametros;
	var fnCallBack;   	
	$("#divForgetPasswordMsg").html("");		
	if($("#ForgetPasssowrdemail").val() == "") {
		alert("Por favor, digite um e-mail.");
		$("#ForgetPasssowrdemail").focus();
		fnCallBack = eval(CallBackFailure);
		fnCallBack();
		return;
	}
	parametros = 'email=' + $("#ForgetPasssowrdemail").val();
	$.ajax({
 		url: url_inc + '/webservice/meuvericia/ws_forget_password/',
 		type: 'POST',
 		data:parametros,
 		timeout: CONSTTimeout,
 		error: function(){
     		alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
			fnCallBack = eval(CallBackFailure);
			fnCallBack();
 		},
 		success: function(json){
     		var objRes;
			objRes = eval("(" + json + ")");
     		if(objRes.esqueceusenha == "NOK") {
     			//determina o motivo
     			switch(objRes.response) {
     				case 'emailnotexist':        					
     					alert("O e-mail não existe!");
     					$("#ForgetPasssowrdemail").focus();
     					break;
     				case 'nodonutforyou':
     					alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
     					break;
     				default:
     					fnCallBack = eval(CallBackFailure);
     					break;     					
     			}
     			fnCallBack = eval(CallBackFailure);
				fnCallBack();
     		}
     		else {
     			$("#divForgetPasswordMsg").html("Sua senha foi enviado por e-mail.");
     			fnCallBack = eval(CallBackSuccess);
				fnCallBack();
     		}
 		}
	});
};


function Logout(CallBackSuccess, CallBackFailure) {
	var fnCallBack;	
	$.ajax({
 		url: url_inc + '/webservice/meuvericia/ws_logout/',
 		type: 'POST',
 		data: '',
 		timeout: CONSTTimeout,
 		error: function(){
     		alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
			fnCallBack = eval(CallBackFailure);
			fnCallBack();
 		},
 		success: function(json){
     		var objRes;
			objRes = eval("(" + json + ")");
     		if(objRes.logout == "NOK") {
     			//determina o motivo
     			switch(objRes.response) {
     				case 'nodonutforyou':
     					alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
     					break;
     				default:
     					fnCallBack = eval(CallBackFailure);
     					break;     					
    			}
				fnCallBack = eval(CallBackFailure);
				fnCallBack();
     		}
     		else {
     			//Chama a Função CallBack de Sucesso
     			fnCallBack = eval(CallBackSuccess);
     			fnCallBack()
     		}
 		}
	});
}

function Login(User, Password, CallBackSuccess, CallBackFailure) {
	var fnCallBack;
	if(User == "") {
		alert("Por favor, digite um e-mail.");
		$("#email").focus(); 
		fnCallBack = eval(CallBackFailure);
		fnCallBack();
		return;
	}
	if(Password == "") {
		alert("Por favor, digite uma senha.");
		$("#password").focus();   		
		fnCallBack = eval(CallBackFailure);
		fnCallBack();
		return;   		
	}
	parametros = 'email=' + User + "&password=" + Password;  
	$.ajax({
 		url: url_inc + '/webservice/meuvericia/ws_auth/',
 		type: 'POST',
 		data:parametros,
 		timeout: CONSTTimeout,
 		error: function(){
     		alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
  			//Chama a Função CallBack de Fracasso
  			fnCallBack = eval(CallBackFailure);
  			fnCallBack(); 
 		},
 		success: function(json){
     		var objRes;
			objRes = eval("(" + json + ")");
     		if(objRes.authenticate == "NOK") {
     			//determina o motivo
     			switch(objRes.response) {
     				case 'invaliduserorpass':
     					$("#email").focus();
     					alert("O e-mail ou a senha estão incorretos!");
     					break;
     				case 'nodonutforyou':
     					alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
     					break;
     				case 'invalidpost':
     					alert("Grrr....ocorre um problema no envio das informações. Por favor, tente novamente.");
     					break;
     				default:
     					fnCallBack = eval(CallBackFailure);
     					break;     					
     			}
     			//Chama a Função CallBack de Fracasso
     			fnCallBack = eval(CallBackFailure);
     			fnCallBack();        			
     		}
     		else {
     			//Chama a Função CallBack de Sucesso
     			fnCallBack = eval(CallBackSuccess);
     			fnCallBack(objRes.response);        			
     		}
 		}
	});
};
