$(function() {
  var preloader = $(document.createElement('div'));
  preloader.css('position', 'absolute').css('top', '-9999px').css('left', '-9999px');
  $(document.body).append(preloader);
  
  $('#main-menu-links li a').hover(
    function() {
      var img = $(this).find('img');
      var src = img.attr('src');
      src = src.replace('_off.gif', '_on.gif');
      img.attr('src', src);
    },
    function() {
      var img = $(this).find('img');
      var src = img.attr('src');
      src = src.replace('_on.gif', '_off.gif');
      img.attr('src', src);
    }
  ).each(
    function() {
      var img = $(this).find('img');
      var src = img.attr('src');
      src = src.replace('_off.gif', '_on.gif');
      var preload = $(new Image());
      preload.attr('src', src);
      preloader.append(preload);
    }
  );
  
  $('#history-back').click(
    function() {
      window.history.go(-1);
      return false;
    }
  );

  // Just to keep the user logged in
  setInterval(
    function() {
      $.get(window.HREF_BASE);
    },
    1000 * 60 * 10
  );

  var sidebar2 = $('.sidebar2 .nav');
  var sidebar2_uls = sidebar2.find('ul');
  var last_opened_ul = false;
  $('.sidebar2 .nav li a').click(
    function(e) {
      if($(this).is('.jump')) return true;
      e.stopPropagation();
      $(this).blur();
      var li = $(this.parentNode);
      var ul = li.find('> ul');
      if(ul.length) {
        if(ul.data('out')) {
          ul.slideUp();
          li.removeClass('active');
          ul.data('out', 0);
        } else {
          ul.slideDown();
          li.addClass('active');
          sidebar2_uls.each(
            function() {
              if(this != ul[0] && !is_parent(this, ul[0])) {
                $(this).slideUp();
                $(this).data('out', 0);
                $(this.parentNode).removeClass('active');
              }
            }
          );
          last_opened_ul = ul[0];
          ul.data('out', 1);
        }
        return false;
      }
    }
  );
  
  function is_parent(parent, child) {
    var p;
    while(p = child.parentNode) {
      if(p == parent) {
        return true;
      }
      child = p;
    }
    return false;
  }  

  $('.init-state').each(
    function() {
      var $this = $(this);
      $this.data('val', $this.val());
      $this.focus(
        function() {
          if($this.val() == $this.data('val')) {
            $this.val('');
          }
        }
      );
      $this.blur(
        function() {
          if($this.val() == '') {
            $this.val($this.data('val'));
          }
        }
      );
    }
  );
});

function ajaxStart(event) {
  if(!event) {
    event = {pageX: 300, pageY: 300};
  }
  var loader = $('<div id="ajax-loader" style="position: absolute; top: '+ (event.pageY - 5) +'px; left: '+ (event.pageX + 15) +'px;width: 16px; height:16px;"><img src="'+ window.HREF_BASE +'img/ajax-loader.gif"></div>');
  $(document.body).append(loader);
}
function ajaxStop(time) {
  if(!time) time = 0;
  setTimeout(function() { $('#ajax-loader').remove(); }, time);
}
function initRatings() {
  $('.video-rating').each(function() {
    var context = this;
    var container = $(this);
    var video_id = parseInt(container.attr('id').replace(/[^0-9]+/g, ''), 10);
    var stars = container.find('span');
    stars.css('cursor', 'pointer');
    stars.hover(
      function() {
        if(container.data('has-rated')) return;
        var level = parseInt(this.className.replace(/[^0-9]+/, ''), 10);
        fillStars(level, container);
      },
      function() {
        if(container.data('has-rated')) return;
        var level = parseInt(this.className.replace(/[^0-9]+/, ''), 10);
        fillStars(level, container);
      }
    ).click(function() {
      var rate = parseInt(this.className.replace(/[^0-9]+/, ''), 10);
      $.post(window.HREF_BASE +'videos/'+ video_id +'/rate.json', {rate: rate},
        function(video_data) {
          video_data = eval('('+ video_data +')');
          if(video_data.success) {
            var feedback = $('<p class="rate-feedback">'+ window.lang.RATE_SAVED +'</p>');
            var count = container.find('.rate-count');
            var counts = parseInt(count.text().replace(/[^0-9]+/g, ''), 10);
            counts++;
            if(counts == 1) {
              var text = counts +' '+ window.lang.RATING;
            } else {
              var text = counts +' '+ window.lang.RATINGS;
            }
            count.text(text);
          } else {
            var feedback = $('<p class="rate-feedback">'+ window.lang.RATE_DUPLICATE +'</p>');
          }
          fillStars(parseInt(video_data.average_rating, 10), container);
          feedback.css('opacity', 0);
          container.append(feedback);
          feedback.fadeTo(400, 1);
          setTimeout(function() {
            feedback.fadeOut(function() { feedback.remove(); });
          }, 2000);
        }
      );
    });
  });
  function fillStars(level, container) {
    for(var i = 1; i <= 5; i++) {
      var star = container.find('.rate'+ i);
      if(i <= level) {
        star.addClass('set');
      } else {
        star.removeClass('set');
      }
    }
  }
}
