// Instanciando a classe jQuery sem conflitar com Prototype
var $j     = jQuery.noConflict();
var qsParm = new Array();

/**
 * Recupera os parâmetros passados via URL (GET)
 */
function qs()
{
    var query = window.location.search.substring(1);
    var parms = query.split('&');

    for (var i=0; i<parms.length; i++)
    {
        var pos = parms[i].indexOf('=');

        if (pos > 0)
        {
            var key = parms[i].substring(0,pos);
            var val = parms[i].substring(pos+1);
            
            qsParm[key] = val;
        }
    }
}

$j(document).ready(function(){
	$j('#s').bind('focus',function(){
		$j('#s').css({
			border: '2px solid #febb38'
		});
	});
	
	$j('#s').bind('blur',function(){
		$j('#s').css({
			border: '2px solid #BBAFA6'
		});
	});
});

// mostra um video de um programa (intId)
function mostrarVideo(intId)
{
    new Ajax.Updater(
        'exibeVideo',
        '/loadlib/programas/mostraVideo.php?id_video=' + intId,
        {
            loading: $('exibeVideo').update('<div class="loading"></div>'),
            asynchronous:true,
            evalScripts:true,
            method: 'get'
        }
    );
}

// mostra uma exibicao de um programa
function mostrarExibicao()
{
    entradaLocal = $('dados_exibicoes');
    saidaLocal   = $('exibeHorario');

    new Ajax.Updater(saidaLocal,
        '/loadlib/programas/mostraExibicao.php?id_horario=' + $F('dado_exibicao'), {
            loading: saidaLocal.update('<div class="loading"><b>Carregando, aguarde...</b></div>'),
            method: 'post',
            asynchronous:true,
            evalScripts:true,
            parameters:Form.serialize(entradaLocal),
            requestHeaders:['X-Update', 'contentAjax']
        }
    );

    return false;
}

/**
 * Remove um comentário
 *
 */
function comentarioApagar (comentarioId)
{
    new Ajax.Request(
        '/loadlib/comentarios/apagar.php?intIdComentario=' + comentarioId,
        {
            method: 'get',
            loading: $('comentario_' + comentarioId + '_status').style.display='block',
            onComplete: function(t)
            {
                if (t.responseText == '0')
                {
                    $('comentario_' + comentarioId).hide();
                }
                else
                {
                    alert('Erro removendo comentário.');
                }
            }
        }
        );
}

//Lista os resultados da busca
 function listaBusca(loadDiv, page, tipo, strBusca)
 {
     new Ajax.Updater(
     	loadDiv,
         '/loadlib/busca/listarBusca.php?s=' + strBusca + '&tipo=' + tipo + '&page=' + page,
         {
             loading: $(loadDiv).update('<div class="loading"></div>'),
             asynchronous:true,
             evalScripts:true,
             method: 'get'
         }
     );
 }
 
// Lista os comentários da index
function listaComentariosIndex(loadDiv, page, tipo, usuario)
{
    new Ajax.Updater(
    	loadDiv,
        '/loadlib/comentarios/listarIndex.php?tipo=' + tipo + '&usuario=' + usuario + '&page=' + page,
        {
            loading: $(loadDiv).update('<div class="loading"></div>'),
            asynchronous:true,
            evalScripts:true,
            method: 'get'
        }
    );
}

// Lista os ultimos comentários da index
function listaUltimosComentariosIndex(datLog)
{

	new Insertion.After(
			'new_comments',
			'<div id=\"newTop10\"></div>'
	);

	$('new_comments').update('');
			
    new Ajax.Updater(
        'newTop10',
        '/loadlib/comentarios/listarIndexUltimos.php?datLog=' + datLog,
        {
        	loading: $('newTop10').update('<b>Carregando, aguarde...</b>'),        	
            asynchronous:true,
            evalScripts:true,
            method: 'get'
        }
    );
}
	
