var Gab = {


    //user: null,

    //password: null,

    message: null,

    connection: null,

    temporizador: null,

    jid_to_iduser: function (jid){

        return jid.split("@", 1);

    },


    jid_to_id: function (jid) {
        return Strophe.getBareJidFromJid(jid)
        .replace("@", "-")
        .replace(".", "-");
    },

    on_roster: function (iq) {

        //alert ("on_roster: "+ $(iq).text());

        $(iq).find('item').each(function () {
            var jid = $(this).attr('jid');
            var name = $(this).attr('name') || jid;

            //alert ("on_roster name:" + name);

            // transform jid into an idon_roster
            var jid_id = Gab.jid_to_id(jid);

            var contact = $(
                "<li id='" + jid_id + "' style='display: none' class=barra_lista onmouseover=\"this.className='barra_lista_hover'\" onmouseout=\"this.className='barra_lista'\">" +
                "<div class='contacto_lista desconectado'>" +
                "<img src='/chat/images/move.png' class='mover_contacto'>" +
                "<div class='nombre_lista'>" + acortar_nombre(18, name) + "</div>" +
                "<div class='jid_lista'>" + jid + "</div>" +
                "<input type='hidden' value='' /> " +
                "</div>" +
                "</li>");


            /*var contact = $("<li id='" + jid_id + "'>" +
                "<div class='contacto_lista desconectado'>" +
                "<div class='nombre_lista'>" +
                name +
                "</div></div></li>");*/


            //var contact = $("<div class='contacto_lista desconectado' title='Inactivo'><span>"+ name +"</span></div>");

            Gab.insert_contact(contact);
        });

        // set up presence handler and send initial presence
        Gab.connection.addHandler(Gab.on_presence, null, "presence");
        Gab.connection.send($pres());
    },

    pending_subscriber: null,

    on_presence: function (presence) {

        //alert ("on_presence: "+$(presence).text());
        //alert ("on_presence");

        var ptype = $(presence).attr('type');
        var from = $(presence).attr('from');
        var jid_id = Gab.jid_to_id(from);
        var jid = from.split("/")[0];
        var name = $("#"+jid_id).find('.nombre_lista').text().split(" ")[0] || jid;


        var showw = $(presence).find("show").text();
        var statu = $(presence).find("status").text();


        //alert ($(presence).length);
        //alert (presence.toString());

        if(jid_id == $("#chat_indice_principal_nombre").data('jid_id_principal')){

            abrirConversaciones();
            //alert ("solo una vez");
            //cambiarEstadoIndiceStatus("enlinea");
            $("#chat_indice_principal_nombre").data('jid_id_principal', from);

        }


        //alert ("on_presence    type: "+ptype+" from: "+ from+ " show: "+ showw+ " status: " + statu);

        if (ptype === 'subscribe') {
            // populate pending_subscriber, the approve-jid span, and
            // open the dialog
            Gab.pending_subscriber = from;
            $('#approve-jid').text(Strophe.getBareJidFromJid(from));
            $('#approve_dialog').dialog('open');
        } else if (ptype !== 'error') {

            var iduser = Gab.jid_to_iduser(from);

            $.post("/chat/variables.php", {
                datolista: iduser
            },
            function(data){

                var usuario_actual = false;
                var show = $(presence).find("show").text();
                var estado_listo = false;
                var estado_ant = "";

                //alert ("on_presence    type: "+ptype+" from: "+ from+ " show: "+ showw+ " status: " + statu + " Gab jid " + Gab.connection.jid);

                /*if(from == Gab.connection.jid && ptype != 'unavailable' && (show === "" || show === "chat") && estado_ant == "enlinea"){


		    //actualizarEstado("get");
                    usuario_actual = true;
                    estado_listo = true;

                }*/

                if(jid == Gab.connection.jid.split("/")[0]){

                    //Viene en linea
                    if((ptype != 'unavailable' && (show === "" || show === "chat")) && !$("#chat_indice_principal_nombre").hasClass("enlinea")){
                        //aqui enlinea
                        //alert ("enlinea");
                        actualizarEstado("get");

                    }else if((ptype != 'unavailable' && (show === "dnd" || show == "xa")) && !$("#chat_indice_principal_nombre").hasClass("ocupado")){
                        //aqui ocupado
                        //alert ("ocupado");
                        actualizarEstado("get");

                    }else if(ptype != 'unavailable' && show === "away" && !$("#chat_indice_principal_nombre").hasClass("ausente")){
                        //aqui ausente
                        actualizarEstado("get");

                    }

                    usuario_actual = true;
                //estado_listo = true;


                }


                //var grupo = "";
                /*if(data == "redlacionados"){
                    grupo = "redlacionados";
                }else if(data == "favoritos"){
                    grupo = "favoritos";
                }else{
                    grupo = "capitales";
                }*/

                if(jid != Gab.connection.jid.split("/")[0]){
                    var clase_status_actual = $('#panel_'+data+' li#' + jid_id + ' .contacto_lista').attr("class").split(" ")[1];
                    usuario_actual = false;

                }else{
                    usuario_actual = true;
                }

                var contact = $('#panel_'+data+' li#' + jid_id + ' .contacto_lista')
                .removeClass("enlinea")
                .removeClass("ocupado")
                .removeClass("ausente")
                .removeClass("desconectado")
                .removeClass("oculto");

                var contact_window = $("#chat_indice_"+jid_id)
                .removeClass("enlinea")
                .removeClass("ocupado")
                .removeClass("ausente")
                .removeClass("desconectado");


                var input_jid =  $("#"+jid_id).children().find('input');
                var resources = input_jid.val();
                //alert (jid + " " + Gab.connection.jid)
                /*if(jid != Gab.connection.jid.split("/")[0]){
                    alert (jid + " aqui " + $("#"+jid_id).children().find('input').val());
                }*/
                if (ptype === 'unavailable') {

                    //if($("#"+jid_id).data("contador_conectado") == 1){

                    if(usuario_actual && !estado_listo){

                    //cambiarEstadoIndiceStatus("enlinea");

                    }else{


                        if(estaResource(resources, from) && !usuario_actual){

                            var arregloFullJibs = resources.split(",");
                            var nuevosResources = "";

                            //alert (resources);
                            //alert (arregloFullJibs.length);

                            for (i = 0; i < arregloFullJibs.length-1; i++) {

                                if(arregloFullJibs[i] != from){

                                    nuevosResources += arregloFullJibs[i]+",";

                                }

                            }

                        }

                        //alert (nuevosResources);

                        if(nuevosResources.split(",").length <= 1){

                            contact.addClass("desconectado");
                            contact_window.addClass("desconectado");
                            /*$("#chat_conversacion_" + jid_id).append(
                                "<div class='evento_chat'>" +
                                //Strophe.getNodeFromJid(jid) +
                                name +
                                " esta desconectado</div>");*/
                            input_jid.val("");

                        }else{

                            contact.addClass(clase_status_actual);
                            contact_window.addClass(clase_status_actual);
                            input_jid.val(nuevosResources);

                        }
                    }


                } else {



                    if(!estaResource(resources, from) && !usuario_actual){

                        resources += from+",";
                        input_jid.val(resources);

                    }


                    if (show === "" || show === "chat") {

                        if(!usuario_actual){


                            contact.addClass("enlinea");
                            contact_window.addClass("enlinea");
                        /*$("#chat_conversacion_" + jid_id).append(
                                "<div class='evento_chat'>" +
                                //Strophe.getNodeFromJid(jid) +
                                name +
                                " esta conectado</div>");*/
                        }

                    } else if (show === "dnd" || show == "xa"){

                        if(!usuario_actual){

                            contact.addClass("ocupado");
                            contact_window.addClass("ocupado");

                        }

                    }else{

                        if(!usuario_actual){

                            contact.addClass("ausente");
                            contact_window.addClass("ausente");

                        }

                    }
                }

                if(!usuario_actual){

                    var li = contact.parent();
                    //li.remove();

                    Gab.insert_contact(li);

                }

            });
        }

        // reset addressing for user since their presence changed
        //jid_id = Gab.jid_to_id(from);
        //$('#chat-' + jid_id).data('jid', Strophe.getBareJidFromJid(from));

        return true;
    },

    on_roster_changed: function (iq) {

        alert ("on_roster_change: "+$(iq).text());

        $(iq).find('item').each(function () {
            var sub = $(this).attr('subscription');
            var jid = $(this).attr('jid');
            var name = $(this).attr('name') || jid;
            var jid_id = Gab.jid_to_id(jid);

            if (sub === 'remove') {
                // contact is being removed
                $('#' + jid_id).remove();
            } else {
                // contact is being added or modified
                var contact_html = "<li id='" + jid_id + "' class=barra_lista onmouseover=\"this.className='barra_lista_hover'\" onmouseout=\"this.className='barra_lista'\">" +
                "<div class='" +
                ($('#' + jid_id).attr('class') || "contacto_lista oculto") +
                "'>" +
                "<div class='nombre_lista'>" +
                acortar_nombre(18, name) + "</div>" +
                "<div class='jid_lista'>" +
                jid + "</div>" +
                "</div></li>";

                if ($('#' + jid_id).length > 0) {
                    $('#' + jid_id).replaceWith(contact_html);

                    alert ("1 " + contact_html.attr("id") + " " + contact_html.attr("class"));

                } else {

                    alert ("2 " + contact_html.attr("id") + " " + contact_html.attr("class"));

                    Gab.insert_contact(contact_html);
                }
            }
        });

        return true;
    },

    on_message: function (message) {


        //alert ($(message).attr('from'));
        //alert (Gab.connection.jid);

        var me = false;

        if($(message).attr('from').split("/")[0] == Gab.connection.jid.split("/")[0]){

            //alert ("Mensaje mio " + $(message).find('active').text());
            //var full_jid = $(message).attr('from');
            var jid = $(message).find('active').text();
            var my_name = $("#chat_nombre_usuario").text().split(" ")[0];
            me = true;


        }else{


            var full_jid = $(message).attr('from');
            var jid = Strophe.getBareJidFromJid(full_jid);

        }

        var tip_offline = $(message).find("delay").text();
        var jid_id = Gab.jid_to_id(jid);
        var name = $("#"+jid_id).find('.nombre_lista').text() || jid;
        var first_name = name.split(" ")[0] || Strophe.getNodeFromJid(jid);
        var status = $("#"+jid_id).find(".contacto_lista").attr("class").split(" ")[1];

        if(status == "oculto"){
            status = "desconectado";
        }



        //alert("Este es el #chat" + $("#chat-" + jid_id).length);
        //alert("Este es el que necesito" + $("#chat_indice_"+jid_id).length);

        //alert (jid);

        //if ($('#chat-' + jid_id).length === 0 && $("#"+jid).length === 0) {
        if ($("#chat_indice_"+jid_id).length === 0) {

            /*$('#chat-area').tabs('add', '#chat-' + jid_id, jid);
            $('#chat-' + jid_id).append(
                "<div class='chat-messages'></div>" +
                "<input type='text' class='chat-input'>");
             */


            //Aqui es cuando hay que construir la ventana porque no se ha construido por lo cual no esta abierta
            $('.panel_chat').append(
                "<div id='"+ jid +"' class='indice_chat indice_chat_unread' >" +
                "<div id='chat_indice_" + jid_id + "' class='indice_usuario_chat "+status+"'>" +
                "<div class='ind'>"+ acortar_nombre(26, name) +"</div>"+
                "<div class='boton_indice_cerrar'></div>" +
                "</div>"+
                "<div id='chat_contenido_"+jid_id+"' class='barmenu_chat'>" +
                "<div class='barmenu_header_chat'>" +

                "<div class='barmenu_header_buttons_chat'>" +
                "<a class='barmenu_header_close_chat'></a>" +
                "<a class='barmenu_header_min_chat'></a>" +
                "</div>" +
                "<div class='barmenu_header_text_chat'>" + acortar_nombre(20, name) +"</div>" +
                "</div>" +
                "<div id='chat_conversacion_"+ jid_id +"' class='caja_contenido_chat'></div>" +
                //"<textarea tabindex='0' class='entrada_chat' id='chat_entrada_"+ jid_id  +"'></textarea>" +
                "<input type='text' class='entrada_chat'>" +
                "<img class='compartir_noticia_chat' src='/chat/images/application.png'>" +
                "<div class='conversation_options_window_chat' style='display: none;'>" +
                "<div id='chat_boton_compartir_noticia' class='barmenu_header_buttons_window_chat' onmouseout=\"this.className='barmenu_header_buttons_window_chat'\" onmouseover=\"this.className='barmenu_header_buttons_window_chat_hover'\">" +
                "<div class='barmenu_header_window_button_chat'>Compatir P&aacute;gina</div>" +

                "</div>" +
                "</div>" +
                "</div>" +
                "</div>"
                );

            autoAjustarTabs();


        }

        //alert(full_jid);

        //        $('#chat-' + jid_id).data('jid', full_jid);//?????

        //$('#chat-area').tabs('select', '#chat-' + jid_id);
        //$('#chat-' + jid_id + ' input').focus();

        //Manda el puntero para escribir a esta nueva ventana
        //$("#chat_contenido_" + jid_id + " input").focus();


        var composing = $(message).find('composing');
        /*if (composing.length > 0) {

            $("#chat_conversacion_" + jid_id).append(
                "<div class='evento_chat'>" +
                //Strophe.getNodeFromJid(jid) +
                first_name +
                " esta escribiendo...</div>");


            //Gab.scroll_chat(jid_id);
            Gab.chat_scroll(jid_id);
        }*/

        var body = $(message).find("html > body");

        if (body.length === 0) {
            body = $(message).find('body');
            if (body.length > 0) {
                body = body.text()
            } else {
                body = null;
            }
        } else {
            body = body.contents();

            var span = $("<span></span>");
            body.each(function () {
                if (document.importNode) {
                    $(document.importNode(this, true)).appendTo(span);
                } else {
                    // IE workaround
                    span.append(this.xml);
                }
            });

            body = span;
        }

        if (body) {
            // remove notifications since user is now active
            //$('#chat-' + jid_id + ' .chat-event').remove();

            //Remueve la notificacion de que el usuario esta escribiendo cuando se manda el mensaje
            $("#chat_conversacion_"+ jid_id +" .evento_chat").remove();


            // add the new message


            var chat_class = 'nombre_chat';
            if(me){

                first_name = my_name;
                chat_class = 'nombre_chat yo';

            }


            var contenido_mensaje = "<div class='mensaje_chat'>" +
            "<span class='" + chat_class + "'>" + first_name + " </span>" +
            "<span class='hora_chat'>" + devolverHoraFormat() + "</span>" +
            "<span class='texto_chat'>" + body + "</span>" +
            "</div>";

            //alert  (Gab.message);
            //alert  (body);



            //if(Gab.message == body){

            //var formatoBaseDatos = contenido_mensaje.replace(/'/gi, "\'\'");

            //if(tip_offline != "Offline Storage" || !me){
            //    conversacion(jid.split("@")[0], contenido_mensaje);


            //alert ("aqui se repite");
            //}



            if($(message).attr('from') !=  Gab.connection.jid && Gab.message != body){


                //Agregando el mensaje
                $("#chat_conversacion_"+jid_id).append(contenido_mensaje);

                //Gab.scroll_chat(jid_id);
                Gab.chat_scroll(jid_id);

                if(Gab.connection.jid.split("/")[0] != $(message).attr('from').split("/")[0]){
                    $("#chat_indice_"+jid_id).parent().addClass("indice_chat_unread");
                    alertaNuevoMensaje(name);

                    if(tip_offline != "Offline Storage"){
                        conversacion(jid.split("@")[0], contenido_mensaje);
                    }

                }




            }
            Gab.message = body;

        //Gab.message = contenido_mensaje;
        //}


        }



        return true;




    //Gab.message = message;

    },

    /*scroll_chat: function (jid_id) {
        var div = $('#chat-' + jid_id + ' .chat-messages').get(0);
        div.scrollTop = div.scrollHeight;
    },*/

    chat_scroll:function (jid_id){
        var div = $("#chat_conversacion_"+ jid_id).get(0);
        div.scrollTop = div.scrollHeight;

    },


    presence_value: function (elem) {
        if (elem.hasClass('enlinea')) {
            return 2;
        } else if (elem.hasClass('ausente')) {
            return 1;
        }
        /*else if(elem.hasClass('desconectado') || elem.hasClass('oculto')){
            return 3;
        }*/

        return 0;
    },

    insert_contact: function (elem) {

        //alert ("insert_contac: "+$(elem).text());

        var jid = elem.find('.jid_lista').text();

        var iduser = Gab.jid_to_iduser(jid);

        var pres = Gab.presence_value(elem.find('.contacto_lista'));

        var status = elem.find('.contacto_lista');

        //var contacts = $('#panel_favoritos li');

        //var idcontact = Gab.jid_to_id(jid);
        //$("#"+idcontact+"").draggable();

        //var grupo = "";

        $.post("/chat/variables.php", {
            datolista: iduser
        },
        function(data){

            //alert (data);
            //grupo = data;
            //var contacts = "";

            /*if(data == "redlacionados"){
                contacts = $('#panel_redlacionados li');
            }else if (data == "favoritos"){
                contacts = $('#panel_favoritos li');
            }else {
                contacts = $('#panel_capitales li');
            }*/

            var contacto = elem.find(".contacto_lista");


            if(data == "capitales" && contacto.is(".desconectado")){

                //alert (jid + " " + elem.find(".contacto_lista").is(".desconectado"));
                //alert (elem.find(".contacto_lista")[1]);

                contacto.removeClass("desconectado");
                contacto.addClass("oculto");
                $(contacto).parent().hide();


            //elem.find(".contacto_lista").removeClass("desconectado");
            //elem.find(".contacto_lista").addClass("oculto");

            }else{

                $(contacto).parent().show();


            }

            var contacts = $('#panel_'+data+' li');

            //Funcion que ordena el contacto al hora de meterlo en el rosters
            if (contacts.length > 0) {
                var inserted = false;
                contacts.each(function () {
                    var cmp_pres = Gab.presence_value(
                        $(this).find('.contacto_lista'));
                    var cmp_jid = $(this).find('.jid_lista').text();

                    if (pres > cmp_pres) {
                        $(this).before(elem);
                        inserted = true;
                        return false;
                    } else {
                        if (jid < cmp_jid) {
                            $(this).before(elem);
                            inserted = true;
                            return false;
                        }
                    }
                });

                if (!inserted) {

                    //$('#panel_favoritos ul').append(elem);
                    //$('#panel_favoritos').append(elem);

                    //Aqui pregunta en que data esta el usuario

                    /*if(data == "redlacionados"){
                        $('#panel_redlacionados').append(elem);
                    }else if(data == "favoritos"){
                        $('#panel_favoritos').append(elem);
                    }else {
                        $('#panel_capitales').append(elem);
                    }*/
                    $("#panel_"+data+" ul").append(elem);

                }
            }
            else {
                //Por si es el primer contacto en agregar
                //$('#panel_favoritos ul').append(elem);
                //$('#panel_favoritos').append(elem);
                /*
                if(data == "redlacionados"){
                    $('#panel_redlacionados').append(elem);
                }else if(data == "favoritos"){
                    $('#panel_favoritos').append(elem);
                }else {
                    $('#panel_capitales').append(elem);
                }*/

                $("#panel_"+data+" ul").append(elem);
            }

            //alert ($(this).attr("id"));
            //var jid_id = Gab.jid_to_id(jid);
            //aqui esta conectado
            if(status.hasClass('enlinea') || status.hasClass('ocupado') || status.hasClass('ausente')){

            //var actual = $("#"+jid_id).data("contador_conectado");
            //$("#"+jid_id).data("contador_conectado", actual++);
            //actual = elem.data("contador_conectado");
            //actual = parseInt(actual);
            //alert (actual+1);
            //var array_jids = elem.data("contador_conectado");
            //alert (array_jids.length);
            //array_jids[array_jids.length] =
            //elem.data("contador_conectado", elem.data("contador_conectado")+1);

            //elem.data("contador_conectado", elem.data("contador_conectado")+1);


            /* var resources = elem.find("input").val();

                if(!estaResource(resources, full_jid)){

                    resources += full_jid+",";

                    elem.find("input").val(resources);

                }*/




            }else if(status.hasClass('desconectado') || status.hasClass('oculto')){

            //elem.find("input").val("");

            //elem.data("contador_conectado", 0);
            //var arreglo_jids = new Array();
            //elem.data("contador_conectado", arreglo_jids);



            }

            //alert (jid_id + " " + $("li #"+jid_id).attr("id"));


            contadorConectados();


        });

    //Aqui tengo que llamar a la funcion que suma las clases "enlinea"



    }
};



