/**
 * @author Dale Larsen
 * @copyright 2011 Dale Larsen
 */
/**
 * dMenu: a drop menu creator
 */
jQuery.fn.dMenu = function(opts){
   var defs = {
      menus: false, //object of menu structure
      shadows: true
   };
   opts = $.extend(defs, opts);
   
   return this.each(function(){
   
      var obj = $(this);
      
      obj.css('position', 'relative');
      
      for (x in opts.menus) {
         var top_menuHtml = [], $menuParent = $(x);
         top_menuHtml.push('<div id="' + x.toLowerCase() + '_menu" class="subMenuCont">');
         top_menuHtml.push('<div id="' + x.toLowerCase() + '_menu_list" class="subMenuLinkList">');
         var _banners = false;
         for (z in opts.menus[x]) {
            if (z == '_banners') {
               _banners = opts.menus[x][z];
            } else if (z == '_link') {
               //do nothing
            } else {
               top_menuHtml.push('<a class="subMenuLink" href="' + opts.menus[x][z] + '">' + z + '</a>');
            }
         }
         top_menuHtml.push('</div>');
         
         if (_banners) {
            top_menuHtml.push('<div class="subMenuBanner">');
            for (y in _banners) {
               top_menuHtml.push('<div class="subMenuBannerText">' + _banners[y].text + '<br /><a href="' + _banners[y].link + '">more &gt;</a></div>');
               top_menuHtml.push('<a href="' + _banners[y].link + '"><img border="none"" class="subMenuBannerImg" src="' + _banners[y].img + '" /></a>');
            }
            top_menuHtml.push('</div>');
         }
         
         if (opts.shadows) {
            top_menuHtml.push('<div class="menu2Shadow_bl"></div>');
            top_menuHtml.push('<div class="menu2Shadow_b"></div>');
            top_menuHtml.push('<div class="menu2Shadow_br"></div>');
            top_menuHtml.push('<div class="menu2Shadow_r"></div>');
            top_menuHtml.push('<div class="menu2Shadow_tr"></div>');
         }
         
         $menuParent.append(top_menuHtml.join(''));
      }
      
      var $subMenuConts = $('.subMenuCont');
      
      $subMenuConts.css({
         top: (obj.outerHeight() - 3) + 'px',
         left: '-1px',
         width: (obj.outerWidth() - 40) + 'px'//- 40 for padding on each side
      });
      
      $('.homeMenuLink2').each(function(){
         var $this = $(this);
         var $myMenu = $this.find('.subMenuCont');
         var hoverOffTime;
         if ($myMenu.length) {
            $this.hover(function(e){
               clearTimeout(hoverOffTime);
               $subMenuConts.hide();
               $myMenu.show();
            }, function(e){
               var $ert = $(e.relatedTarget);
               //log($ert.attr('class'));
               if ($ert.is('.pipe') || $ert.is('.homeLinkBar2')) {
                  hoverOffTime = setTimeout(function(){
                     $myMenu.hide();
                  }, 220);
               } else {
                  $myMenu.hide();
               }
               
            });
         }
      });
      
   });
};

