// remap jQuery to $
(function($){
		  
/*jQuery Timer*/
jQuery.fn.extend({everyTime:function(interval,label,fn,times){return this.each(function(){jQuery.timer.add(this,interval,label,fn,times);});},oneTime:function(interval,label,fn){return this.each(function(){jQuery.timer.add(this,interval,label,fn,1);});},stopTime:function(label,fn){return this.each(function(){jQuery.timer.remove(this,label,fn);});}});jQuery.extend({timer:{global:[],guid:1,dataKey:"jQuery.timer",regex:/^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,powers:{'ms':1,'cs':10,'ds':100,'s':1000,'das':10000,'hs':100000,'ks':1000000},timeParse:function(value){if(value==undefined||value==null)return null;var result=this.regex.exec(jQuery.trim(value.toString()));if(result[2]){var num=parseFloat(result[1]);var mult=this.powers[result[2]]||1;return num*mult;}else{return value;}},add:function(element,interval,label,fn,times){var counter=0;if(jQuery.isFunction(label)){if(!times)times=fn;fn=label;label=interval;}interval=jQuery.timer.timeParse(interval);if(typeof interval!='number'||isNaN(interval)||interval<0)return;if(typeof times!='number'||isNaN(times)||times<0)times=0;times=times||0;var timers=jQuery.data(element,this.dataKey)||jQuery.data(element,this.dataKey,{});if(!timers[label])timers[label]={};fn.timerID=fn.timerID||this.guid++;var handler=function(){if((++counter>times&&times!==0)||fn.call(element,counter)===false)jQuery.timer.remove(element,label,fn);};handler.timerID=fn.timerID;if(!timers[label][fn.timerID])timers[label][fn.timerID]=window.setInterval(handler,interval);this.global.push(element);},remove:function(element,label,fn){var timers=jQuery.data(element,this.dataKey),ret;if(timers){if(!label){for(label in timers)this.remove(element,label,fn);}else if(timers[label]){if(fn){if(fn.timerID){window.clearInterval(timers[label][fn.timerID]);delete timers[label][fn.timerID];}}else{for(var fn in timers[label]){window.clearInterval(timers[label][fn]);delete timers[label][fn];}}for(ret in timers[label])break;if(!ret){ret=null;delete timers[label];}}for(ret in timers)break;if(!ret)jQuery.removeData(element,this.dataKey);}}}});jQuery(window).bind("unload",function(){jQuery.each(jQuery.timer.global,function(index,item){jQuery.timer.remove(item);});});
/*end Timer*/


(function($) {
	$.fn.customFadeIn = function(speed, callback) {
		$(this).fadeIn(speed, function() {
			if(jQuery.browser.msie)
				$(this).get(0).style.removeAttribute('filter');
			if(callback != undefined)
				callback();
		});
	};
	$.fn.customFadeOut = function(speed, callback) {
		$(this).fadeOut(speed, function() {
			if(jQuery.browser.msie)
				$(this).get(0).style.removeAttribute('filter');
			if(callback != undefined)
				callback();
		});
	};
})(jQuery);

	$.fn.acImgFader = function(){
		/*	
			div passed containing simple <ul>
			Each <li> has a chronolgical class 
			of homeSlideX containing an image
		*/

		
		//	---- 1.0 Variables - declaring vars for plugin ---- \\
		
		//	setting the current slide as 1
		var currentSlide = 0;
		//	number of items
		var slideCount = this.find("li").size();
		//	time delay
		var slideDelay = 5 * 1000; //8s
		//	grab master class
		var masterClass = this.attr("class");
	
		
		//	---- 2. 0 Initiation - setting up the slides ---- \\
		var initialHeight = this.find("li:first-child").children("img").height();
		this.find("li:first-child").css({display:"block"});
		this.find("ul").height(initialHeight);

		//	---- 3.0 Mechanics - the moving parts and events ---- \\
		
		function changeSlide() {
			$("."+masterClass).find("li:eq(" + currentSlide + ")").customFadeOut("slow", function(){
				currentSlide++;
				if (currentSlide >= (slideCount)) {
					currentSlide = 0;
				}
				$("."+masterClass).find("li:eq(" + currentSlide + ")").customFadeIn("slow");
			});
		}
		
		//	---- 4.0 Timing - the timing functions for automatic sliding ---- \\

		/*	starts the timer & fires off the nextSlide after
			the specified delay (see 1. 0 Variables above */
		function timerStart (){
			$(this).everyTime(slideDelay, function(){
				changeSlide();
			});
		}
		
		//	stops the timer
		function timerStop (){
			$(this).stopTime();
		}


		//	kick it off. Crank the engine. Make it so
		timerStart();

	}


	$.fn.acSameHeight = function(){
		var maxH = 0; 	//	the current highest element
		$(this).each(function(){
			/*	loop through and compare the height of the
				current element with maxH and update when
				current height > maxH	*/
			if ($(this).height() > maxH) {
				maxH = $(this).height();
			};
		});
		return this.each(function(){
			/*	when maxH is determined, loop through the
				elements and make each one the same height	*/
			$(this).css({height:maxH});
		});
	}


})(this.jQuery);
