function getImageCentre( image ) {
  var imageOffset = $(image).offset();
  var imageCentreX = imageOffset.left + $(image).width() / 2;
  var imageCentreY = imageOffset.top + $(image).height() / 2;
  return Array( imageCentreX, imageCentreY );
}
function hoverText(quadrant) {
  var $el = $('#name_' + quadrant + ' a');
  if ($el.hasClass('compas_name_hover'))
    return;
  else {
    $('.compas_name_hover').removeClass('compas_name_hover');
    $el.addClass('compas_name_hover');
  }
}
$(document).ready(function(){
  $('#main_menu ul#menu li.menu_current').addClass('selectedLava');
  $('#menu').lavaLamp({
    fx: 'easeInOutExpo',
    speed: 500
  });
  var imageCentre = getImageCentre('#needle');
  var PR = (- Math.PI / 2) + 0.001;
  var Q = 0;
  var lastMove = null;
  $("html, body").mousemove(function(e){
    var currentMove =  new Date();
    if(lastMove != null)
      if ((currentMove.getTime() - lastMove.getTime()) < 100)
        return;
    lastMove = currentMove;

    var mouseXFromCentre = e.pageX - imageCentre[0];
    var mouseYFromCentre = e.pageY - imageCentre[1];

    var CR = Math.atan2(mouseYFromCentre, mouseXFromCentre);
    var AR = null;
    if (CR > 0) {
      if (PR < 0) {
        if (CR > Math.PI / 2)
          Q--;
        else
          Q++;
      }
      AR = Q * Math.PI - (Math.PI - CR);
    } else if (CR < 0) {
      if (PR > 0) {
        if (CR > - Math.PI / 2)
          Q--;
        else
          Q++;
      }
      AR = Q * Math.PI + CR;
    }

    if (AR != null) {
      var realAngle = (AR*180 / Math.PI) + 90;
      var quadrant = 0;
      if ((CR > 0) && (CR < (Math.PI / 2))) {
        quadrant = 'zo';
      } else if ((CR > (Math.PI / 2)) && (CR < Math.PI)) {
        quadrant = 'zw';
      } else if ((CR < 0) && (CR < (-Math.PI / 2))) {
        quadrant = 'nw';
      } else if ((CR > (-Math.PI / 2)) && (CR < 0)) {
        quadrant = 'no';
      }
      hoverText(quadrant);
      $('#needle').rotateAnimation(realAngle);
      PR = CR;
    }
  });
});
