$(document).ready(function() {
						   
    // Preload images
	$.preloadCssImages();
	
	// Rotate homepage images
	$('#featurePhoto').rotate();
    
	        $('#mainmenu li a span').fadeTo(0,0);
     
    // Main menu

    $('#mainmenu li a').each(function (i){
        $(this).hover(function() {
            $(this).children().stop().fadeTo(600, 1);                       
        },
            function() {
                $(this).children().stop().fadeTo(600, 0);                       
        });                                              
    });
});


// Fades from one image to another
(function($) {
 
    $.fn.rotate = function(time) {	
        return this.each(function() {
            list = $(this);
            items = list.children();
            
            items.css('position', 'absolute').not(':first').hide();

            // Set a timer for the next fade
            var t = setTimeout('$.fn.rotate.startFade()', 5000);
        });
    };
    
    $.fn.rotate.startFade = function() {
        // Get the current and the next image
        var current = items.filter(':visible');
        var next = current.next()
        var next = (next.length) ? next : items.filter(':first');
        
        // Do the fade
        current.fadeOut(1200);
        next.fadeIn(1200);
        
        // Set a timer for the next fade
        var t = setTimeout('$.fn.rotate.startFade()', 5000);
    }
	
})(jQuery);


/**
 * nmcDropDown plugin - v1.0
 * Author: Eli Van Zoeren
 * Copyright (c) 2009 New Media Campaigns
 * http://www.newmediacampaigns.com
 * ---------------------------------------------
 * Usage: $('#nav').nmcDropDown({[options]});
 **/
(function($) {

    $.fn.nmcDropDown = function(options) {
	
        // build main options before element iteration
        var opts = $.extend({}, $.fn.nmcDropDown.defaults, options);

        // iterate each matched element
        return this.each(function() {
            menu = $(this);
            submenus = menu.children('li:has('+opts.submenu_selector+')');
            
            if (opts.fix_IE) {
                // Fix IE 6+7 z-index bug
                menu.css('z-index', 51)
                    .parents().each(function(i) {
                        if ($(this).css('position') == 'relative') {
                            $(this).css('z-index', (i + 52));
                        }
                    });
                submenus.children(opts.submenu_selector).css('z-index', 50);
            }
			
            // Function that is called to show the submenu
            over = function() {
                $(this).addClass(opts.active_class)
                       .children(opts.submenu_selector).animate(opts.show, opts.show_speed);
                return false;
            }
			
            // Function that is called to hide the submenu
            out = function() {
                $(this).removeClass(opts.active_class)
                       .children(opts.submenu_selector).animate(opts.hide, opts.hide_speed);
                return false;
            }
			
            // Show and hide the sub-menus
            if (opts.trigger == 'click') {
                submenus
                    .toggle(over, out)
                    .children(opts.submenu_selector).hide();
            } else if ($().hoverIntent) {
                submenus
                    .hoverIntent({
                        interval: opts.show_delay, 
                        over: over, 
                        timeout: opts.hide_delay, 
                        out: out
                    }).children(opts.submenu_selector).hide();
            } else {
                submenus
                    .hover(over, out)
                    .children(opts.submenu_selector).hide();
            }
        });
    };

    // Default options
    $.fn.nmcDropDown.defaults = {
        trigger: 'hover',           // Event to show and hide sub-menu - hover or click
        active_class: 'open',       // Class to give open menu items
        submenu_selector: 'ul',     // The element immediately below the <li> containing the sub-menu
        show: {opacity: 'show'},    // Effect(s) to use when showing the sub-menu
        show_speed: 300,            // Speed of the show transition
        show_delay: 50,             // Delay before the sub-menu is show (requires HoverIntent)
        hide: {opacity: 'hide'},    // Effect(s) to use when hiding the sub-menu
        hide_speed: 200,            // Speed of the hide transition
        hide_delay: 100,            // Delay before the sub-menu is hidden (requires HoverIntent)
        fix_IE: true                // IE 6 and 7 have problems with z-indexes. This tries to fix them
    };

})(jQuery);