// Lista os comentários do perfil
function listaComentariosPerfil(loadDiv, page, tipo, usuario)
{
    new Ajax.Updater(
    	loadDiv,
        '/loadlib/comentarios/listarPerfil.php?tipo=' + tipo + '&usuario=' + usuario + '&page=' + page,
        {
            loading: $(loadDiv).update('<div class="loading"></div>'),
            asynchronous:true,
            evalScripts:true,
            method: 'get'
        }
    );
}

// Lista os comentários do programa
function listaComentariosPrograma(intIdPrograma, loadDiv, page, exibicao, tipo, usuario)
{
	
    new Ajax.Updater(
    	loadDiv,
        '/loadlib/comentarios/listarPrograma.php?id_programa=' + intIdPrograma + '&id=' + exibicao + '&tipo=' + tipo + '&usuario=' + usuario + '&page=' + page,
        {
            loading: $(loadDiv).update('<div class="loading"></div>'),
            asynchronous:true,
            evalScripts:true,
            method: 'get'
        }
    );
}

//Lista os ultimos comentários do programa
function listaUltimosComentariosPrograma(intIdPrograma, datLog)
{

	new Insertion.After(
			'new_comments',
			'<div id=\"newTop10\"></div>'
	);

	$('new_comments').update('');
			
    new Ajax.Updater(
        'newTop10',
        '/loadlib/comentarios/listarProgramaUltimos.php?id=' + intIdPrograma + '&datLog=' + datLog,
        {
        	loading: $('newTop10').update('<b>Carregando, aguarde...</b>'),        	
            asynchronous:true,
            evalScripts:true,
            method: 'get'
        }
    );
}

// Lista os comentários do canal
function listaComentariosCanal(loadDiv, page, tipo, id_canal)
{
    new Ajax.Updater(
    	loadDiv,
        '/loadlib/comentarios/listarCanal.php?tipo=' + tipo + '&id_canal=' + id_canal + '&page=' + page,
        {
            loading: $(loadDiv).update('<div class="loading"></div>'),
            asynchronous:true,
            evalScripts:true,
            method: 'get'
        }
    );
}

//Lista os ultimos comentários do canal
function listaUltimosComentariosCanal(strUsuario, intTipo, datLog)
{

	new Insertion.After(
			'new_comments',
			'<div id=\"newTop10\"></div>'
	);

	$('new_comments').update('');
			
    new Ajax.Updater(
        'newTop10',
        '/loadlib/comentarios/listarCanalUltimos.php?usuario=' + strUsuario + '&tipo=' + intTipo + '&datLog=' + datLog,
        {
        	loading: $('newTop10').update('<b>Carregando, aguarde...</b>'),        	
            asynchronous:true,
            evalScripts:true,
            method: 'get'
        }
    );
}

// Lista os comentários da operadora
function listaComentariosOperadora(loadDiv, page, tipo, usuarioOperadora)
{
    new Ajax.Updater(
    	loadDiv,
        '/loadlib/comentarios/listarOperadora.php?tipo=' + tipo + '&usuarioOperadora=' + usuarioOperadora + '&page=' + page,
        {
            loading: $(loadDiv).update('<div class="loading"></div>'),
            asynchronous:true,
            evalScripts:true,
            method: 'get'
        }
    );
}

//Lista os ultimos comentários da operadora
function listaUltimosComentariosOperadora(strUsuario, intTipo, datLog)
{

	new Insertion.After(
			'new_comments',
			'<div id=\"newTop10\"></div>'
	);

	$('new_comments').update('');
			
    new Ajax.Updater(
        'newTop10',
        '/loadlib/comentarios/listarOperadoraUltimos.php?usuarioOperadora=' + strUsuario + '&tipo=' + intTipo + '&datLog=' + datLog,
        {
        	loading: $('newTop10').update('<b>Carregando, aguarde...</b>'),        	
            asynchronous:true,
            evalScripts:true,
            method: 'get'
        }
    );
}

// Salvar um cookie ou uma Sessao
function salvarCookie()
{

    entradaLocal = $('dhtml_popup');
	
	entradaLocal.hide();

    new Ajax.Updater('',
	        '/ajax-cookie.php', {
	        asynchronous:true,
	        evalScripts:true,
	        method: 'get'
        }
    );
	
    return false;
}

