//-----------------------------------------------------
//class pagina no logueado, muesta htm fijo
function PageSimple(n, a)
{
	this.name      = n;
	this.anterior  = a;
}
PageSimple.prototype = new Page();

PageSimple.prototype.activar = function()
{
	if(this.innerHTML){
		this.setActual();
	}
	else{
//        alert( this.name + " - " + actual.user  + " - " +  actual.pass );
        peticion({ cmd : this.name , user : actual.user , pass : actual.pass });
	}
}
//-----------------------------------------------------
// MENSAJE => sirve para cualquier mensaje
var mensaje = new Page("mensaje");
mensaje.activar=function()
{
	if(this.innerHTML){
		this.setActual();
	}
	else{
        portada.activar();
	}
}
//
//-----------------------------------------------------
//PORTADA => primera pagina , no esta logueado
var portada = new PageSimple("portada", null);
portada.onSetActual = function()
{
	actual = new Actual();
	amigos = null;
	principal.innerHTML = null;
}
portada.onClickEntrada = function()
{
	entrada.activar();
}
portada.onClickInvitado = function()
{
  actual.user = "Invitado" + Math.round(0.5 + 8.0 * Math.random());
  actual.pass = "invitado";
  principal.activar();
}

//-----------------------------------------------------
//ENTRADA => formulario de login
var entrada = new PageSimple("entrada", portada);
entrada.onClickAcceder = function()
{
  actual.user = $("login_form_user").value;
  actual.pass = $("login_form_pass").value;
  
  if(actual.user == "" || actual.pass == ""){
  	alert("Debe especificar el nombre de usuario y la clave de acceso.");
  	return;
  }
  $("login_form_pass").value = "";
  principal.activar();
}
entrada.onClickRecuperar = function()
{
  actual.user = $("login_form_user").value;
  if(actual.user == ""){
  	alert("Debe especificar el nombre de usuario.");
  	return;
  }
  $("login_form_pass").value = "";
  peticion({ cmd : "recuperar" , user : actual.user });
	
}
entrada.onClickRegistrarse = function()
{
	registro.activar();	
}

//-----------------------------------------------------
//REGISTRO => formulario para registrarse
var registro = new PageSimple("registro", entrada);

registro.onClickRegistrar = function()
{
  var user;
  var pass;
  var email;
  var pass2;
  
  user  =  $("reg_form_user").value;
  pass  =  $("reg_form_pass1").value;
  
  pass2 =  $("reg_form_pass2").value;
  email =  $("reg_form_email").value;
  
  $("reg_form_pass1").value = "";
  $("reg_form_pass2").value = "";
  
  if(user.length < 4){
  	alert("El nombre de usuario no es válido");
  	return;
  }
  
  if(pass.length < 4 || pass != pass2){
  	alert("Escriba la misma clave (no trivial !) en las dos casillas");
  	return;
  }
  
  peticion( { cmd : 'registrar'  , user : user  , pass : pass , email : email });
}

//-----------------------------------------------------
//MAPAGE => pagina principal con el mapa
var principal = new PageSimple("principal");
principal.tout = null;

principal.onSetActual = function()
{
	show("mapcaja", true);
	
    if(!actual_map){
		Mapa.onLoad();
  		if(actual_map) actual_map.setEstado(actual);
  	}
  	
    if(!amigos  || actual.refresco){
		 setTimeout("principal.onClickActualizar();", 100);
    }
}
principal.onUnsetActual = function()
{
	show("mapcaja", false);
	
	if(this.tout != null){
		clearTimeout(this.tout);
		this.tout = null;
	}
}
principal.onClickSalir = function()
{
	this.onUnsetActual();
	portada.activar();
}
principal.onClickPreferencias = function()
{
	this.onUnsetActual();
	preferencias.activar();
}
principal.onClickPermisos = function()
{
	this.onUnsetActual();
	permisos.activar();
}
principal.onClickRecorridos = function()
{
	this.onUnsetActual();
	recorridos.activar();
}
principal.onClickMensajes = function()
{
	this.onUnsetActual();
	mensajes.activar();
}
principal.onClickActualizar = function()
{	
	if(this.tout != null){
		clearTimeout(this.tout);
		this.tout = null;
	}
	peticion_muda({cmd:"marcas", user:actual.user, pass:actual.pass});
}

