﻿/*
* Script Drag And Drop com Classificação Lalubema - Minhas Preferências.
* Autor: Jorge Luiz Calijurio
* Empresa: Agência Open de Internet
* Data: 15/08/2010
*/
var tempo;

$(document).ready(function() {
    InsereDrag();
    $('.txtBusca').focus(function() {
        if ($(this).val() == 'Buscar por') {
            $(this).val('');
        }
    });

    $('.txtBusca').blur(function() {
        if ($(this).val() == '') {
            $(this).val('Buscar por');
        }
    });

    $('.txtBusca').keyup(function(e) {
        RealizarBusca(this);
    });

    $('.ddlCategorias').change(function() {
        RealizarBusca(this.parentNode);
    });

    $('.bt_incluir_preferencias').click(function() {
        AbreDialogoPreferencias(this);
    });

    $('div.divEscolhasGenerico').dialog({
        modal: true,
        width: 440,
        height: 485,
        draggable: true,
        resizable: false,
        autoOpen: false
    });

    $('input.bt_incluir_selecionados').click(function() {
        IncluirSelecionados(this);
    });
});


function AbreDialogoPreferencias(objeto) {

    $('li.liOpcoesPreferencias').attr('marcado', 'false');
    var contOpt = 0;

    var classDiv = $(objeto).attr('alvo');
    var idGrupo = $(objeto).attr('grupo');
    var idsub;
    
    var idsSubGrupos = new Array();
    var lis = $('li.' + idGrupo);
    for (var i = 0; i < lis.length; i++) {
        if ($(lis[i]).attr('morto') != 'true') {
            idsSubGrupos.push($(lis[i]).attr('idsub'));
            contOpt++;
        }
    }

    $('.' + classDiv + ' ul.lista_todos_artistas').attr('qtd', contOpt);

    var ddlCategorias = $('.' + classDiv + ' .ddlCategorias');
    ddlCategorias[0].selectedIndex = 0;

    var txtBusca = $('.' + classDiv + ' input.txtBusca');
    $(txtBusca).val('');
    RealizarBusca(txtBusca[0]);

    var opts = $('.' + classDiv + ' ul.lista_todos_artistas li.liOpcoesPreferencias');
    var iguais = 0;
    for (var i = 0; i < opts.length; i++) {
        
        opts[i].getElementsByTagName('a')[0].style.display = 'none';
        idsub = $(opts[i]).attr('idsub');
        $(opts[i]).show();
        
        for (var j = 0; j < idsSubGrupos.length; j++) {
            if (idsub == idsSubGrupos[j]) {
                $(opts[i]).hide();
                iguais++;
            }
        }
    }

    if (opts.length == iguais) {
        $('.lblAvisoPreferencias').show();
        $('.bt_incluir_selecionados').hide();
    } else {
        $('.lblAvisoPreferencias').hide();
        $('.bt_incluir_selecionados').show();
    }

    $('.' + classDiv).dialog('open');
    idsSubGrupos = null;
    
}


function AjustaBotoes() {
    
    $('.lista_favoritos li').mouseover(function() {

        $(this).find('a.excluir_item').show();

    }).mouseout(function() {

        $(this).find('.excluir_item').hide();

    });

    $('li.liOpcoesPreferencias').click(function() {
        if ($(this).attr('marcado') == 'true') {
            $(this).attr('marcado', 'false');
            this.getElementsByTagName('a')[0].style.display = 'none';
        } else {
            var intSelec = $(this).parent('ul').find('li.liOpcoesPreferencias[marcado=true]').length;
            if ((parseInt($(this).parent('ul').attr('qtd'), 10) + intSelec) >= parseInt($(this).parent('ul').attr('lim'), 10)) {
                window.alert('Para este grupo o limite de escolhas é ' + $(this).parent('ul').attr('lim') + '.');
            }
            else {
                $(this).attr('marcado', 'true');
                this.getElementsByTagName('a')[0].style.display = 'block';
            }
        }
    });

}

function InsereDrag() {
    $('ul.ulRecebe li').mousedown(function(e) {
        AtivaDrag(this, e);
    });

    $('ul.ulRecebe li a.excluir_item').mousedown(function() {
        var objeto = this.parentNode.parentNode;
        $(this.parentNode).hide('slow').attr('morto', 'true');
        AjustaPosicoes(objeto);
        return false;
    });
    
    $('ul.ulEnvia li').mousedown(function(e) {
        AtivaDrag(this, e);
    });

    AjustaBotoes();
}