// Envia o formulário de comentário
function adicionarComentario(strTipoComentario)
{

    entradaLocal = $('comentario');
    saidaLocal   = $('comentario_0');
	loader = '<img src="/imagens/working_big.gif" style="margin: -10px 0 0 80px;">';
	
	entradaLocal.hide();

    new Ajax.Updater(saidaLocal,
        '/loadlib/comentarios/adicionar.php?tipo=' + strTipoComentario, {
            loading: saidaLocal.innerHTML = loader,
            method: 'post',
            asynchronous:true,
            evalScripts:true,
            parameters:Form.serialize(entradaLocal),
            requestHeaders:['X-Update', 'contentAjax']
        }
    );
	
    return false;
}

// mostra um novo comentario inserido (top)
function mostraNovoComentario(idComentario, tipo)
{
	
    new Ajax.Updater('comentario_' + idComentario,
            '/loadlib/comentarios/comentario.php?idComentario=' + idComentario + '&tipoComentario=' + tipo, {
            asynchronous:true,
            evalScripts:true,
            method: 'get'
            }
        );
	
		$('comentario').show();

        return false;

}


// busca novos comentarios depois de certa data
function buscaComentarios(dataHora, tipo)
{
    entradaLocal = $('comentario');
    
    new Ajax.Updater('new_comments',
            '/loadlib/comentarios/novos_comentarios.php?dataHora=' + dataHora + '&tipo=' + tipo, {
	        method: 'post',
	        asynchronous:true,
	        evalScripts:true,
	        parameters:Form.serialize(entradaLocal),
	        requestHeaders:['X-Update', 'contentAjax']
            }
        );

        return false;

}

/* Must pass in the "anchors" ID so that Lytebox can call the correct "onclick" handler... */
var timeoutID = null;

function loadLytebox(id)
{
    if (typeof myLytebox != 'undefined') {
        // if the myLytebox object exists, start it up!
        var a       = document.createElement("a");
            a.href  = "/loadlib/bip/busca_bip.php";
            a.rel   = "lyteframe";
            a.title = "WidgetPreview";
            a.rev   = "width: 435px; height: 200px; scrolling: no; showClose:no;";
        myLytebox.start( a, false, true);
    } else {
        // wait 1/10th of a second and attempt loading again...
        if (timeoutID) { clearTimeout(timeoutID); }
        timeoutID = setTimeout('loadLytebox()', 100);
    }
}

function loadAlertaBip()
{

    $('alerta_bip').style.display		= 'block';
    $('alerta_bip').style.visibility	= 'visible';

}

function closeAlertaBip()
{

    $('alerta_bip').style.display		= 'none';
    $('alerta_bip').style.visibility	= 'hidden';

}

// Busca os Bips do usuário
function buscaBips ()
{
    var url = '/loadlib/bip/busca_bip.php';

    new Ajax.Request(
        url,
        {
            method: 'get',
            onComplete: function(t)
            {                
        		//alert(t.responseText.match("programa"));
        		
                if ( t.responseText.match("programa") != null )
                {
                	//alert('modal');
                    //loadLytebox();
                    loadAlertaBip();
                } else {
                	//alert('outra condicao');
                }
            }
        }
    );

    return false;
}

//MENSAGENS DO SISTEMA
function Sucesso(txt)
{
						
    var mensagem = txt;
	
    $j("#mensagemsys").fadeTo(200,0.1,function()
    {
        $j(this).html(mensagem).addClass('aviso verde').fadeTo(900,1);
    });

}

function Falha(txt)
{
						
    var mensagem = txt;
	
    $j("#mensagemsys").fadeTo(200,0.1,function()
    {
        $j(this).html(mensagem).addClass('aviso vermelho').fadeTo(900,1);
    });

}

function Aviso(txt)
{
						
    var mensagem = txt;
	
    $j("#mensagemsys").fadeTo(200,0.1,function()
    {
        $j(this).html(mensagem).addClass('aviso amarelo').fadeTo(900,1);
    });

}

