var usuario = "";
var pass = "";
var sha1 = "";
var marca_tiempo = "";
var html_frame_reg = "";

function onkey_login(e)
{
	if (e.keyCode == 13)
	{
		login_usuario();
	}
}


function login_usuario()
{
	div = document.getElementById("div_login_usuario");
	
	//Cargo nombre de usuario y contraseña
	usuario = document.getElementById("USUARIO").value ;
	pass = document.getElementById("PASSWORD").value ;
	
	//Pongo la imagen de cargando
	if (html_frame_reg == "") html_frame_reg = div.innerHTML;
	div.innerHTML = "<img src='imagenes/web/ajax_loader.gif' />";
	
	//Obtengo una marca de tiempo para logarme
	get_time_stamp();

	
}


//Obtiene una marca de tiempo para realizar el login del usuario
function get_time_stamp()
{
	
	ajax = login_user_new_ajax();
	ajax.open("GET","funciones_login.php?function=GET_TIMESTAMP",true);
	ajax.onreadystatechange=function()
	{
		if (ajax.readyState==4){
			//He recibido correctamente la marca de tiempo
			respuesta = ajax.responseText;
			
			mensaje = respuesta.split("#")[1];
			if (respuesta.indexOf("OK#") != 0)
			{
				//Error de login
				document.getElementById("div_login_usuario").innerHTML = mensaje;
				return;
			}
			
			marca_tiempo = mensaje;
			//Como ha acabado todo bien podemos seguir
			login_user();
			return;
		}
	}
	ajax.send(null);
}

function logout_user()
{
	div = document.getElementById("div_login_usuario");
	div.innerHTML = "<img src='imagenes/web/ajax_loader.gif' />";
	
	ajax = login_user_new_ajax();
	
	//Obtengo la página actual
	var sPath = window.location.pathname;	
	var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
	if (sPage.length == 0) sPage = "index.php";
	
	ajax.open("GET","funciones_login.php?function=LOGOUT&curpage=" + sPage,true);
	ajax.onreadystatechange=function()
	{
		if (ajax.readyState==4){
			respuesta = ajax.responseText;
			
			if (respuesta.indexOf("GOTO#") == 0)
			{
					//Mandamos a otra página
					 window.location = respuesta.split("#")[1];
					 return;
			}
			
			if (respuesta.indexOf("ERROR#") == 0)
			{
				document.getElementById("div_login_usuario").innerHTML = respuesta.split("#")[1];
				return;
			}
			
			//Hemos conseguido logarnos. Cambio la form
			vector = respuesta.split("##");
			div = document.getElementById("div_login_usuario");
			div.innerHTML = vector[1];
			
			//Cambio el menu y submenú que habré recibido también
		 	document.getElementById("div_menu").innerHTML = vector[2]; 
		 	document.getElementById("div_submenu").innerHTML = vector[3]; 
			
		}
	}
	ajax.send(null);
}


function login_user()
{
	//Calculo el sha1
	sha1 = SHA1(pass + marca_tiempo);
	ajax = login_user_new_ajax();
	
	//Obtengo la página actual
	var sPath = window.location.pathname;	
	var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
	if (sPage.length == 0) sPage = "index.php";
	
	//Obtengo la url que pediré
	myurl = "funciones_login.php?function=LOGIN&user=" + usuario + "&sha1=" + sha1 + "&curpage=" + sPage;
	ajax.open("GET",myurl,true);
	ajax.onreadystatechange=function()
	{
		if (ajax.readyState==4){
		//Hemos conseguido logarnos??
		respuesta = ajax.responseText;
		if (respuesta.indexOf("OK#") != 0){
				login_error(respuesta.split("#")[1]);
				return;
			}
		 vector = respuesta.split("##");
		 //Cambio el menu y submenú que habré recibido también
		 document.getElementById("div_menu").innerHTML = vector[1];						//Menú 
		 document.getElementById("div_submenu").innerHTML = vector[2];				//Submenú 
		 document.getElementById("div_login_usuario").innerHTML = vector[3];	//Cuadro de logado
		 return;	
		}
	}
	ajax.send(null);
}

//Si ha ocurrido un error al logarse mostramos el mensaje de error
function login_error(respuesta)
{
	ajax = login_user_new_ajax();
	ajax.open("GET","sub_login.php",true);
	ajax.onreadystatechange=function()
	{
		if (ajax.readyState==4){
					respuesta_msg = ajax.responseText;
					//Hemos conseguido logarnos??			
					div = document.getElementById("div_login_usuario");
					div.innerHTML = respuesta_msg;
					
					div = document.getElementById("div_msg_error_login");
					div.innerHTML = respuesta;
					
					document.getElementById("USUARIO").value  = usuario;
					document.getElementById("PASSWORD").focus();					
		}
	}
	ajax.send(null);
}