function AtivaDrag(objeto, evento) {

    var ativaFicar = false; // Permite o objeto ficar no destino.
    var ativaCatar = true;
    var posAtual = 0;

    var ulsRecebe = $('ul.ulRecebe');
    var ulsEnvia = $('ul.ulEnvia');

    // Desativando a seleção de texto.
    if (document.all) {
        document.body.onselectstart = function() {
            return false;
        } // Fim IE.
    } else {
        if (typeof evento.preventDefault != 'undefined') {
            evento.preventDefault();
        } // Fim Firefox.
    }

    // Fim Desativando a seleção de texto.

    var ativaScroll = true;

    document.onmouseup = function(e) {
        if (ativaCatar) {
            ativaFicar = true;
            $(objeto).hide();
            objeto.style.position = 'static';
            ativaScroll = false;
            objeto.style.zIndex = '10';
            $(objeto).show('normal');
        }
    }

    var tempo;
    document.onmousemove = function(e) {
        if (ativaScroll) {
            e = (window.event) ? event : e;
            objeto.style.cursor = 'move';
            objeto.style.position = 'fixed';
            objeto.style.zIndex = 9999;
            objeto.style.left = (e.clientX - 80) + "px";
            objeto.style.top = (e.clientY - 43) + "px";
        }
    }

    if (objeto.getAttribute('tipo') == 'envia') {
        for (var i = 0; i < ulsRecebe.length; i++) {
            ulsRecebe[i].parentNode.onmouseover = function() {
                var ThisUL = this.getElementsByTagName('ul')[0];
                if (objeto != null) {
                    if (objeto.getAttribute('grupo') == ThisUL.getAttribute('grupo') && ativaFicar == true) {
                        try {
                            objeto.parentNode.removeChild(objeto);
                            objeto.style.position = 'static';
                            ativaScroll = false;
                            ativaCatar = false;
                            objeto.setAttribute('tipo', 'recebe');

                            ThisUL.appendChild(objeto);

                            ativaFicar = false;
                        } catch (ex) {
                            ativaFicar = false;
                        }

                        AjustaPosicoes(objeto);

                        objeto = null;
                    }
                }
            }

            ulsRecebe[i].onmouseover = function() {
                if (objeto != null) {
                    if (objeto.getAttribute('grupo') == this.getAttribute('grupo') && ativaFicar == true) {
                        try {
                            objeto.parentNode.removeChild(objeto);
                            objeto.style.position = 'static';
                            ativaScroll = false;
                            ativaCatar = false;
                            objeto.setAttribute('tipo', 'recebe');

                            this.appendChild(objeto);

                            ativaFicar = false;
                        } catch (ex) {
                            ativaFicar = false;
                        }

                        AjustaPosicoes(objeto);

                        objeto = null;
                    }
                }
            }
        }

        if (document.all) {
            objeto.onmousedown = function() {
                return false;
            }
        }
    } else {
        var lisRec = $('ul.ulRecebe li.' + objeto.getAttribute('grupo'));
        for (var j = 0; j < lisRec.length; j++) {
            lisRec[j].onmouseover = function() {
                if (objeto.getAttribute('grupo') == this.getAttribute('grupo') && ativaFicar == true) {
                    try {
                        objeto.style.position = 'static';
                        ativaScroll = false;
                        ativaCatar = false;
                        this.parentNode.insertBefore(objeto, this);

                        ativaFicar = false;

                        AjustaPosicoes(objeto);
                    } catch (ex) {
                        ativaFicar = false;
                    }
                }
            }
        }

        for (var k = 0; k < ulsEnvia.length; k++) {
            ulsEnvia[k].parentNode.parentNode.parentNode.onmouseover = function() {
                var ThisUL = this.getElementsByTagName('ul')[0];
                if (objeto.getAttribute('grupo') == ThisUL.getAttribute('grupo') && ativaFicar == true) {
                    try {
                        objeto.parentNode.removeChild(objeto);
                        objeto.style.position = 'static';
                        ativaScroll = false;
                        ativaCatar = false;
                        objeto.setAttribute('tipo', 'envia');
                        objeto.getElementsByTagName('span')[1].innerHTML = ThisUL.getAttribute('nomegrupo');
                        ThisUL.appendChild(objeto);

                        ativaFicar = false;
                    } catch (ex) {
                        ativaFicar = false;
                    }

                    AjustaPosicoes(objeto);
                }
            }
        }
        if (document.all) {
            objeto.onmousedown = function() {
                return false;
            }
        }
    }

}

function AjustaPosicoes(objeto) {
    var lisRec = $('ul.ulRecebe li.' + objeto.getAttribute('grupo'));
    var dadosEnviar = 'funcao=AjaxRegistrarPosicoes&grupo=' + objeto.getAttribute('grupo');
    var k = 0;

    for (var j = 0; j < lisRec.length; j++) {
        if ($(lisRec[j]).attr('morto') != 'true') {
            var spans = lisRec[j].getElementsByTagName('span');
            spans[1].innerHTML = (k + 1) + "º Lugar";
            switch (k) {
                case 0:
                    $(spans[0]).show().attr('class', 'medalha_ouro');
                    break;

                case 1:
                    $(spans[0]).show().attr('class', 'medalha_prata');
                    break;

                case 2:
                    $(spans[0]).show().attr('class', 'medalha_bronze');
                    break;

                default:
                    $(spans[0]).hide();
                    break;
            }
            k++;
            dadosEnviar += "&idsub=" + lisRec[j].getAttribute('idsub');
        }
    }

    AjaxStartPref(Pronto, dadosEnviar);

    function Pronto(Obj) {
        switch (Obj.responseText) {
            case 'nok':
                window.alert('Falha ocorrida ao tentar registrar dados.');
                break;

            case 'off':
                window.alert('Efetue logon para registrar esta operação.');
                break;
        }
    }
}

