/*
 * jQuery preloadImages plugin
 * Version 0.1.1  (20/12/2007)
 * @requires jQuery v1.2.1+
 *
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * @name preloadImages
 * @type jQuery
 * @cat Plugins/Browser Tweaks
 * @author Blair McBride <blair@theunfocused.net>
*/

(function($) {
/**
*
* Queue up a list of images, and start preloading them.
* Works with multi-dimensional arrays.
*
* @example $.preloadImages(['1.jpg', '2.jpg', '3.jpg']);
* @example $.preloadImages(['1.jpg', '2.jpg', '3.jpg', ['4.jpg', '5.jpg']]);
*
* @param arr Any number of image URLs to preload, in an array.
*/
$.preloadImages = function(arr) {
	$.preloadImages.add(arr);

	queuedStop = false;
	startPreloading();
};




/**
* Add a list of images to the end of the preload queue.
* Does not start precoessing the queue, unlike $.preloadImages()
* Works with multi-dimensional arrays.
*
* @example $.preloadImages.add(['1.jpg', '2.jpg', '3.jpg']);
* @example $.preloadImages.add(['1.jpg', '2.jpg', '3.jpg', ['4.jpg', '5.jpg']]);
*
* @param arr Any number of image URLs to preload, either as individual arguments or in an array.
*/
$.preloadImages.add = function(arr) {
	if(typeof(arr) == 'string') {
		$.preloadImages.imageQueue.push(arr);
		return;
	}

	if(arr.length < 1) return;

	for(var i = 0, numimgs = arr.length; i < numimgs; i++) {
		if(typeof(arr[i]) == 'string')
			$.preloadImages.imageQueue.push(arr[i]);
		else if(typeof(arr[i]) == 'object' && arr[i].length > 0)
			$.preloadImages.add(arr[i]);
	}
}

/**
* Prepend a list of images to the start of the preload queue.
* Does not start precoessing the queue, unlike $.preloadImages()
* Works with multi-dimensional arrays.
*
* @example $.preloadImages.add('1.jpg', '2.jpg', '3.jpg');
* @example $.preloadImages.add(['1.jpg', '2.jpg', '3.jpg'], ['4.jpg', '5.jpg']);
*
* @param Any number of image URLs to preload, either as individual arguments or in an array.
*/
$.preloadImages.prepend = function() {
	if(typeof(arr) == 'string') {
		$.preloadImages.imageQueue.unshift(arr);
		return;
	}

	if(arr.length < 1) return;

	for(var i = numargs - 1; i >= 0; i--) {
		if(typeof(arr[i]) == 'string')
			$.preloadImages.imageQueue.unshift(arr[i]);
		else if(typeof(arr[i]) == 'object' && arr[i].length > 0)
			$.preloadImages.prepend(arr[i]);
	}
}

/**
* Clear the preload queue.
*/
$.preloadImages.clear = function() {
	$.preloadImages.imageQueue = [];	
}

/**
* Stop processing the preload queue. Does not clear the queue, so precessing can be started off from where it was stopped.
*/
$.preloadImages.stop = function() {
	queuedStop = true;
}

/**
* Start processing the preload queue.
*/
$.preloadImages.start = function() {
	queuedStop = false;
	startPreloading();
}

/**
* The preload queue, for direct manupilation of the queue.
* Items at the start of the queue will be processed first.
* This needs to be kept single-dimensional.
*/
$.preloadImages.imageQueue = [];



/* PRIVATE */
var isPreloading = false;
var queuedStop = false;

function startPreloading() {
	if(isPreloading)
		return;

	$(document.createElement('img')).bind('load', function() {
		if(queuedStop) {
			queuedStop = isPreloading = false;
			return;
		}
		isPreloading = true;
		if($.preloadImages.imageQueue.length > 0) {
			this.src = $.preloadImages.imageQueue.shift();
		} else
			isPreloading = false;
	}).trigger('load');
}


})(jQuery);
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:2,interval:200,timeout:200};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);

$(document).ready(function() {
	$.preloadImages(['/assets/images/homepage/homepage-education.jpg', '/assets/images/homepage/homepage-entertainment.jpg', '/assets/images/homepage/homepage-government.jpg','/assets/images/homepage/homepage-office.jpg','/assets/images/homepage/homepage-city-service-bus.jpg','/assets/images/homepage/homepage-demand-response.jpg','/assets/images/homepage/homepage-rail.jpg','/assets/images/homepage/homepage-motorcoach.jpg']);

	$("#business-slider #architectural .submarkets ul li:first").addClass("first");
	$("#business-slider #architectural .submarkets ul li:last").addClass("last");
	$("#business-slider #transportation .submarkets ul li:first").addClass("first");
	$("#business-slider #transportation .submarkets ul li:last").addClass("last");
	var hold = false;
		
	$("#architectural").hoverIntent(
		function() {
			$("#business-slider #transportation .submarkets").hide();			
			$(this).css("width", "640px");
			$("#business-slider #transportation").hide("slide", {direction: "right"}, 500,
				function() {
					if(hold) {clearTimeout();}
					$("#business-slider #architectural .submarkets").slideDown(500,
						function(){ 
							hold = setTimeout(function() {
							$('#business-slider #architectural ul li a').hover(function() {
								$('#business-slider #architectural').css('background-image','url(/assets/images/homepage/homepage-'+ $(this).attr("id") +'.jpg)');
							}, function() {
								$('#business-slider #architectural').css('background-image','url(/assets/images/homepage/homepage-arch.jpg)');
							});
						}, 500);
					}
					);
				}
			);
		},
		function() {
			$("#business-slider #architectural .submarkets").slideUp(
				function() {
					$("#business-slider #transportation").show("slide", {direction: "right"}, 500);
				}
			);
		}
	);

	$("#business-slider #transportation").hoverIntent(
		function() {
			$("#business-slider #architectural .submarkets").hide();
			$(this).animate({width: "640px",left: 0}, 
				function() {
					if(hold) {clearTimeout();}
					$("#business-slider #transportation .submarkets").slideDown(500, 
						function(){ 
						hold = setTimeout(function() {
							$('#business-slider #transportation ul li a').hover(function() {
								$('#business-slider #transportation').css('background-image','url(/assets/images/homepage/homepage-'+ $(this).attr("id") +'.jpg)');
							}, function() {
								$('#business-slider #transportation').css('background-image','url(/assets/images/homepage/homepage-trans.jpg)');
							});
						}, 500);
					}
					);
				}
			);
		},
		function() {
			$("#business-slider #transportation .submarkets").slideUp(
				function() {
					$("#business-slider #transportation").animate({width: "320px",left: "320px"});
				}
			);
		}
	);
});