var perline = 9;
var divSet = false;
var curId;
var colorLevels = Array('0', '3', '6', '9', 'C', 'F');
var colorArray = Array();
var ie = false;
var nocolor = 'none';
if (document.all) { ie = true; nocolor = ''; }
function getObj(id) {
  if (ie) { return document.all[id]; } 
  else {	return document.getElementById(id);	}
}

function addColor(r, g, b) {
  var red = colorLevels[r];
  var green = colorLevels[g];
  var blue = colorLevels[b];
  addColorValue(red, green, blue);
}

function addColorValue(r, g, b) {
  colorArray[colorArray.length] = '#' + r + r + g + g + b + b;
}
     
function setColor(color) {
  var link = getObj(curId);
  var picker = getObj('colorpicker');
  if (curId.substr(0,2) == 'cl') {
    //changing dataset color on personal page
    new Ajax('ajax/updateColor.cgi', {
      method: 'get',
		 data: 'dsid=' + curId + '&amp;col=' + escape(color),
		 onComplete: function(){ $('ds' + curId.substr(2)).setStyles({color: color, background: color}); cClick(); },
		 onFailure: function(){ return overlib('<span style="background: #faa;">ERROR changing dataset color</span>', WRAP, TIMEOUT, 3000); cClick();}
      }).request();
    picker.style.display = 'none';
    return;
  } else {
    var field = getObj(curId + 'field');
    field.value = color;
    if (color == '') {
      link.style.background = nocolor;
      link.style.color = nocolor;
      color = nocolor;
    } else {
      link.style.background = color;
      link.style.color = color;
    }
  }
  picker.style.display = 'none';
  eval(getObj(curId + 'field').title);
}
        
function setDiv() {     
  if (!document.createElement) { return; }
  var elemDiv = document.createElement('div');
  if (typeof(elemDiv.innerHTML) != 'string') { return; }
  genColors();
  elemDiv.id = 'colorpicker';
  elemDiv.style.position = 'absolute';
  elemDiv.style.display = 'none';
  elemDiv.style.border = '#000000 1px solid';
  elemDiv.style.background = '#FFFFFF';
  elemDiv.style.zIndex = '1005';
  elemDiv.innerHTML = '<table style="font-family:Verdana; font-size:11px;"><tr><td>Pick a color:</td><td><a class="tClo" onclick="$(\'colorpicker\').style.display=\'none\';"></a></td></tr>' 
    + '<tr><td colspan="2">' 
    + getColorTable() 
    + '</td></tr></table>';
	
  document.body.appendChild(elemDiv);
  divSet = true;
}
     
function pickColor(id) {
  if (!divSet) { setDiv(); }
  var picker = getObj('colorpicker');     	
  if (id == curId && picker.style.display == 'block') {
    picker.style.display = 'none';
    return;
  }
  curId = id;
  var thelink = getObj(id);
  picker.style.top = $(thelink).getTop() + 10 +'px';
  picker.style.left = $(thelink).getLeft() + 'px';
  picker.style.display = 'block';
}
     
function genColors() {
  addColorValue('0','0','0');
  addColorValue('3','3','3');
  addColorValue('6','6','6');
  addColorValue('8','8','8');
  addColorValue('9','9','9');                
  addColorValue('A','A','A');
  addColorValue('C','C','C');
  addColorValue('E','E','E');
  addColorValue('F','F','F');                                
			
  for (a = 1; a < colorLevels.length; a++)
    addColor(0,0,a);
  for (a = 1; a < colorLevels.length - 1; a++)
    addColor(a,a,5);

  for (a = 1; a < colorLevels.length; a++)
    addColor(0,a,0);
  for (a = 1; a < colorLevels.length - 1; a++)
    addColor(a,5,a);
			
  for (a = 1; a < colorLevels.length; a++)
    addColor(a,0,0);
  for (a = 1; a < colorLevels.length - 1; a++)
    addColor(5,a,a);
			
			
  for (a = 1; a < colorLevels.length; a++)
    addColor(a,a,0);
  for (a = 1; a < colorLevels.length - 1; a++)
    addColor(5,5,a);
			
  for (a = 1; a < colorLevels.length; a++)
    addColor(0,a,a);
  for (a = 1; a < colorLevels.length - 1; a++)
    addColor(a,5,5);

  for (a = 1; a < colorLevels.length; a++)
    addColor(a,0,a);			
  for (a = 1; a < colorLevels.length - 1; a++)
    addColor(5,a,5);
			
  return colorArray;
}
function getColorTable() {
  var colors = colorArray;
  var tableCode = '';
  tableCode += '<table border="0" cellspacing="1" cellpadding="1">';
  for (i = 0; i < colors.length; i++) {
    if (i % perline == 0) { tableCode += '<tr>'; }
    tableCode += '<td bgcolor="#000000"><a style="outline: 1px solid #000000; color: ' 
      + colors[i] + '; background: ' + colors[i] + ';font-size: 10px;" title="' 
      + colors[i] + '" href="javascript:setColor(\'' + colors[i] + '\');">&nbsp;&nbsp;&nbsp;</a></td>';
    if (i % perline == perline - 1) { tableCode += '</tr>'; }
  }
  if (i % perline != 0) { tableCode += '</tr>'; }
  tableCode += '</table>';
  return tableCode;
}
function relateColor(id, color) {
  var link = getObj(id);
  if (color == '') {
    link.style.background = nocolor;
    link.style.color = nocolor;
    color = nocolor;
  } else {
    link.style.background = color;
    link.style.color = color;
  }
  eval(getObj(id + 'field').title);
}