$.extend($.expr[":"], {
    "containsNC": function(elem, i, match, array) {
        return (elem.textContent || elem.innerText || "").toLowerCase
        ().indexOf((match[3] || "").toLowerCase()) >= 0;
    }
});



$(document).ready(function () {


    $(window).focus(function(){

        $("#chat_alerta").data('pagina', 'true');
       
    });

    $(window).blur(function(){

        
        $("#chat_alerta").data('pagina', 'false');
        


    });


    //#B0C5D9 color para cuando alguien le esta hablando
    //#557FAA



    $("#lolo").live("click", function(){


        var lolo = true;

        $(this).everyTime(100, 'hide', function(){
            /*$(this).setInterval(function(){
            alert ("lolo");
        }, 3000);*/



            $(this).append("<li>New One</li>");


        /*if(lolo){
                $(this).hide();
                alert ("hide");
                lolo = !lolo;
            }else {
                $(this).show();
                alert ("show");
                lolo = !lolo;
            }*/

        });

    });

    $("#lolo").live("click", function(){

        $("#lolo").stopTime('hide');

    });

    //Cambia el tamanho del largo del chat dependiendo del browser
    /*$(window).resize(function(){
        var h = $(window).height();
        //var w = $(window).width();
        //$("#panel_contactos").css('height',(h < 1024 || w < 768) ? 500 : 400);
        $("#panel_contactos").css('height', h-150);
    });*/

    jQuery.event.add(window, "load", resizeFrame);
    jQuery.event.add(window, "resize", resizeFrame);


    $(window).resize(function(){

        ajustarTamanhoTabs();

    });



    //Funcion del cambio de clase para los botones de opciones y estatus
    $(".barmenu_header_button_chat").hover(
        function () {

            $(this).css(
                "color" , "white"
                );
        },
        function () {
            $(this).css(
                "color" , "#24368A"
                );
        }
        );

    //cambio de color de los botones que estan abajo del estatus y abajo de las opciones
    $(".barmenu_header_buttons_window_chat").hover(
        function () {

            $(this).css({
                "background-color" : "#0A105B",
                "color" : "#FFFFFF"
            });
        },
        function () {
            $(this).css({
                "background-color" : "#FFFFFF",
                "color" : "#0A105B"

            });
        }
        );

    /*$(".contacto_lista").live('mouseover mouseout', function(event){

        //alert (event.type);

        if(event.type == 'mouseover'){
            $(this).css("color", "#FFFFFF");
        }else {
            $(this).css("color", "#000000");
        }

        //alert ("fuck");

    });*/

    //cambio de color para los grupos
    $(".titular_lista").hover(
        function () {

            $(this).css(

                "color", "#FFCC00"
                );
        },
        function () {
            $(this).css(
                "color" , "#24368A"
                );
        }
        );




    $("#chat-mover-izquierda").live('click', function(){

        //$("#chat_panel_conversaciones > div:first-child").hide();


        //var total_conversaciones = $("#chat_panel_conversaciones > div").length;
        //var total_vistos = total_conversaciones - $("#chat_panel_conversaciones > div:hidden").length;
        var total_vistos = $("#chat_panel_conversaciones > div:visible").length;
        //alert (total_vistos);


        $("#chat_panel_conversaciones > div").each(function(index) {
            //alert(index + ': ' + $(this).attr("id"));

            if($(this).is(":hidden") && $(this).next().is(":visible")){

                //$(this).show();

                $("#chat_panel_conversaciones > div").hide();
                var fin = index + total_vistos;
                $("#chat_panel_conversaciones > div").slice(index, fin).show();

                return false;

            }

        });

    });


    $("#chat-mover-derecha").live('click', function(){

        //$("#chat_panel_conversaciones > div:first-child").hide();


        //var total_conversaciones = $("#chat_panel_conversaciones > div").length;
        //var total_vistos = total_conversaciones - $("#chat_panel_conversaciones > div:hidden").length;
        var total_vistos = $("#chat_panel_conversaciones > div:visible").length;
        //alert (total_vistos);

        //$("#chat_panel_conversaciones > div:last-child").hide();

        //alert($("#chat_panel_conversaciones > div").index(3).attr("id"));
        //var elementos = $("#chat_panel_conversaciones > div");
        //var arreglo = $.makeArray(elementos);
        //arreglo.reverse();



        $("#chat_panel_conversaciones > div").each(function(index) {

            //alert(index + ': ' + $(this).attr("id") + " next" + $(this).next().attr("id"));


            if($(this).is(":visible") && $(this).next().is(":hidden")){

                //alert ("nunca entro");

                $("#chat_panel_conversaciones > div").hide();
                var fin = index + 2;
                var start = fin - total_vistos;

                $("#chat_panel_conversaciones > div").slice(start, fin).show();

                return false;


            }

        });

    });


    $(window).unload( function () {

        //Gab.connection.disconnect();
        //Gab.connection = null;
        //alert("Bye now!");
        //Gab.connection.flush();
        //Gab.connection.reset();
        //alert ("culo");

        } );

    //Funcion para cargar el usuario y el password desde el $_SESSION del servidor
    $(document).trigger('autenticar_inicio', {

        tipo: "true"


    });



    $("#chat_capitales_items, #chat_favoritos_items").sortable({
        connectWith: 'ul',
        placeholder: 'tmpPlaceholder',
        update : function(e, ui) {

            var grupo = $('#'+ui.item[0].id).parent().parent().attr("id");
            grupo = grupo.split("_")[1];
            var usuario = $('#'+ui.item[0].id).attr("id");
            usuario = usuario.split("-", 1);
            var status = $('#'+ui.item[0].id).find(".contacto_lista");

            if (this === ui.item.parent()[0]) {


                if(grupo == "capitales" && status.is(".desconectado")){
                    status.removeClass("desconectado");
                    status.addClass("oculto");
                    $(status).parent().hide();
                }
                if(grupo == "favoritos" && status.is(".oculto")){
                    status.removeClass("oculto");
                    status.addClass("desconectado");
                }


                $(document).trigger('actualizar_grupo', {

                    user: usuario,
                    group: grupo

                });


            }
        }

    }).disableSelection();






    //Minimiza la ventana principal donde estan los contactos

    $('#chat_indice_principal').live('click', function(){

        if($('#chat_principal').attr("class") == "barmenu_principal_hide_chat"){

            if($("#chat_contactos").data('conexion') == "false"){


                cambiarEstadoIndiceStatus("cargando");
                $("#chat_indicador_nombre").html("Chat");
                //Actualizo la bandera en la base de datos
                //conexionUsuario("conectar");
                //Hago la conexion
                $(document).trigger('autenticar_inicio', {

                    tipo: "conectado"

                });

            }

            $('#chat_principal').removeClass("barmenu_principal_hide_chat");
            $('#chat_principal').addClass("barmenu_principal_chat");


        }else {

            $('#chat_principal').removeClass("barmenu_principal_chat");
            $('#chat_principal').addClass("barmenu_principal_hide_chat");

        }

    });

    $('#chat_boton_opciones').live('click', function(){
        $('#chat_ventana_opciones').toggle("slow");
        $('#chat_ventana_status').hide();
    //$('#chat_principal').toggleClass('barmenu_principal_chat');
    });

    $('#chat_nombre_usuario').live('click', function(){
        $('#chat_ventana_status').toggle("slow");
        $('#chat_ventana_opciones').hide();
    //$('#chat_principal').toggleClass('barmenu_principal_chat');
    });

    $("#chat_boton_enlinea").live('click', function(){

        $(document).trigger('cambiar_estado', {

            estado: "enlinea"
        });
        $('#chat_ventana_status').hide();
        cambiarEstadoIndiceStatus("enlinea");
        actualizarEstado("enlinea");

    });



    $("#chat_boton_ocupado").live('click', function(){

        $(document).trigger('cambiar_estado', {

            estado: "ocupado"
        });
        $('#chat_ventana_status').hide();
        cambiarEstadoIndiceStatus("ocupado");
        actualizarEstado("ocupado");

    });

    $("#chat_boton_ausente").live('click', function(){

        $(document).trigger('cambiar_estado', {

            estado: "ausente"
        });
        $('#chat_ventana_status').hide();
        cambiarEstadoIndiceStatus("ausente");
        actualizarEstado("ausente");

    });

    $("#chat_boton_invisible").live('click', function(){

        $(document).trigger('cambiar_estado', {

            estado: "invisible"
        });
        $('#chat_ventana_status').hide();
        cambiarEstadoIndiceStatus("desconectado");


    });

    $('#chat_boton_desconectar').live('click', function(){

        //$(document).trigger('disconnected');

        if($("#chat_contactos").data('conexion') == "true"){


            Gab.connection.disconnect();
            Gab.connection = null;


            $('#chat_principal').removeClass("barmenu_principal_chat");
            $('#chat_principal').addClass("barmenu_principal_hide_chat");
            cambiarEstadoIndiceStatus("desconectado");

            //guarda en la base de datos el estado desconectado
            conexionUsuario("desconectar");
            $("#chat_contactos").data('conexion', "false");
            $("#chat_indicador_nombre").html("Chat (Desconectado)");

        //}
        }

        $('#chat_ventana_status').hide();
        $("#chat_contactos_contador").html("");

    });

    $("#chat_minimizar_principal").live("click", function(){
        $('#chat_principal').removeClass("barmenu_principal_chat");
        $('#chat_principal').addClass("barmenu_principal_hide_chat");

    //abrirConversaciones();

    //var lolo = setInterval("alert('algo a ver')", 2000);
      
    //alertaNuevoMensaje('andres');

    //alert ("jid: " + Gab.connection.jid + " sid: " + Gab.connection.sid + " rid: " + Gab.connection.rid + " status: " + Strophe.Status);


    });


    $(".barmenu_header_min_chat").live("click", function(){
        //$(this).parent().parent().parent().removeClass("barmenu_chat");
        $(this).parent().parent().parent().toggle("slow");
    });

    $(".barmenu_header_close_chat").live("click", function() {
        var contacto = $(this).parent().parent().parent().parent().attr("id").split("@")[0];
        conversacion(contacto, "del");
        $(this).parent().parent().parent().parent().remove();
        autoAjustarTabs();
    });

    $(".indice_usuario_chat").live("click", function() {
        //$(this).next().toggleClass("barmenu_chat");
        $(this).next().toggle("slow");
    });

    $(".boton_indice_cerrar").live("click", function(){
        var contacto = $(this).parent().parent().attr("id").split("@")[0];
        conversacion(contacto, "del");
        $(this).parent().parent().remove();
        autoAjustarTabs();
    });

    $(".titular_lista").live("click", function(){

        var titular = $(this).parent().attr("id");
        $("#"+titular + " ul").toggle("slow");

    });

    $("#chat_boton_bloqueados").live("click", function(){

        $('#ventana_bloqueados').dialog('open');
        $("#chat_ventana_opciones").hide();

        cargarBloqueados();

    });

    $(".indice_chat").live("click", function(){

        $(this).removeClass("indice_chat_unread");
        $("#chat_alerta").data('alerta', '');

    });

    $(".compartir_noticia_chat").live("click", function(){

        $(this).next().toggle("slow");

    });

    $("#chat_boton_compartir_noticia").live("click", function(){

        var jid = $(this).parent().parent().parent().attr("id");

        var nombre =  $("#chat_nombre_usuario").text().split(" ")[0] || Strophe.getNodeFromJid(Gab.connection.jid);

        var body = "Hablemos sobre esto: <a rel='nofollow' href='"+sacarUrl()+"'>"+sacarUrl()+"</a>";

        $(this).parent().parent().find(".caja_contenido_chat").append(
            "<div class='mensaje_chat'>" +
            "<span class='nombre_chat yo'>" + nombre + " </span>" +
            "<span class='hora_chat'>" + devolverHoraFormat() + "</span>" +
            "<span class='texto_chat'>" +
            body +
            "</span>" +
            "</div>");

        var message = $msg({
            to: jid,
            "type": "chat"
        })
        .c('body').t(body).up()
        .c('active', {
            xmlns: "http://jabber.org/protocol/chatstates"
        });
        Gab.connection.send(message);

        Gab.chat_scroll(Gab.jid_to_id(jid));

        $(this).parent().toggle("slow");

    });

    $("#ventana_bloqueados :checkbox").live('click', function(){

        var usuario = $(this).attr("id");

        usuario = usuario.split("-")[1];

        if($(this).attr("checked")){

            //alert (usuario + " bloqueado");
            bloquearUsuario(usuario);

        }else{

            //alert (usuario + " desbloqueado");
            desbloquearUsuario(usuario);

        }

    });


    $('#ventana_bloqueados').dialog({
        autoOpen: false,
        show: 'blind',
        hide: 'explode',
        modal: true,
        height: 300,
        width: 400,
        buttons: {
            Ok: function() {
                //actualizarUsuariosBloqueados();

                $(this).dialog('close');
                //Gab.connection.addHandler(Gab.on_roster_changed,
                //    "jabber:iq:roster", "iq", "set");
                //Gab.on_roster();
                removerListas();

                //Gab.connection.addHandler(Gab.on_presence, null, "presence");

                //Gab.connection.deleteHandler();
                //Gab.connection.disconnect();
                //Gab.connection = null;
                cambiarEstadoIndiceStatus("cargando");
                $(document).trigger('autenticar_inicio', {

                    tipo: "true"

                });


            /*if(Gab.connection == null){
                    $(document).trigger('connect', {

                        jid: $("#chat_indice_principal").data('user')+"@capitales.com",
                        password: $("#chat_principal").data('pass')

                    });
                }*/
            //$(document).trigger('connected');
            }
        /*Cancelar: function(){

                $(this).dialog('close');

            }*/
        }

    });



    /*Aqui terminan las nuevas funciones del ready()*/

    /*$('#login_dialog').dialog({
    //$('#register_user').dialog({
        //autoOpen: true,
        autoOpen: false,
        draggable: false,
        modal: true,
        title: 'Connect to XMPP',
        buttons: {
            "Connect": function () {
                $(document).trigger('connect', {
                    jid: $('#jid').val() + "@capitales.com",
                    password: $('#password').val()
                });

                $('#password').val('');
                $(this).dialog('close');
            }
        }
    });*/

    /* $('#contact_dialog').dialog({
        autoOpen: false,
        draggable: false,
        modal: true,
        title: 'Add a Contact',
        buttons: {
            "Add": function () {
                $(document).trigger('contact_added', {
                    jid: $('#contact-jid').val() + "@capitales.com",
                    name: $('#contact-name').val()
                });

                $('#contact-jid').val('');
                $('#contact-name').val('');

                $(this).dialog('close');
            }
        }
    });*/

    $('#new-contact').click(function (ev) {
        $('#contact_dialog').dialog('open');

    });


    /*$('#register_user').dialog({
        autoOpen: false,
        draggable: false,
        modal: true,
        title: 'Register',
        buttons: {
            "Register": function () {

                //alert ('lolo');

                $(document).trigger('user_register', {
                    jid: $('#contact-user').val(),
                    name: $('#contact-host').val()
                });

                //$('#contact-jid').val('');
                //$('#contact-name').val('');

                $(this).dialog('close');
            }
        }
    });*/

    $('#register-user').click(function (ev) {
        $('#register_user').dialog('open');
    });



    /* $('#approve_dialog').dialog({
        autoOpen: false,
        draggable: false,
        modal: true,
        title: 'Subscription Request',
        buttons: {
            "Deny": function () {
                Gab.connection.send($pres({
                    to: Gab.pending_subscriber,
                    "type": "unsubscribed"
                }));
                Gab.pending_subscriber = null;

                $(this).dialog('close');
            },

            "Approve": function () {
                Gab.connection.send($pres({
                    to: Gab.pending_subscriber,
                    "type": "subscribed"
                }));

                Gab.connection.send($pres({
                    to: Gab.pending_subscriber,
                    "type": "subscribe"
                }));

                Gab.pending_subscriber = null;

                $(this).dialog('close');
            }
        }
    });*/

    /*$('#chat-area').tabs().find('.ui-tabs-nav').sortable({
        axis: 'x'
    });*/

    $('.contacto_lista').live('click', function () {

        //alert ("aqui es el click");

        var jid = $(this).find(".jid_lista").text();
        var name = $(this).find(".nombre_lista").text();
        var jid_id = Gab.jid_to_id(jid);
        var status = $(this).attr("class").split(" ")[1];
        if(status == "oculto"){
            status = "desconectado";
        }

        //if ($('#chat-' + jid_id).length === 0) {
        if ($("#chat_indice_"+jid_id).length === 0) {



            /*$('#chat-area').tabs('add', '#chat-' + jid_id, name);
            $('#chat-' + jid_id).append(
                "<div class='chat-messages'></div>" +
                "<input type='text' class='chat-input'>");
            $('#chat-' + jid_id).data('jid', jid);
             */


            //Aqui viene otro codigo se agrega a la barra de tareas la nueva ventana

            //$('#chat_panel_conversaciones').append("<div id='"+ jid +"' class='indice_chat' >algo es esto</div>");

            //alert (jid + " " + jid_id  + " " + status + " " + acortar_nombre(26, name));

            /*$('#chat_panel_conversaciones').append(
                "<div id='"+ jid +"' class='indice_chat' >" +
                "<div id='chat_indice_" + jid_id + "' class='indice_usuario_chat "+status+"'>" +
                "<div class='ind'>"+ acortar_nombre(26, name) +"</div>"+
                "<input class='boton_indice_cerrar' type='button' title='Cerrar'>" +

                "</div>"+
                "<div id='chat_contenido_"+jid_id+"' class='barmenu_chat'>" +
                "<div class='barmenu_header_chat'>" +

                "<div class='barmenu_header_buttons_chat'>" +
                    "<a class='barmenu_header_close_chat'></a>" +
                    "<a class='barmenu_header_min_chat'></a>" +
                "</div>" +

                "<div class='barmenu_header_text_chat'>" + acortar_nombre(20, name) +"</div>" +

                "</div>" +

                "<div id='chat_conversacion_"+ jid_id +"' class='caja_contenido_chat'></div>" +
                //"<textarea tabindex='0' class='entrada_chat' id='chat_entrada_"+ jid_id  +"'></textarea>" +
                "<input type='text' class='entrada_chat'>" +
                "<img class='compartir_noticia_chat' src='/chat/images/application.png'>" +

                "<div class='conversation_options_window_chat' style='display: none;'>" +
                "<div id='chat_boton_compartir_noticia' class='barmenu_header_buttons_window_chat' onmouseout=\"this.className='barmenu_header_buttons_window_chat'\" onmouseover=\"this.className='barmenu_header_buttons_window_chat_hover'\">" +
                "<div class='barmenu_header_window_button_chat'>Compatir P&aacute;gina</div>" +

                "</div></div></div></div>"
            );*/

            $('.panel_chat').append(
                "<div id='"+ jid +"' class='indice_chat' >" +
                "<div id='chat_indice_" + jid_id + "' class='indice_usuario_chat "+status+"'>" +
                "<div class='ind'>"+ acortar_nombre(26, name) +"</div>" +
                "<input class='boton_indice_cerrar' type='button' title='Cerrar'>" +
                "</div>"+
                "<div id='chat_contenido_"+jid_id+"' class='barmenu_chat'>" +
                "<div class='barmenu_header_chat'>" +

                "<div class='barmenu_header_buttons_chat'>" +
                "<a class='barmenu_header_close_chat'></a>" +
                "<a class='barmenu_header_min_chat'></a>" +
                "</div>" +

                "<div class='barmenu_header_text_chat'>" + acortar_nombre(17, name) +"</div>" +

                "</div>" +

                "<div id='chat_conversacion_"+ jid_id +"' class='caja_contenido_chat'></div>" +
                //"<textarea tabindex='0' class='entrada_chat' id='chat_entrada_"+ jid_id  +"'></textarea>" +
                "<input type='text' class='entrada_chat'>" +
                "<img class='compartir_noticia_chat' src='/chat/images/application.png'>" +
                "<div class='conversation_options_window_chat' style='display: none;'>" +
                "<div id='chat_boton_compartir_noticia' class='barmenu_header_buttons_window_chat' onmouseout=\"this.className='barmenu_header_buttons_window_chat'\" onmouseover=\"this.className='barmenu_header_buttons_window_chat_hover'\">" +
                "<div class='barmenu_header_window_button_chat'>Compatir P&aacute;gina</div>" +

                "</div>" +
                "</div>" +
                "</div>" +
                "</div>"
                );

            autoAjustarTabs();

        }


        //$('#chat-area').tabs('select', '#chat-' + jid_id);

        //****************************$('#chat-' + jid_id + ' input').focus();*******************************
        ubicarseEnConversacion(jid);
        $("#chat_contenido_"+jid_id + " input").focus();

    });

    /*$('.chat-input').live('keypress', function (ev) {
        var jid = $(this).parent().data('jid');

        //Este if es cuando se da enter en cada chat para pasar el mensaje
        if (ev.which === 13) {



            ev.preventDefault();

            var body = $(this).val();

            var message = $msg({
                to: jid,
                "type": "chat"
            })
            .c('body').t(body).up()
            .c('active', {
                xmlns: "http://jabber.org/protocol/chatstates"
            });
            Gab.connection.send(message);

            $(this).parent().find('.chat-messages').append(
                "<div class='chat-message'>&lt;" +
                "<span class='chat-name me'>" +
                Strophe.getNodeFromJid(Gab.connection.jid) +
                "</span>&gt;<span class='chat-text'>" +
                body +
                "</span></div>");


            Gab.scroll_chat(Gab.jid_to_id(jid));

            $(this).val('');
            $(this).parent().data('composing', false);
        } else {
            var composing = $(this).parent().data('composing');
            if (!composing) {
                var notify = $msg({
                    to: jid,
                    "type": "chat"
                })
                .c('composing', {
                    xmlns: "http://jabber.org/protocol/chatstates"
                });
                Gab.connection.send(notify);

                $(this).parent().data('composing', true);
            }
        }
    });*/

    $('.entrada_chat').live('keypress', function (ev) {
        var jid = $(this).parent().parent().attr("id");

        $(this).parent().parent().removeClass("indice_chat_unread");
        //Este if es cuando se da enter en cada chat para pasar el mensaje
        if (ev.which === 13) {

            var nombre =  $("#chat_nombre_usuario").text().split(" ")[0] || Strophe.getNodeFromJid(Gab.connection.jid);

            //alert(jid);

            ev.preventDefault();

            var body = $(this).val();

            var message = $msg({
                to: jid,
                "type": "chat"
            })
            .c('body').t(body).up()
            .c('active', {
                xmlns: "http://jabber.org/protocol/chatstates"
            });
            Gab.connection.send(message);


            ev.preventDefault();


            //alert (Gab.connection.jid.split("/")[0]);

            //Este es el mensaje para mi mismo
            var message_me = $msg({
                to: Gab.connection.jid.split("/")[0],
                "type": "chat"
            })
            .c('body').t(body).up()
            .c('active', {
                xmlns: "http://jabber.org/protocol/chatstates"
            }).t(jid);
            Gab.connection.send(message_me);


            var contenido_mensaje = "<div class='mensaje_chat'>" +
            "<span class='nombre_chat yo'>" + nombre + " </span>" +
            "<span class='hora_chat'>" + devolverHoraFormat() + "</span>" +
            "<span class='texto_chat'>" + body + "</span>" +
            "</div>";

            //var formatoBaseDatos = contenido_mensaje.replace(/'/gi, "\'\'");


            conversacion(jid.split("@")[0], contenido_mensaje);
            //alert (jid + " " + contenido_mensaje);


            $(this).parent().find(".caja_contenido_chat").append(contenido_mensaje);

            //Gab.scroll_chat(Gab.jid_to_id(jid));
            Gab.chat_scroll(Gab.jid_to_id(jid));

            $(this).val('');
            $(this).parent().data('composing', false);

        } else {
            var composing = $(this).parent().data('composing');
            if (!composing) {
                var notify = $msg({
                    to: jid,
                    "type": "chat"
                })
                .c('composing', {
                    xmlns: "http://jabber.org/protocol/chatstates"
                });
                Gab.connection.send(notify);

                $(this).parent().data('composing', true);
            }
        }
    });

    $("#chat_borrar_busqueda").live("click", function(){

        $("#chat_buscador").attr("value", "");
        $("#chat_capitales_items li").show();
        $("#chat_capitales_items li .oculto").parent().hide();
        $("#chat_capitales_items li .desconectado").parent().hide();
        $("#chat_redlacionados_items li").show();
        $("#chat_favoritos_items li").show();
        $("#chat_borrar_busqueda").css("display" , "none");
        $(".nombre_lista").removeClass("barra_lista_hover");

    });

    //Esta es la funcion desplegara la lista de usuarios para la busqueda de usuarios conectados
    $('#chat_buscador').live('keyup', function (ev) {


        if($("#chat_buscador").val().length != 0){



            $("#chat_borrar_busqueda").css("display", "block");
            //$(".contacto_lista").addClass("buscar");

            $(".barra_lista").show();
            $(".barra_lista").hide();

            //$(".contacto_lista").hide();



            $('.nombre_lista:containsNC('+$("#chat_buscador").val()+')').parent().parent().show();
            //$('.nombre_lista:containsNC('+$("#chat_buscador").val()+')').parent().show();
            $('.nombre_lista:containsNC('+$("#chat_buscador").val()+')').addClass("barra_lista_hover");



        }else{

            //$(".contacto_lista").removeAttr("style");
            //$(".contacto_lista").removeClass("buscar");
            $("#chat_capitales_items li").show();
            $("#chat_capitales_items li .oculto").parent().hide();
            $("#chat_capitales_items li .desconectado").parent().hide();
            $("#chat_redlacionados_items li").show();
            $("#chat_favoritos_items li").show();
            $("#chat_borrar_busqueda").css("display" , "none");
            $(".nombre_lista").removeClass("barra_lista_hover");
        }

    });


    $("#borrar_busqueda_bloqueados").live("click", function(){

        $("#buscador_bloqueados").attr("value", "");
        $(".nombre_bloqueados").show();
        $(this).hide();


    });

    //Esta es la funcion desplegara la lista de usuarios para la busqueda de usuarios conectados
    $('#buscador_bloqueados').live('keyup', function (ev) {

        if($("#buscador_bloqueados").val().length != 0){

            $(".nombre_bloqueados").hide();
            $("#borrar_busqueda_bloqueados").css("display", "block");
            $('.nombre_bloqueados:containsNC('+$("#buscador_bloqueados").val()+')').show();


        }else{

            $(".nombre_bloqueados").show();
            $("#borrar_busqueda_bloqueados").css("display" , "none");
        }

    });



    $('#disconnect').click(function () {
        Gab.connection.disconnect();
        Gab.connection = null;
    })

    /* $('#chat_dialog').dialog({
        autoOpen: false,
        draggable: false,
        modal: true,
        title: 'Start a Chat',
        buttons: {
            "Start": function () {
                var jid = $('#chat-jid').val();
                var jid_id = Gab.jid_to_id(jid);

                $('#chat-area').tabs('add', '#chat-' + jid_id, jid);
                $('#chat-' + jid_id).append(
                    "<div class='chat-messages'></div>" +
                    "<input type='text' class='chat-input'>");

                $('#chat-' + jid_id).data('jid', jid);

                $('#chat-area').tabs('select', '#chat-' + jid_id);
                $('#chat-' + jid_id + ' input').focus();


                $('#chat-jid').val('');

                $(this).dialog('close');
            }
        }
    });*/

    $('#new-chat').click(function () {
        $('#chat_dialog').dialog('open');
    });


});

