/* * *
 * jFlow and Timer - Significantly modified by Dusty 10.21.09

// Dependencies:   jQuery

// Implementation:

<script src="js/jquery.flow.js" type="text/javascript"></script><? 

<script>
$(document).ready(function(){

	//jFlow init
	$("#dummy").jFlow({
		slides: "#jFlowContainer",
		//controller: ".jFlowControl", // must be class, use . sign
		//slideWrapper : "#jFlowSlide", // must be id, use # sign
		//selectedWrapper: "jFlowSelected",  // just pure text, no sign
		width: "900px",
		height: "199px",
		duration: 2000,
		prev: ".jFlowPrev", // must be class, use . sign
		next: ".jFlowNext" // must be class, use . sign
	});

	//if you want it on a timer too
	$.timer(10000, function (timer) {
			$.nextTimer();
			timer.reset(10000);
	});

   	
});
</script>

// Body 

<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="50" height="199"><img class="jFlowPrev" src="images/flowLeft.jpg" width="50" height="199"></td>
<td  width="900" height="199"><div id="jFlowContainer">
    <div><img src="images/flowSlide1.jpg" width="900" height="199"></div>
    <div><img src="images/flowSlide2.jpg" width="900" height="199"></div>
    <div><img src="images/flowSlide3.jpg" width="900" height="199"></div>
    </div></td>
<td width="50" height="199"><img class="jFlowNext" src="images/flowRight.jpg" width="50" height="199"></td>
</tr>
</table> 









 */




/*------------------------------------------------------
TIMER
-------------------------------------------------------*/
jQuery.timer = function (interval, callback){
	
	var interval = interval || 100;

	if (!callback)
		return false;

	_timer = function (interval, callback) {
		this.stop = function () {
			clearInterval(self.id);
		};
		
		this.internalCallback = function () {
			callback(self);
		};
		
		this.reset = function (val) {
			if (self.id)
				clearInterval(self.id);
			
			var val = val || 100;
			this.id = setInterval(this.internalCallback, val);
		};
		
		this.interval = interval;
		this.id = setInterval(this.internalCallback, this.interval);
		
		var self = this;
	};
	
	return new _timer(interval, callback);
 };

/*------------------------------------------------------
jFlow
-------------------------------------------------------*/
 
(function($) {

	$.fn.jFlow = function(options) {
		var opts = $.extend({}, $.fn.jFlow.defaults, options);
		var randNum = Math.floor(Math.random()*11);
		var jFC = opts.controller;
		var jFS =  opts.slideWrapper;
		var jSel = opts.selectedWrapper;

		var isPrevNextClicked = false;
		var cur = 0;
		var maxi = 3;
		// sliding function
		var slide = function (dur, i) {
			$(opts.slides).children().css({
				overflow:"hidden"
			});
			$(opts.slides + " iframe").hide().addClass("temp_hide");
			$(opts.slides).animate({
				marginLeft: "-" + (i * $(opts.slides).find(":first-child").width() + "px")}, 
				opts.duration*(dur),
				opts.easing,
				function(){
					$(opts.slides).children().css({
						overflow:"auto"
					});
					$(".temp_hide").show();
				}
			);
			
		}
		
		
		$(opts.slides).before('<div id="'+jFS.substring(1, jFS.length)+'"></div>').appendTo(jFS);
		
		$(opts.slides).find("div").each(function(){
			$(this).before('<div class="jFlowSlideContainer"></div>').appendTo($(this).prev());
		});
		

		
		var resize = function (x){
			$(jFS).css({
				position:"relative",
				width: opts.width,
				height: opts.height,
				overflow: "hidden"
			});
			//opts.slides or #mySlides container
			$(opts.slides).css({
				position:"relative",
				width: $(jFS).width()*4+"px",
				height: $(jFS).height()+"px",
				overflow: "hidden"
			});
			
			// jFlowSlideContainer
			$(opts.slides).children().css({
				position:"relative",
				width: $(jFS).width()+"px",
				height: $(jFS).height()+"px",
				"float":"left",
				overflow:"auto"
			});
			
			$(opts.slides).css({
				marginLeft: "-" + (cur * $(opts.slides).find(":eq(0)").width() + "px")
			});
		}
		
		// sets initial size
		resize();

		// resets size
		$(window).resize(function(){
			resize();						  
		});
		
		$(opts.prev).click(function(){
			isPrevNextClicked = true;
			if ($(opts.slides).is(":not(:animated)")) {
				var dur = 1;
				if (cur > 0)
					cur--;
				else {
					cur = maxi -1;
					dur = cur;
				}
				slide(dur, cur);
			}
		});
		
		$(opts.next).click(function(){
			isPrevNextClicked = true;
			if ($(opts.slides).is(":not(:animated)")) {
				var dur = 1;
				if (cur < maxi - 1)
					cur++;
				else {
					cur = 0;
					dur = maxi -1;
				}
				
				slide(dur, cur);
		
			}
		});

		jQuery.nextTimer = function (){
				if ($(opts.slides).is(":not(:animated)")) {
					var dur = 1;
					if (cur < maxi - 1)
						cur++;
					else {
						cur = 0;
						dur = maxi -1;
					}
					if(!isPrevNextClicked){
						slide(dur, cur);
					}			
				}
			}
	};
	

	$.fn.jFlow.defaults = {
		//controller: ".jFlowControl", // must be class, use . sign
		slideWrapper : "#jFlowSlide", // must be id, use # sign
		//selectedWrapper: "jFlowSelected",  // just pure text, no sign
		easing: "swing",
		duration: 400,
		width: "100%",
		prev: ".jFlowPrev", // must be class, use . sign
		next: ".jFlowNext" // must be class, use . sign
	};
})(jQuery);