principal.refrescar = function()
{
    if(Page.actual == this  && actual.refresco){
		this.tout = setTimeout("principal.onClickActualizar();", 30000);
    }
}

//-----------------------------------------------------
//
var preferencias = new PageSimple("preferencias", principal);
var nombre_largo_preferencias;
preferencias.onSetActual = function()
{
	$("recuerda").checked = actual.recordar ? true : false;
	$("refresca").checked = actual.refresco ? true : false;
	nombre_largo_preferencias = $("nombre").value;
	$("clave").value = "";	
	$("clave2").value = "";	
	this.innerHTML = null;
}
preferencias.onClickGuardarCambios = function()
{
	var cambios = false;

	if($("clave").value != $("clave2").value ){
		alert("Para cambiar la clave debe especificar una nueva clave, repitiendo la misma clave en ambas lineas.");
		return;
	}
	
	actual.recordar = $("recuerda").checked  ? true : false;
	actual.refresco = $("refresca").checked  ? 30   : 0;
	
	//alert(nombre_largo_preferencias + "\r\n" + $("nombre").value);
	if(nombre_largo_preferencias != $("nombre").value) cambios = true;
	
	if($("clave").value != "") cambios = true;

	if(cambios){
	   peticion({ cmd : "newprefs" , user : actual.user , pass : actual.pass ,
			name : escape($("nombre").value) , newpass : escape($("clave").value) });
	}
	else{
		principal.activar();		
	}
}

//-----------------------------------------------------
//
var permisos = new PageSimple("permisos", principal);
permisos.onSetActual = function()
{
	this.innerHTML = null;
}
permisos.ObtenerLista = function()
{
	var lista = $("lista_usuarios").value;
	var salida = "";
	for(i=0;i<lista.length;i++){
		c = lista.charAt(i);
		if(c == " " || c == ","){
			salida += ",";
			continue;
		}
		if(c <= "9" && c >= "0"){
			salida += c;
			continue;
		}
		if(c <= "z" && c >= "a"){
			salida += c;
			continue;
		}
		if(c <= "Z" && c >= "A"){
			salida += c;
			continue;
		}
		alert("Hay caracteres extraños en la lista de usuarios."); 
		return "";
	}	
	return salida;
}
permisos.onClickMenosVer = function()
{
	var lista = this.ObtenerLista();
	if(lista != ""){
        amigos = null;
		peticion({cmd:"menosver", user : actual.user , pass : actual.pass ,lista: lista});
	}
}
permisos.onClickMasVisto = function()
{
	var lista = this.ObtenerLista();
	if(lista != ""){
        amigos = null;
		peticion({cmd:"masvisto", user : actual.user , pass : actual.pass , lista: lista});
	}
}
permisos.onClickMenosVisto = function()
{
	var lista = this.ObtenerLista();
	if(lista != ""){
        amigos = null;
		peticion({cmd:"menosvisto", user : actual.user , pass : actual.pass , lista: lista});
	}
}
permisos.onClickAdmin = function()
{
	moviles.activar();
}
//-----------------------------------------------------
//
var moviles = new PageSimple("moviles", permisos);
moviles.onSetActual = function()
{
	this.innerHTML = null;
}