$(document).bind('connect', function (ev, data) {



    var conn = new Strophe.Connection(
        'http://www.capitales.com:5280/xmpp-httpbind');
        //'http://bosh.metajack.im:5280/xmpp-httpbind');





    //conn.connect.attach(conn.jid, conn.sid, conn.rid, null);

    if(false){

        var jid = "andres@capitales.com/13762957001283271771573140";
        conn.attach(jid, "b36996932c0ed60586577ffbe7359ed1", "139868093", null);



        conn.sendIQ(
            $iq({
                to: Strophe.getDomainFromJid(jid),
                type: "get"
            })
            .c('query', {
                xmlns:
                'http://jabber.org/protocol/disco#info'

            }),
            function () {

                //alert (status.toString());

                //alert ("status: " + conn.status);

                $(document).trigger('connected');
                var jid_id_princ = Gab.jid_to_id(data.jid)
                $("#chat_indice_principal_nombre").data('jid_id_principal', jid_id_princ);
                $("#chat_contactos").data('conexion', "true");


            });

    }else {




        conn.connect(data.jid, data.password, function (status) {

            //alert (status);

            if (status === Strophe.Status.CONNECTED) {

                $(document).trigger('connected');
                var jid_id_princ = Gab.jid_to_id(data.jid)
                $("#chat_indice_principal_nombre").data('jid_id_principal', jid_id_princ);
                $("#chat_contactos").data('conexion', "true");


            //alert ("jid: " + conn.jid + " sid: " + conn.sid + " rid: " + conn.rid);


            } else if (status === Strophe.Status.DISCONNECTED) {
                $(document).trigger('disconnected');
                $("#chat_contactos").data('conexion', "false");
            //alert ("disconnect");

            } else if (status === Strophe.Status.AUTHFAIL){
                $(document).trigger('disconnected');
                $("#chat_contactos").data('conexion', "false");
                alert ('Error en la autenticacion');


            }else if (status === Strophe.Status.ATTACHED){

                alert ("attach");
                conn.attach(conn.jid, conn.sid, (conn.rid)+1, null);

            }

        }, 20);

    }


    Gab.connection = conn;

});

