// MENU HOVER STATES
jQuery(function(){

var container = jQuery('#header .nav');
var ul = container.children('ul');
var lis = ul.children('li');

var hideDelay = 250; // ms
var visibleClass = 'visible';

function showMenu(id){
	ul.addClass(id);
	container.find('#' + id).children('ul').addClass(visibleClass);
}
function hideAll(){
	ul.attr('class', '').find('ul').removeClass(visibleClass);
}
var hideTimeout;
function startHideAll(){
	if (!hideTimeout) {
		hideTimeout = window.setTimeout(function(){
			hideAll();
			hideTimeout = null;
		}, hideDelay);
	}
}
function stopHideAll(){
	if (hideTimeout) {
		window.clearTimeout(hideTimeout);
	}
	hideTimeout = null;
}


lis
	.mouseenter(function(){
		stopHideAll();
		hideAll();
		var id = jQuery(this).attr('id');
		//console.log('mousing over menu ' + id);
		showMenu(id);
	})
	.mouseleave(function(){
		var id = jQuery(this).attr('id');
		//console.log('mousing out of ' + id);
		startHideAll();
	})
;

});

// MENU COLUMNS AND ADDITIONAL MARKUP
jQuery(function(){

var container = jQuery('#header .nav > ul');
var uls = container.find('ul');
var columnizeOver = 5; // items
var columnContainerHTML = '<div class="col-container" />';
var columnHTML = '<div class="col" />';
var maxAnchorHeight = 30; // 14 * 2, plus 2 pixels for kerning issues in IE

// columnize
uls.each(function(){
	var ul = jQuery(this);
	var lis = ul.find('li');
	if (lis.size() == 0) return;
	lis.remove();
	var columnContainer = jQuery(columnContainerHTML).appendTo(ul);
	if (lis.size() > columnizeOver) {
		var numCols = Math.ceil(lis.size() / columnizeOver);
		var col;
		for (var i = 0, s = lis.size(); i < s; i++) {
			if (i % columnizeOver == 0) {
				col = jQuery(columnHTML).appendTo(columnContainer);
			}
			lis.eq(i).appendTo(col);
		}
	}
	else {
		var column = jQuery(columnHTML).appendTo(columnContainer);
		lis.appendTo(column);
	}
	columnContainer.append('<div class="clear" />');
	//ul.append('<div class="clear" />');
});

// make sure no li is over two lines
var anchors = uls.find('li a');
for (var i = 0, s = anchors.size(); i < s; i++) {
	var anchor = anchors.eq(i);
	if (anchor.height() > maxAnchorHeight) {
		do {
			anchorWords = anchor.html().split(' ');
			anchorWords.pop();
			anchor.html(anchorWords.join(' ') + '...');
		} while (anchor.height() > maxAnchorHeight);
	}
}

});

// SEARCH FORM
jQuery(function(){

var container = jQuery('#header .search');
var form = container.find('form');
var text = form.find('.text');
var submit = form.find('.submit');

var hiddenClass='collapsed';
var defaultValue = text.val();

function showForm(){
	container.removeClass(hiddenClass);
}
function hideForm(){
	container.addClass(hiddenClass);
}
function isFormShowing(){ return !container.hasClass(hiddenClass); }

container
	.mouseover(function(){
		if (!isFormShowing()) {
			showForm();
		}
	})
;
text
	.focus(function(){
		if (text.val() == defaultValue) {
			text.val('');
		}
	})
	.blur(function(){
		if (text.val() == '') {
			text.val(defaultValue);
		}
	})
;

hideForm();

});
