/*
* BOTROTATE
* - 
* VERSION 1.00
*
* REQUIRES
* - jquery 1.3.2 + 
* - jquery.easing.1.3.js (or other easing library)
* 
* Jay Richardson
* Werkbot Studios - www.werkbot.com
* 
* BROWSER TESTED 
	- FF 3.5.7
	- IE 6,7,8
*/

//CHANGELOG

//DEFAULT OPTIONS
	var br_options = new Array();
//
	var image_set_count = 0;
	var total_images = new Array();
	var br_prev = new Array();
	var br_current = new Array();
	var br_next = new Array();
	var timerinterval = new Array();
	var links_css = new Array();
/*
*
*/
$.fn.botrotate = function(opts) {
	//
		var id = "botrotate-"+image_set_count;
		$(this).attr("id", id);
	//
		var tmp = new Object();
	//SET OUR OPTIONS
		if(opts){
			//SET OUR TIME
				if(!opts.element){
					tmp.element = opts.element;
				}else{
					tmp.element =  opts.element;
				}
			//SET OUR TIME
				if(opts.ease_speed>=0){
					tmp.time = 1000*Number(opts.time);
				}else{
					tmp.time =  5000;
				}
			//	
				if(!opts.buttons){
					tmp.buttons = false;
				}else{
					tmp.buttons = opts.buttons;	
				}
			//	
				if(!opts.button_type){
					tmp.button_type = "LIST";
				}else{
					tmp.button_type = opts.button_type;	
				}
			//	
				if(!opts.transition){
					tmp.transition = "FADE";
				}else{
					tmp.transition = opts.transition;	
				}	
			//	
				if(!opts.ease_in){
					tmp.ease_in = "easeInQuad";
				}else{
					tmp.ease_in = opts.ease_in;	
				}		
			//	
				if(!opts.ease_out){
					tmp.ease_out = "easeOutQuad";
				}else{
					tmp.ease_out = opts.ease_out;	
				}	
			//
				if(opts.ease_speed>0 && opts.ease_speed!=undefined){
					tmp.ease_speed = 1000*Number(opts.ease_speed);
				}else{
					tmp.ease_speed =  5000;
				}
		}else{
			tmp.time =  5000;
			tmp.buttons = false;
			tmp.button_type = "LIST";
			tmp.transition = "FADE";
			tmp.ease_in = "easeInQuad";
			tmp.ease_out = "easeOutQuad";
			tmp.ease_speed =  1000;
		}
	//
		br_options[id] = tmp;
	//CREATE OUR ROTATION
		$(this).createRotate();
}	
/*
*	createRotate
*/
$.fn.createRotate = function(){
	//$(".botrotate").each( function() {
		//
			$(this).attr("class", "botrotate");
		//
			var id = "botrotate-"+image_set_count;
			total_images[id] = $(this).find(br_options[id].element).length;
		//SET OUR COUNTERS
			br_prev[id] = total_images[id]-1;
			br_current[id] = 0;
			br_next[id] = 1;
		//CREATE OUR BUTTON AREA
			if(br_options[id].buttons==true){
				var button_area = $("<div>").attr({
					'id': "botrotate_button_area-"+image_set_count,
					'class': "botrotate_button_area"
				});
				$(this).parent().append(button_area);
			//
				if(br_options[id].button_type=="NEXTPREV"){
					//CREATE A PREV BUTTON
						var button = $("<div>").attr({
							'id': "botrotate_button_prev",
							'class': "botrotate_button_prev"
						});
						//ADD OUR BUTTON CLICK EVENT
							button.click(function () {
								$(this).rotate(id, "LEFT", 1);
							});
							button_area.append(button);
					//CREATE A NEXT BUTTON
						var button = $("<div>").attr({
							'id': "botrotate_button_next",
							'class': "botrotate_button_next"
						});
						//ADD OUR BUTTON CLICK EVENT
							button.click(function () {
								$(this).rotate(id, "RIGHT", 1, false);
							});
							button_area.append(button);
				}else if(br_options[id].button_type=="LIST"){
					//CREATE A BUTTON FOR EACH IMAGE
						var count = 0;
						var first_flag = true;
						$(this).find(br_options[id].element).each( function() {
							if(first_flag){
								var button = $("<div>").attr({
									'id': "botrotate_button-"+image_set_count+"-"+count,
									'class': "botrotate_button-"+count+" botrotate_button selected"
								}).html(
									$(this).attr("title")
								);
								first_flag = false;
								$(this).attr("title", "")
							}else{
								var button = $("<div>").attr({
									'id': "botrotate_button-"+image_set_count+"-"+count,
									'class': "botrotate_button-"+count+" botrotate_button"
								}).html(
									$(this).attr("title")
								);
								$(this).attr("title", "")
							}
							count++;
							button.click(function () {
								var num = $(this).attr("id").split("-");
								//CHECK TO SEE IF WE ARE CLICKING ON THE CURRENT LIVE IMAGE/IF NOT THEN GO AHEAD AND ROTATE
									if(num[2]!=br_current[id]){
										$(this).rotate(id, "RIGHT", num[2], false);
									}
							});
							button_area.append(button);
						});
					}
				}
		//
			var image_count = 0;
			$(this).children(br_options[id].element).each( function() {
				//SET OUR IMAGE ID
					$(this).attr("id", id+"-"+image_count);
				//HIDE OUR IMAGE
					$(this).css({
						"position":"absolute",
						"display":"none"
					});
				//
					image_count++;
			});
		//SHOW THE FIRST IMAGE
			$(this).find(br_options[id].element+":first").
				css({
					"display": "block"						
				});
				//alert($(this).find(br_options[id].element+":first").attr("id"));
		//START OUR TIMER
			if(br_options[id].time>0){
				timerinterval[id] = setInterval("$(this).rotate('"+id+"', 'RIGHT', 0, true)", br_options[id].time);
			}
	//});
		image_set_count++;
}
/*
*	rotate
*/
$.fn.rotate = function(id, dir, button_click, timer){
	//
		var id_num = id.split("-");
	//SET OUR CURRENT IMAGE & LINKS
		var current_image = "#"+id+"-"+br_current[id];
	//IF NEXT_CLICK IS SET, WE NEED TO RESET OUR TIMER
		if(button_click>=0){
			if(br_options[id].time>0){
				clearInterval(timerinterval[id]);
				timerinterval[id] = setInterval("$(this).rotate('"+id+"', '"+dir+"', 0, '"+timer+"')", br_options[id].time);
			}
		}
	//CHECK TO SEE IF OUR BUTTON TYPE IS LIST - IF SO WE WILL SET THE NEXT AND PREV BUTTONS ACCORDINGLY, SINCE WE MAY NOT BE GOING IN A SEQUENCE
		if(br_options[id].button_type=="LIST" && timer==false){
			//DETERMINE WHICH WAY TO SLIDE
				if(button_click<br_current[id]){
					dir="LEFT";
				}else{
					dir="RIGHT";
				}
			//SET OUR PREV AND NEXT DETERMINED BY WHICH DIRECTION WE ARE GOING
				if(dir=="LEFT"){
					//
						if(button_click>0){
							br_prev[id] = button_click;
						}else{
							br_prev[id] = 0;
						}
						br_next[id] = button_click;
				}else{
					//
						if(button_click<total_images[id]-1){
							br_next[id] = Number(button_click);
						}else{
							br_next[id] = total_images[id]-1;
						}
						br_prev[id] = button_click;
				}
		}
	//
		if(dir=="LEFT"){
			//SET OUR NEXT IMAGE AND LINKS
				var next_image = "#"+id+"-"+br_prev[id];
			//SET OUR SELECTED CLASS FOR THE ACTIVE BUTTON
				if(br_options[id].button_type=="LIST"){
					$("#botrotate_button-"+id_num[1]+"-"+br_current[id]).removeClass("selected");
					$("#botrotate_button-"+id_num[1]+"-"+br_prev[id]).addClass("selected");
				}
		}else{
			//SET OUR NEXT IMAGE AND LINKS
				var next_image = "#"+id+"-"+br_next[id];
			//SET OUR SELECTED CLASS FOR THE ACTIVE BUTTON
				if(br_options[id].button_type=="LIST"){
					$("#botrotate_button-"+id_num[1]+"-"+br_current[id]).removeClass("selected");
					$("#botrotate_button-"+id_num[1]+"-"+br_next[id]).addClass("selected");
				}
		}
	//
		if(br_options[id].transition=="FADE"){
			//FADE OUR CURRENT IMAGE OUT
				$(current_image).fadeOut(br_options[id].ease_speed);
			//FADE IN OUR NEXT ELEMENT
				$(next_image).fadeIn(br_options[id].ease_speed);
		}else{
			if(dir=="LEFT"){
				//SLIDE OUR CURRENT IMAGE OUT OF THE FRAME
					$(current_image).animate({"left": "+="+$(next_image).width()+"px"}, br_options[id].ease_speed, br_options[id].ease_in, function(){$(this).css({"display":"none", "left":"-"+$(current_image).width()+"px"});} );
				//SLIDE IN OUR NEXT ELEMENT
					$(next_image).css({"display":"block", "left":"-"+$(next_image).width()+"px"});
					$(next_image).animate({"left": "+="+$(next_image).width()+"px"}, br_options[id].ease_speed, br_options[id].ease_out);
			}else{
				//SLIDE OUR CURRENT IMAGE OUT OF THE FRAME
					$(current_image).animate({"left": "-="+$(next_image).width()+"px"}, br_options[id].ease_speed, br_options[id].ease_in, function(){$(this).css({"display":"none", "left":"-"+$(current_image).width()+"px"});} );
				//SLIDE IN OUR NEXT ELEMENT
					$(next_image).css({"display":"block", "left": $(next_image).width()+"px"});
					$(next_image).animate({"left": "-="+$(next_image).width()+"px"}, br_options[id].ease_speed, br_options[id].ease_out);
			}
		}
	//DETERMINE OUR NEXT ELEMENT
		if(dir=="RIGHT"){	
			br_prev[id] = br_current[id];		
			br_current[id] = br_next[id];
			if(br_next[id]<total_images[id]-1){
				br_next[id]++;
			}else{
				br_next[id] = 0;
			}
		}else{
			br_next[id] = br_current[id];
			br_current[id] = br_prev[id];
			if(br_prev[id]>0){
				br_prev[id]--;
			}else{
				br_prev[id] = total_images[id]-1;	
			}
		}
}