$(document).bind('connected', function () {

    var iq = $iq({
        type: 'get'
    }).c('query', {
        xmlns: 'jabber:iq:roster'
    });

    //alert (iq);

    Gab.connection.sendIQ(iq, Gab.on_roster);

    //Gab.connection.addHandler(Gab.on_roster_changed,
    //    "jabber:iq:roster", "iq", "set");

    Gab.connection.addHandler(Gab.on_message,
        null, "message", "chat");

    Gab.message = "";


});

$(document).bind('cambiar_estado', function (ev, data) {

    var presence;

    if(data.estado == "enlinea"){
        presence = $pres().c("show").t("");
        Gab.connection.send(presence);
    }else if(data.estado == "ausente"){
        presence = $pres().c("show").t("away");
        Gab.connection.send(presence);
    } else if(data.estado == "ocupado"){
        presence = $pres().c("show").t("dnd");
        Gab.connection.send(presence);
    } else if(data.estado == "invisible"){

        //alert ($("#chat_indice_principal_nombre").data('jid_id_principal'));

        presence = $pres({
            type: "unavailable"
        }).c("show").t("").up()
        .c("from").t($("#chat_indice_principal_nombre").data('jid_id_principal'));


        Gab.connection.send(presence);
    }

/*var iq = $iq({
        type: 'undefined' //hay que mandar un show: dnd para estar como ocupado
    }).c('query', {
        xmlns: 'jabber:iq:roster'
    });*/

//ejemplo para cambiar el estado a ausente
//var presence = $pres().c("show").t("away").up()
//.c("status").t("Off to Meryton");





});

