//------------------------------
function updateReds(jsonList) {
	this.lastCheck = jsonList.time;
	//$('debug').update(lastCheck + ' ' + jsonList.time);
	for (var i=1; i <= 50; i++) {
		if (jsonList['reds'+i]) {
			var element = $('reds'+i);
	  	updateRed(element,jsonList['reds'+i]);
	  	//new Effect.Morph(element,{ style:'background: ' + jsonList['reds'+i] + ';', duration:0.8})
		}
	}
	windowTimeout = window.setTimeout(checkUpdated, 1000);
	
}
//------------------------------
function updateRed(element, colour) {
			if (!RGBequals(RGBtoRGB(element.style.backgroundColor), RGBtoRGB(colour))) { 
	  		new Effect.Morph(element,{ style:'background: ' + colour + ';', duration:0.8})
			}
}
//------------------------------
function checkUpdated() {
	new Ajax.Request('getValues.php?time='+this.lastCheck, 
		{ method:'get',
	  onSuccess: function(transport){
	      //$('copyright').update(transport.responseText);
	      updateReds((transport.responseText).evalJSON(true));
	    }
	 	});	
}				
//------------------------------
function showColourPicker(redsCell) {
	this.cell = redsCell;
	var colourRGB = RGBtoRGB(redsCell.style.backgroundColor);
	var colourHSV = rgbToHsv(colourRGB.r,colourRGB.g,colourRGB.b);
	$('colourPickerBox').style.display = "block";

	setPickerCirclePos(colourHSV.s,colourHSV.v/255);
	$('chooserDetails').style.backgroundColor = redsCell.style.backgroundColor
	
	Event.observe( $('commitChanges'),'mouseup',function(e){commitColour(redsCell);});

	Event.observe( $('colourPicker'),'mousedown',function(e){
		chooseColour(e);
		Event.observe( document,'mousemove',chooseColour);	
	});
	Event.observe( document,'mouseup',function(){
		Event.stopObserving( document,'mousemove',chooseColour);
	});
}
//------------------------------
function hideColourPicker(redsCell) {
	$('colourPickerBox').style.display = "none";
	Event.stopObserving( $('colourPicker'),'mousedown');
	Event.stopObserving( document,'mouseup');
}
//------------------------------
function commitColour (e) {
	hideColourPicker();
	//updateRed(this.cell,hsvToRgb(0,this.satuation , this.value * 255));
	new Ajax.Request('setValues.php?s=' + this.satuation + '&v=' + this.value + '&cell=' + this.cell.id, 
		{ method:'get'
/*			,onSuccess: function(transport){
	      $('copyright').update(transport.responseText);
	    }	
*/
		});	
}

//------------------------------

function chooseColour (e) {
		var mouse = Event.pointer(e);
		var chooser = $('colourPicker');
		var chooserBox = $('colourPickerBox');
		var S;
		var V;
		var chooserX = mouse.x - chooser.offsetLeft  - chooserBox.offsetLeft;
		var chooserXmin = chooser.offsetWidth * 30/100;
		var chooserXmax = chooser.offsetWidth;
		var chooserYmin = chooser.offsetHeight * 30/100;
		var chooserYmax = chooser.offsetHeight;
		var chooserY = chooser.offsetHeight - (mouse.y - chooser.offsetTop - chooserBox.offsetTop);
		if (chooserX < chooserXmin ) {
			chooserX = chooserXmin;
		} else if (chooserX > chooserXmax) {
			chooserX = chooserXmax;
		}
		if (chooserY < chooserYmin) {
			chooserY = chooserYmin;
		} else if (chooserY > chooserYmax) {
			chooserY = chooserYmax;
		}
		S = chooserX / chooser.offsetWidth;
		V = chooserY / chooser.offsetHeight;
		setPickerCirclePos(S,V);
		setPcikerBoxColor(S,V);
}
//------------------------------
function setPickerCirclePos(S,V) {
		this.satuation = S;
		this.value = V;
		var chooser = $('colourPicker');
		var picker = $('colourPickerCircle');
		var pickerX = S*chooser.offsetWidth;
		var pickerY = (1-V)*chooser.offsetHeight;
		picker.style.left = (pickerX - 5) + 'px';
		picker.style.top = (pickerY - 5) + 'px';			
}
//------------------------------
function setPcikerBoxColor(S,V) {
		var chooserBox = $('chooserDetails');
		var RGB = hsvToRgb(0,S,V * 255);
		chooserBox.style.backgroundColor = rgbToHex(RGB.r,RGB.g,RGB.b);
}