// TITULOS DAS PROGRAMA�OES
//$j("#item1").click(function () {
//    $j("#item1").addClass("item1 active");
//    $j("#item3").removeClass();
//    $j("#item3").addClass("item3");
//});
//$j("#item3").click(function () {
//    $j("#item3").addClass("item3 active");
//    $j("#item1").removeClass();
//    $j("#item1").addClass("item1");
//});
		
// GENEROS DE CANAIS PERSONALIZE
$j("#gen1").click(function () { 
    $j("#gen1").addClass("gen_active");
});
$j("#gen2").click(function () { 
    $j("#gen2").addClass("gen_active");
});
$j("#gen3").click(function () { 
    $j("#gen3").addClass("gen_active");
});
$j("#gen4").click(function () { 
    $j("#gen4").addClass("gen_active");
});
$j("#gen5").click(function () { 
    $j("#gen5").addClass("gen_active");
});
$j("#gen6").click(function () { 
    $j("#gen6").addClass("gen_active");
});
$j("#gen7").click(function () { 
    $j("#gen7").addClass("gen_active");
});


/**
 * Testa o evento KeyCode de acordo com o tipo de browser e evento do campo
 */
function testaKeyCode(evnt)
{
    if (window.event)
        return window.event.keyCode;
    else if (evnt)
        return evnt.which;
}

/**
 * Testa se a tecla pressionada é uma tecla especial
 */
function specialKeys(keyCode)
{
    var keyCode = parseInt(keyCode);

    // 8->Backspace | 9->Tab | 13->Enter | 13->Shift | 15-19 -> Setas do teclado | 27->Esc | 127->Delete
    if(keyCode == 0 || keyCode == 8 || keyCode == 9 || keyCode == 13 || keyCode == 15 || keyCode == 16 || keyCode == 17 || keyCode == 18 || keyCode == 19 || keyCode == 127)
        return true;
}

/**
 * Função para restringir a digitação de caracteres númericos no campo do código
 */
function apenasNumeros(evnt)
{
    keyCode = testaKeyCode(evnt);

    // Testa se é uma tecla de controle
    if(specialKeys(keyCode))
        return true;

    // Testa se é um número
    if( keyCode < 48 || keyCode > 57 )
        return false;
    else
        return true;
}

/**
 * Preenche um campo com o texto especificado
 *
 */
function preencheInputText(idInput,txt)
{

    // texto padrao
    texto = 'O que você quer falar sobre este programa de TV?';
    if( document.getElementById('eBann').value == texto ) {
    	document.getElementById('eBann').value = '';
    }
        
	if(document.getElementById(idInput).value.indexOf(txt) == -1){
		comment = txt + " " + document.getElementById(idInput).value;
    	document.getElementById(idInput).value = comment;
    	document.getElementById(idInput).focus();
	}
}

/**
 * Preenche o campo hidden strOrigem com a origem
 *
 */
function preencheStrOrigem(idInput,txt,idHidden,strValue)
{
	
    // texto padrao
    texto = 'O que você quer falar sobre este programa de TV?';
    if( document.getElementById('eBann').value == texto ) {
    	document.getElementById('eBann').value = '';
    }
    
	if(document.getElementById(idInput).value.indexOf(txt) == -1){
		//comment = txt + " " + document.getElementById(idInput).value;
    	document.getElementById(idHidden).value = strValue;
		preencheInputText(idInput, '');	
		preencheInputText(idInput,txt);
	}
}

/**
 * Adiciona um usuário como 'amigo' - seguir suas atualizações
 *
 */
function usuarioSeguir(strUsuarioLogin)
{
    var url = '/loadlib/amigos/seguir.php?strUsuario=' + strUsuarioLogin;
	
    new Ajax.Request(
        url,
        {
            method: 'get',
            onComplete: function(t)
            {
				
                switch(t.responseText)
                {
                    case '0':
                        $('retornoSeguir').update('<button name="bot_excluir" style="display: block; float:left; background: transparent url(http://bipme.tv/img/botao/excluir.png) no-repeat; height: 20px; width: 66px; text-indent: -9000px; border: 0;" onclick="return usuarioExcluir(\'' + strUsuarioLogin + '\')">EXCLUIR</button>');
                        break;
                    case '1':
                        alert('Erro ao adicionar amigo.');
                        break;
                }
            }
        }
        );

    return false;
}

