/*!
 * Madras
 * Author: Ernest Lombardi
 *
 * Required files:
 * madras.js
 * /css/madras.css
 *
 * Copyright (c) 2010 E.Lombardi: http://www.ernestlombardi.com/
 * Version: 1.0 (30-JAN-2010)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Requires: jQuery v1.3.x or later
 */

$(function(){

  Madras.initiate();

});

var Madras = {
	initiate: function(){
		var sliceStartX, sliceStartY, sliceEndX, sliceEndY, sliceTraceX, sliceTraceY, fillColor;		

		$("#canvas").mousedown(function(e){
			if(!$(this).hasClass("drawing")){
				$(this).addClass("drawing");
				
				$("#canvas.drawing").mousemove(function(e){
							       
					Madras.traceSlice(e);
				});			
				
				Madras.startSlice(e);
			}	
			return false;
		}).mouseup(function(e){
	
			Madras.comitSlice(e);
			       
		});
	},
	startSlice: function(e){
		sliceStartX = e.pageX - $("#canvas").offset().left;
		sliceStartY = e.pageY - $("#canvas").offset().top;
		
		fillColor = getRGB();
		
		$("<span class='slice activeSlice'></span>").css({"left":e.pageX , "top":e.pageY, "border" : "solid 1px " + fillColor}).appendTo($("section"));
		//$("<span class='slice activeSlice'></span>").css({"left":sliceStartX , "top":sliceStartY, "border" : "solid 1px " + fillColor}).appendTo($("#canvas").parent());
	},
	traceSlice: function(e){
		
		sliceTraceX = (e.pageX - $("#canvas").offset().left) - sliceStartX;
		sliceTraceY = (e.pageY - $("#canvas").offset().top) - sliceStartY;
		
		$(".activeSlice").css({"width": sliceTraceX - 3 , "height": sliceTraceY - 3 });
	},
	comitSlice: function(e){
	
		sliceEndX = e.pageX - $("#canvas").offset().left;
		sliceEndY = e.pageY - $("#canvas").offset().top;

		if(sliceEndX > sliceStartX && sliceEndY > sliceStartY){
			var ctx = document.getElementById("canvas").getContext("2d");	
			
			ctx.globalCompositeOperation = "source-over";
			ctx.globalAlpha = 0.5; 
			ctx.fillStyle = fillColor; 		
			ctx.fillRect(sliceStartX, sliceStartY, sliceEndX - sliceStartX, sliceEndY - sliceStartY);
		}
		
		$("#canvas.drawing").removeClass("drawing").unbind("mousemove");
		
		$(".activeSlice").remove();
	}
};

function getRGB(){
	
	var rgb = "rgb(" + Math.floor(Math.random() * 256) + ", " + Math.floor(Math.random() * 256) + ", " + Math.floor(Math.random() * 256) + ")";
	
	return rgb;
}