$(document).bind('disconnected', function () {

    Gab.connection = null;
    Gab.pending_subscriber = null;

    //$('#panel_favoritos ul').empty();
    //Limpieza de grupos
    $('#panel_redlacionados ul').empty();
    $('#panel_capitales ul').empty();
    $('#panel_favoritos ul').empty();
//$('#chat-area ul').empty();
//$('#chat-area').empty();
//$('#chat-area div').remove();

//$('#login_dialog').dialog('open');
});

$(document).bind('contact_added', function (ev, data) {
    var iq = $iq({
        type: "set"
    }).c("query", {
        xmlns: "jabber:iq:roster"
    })
    .c("item", data);
    Gab.connection.sendIQ(iq);

    var subscribe = $pres({
        to: data.jid,
        "type": "subscribe"
    });
    Gab.connection.send(subscribe);
});

$(document).bind('user_register', function (ev, data) {
    var iq = $iq({
        type: "set"
    }).c("query", {
        xmlns: "jabber:iq:roster"
    })
    .c("item", data);
    //Gab.connection.sendIQ(iq);

    alert (iq);

    var subscribe = $pres({
        to: data.jid,
        "type": "subscribe"
    });

    alert (subscribe);
//Gab.connection.send(subscribe);
});


$(document).bind('actualizar_grupo', function (ev, data) {

    $.post("/chat/variables.php", {
        usr: data.user,
        grp: data.group
    },
    function(data){

        if(data == "false"){

            alert ("Error actualizando grupo");

        }

        contadorConectados();

    });

});

