include('canvas/canvastext.js');  
include('canvas/gradient.js');

var start, font, fontsize, text, max, canvas, ctx, timer, xpos, cols, startcolour, endcolour;

function draw_favicon()
{
  canvas = document.getElementById('demo');
  if (!canvas.getContext) return;
  ctx = canvas.getContext('2d');

  // this adds the text functions to the ctx
  CanvasTextFunctions.enable(ctx);

  font = "sans";
  fontsize = (canvas.height - 2);
  text = "proxymoron";
  start = Math.ceil(ctx.measureText(font,fontsize, 'p')) + 20;
  max = Math.ceil(ctx.measureText(font,fontsize,text));
  steps = max + start - 1;
  if(steps % 2 != 0)
  {
	  steps++;
	  start++;
  }
  
  xpos = start;

  keep_scrolling();
  setInterval(keep_scrolling, 4000);  
}

function draw_text()
{
	ctx.clearRect(0,0,canvas.width,canvas.height);
	ctx.fillStyle = hex2rgb(cols.shift());
	ctx.fillRect(0,0,canvas.width,canvas.height);

	var y = ctx.fontAscent(font,fontsize);
	ctx.strokeStyle = "rgba(0,0,0,0.75)";
	ctx.drawText( font, fontsize, xpos, ( (y/2) + (canvas.height * 0.2) ), text);
	change_favicon();
	xpos--;
//	$('debug').innerHTML = "Start: " + start + "<br/>End: " + (-max) + "<br/>Current: " + xpos + "<br/>";
	if(xpos <= (-max))
	{
		clearInterval(timer);
		xpos = start;
		timer = null;
	}
}

function keep_scrolling()
{
	if(!timer || timer == null)
	{
		var gradient_obj_1 = new gradient('#ffcc00', '#b6e600', (steps / 2));
		var gradient_obj_2 = new gradient('#b6e600', '#ffcc00', (steps / 2));
		cols = gradient_obj_1.cols.concat(gradient_obj_2.cols);

		timer = setInterval(draw_text, 20);
	}
}

function change_favicon()
{
	var	icon=$('favicon');
	(newIcon = icon.cloneNode(true)).setAttribute('href',ctx.canvas.toDataURL());
	icon.parentNode.replaceChild(newIcon,icon);
}

function get_random_colour()
{
	var r1 = dec2hex(Math.random()*255);
	var g1 = dec2hex(Math.random()*255);
	var b1 = dec2hex(Math.random()*255);

	return "#" + r1 + g1 + b1;
}