(function($){
	$.fn.pixelPerfect = function(){
		$('body').wrapInner('<div id="pixelPerfect"><div id="pp-globalWrap">');					
		$('#pp-globalWrap').before('<div id="pp-controller">' +
							'	<div id="pp-gui">' +
							'		<div id="pp-display"></div>' +
							'		<div id="pp-dial"><a href="#"></a></div>' +
							'	</div>' +
							'</div>' +
							'<div id="pp-overlay"></div>');
		
		var ppDisp = $("#pp-display");
		var easeMe = "easeInOutQuart";
		var optsSpeed = 500;
		optsOpen = false;
		$("#pp-options-tab a").click(function(){
			if(optsOpen == false){
				ppOpts.stop().animate({left:[50,easeMe]},optsSpeed);
				optsOpen = true;
			}else{
				ppOpts.stop().animate({left:[-200,easeMe]},optsSpeed);
				optsOpen = false;
			}
		});
		
		$("#pp-dial").slider({
			orientation: "vertical",
			range: "min",
			min: 0,
			max: 100,
			value: 75,
			slide: function(event, ui){
				ppDisp.html(ui.value);
			}
		});
		ppDisp.html($("#pp-dial").slider("value"));
		$("#pp-globalWrap").css("opacity", (($("#pp-dial").slider("value")) / 100).toFixed(2));
		
		$(document).mouseup(function(event){
			var newOpac = (($("#pp-dial").slider("value")) / 100).toFixed(2);
			var targets = $(event.target).parents().andSelf();
			if(!targets.is("#pp-dial a")){
				$("#pp-globalWrap").stop().animate({
					opacity: newOpac
				}, 500);
			}else{
				$("#pp-globalWrap").stop().animate({
					opacity: newOpac
				}, 500);
			}
		});
	};
})(jQuery);
