/*jQuery MegaMenu Plugin
 Author: Devadatta Sahoo
 Author URI: http://www.geektantra.com */
var isIE6 = navigator.userAgent.toLowerCase().indexOf('msie 6') != -1;
(function($JJ){
    $JJ.fn.extend({
        isChildOf: function(filter_string){
            var parents = $JJ(this).parents().get();
            for (j = 0; j < parents.length; j++) {
                if ($JJ(parents[j]).is(filter_string)) 
                    return true;
            }
            return false;
        }
    });
})(jQuery);

jQuery.fn.megamenu = function(ContentClass, Options){
    var MenuClass = $JJ(this).attr("class").split(" ")[0];
    var ParentNodeNumber = 0;
    Options = jQuery.extend({
        width: "auto",
        justify: "left"
    }, Options);
    $JJ(ContentClass).after('  <div id="MegaMenuContentShadow" style="display: none;"></div><div id="MegaMenuContent" style="display: none;"></div>');
    $JJ(this).hover(function(){
        var MenuContent = $JJ(this).next(ContentClass).html();
        ParentNodeNumber = $JJ('.' + MenuClass).index(this);
        MegaMenuMouseOver(ParentNodeNumber, MenuContent, "click", MenuClass, ContentClass, Options);
        //setTimeout('MegaMenuMouseOver('+ParentNodeNumber+',"'+escape(MenuContent)+'","hover",\''+MenuClass+'\',\''+ContentClass+'\',\''+Options+'\')', 300);
    },function(){
        MegaMenuMouseOut(ParentNodeNumber, MenuClass, ContentClass);
    });
    $JJ(this).click(function(){
        var MenuContent = $JJ(this).next('.MegaMenuContent').html();
        ParentNodeNumber = $JJ('.' + MenuClass).index(this);
        MegaMenuMouseOver(ParentNodeNumber, MenuContent, "click", MenuClass, ContentClass, Options);
    });
    $JJ(document).bind('click', function(e){
        var $JJclicked = $JJ(e.target);
        if ($JJclicked.isChildOf('#MegaMenuContent') || $JJclicked.is('#MegaMenuContent') || $JJclicked.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") 
        $JJ('.' + MenuLinkClass).removeClass(MenuLinkClass + 'Active');
    $JJ('.' + MenuLinkClass).eq(ParentNodeNumber).addClass(MenuLinkClass + 'Active');
    
    var selfNode = new Array();
    selfNode['width'] = $JJ('.' + MenuLinkClass).eq(ParentNodeNumber).width();
    selfNode['padding-left'] = parseInt($JJ('.' + MenuLinkClass).eq(ParentNodeNumber).css('padding-left').replace(/px/g, ''));
    selfNode['padding-right'] = parseInt($JJ('.' + MenuLinkClass).eq(ParentNodeNumber).css('padding-right').replace(/px/g, ''));
    selfNode['border-left-width'] = parseInt($JJ('.' + MenuLinkClass).eq(ParentNodeNumber).css('border-left-width').replace(/px/g, ''));
    selfNode['border-right-width'] = parseInt($JJ('.' + MenuLinkClass).eq(ParentNodeNumber).css('border-right-width').replace(/px/g, ''));
    if (isIE6) 
        selfNode['width'] = selfNode['width'] + 10;
    
    if (Options['justify'] == "left") {
        var LeftPos = $JJ('.' + MenuLinkClass).eq(ParentNodeNumber).parent().position().left;
        if (Options['width'] == 'auto') 
            LeftPos = $JJ('.' + MenuLinkClass).eq(ParentNodeNumber).position().left - 10;
    }
    else {
        var RightPos = $JJ('.' + MenuLinkClass).eq(ParentNodeNumber).parent().position().left;
        if (Options['width'] == 'auto') 
            RightPos = $JJ(document).width() - 10 - $JJ('.' + MenuLinkClass).eq(ParentNodeNumber).position().left - selfNode['width'] - selfNode['padding-left'] - selfNode['padding-right'] - selfNode['border-left-width'] - selfNode['border-right-width'];
    }
    
//    var TopPos = $JJ('.' + MenuLinkClass).eq(ParentNodeNumber).height() + $JJ('.' + MenuLinkClass).eq(ParentNodeNumber).position().top + parseInt($JJ('.' + MenuLinkClass).eq(ParentNodeNumber).css("padding-top").replace(/px/g, '')) + parseInt($JJ('.' + MenuLinkClass).eq(ParentNodeNumber).css("padding-bottom").replace(/px/g, '')) + parseInt($JJ('.' + MenuLinkClass).eq(ParentNodeNumber).css("border-top-width").replace(/px/g, ''));
    
    var TopPos_A = $JJ('.' + MenuLinkClass).eq(ParentNodeNumber).height(); 
    var TopPos_B = $JJ('.' + MenuLinkClass).eq(ParentNodeNumber).position().top;
    var TopPos_C = parseInt($JJ('.' + MenuLinkClass).eq(ParentNodeNumber).css("padding-top").replace(/px/g, ''));
    var TopPos_D = parseInt($JJ('.' + MenuLinkClass).eq(ParentNodeNumber).css("padding-bottom").replace(/px/g, ''));
    var TopPos_E = parseInt($JJ('.' + MenuLinkClass).eq(ParentNodeNumber).css("border-top-width").replace(/px/g, ''));
    var TopPos =  (isNaN(TopPos_A)?0:TopPos_A) + 
                  (isNaN(TopPos_B)?0:TopPos_B) + 
                  (isNaN(TopPos_C)?0:TopPos_C) +
                  (isNaN(TopPos_D)?0:TopPos_D) + 
                  (isNaN(TopPos_E)?0:TopPos_E);
    
    MenuContent = unescape(MenuContent);
    
    if (LeftPos || LeftPos === 0) {
        $JJ("#MegaMenuContent").css('left', LeftPos + 'px');
        $JJ("#MegaMenuContentShadow").css('left', (LeftPos) + 'px');
    }
    else {
        $JJ("#MegaMenuContent").css('right', RightPos + 'px');
        $JJ("#MegaMenuContentShadow").css('right', (RightPos - 4) + 'px');
    }
    $JJ("#MegaMenuContent").css('top', TopPos + 'px');
    $JJ("#MegaMenuContentShadow").css('top', TopPos + 'px');
    if (Options['width']) {
        $JJ("#MegaMenuContent").css('width', Options['width']);
        $JJ("#MegaMenuContentShadow").css('width', Options['width']);
    }
    $JJ("#MegaMenuContent").html('' + MenuContent);
    $JJ("#MegaMenuContent").slideDown("fast");
    $JJ("#MegaMenuContentShadow").html('' + MenuContent);
    $JJ("#MegaMenuContentShadow").slideDown("fast");
    
    if($JJ.fn._hover){
      $JJ("#MegaMenuContent,#MegaMenuContentShadow")._hover(function(){
          MenuContentHoverIn(MenuLinkClass, ParentNodeNumber);
      }, function(){
          MenuContentHoverOut(MenuLinkClass, ParentNodeNumber);
      });
    } else {
      $JJ("#MegaMenuContent,#MegaMenuContentShadow").hover(function(){
          MenuContentHoverIn(MenuLinkClass, ParentNodeNumber);
      }, function(){
          MenuContentHoverOut(MenuLinkClass, ParentNodeNumber);
      });
    }
}

function MenuContentHoverIn(MenuLinkClass, ParentNodeNumber) {
  $JJ('#MegaMenuContent').show();
  $JJ('#MegaMenuContentShadow').show();
  $JJ('.' + MenuLinkClass).removeClass(MenuLinkClass + 'Active');
  $JJ('.' + MenuLinkClass).eq(ParentNodeNumber).addClass(MenuLinkClass + 'Active');
}

function MenuContentHoverOut(MenuLinkClass, ParentNodeNumber) {
  $JJ("#MegaMenuContentShadow").hide()
  $JJ("#MegaMenuContent").hide()
  $JJ('.' + MenuLinkClass).removeClass(MenuLinkClass + 'Active');
}

function MegaMenuMouseOut(ParentNodeNumber, MenuLinkClass, MenuContentClass){
    $JJ('#MegaMenuContent').hide();
    $JJ('#MegaMenuContentShadow').hide();
    var MenuLinkClass = (typeof(MenuLinkClass) == 'undefined') ? ".MegaMenuLink" : MenuLinkClass;
    $JJ('.' + MenuLinkClass).eq(ParentNodeNumber).removeClass(MenuLinkClass + 'Active');
}
$JJ