/**
 * Remove um usuário da lista de amigos - não segue mais as atualizações
 * 
 */
function usuarioExcluir(strUsuarioLogin)
{
    var url = '/loadlib/amigos/excluir.php?strUsuario=' + strUsuarioLogin;

    new Ajax.Request(
        url,
        {
            method: 'get',
            onComplete: function(t)
            {

                switch(t.responseText)
                {
                    case '0':
                        $('retornoSeguir').update('<button name="bot_seguir" class="btentrar" style="display: block; float:left; background: transparent url(http://bipme.tv/img/botao/seguir.jpg) no-repeat; height: 20px; width: 66px; text-indent: -9000px; border: 0; padding: 2px;" onclick="return usuarioSeguir(\'' + strUsuarioLogin + '\')">SEGUIR</button>');
                        break;
                    case '1':
                        alert('Erro ao excluir amigo.');
                        break;
                }
            }
        }
        );

    return false;
}

/**
 * Grade de Canais/Programas
 *
*/

// variáveis globais
var scrollTop = 0;

// Loading da Grade
function mostraGradeLoading()
{
    $('divGradeProgramacaoLoading').style.top        = ($('divGradeProgramacao').offsetTop + 20) + 'px';
    $('divGradeProgramacaoLoading').style.display    = 'block';
    $('divGradeProgramacaoLoading').style.visibility = 'visible';

    new Effect.Corner($('divGradeProgramacaoLoading'), "10px");
}

/**
 * Carrega a Grade de Programação
 *
 */
function mostraGrade(parms)
{
    if ( parms == 'undefined' || parms == '' )
    {
        parms = '';
    }

    // Verificando se está na página de canal
    if ( $('strUsuario') )
    {
        parms += '&usuario=' + $F('strUsuario');
    }

    // Verificando se está na página da operadora
    if ( $('strUsuarioOperadora') )
    {
        parms += '&usuarioOperadora=' + $F('strUsuarioOperadora');
    }

    if ( qsParm['page'] != undefined )
    {
        parms += '&page=' + qsParm['page'];
    }

    new Ajax.Updater('divGradeProgramacao', '/includes/programacao.inc.php?n=1&' + parms, {
        asynchronous:true,
        evalScripts:true,
        loading: mostraGradeLoading(),
        method: 'get'
    });

    return false;
}

/**
 * Carrega a grade de canais via select da combo de data
 */
function mostraGradeViaCombo()
{
    mostraGrade('&data_grade=' + $F('data_grade') + '_' + $F('hora_grade'));
}

/**
 * Mostra a tela de personalização da Grade
 */
function mostraPersonalizacaoGrade()
{
    new Ajax.Updater('box1', '/includes/personalizar.php', {
        asynchronous:true,
        evalScripts:true,
        loading: mostraGradeLoading(),
        method: 'get'
    });

    return false;
}

/**
 * Abre um vídeo para visualização
 *
 */
function showVideo(strEmbed, intLargura, intAltura)
{
    if (intLargura == undefined)
    {
        intLargura = 425;
    }

    if (intAltura == undefined)
    {
        intAltura = 380;
    }

    $('videoDiv').style.width  = intLargura + 'px';
    $('videoDiv').style.height = intAltura + 'px';
    $('videoDiv').style.top    = ($('desc_videos').offsetTop + 20) + 'px';
    $('videoDiv').style.left   = $('desc_videos').offsetLeft + 'px';

    $('videoContent').update(strEmbed);

    $('videoDiv').show();

    return false;
}

/**
 * Funcoes para abrir janela - cool.com.br
 */