//Función a llamar para el olvido de la contraseña
function olvido_pass()
{
	usuario = document.getElementById("USUARIO").value ;
	pass = document.getElementById("PASSWORD").value ;

	if (usuario.length == 0)
	{
		document.getElementById("div_msg_error_login").innerHTML = INTRODUZCA_EMAIL;
		return;
	}

	ajax = login_user_new_ajax();
	ajax.open("GET","funciones_login.php?function=OLVIDO_PASS&user=" + usuario ,true);
	ajax.onreadystatechange=function()
	{
		if (ajax.readyState==4){
			respuesta = ajax.responseText;
			mensaje = respuesta.split("#")[1];
			
			if (respuesta.indexOf("OK#") == 0)
			{
					document.getElementById("div_msg_error_login").innerHTML = mensaje;
					return;
			}
			else if (respuesta.indexOf("ERROR#") == 0)
			{
					document.getElementById("div_msg_error_login").innerHTML = mensaje;
					return;		
			}
			
			document.getElementById("div_msg_error_login").innerHTML = ERROR_CONEXION;
		}
	}
	ajax.send(null);	
	
	
}



/*********************************************** FUNCIONES DE AJAX ****************************************/


function login_user_new_ajax(){
  var xmlhttp=false;
  try {
   // Creaciónel objeto ajax para navegadores diferentes a Explorer
   xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
   // o bien
   try {
     // Creación del objeto ajax para Explorer
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) {
     xmlhttp = false;
   }
  }

  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
   xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
} 

/*********************************************************************************************************/
/*********************************************************************************************************/
/************************************* CÁLCULO DE HASH SHA1 **********************************************/
/*********************************************************************************************************/
/*********************************************************************************************************/
function SHA1 (msg) {

    function rotate_left(n,s) {
        var t4 = ( n<<s ) | (n>>>(32-s));
        return t4;
    };

    function lsb_hex(val) {
        var str="";
        var i;
        var vh;
        var vl;

        for( i=0; i<=6; i+=2 ) {
            vh = (val>>>(i*4+4))&0x0f;
            vl = (val>>>(i*4))&0x0f;
            str += vh.toString(16) + vl.toString(16);
        }
        return str;
    };

    function cvt_hex(val) {
        var str="";
        var i;
        var v;

        for( i=7; i>=0; i-- ) {
            v = (val>>>(i*4))&0x0f;
            str += v.toString(16);
        }
        return str;
    };


    function Utf8Encode(string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    };

    var blockstart;
    var i, j;
    var W = new Array(80);
    var H0 = 0x67452301;
    var H1 = 0xEFCDAB89;
    var H2 = 0x98BADCFE;
    var H3 = 0x10325476;
    var H4 = 0xC3D2E1F0;
    var A, B, C, D, E;
    var temp;

    msg = Utf8Encode(msg);

    var msg_len = msg.length;

    var word_array = new Array();
    for( i=0; i<msg_len-3; i+=4 ) {
        j = msg.charCodeAt(i)<<24 | msg.charCodeAt(i+1)<<16 |
        msg.charCodeAt(i+2)<<8 | msg.charCodeAt(i+3);
        word_array.push( j );
    }

    switch( msg_len % 4 ) {
        case 0:
            i = 0x080000000;
        break;
        case 1:
            i = msg.charCodeAt(msg_len-1)<<24 | 0x0800000;
        break;

        case 2:
            i = msg.charCodeAt(msg_len-2)<<24 | msg.charCodeAt(msg_len-1)<<16 | 0x08000;
        break;

        case 3:
            i = msg.charCodeAt(msg_len-3)<<24 | msg.charCodeAt(msg_len-2)<<16 | msg.charCodeAt(msg_len-1)<<8    | 0x80;
        break;
    }

    word_array.push( i );

    while( (word_array.length % 16) != 14 ) word_array.push( 0 );

    word_array.push( msg_len>>>29 );
    word_array.push( (msg_len<<3)&0x0ffffffff );


    for ( blockstart=0; blockstart<word_array.length; blockstart+=16 ) {

        for( i=0; i<16; i++ ) W[i] = word_array[blockstart+i];
        for( i=16; i<=79; i++ ) W[i] = rotate_left(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1);

        A = H0;
        B = H1;
        C = H2;
        D = H3;
        E = H4;

        for( i= 0; i<=19; i++ ) {
            temp = (rotate_left(A,5) + ((B&C) | (~B&D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;
            E = D;
            D = C;
            C = rotate_left(B,30);
            B = A;
            A = temp;
        }

        for( i=20; i<=39; i++ ) {
            temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;
            E = D;
            D = C;
            C = rotate_left(B,30);
            B = A;
            A = temp;
        }

        for( i=40; i<=59; i++ ) {
            temp = (rotate_left(A,5) + ((B&C) | (B&D) | (C&D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;
            E = D;
            D = C;
            C = rotate_left(B,30);
            B = A;
            A = temp;
        }

        for( i=60; i<=79; i++ ) {
            temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;
            E = D;
            D = C;
            C = rotate_left(B,30);
            B = A;
            A = temp;
        }

        H0 = (H0 + A) & 0x0ffffffff;
        H1 = (H1 + B) & 0x0ffffffff;
        H2 = (H2 + C) & 0x0ffffffff;
        H3 = (H3 + D) & 0x0ffffffff;
        H4 = (H4 + E) & 0x0ffffffff;

    }

    var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4);

    return temp.toLowerCase();

}