/*
** global.js - Global Javascript Library
** jgriffith
**
*/

(function($){

var Global = {
    
    domready: function() {
        Global.topnav();
        Global.subnav();
        Global.tabnav();
        Global.links();
        Core.SiteIndex.setheight(365);
        Core.SiteIndex.setfocus([ 
                                 new Array("",'global')
                               ]);
    },
  
     /*
      * Add an 'on' class to the top nav
      */
     
    topnav: function() {
        function sethere(id) {
            var a = document.getElementById(id+'-nav');
            if (!a){return};
            a.parentNode.className += ' on';
            a.className += ' on';
        }
        var loc = document.location.href;
        if (loc.indexOf('/faculty/') > -1) {
            sethere('faculty');
        } else if (loc.indexOf('/research/') > -1) {
            sethere('research');
        } else if (loc.indexOf('/students/') > -1) {
            sethere('students');
        } else if (loc.indexOf('/exed/') > -1) {
            sethere('exed');
        } else if (loc.indexOf('/alumni/') > -1) {
            sethere('alumni');
        } else if (loc.indexOf('/faq.html') > -1) {
            sethere('faqs');
        } else if (loc.indexOf('/advisors/') > -1) {
            sethere('advisors');
        }
    },
    
    tabnav: function() {
         var thisurl = Global.thisurl();
         $("#innernav a").each(function() {
           if (Global.sameurl(thisurl,this)) {
              $(this).parent().parent().addClass('on');
           }
         });
    },
    
    subnav: function() {
         var nav = document.getElementById('subnav');
         if (!nav) return;

         var links = nav.getElementsByTagName('a');
         var thisurl = Global.thisurl();
         var found = false;

         found = Global.search_nav(thisurl,links)
        
         if (!found) {
             var base = Global.basename(thisurl);
             found = Global.search_nav(base,links)
         }
         
         if (!found) {
             var base = Global.basename(base);
             found = Global.search_nav(base,links)
         }
         
         
         $("#subnav .expandable>li").each(function(){
            var li = $(this);
            if (!li.hasClass("open")) li.addClass("closed");
            if (!$("ul",li).size()) li.addClass("nochildren");
         });
    },
    
      links: function() {
           if ($("body").hasClass("home")) {return};
           $("#sidebar a, #content a, .home #content a").each(function() {
              // comment add .ext class
              $a = $(this);
              if (this.href && !/mailto/.test(this.href)) {
                 if (! /hbs.edu/.test(this.href)) {$a.addClass("ext");}
    	         if ( /.pdf$/.test(this.href)) {$a.addClass('pdf')}
    	         if (/hbsp.harvard.edu/.test(this.href)) {$a.removeClass("ext");}
		 if (/harvardbusiness/.test(this.href)) {$a.removeClass("ext");}
		 if ( /.pdf$/.test(this.href)) {$a.addClass('pdf')}
                 if ($a.hasClass("ext")) {$a.removeClass("pdf");} 
    	 
              }
              if (this.className.indexOf("floorplan") > -1 ){
                 $(this).click(function(){
                   Global.floorplan(this);
                   return false;
                 }); 
              } 
           });
        },
      
    floorplan: function(link) {

        // prevent doubleclicking
        if ($(link).hasClass("clicking")) return;
        $(this).addClass("clicking");
        window.setTimeout(function(){$(this).removeClass("clicking")},500);

        var url = link.href || link;
        var fp = window.open(url, "newwin", 'width=970,height=606,directories=no,toolbar=no,location=no,status=yes,menubar=no,scrollbars=no,resizable=yes');
        if (fp) {fp.focus();}
    },
    
    basename: function(url) {
         url = url.replace(RegExp("/$"),'')
         var parts = url.split("/");
         parts.pop()
         base = parts.join("/") + '/';
         return base;
         
    },
    
    search_nav: function(thisurl,links) {
         for (x=0,total=links.length;x<total;x++) {
                 if (Global.sameurl(thisurl,links[x])) {
                       link = links[x]
                       link.className = 'on';
                       var li = link.parentNode;
                       li.className = 'open';
                       li = li.parentNode.parentNode;
                       li.className = 'open';
                       $(">a",$(li)).addClass('on');
                     return true;
                 }
         }
         return false;
    },

    thisurl: function() {
        var thisurl = document.location.href;
        if (thisurl.indexOf('#') > -1) {
           thisurl = thisurl.split(/#/)[0];
        }
        if (thisurl.indexOf('list_editables') > -1 ) {
           thisurl = document.referrer;
        }
        return thisurl;
    },

    normalize: function(url) {
       url = url.replace(/index.html/,'')
       return url;
    },

    sameurl: function(url,link) {
       if (!link || !link.href){return 0}
       if (Global.normalize(url) == Global.normalize(link.href)) {return 1};
       return 0;
    },

    
    last:''

}

$(document).ready(function(){Global.domready()});

})(jQuery);