function coolWindow(address)
{    
    window.open( address );
}
function coolPopup(address, width, height, scrollbars)
{
    var windowName = 'coolPopup';
    var width      = parseInt(width);
    var height     = parseInt(height);
    var menuBar    = 'no';
    var location   = 'no';
    var resizeable = 'no';
    var status     = 'no';
    
    if ( scrollbars != null )
    {
  	  var scrollbars = 'yes';
    }
    else
    {
  	  var scrollbars = 'no';
    }
    
    var top  = (screen.availHeight/2)-(height/2);
    var left = (screen.availWidth/2)-(width/2);
    
    window.open( address, windowName, 'menubar=' + menuBar + ',location=' + location + ',resizable=' + resizeable + ',scrollbars=' + scrollbars + ',status=' + status + ',width=' + width + ',height=' + height + ',top=' + top + ',left=' + left);    
}

/**
 * Testa a força de uma senha e altera a imagem de acordo
 */
function testPasswordStatus(passwd, idImg)
{
	var intScore   = 0
	var strVerdict = "1"
	if (passwd.length<5) intScore = (intScore+3)
	else if (passwd.length>4 && passwd.length<8) intScore = (intScore+6)
	else if (passwd.length>7 && passwd.length<16) intScore = (intScore+12)
	else if (passwd.length>15) intScore = (intScore+18)
	if (passwd.match(/[a-z]/)) intScore = (intScore+1)
	if (passwd.match(/[A-Z]/)) intScore = (intScore+5)
	if (passwd.match(/\d+/)) intScore = (intScore+5)
	if (passwd.match(/(.*[0-9].*[0-9].*[0-9])/)) intScore = (intScore+5)
	if (passwd.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) intScore = (intScore+5)
	if (passwd.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) intScore = (intScore+5)
	if (passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) intScore = (intScore+2)
	if (passwd.match(/(\d.*\D)|(\D.*\d)/)) intScore = (intScore+2)
	if (passwd.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/)) intScore = (intScore+2)
	if (intScore < 25) strVerdict = "2"
	else if (intScore > 24 && intScore < 30) strVerdict = "3"
	else strVerdict = "4"
	if (!passwd) strVerdict = "1";

	document.getElementById(idImg).src = '/img/cadastro/ico_pwd_' + strVerdict + '.gif';
}

//INICIO DO JQUERY DOCUMENT READY, o mesmo que o evento onLoad da página
$j(document).ready(function()
{
    // Busca
    $j("#pesquisar").click(function() {
        var keyword = $j("#keyword").val();

		$j("#resultados").html('<p align=center><b>Carregando, aguarde...</b></p>').show();
        $j.post("/busca_comentarios.php", {
            keyword: keyword
        },
        function(data) {

            $j("#resultados").html(data).show();
            $j("#resultados").html(data).fadeIn("slow");
        });
        return false;
    });

    // recuperando os parâmetros passados via URL (como o $_GET do PHP)
    qs();

    // bloqueando links que precisemdo modal
    lbox = document.getElementsByClassName('lbOn');

    for (i = 0; i < lbox.length; i++) {
        lbox[i].onclick = function(){return false;};
    }

    // Carregando a grade de programação, mas apenas se a DIV existir,
    // em caso positivo, deixa que a grade carregue o modal por nós...
    if ( $('divGradeProgramacao') )
    {
        mostraGrade();
    }
    else
    {
        // inicializando o modal
        initialize();
        getBrowserInfo();
    }

    $j('.top > h2').toggle(
        function(){
            $j(this).css('backgroundImage','url(/img/perfil/seta-fechada.gif)')
            $j('ul.'+this.className).hide();
        },
        function(){
            $j(this).css('backgroundImage','url(/img/perfil/seta-aberta.gif)')
            $j('ul.'+this.className).show();
        }
    )

    //insere texto dentro da caixa de comentario
    texto = 'O que você quer falar sobre este programa de TV?';

    $j('#eBann').val(texto).css("color", "#cccccc");

    $j('#eBann').focus(function(){
        if(this.value == texto)
            this.value = '';
            $j(this).css("color", "#333333");
    });

    $j('#eBann').blur(function(){
        if(this.value == ''){
            this.value = texto;
            $j(this).css("color", "#cccccc");
        }
    });
});
