/*jQuery MegaMenu Plugin
  Author: Devadatta Sahoo
  Author URI: http://www.geektantra.com */

(function($) {
  $.fn.extend({
    isChildOf: function( filter_string ) {
      var parents = $(this).parents().get();
      for ( j = 0; j < parents.length; j++ ) {
        if ( $(parents[j]).is(filter_string) ) return true;
      }
      return false;
    }
  });
})(jQuery); 

jQuery.fn.megamenu = function(ContentClass, Options) {
   var MenuClass = $(this).attr("class").split(" ")[0];
   var ParentNodeNumber = 0;
   if(typeof(Options) == 'undefined') {
    var Options = new Array();
    if(typeof(Options['width']) == 'undefined') {
      Options = '{"width":"auto"}';
    }
   }else Options = JSON.stringify(Options);

   $(ContentClass).after('  <div id="MegaMenuContentShadow" style="display: none;"></div><div id="MegaMenuContent" style="display: none;"></div>');
   $(this).mouseover(function(){
      var MenuContent = $(this).next(ContentClass).html();
      ParentNodeNumber = $('.'+MenuClass).index(this);
      setTimeout('MegaMenuMouseOver('+ParentNodeNumber+',"'+escape(MenuContent)+'","hover",\''+MenuClass+'\',\''+ContentClass+'\',\''+Options+'\')', 300);
   });
   $(this).click(function(){
      var MenuContent = $(this).next('.MegaMenuContent').html();
      ParentNodeNumber = $('.'+MenuClass).index(this);
      MegaMenuMouseOver(ParentNodeNumber,MenuContent, "click", MenuClass, ContentClass, Options);
   });
   $(this).mouseout(function(){
      MegaMenuMouseOut(ParentNodeNumber, MenuClass, ContentClass);
   });
  $(document).bind('click',function(e){
    var $clicked=$(e.target);
    if($clicked.isChildOf('#MegaMenuContent') || $clicked.is('#MegaMenuContent') || $clicked.is('.'+MenuClass)){}
    else MegaMenuMouseOut(ParentNodeNumber, MenuClass, ContentClass);
  });
};

function MegaMenuMouseOver(ParentNodeNumber, MenuContent, state, MenuLinkClass, MenuContentClass, Options){
  var MenuLinkClass = (typeof(MenuLinkClass) == 'undefined') ? ".MegaMenuLink" : MenuLinkClass;
  var MenuContentClass = (typeof(MenuContentClass) == 'undefined') ? ".MegaMenuContent" : MenuContentClass;

  var Options = eval('(' + Options + ')');
  if(state == "hover")  $('.' + MenuLinkClass).removeClass(MenuLinkClass+'Active');
  $('.' + MenuLinkClass).eq(ParentNodeNumber).addClass(MenuLinkClass+'Active');
  
  var LeftPos = $('.' + MenuLinkClass).eq(ParentNodeNumber).parent().position().left;
  if(Options['width'] == 'auto') LeftPos = $('.' + MenuLinkClass).eq(ParentNodeNumber).position().left - 10;

  MenuContent = unescape(MenuContent);

  $("#MegaMenuContent").css('left',LeftPos+'px');
  $("#MegaMenuContentShadow").css('left',LeftPos+'px');
  if(Options['width']) {
    $("#MegaMenuContent").css('width',Options['width']);
    $("#MegaMenuContentShadow").css('width',Options['width']);
  }
  $("#MegaMenuContent").html(''+MenuContent);
  $("#MegaMenuContent").show();
  $("#MegaMenuContentShadow").html(''+MenuContent);
  $("#MegaMenuContentShadow").show();
  
  $("#MegaMenuContent,#MegaMenuContentShadow").mouseover(function(){
      $('#MegaMenuContent').show();
      $('#MegaMenuContentShadow').show();
      
      $('.' + MenuLinkClass).removeClass(MenuLinkClass+'Active');
      $('.' + MenuLinkClass).eq(ParentNodeNumber).addClass(MenuLinkClass+'Active');
  });
  $("#MegaMenuContent,#MegaMenuContentShadow").mouseout(function(){
      $("#MegaMenuContent").hide()
      $("#MegaMenuContentShadow").hide()
      $('.'+MenuLinkClass).removeClass(MenuLinkClass+'Active');
  });
}
function MegaMenuMouseOut(ParentNodeNumber, MenuLinkClass, MenuContentClass){
  $('#MegaMenuContent').hide();
  $('#MegaMenuContentShadow').hide();
  var MenuLinkClass = (typeof(MenuLinkClass) == 'undefined') ? ".MegaMenuLink" : MenuLinkClass;
  $('.' + MenuLinkClass).eq(ParentNodeNumber).removeClass(MenuLinkClass+'Active');
}