jQuery.fn.dBooMenu = function(opts){
   var defs = {
      shadows: true
   };
   opts = $.extend(defs, opts);
   
   return this.each(function(){
   
      var $obj = $(this);
      
      var BookLinks = {
         'Chapter 1': {
            'Link 1': ['/link1', 'see'],
            'Link 2': ['/link2', 'see'],
            'Link 3': ['/link3', 'hear'],
            'Link 4': ['/link4', 'hear'],
            'Link 5': ['/link5', 'see'],
            'Link 6': ['/link6', 'hear'],
            'Link 7': ['/link7', 'idea'],
            'Link 8': ['/link8', 'idea'],
            'Link 9': ['/link9', 'idea'],
            'Link 10': ['/link10', 'see'],
            'Link 11': ['/link11', 'see']
         },
         'Chapter 2': {
            'Link 12': ['/link12', 'see'],
            'Link 13': ['/link13', 'hear'],
            'Link 14': ['/link14', 'see'],
            'Link 15': ['/link15', 'hear'],
            'Link 16': ['/link16', 'idea'],
            'Link 17': ['/link17', 'idea'],
            'Link 18': ['/link18', 'hear'],
            'Link 19': ['/link19', 'see'],
            'Link 20': ['/link20', 'idea']
         },
         'Chapter 3': {
            'Link 21': ['/link21', 'idea'],
            'Link 22': ['/link22', 'idea'],
            'Link 23': ['/link23', 'see'],
            'Link 24': ['/link24', 'see'],
            'Link 25': ['/link25', 'hear'],
            'Link 26': ['/link26', 'see']
         },
         'Chapter 4': {
            'Link 27': ['/link27', 'see'],
            'Link 28': ['/link28', 'see'],
            'Link 29': ['/link29', 'idea'],
            'Link 30': ['/link30', 'hear'],
            'Link 31': ['/link31', 'see'],
            'Link 32': ['/link32', 'idea'],
            'Link 33': ['/link33', 'see'],
            'Link 34': ['/link34', 'see']
         },
         'Chapter 5': {
            'Link 35': ['/link35', 'hear'],
            'Link 36': ['/link36', 'hear'],
            'Link 37': ['/link37', 'see'],
            'Link 38': ['/link38', 'hear'],
            'Link 39': ['/link39', 'see'],
            'Link 40': ['/link40', 'see'],
            'Link 41': ['/link41', 'see'],
            'Link 42': ['/link42', 'see'],
            'Link 43': ['/link43', 'see'],
            'Link 44': ['/link44', 'see'],
            'Link 45': ['/link45', 'see'],
            'Link 46': ['/link46', 'see']
         },
         'Chapter 6': {
            'Link 47': ['/link47', 'see'],
            'Link 48': ['/link48', 'idea'],
            'Link 49': ['/link49', 'hear'],
            'Link 50': ['/link50', 'idea'],
            'Link 51': ['/link51', 'idea'],
            'Link 52': ['/link52', 'idea'],
            'Link 53': ['/link53', 'idea'],
            'Link 54': ['/link54', 'hear'],
            'Link 55': ['/link55', 'hear'],
            'Link 56': ['/link56', 'see'],
            'Link 57': ['/link57', 'hear'],
            'Link 58': ['/link58', 'idea'],
            'Link 59': ['/link59', 'see']
         },
         'Chapter 7': {
            'Link 60': ['/link60', 'hear'],
            'Link 61': ['/link61', 'hear'],
            'Link 62': ['/link62', 'hear'],
            'Link 63': ['/link63', 'hear'],
            'Link 64': ['/link64', 'see']
         },
         'Chapter 8': {
            'Link 65': ['/link65', 'see'],
            'Link 66': ['/link66', 'idea'],
            'Link 67': ['/link67', 'see'],
            'Link 68': ['/link68', 'see'],
            'Link 69': ['/link69', 'idea'],
            'Link 70': ['/link70', 'see'],
            'Link 71': ['/link71', 'hear'],
            'Link 72': ['/link72', 'see'],
            'Link 73': ['/link73', 'see'],
            'Link 74': ['/link74', 'see'],
            'Link 75': ['/link75', 'idea']
         },
         'Chapter 9': {
            'Link 76': ['/link76', 'see'],
            'Link 77': ['/link77', 'hear'],
            'Link 78': ['/link78', 'hear'],
            'Link 79': ['/link79', 'hear'],
            'Link 80': ['/link80', 'see']
         },
         'Epilogue': {
            'Link 81': ['/link81', 'hear']
         }
      };
      
      var menuHtml = '<div id="mainBookMenu" class="subMenuCont">';
      menuHtml += '<div class="bm_Center" style="width: auto;">';
      menuHtml += '<div id="bm_column1_1" class="bm_column_chapters"></div>';
      menuHtml += '<div id="bm_column1_2" class="bm_column_chapters"></div>';
      menuHtml += '<div id="bm_column2" class="bm_column"></div>';
      menuHtml += '</div></div>';
      
      $obj.append(menuHtml);
      var $mainBookMenu = $('#mainBookMenu');
      var obj1;
      
      if (opts.shadows) {
         $mainBookMenu.append('<div class="menu2Shadow_bl"></div><div class="menu2Shadow_b"></div><div class="menu2Shadow_br"></div><div class="menu2Shadow_r"></div><div class="menu2Shadow_tr"></div>');
      }
      var $bm_column1_1 = $obj.find('#bm_column1_1'), $bm_column1_2 = $obj.find('#bm_column1_2'), $bm_column2 = $obj.find('#bm_column2');
      var count1 = 0;
      for (obj1 in BookLinks) {
      
         var BookLinks1 = BookLinks[obj1];
         var chapterHtml = '<div id="' + spaceto_(obj1) + '_Link" class="subMenuLink book_chap_link">' + obj1 + '</div>';
         if (count1 < 7) 
            $bm_column1_1.append(chapterHtml);
         else $bm_column1_2.append(chapterHtml);
         
         var $bm_Column2_column = $('<div id="' + spaceto_(obj1) + '_Column" class="bm_Column2_column"><div class="bm_chap_title">' + obj1 + ' Book Links</div><div id="' + spaceto_(obj1) + '_column2_inner_1" class="column2_inner"></div><div id="' + spaceto_(obj1) + '_column2_inner_2" class="column2_inner"></div><div id="' + spaceto_(obj1) + '_column2_inner_3" class="column2_inner column2_inner_last"></div></div>').appendTo($bm_column2);
         
         var $column2_inner_1 = $('#' + spaceto_(obj1) + '_column2_inner_1'), $column2_inner_2 = $('#' + spaceto_(obj1) + '_column2_inner_2'), $column2_inner_3 = $('#' + spaceto_(obj1) + '_column2_inner_3');
         
         var obj2;
         var count2 = 0;
         for (obj2 in BookLinks1) {
            var BookLinks2 = BookLinks1[obj2];
            
            var column2Html = '<a href="' + BookLinks2[0] + '"><div id="' + spaceto_(obj1 + '_' + obj2) + '_Link" class="bm_menuItem bm_menuColumnLink2"><img src="/images/' + BookLinks2[1] + '.png" class="bm_column1_Icon" />' + obj2 + '</div></a>';
            
            if (count2 < 5) {
               $column2_inner_1.append(column2Html);
            } else if (count2 >= 5 && count2 < 10) {
               $column2_inner_2.append(column2Html);
            } else if (count2 >= 10 && count2 < 15) {
               $column2_inner_3.append(column2Html);
            }
            count2++;
         }
         count1++;
      }
      
      $('div.book_chap_link').each(function(){
         var $this = $(this);
         $this.click(function(){
         
            $('.activeBlMenuItem1').removeClass('activeBlMenuItem1');
            $('div.bm_Column2_column, div.bm_Column3_column').hide();
            $this.addClass('activeBlMenuItem1');
            $linkColumn = $('#' + $this.attr('id').replace(/_Link/, '_Column'));
            $bm_column2.show();
            $linkColumn.show();
            
         });
      });
      
      var $subMenuConts = $('.subMenuCont');
      //$('#Chapter_1_Link').click();
      var $Chapter_1_Link = $('#Chapter_1_Link');
      var hoverOffTime;
      $obj.hover(function(){
         clearTimeout(hoverOffTime);
         $subMenuConts.hide();
         $mainBookMenu.show();
         $Chapter_1_Link.focus();
      }, function(e){
         var $ert = $(e.relatedTarget);
         //log($ert.attr('class'));
         if ($ert.is('.pipe') || $ert.is('.homeLinkBar2')) {
            hoverOffTime = setTimeout(function(){
               $mainBookMenu.hide();
            }, 220);
         } else {
            $mainBookMenu.hide();
         }
      });
      
   });
};
/***
 * This is for the abt menu.
 * @param {Object} opts
 */
