/******************************************************************
 * FUNÇÕES GENÉRICAS E GLOBAIS
 ******************************************************************/

/**
 * Detecta o browser que o cara está usando
 */
function detectBrowser()
{
  var browser;
  if(navigator.appName.indexOf('Netscape') == -1) {
    browser = 'IE';
  } else {
    browser = 'Netscape';
  }
  return browser;
}

/**
 * Detecta a versão do browser que o cara está utilizando
 */
function detectVersion()
{
  var version = parseInt(navigator.appVersion);
  return version;
}

/**
 * Detecta o sistema operacional que está sendo utilizado
 */
function detectOS()
{
  if(navigator.userAgent.indexOf('Win') == -1) {
    OS = 'Macintosh';
  } else {
    OS = 'Windows';
  }
  return OS;
}

/**
 * Controla a exibição de mensagens nos iputs do sistema
 */
function controllerFields(idInput, message){
  $(idInput).blur(function(){
      if($(this).val() == ''){
          $(this).attr('value', message);
      }
    }).click(function (){
      $(this).attr('value', '');
    })
}

function show_more_loading() {
  $("#whats_new_more").html('<img src="/images/loadingbar.gif" alt="aguarde" style="float: right;" />')
}

function show_more_most_played_loading() {
  $("#most_played_games_show_more").html('<img src="/images/loadingbar.gif" alt="aguarde" style="float: right;" />')
}









//Variáveis de controle
var menu = false;
var themes = false;
var login = false;
var menuOptions = false;
var overActive = false; //Indica se o mouse está posicionado sobre algum menu do header

/******************************************************************
 * Funções de controle dos menus
 ******************************************************************/
function openMenuOptions(){
  if(menu || themes){
    checkOpenTabs();
  }
  if(menuOptions == false){
    $('#logged_user_link_menu').slideDown("fast");
    menuOptions = true;
  }
}
function closeMenuOptions(){
  $('#logged_user_link_menu').slideUp("fast");
  menuOptions = false;
}




function openMenu(){
  checkOpenTabs();
  $('#header_menu').removeClass('inactive').addClass('active');
  $('#header_menu_box').slideDown("fast");
  $('#header_menu a.item').unbind('click');//Limpa as funções antigas que eram chamadas com click
  $('#header_menu a.item').click(closeMenu);
  $('#header_menu').blur(checkOpenTabs);
  menu = true;
}
function closeMenu(){
  $('#header_menu_box').slideUp("fast",
    function(){
      $('#header_menu').attr('class', 'inactive');
    });
  $('#header_menu a.item').unbind('click');//Limpa as funções antigas que eram chamadas com click
  $('#header_menu a.item').click(openMenu);
  menu = false;
}





function openThemes(){
  checkOpenTabs();
  $('#header_personalize').attr('class', 'personalize active');
  $('#header_personalize_box').slideDown("fast");
  $('#header_personalize a.selector').unbind('click');//Limpa as funções antigas que eram chamadas com click
  $('#header_personalize a.selector').click(closeThemes);
  themes = true;
}
function closeThemes(){
  $('#header_personalize_box').slideUp("fast",
    function(){
      $('#header_personalize').attr('class', 'personalize inactive');
    });
  $('#header_personalize a.selector').unbind('click');//Limpa as funções antigas que eram chamadas com click
  $('#header_personalize a.selector').click(openThemes);
  themes = false;
}




function openLogin(){
  checkOpenTabs();
  $('#header_login').removeClass('inactive').addClass('active');
  $('#header_login_box').slideDown("fast");
  $('#header_login a.item').unbind('click');//Limpa as funções antigas que eram chamadas com click
  $('#header_login a.item').click(closeLogin);
  login = true;
}
function closeLogin(){
  $('#header_login_box').slideUp("fast",
    function(){
      $('#header_login').attr('class', 'inactive');
    });
  $('#header_login a.item').unbind('click');//Limpa as funções antigas que eram chamadas com click
  $('#header_login a.item').click(openLogin);
  login = false;
}


/**
 * verifica quais janelas estão abertas e as fecha
 */
