/** DHML API ---- */
var DHTML = (document.getElementById || document.all || document.layers);

function getObj(name)
{
  var obj;
  var style;
  if (document.getElementById)
  {
  	this.obj = document.getElementById(name);
	this.style = document.getElementById(name).style;
  }
  else if (document.all)
  {
	this.obj = document.all[name];
	this.style = document.all[name].style;
  }
  else if (document.layers)
  {
	this.obj = getObjNN4(document,name);
	this.style = this.obj;
  }
}


function getOpenerObj (name) {

	var obj;
	var style;
	
	if(document.getElementById) {
		this.obj = parent.document.getElementById(name);
		this.style = parent.document.getElementById(name).style;
	} else if (document.all) {
		this.obj = parent.document.all[name];
		this.style = parent.document.all[name].style;
	} else if (document.layers) {
		this.obj = getObjNN4(parent.document,name);
		this.style = this.obj;
	}
}

function getObjNN4(obj,name)
{
	var x = obj.layers;
	var foundLayer;
	for (var i=0;i<x.length;i++)
	{
		if (x[i].id == name)
		 	foundLayer = x[i];
		else if (x[i].layers.length)
			var tmp = getObjNN4(x[i],name);
		if (tmp) foundLayer = tmp;
	}
	return foundLayer;
}

/** DHML API END ---- */

function UriParams() {
	var uri = document.location.search.substr(1,document.location.search.length);
	var params = uri.split('&');
	var myParams = new Array();
	var i=0;
	var hash;
	var str1,str2;
	for(i=0;i<params.length;i++) {
		hash = params[i].split('=');
		str1 = hash[0];
		str2 = hash[1];
		myParams[str1] = str2;
	}
	return myParams;
}


/** COLORSELECTOR ROUTINES */
function _CloseOnEsc() {
  if (event.keyCode == 27) { window.close(); return; }
}

function Init() {                                                       // run on page load

  var uriParams = UriParams();
  var formID = uriParams['formID'];
  var openerObj = new getOpenerObj(formID);
  if(openerObj.obj != undefined) {
  	var color = openerObj.obj.value;
  	color = color.substr(1,color.length);
  	color = ValidateColor(color) || '000000';
  	View(color);                                                          // set default color
  }
}

function View(color) {                  // preview color
	var ColorPreview = new getObj("ColorPreview");
	if(ColorPreview.style != undefined) {
		ColorPreview.style.backgroundColor = '#' + color;
		var cHex = new getObj("ColorHex");
		cHex.obj.value = '#' + color;	
	} else {
		
		ColorPreview = new getObjNN4(document,'ColorHex');
		ColorPreview.value='#' + color;
	
	}
}

function Set(string) {                   // select color
  var color = ValidateColor(string);
  if (color == null) { alert("Invalid color code: " + string); }        // invalid color
  else {                                                                // valid color
    View(color);                          // show selected color
    var uriParams = UriParams();
  	var formID = uriParams['formID'];
  	var openerObj = new getOpenerObj(formID);
  	var colorObj = new getOpenerObj('col_'+formID);
  	if(openerObj.obj != undefined) {
  		
  		openerObj.obj.value = color;
  		colorObj.style.backgroundColor = '#'+color;
  		window.close();
  	} else {
  		openerObj.value=color;
  		window.close();
  	}

  }
}


function ValidateColor(string) {                // return valid color code
  string = string || '';
  string = string + "";
  string = string.toUpperCase();
  var chars = '0123456789ABCDEF';
  var out   = '';

  for (var i=0; i<string.length; i++) {             // remove invalid color chars
    var schar = string.charAt(i);
    if (chars.indexOf(schar) != -1) { out += schar; }
    else out+=0;
  }

  if (out.length != 6) { return null; }            // check length
  return out;
}

function validateStringColor(id)
{
	input=document.getElementById(id);
	input.value=ValidateColor(input.value);
	if(input.value==null)return;
	document.getElementById("col_"+id).style.backgroundColor="#"+input.value;
}
/* COLORSELECTOR ROUTINES */