/*
 *
 *   jQuery module Drop Down Menu
 *   --------------------------------------------- 
 *   by: Jakub Rybar 
 *   requires jquery.hoverIntent.js (jquery module)
 *
 */

(function($){ 
  
  // plugin itself
  $.fn.ddMenu = function(options) {
    
    // extend options
    options = $.extend({}, $.fn.ddMenu.defaultOptions, options);
    
    // private functions
    var timeout = 100, closetimer = 0, ddmenuitem = 0,
    jsddm_open = function() {
      jsddm_canceltimer();
      jsddm_close();
      ddmenuitem = $(this).find('ul').css('visibility', 'visible');
    },
    
    jsddm_close = function() {
      if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');
    },
    
    jsddm_timer = function() {
      closetimer = window.setTimeout(jsddm_close, timeout);
    },
    
    jsddm_canceltimer = function() {
      if(closetimer) {
        window.clearTimeout(closetimer);
        closetimer = null;
      }
    };
    

      
    // plugin functionality binded to each matched element
    this.each(function() {

        var element = $(this);
        
        if (!options.is_active_main_link_if_has_childs) {
          element.find('> li > a').click(function(){
            if ($(this).parent().find('ul').size() > 0) {
              return false;
            }
          });
        }
        
        
        if (options.use_first_child_link) {
          element.find('> li > a').click(function(){
            if ($(this).parent().find('ul').size() > 0) {
              var new_href = $(this).parent().find('ul > li:first > a').attr('href');
              window.location = new_href;
            }
          });
        }
        
        // hover effect     
        element.find('> li').hover(jsddm_open, jsddm_timer);
        $(document).click(jsddm_close);

    }); 

    return this;
    
  } 
  
  //Public Function
  $.fn.ddMenu.greet = function(name) {
    alert('Hello, ' + name + ', welcome to Script Junkies!');
  };
  
  // default options
  $.fn.ddMenu.defaultOptions = {
    is_active_main_link_if_has_childs : true,
    use_first_child_link : false
  }
  
})(jQuery);