$(document).bind('autenticar_inicio', function (ev, data) {



    $.post("/chat/variables.php", {
        datos: data.tipo
    },
    function(data){



        if(data.user == "desconectado"){

            //var indice_chat = $("#chat_indice_principal_nombre").text();
            //var indice_chat = "Chat (Desconectado)";
            $("#chat_indicador_nombre").html("Chat (Desconectado)");
            //$("#chat_indice_principal_nombre:first").text("Chat (Desconectado)");

            $("#chat_contactos").data('conexion', "false");
            cambiarEstadoIndiceStatus("desconectado");


        }else if(data.user == "sin_usuario") {

            $("#barra_chat").hide(10000, function(){

                $("#barra_chat").remove();

            });


        }else if(data.user != "sin_usuario" && data.user != "error"){



            $(document).trigger('connect', {
                jid: data.user + "@capitales.com",
                password: data.password
            });
            var usuario = acortar_nombre(17, data.fullname);
            $("#chat_nombre_usuario").text(usuario);
            $("#chat_indicador_nombre").text(usuario);
            $("#chat_indice_principal").data('user', data.user);
            $("#chat_principal").data('pass', data.password);


        }else{
            alert ('Error en la conexion del chat');
        }
    }, "json");

});


//Dependiendo del tamanho retorna el nombre con ese numero de caracteres
function acortar_nombre(tamanho, nombre){

    if(nombre.length > tamanho){

        var nombre_corto = nombre.substr(0, tamanho);

        nombre_corto += '...';

        return nombre_corto;

    }else {

        return nombre;

    }
}

