/* Nav */
function InitMenu()
{
    //Don't do this for IE - IE's rendering is too slow
    if (!$('html').hasClass('msie'))
    {
        var slideDuration = 500;
        var mainNav = $('div#mainNavigation');    
        
        //Animate level 2 nav lists and hide then by default
        mainNav.find('li.level1.hasChildren').hover(
            function()
			{
				$(this).siblings('li').find('ul.level2').hide();
            	$(this).find('ul.level2').slideDown(slideDuration);
            	$(this).addClass('selected');	
            },
            function()
            {
            	$(this).find('ul.level2').hide();
            	$(this).removeClass('selected');
            }
        ).find('ul.level2').hide();
        
    }
    
    //If it's IE6 though, let's add some hover classes so we can get the drop downs working
    if ($('html').hasClass('msie6'))
    {
        AddMenuHoverClasses($('div#mainNavigation li.level1'), 1);        
    }
}

function AddMenuHoverClasses(menuItems, depth)
{
    menuItems.each(function(){
        var menuItem = $(this);
        AddMenuHoverClassToggle(menuItem, depth);
        var newDepth = depth + 1;
        AddMenuHoverClasses(menuItem.find('li.level'+newDepth), newDepth);
    });
}

function AddMenuHoverClassToggle(menuItem, depth)
{
    var cssClass = 'level'+depth+'Hover';
    var hasChildrenCssClass = (cssClass + 'HasChildren');
    menuItem.hover(function(){
        menuItem.addClass(cssClass);
        if (menuItem.hasClass('hasChildren'))
        {
            menuItem.addClass(hasChildrenCssClass);
        }
    },function(){
        menuItem.removeClass(cssClass);
        if (menuItem.hasClass('hasChildren'))
        {
            menuItem.removeClass(hasChildrenCssClass);
        }
    });
}

function InitExpandableSiteMap()
{
	$('a.expandSiteMap').click(function()
	{
		var content = $('#expandableSiteMap .expandableContent');
		if (content.css('display') == 'none')
		{
			content.slideDown(300);
			$(this).text('collapse the sitemap').addClass('expanded');
		}
		else
		{
			content.slideUp(300);
			$(this).text('expand the sitemap').removeClass('expanded');
		}
		return false;
	}).css('display', 'block');
	
	$('#expandableSiteMap .expandableContent').css('display', 'none');
}

var Forms = {
	assignWithDefaultState: function(selector, _defaultValue)
	{
		$(document).ready(function()
		{
			var currentElem = $(selector);

			// set the default value data attribute
			var defaultValue = (_defaultValue != undefined ? _defaultValue : currentElem.attr('value'));
			currentElem.data('default', defaultValue);

			// if the value is default, add please select class
			if (currentElem.data('default') == currentElem.attr('value'))
			{
				currentElem.addClass('please-select').data('autoSet', true);
			}

			// bind focus and blur events
			$(selector).focus(function()
			{
				// select the elem and remove the select class
				var elem = $(this);
				elem.removeClass('please-select');

				// set the value to empty if it is the default
				if (elem.attr('value') == elem.data('default') && elem.data('autoSet') == true)
				{
					elem.attr('value', '');
				}
			}).blur(function()
			{
				// if the value isnt empty, do nothing
				if ($(this).attr('value') != '')
				{
					$(this).data('autoSet', false);
					return;
				}
				
				// as the value is empty, re-add class and set to default
				$(this).addClass('please-select').attr('value', $(this).data('default'))
					.data('autoSet', true);
			});
		});
	}
}

var overlays = {
	autoCloseIsActive: false,
	cancelAutoClose: false,

	initRequestCallBack: function(width, height)
	{
		$(document).ready(function()
		{
			var dimensions = overlays.getDimensions(width, height, 300, 440);
			$('#searchBox a.requestCallBack').colorbox({
				width: dimensions.width,
				height: dimensions.height,
				iframe: true,
				onOpen: function() { overlays.cancelAutoClose = overlays.autoCloseIsActive; }
			});
		});
	},

	initSharePage: function(width, height)
	{
		$(document).ready(function()
		{
			var dimensions = overlays.getDimensions(width, height, 525, 500);
			$('#shareWith .shareEmail').colorbox({
				width: dimensions.width,
				height: dimensions.height,
				iframe: true,
				onOpen: function() { overlays.cancelAutoClose = overlays.autoCloseIsActive; }
			});
		});
	},

	getDimensions: function(width, height, defaultWidth, defaultHeight)
	{
		var returnWidth = defaultWidth + 'px';
		if (width != undefined && width != '' && !isNaN(width))
			returnWidth = width + 'px';

		var returnHeight = defaultHeight + 'px';
		if (height != undefined && height != '' && !isNaN(height))
			returnHeight = height + 'px';

		return { width: returnWidth, height: returnHeight };
	},

	autoClose: function()
	{
		overlays.autoCloseIsActive = true;
		$(document).oneTime(4000, 'AUTO_CLOSE_OVERLAY_TIMER', function()
		{
			// if an overlay has been opened, cancel the auto close
			if (overlays.cancelAutoClose)
			{
				overlays.autoCloseIsActive = false;
				overlays.cancelAutoClose = false;
				return;
			}
			// close the overlay
			$.colorbox.close();
		});
	}
}

$(document).ready(function()
{
	InitMenu();
	InitExpandableSiteMap();
});