moviles.onClickEliminar = function()
{
  var movil  =  $("movil_user").value;
  if(movil.length < 4){
  	alert("Especifique el nombre del movil");
  	return;
  }
  amigos = null;
  peticion({cmd:"delemovil", user : actual.user , pass : actual.pass , movil: movil});
}
moviles. onClickModificar = function()
{
  var movil  =  $("movil_user").value;
  var pass1  =  $("movil_pass1").value;
  var pass2  =  $("movil_pass2").value;
  var nombre =  $("movil_name").value;
  
  if(movil.length < 4){
  	alert("Debe especificar el nombre del movil");
  	return;
  }
  
  if(pass1.length > 0 || pass1.length > 0){
  	if(pass1.length < 4 || pass1 != pass2){
	  	alert("Escriba la misma clave (no trivial) en las dos casillas");
  		return;
  	}
  }
  if(nombre.length > 0){
  }

  amigos = null;
  peticion({cmd:"modmovil", user : actual.user , pass : actual.pass , 
     movil: movil, clave : pass1, nombre : escape(nombre)});
}
moviles.onClickNuevo = function()
{
  var movil  =  $("movil_user").value;
  var pass1  =  $("movil_pass1").value;
  var pass2  =  $("movil_pass2").value;
  var nombre =  $("movil_name").value;
  
  if(movil.length < 4){
  	alert("El nombre de movil no es válido");
  	return;
  }
  
  if(pass1.length < 4 || pass1 != pass2){
  	alert("Escriba la misma clave (no trivial) en las dos casillas");
  	return;
  }
  amigos = null;
  peticion({cmd:"newmovil", user : actual.user , pass : actual.pass , 
     movil: movil, clave : pass1, nombre : escape(nombre)});
}

//-----------------------------------------------------
//
var recorridos = new PageSimple("recorridos", principal);
var calendario_inicio;
var calendario_final;
recorridos.onSetActual = function()
{
	var t = (new Date()).getTime();
	calendario_inicio = new Calendario("calendario_inicio", t - 48*3600000);
	calendario_final = new Calendario("calendario_final", t);
	this.innerHTML =null;
}
recorridos.onClickAnalizar  = function()
{
	var url = cargarParametrosRecorrido();
	onWindowRecorrido(url);
}
function cargarParametrosRecorrido()
{
	var url;
	
	var movil = $("select_movil").value;
	
	var acutipo  = $("acutipo").value;
	var stime = $("stop_time").value;

	var inicio  = calendario_inicio.dia.getTime();
	var final   = calendario_final.dia.getTime();
	
	inicio = 24*3600* Math.floor(inicio/(24*3600000));	//redonde a las 00:00:00
	final  = 24*3600* (1+Math.floor(final/(24*3600000))); //redondea a las 24:00:00
 
	url  = "movil=" + movil;
	url += "&inicio=" + inicio;
	url += "&final=" + final;
	url += "&acum=" + acutipo;
	url += "&cut=" + stime;
	//alert(url);
	return url;
}
//-----------------------------------------------------
//
var mensajes = new PageSimple("mensajes", principal);
mensajes.onSetActual = function()
{
	var txt = "";
	var i, am, txt, d;
	
	if(!amigos){
		this.innerHTML = null;	
		principal.activar();
		return;
	}
	
   	for(i in amigos){
   		am = amigos[i];
   		if(am.tmsg == 0 || am.msg == ""){
   			msg = "No ha enviado ningún mensaje.";
   		}
   		else{
   			d = new Date;
   			d.setTime(am.tmsg * 1000);
   			msg = d.toLocaleString() + "<br>" + am.msg;
   		}
   		msg = am.user + ' &nbsp; // &nbsp; ' + am.name + '<br>' + msg;
   		txt += "<p>" + msg + "</p>";
   	}
	
	text("mensajes", txt);
	this.innerHTML = null;	
}

mensajes.onClickEnviar = function()
{
	var msg, param;
	msg = $("nuevo_mensaje").value;
	if(msg == ""){
		alert("Debe escribir un mensaje en la caja de texto");
		return;
	}
	msg = escape(msg);
	if(msg.length > 250){
		alert("El mensaje es demasiado largo.");
		return;
	}
	amigos = null;
    peticion({ cmd : "newmsg" , user : actual.user , pass : actual.pass , msg : msg});
}