function generarArreglo(arreglo_css){

    var arreglo = [];
    for(var i = 0; i < arreglo_css.length; i++){

        arreglo.push(arreglo_css[i].innerHTML);

    }

    return arreglo;

}

function actualizarGrupo(usuario, grupo){

    $.post("/chat/variables.php", {
        usr: usuario,
        grp: grupo
    },
    function(data){

        if(data == "false"){

            alert ("Error actualizando grupo");

        }


    });

}

function cambiarEstadoIndiceStatus(estado){

    var clase_estado = $(".indice_principal_nombre").attr("class");
    clase_estado = clase_estado.split(" ")[1];
    $(".indice_principal_nombre").removeClass(clase_estado);
    $(".indice_principal_nombre").addClass(estado);

}



function cargarBloqueados(){


    $.post("/chat/variables.php", {
        bloqueados: "true"
    },
    function(data){

        if(data == "false"){

            alert ("Error en los usuarios bloqueados grupo");

        } else {

            //alert (data);
            $("#ventana_bloqueados").children().remove();
            //$("#ventana_bloqueados").append("<p>Seleccione cuales usuarios desea bloquear</p>");
            $("#ventana_bloqueados").append(data);

        }
    });

}

function bloquearUsuario(usuario){

    $.post("/chat/variables.php", {
        bloquear: usuario
    },
    function(data){

        if(data == "false"){

            alert ("Error bloqueando contacto " + usuario);

        }

    });

}

function desbloquearUsuario(usuario){

    $.post("/chat/variables.php", {
        desbloquear: usuario
    },
    function(data){

        if(data == "false"){

            alert ("Error desbloqueando contacto " + usuario);

        }

    });


}

function removerListas(){

    $('#panel_redlacionados ul li').remove();
    $('#panel_capitales ul li').remove();
    $('#panel_favoritos ul li').remove();


}

function conexionUsuario(tipo){

    $.post("/chat/variables.php", {
        conexion: tipo
    },
    function(data){

        if(data == "false"){

            alert ("Error desconectado usuario contacto " + usuario);

        }

    });

}

function contadorConectados(){


    //Suma la cantidad total de contactos del panel de redlacionados
    var redlacionados_conectados = $("#panel_redlacionados ul .barra_lista .contacto_lista.enlinea").length;
    var redlacionados_ocupados = $("#panel_redlacionados ul .barra_lista .contacto_lista.ocupado").length;
    var redlacionados_ausentes = $("#panel_redlacionados ul .barra_lista .contacto_lista.ausente").length;

    var redlacionados_total = redlacionados_conectados + redlacionados_ocupados + redlacionados_ausentes;
    $("#cantidad_redlacionados").html("("+redlacionados_total+")");


    //Suma la cantidad total de contactos del panel de capitales
    var capitales_conectados = $("#panel_capitales ul .barra_lista .contacto_lista.enlinea").length;
    var capitales_ocupados = $("#panel_capitales ul .barra_lista .contacto_lista.ocupado").length;
    var capitales_ausentes = $("#panel_capitales ul .barra_lista .contacto_lista.ausente").length;

    var capitales_total = capitales_conectados + capitales_ocupados + capitales_ausentes;
    $("#cantidad_capitales").html("("+capitales_total+")");


    //Suma la cantidad total de contactos del panel de favoritos
    var favoritos_conectados = $("#panel_favoritos ul .barra_lista .contacto_lista.enlinea").length;
    var favoritos_ocupados = $("#panel_favoritos ul .barra_lista .contacto_lista.ocupado").length;
    var favoritos_ausentes = $("#panel_favoritos ul .barra_lista .contacto_lista.ausente").length;

    var favoritos_total = favoritos_conectados + favoritos_ocupados + favoritos_ausentes;
    $("#cantidad_favoritos").html("("+favoritos_total+")");


    //Suma la cantidad total de contactos conectados, ocupados, ausentes
    var numero_conectados = $(".contacto_lista.enlinea").length;
    var numero_ocupados = $(".contacto_lista.ocupado").length;
    var numero_ausentes = $(".contacto_lista.ausente").length;

    var numero_total = numero_conectados + numero_ocupados + numero_ausentes;
    $("#chat_contactos_contador").html("("+numero_total+")");


}

function resizeFrame(){

    //alert ("resize");

    var h = $(window).height();
    var maxheight = h-150;
    var minheight = h-(h-150);

    $("#panel_contactos").css({
        //"min-height" : minheight,
        //"max-height" : maxheight,
        //"height": "auto"

        //"height" : "expression(this.scrollHeight >= "+maxheight+" ? '"+maxheight+"px' : this.scrollHeight <= "+minheight+" ? '"+minheight+"px' : 'auto')"

        //"height" : "expression(this.scrollHeight<"+ (minheight+1) +"?'"+minheight+"':'auto')" //min IE6
        "height" : "expression(this.scrollHeight>"+ (maxheight-1) +"?'" +maxheight+ "px':'auto')" //min IE6

    });

/*$("#panel_contactos").css({

        "height" : "expression(this.scrollHeight<"+ (minheight+1) +"?'" +minheight+ "':'auto')" //min IE6

    });*/



/*$("#panel_contactos").css({'height' : 'auto'});

    var windowHeight = $(window).height(); //Get the height of the browser viewport
    var panelsub = $("#panel_contactos").height(); //Get the height of sub-panel

    var panelAdjust = windowHeight - 200; //Viewport height - 100px (Sets max height of sub-panel)
    //var ulAdjust =  panelAdjust - 25; //Calculate ul size after adjusting sub-panel

    alert (panelsub + "  " + panelAdjust);

    if ( panelsub > panelAdjust ) {	 //If sub-panel is taller than max height...
        $("#panel_contactos").css({'height' : panelAdjust}); //Adjust sub-panel to max height
        //$(this).find("ul").css({ 'height' : panelAdjust}); ////Adjust subpanel ul to new size
    }
    else { //If sub-panel is smaller than max height...
        $("#panel_contactos").css({'height' : 'auto'}); //Set sub-panel ul to auto (default size)
    }*/



}



function autoAjustarTabs(){


    //var browserWidht = window.outerWidth || document.body.offsetWidth
    var browserWidht = $(document).width();
    var tamanhoPanel = $("#barra_chat").width()+10;

    if(browserWidht < tamanhoPanel){


        $(".scroll_chat").css("display", "block");


        if($("#chat_panel_conversaciones > div:first-child").is(":visible")){

            $("#chat_panel_conversaciones > div:first-child").hide();

        }else{

            $("#chat_panel_conversaciones > div").each(function() {
                //alert(index + ': ' + $(this).attr("id"));

                if($(this).is(":hidden") && $(this).next().is(":visible")){

                    $(this).next().hide();


                    return false;//hace lo mismo que el break

                }

            });

        }

    }else {



        $("#chat_panel_conversaciones > div").each(function() {
            //alert(index + ': ' + $(this).attr("id"));

            if($(this).is(":hidden") && $(this).next().is(":visible")){

                $(this).show();

                return false;//hace lo mismo que el break

            }else if($(this).is(":visible") && $(this).next().is(":hidden")){

                $(this).next().show();

                return false;

            }

        });

        var total_vistos = $("#chat_panel_conversaciones > div:visible").length;
        var total_conversaciones = $("#chat_panel_conversaciones > div").length;

        if(total_conversaciones > total_vistos){
            $(".scroll_chat").css("display", "block");
        }else {
            $(".scroll_chat").css("display", "none");
        }


    }

}

function ajustarTamanhoTabs(){

    //var browserWidht = window.outerWidth || document.body.offsetWidth
    var browserWidht = $(document).width();
    var tamanhoPanel = $("#barra_chat").width()+10;
    var total_conversaciones = $("#chat_panel_conversaciones > div").length;
    var total_vistos = $("#chat_panel_conversaciones > div:visible").length;



    if(browserWidht < tamanhoPanel){

        $(".scroll_chat").css("display", "block");



        $("#chat_panel_conversaciones > div:visible").each(function(){

            $(this).hide();
            tamanhoPanel = $("#barra_chat").width()+10;
            //alert (browserWidht + " " + tamanhoPanel);

            if(browserWidht > tamanhoPanel){
                return false;
            }

        });

    //tamanhoPanel = $("#barra_chat").width()+10;

    //

    }else {

        var numeroVentanas = Math.floor((browserWidht - 212)/ 202);
        var bandera = true;
        var ventana_actual = "";

        if(numeroVentanas >= total_conversaciones){

            //alert (numeroVentanas);

            $("#chat_panel_conversaciones > div").show();
            $(".scroll_chat").css("display", "none");



        }else {
            $(".scroll_chat").css("display", "block");
            var indice = "";

            while(bandera){

                //alert ("browser "+browserWidht+ " " + numeroVentanas);

                $("#chat_panel_conversaciones > div").each(function(index){

                    if($(this).is(":hidden") && $(this).next().is(":visible")){

                        $(this).show();
                        //ventana_actual = $(this).attr("id");
                        indice = ":first";
                        return false;

                    }else if($(this).is(":visible") && $(this).next().is(":hidden")){

                        $(this).next().show();
                        //ventana_actual = $(this).attr("id");
                        indice = ":last";
                        return false;

                    }
                });
                tamanhoPanel = $("#barra_chat").width();

                //alert("ancho: " + browserWidht + " panel " + tamanhoPanel + " bandera " + bandera )

                if(browserWidht < tamanhoPanel){
                    //alert (indice + " hide");
                    $("#chat_panel_conversaciones > div:visible"+indice).hide();
                    bandera = false;
                }




            }
        }

    }

}



