// Keep everything in anonymous function, called on window load.
if(window.addEventListener) {
window.addEventListener('load', function () {
  var canvas, context, canvaso, contexto;

  // Variables de herramientas.
  var tool;
  var flagRejilla = true;
  var undoHistory = new Array();//Matriz que guarda imagenes para el deshacer
  var redoHistory = new Array();//Matriz que guarda imagenes para el rehacer
  var tool_default = 'pencil';
  var imagenFondo =  "data:image/png;base64,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 9z+WHsdeB6iLUwAAAABJRU5ErkJggg== ";
  rellenoR = 244;
  rellenoG = 237;
  rellenoB = 200;
  var fin = 'round';
  var grid = 20;//Tamaño de rejilla
  var colorFondo = '#f3f0e7';//color de fondo y del borrador
  var radioPuntos = 1.5;//radio de círculos en punteado
  var densidad = 5;//factor que marca la distancia entre puntos respecto al grosor del punto en punteado2 y pincelPluma
  var espaciado = densidad * 5;//separación entre pinceladas en pincel compuesto
  var pincel = 10;//radio del area donde se dibujan los puntos en pincel aleatorio y del borrador
  var anchopluma = 2;//en pincel pluma el ancho en el que hay trazos
  var grosorpluma = 1;//Grosor de los trazos en pincel pluma
  var canvasWidth;
  var canvasHeight;
 var cir_3px_sin = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAFZJREFU GJWNkFEKwDAIQ1/KTtfcd9dzH7XQDTsa8EMM8SkRwSzAQGR5nSkNAEgS0LO9Yxm+jH9qkpxJpTRk Kp6Kux3tTXmybhIF+PiY6wvO5j0leHXgA0MzY7PnNfzfAAAAAElFTkSuQmCC "
 var cir_4px_sin = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAE5JREFU GJWNkEsKwFAIA2feubw/eCq7sdCPpS+QVQZMpKo4DSRQ7bxlDzAaTiCumQ38aqmpxheghppMfabe a+tu61V8Grg/Zio+Dtx9+AG9HXKZXgI35AAAAABJRU5ErkJggg== "
 var cir_5px_sin = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAEdJREFU GJWVkFEKACAIQx+ez+t7nvVTIVlggj/bZHNIQhKAAzrWN5+EBkQSBWCJxxcwxf7A6vXDpea55TY+ pm3de6ZdT7fwAabkfn9iz+3mAAAAAElFTkSuQmCC "
 var cir_6px_sin = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAEZJREFU GJWVkFEKACAIQx99dsvO66HWj0SkggkiuMnmkIQkAAP0tB38Iq6EuC4cc9L0acUuXhcq0U/me/BR beneM+14uoFvi4aA5WGdJEwAAAAASUVORK5CYII= "
 var cir_7px_sin = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAGlJREFU GJWN0NsJwzAMheHPoQ/dpKN0Eg/VUTqKJ2neTl9sSLADEQghoct/JAlU5MJrElsppaJhN9uO1nsE P3x6zKpWenFMv/HqecMXz7F+4llxbwuupT2uwA8CT6dviRnvOYFPAu8+/A9LH0hBQWduCgAAAABJ RU5ErkJggg== "
  var triangulo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAQCAYAAAAvf+5AAAAABHNCSVQICAgIfAhkiAAAAKNJREFU KJGN0LENg0AQRNG/IHICeiCjBqeuhJhGiOmCDNfhzD04wLGFNE4OtAeH7ZVGOt28aEwS/szsCiDp FhWStgAF8Agpom4HO0AhXRICFTA7OANVCg4OrRkiCDTAkoAL0Hg4Aq+TjJKw/Txnl/2lgMzMLr/Q au5A7jfbbZsHg4D2C2yDQcATKBOoDN0GBfQJ2Lt+e7yB2qE6/B2ggMnByXcf2QLQMzDzTScAAAAA SUVORK5CYII= "
  var triangulo_20 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAmCAYAAADEO7urAAAABHNCSVQICAgIfAhkiAAAAVBJREFU SInt1K1uAkEUhuH3kDQhGBRuEySqCaI1CHwvAENSi8dhuAU8usFwAVQjUBUVvQGSuioMadKGnIrO NLQM87drmnaST+zMOU8muzsjqkpoiMgNgKreB2tDoIhcAE/m8VJV370NquoNMAbUZBysD2AtYHcE 7oBWGXB+hNnMs0CgCxwc4AHo5oBrB2azTgKBgQezGUSBQB3YRoBboB4DTiMwm6kXBApgnwDugcIH LhIwm4UTBHoZmE3POl9nWUTugGvyxoOq3kLE5ZA6apVqvwMUkauqMGttQpdmbIANfP5HwwqwobFQ 4BlolMAaxlD7UQpgUuL1TYyB3aECr0A7Y3dt02udb2dymQEufxgnB72fgPUd/ScTj0AtAquZ2iCo wCgCHJ3pdU6+AE0P1jQ10aACMw848/SdXXgDOg6sY9aSQQVWDnDl6/m/sf8C+AGAi5AGoUzTuwAA AABJRU5ErkJggg== "
  var triangulo_40 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABACAYAAABoWTVaAAAABHNCSVQICAgIfAhkiAAAAxJJREFU aIHtmr9PFEEUxz/vwGgCCVdoQWi4QsgVQkfoCA3E0BFKQksIVFBhCQ3VBf8OQiliQ2voRAuiFloo JmKhiUaUH89iZ+Oxd8fOzszuNnyTl9ztvXnvk7c7uzNvT1SVUBKRxwCq+jxYzFCAInIHeGO+PlLV 8xBxKyGCGK0Aw8ZWQgUNUkEReQC8B/rMoR/AQ1U99Y0dqoKb/IfDfN4MEllVvQwYBS4BTdglMOob P0QFn9L+TFTMb37yrN4crZVL2pxPDudJIiL3gGNgMMX1I1BX1TOXPD6neI10OIzPmmsSpwqKyADw FuixHPILGFbVz1lzuVZwC3s4jO+WUyaHiTEOXJE+OZJ2BYxnzpcRToBDB7jYDjGXVV6ACx5wsS3k Agj0AicBAE+A3jyeJE+A/gz+ndRvYtnJsno14Az/6sV2BtSCnWJgNyBcbLtBAIHJHOBim/QCBLqA oxwBj4AuH8ClHOFiW3ICBKrAaQGAp0DVBXC7ALjYtjMBAnXgvEDAc6I1ozXgfoFwse1bAQIzJcDF NpPk6aZVU8CLNseL0BTwrPlAsNZHXgrZ+shFt4C+ugX01S2gryoiMlQ2RCeJyFAFaJQNcoMaED0D p232B0UaMA2oGMBjYERVL0qrVZNEpBt4DdTjSVIHlstDatEyERNxBQG+E3Xmv5VFBSAi94neGFTh +m2mCmyUAZXQBgYuVvOC8YLoWixrYowYhmamllXtQYmAB2142i69Z0uAm23H0jxJmvWBaJf1x/eC spGI3CW61dWSv3V6FteA1TyhElqlDRxcv80k9RMYUtUveVEBiEg/8I6oQdqim1Yzvbh25rNpiw5w sW7ap14BYzlOjDHS3xikbqZfkrEzbwknJnZafqsd/3wOgPOWua2cPgE9AeF6TMzU3LZL/gFg3dLX RusmppVsGzu/gcEA1Rs0sWzzZuo+7QQA3MmYM5OzAhMecBMO+TIPeAVUHOAqZmzugAosOgAuOuZy GvQV6MsA12fGFAaoQCMDYMMjj/PAv0T/Q0iDGza+hQMqsGcBuOeT4x9j5Oaai6NJLgAAAABJRU5E rkJggg== "
  var elipse = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAJZJREFU OI3NlcENgDAIRR/GPdzABdyhIziPi7mAid4dxOClB6O1Um0TSbiU8BLgQ1FVjg7MgBp9vuQHgD2w GWAb0D8CPdQBSwS2AC6UKx4QNBHpgBZo/NMKTKo63ubEgG+sykoDBBgwlBKFnFpjanbC8GxySJCX TbDWBcg+lOIlfx5Kdtn8f1PqWPDNcch+vsofWD5+ATuG8a+mdnoINAAAAABJRU5ErkJggg== "
  var estrella = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAIFJREFU GJWNzzEKAlEMhOHvWVsJa2PjFay0EG/jIb2EYCHeQgRRUFjHZlfwsYKBQJgM+TMliX9qVAullNWg M8lX44Smm8eYJlFqdCnlggPOmGOd5NZfabDFDi8EDyx6Uv9j0HbLHtHi+SH9QO9xxQybJPehMEdM 6jBDxmWtDab+VW/DC26DHJtNZgAAAABJRU5ErkJggg== "
  var estrella_20 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAPdJREFU OI2t1LtKBDEUANCTRRRLKxu11wULKys7QbC00dbK37AXtBUEK0t/wC9REEWw2EYr38jGwlkcx8k8 1rlwISQ3h1wSEmKMuoxep1oTMIQw3ymIkxDCdJfgIg6bgmKMlYlbRGyVrC1j+9dcA/A6Ax+xgD72 cYkX9NuCVxkY8ZQbR+z9qU8gE1jHMV4LyCjPS/fmkEls4hQPCWSUd5gpA4u3PMRnllXxkaxJtNzD mu/n8p445VllyxWXMsghbwV09z/gALNYxQFu8IylccAhNkrWVrAzDnhUV9cGvMBUUzBkm5IRQpiL Md7XPKOf+jqwbXT+Y38BH8Ds21K6c7YAAAAASUVORK5CYII= "
  var estrella_40 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABHNCSVQICAgIfAhkiAAAAiZJREFU WIXtmDtoFFEUhr9/heAjSBpjYa8WIj5IJQk2xsZWBAMWghaSJoWFpSAmlYhWFimSRpNUVgqCCjY+ +6DGRxECCjZBxLjmWLiBmc3cnZ2555Ig/nCauef+++15wDAyMzazGhsNUKb/gLGKBpSU9E96mF92 8AjKA/C0pPMOPoXyAFwFbkna6+C1Tl6AO4B7knoc/HLyAgQ4DIw7+OXkCQgwJulkVQNJ+0Jn3oAC piT1dwF1RNKEpA/AQDDRzKICeApYWzwAVJB7CLgOvM/kTnf0dwB8XABowFjr/CBwDXhbkPMO6E0N +CgA+BOYD5ytnR8t8/eewax6gODwA1fM7E2pe0TleoEzwEfCVQpF4YxGtxjoA84B94EfNcAMWAL6 u/7NLqB2AReAh8BKTai1WAVOVCpKAGoPMAo8AZqRUNmYqDpKoSUx4Dfwi/AS1NHXyje6nLsRYA5Y Jq6CK8BAdIs7wG4FTgGTwJeakAvAziSAbbANYAj4VANyJjlgBvR5zUpejFmSKlLg+XfgW4d7NyUd KDNPCXgJ2A0MA3f4O7NZbQNmJW3v6O7Q4pesb9/dgrwtwHHgNrCYyZ1MPYOv2uA+A30ldwQcA260 8s+mBHydgWsCgzU89qdckqzGzexZ1UtmNh8681ySF8BVB7+cvACXgREzazr45eTV4lEzW3DyyskD cMbMph18CqXWFtU3kBpm5vlKlvePBUytf/8La2ptesA/dTPi5y51kRgAAAAASUVORK5CYII= "
  var cua_4_6 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAD1JREFU GJWtkDEOACAIA6/G/3+5LhLFwTDQCZKDFmSbkKTTALYV9aAo3Ru/IODXJgE7Ttm6HywfM9NUxx8X O5oWCc0mDvgAAAAASUVORK5CYII= "
  var ajedrez_10_10 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAASVJREFU OI3lVDFyxCAMBIFlGuae4B9cyU/ySr+ElP6Bn5ChwAELpQkZn61Ul+JmohkVq5EWgVYopRSfHQDI OZc7DiHEGGNgZsXMKufsiAg6PjqoP7Z/SGgBoF1OAWjHuNaamVl33FqD1prYjEXEIhEOw1A7NsYQ EZmOa61Dz7sQbtvmJMJjB/u+W2vt3vE4jp+IWMTbSW0/YzaE8H4Oaq3ZGEMpJV9KwWma1nVdp9vt 9lFKwZSSN8aQ1povtTHGcA4ysyYi471PiFiWZbnP8/y2LMsdEYv3PhGROQ7qWHxxIoKcs+s4xhhC CFF9r6JzLgMAKWltn3+1RxOn3FqDWuvgnNuUkqd8VsIPoaTDc6Kkw1IKioSSlpR6FO1vmyIRvv7n 8PqEXzA22aszfDLnAAAAAElFTkSuQmCC "
  var ajedrez_20_20 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABHNCSVQICAgIfAhkiAAAAFdJREFU WIXt18ENwAAMwkDo/jvTIZxKffgGQFZ+aZLl0LZe7j2XY18wkDKQMpAykDKQMpAykDKQMpDqdvqS pO3p4O8vaCBlIGUgZSBlIGUgZSBlIGUg9QJHyQhLIyBatgAAAABJRU5ErkJggg== "
  var ver_1_3 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAKCAYAAACT+/8OAAAABHNCSVQICAgIfAhkiAAAABpJREFU CJljZGBg+P///39GBihgYkADg0UAAJd8BBHF/SdNAAAAAElFTkSuQmCC "
  var ver_2_2 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAYAAACJxx+AAAAABHNCSVQICAgIfAhkiAAAACVJREFU GJVjZGBg+M/AwMDw//9/RgYGBgZGRkYUPhMDATCqAAIA1v0IEbe0EMsAAAAASUVORK5CYII= "
  var ver_3_1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAKCAYAAACT+/8OAAAABHNCSVQICAgIfAhkiAAAABpJREFU CJljZGBg+M8ABf///2dkYkADg0UAAH+MBBHdQgvAAAAAAElFTkSuQmCC "
  var ver_4_4 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAYAAACJxx+AAAAABHNCSVQICAgIfAhkiAAAAB1JREFU GJVjZGBg+M+ABP7//8+IzGdiIABGFUAAAPiyBBG50ohbAAAAAElFTkSuQmCC "
  var hor_1_3 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAECAYAAAC3OK7NAAAABHNCSVQICAgIfAhkiAAAABxJREFU CJljZGBg+M9ABGD8/58odQxMRKkiRSEAC8wEAwax3ZsAAAAASUVORK5CYII= "
  var hor_2_2 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAABHNCSVQICAgIfAhkiAAAACNJREFU GJVjZGBg+M9ABGAiRhEDAwMD4///RBlIgokMg9+NALQ3CAWV3oefAAAAAElFTkSuQmCC "
  var hor_3_1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAECAYAAAC3OK7NAAAABHNCSVQICAgIfAhkiAAAABxJREFU CJljZGBg+M9ABGAiRhFJChn//yfKZgYAFwUEA1IZ30sAAAAASUVORK5CYII= "
  var hor_4_4 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAABHNCSVQICAgIfAhkiAAAAB5JREFU GJVjZGBg+M9ABGAiRhFtFDL+/0+UEwfSjQAx5wQLEQYrtAAAAABJRU5ErkJggg== "
  
  function init () {
    // Localiza el elemento canvas.
    canvaso = document.getElementById('imageView');
    if (!canvaso) {
      alert('Error: ¡No puedo encontrar el elemento canvas!');
      return;
    }
   altoNuevo = canvaso.height;
   anchoNuevo = canvaso.width;
    if (!canvaso.getContext) {
      alert('Error: no canvas.getContext!');
      return;
    }

    // Toma el 2D canvas context.
    contexto = canvaso.getContext('2d');
    if (!contexto) {
      alert('Error: ¡Necesitas un navegador más moderno para poder ver esta aplicación!');
      return;
    }
	
    // Crea contexto para canvas que está encima de todo
	
    canvasTop = document.getElementById('imageTop');	
    contextTop = canvasTop.getContext('2d');
    if (!contextTop) {
      alert('Error: failed to getContext!');
      return;
    }	
	
	canvasWidth = canvaso.width;
	canvasHeight = canvaso.height;
	
	//Ponemos fondo color
	fondoColor();
	

    // Añade un canvas temporal.
    var container = canvaso.parentNode;
    canvas = document.createElement('canvas');
    if (!canvas) {
    alert('¡Error: No puedo crar un nuevo lienzo!');
    return;
    }
    canvas.id     = 'imageTemp';
    canvas.width  = canvaso.width;
    canvas.height = canvasHeight - 22;
	contTemp = document.getElementById('contenedor1');
    contTemp.appendChild(canvas);
    context = canvas.getContext('2d');



    // Activa la herramienta por defecto.
    if (tools[tool_default]) {
      tool = new tools[tool_default]();
    }
	//Pone por defecto el cursor lápiz
	$('canvas').css("cursor","url(imagenes/cursores/cursor_lapiz.png),auto");
	

    // Coloca mousedown, mousemove and mouseup event listeners.
    canvas.addEventListener('mousedown', ev_canvas, false);
    canvas.addEventListener('mousemove', ev_canvas, false);
    canvas.addEventListener('mouseup',  ev_canvas, false);
	canvas.addEventListener('dblclick',  ev_canvas, false);
	canvas.addEventListener('mouseout',  ev_canvas, false);
	canvaso.addEventListener('mouseup',  ev_canvas, false);
	
	//Eventos cuando se presiona una tecla
	window.onkeydown = function(evt) {
	evt = evt || window.event;
	if (evt.keyCode === 17) {
		keyControl = true;
		}
	}
	window.onkeyup = function(evt) {
	evt = evt || window.event;
		if (evt.keyCode === 17) {
			keyControl = false;
		}else if(evt.keyCode === 90 &&(keyControl)){//Deshace al presionar Ctrl + z
		undoDraw();
		}
	}
	//Evita seleccion azul
	document.onselectstart = function() {
	return false;
	}
	
	//si existe almacenada imagen de anterior trabajo en navegador la carga

	if (localStorage.dibujo_bodegon_texturas){
		if (confirm('¿Quieres recuperar el último trabajo que se hizo con esta aplicación?')) {
			localStorageImage = new Image();
			localStorageImage.addEventListener("load", function(event){
				localStorageImage.removeEventListener(event.type, arguments.callee, false);
				contexto.drawImage(localStorageImage,0,0);
				filtroByN(0);
			}, false);
			localStorageImage.src = localStorage.dibujo_bodegon_texturas;	
		}else{ponerFondo(imagenFondo);
		iniciarTex();
		;return}
	}else{ponerFondo(imagenFondo);
	iniciarTex();
	return}

	//Pone imagen por encima
	//ponerRejilla();
	function iniciarTex(){
			var img = new Image();
			var textFondo = '../texturas/cir_3px_sin.png';
			img.src =  cir_3px_sin;
			img.onload = function(){
			var ptrn = context.createPattern(img,'repeat');
			rellenoAlfa = ptrn;
			}
	}
}
	//Carga imagen para patrón y lo crea.
	$('.textura').click(function (){
		var img = new Image();
			var direccion = $(this).attr('id');
			var textFondo = $(this).css('backgroundImage');
			img.src =  eval(direccion);
			img.onload = function(){
			var ptrn = context.createPattern(img,'repeat');
			rellenoAlfa = ptrn;
		}
		$('#paleta3').css('backgroundImage', textFondo);
	})
	
	
	//Abre ventana para escribir texto en canvas
	$('#texto').click( function() {
		document.getElementById('text-controls').style.display = 'block';
		var textE1 = document.getElementById('text');
		//textE1.focus();
	})
	//Coloca texto al aceptar
	$('#botonTexto').click(function (){
		saveActions();
		contexto.save();
		contexto.fillStyle = colorFondo;
		contexto.fillRect(0,523, canvaso.width, 22);//rellena con color de fondo Si fuera una imagen habría que recargarla
		contexto.restore();
		titulo = document.getElementById('text').value;
		contexto.font = "12pt Verdana";
		contexto.fillStyle = "black";
		contexto.fillText(titulo, 20, 540);
		saveLocalStorage();
		document.getElementById('text-controls').style.display = 'none';
	})
	//Cierra ventana de colocar texto
	$('#botonTexCan').click(function (){document.getElementById('text-controls').style.display = 'none'});
	
	// Controlador de evento general. Esta función determina la
	// posicion relativa del ratón respecto al elemento canvas.Da las coordenadas del raton dentro del canvas
	function ev_canvas (ev) {
		if (ev.layerX || ev.layerX == 0) { // Firefox
		  ev._x = Math.round(ev.layerX / canvasScale);//multiplicamos por canvasScale para conpensar zoom
		  ev._y = Math.round(ev.layerY / canvasScale);
		} else if (ev.offsetX || ev.offsetX == 0) { // Opera
		  ev._x = Math.round(ev.offsetX / canvasScale);
		  ev._y = Math.round(ev.offsetY / canvasScale);
		}

		// Llama al manejador del evento de la herramienta
		var func = tool[ev.type];
		if (func) {
		  func(ev);
		}
	}

	// Esta función dibuja #imageTemp canvas encima de #imageView, después
	// #imageTemp se limpia. Esto se realiza cada vez que el usuario
	// completa unaa operación de dibujo.
	function img_update () {
  		saveActions();//Guarda copia de la imagen
		contexto.drawImage(canvas, 0, 0);//copia imagen temporal en definitiva
		context.clearRect(0, 0, canvas.width, canvas.height);//Limpia la imagen temporal
		ponerRejilla();
		redoHistory = [];
		saveLocalStorage();

	}
	//Function guarda imagen en array para poder deshacer
	function saveActions() {
		var imgData = document.getElementById("imageView").toDataURL("image/png");
		undoHistory.push(imgData);//guarda imagen en matriz deshacer
	}
	//Guarda imagen en el cache del navegador
	function saveLocalStorage(){
		var imgData = document.getElementById("imageView").toDataURL("image/png");
		localStorage.dibujo_bodegon_texturas = imgData;//guarda imagen en el cache del navegador
	}
	
	//Función pone fondo de color
	function fondoColor(){
	contexto.save();
	contexto.fillStyle = colorFondo;
	contexto.fillRect(0,0, canvaso.width, canvaso.height);
	contexto.restore();
	}
	
	//Funcion deshacer
	function undoDraw(){
		if(undoHistory.length > 0){
		var imgData = document.getElementById("imageView").toDataURL("image/png");
		redoHistory.push(imgData);//Guarda la imagen actual en array rehacer
        var undoImg = new Image();
			undoImg.onload = function(){//funcion para que le de tiempo a cargar la imagen
			contexto.drawImage(undoImg, 0,0);//copia imagen rescatada en canvas
			var imgData = document.getElementById("imageView").toDataURL("image/png");
			localStorage.dibujo_bodegon_punto = imgData;//guarda imagen en el cache del navegador
			};
			undoImg.src = undoHistory.pop();//saca ultima imagen guardada en el array y la guarda en undoImg
        } else if(undoHistory.length == 0){
		return
		}		
	}
	
	function redoDraw(){
		if(redoHistory.length > 0){
		saveActions();
        var redoImg = new Image();
			redoImg.onload = function(){//funcion para que le de tiempo a cargar la imagen
			contexto.drawImage(redoImg, 0,0);//copia imagen rescatada en canvas
			var imgData = document.getElementById("imageView").toDataURL("image/png");
			localStorage.dibujo_bodegon_punto = imgData;//guarda imagen en el cache del navegador
			};
			redoImg.src = redoHistory.pop();//saca ultima imagen guardada en el array y la guarda en redoImg
		}
	}
	
	
	//Pone una imagen como fondo
	function ponerFondo (imagenUrl){
		var img = new Image();
		img.src = imagenUrl;
		img.onload = function(){
		contexto.drawImage(img,0,0,750,523,0,0,750,523);
		}
	}
	//Pone imagen de línea negra por encima para mantenerla siempre
	function ponerRejilla(){
		var imgTop = new Image();
		imgTop.src = imagenFondo;
		imgTop.onload = function(){
		contexto.drawImage(imgTop,0,0,750,523,0,0,750,523);
		}
	}
	//Control del boton limpiar
    $('#reset').click(function() {
        if (confirm('Se reiniciará el ejercicio y se perderá la imagen actual. ¿Estás seguro?')) {
		//canvaso.width = canvaso.width;
		undoHistory.length = 0;//vacia array con estados anteriores
		redoHistory.length = 0;
		contexto.save();
		contexto.fillStyle = colorFondo;
		contexto.fillRect(0,0, canvaso.width, canvaso.height);//rellena con color de fondo Si fuera una imagen habría que recargarla
		contexto.restore();
		ponerFondo(imagenFondo);
        }
    })

	//controlamos el boton guardar imagen
	$('#guardar').click (function() {
	var imgData = document.getElementById("imageView").toDataURL("image/png");
			var ventana = window.open('','imagenGenerada', "toolbar=no,location=no,status=no,menubar=no,resizable=yes,scrollbars=1");
			ventana.document.write('<html><head><title>Imaxe Xerada</title><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><link rel="stylesheet" type="text/css" href="css/dibujo_00.css" /> ');
			ventana.document.write('</head>');
			ventana.document.write('<body style="background-color:#F4EDC8">');
			ventana.document.write('<div  style="position:absolute; top:40px; left:50%; margin-left: -375px;  width:750px; height:545px; box-shadow: -2px 2px 10px 1px #999;"><div style="position:relative"></div><div><img src="');
			ventana.document.write(imgData);
			ventana.document.write('"width="750" height="545">');
			ventana.document.write('</div><br><div style="border-width:1;border-color:#901420;border-style:dashed;border-radius:15px; margin-top: 50px;margin-left: 150px; margin-right: 150px; margin-bottom: 20px; padding-left:20px; padding-right:20px; font-family:Verdana;font-size:16px;background-color:#f3f0e7;text-align:center">');
			ventana.document.write('<br><br>Para gardar a imaxe fai clic sobre ela co botón dereito. No menú que aparece selecciona: "Gardar imaxe como..."');
			ventana.document.write('<br><br><button onclick="window.close();" class="botonVentana">Cerrar Ventana</button><br><br></div><br><br></div></body>');
			ventana.document.close();
	//window.open(document.getElementById("imageView").toDataURL("image/png"),'Canvas Export','height=450,width=625');
	})
	
	//Controla boton para poner o quitar la rejilla
	$('#rejilla').click (function(){
		if(flagRejilla == false){
			ponerRejilla();
			flagRejilla = true;
		}else{
			contextTop.clearRect(0,0,750,545);
			flagRejilla = false;
		}
	})

	// tools Contiene la implementacion de cada herramienta
	var tools = {};
	//Controles para saber que botón se ha seleccionado
	$('#lapiz').click(function (){
	tool = new tools['pencil']();
	$('canvas').css("cursor","url(imagenes/cursores/cursor_lapiz.png),auto");
	})
	$('#cubo_pintura').click (function (){
	tool = new tools['cubo_pintura']();
	$('canvas').css("cursor","url(imagenes/cursores/cursor_cubo.png),auto");
	})
	$('#rectangulo').click (function (){
	tool = new tools['rect']();
	$('canvas').css("cursor","crosshair");
	})
	$('#borrar').click(function (){
	tool = new tools['borrador']();
	$('canvas').css("cursor","url(imagenes/cursores/cursor_goma.png),auto");	
	})
	$('#circulo').click(function (){
	tool = new tools['circle']();
	$('canvas').css("cursor","crosshair");
	})
	$('#linea').click(function (){
	tool = new tools['linea']();
	$('canvas').css("cursor","url(imagenes/cursores/cursor_lapiz.png),auto");
	})
	$('#poly').click(function (){
	tool = new tools['poly']();
	$('canvas').css("cursor","url(imagenes/cursores/cursor_lapiz.png),auto");
	})
	$('#punteado3').click(function (){
	tool = new tools['punteado3']();
	$('canvas').css("cursor","url(imagenes/cursores/cursor_lapiz.png),auto");	
	})
	$('#colorPicker').click(function (){
	tool = new tools['cuentagotas']();
	$('canvas').css("cursor","url(imagenes/cursores/cursor_cuenta.png),auto");	
	})
	$('#deshacer').click (function() {
	undoDraw();
	})
	$('#rehacer').click (function() {
	redoDraw();
	})
	
    // Coloca una imagen encima
	function ponerImg(urlImg) {
	var img = new Image();
	img.src = urlImg;
		img.onload = function(){
		context = canvas.getContext('2d');
		context.drawImage(img,0,0,canvasWidth,canvasHeight);
		img_update();
		}
	}
	// Lapiz dibujo libre.
	tools.pencil = function () {
		var tool = this;
		this.started = false;

		// This is called when you start holding down the mouse button.
		// This starts the pencil drawing.
		this.mousedown = function (ev) {
			context.lineWidth = fileteAnc;
			context.lineJoin = "round";		
			context.lineCap = fin;
			context.strokeStyle = rellenoAlfa;
			//context.strokeStyle = fileteCol;
			context.beginPath();
			context.moveTo(ev._x, ev._y);
			tool.started = true;
		};

		// This function is called every time you move the mouse. Obviously, it only
		// draws if the tool.started state is set to true (when you are holding down
		// the mouse button).
		this.mousemove = function (ev) {
		  if (tool.started) {
			context.lineTo(ev._x, ev._y);
			context.stroke();
		  }
		};

		// This is called when you release the mouse button.
		this.mouseup = function (ev) {
			if (tool.started) {
			tool.mousemove(ev);
			tool.started = false;
			img_update();
			}
		};
	};

    // Cuentagotas
	tools.cuentagotas = function () {
    var tool = this;
		this.mousedown = function (ev) {
		  pixelColor = contexto.getImageData( ev._x,ev._y,1,1);
		  rellenoR = pixelColor.data[0];
		  rellenoG = pixelColor.data[1];
		  rellenoB = pixelColor.data[2];
		  alfaColor();
		  $('#paleta').css('backgroundColor', relleno);
		};

	};

	//Borrador. Si hubiera imagen de fondo habría que copiarla primero cada vez que se hace imgUpdate
	//o colocarla en otro canvas por debajo
	tools.borrador = function () {
    var tool = this;
    this.started = false;

	saveActions();

		this.mousedown = function (ev) {
		  context.lineWidth = 1;
		  pincel = fileteAnc*3;
		  context.strokeStyle = 'black';
		  contexto.fillStyle = 'white';
		  tool.started = true;
		};

		this.mousemove = function (ev) {
		  if (tool.started) {
		  context.clearRect(0, 0, canvas.width, canvas.height);
		  context.strokeRect( ev._x-pincel/2, ev._y-pincel/2, pincel, pincel);
		  // contexto.clearRect( ev._x-pincel/2, ev._y-pincel/2, pincel, pincel);//elimina fondo
		  contexto.fillRect( ev._x-pincel/2, ev._y-pincel/2, pincel, pincel);//pinta con color de fondo
		  }
		};

		this.mouseup = function (ev) {
		  if (tool.started) {
			tool.mousemove(ev);
			tool.started = false;
			context.clearRect(0, 0, canvas.width, canvas.height);
			img_update ();
			saveActions();
		  }
		};

	};

		//Cubo Pintura
		tools.cubo_pintura = function () {
		var tool = this;
		this.started = false;

			this.mousedown = function (ev) {
			curColor = { r:rellenoR, g:rellenoG, b:rellenoB};//toma color seleccionado en rgb
			saveActions();
			colorLayerData = contexto.getImageData(0, 0, canvasWidth, canvasHeight);//copia canvas a colorLayerData
			paintAt(ev._x, ev._y);
			saveLocalStorage();
			};
			floodFill = function (startX, startY, startR, startG, startB) {


					var newPos,
						x,
						y,
						pixelPos,
						reachLeft,
						reachRight,
						drawingBoundLeft = 0,
						drawingBoundTop = 0,
						drawingBoundRight = canvasWidth,
						drawingBoundBottom = canvasHeight-22;
						pixelStack = [[startX, startY]];

					while (pixelStack.length) {

						newPos = pixelStack.pop();
						x = newPos[0];
						y = newPos[1];

						// Get current pixel position
						pixelPos = (y * canvasWidth + x) * 4;

						// Go up as long as the color matches and are inside the canvas
						while (y >= drawingBoundTop && matchStartColor(pixelPos, startR, startG, startB)) {
							y -= 1;
							pixelPos -= canvasWidth * 4;
						}

						pixelPos += canvasWidth * 4;
						y += 1;
						reachLeft = false;
						reachRight = false;

						// Go down as long as the color matches and in inside the canvas
						while (y <= drawingBoundBottom && matchStartColor(pixelPos, startR, startG, startB)) {
							y += 1;

							colorPixel(pixelPos, curColor.r, curColor.g, curColor.b);

							if (x > drawingBoundLeft) {
								if (matchStartColor(pixelPos - 4, startR, startG, startB)) {
									if (!reachLeft) {
										// Add pixel to stack
										pixelStack.push([x - 1, y]);
										reachLeft = true;
									}
								} else if (reachLeft) {
									reachLeft = false;
								}
							}

							if (x < drawingBoundRight) {
								if (matchStartColor(pixelPos + 4, startR, startG, startB)) {
									if (!reachRight) {
										// Add pixel to stack
										pixelStack.push([x + 1, y]);
										reachRight = true;
									}
								} else if (reachRight) {
									reachRight = false;
								}
							}

							pixelPos += canvasWidth * 4;
						}
					}

				},


			clearCanvas = function () {
			contexto.clearRect(0, 0,canvasWidth, canvasHeight);
			}

			matchStartColor = function (pixelPos, startR, startG, startB) {

				r = colorLayerData.data[pixelPos];
				g = colorLayerData.data[pixelPos + 1];
				b = colorLayerData.data[pixelPos + 2];

				// If the current pixel matches the clicked color
				if (r === startR && g === startG && b === startB) {
					return true;
				}

				// If current pixel matches the new color
				if (r === curColor.r && g === curColor.g && b === curColor.b) {
					return false;
				}
				// If current pixel has different colour
				return false;
			}

			colorPixel = function (pixelPos, r, g, b, a) {

				colorLayerData.data[pixelPos] = r;
				colorLayerData.data[pixelPos + 1] = g;
				colorLayerData.data[pixelPos + 2] = b;
				colorLayerData.data[pixelPos + 3] = a !== undefined ? a : 255;
			};
			paintAt = function (startX, startY) {

				var pixelPos = (startY * canvasWidth + startX) * 4,
					r = colorLayerData.data[pixelPos],
					g = colorLayerData.data[pixelPos + 1],
					b = colorLayerData.data[pixelPos + 2],
					a = colorLayerData.data[pixelPos + 3];

				if (r === curColor.r && g === curColor.g && b === curColor.b) {
					// Return because trying to fill with the same color
					return;
				};

				floodFill(startX, startY, r, g, b);
				contexto.putImageData(colorLayerData, 0, 0);
			}
		}; //fin cubo pintura
	
		//Aumenta de tamaño el escritorio
		document.getElementById('zoom_in').onclick = function() {
			if (canvasScale > 2) {
				return;	
			}
			canvasScale = canvasScale * scaleFactor;
			altoNuevo = Math.round(altoNuevo* scaleFactor);
			anchoNuevo = Math.round( anchoNuevo* scaleFactor);
			$('#imageView').css('height',altoNuevo);
			$('#imageView').css('width',anchoNuevo);
			$('.lienzo').css('height',altoNuevo);
			$('.lienzo').css('width',anchoNuevo);
			$('#imageTemp').css('height',altoNuevo-(22*canvasScale));
			$('#imageTemp').css('width',anchoNuevo);
			$('#imageTop').css('height',altoNuevo);
			$('#imageTop').css('width',anchoNuevo);
			objeto = document.getElementById('herram');
			objeto.style.height = altoNuevo +'px';
		}
	
		//Disminuye de tamaño el escritorio
		document.getElementById('zoom_out').onclick = function() {
			if (canvasScale < 0.9) {
				return;	
			}
			canvasScale = canvasScale / scaleFactor;
			altoNuevo = Math.round(altoNuevo * (1 / scaleFactor));
			anchoNuevo = Math.round(anchoNuevo * (1 / scaleFactor));
			$('#imageView').css('height',altoNuevo);
			$('#imageView').css('width',anchoNuevo);
			$('.lienzo').css('height',altoNuevo);
			$('.lienzo').css('width',anchoNuevo);
			$('#imageTemp').css('height',altoNuevo-(22 * canvasScale));
			$('#imageTemp').css('width',anchoNuevo);
			$('#imageTop').css('height',altoNuevo);
			$('#imageTop').css('width',anchoNuevo);
			objeto = document.getElementById('herram');
			objeto.style.height = altoNuevo +'px';
		}
	
		//Transforma imagen importada a blanco y negro
		function filtroByN(flag){
		canvasData = contexto.getImageData(0, 0, canvasWidth, canvasHeight);
		pixel = canvasData.data;
			for (var x = 0; x < canvasWidth; x++) {
				for (var y = 0; y < canvasHeight; y++) {

					var idx = (x + y * canvasWidth) * 4;

					var r = pixel[idx + 0];
					var g = pixel[idx + 1];
					var b = pixel[idx + 2];
					var a = pixel[idx + 3];
					//var v = 0.2126*r + 0.7152*g + 0.0722*b;//filtro a grises
					
					
					var v = (r+g+b)/3;
					if (v <= 80){
					pixel[idx + 0] = 0;
					pixel[idx + 1] = 0;
					pixel[idx + 2] = 0;
					}else{
					pixel[idx + 0] = 255;
					pixel[idx + 1] = 255;
					pixel[idx + 2] = 255;
					pixel[idx + 3] = 0;
					}
				}
			}
			contextTop.putImageData(canvasData, 0, 0);
			imagenFondo = canvasTop.toDataURL("image/png");
			if(flag == 1){
			fondoColor();
			ponerFondo(imagenFondo);
			img_update ();
			}else{
			return;
			}
		}
	
	
		//Importa imagen desde archivo y la coloca como fondo del canvas fabric
		formEl = document.forms[0],
		fileEl = formEl.elements[0],

		formEl.onsubmit = fileEl.onchange = uploadHandler;
//
		function uploadHandler() {
		uploadFile(fileEl.files && fileEl.files[0]);
		return false;
		}		
		$('#subirArc').click(function(){fileEl.click()});
		
		//Sube archivo de imagen desde el ordenador
		function uploadFile(file) {
			if (file && file.type && file.type.match(/^image\/.*/)) {
				var fileReader = new FileReader();
				fileReader.onload = function(e) {
					var dataURL = e.target.result;
					var newImg = new Image();
					newImg.onload = ajustar;
					newImg.src = dataURL;
					contexto.clearRect(0, 0, canvas.width, canvas.height);	
					function ajustar(){
						
						alto = newImg.height;
						ancho = newImg.width;
						altoCanvas =canvaso.height-22;
						if(ancho/alto >= canvaso.width/altoCanvas){
							yCoor = Math.floor((altoCanvas-canvaso.width*alto/ancho)/2);
							altoPNG = Math.floor(canvaso.width*alto/ancho);
							contexto.drawImage(newImg,0,yCoor,canvaso.width,altoPNG);
							filtroByN(1);
							return
						}else{
							xCoor = Math.floor((canvaso.width-altoCanvas*ancho/alto)/2);
							anchoPNG = Math.floor(altoCanvas*ancho/alto);
							contexto.drawImage(newImg,xCoor,0,anchoPNG,altoCanvas);
							filtroByN(1);
						}
					}
				}
			fileReader.readAsDataURL(file);
			}return
		}

	init();

}, false); }
