function hideAllDivs(){
	hideContactForm();
	hideRememberPass();
	hideValidaMailDiv();
}
function hideValidaMailDiv(){
	var validaMailDiv = document.getElementById("validaMailDiv");
	if(validaMailDiv) validaMailDiv.style.display = 'none';	
}
//Contact form
function showContactForm(){
	hideAllDivs();
	document.getElementById("contactFormLink").className = "active";
	var contactForm = document.getElementById("contactForm");
	contactForm.style.display = 'block';
	document.getElementById("contact.name").value = "";
	document.getElementById("contact.email").value = "";
	document.getElementById("contact.inquiry").value = "";
}
function hideContactForm(){
	document.getElementById("contactFormLink").className = "";
	var contactForm = document.getElementById("contactForm");
	contactForm.style.display = 'none';	
}
function sendContact(){
	var div = document.getElementById("contactForm");
	if(div.style.display == "block"){
		if(!isEmptyField("contact.name") && !isEmptyField("contact.email") && !isEmptyField("contact.inquiry") && checkEmail("contact.email")){
			clearError("contact.email");
			var func = "sendContact";
			var data = "name="+document.getElementById('contact.name').value;
			data+= "&email="+document.getElementById('contact.email').value;
			data+= "&text="+document.getElementById('contact.inquiry').value;
			callAjaxPOST(sendContactCallback, func, data);
		}
	}
	return false;
}
function sendContactCallback(xmlhttp){
	var response = xmlhttp.responseXML.getElementsByTagName("response");
	var responseValue = response[0].getAttribute("value");
	switch(responseValue){
		case "1":
			alert("Tu consulta se ha enviado correctamente.");
			break;
		default:
			alert("Ha sucedido alg\u00fan problema. Por favor, prueba m\u00e1s tarde.");
			break;
	}
	hideContactForm();
}
//Remember pass
function showRememberPass(){
	hideAllDivs();
	var div = document.getElementById("rememberForm");
	div.style.display = "block";
}
function hideRememberPass(){
	document.getElementById('emailRemPass').value = "";
	var div = document.getElementById("rememberForm");
	div.style.display = "none";
}
function rememberPass(){
	var div = document.getElementById("rememberForm");
	if(div.style.display == "block"){
		if(!isEmptyField("emailRemPass") && checkEmail("emailRemPass")){
			clearError("emailRemPass");
			var func = "rememberPassword";
			var data = "email="+document.getElementById('emailRemPass').value;
			callAjaxPOST(rememberPassCallback, func, data);
		}
	}
	return false;
}
function rememberPassCallback(xmlhttp){
	var response = xmlhttp.responseXML.getElementsByTagName("response");
	var responseValue = response[0].getAttribute("value");
	switch(responseValue){
		case "1":
			var email = response[0].getAttribute("email");
			alert("Se ha enviado un email a '"+email+"' con tu contraseña.");
			break;
		default:
			alert("Ha sucedido alg\u00fan problema. Por favor, prueba m\u00e1s tarde.");
			break;
	}
	hideRememberPass();
}
//Save User
function saveUser(page){
	if((page == "cl" && validateAdminUserCl()) || (page == "tr" && validateAdminUserTr())){
		var func = "saveUser";
		var data = "prf="+page;
		data+= "&empresa="+document.getElementById(page+'.empresa').value;
		data+= "&cif="+document.getElementById(page+'.cif').value;
		data+= "&calle="+document.getElementById(page+'.calle').value;
		data+= "&cp="+document.getElementById(page+'.cp').value;
		data+= "&country="+document.getElementById(page+'.country').value;
		data+= "&province="+document.getElementById(page+'.province').value;
		data+= "&city="+document.getElementById(page+'.city').value;
		data+= "&name="+document.getElementById(page+'.name').value;
		data+= "&apellidos="+document.getElementById(page+'.apellidos').value;
		data+= "&telefono="+document.getElementById(page+'.telefono').value;
		data+= "&fax="+document.getElementById(page+'.fax').value;
		data+= "&movil="+document.getElementById(page+'.movil').value;
		data+= "&email1="+document.getElementById(page+'.email1').value;
		data+= "&email2="+document.getElementById(page+'.email2').value;
		data+= "&password="+document.getElementById(page+'.password').value;
		callAjaxPOST(saveUserCallback, func, data);
	}
	return false;
}

function saveUserCallback(xmlhttp){
	var response = xmlhttp.responseXML.getElementsByTagName("response");
	var responseValue = response[0].getAttribute("value");
	switch(responseValue){
		case "1":
			var email = response[0].getAttribute("email");
			alert("Se ha enviado un email a '"+email+"'. Sigue las instrucciones que se indican para validar tu usuario.");
			document.location.reload(true);
			break;
		default:
			alert("Ha sucedido alg\u00fan problema. Por favor, prueba m\u00e1s tarde.");
			break;
	}
}