function checkOpenTabs(){
  if(menu){
    closeMenu();
  }
  if(themes){
    closeThemes();
  }
  if(login){
    closeLogin();
  }
  if(menuOptions){
    closeMenuOptions();
  }
  return true;//toda a função já foi executada
}




function ativarMenu(){
  overActive = true;
}
function desativarMenu(){
  overActive = false;
}

jQuery(document).ready(function() {

    $(document).click(function(){
       if(!overActive){
         checkOpenTabs();
       }
    });
    
    //$('#header_menu').removeClass('active').addClass('inactive');
    //$('#header_menu_box').hide();
    $('#header_menu a.item').click(openMenu);
    $('#header_menu').mouseover(ativarMenu);
    $('#header_menu').mouseout(desativarMenu);

    //$('#header_personalize').removeClass('active').addClass('inactive');
    //$('#header_personalize_box').hide();
    $('#header_personalize a.selector').click(openThemes);
    $('#header_personalize').mouseover(ativarMenu);
    $('#header_personalize').mouseout(desativarMenu);

    //$('#header_login').removeClass('active').addClass('inactive');
    //$('#header_login_box').hide();
    $('#header_login a.item').click(openLogin);
    $('#header_login').mouseover(ativarMenu);
    $('#header_login').mouseout(desativarMenu);


    $('#logged').mouseenter(openMenuOptions);
    $('#logged').mouseover(ativarMenu);
    $('#logged').mouseout(desativarMenu);
    $('#logged_user_link_menu').hide();

    $('.fast-game-name').hide();

    //Função responsável pelos efeitos com o passar do mouse sobre os jogos rápidos
    $('.fast_game_link').mouseenter(
      function(){
        $('.fast_game_link span').hide();
        $('span', this).slideToggle("fast");
      }
    ).mouseleave(
      function(){
         $('span', this).slideToggle("fast");
      }
    );

    $('.fast-game-name').css({'opacity' : '75'});
    controllerFields('#user_session_email', 'Digite seu email');
    controllerFields('#word', 'Faça sua busca');

});

function pagination_loading() {
  $('div.pagination').html('<img src="/images/loadingbar.gif" alt="aguarde" style="padding-top: 1px; padding-bottom: 2px;" />');
}

function bind_ajax_to_pagination() {
  // the element in which we will observe all clicks and capture
  // ones originating from pagination links
  var container = $('.pagination a')

  if (container) {

    container.bind('click', function(e) {
      pagination_loading();
      new $.ajax({
                  dataType:'script',
                  type:'get',
                  url: $(this).attr('href'),
                  complete: function (XMLHttpRequest, textStatus) {
                    bind_ajax_to_pagination();
                  }
                })      
      return false;
    })
  }
}

$(document).ready(function() {
    bind_ajax_to_pagination()
})

/**
 * Seleciona todos os inputs do tipo checkbox de um formulário de acordo com a classe passada como parametro
 */
function select_all_checkbox_inputs(class_name){
  $('.'+class_name).attr('checked', 'checked');
}

/**
 * Retira a seleção de todos os checkbox marcados, de acordo com a classe passada como parametro
 */
function remove_all_checkbox_inputs(class_name){
  $('.'+class_name).removeAttr('checked');
}

/**
 * Seleciona um jogo para o desafio de um grupo de amigos
 */
function challenge_game_select(game_id){
    $('#game_selected').attr('innerHTML', $('#challenge_game_'+game_id).html());
    $('#challenge_game_id').val(game_id);
}

/**
 * Abre a caixa de avisos com um determinado aviso para o usuário
 */
function send_notice(notice){
  $('#notify-box .notify').attr('innerHTML', notice);
  $('#notify-box').slideDown("normal");
}

function update_challenge_active(challenge_id){
    $('.challenges_name').removeClass('active');
    $('#challenge_name_'+challenge_id).addClass('active');
}

function show_loading(element_id){
  $("#"+element_id).html('<img src="/images/loadingbar.gif" alt="aguarde" style="float: right;" />Carregando, por favor aguarde ....')
}

function ratio_click(){
  $('#img_stars a').click(function(){
    $('#counter_votes').attr('innerHTML', 'Carregando...');
  });
}

function remove_box(box_id){
  $('#'+box_id).fadeOut("normal");
}