//Global variables
var xpos; //Starting mouse position
var ox; //Original X position (left CSS property)
var slide=-1; //Current sliding color
//HTML elements
var redCursor=document.getElementById('redCursor');
var greenCursor=document.getElementById('greenCursor');
var blueCursor=document.getElementById('blueCursor');
var colors=['red','green','blue'];

var values=[0,0,0];//RGB values

//Konami stuff
var konami = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65];
var keyHistory = new Array(konami.length);

//Cookie get
if(document.cookie){
	var cookies = document.cookie.split(';'), cookie;
	for(var i=0,c=cookies.length;i<c;i++)
		if(cookies[i].substr(0, cookies[i].indexOf('=')).replace(/^\s+|\s+$/, '')=='color'){
			values=cookies[i].substr(cookies[i].indexOf('=')+1).split('¤');
			document.body.style.backgroundColor='rgb('+values[0]+','+values[1]+','+values[2]+')';
			for(var j=0;j<3;j++)
				document.getElementById(colors[j]+'Cursor').style.left=values[j]+'px';
			break;
		}
}

//Adding event listeners for mousedown's
redCursor.addEventListener('mousedown', function(event){
whateverMousedown(event, 0);
}, false);
greenCursor.addEventListener('mousedown', function(event){
whateverMousedown(event, 1);
}, false);
blueCursor.addEventListener('mousedown', function(event){
whateverMousedown(event, 2);
}, false);

//Unique function managing mousedown's
function whateverMousedown(event, color){
	slide=color;
	ox = parseInt(document.getElementById(colors[slide]+'Cursor').style.left||0);
	xpos=event.clientX;
}

//The mousemove eventListener, that makes the sliders slide :)
document.addEventListener('mousemove', function(event){
	if(slide<0)
		return;
	var left = ox +event.clientX - xpos;
	left = left<0?0:left;
	left = left>255?255:left;
	values[slide]=left;
	document.getElementById(colors[slide]+'Cursor').style.left=left+'px';
	document.body.style.backgroundColor='rgb('+values[0]+','+values[1]+','+values[2]+')';
	//document.getElementById('message').innerHTML=slide;
},false);

//Makes it so that you end up letting go of the sliders...
document.addEventListener('mouseup', function(){
	slide=-1;
	var exDate = new Date();
	exDate.setDate(exDate.getDate()+30);
	//...and writes down your color choice
	document.cookie='color='+values.join('¤')+';expires='+exDate.toUTCString(); 
}, false);

//Makes the song loop (FF doesn't like the loop attribute in the audio tag...)
document.getElementById('tune').addEventListener('ended', function(){
	this.currentTime=0;
}, false);

//Konami code, thanks to Alex Leclair @ zloche.net
document.addEventListener('keyup', function(e) {
	var key = e.which;
	var doKonami = true;
	for(var i=0; i<konami.length-1; ++i)
	{
		if(konami[i] != keyHistory[i+1])  //Not the same keys, therefore the code is not good!
			doKonami = false;
		keyHistory[i] = keyHistory[i+1]; //'eating' the next key
	}
	keyHistory[keyHistory.length-1] = key;
	doKonami = doKonami && keyHistory[keyHistory.length-1] == konami[konami.length-1];
	
	if(doKonami)
		document.getElementById('tune').paused?document.getElementById('tune').play():document.getElementById('tune').pause();
	
}, false);

