/*!
 * Image Rotator Plugin
 * Version 1.0.0
 * Dependencies:
 * - requires jQuery
 *
 * Copyright © 2011 David Young & Cape Fear Webmasters, Inc.
 * http://www.cfwebmasters.com/
 * http://dcyoung.com/
 * Released under the GNU GPL Version 2 license.
 * 
 *************** Usage ****************************************
 *
 * var data={
 *	 images:['/images/image1.jpg','/images/image2.jpg'],
 *	 width:'1680px',
 *	 height:'550px',
 *	 transition:'fade',
 *	 transitionTime:1000,
 *	 easing:'none',
 * 	 delay:7000
 * }
 * jQuery('#MyContainerElement').cfwiImageRotator(data)
 *
 **************************************************************
 */
if(typeof(jQuery)!=='undefined'&&window.jQuery){
	(function($){
		jQuery.fn.cfwiImageRotator=function(data){
			var ri=this;
			var $target=ri.append('<div />').find('> div:eq(0)');
			this.each(function(){
				var m_params={},index=0,m_interval=null,m_animation=null,m_offset=(screen.availWidth - ri.innerWidth(true))/2;
				var m_animationdefaults={
					'fade':{'opacity':1},
					'slideLeft':{'left':'auto'},
					'slideRight':{'left':'auto'},
					'slideUp':{'top':'auto'},
					'slideDown':{'top':'auto'}
				};
				var m_defaults={images:[],width:'1680px',height:'550px',transition:'fade',transitionTime:1000,easing:'none',delay:7000}
				var $collection=null,$phldr=jQuery('<div />');
				var m_timer=function($old,$img){
					if(m_interval !== null){ clearInterval(m_interval); }
					var $prev=($old!==null && $old.length > 0)?$old:null;
					var $current=$img;
					var $next=($current.data().Path===$collection.last().data().Path)?$collection.first():$current.next();
					if($prev!==null){$target.css($.extend({'background-image':'url('+$prev.attr("src")+')'},m_animationdefaults[m_params.transition]));}
					if(!$current.data().Loaded){
						m_load($current,$next);
					}else{
						ri.css({'background-image':'url('+$current.attr("src")+')'})
						$target.animate(m_animation[m_params.transition],m_params.transitionTime,function(){
							m_interval=setInterval(function(){m_timer($current,$next)},m_params.delay);
						});
					}
				}
				var m_load=function($img,$next){
					$img.attr('src',$img.data().Path).load(function(){
						if(this.complete || this.naturalWidth !=='undefined'){
							$img.data($.extend({},$img.data(),{'Loaded':true}));
							ri.css({'background-image':'url('+$img.attr("src")+')'});
							$target.animate(m_animation[m_params.transition],m_params.transitionTime,function(){
								m_interval=setInterval(function(){m_timer($img,$next)},m_params.delay);
							});
						}
					});
				};
				if(typeof(data)==='object'&&data!==null){ $.extend(m_params,m_defaults,data); }
				m_animation={
					'fade':{'opacity':0},
					'slideLeft':{'left':'-'+m_params.width},
					'slideRight':{'left':+m_params.width},
					'slideUp':{'top':'-'+m_params.height},
					'slideDown':{'top':+m_params.height}
				};
				if($.isArray(m_params.images) && m_params.images.length > 0){
					$.each(m_params.images,function(i,value){
						$phldr.eq(0).append('<img />').find('img:eq('+i+')').data({'Loaded':false,'Path':value}).attr('src','');
					})
				}
				$collection=$phldr.find('img');
				m_timer(null,$collection.first());
			});

			return ri;
		}
	})(jQuery);
}
