(function($){
	$.fn.eyeFollow = function(options){
	
		var settings = $.extend({
		   maxDistance:600
		}, options || {});
		
		this.each(function(){
			var eyeball = $(this);
			var pupil = $('div',eyeball);
			$().mousemove(function(e){
				var offset = pupil.offset();
		
				var mouseX = e.pageX;
				var mouseY = e.pageY;
				var eyeX = offset.left;
				var eyeY = offset.top;
				
				var centreX = eyeX + Math.round (parseInt(pupil.width()) / 2);
    			var centreY = eyeY + Math.round (parseInt(pupil.height()) / 2);
				var centre = (parseInt(eyeball.width()) - parseInt(pupil.width())) / 2;
				
				var difX = mouseX - centreX;
				var difY = mouseY - centreY;
				
				var dTan = Math.atan2 (difX, difY);
				var maxDist = settings.maxDistance;
				
				var dist = Math.sqrt ((difX * difX) + (difY * difY));
				dist = Math.sin ((dist > maxDist ? 1 : dist / maxDist));
		
				var newX = centre + Math.round (Math.sin (dTan) * centre * dist);
				var newY = centre + Math.round (Math.cos (dTan) * centre * dist);
				
				pupil.css({
					'margin-left':newX+'px',
					'margin-top':newY+'px'
				}); 
			});
		});
	};
})(jQuery);

(function($){
	var Modal = function(element, options){
		element = $(element);
		var obj = this;
		var settings = $.extend({
		   overlay:{
		   		id: 'modal-no-click-bg',
				color: '#000',
				opacity: '0.4'
			},
			close:{
				className: 'close'
			},
			onOpen:function(){},
			onClose:function(){}
		}, options || {});

		this.init = function(){
			if($('#'+settings.overlay.id).length < 1){	
				$('body').prepend('<div id="'+settings.overlay.id+'">&nbsp;</div>');
				$('#'+settings.overlay.id).hide();
				$('#'+settings.overlay.id).css({
					"position":"fixed",
					"background-color":settings.overlay.color,
					"width":'100%',
					"height":'100%',
					"top":"0px",
					"left":"0px",
					"z-index":"3000",
					"filter":"alpha(Opacity = "+settings.overlay.opacity * 100+")",
					"opacity":settings.overlay.opacity,
					"-moz-opacity":settings.overlay.opacity
				});
				
				if(jQuery.browser.msie && jQuery.browser.version.substr(0,1)=="6"){
					$('#'+settings.overlay.id).css({
						"position":"absolute",
						"width":$(window).width()+'px',
						"height":$(window).height()+'px'
					});
					
					$(window).scroll(function(){ 
						$('#'+settings.overlay.id).css({
							"top":$(window).scrollTop()+'px',
							"left":$(window).scrollLeft()+'px'							
						});
					});
					
					$(window).resize(function(){
						$('#'+settings.overlay.id).css({
							"width":$(window).width()+'px',
							"height":$(window).height()+'px'
						});
					});
				}
			}
			
			$('.'+settings.close.className, element).click(function(event){ 
				event.preventDefault();
				obj.close();
			});
		}

		this.toggle = function(){
			if(element.is(':hidden')){
				this.open();
			}else{
				this.close();
			}
		}

		this.open = function(){
			$('#'+settings.overlay.id).show();
			element.show();
			settings.onOpen();			   
		};

		this.close = function(){
			$('#'+settings.overlay.id).hide();
			element.hide();
			settings.onClose();
		}
	};

	$.fn.modal = function(options){
		this.each(function(){
			var element = $(this);
			
			if(element.data('modal')){
				return;
			}

			var modal = new Modal(this, options);
			
			modal.init();
			
			element.data('modal', modal);
		});
	};
})(jQuery);

(function ($) {
	$.fn.center = function() {
		return this.each(function(options){
			
			var height = $(this).height();
			var outerHeight = $(this).outerHeight();
			var elementHeight = height + (outerHeight - height);
			var windowHeight = $(window).height();
			var scrollTop = $(document).scrollTop()
			var top = (windowHeight / 2) - (elementHeight / 2);
			
			if(jQuery.browser.msie && jQuery.browser.version.substr(0,1)=="6"){
				var top = scrollTop + top;
			}
			
			var width = $(this).width();
			var outerWidth = $(this).outerWidth();	
			var elementWidth = width + (outerWidth - width);
			
			$(this).css("margin-left", "-" + elementWidth / 2 + "px");
			$(this).css("left", "50%");
			
			$(this).css("margin-top", "0px");	
			$(this).css("top", top+"px");
			
			$(this).css("position", "fixed");
			
			if(jQuery.browser.msie && jQuery.browser.version.substr(0,1)=="6"){
				$(this).css("position", "absolute");	
			}
		});	
	};
})(jQuery);