function ubicarseEnConversacion(jid){



    var total_conversaciones = $("#chat_panel_conversaciones > div").length;
    var total_vistos = $("#chat_panel_conversaciones > div:visible").length;

    $("#chat_panel_conversaciones > div").each(function(index) {
        //alert(index + ': ' + $(this).attr("id"));

        if($(this).attr("id") == jid && total_vistos > total_conversaciones){

            $("#chat_panel_conversaciones > div").hide();
            alert ("aqui");
            var fin = index+5;
            if(fin <= total_conversaciones){

                $("#chat_panel_conversaciones > div").slice(index, fin).show();

            }else {

                $("#chat_panel_conversaciones > div").slice(total_conversaciones-5, total_conversaciones).show();

            }

        }

    });

}


function devolverHoraFormat(){

    var a_p = "";
    var d = new Date();

    var curr_hour = d.getHours();

    if (curr_hour < 12)
    {
        a_p = "am";
    }
    else
    {
        a_p = "pm";
    }

    if (curr_hour == 0)
    {
        curr_hour = 12;
    }
    if (curr_hour > 12)
    {
        curr_hour = curr_hour - 12;
    }

    var curr_min = d.getMinutes();
    var curr_seg = d.getSeconds();

    curr_hour = curr_hour + "";
    curr_min = curr_min + "";
    curr_seg = curr_seg + "";

    if(curr_hour.length == 1){
        curr_hour = "0"+ curr_hour;
    }
    if (curr_min.length == 1){
        curr_min = "0" + curr_min;
    }
    if(curr_seg.length == 1){
        curr_seg = "0" + curr_seg;
    }


    var hora_final = curr_hour + " : " + curr_min + " : "+ curr_seg + " " + a_p;

    return (hora_final);

}


function sacarUrl(){

    var url = window.location;
    return url;

}

function estaResource(patron, full_jid){

    //alert (patron+ ' ' + full_jid);

    var retorno = false;

    if(patron != null){


        var arregloFullJids = patron.split(",");

        for (i = 0; i < arregloFullJids.length; i++) {

            if(arregloFullJids[i] == full_jid){

                retorno = true;
                break;
            }


        }
    }

    return retorno;


}


function actualizarEstado(tipo){

    //alert (tipo);

    $.post("/chat/variables.php", {
        estado: tipo
    },
    function(data){

        if(data != "1"){

            $(document).trigger('cambiar_estado', {
                estado: data
            });
            $('#chat_ventana_status').hide();
            cambiarEstadoIndiceStatus(data);



        /*if(data == "ocupado"){

                $(document).trigger('cambiar_estado', {
                    estado: "ocupado"
                });
                $('#chat_ventana_status').hide();
                cambiarEstadoIndiceStatus("ocupado");

            }else if (data == "ausente"){

                $(document).trigger('cambiar_estado', {
                    estado: "ausente"
                });
                $('#chat_ventana_status').hide();
                cambiarEstadoIndiceStatus("ausente");

            }else {

                $(document).trigger('cambiar_estado', {
                    estado: "enlinea"
                });
                $('#chat_ventana_status').hide();
                cambiarEstadoIndiceStatus("enlinea");

            }*/
        }

    });
}

function conversacion(usuario_destino, tipo){

    //alert (usuario_destino + " ----- " + tipo);

    $.post("/chat/variables.php", {
        contacto: usuario_destino,
        conversacion: tipo
    },
    function(data){

        //alert (data);

        if(data != "1"){



        }else{



    }

    });
}


function abrirConversaciones(){


    $.post("/chat/variables.php", {
        conversaciones: true
    },
    function(data){


        $(data).find("conversacion").each(function(){

            var jid = $(this).find("contacto").text();
            var jid_id = Gab.jid_to_id(jid);
            var name = $("#"+jid_id).find('.nombre_lista').text() || jid;
            var contenido_mensanje = $(this).find("contenido");
            var status = $("#"+jid_id).find(".contacto_lista").attr("class").split(" ")[1];

            if(status == "oculto"){
                status = "desconectado";
            }


            if ($("#chat_indice_"+jid_id).length === 0) {


                $('.panel_chat').append(



                    "<div id='"+ jid +"' class='indice_chat' >" +
                    "<div id='chat_indice_" + jid_id + "' class='indice_usuario_chat "+status+"'>" +
                    "<div class='ind'>"+ acortar_nombre(26, name) +"</div>" +
                    "<input class='boton_indice_cerrar' type='button' title='Cerrar'>" +
                    "</div>"+
                    "<div id='chat_contenido_"+jid_id+"' class='barmenu_chat'>" +
                    "<div class='barmenu_header_chat'>" +

                    "<div class='barmenu_header_buttons_chat'>" +
                    "<a class='barmenu_header_close_chat'></a>" +
                    "<a class='barmenu_header_min_chat'></a>" +
                    "</div>" +

                    "<div class='barmenu_header_text_chat'>" + acortar_nombre(17, name) +"</div>" +

                    "</div>" +

                    "<div id='chat_conversacion_"+ jid_id +"' class='caja_contenido_chat'></div>" +
                    //"<textarea tabindex='0' class='entrada_chat' id='chat_entrada_"+ jid_id  +"'></textarea>" +
                    "<input type='text' class='entrada_chat'>" +
                    "<img class='compartir_noticia_chat' src='/chat/images/application.png'>" +
                    "<div class='conversation_options_window_chat' style='display: none;'>" +
                    "<div id='chat_boton_compartir_noticia' class='barmenu_header_buttons_window_chat' onmouseout=\"this.className='barmenu_header_buttons_window_chat'\" onmouseover=\"this.className='barmenu_header_buttons_window_chat_hover'\">" +
                    "<div class='barmenu_header_window_button_chat'>Compatir P&aacute;gina</div>" +

                    "</div>" +
                    "</div>" +
                    "</div>" +
                    "</div>");

            }

            autoAjustarTabs();


            var dato_ant = null;
            var dato_mensaje = "";



            $(contenido_mensanje).find(".mensaje_chat").each(function(){

                var nombre = $(this).find(".nombre_chat").text();
                var hora = $(this).find(".hora_chat").text();
                var texto = $(this).find(".texto_chat").text();

                //alert (nombre + " " + hora + " " + texto);

                if(texto != dato_ant){

                    var clase_nombre_chat = "";

                    if($(this).find(".nombre_chat").is(".yo")){

                        clase_nombre_chat = "nombre_chat yo";

                    }else{

                        clase_nombre_chat = "nombre_chat";

                    }

                    var datos = "<div class='mensaje_chat'>" +
                    "<span class='"+clase_nombre_chat+"'>"+nombre+" </span>" +
                    "<span class='hora_chat'>"+hora+"</span>" +
                    "<span class='texto_chat'>"+texto+"</span>" +
                    "</div>";

                    $("#chat_conversacion_"+jid_id).append(datos);
                }

                dato_ant = texto;

            });

            Gab.chat_scroll(jid_id);

        });

    }, "xml");



}

function alertaNuevoMensaje(usuario){


    //alert ($(document).focus().toString());
    //alert ($(document).blur().toString());
    /*if(window.focus()){
    
        alert ("tengo el focus");

    }*/

    //Aqui envia el sonido
    //alert ($("#chat_alerta").data('pagina'));
    if( $("#chat_alerta").data('pagina') == 'false'){

        

        $('#chat_alerta').children().remove();
        $('#chat_alerta').append(
            "<embed id='sonido_alerta' height='0' width='0'"  +
            "hidden='true' controls='Console' volume='100' autostart='true'" +
            "autoload='TRUE' src='/chat/sounds/pcmouseclick1.wav'>"
            );
    }

    
    if($('#chat_alerta').data('alerta') == null || $('#chat_alerta').data('alerta') == ''){

        $("#chat_alerta").data('alerta', 'true');
        $("#chat_alerta").data('titulo_nuevo', usuario);
        $("#chat_alerta").data('titulo_original', document.title);
        Gab.temporizador  = setInterval('parpadeo()',1000);

    }

}

function parpadeo(){

    

    if($("#chat_alerta").data('alerta') == "true"){

        document.title =  $("#chat_alerta").data('titulo_nuevo');
        $("#chat_alerta").data('alerta', 'false');
    }
    else if($("#chat_alerta").data('alerta') == "false"){

        document.title = $("#chat_alerta").data('titulo_original');
        $("#chat_alerta").data('alerta', 'true');
        
    }else{

        clearInterval(Gab.temporizador);
        document.title = $("#chat_alerta").data('titulo_original');
        
    }
}