function AjaxStartPref(funcaoDisparar, dadosEnviar) {

    var rnd = Math.random() * 1000000;

    if (window.XMLHttpRequest) { // Mozilla, Safari, IE7...
        var request = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE6 and older
        var request = new ActiveXObject("Microsoft.XMLHTTP");
    }

    var url = 'ajaxPreferencias.aspx?R=' + rnd;
    request.open("POST", url, true);
    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    request.setRequestHeader("Content-length", dadosEnviar.length);
    request.setRequestHeader("Connection", "close");
    request.send(dadosEnviar);
    request.onreadystatechange = function() {
        if (request.readyState == 4) {
            if (request.status == 200) {
                funcaoDisparar(request);
            }
        }
    }
}

function RealizarBusca(objeto) {
    try {
        clearTimeout(tempo);
    } catch (ex) { 
    }
    finally {
        var txtBusca = objeto.parentNode.parentNode.getElementsByTagName('input')[0];
        var ddlCategoria = objeto.parentNode.parentNode.getElementsByTagName('select')[0];

        var dadosEnviar = "funcao=AjaxBusca&texto=" + txtBusca.value + "&cat=" + ddlCategoria.value + "&grupo=" + txtBusca.getAttribute('grupo');

        tempo = window.setTimeout(function() {
            AjaxStartPref(ProntoBusca, dadosEnviar);
        }, 500);
    }

    function ProntoBusca(Obj) {
        var ulBusca = objeto.parentNode.parentNode.parentNode.getElementsByTagName('ul')[0];
        try {
            var lis = ulBusca.getElementsByTagName('li');
            for (var i = lis.length - 1; i >= 0; i--) {
                ulBusca.removeChild(lis[i]);
            }

            if (Obj.responseText != '0') {
                var xml = Obj.responseXML;
                var xmlCorpo = xml.getElementsByTagName('corpo')[0];
                var subgrupos = xmlCorpo.getElementsByTagName('subgrupo');

                for (var j = 0; j < subgrupos.length; j++) {

                    var liSaida = '<li style="cursor:pointer;" class="liOpcoesPreferencias" img="' + $(subgrupos[j]).attr('img') + '" nomeSub="' + subgrupos[j].firstChild.nodeValue + '" idsub="' + $(subgrupos[j]).attr('idsub') + '" >';
                    liSaida += '<span class="nome_artista" runat="server" id="spanNomeArtista" >' + subgrupos[j].firstChild.nodeValue + '</span>';
                    liSaida += '<a href="#" class="ico_check" style="display:none;" onclick="return false;" ></a>';
                    liSaida += '</li>';

                    ulBusca.innerHTML += liSaida;
                }

                if (subgrupos.length > 0) {
                    $('.lblAvisoPreferencias').hide();
                } else {
                    $('.lblAvisoPreferencias').show();
                }

                InsereDrag();
            }
        } catch (ex) { }
    }
}


function IncluirSelecionados(objeto) {
    
    var ulEnvia = objeto.parentNode.getElementsByTagName('ul')[0];
    var lis = ulEnvia.getElementsByTagName('li');
    var novali = '', objetoUL, idGrupo = $(objeto).attr('grupo');

    var ulsRecebe = $('.ulRecebe');
    for (var j = 0; j < ulsRecebe.length; j++) {
        if ($(ulsRecebe[j]).attr('grupo') == $(objeto).attr('grupo')) {
            objetoUL = ulsRecebe[j];
        }
    }

    var li, aExcluir;

    for (var i = 0; i < lis.length; i++) {
        if ($(lis[i]).attr('marcado') == 'true') {
            li = document.createElement('li');
            $(li).attr('id', 'liRecebe').css('cursor', 'move').attr('idsub', $(lis[i]).attr('idsub')).attr('class', idGrupo).attr('grupo', idGrupo);

            li.innerHTML += '<span class="medalha_ouro" id="spanMedalha" ></span>';
            li.innerHTML += '<img ID="imgFoto" width="129" height="59" src="' + $(lis[i]).attr('img') + '" />';
            li.innerHTML += '<span class="posicao" ></span>';
            li.innerHTML += '<span class="nome_artista" >' + $(lis[i]).attr('nomeSub') + '</span>';

            aExcluir = document.createElement('a');
            $(aExcluir).attr('class', 'excluir_item').css('cursor', 'pointer');

            li.appendChild(aExcluir);

            objetoUL.appendChild(li);
        }
    }
    
    InsereDrag();
    AjustaPosicoes(objetoUL);
    $('div.divEscolhasGenerico').dialog('close');
}
