(function($){   
 $.fn.flutter = function(opts) { 
	var defaults = {  
	imageBase:'/assets/butterfly',
	imageCount:6,
	flyInterval:90,
	flapInterval:60,
	minJump:2,
	maxJump:7
	}; 
	var o = $.extend(defaults, opts); 
	return this.each(function(idx) {		
		var selfref=$(this).css('display','none');		
		var holder=$('<div />');
		selfref.append(holder)
		var frameNumber = 0;
		var direction = 1;
		var active=true;
		var flapIntervalID=null;
		var flyIntervalID=null;
		var directionIntervalID = null;
		var diffx=1;
		var diffy=1;
		for (var i = 0; i < o.imageCount; i++){
			holder.append('<img src="'+o.imageBase+(i+1)+'.png" class="image'+i+'" />');
		}
		var images=$('img',selfref);
		
		
		selfref.die=function(){
			clearInterval(flyIntervalID);
			clearInterval(directionIntervalID);
			clearInterval(flapIntervalID);
			selfref.remove();
		}
		
		selfref.flap =function(){
			if(frameNumber > o.imageCount-2){
				direction = -1;
				}else if(frameNumber < 1){
					direction = 1
				}				
			frameNumber += direction;			
			images.css('display','none');				
			if(active){
				images[frameNumber].style.display='';
			}	
		}
		
		selfref.fly = function(){		
			var ScreenEdge = $('body').offset();
			var ScreenWidth = $('body').width();
			var pos= selfref.offset();
			selfref.css({'top': (pos.top-diffy)+'px', 'left':(pos.left+diffx)+'px' });
			if(pos.top < ScreenEdge.top || pos.left > ScreenWidth){
				active=false;
				selfref.die();
			}
		}
		
		selfref.beFree = function(){
			selfref.css('display','');
			var FlyFree=Math.floor((60*Math.random())-30 + o.flyInterval);
			directionIntervalID=setInterval(selfref.changeDirection, 1500);			
			flyIntervalID=setInterval(selfref.fly, FlyFree); 		  
			flapIntervalID=setInterval(selfref.flap, o.flapInterval);
		}
		
		selfref.changeDirection=function(){
			var range = o.maxJump - o.minJump;
			diffx = Math.floor(range*Math.random())+o.minJump;
			diffy = Math.floor(range*Math.random())+o.minJump;
			var theta=Math.atan(diffx/diffy);	
			if($.browser.msie){
				var costheta = Math.cos(theta);
				var sintheta = Math.sin(theta);
				var filterStyle="progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11="+costheta+", M12=-"+sintheta+", M21="+sintheta+", M22="+costheta+")"
				selfref.css({'filter':filterStyle,'zoom':'1'})
			}else{
				var deg=(theta*360)/(Math.PI*2);
				holder.css({
					'-moz-transform':'rotate('+deg+'deg)',
					'-o-transform':'rotate('+deg+'deg)',
					'-webkit-transform':'rotate('+deg+'deg)',
					'-ms-transform':'rotate('+deg+'deg)',
					'transform':'rotate('+deg+'deg)'
				})
			}
		}
		selfref.changeDirection();
		var delay=Math.floor(Math.random()*1700)+60*2*(idx+1);
		setTimeout(selfref.beFree,delay);		
    });
 };   
})(jQuery);

function makeButterflies(){
		if($('.butterfly').length==0){
			var butterflyHolder=$('<div style="margin-top:-60px;" />')
			$('body').append(butterflyHolder)
		butterflyHolder.append('<div class="butterfly" id="butterfly1" style="left:300px; position:absolute" ></div><div class="butterfly" id="butterfly2" style="left:100px; position:absolute" ></div><div class="butterfly" id="butterfly3" style="left:200px; position:absolute" ></div><div class="butterfly" id="butterfly4" style="left:150px; position:absolute" ></div><div class="butterfly" id="butterfly5" style="left:400px; position:absolute" ></div>')
		$('.butterfly').flutter();
	}
}

$(document).ready(function(){
	setTimeout(makeButterflies, 500);	
})
