//-------------------------------------------------------------
//  SubnavJS v.1.0
//  Created by Eric Puidokas
//
//  Copyright 2007 The New York Times Company
// All Rights Reserved
//-------------------------------------------------------------

// CONFIGURATION VARIABLES
var navId = 'nav';
var navOnStateClass = 'onstate';
var navCurrentStateClass = 'current';
var subnavContainer = 'subnav';

// GLOBALS
var navArray = new Array(13);
var navInterval = new Array(13);

// Subnav Class
var Subnav = Class.create();
Subnav.prototype = {
	
	// initialize()
	initialize: function(){
		
		// Gets array of nav links and subnavs
		try{
			var navLinks = $(navId).getElementsByTagName('a');
			var subnavs = $(subnavContainer).getElementsByTagName('ul');
		}catch(err){
			return;
		}
		
		var mySubnav = this;
		var j = 0;
		// Associates nav links with subnavs and append events onto everything
		for (var i=0; i<navLinks.length; i++){
			if(!Element.hasClassName( navLinks[i], navCurrentStateClass ) ){
				navArray[j] = new Array();
				navArray[j]['subnav'] = subnavs[i];
				navArray[j]['subnav'].rel = j;
				navArray[j]['subnav'].onmouseover = function(){
					var key = this.rel;
					clearInterval(navInterval[key]);
					navInterval[key] = setInterval('mySubnav.loadSubnav(navArray['+key+']); clearInterval(navInterval['+key+']);', 300);
				}
				navArray[j]['subnav'].onmouseout = function(){
					var key = this.rel;
					clearInterval(navInterval[key]);
					navInterval[key] = setInterval('mySubnav.hideSubnav(navArray['+key+']); clearInterval(navInterval['+key+']);', 300);
				}
				navArray[j]['navLink'] = navLinks[i];
				navArray[j]['navLink'].rel = j;
				navArray[j]['navLink'].onmouseover = function(){
					var key = this.rel;
					clearInterval(navInterval[key]);
					navInterval[key] = setInterval('mySubnav.loadSubnav(navArray['+key+']); clearInterval(navInterval['+key+']);', 300);
				}
				navArray[j]['navLink'].onmouseout = function(){
					var key = this.rel;
					clearInterval(navInterval[key]);
					navInterval[key] = setInterval('mySubnav.hideSubnav(navArray['+key+']); clearInterval(navInterval['+key+']);', 300);
				}
				navArray[j]['state'] = 0;
				j++;
			}
		}
	},
	
	loadSubnav: function( navNode ){
		if( navNode['subnav'].style.display == 'none'){
			new Effect.BlindDown( navNode['subnav'], {duration: .2});
		}
		Element.addClassName(navNode['navLink'], navOnStateClass);
	},
	
	hideSubnav: function( navNode ){
		if(navNode['subnav'].style.display != 'none'){
			new Effect.BlindUp( navNode['subnav'], {duration: .2});
		}
		Element.removeClassName(navNode['navLink'], navOnStateClass);
	}
}

// Load Subnav script once page has loaded
function initSubnav(){ mySubnav = new Subnav(); }
Event.observe(window, 'load', initSubnav, false);