﻿/*
subnav plugin
v1.0 (07/08/2009)

USAGE
-----
$("selector").subnav();

*/
(function () { // Open outer closure

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[0].introText = "For over a century, Babcock has been a name synonymous with ultra-reliable engineering excellence.";
  
  nav.navs[1] = ["linksDivisions", "divisionsNav", "Divisions", "Lorem ipsum...", "liDivisions"];
  nav.navs[1].introText = ''; 
  
  nav.navs[2] = ["linksServices", "servicesNav", "Services", "Lorem ipsum...", "liServices"];
  nav.navs[2].introText = ''; 
  
  nav.navs[3] = ["linksInvestors", "investorsNav", "Investors", "Lorem ipsum...", "liInvestors"];
  nav.navs[3].introText = "Babcock international is a FTSE 250 company with an order book in excess of &pound;12bn";
  
  nav.navs[4] = ["linksCareers", "careersNav", "Careers", "Lorem ipsum...", "liCareers"];
  nav.navs[4].introText = "Babcock International employs over 27,000 people across three markets in the UK, Africa, North America, Australasia and the Middle East.";
  
  nav.navs[5] = ["linksContactUs", "contactUsNav", "Contact Us", "Lorem ipsum...", "liContactUs"];
 nav.navs[5].introText = '';
 
  // 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].introText + "</p>";
      menu += "<div class=\"subNavWrapper\">";
      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)
        {
          var text = shorten(jQuery(this).text(),24);
          var href= jQuery(this).find("a").attr("href");
          var title = '';
         
          if ( /\.{3}$/.test( text ) ) {
			title = " title=\"" + jQuery(this).text() + "\"";
          } 
          if(row < 3 && row % 2) menu += "<li class=\"firstRow\"><a href=\"" + href + "\"" + title + ">" + text + "</a></li>";
          else if(row < 3) menu += "<li class=\"firstRow last\"><a href=\"" + href + "\"" + title + ">" + text + "</a></li>";
          else if(row >= 3 && row % 2) menu += "<li><a href=\"" + href + "\"" + title + ">" + text + "</a></li>";
          else menu += "<li class=\"last\"><a href=\"" + href + "\"" + title + ">" + text + "</a></li>";
          row++;
        }
      });
      menu += "</ul>";
      menu += "</div>";
      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 ) {
	
	var introText = "Explore the three key markets Babcock supports with a wealth of engineering skills, knowledge and technologies.";
	
	col = 1;
    row = 1;
    menu  = "<div id=\"marketsNav\" class=\"marketsNav subNav clearfix\" style=\"visibility:hidden;\">";
    menu += "<div class=\"menuArrow\"></div>";
    menu += "<p class=\"copy\">" + introText + "</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\">";
    
    var links = jQuery("div.footerWrapper div.footer ul.linksMarkets li.sub > a");
    
    links.each(function( index ){
      
      // Open nav group
      if ( col == 1 ) {
		menu += "<div class=\"navGroup\">";
      } 
       
      menu += "<ul id=\"marketsSubNav-" + col + "\" class=\"marketsNav clearfix\">";
      menu += "<li class=\"title\"><a href=\"" + this.href + "\">" + jQuery(this).text() + "</a></li>";
      
      jQuery(this).parent().find("ul.sub li").each(function(){
      
          var text = shorten(jQuery(this).text(),24);
          var href= jQuery(this).find("a").attr("href");
          var title = '';
          
          if ( /\.{3}$/.test( text ) ) {
			title = " title=\"" + jQuery(this).text() + "\"";
          } 
        menu += "<li><a href=\"" + href + "\"" + title + ">" + text + "</a></li>";
      });
      menu += "</ul>";
      
      // Close nav group
      if ( links.length > 3 && col == 2 ) {
		menu += "</div>";
      }
      // close early if there are only three columns, and increment the counter
      else if ( links.length == 3 && col == 1 ) {
      	menu += "</div>";
      	col++; 
      }
      
       
      //console.log( links.length, ' - ' , col)
      
      col++
    });
    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()


})(); // Close outer closure