// Preload CSS
;jQuery.preloadCssImages = function(settings){
	settings = jQuery.extend({
		statusTextEl: null,
		statusBarEl: null,
		errorDelay: 999, // handles 404-Errors in IE
		simultaneousCacheLoading: 2
	}, settings);
	var allImgs = [],
		loaded = 0,
		imgUrls = [],
		thisSheetRules,	
		errorTimer;
	
	function onImgComplete(){
		clearTimeout(errorTimer);
		if (imgUrls && imgUrls.length && imgUrls[loaded]) {
			loaded++;
			if (settings.statusTextEl) {
				var nowloading = (imgUrls[loaded]) ? 
					'Now Loading: <span>' + imgUrls[loaded].split('/')[imgUrls[loaded].split('/').length - 1] : 
					'Loading complete'; // wrong status-text bug fixed
				jQuery(settings.statusTextEl).html('<span class="numLoaded">' + loaded + '</span> of <span class="numTotal">' + imgUrls.length + '</span> loaded (<span class="percentLoaded">' + (loaded / imgUrls.length * 100).toFixed(0) + '%</span>) <span class="currentImg">' + nowloading + '</span></span>');
			}
			if (settings.statusBarEl) {
				var barWidth = jQuery(settings.statusBarEl).width();
				jQuery(settings.statusBarEl).css('background-position', -(barWidth - (barWidth * loaded / imgUrls.length).toFixed(0)) + 'px 50%');
			}
			loadImgs();
		}
	}
	
	function loadImgs(){
		//only load 1 image at the same time / most browsers can only handle 2 http requests, 1 should remain for user-interaction (Ajax, other images, normal page requests...)
		// otherwise set simultaneousCacheLoading to a higher number for simultaneous downloads
		if(imgUrls && imgUrls.length && imgUrls[loaded]){
			var img = new Image(); //new img obj
			img.src = imgUrls[loaded];	//set src either absolute or rel to css dir
			if(!img.complete){
				jQuery(img).bind('error load onreadystatechange', onImgComplete);
			} else {
				onImgComplete();
			}
			errorTimer = setTimeout(onImgComplete, settings.errorDelay); // handles 404-Errors in IE
		}
	}
	
	function parseCSS(sheets, urls) {
		var w3cImport = false,
			imported = [],
			importedSrc = [],
			baseURL;
		var sheetIndex = sheets.length;
		while(sheetIndex--){//loop through each stylesheet
			
			var cssPile = '';//create large string of all css rules in sheet
			
			if(urls && urls[sheetIndex]){
				baseURL = urls[sheetIndex];
			} else {
				var csshref = (sheets[sheetIndex].href) ? sheets[sheetIndex].href : 'window.location.href';
				var baseURLarr = csshref.split('/');//split href at / to make array
				baseURLarr.pop();//remove file path from baseURL array
				baseURL = baseURLarr.join('/');//create base url for the images in this sheet (css file's dir)
				if (baseURL) {
					baseURL += '/'; //tack on a / if needed
				}
			}
			if(sheets[sheetIndex].cssRules || sheets[sheetIndex].rules){
				thisSheetRules = (sheets[sheetIndex].cssRules) ? //->>> http://www.quirksmode.org/dom/w3c_css.html
					sheets[sheetIndex].cssRules : //w3
					sheets[sheetIndex].rules; //ie 
				var ruleIndex = thisSheetRules.length;
				while(ruleIndex--){
					if(thisSheetRules[ruleIndex].style && thisSheetRules[ruleIndex].style.cssText){
						var text = thisSheetRules[ruleIndex].style.cssText;
						if(text.toLowerCase().indexOf('url') != -1){ // only add rules to the string if you can assume, to find an image, speed improvement
							cssPile += text; // thisSheetRules[ruleIndex].style.cssText instead of thisSheetRules[ruleIndex].cssText is a huge speed improvement
						}
					} else if(thisSheetRules[ruleIndex].styleSheet) {
						imported.push(thisSheetRules[ruleIndex].styleSheet);
						w3cImport = true;
					}
					
				}
			}
			//parse cssPile for image urls
			var tmpImage = cssPile.match(/[^\("]+\.(gif|jpg|jpeg|png)/g);//reg ex to get a string of between a "(" and a ".filename" / '"' for opera-bugfix
			if(tmpImage){
				var i = tmpImage.length;
				while(i--){ // handle baseUrl here for multiple stylesheets in different folders bug
					var imgSrc = (tmpImage[i].charAt(0) == '/' || tmpImage[i].match('://')) ? // protocol-bug fixed
						tmpImage[i] : 
						baseURL + tmpImage[i];
					
					if(jQuery.inArray(imgSrc, imgUrls) == -1){
						imgUrls.push(imgSrc);
					}
				}
			}
			
			if(!w3cImport && sheets[sheetIndex].imports && sheets[sheetIndex].imports.length) {
				for(var iImport = 0, importLen = sheets[sheetIndex].imports.length; iImport < importLen; iImport++){
					var iHref = sheets[sheetIndex].imports[iImport].href;
					iHref = iHref.split('/');
					iHref.pop();
					iHref = iHref.join('/');
					if (iHref) {
						iHref += '/'; //tack on a / if needed
					}
					var iSrc = (iHref.charAt(0) == '/' || iHref.match('://')) ? // protocol-bug fixed
						iHref : 
						baseURL + iHref;
					
					importedSrc.push(iSrc);
					imported.push(sheets[sheetIndex].imports[iImport]);
				}
				
				
			}
		}//loop
		if(imported.length){
			parseCSS(imported, importedSrc);
			return false;
		}
		var downloads = settings.simultaneousCacheLoading;
		while( downloads--){
			setTimeout(loadImgs, downloads);
		}
	}
	parseCSS(document.styleSheets);
	return imgUrls;
};