$.fn.dmenuAbt = function(opts){
   var defs = {
      menus: false, //object of menu structure
      otherAppendHtml: false,
      shadows: true,
      useLogo: false
   };
   opts = $.extend(defs, opts);
   
   return this.each(function(){
   
      var obj = $(this);
      
      var top_menuHtml = [];
      if (opts.useLogo) {
         top_menuHtml.push('<div id="home_logo_menu_link" class="homeMenuLinkLogo"><a href="http://advancedbrain.com"><img src="http://advancedbrain.com/templates/abthome/images/home2/logo_a.jpg" /></a></div>');
      }
      
      var numMenus = 0;
      for (x in opts.menus) {
         numMenus++;
         //get the number of menus. Needed for not adding a pipe to last item.
      }
      var thisMenuNum = 0;
      
      for (x in opts.menus) {
         thisMenuNum++;
         var mainLinkText = (opts.menus[x]._link) ? '<a href="' + opts.menus[x]._link + '">' + x + '</a>' : x;
         top_menuHtml.push('<div id="' + x.toLowerCase() + '_menu_link" class="homeMenuLink2">' + mainLinkText);
         top_menuHtml.push('<div id="' + x.toLowerCase() + '_menu" class="subMenuCont">');
         top_menuHtml.push('<div id="' + x.toLowerCase() + '_menu_list" class="subMenuLinkList">');
         var _banners = false;
         for (z in opts.menus[x]) {
            if (z == '_banners') {
               _banners = opts.menus[x][z];
            } else if (z == '_link') {
               //do nothing
            } else {
               top_menuHtml.push('<a class="subMenuLink" href="' + opts.menus[x][z] + '">' + z + '</a>');
            }
         }
         top_menuHtml.push('</div>');
         
         if (_banners) {
            top_menuHtml.push('<div class="subMenuBanner">');
            for (y in _banners) {
               top_menuHtml.push('<div class="subMenuBannerText">' + _banners[y].text + '<br /><a href="' + _banners[y].link + '">more &gt;</a></div>');
               top_menuHtml.push('<a href="' + _banners[y].link + '"><img border="none"" class="subMenuBannerImg" src="' + _banners[y].img + '" /></a>');
            }
            top_menuHtml.push('</div>');
         }
         
         if (opts.shadows) {
            top_menuHtml.push('<div class="menu2Shadow_bl"></div>');
            top_menuHtml.push('<div class="menu2Shadow_b"></div>');
            top_menuHtml.push('<div class="menu2Shadow_br"></div>');
            top_menuHtml.push('<div class="menu2Shadow_r"></div>');
            top_menuHtml.push('<div class="menu2Shadow_tr"></div>');
         }
         
         top_menuHtml.push('</div></div>');
         if (thisMenuNum != numMenus) top_menuHtml.push('<div class="pipe"></div>');
         
      }
      
      if (opts.shadows) {
         //TODO: get correct dimensions for shadows that need calculations.
         // Doing it in css right now
         //menu2Shadow_bl, .menu2Shadow_b, .menu2Shadow_br, .menu2Shadow_r,
         // .menu2Shadow_tr
      }
      
      if (opts.otherAppendHtml) top_menuHtml.push(opts.otherAppendHtml);
      
      obj.css('position', 'relative').html(top_menuHtml.join(''));
      
      var $subMenuConts = $('.subMenuCont');
      
      $subMenuConts.css({
         top: (obj.outerHeight() - 3) + 'px',
         left: '-1px',
         width: (obj.outerWidth() - 40) + 'px'//- 40 for padding on each side
      });
      
      $('.homeMenuLink2').each(function(){
         var $this = $(this);
         var $myMenu = $('#' + $this.attr('id').replace(/_link/, ''));
         var hoverOffTime;
         if ($myMenu.length) {
            $this.hover(function(e){
               clearTimeout(hoverOffTime);
               $subMenuConts.hide();
               $myMenu.show();
            }, function(e){
               var $ert = $(e.relatedTarget);
               //log($ert.attr('class'));
               if ($ert.is('.pipe') || $ert.is('.homeLinkBar2')) {
                  hoverOffTime = setTimeout(function(){
                     $myMenu.hide();
                  }, 220);
               } else {
                  $myMenu.hide();
               }
               
            });
         }
      });
   });
};