function saveDemand(){
	if(validateDemandCl3()){
		var page = "cl3";
		var func = "saveDemand";
		var data = "prf="+page;
		data+= "&name="+document.getElementById(page+'.nombre').value;
		data+= "&telephone="+document.getElementById(page+'.telefono').value;
		data+= "&email="+document.getElementById(page+'.email').value;
		data+= "&carType="+document.getElementById(page+'.carType').value;
		data+= "&carStatus="+document.getElementById(page+'.carStatus').value;
		data+= "&places="+document.getElementById(page+'.places').value;
		data+= "&plazo="+document.getElementById(page+'.plazo').value;
		data+= "&fromCountry="+document.getElementById(page+'.fromCountry').value;
		data+= "&fromProvince="+document.getElementById(page+'.fromProvince').value;
		data+= "&fromCity="+document.getElementById(page+'.fromCity').value;
		data+= "&toCountry="+document.getElementById(page+'.toCountry').value;
		data+= "&toProvince="+document.getElementById(page+'.toProvince').value;
		data+= "&toCity="+document.getElementById(page+'.toCity').value;
		data+= "&comentarios="+document.getElementById(page+'.comentarios').value;
		callAjaxPOST(saveDemandCallback, func, data);
	}
	return false;
}

function saveDemandCallback(xmlhttp){
	var response = xmlhttp.responseXML.getElementsByTagName("response");
	var responseValue = response[0].getAttribute("value");
	switch(responseValue){
		case "1":
			var email = response[0].getAttribute("email");
			alert("La demanda de transporte se ha guardado correctamente. Te llegarán las ofertas de los transportistas al email '"+email+"'.");
			document.location.reload(true);
			break;
		default:
			alert("Ha sucedido alg\u00fan problema. Por favor, prueba m\u00e1s tarde.");
			break;
	}
}

//Selects

xmlhttpRefreshSelectProvince=null;	

function refreshSelectProvince(selfObject, fieldId, defaultValue, onLoadFunctionName){
	if (xmlhttpRefreshSelectProvince==null) xmlhttpRefreshSelectProvince = newAjax();
	var selectElement = document.getElementById(fieldId);
	if(selectElement){
		selectElement.disabled = true;		
		if(selectElement.options[0] && selectElement.options[0].value == ""){
			//Mantenemos el emptyOption		
			selectElement.options.length = 1;
		}else{
			selectElement.options.length = 0;
		}
		if(selectElement.onchange) selectElement.onchange();
		var selfObjectId = null;
		if(selfObject!=null) selfObjectId = selfObject.id;
		self.setTimeout("refreshSelectProvinceTimeout('"+selfObjectId+"', '"+fieldId+"', '"+defaultValue+"', "+onLoadFunctionName+")", 200);		
	}
}

function refreshSelectProvinceTimeout(selfObjectId, fieldId, defaultValue, onLoadFunction){
	var urlServlet = "/common/engine/resources/servlet.php";
	var selfObject = document.getElementById(selfObjectId);
	if(!selfObject){
		var paramsGET = "?func=selectOptions&fieldId="+fieldId+"&defaultValue="+defaultValue+"&objectName=province&method=getByCountry";
		if(xmlhttpRefreshSelectProvince.readyState!=2 && xmlhttpRefreshSelectProvince.readyState!=3){	
			callAjax(callbackSelect, paramsGET, urlServlet, xmlhttpRefreshSelectProvince);
			if(onLoadFunction!=null && onLoadFunction!="undefined") onLoadFunction();			
		}
	}else{
		//XXX: 09-02-17 - JJMR - SONAR: Necesito refrescar aunque sea vacio
		//Si da fallos trabajar en ello
		//if(selfObject.value!=""){
			var paramsGET = "?func=selectOptions&fieldId="+fieldId+"&defaultValue="+defaultValue+"&objectName=province&method=getByCountry&value="+selfObject.value;
			if(xmlhttpRefreshSelectProvince.readyState!=2 && xmlhttpRefreshSelectProvince.readyState!=3){	
				callAjax(callbackSelect, paramsGET, urlServlet, xmlhttpRefreshSelectProvince);
				if(onLoadFunction!=null && onLoadFunction!="undefined") onLoadFunction();			
			}	
		//}
	}
}
xmlhttpRefreshSelectCity=null;	
function refreshSelectCity(selfObject, fieldId, defaultValue, onLoadFunctionName){
	if (xmlhttpRefreshSelectCity==null) xmlhttpRefreshSelectCity = newAjax();
	var selectElement = document.getElementById(fieldId);
	if(selectElement){
		selectElement.disabled = true;		
		if(selectElement.options[0] && selectElement.options[0].value == ""){
			//Mantenemos el emptyOption		
			selectElement.options.length = 1;
		}else{
			selectElement.options.length = 0;
		}
		if(selectElement.onchange) selectElement.onchange();
		var selfObjectId = null;
		if(selfObject!=null) selfObjectId = selfObject.id;
		self.setTimeout("refreshSelectCityTimeout('"+selfObjectId+"', '"+fieldId+"', '"+defaultValue+"', "+onLoadFunctionName+")", 200);		
	}
}

