var ILURIA_ERROR_UNEXPECTED_ERROR = 9999;

function IluriaClientServices ()
{
	this.errorCode = "";
	this.errorMessage = "";
	
	this.doPaymentPagseguro = function(collectionId, description, value)
	{
		value = value.replace(/,/, "");

		document.pagseguroForm.item_descr_1.value = description;
		document.pagseguroForm.item_valor_1.value = value;
		document.pagseguroForm.ref_transacao.value += collectionId;
		
		document.pagseguroForm.submit();
	}
	
	this.getCreateClientFieldContent = function(fieldId)
	{
		var result = "";
		if(document.getElementById(fieldId) != null)
		{
			result = escape(encodeURI(
				document.getElementById(fieldId).value));
		}
		return result;
	};

	this.getCreateClientData = function()
	{
		var result = "";
		
		var fullName = this.getCreateClientFieldContent("fullName");
		var birthDate = this.getCreateClientFieldContent("birthDate");
		var gender = this.getCreateClientFieldContent("gender");
		var email = this.getCreateClientFieldContent("email");
		var password = this.getCreateClientFieldContent("password");
		var address = this.getCreateClientFieldContent("address");
		var number = this.getCreateClientFieldContent("number");
		var complement = this.getCreateClientFieldContent("complement");
		var neighborhood = this.getCreateClientFieldContent("neighborhood");
		var city = this.getCreateClientFieldContent("city");
		var state = this.getCreateClientFieldContent("state");
		var zip = this.getCreateClientFieldContent("zip");
		var phone = this.getCreateClientFieldContent("phone");
				
		result = "fullName=" + fullName + "&birthDate=" + birthDate 
			+ "&gender=" + gender + "&email=" + email + "&password=" + password
			+ "&address=" + address + "&number=" + number + "&complement=" + complement
			+ "&neighborhood=" + neighborhood + "&city=" + city + "&state=" + state 
			+ "&zip=" + zip + "&phone=" + phone;

		return result;
	}
	
	this.getUpdateClientData = function()
	{
		var result = "";
		
		var fullName = this.getCreateClientFieldContent("fullName");
		var birthDate = this.getCreateClientFieldContent("birthDate");
		var gender = this.getCreateClientFieldContent("gender");
		var email = this.getCreateClientFieldContent("email");
		var address = this.getCreateClientFieldContent("address");
		var number = this.getCreateClientFieldContent("number");
		var complement = this.getCreateClientFieldContent("complement");
		var neighborhood = this.getCreateClientFieldContent("neighborhood");
		var city = this.getCreateClientFieldContent("city");
		var state = this.getCreateClientFieldContent("state");
		var zip = this.getCreateClientFieldContent("zip");
		var phone = this.getCreateClientFieldContent("phone");
		var emarketing = this.getCreateClientFieldContent("emarketing");
				
		result = "fullName=" + fullName + "&birthDate=" + birthDate 
			+ "&gender=" + gender + "&email=" + email + "&emarketing=" + emarketing
			+ "&address=" + address + "&number=" + number + "&complement=" + complement
			+ "&neighborhood=" + neighborhood + "&city=" + city + "&state=" + state 
			+ "&zip=" + zip + "&phone=" + phone;

		return result;
	}
	
	this.createClient = function()
	{
		var parameters = this.getCreateClientData();
		
		var http_request = this.getHttpRequest();

		http_request.open('POST', "/clientServices.do?command=createClient", false);
	    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	    http_request.setRequestHeader("Content-length", parameters.length);
	    http_request.setRequestHeader("Connection", "close");
	    http_request.send(parameters);

	    var status = http_request.status;
	    
	    if(status == '30000')
	    	return true;
	    
	    this.errorCode = status;

	    if(status == '29001')
	    	this.errorMessage = "Nome completo inválido";
	    if(status == '29002')
	    	this.errorMessage = "Data de nascimento inválida";
	    if(status == '29003')
	    	this.errorMessage = "Sexo inválido";
	    if(status == '29004')
	    	this.errorMessage = "Email inválido";
	    if(status == '29005')
	    	this.errorMessage = "Senha inválida";
	    if(status == '29006')
	    	this.errorMessage = "Endereço inválido";
	    if(status == '29007')
	    	this.errorMessage = "Número inválido";
	    if(status == '29009')
	    	this.errorMessage = "Bairro inválido";
	    if(status == '29010')
	    	this.errorMessage = "Cidade inválida";
	    if(status == '29011')
	    	this.errorMessage = "Estado inválido";
	    if(status == '29012')
	    	this.errorMessage = "CEP inválido";
	    if(status == '29013')
	    	this.errorMessage = "Fone inválido";
	    if(status == '29014')
	    	this.errorMessage = "DDD inválido";

	    if(status == '30002')
	    	this.errorMessage = "Email já cadastrado";

	    if(status == '9999')
	    	this.errorMessage = "Erro inesperado";
	    
	    return false;
	};
	
	this.updateClient = function()
	{
		var parameters = this.getUpdateClientData();
		
		var http_request = this.getHttpRequest();

		http_request.open('POST', "/clientServices.do?command=updateClient", false);
	    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	    http_request.setRequestHeader("Content-length", parameters.length);
	    http_request.setRequestHeader("Connection", "close");
	    http_request.send(parameters);

	    var status = http_request.status;
	    
	    if(status == '31000')
	    	return true;
	    
	    this.errorCode = status;

	    if(status == '29001')
	    	this.errorMessage = "Nome completo inválido";
	    if(status == '29002')
	    	this.errorMessage = "Data de nascimento inválida";
	    if(status == '29003')
	    	this.errorMessage = "Sexo inválido";
	    if(status == '29004')
	    	this.errorMessage = "Email inválido";
	    if(status == '29005')
	    	this.errorMessage = "Senha inválida";
	    if(status == '29006')
	    	this.errorMessage = "Endereço inválido";
	    if(status == '29007')
	    	this.errorMessage = "Número inválido";
	    if(status == '29009')
	    	this.errorMessage = "Bairro inválido";
	    if(status == '29010')
	    	this.errorMessage = "Cidade inválida";
	    if(status == '29011')
	    	this.errorMessage = "Estado inválido";
	    if(status == '29012')
	    	this.errorMessage = "CEP inválido";
	    if(status == '29013')
	    	this.errorMessage = "Fone inválido";
	    if(status == '29014')
	    	this.errorMessage = "DDD inválido";

	    if(status == '31001')
	    	this.errorMessage = "Email já cadastrado";

	    if(status == '9999')
	    	this.errorMessage = "Erro inesperado";
	    
	    return false;
	};
	
	this.changePassword = function(password, newPassword)
	{
		var parameters = "password=" + password + "&newPassword=" + newPassword;

		var http_request = this.getHttpRequest();

		http_request.open('POST', "/clientServices.do?command=changePassword", false);
	    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	    http_request.setRequestHeader("Content-length", parameters.length);
	    http_request.setRequestHeader("Connection", "close");
	    http_request.send(parameters);

	    var status = http_request.status;
	    
	    if(status == '32000')
	    	return true;
	    
	    this.errorCode = status;

	    if(status == '32001')
	    	this.errorMessage = "Senha atual incorreta";
	    if(status == '32002')
	    	this.errorMessage = "Senha nova inválida";
	    if(status == '9999')
	    	this.errorMessage = "Erro inesperado";
	    
	    return false;
	};
	
	this.recoverPassword = function(email)
	{
		var parameters = "email=" + email;

		var http_request = this.getHttpRequest();

		http_request.open('POST', "/clientServices.do?command=recoverPassword", false);
	    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	    http_request.setRequestHeader("Content-length", parameters.length);
	    http_request.setRequestHeader("Connection", "close");
	    http_request.send(parameters);

	    var status = http_request.status;
	    
	    if(status == '36000')
	    	return true;
	    
	    this.errorCode = status;

	    if(status == '36001')
	    	this.errorMessage = "Email não cadastrado em nossa loja.";
	    if(status == '9999')
	    	this.errorMessage = "Erro inesperado.";
	    
	    return false;
	};
	
	this.getErrorCode = function()
	{
		return this.errorCode;
	};

	this.getErrorMessage = function()
	{
		return this.errorMessage;
	};
	
	this.getClientWelcomeMessage = function() 
	{
		var http_request = this.getHttpRequest();
	    http_request.open('GET', '/clientServices.do?command=getWelcomeMessage', false);
	    http_request.send(null);

	    return http_request.responseText;
	};

	this.getClientFirstName = function() {
		var http_request = this.getHttpRequest();
	    http_request.open('GET', '/clientServices.do?command=getClientFirstName', false);
	    http_request.send(null);

	    return http_request.responseText;
	};

	this.getHttpRequest = function() {
	    var http_request = false;

	    if (window.XMLHttpRequest) { // Mozilla, Safari,...
	        http_request = new XMLHttpRequest();
	    } else if (window.ActiveXObject) { // IE
	        try {
	            http_request = new ActiveXObject("Msxml2.XMLHTTP");
	        } catch (e) {
	            try {
	                http_request = new ActiveXObject("Microsoft.XMLHTTP");
	            } catch (e) {}
	        }
	    }

	    return http_request;
	};
	
	this.loginClient = function(user, password) 
	{
		var http_request = this.getHttpRequest();
		
	    http_request.open('GET', '/clientServices.do?command=loginClient&user=' + user + '&password=' + password, false);
	    http_request.send(null);
	    
	    var status = http_request.status;
	    
	    if(status == '20000')
	    	return true;
	    
	    this.errorCode = status;

	    if(status == '20001')
	    	this.errorMessage = "Dados de acesso incorretos";
	    
	    return false;
	};
	
	this.logoutClient = function() 
	{
		var http_request = this.getHttpRequest();
		
	    http_request.open('GET', '/clientServices.do?command=logoutClient', false);
	    http_request.send(null);
	    
	    return true;
	};

	this.submitOrder = function() 
	{
		var http_request = this.getHttpRequest();
	    http_request.open('GET', '/clientServices.do?command=submitOrder', false);
	    http_request.send(null);

	    if(http_request.status == 200)
	    	return http_request.responseText;
	    else
	    	return http_request.status;		
	};

	this.sendOrderMessage = function(orderId, message)
	{
		var parameters = "webCode=" + orderId + "&message=" + message;

		var http_request = this.getHttpRequest();

		http_request.open('POST', "/clientServices.do?command=sendOrderMessage", false);
	    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	    http_request.setRequestHeader("Content-length", parameters.length);
	    http_request.setRequestHeader("Connection", "close");
	    http_request.send(parameters);

	    var status = http_request.status;
	    
	    if(status == '35000')
	    	return true;
	    
	    this.errorCode = status;

	    if(status == '35001')
	    	this.errorMessage = "A mensagem está em branco.";
	    if(status == '9999')
	    	this.errorMessage = "Erro inesperado.";
	    
	    return false;
	};
	
	return true;
};
