﻿/*
subnav plugin
v1.0 (07/08/2009)

USAGE
-----
$("selector").subnav();

*/

jQuery.fn.subnav = function(settings)
{
  // if the selector does not contain any elements, return the jQuery object
  if (this.length == 0) return this;
  
  // default settings
  var nav = new Object();
  nav.selector = jQuery(this);
  nav.navs = new Array();
    
  nav.navs[0] = ["linksAboutUs", "aboutUsNav", "About Us", "Lorem ipsum...", "liAboutUs"];
  nav.navs[1] = ["linksDivisions", "divisionsNav", "Divisions", "Lorem ipsum...", "liDivisions"];
  nav.navs[2] = ["linksServices", "servicesNav", "Services", "Lorem ipsum...", "liServices"];
  nav.navs[3] = ["linksInvestors", "investorsNav", "Investors", "Lorem ipsum...", "liInvestors"];
  nav.navs[4] = ["linksCareers", "careersNav", "Careers", "Lorem ipsum...", "liCareers"];
  nav.navs[5] = ["linksContactUs", "contactUsNav", "Contact Us", "Lorem ipsum...", "liContactUs"];

  // generic 
  for(i = 0; i < nav.navs.length; i++)
  {
    row = 1;
    menu = "";
    j = i;
    
    if(jQuery("div.footerWrapper div.footer ul." + nav.navs[j][0] + " li").length > 1)
    {
      menu  = "<div id=\"" + nav.navs[j][1] + "\" class=\"" + nav.navs[j][1] + " subNav clearfix\" style=\"visibility:hidden;\">";
      menu += "<div class=\"menuArrow\"></div>";
      menu += "<p class=\"copy\">" + nav.navs[j][3] + "</p>";
      menu += "<p class=\"title\"><strong><a href=\"" + jQuery("div.footerWrapper div.footer ul." + nav.navs[j][0] + " li:first a").attr("href") + "\">" + nav.navs[j][2] + "</a></strong></p>";
      menu += "<ul class=\"" + nav.navs[j][1] + " clearfix\">";
      jQuery("div.footerWrapper div.footer ul." + nav.navs[j][0] + " li:not(.title)").each(function(){
        if(row <= 10)
        {
          if(row < 3 && row % 2) menu += "<li class=\"firstRow\"><a href=\"" + jQuery(this).find("a").attr("href") + "\" title=\"" + jQuery(this).text() + "\">" + shorten(jQuery(this).text(),24) + "</a></li>";
          else if(row < 3) menu += "<li class=\"firstRow last\"><a href=\"" + jQuery(this).find("a").attr("href") + "\" title=\"" + jQuery(this).text() + "\">" + shorten(jQuery(this).text(),24) + "</a></li>";
          else if(row >= 3 && row % 2) menu += "<li><a href=\"" + jQuery(this).find("a").attr("href") + "\" title=\"" + jQuery(this).text() + "\"\">" + shorten(jQuery(this).text(),24) + "</a></li>";
          else menu += "<li class=\"last\"><a href=\"" + jQuery(this).find("a").attr("href") + "\" title=\"" + jQuery(this).text() + "\">" + shorten(jQuery(this).text(),24) + "</a></li>";
          row++;
        }
      });
      menu += "</ul>";
      menu += "<div class=\"shadow\"></div>";
      menu += "</div>";
      
      jQuery(nav.selector.find("li." + nav.navs[j][4])).append(menu);
    }
  } // for  
  
  // markets: custom nav
  if(jQuery("div.footerWrapper div.footer ul.linksMarkets li").length > 1)
  {
    col = 1;
    row = 1;
    menu  = "<div id=\"marketsNav\" class=\"marketsNav subNav clearfix\" style=\"visibility:hidden;\">";
    menu += "<div class=\"menuArrow\"></div>";
    menu += "<p class=\"copy\">Markets</p>";
    menu += "<div class=\"subNavWrapper clearfix\">";
    menu += "<p class=\"title\"><strong><a href=\"" + jQuery("div.footerWrapper div.footer ul.linksDivision li:first a").attr("href") + "\">Markets</a></strong></p>";
    menu += "<div class=\"clearfix\">";
    jQuery("div.footerWrapper div.footer ul.linksMarkets li.sub > a").each(function(){
      if(col == 3) 
      {
        menu += "<ul class=\"marketsNav marketsNavLast clearfix\">";
        col = 1;
      }
      else 
      {
        menu += "<ul class=\"marketsNav clearfix\">";
        col++;
      }
      menu += "<li class=\"title\"><a href=\"" + jQuery(this).attr("href") + "\" title=\"" + jQuery(this).text() + "\">" + shorten(jQuery(this).text(),24) + "</a></li>";
      jQuery(this).parent().find("ul.sub li").each(function(){
        menu += "<li><a href=\"" + jQuery(this).find("a").attr("href") + "\" title=\"" + jQuery(this).text() + "\">" + shorten(jQuery(this).text(),24) + "</a></li>";
      });
      menu += "</ul>";
    });
    menu += "</div>";
    menu += "</div>";
    menu += "<div class=\"shadow\"></div>";
    menu += "</div>";
    
    jQuery(nav.selector.find("li.liMarkets")).append(menu);
  }
  
  // rollovers: about us
  jQuery("li.liAboutUs").hover(
    function(){
      jQuery(this).find("div#aboutUsNav").css("visibility", "visible");
    },
    function(){
      jQuery(this).find("div#aboutUsNav").css("visibility", "hidden");
    }
  )
  
  // rollovers: divisions
  jQuery("li.liDivisions").hover(
    function(){
      jQuery(this).find("div#divisionsNav").css("visibility", "visible");
    },
    function(){
      jQuery(this).find("div#divisionsNav").css("visibility", "hidden");
    }
  )
  
  // rollovers: markets
  jQuery("li.liMarkets").hover(
    function(){
      jQuery(this).find("div#marketsNav").css("visibility", "visible");
    },
    function(){
      jQuery(this).find("div#marketsNav").css("visibility", "hidden");
    }
  )
  
  // rollovers: services
  jQuery("li.liServices").hover(
    function(){
      jQuery(this).find("div#servicesNav").css("visibility", "visible");
    },
    function(){
      jQuery(this).find("div#servicesNav").css("visibility", "hidden");
    }
  )
  
  // rollovers: investors
  jQuery("li.liInvestors").hover(
    function(){
      jQuery(this).find("div#investorsNav").css("visibility", "visible");
    },
    function(){
      jQuery(this).find("div#investorsNav").css("visibility", "hidden");
    }
  )
  
  // rollovers: careers
  jQuery("li.liCareers").hover(
    function(){
      jQuery(this).find("div#careersNav").css("visibility", "visible");
    },
    function(){
      jQuery(this).find("div#careersNav").css("visibility", "hidden");
    }
  )
  
  // rollovers: contact us
  jQuery("li.liContactUs").hover(
    function(){
      jQuery(this).find("div#contactUsNav").css("visibility", "visible");
    },
    function(){
      jQuery(this).find("div#contactUsNav").css("visibility", "hidden");
    }
  )
      
  // function to shorten log strings
  function shorten(value, max)
  {
    value.length > max ? result = value.substring(0, max) + "..." : result = value;
    return result;
  }
  
  // Quick fix - please remove me
  $("ul.nav li.liMarkets p.title:first a").attr("href", (bab.root + "pages/markets"));
  
  // return the jQuery object
  return this;
} // $.subnav()