function refreshSelectCityTimeout(selfObjectId, fieldId, defaultValue, onLoadFunction){
	var urlServlet = "/common/engine/resources/servlet.php";
	var selfObject = document.getElementById(selfObjectId);
	if(!selfObject){
		var paramsGET = "?func=selectOptions&fieldId="+fieldId+"&defaultValue="+defaultValue+"&objectName=city&method=getByProvince";
		if(xmlhttpRefreshSelectCity.readyState!=2 && xmlhttpRefreshSelectCity.readyState!=3){	
			callAjax(callbackSelect, paramsGET, urlServlet, xmlhttpRefreshSelectCity);
			if(onLoadFunction!=null && onLoadFunction!="undefined") onLoadFunction();			
		}
	}else{
		//XXX: 09-02-17 - JJMR - SONAR: Necesito refrescar aunque sea vacio
		//Si da fallos trabajar en ello
		//if(selfObject.value!=""){
			var paramsGET = "?func=selectOptions&fieldId="+fieldId+"&defaultValue="+defaultValue+"&objectName=city&method=getByProvince&value="+selfObject.value;
			if(xmlhttpRefreshSelectCity.readyState!=2 && xmlhttpRefreshSelectCity.readyState!=3){	
				callAjax(callbackSelect, paramsGET, urlServlet, xmlhttpRefreshSelectCity);
				if(onLoadFunction!=null && onLoadFunction!="undefined") onLoadFunction();			
			}	
		//}
	}
}

//Visualizacion de forms

var vHcl1 = null;
var vHcl2 = null;
var vHcl3 = null;

var vHtr1 = null;
var vHtr2 = null;

function showMenu(page, id){
	if(page == "cl"){
		if(vHcl1 == null ) vHcl1 = new formVisibilityHandler(page+".loginForm", 110);
		if(vHcl2 == null ) vHcl2 = new formVisibilityHandler(page+".newUserForm", 535);
		if(vHcl3 == null ) vHcl3 = new formVisibilityHandler(page+".newDemandForm", 590);
		
		vHcl1.setVisibility(id == 1);
		vHcl2.setVisibility(id == 2);
		vHcl3.setVisibility(id == 3);
	}else{
		if(vHtr1 == null ) vHtr1 = new formVisibilityHandler(page+".loginForm", 110);
		if(vHtr2 == null ) vHtr2 = new formVisibilityHandler(page+".newUserForm", 535);
		
		vHtr1.setVisibility(id == 1);
		vHtr2.setVisibility(id == 2);
	}
	
	var submits1 = document.getElementById(page+".submits1");
	var submits2 = document.getElementById(page+".submits2");
	var submits3 = document.getElementById(page+".submits3");
	if(id == 1){
		submits1.innerHTML = "<input type=\"submit\" class=\"\" value=\"Iniciar Sesión\" onclick=\"login('"+page+"');\" />";
	}else{
		submits1.innerHTML = "<button class=\"\" onclick=\"showMenu('"+page+"', 1);\">Iniciar Sesión</button>";
	}
	if(id == 2){
		submits2.innerHTML = "<input type=\"submit\" class=\"\" value=\"Crear Cuenta\" onclick=\"saveUser('"+page+"');\" />";
	}else{
		submits2.innerHTML = "<button class=\"\" onclick=\"showMenu('"+page+"', 2);\">Registro en Logistus</button>";
	}
	if(submits3){
		if(id == 3){
			submits3.innerHTML = "<input type=\"submit\" class=\"\" value=\"Solicitar env&iacute;o\" onclick=\"saveDemand();\" />";
		}else{
			submits3.innerHTML = "<button class=\"\" onclick=\"showMenu('"+page+"', 3);\">Solicitud de Envío</button>";
		}
	}
}

var formVisibilityHandler = function(objectName, heightMaxValue){
	
	var formObject = document.getElementById(objectName);
	var intervalId = null;
	var heightMax = heightMaxValue;
	var height;
	var direction = 1;
	var speed;
	
	if(formObject){
		height = parseInt(formObject.style.height);
	}
	
	this.setVisibility = function(value){
		if(value){
			this.show();
		}else{
			this.hide();
		}
	}
	
	this.show = function(){
		if(formObject){
			direction = 1;
			speed = 10;
			startMove();
		}		
	}
	
	this.hide = function(){
		if(formObject){
			direction = -1;
			speed = 20;
			startMove();
		}		
	}
	
	function startMove(){
		window.clearTimeout(intervalId);
		intervalId = window.setInterval(move, 10);
	}
	
	function move(){
		height = height + speed * direction;
		if(height <= 0){
			window.clearInterval(intervalId);
			height = 0;
		}else if(height >= heightMax){
			window.clearInterval(intervalId);
			height = heightMax;
		}
		formObject.style.height = height+"px";
	}
	
}
