/* set field valid value */
var sf_vv = /#[0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F]/i;

/* set field value */
function sf(f, v) {
  if (!sf_vv.test(v)) {
	document.getElementById(f).value="";
	createAdvancedScript();
	return false;
  }

  document.getElementById(f).value=v;
  createAdvancedScript();
}


/* write swatch */
function ws(c, s, z) {
  var v = "#" + toHex(c);
  document.write(
    "<td id='ps' class='defBg' style='font-size:1px;background-color:" + v + "' onclick=\"set_color('" + v +
    "')\" title=\"" + v + "\" " + ((s == 1) ? "" : ("colspan=\"" + s +
    "\" ")) + "bgcolor=\"" + v + "\" onmouseover=\"status='" + v +
    "'\" " + "onmouseout=\"status=''\"><div class=\"" + z + "\"></div></td>");
}

/* write palette table */
function wt() {
  for(var r = 255; r >= 0; r -= 51) {
    document.write("<tr class='defBg'>");
    for(var g = 255; g >= 0; g -= 51) {
      for(var b = 255; b >= 0; b -= 51) {
        ws([r, g, b], 1, "swatch");
      }
    }
    document.write("</tr>");
  }
  document.write("<tr>");
  for(var l = 255; l >= 0; l -= 51) {
    ws([l, l, l], 6, "swatch2");
  }
  document.write("</tr>");
}

function toColor(h) {
  return [ parseInt(h.substring(0, 2), 16),
           parseInt(h.substring(2, 4), 16),
           parseInt(h.substring(4, 6), 16) ];
}

function toHex(c) {
  var r, g, b;
  r = c[0].toString(16);
  if (c[0] < 0x10) {
    r = "0" + r;
  }
  g = c[1].toString(16);
  if (c[1] < 0x10) {
    g = "0" + g;
  }
  b = c[2].toString(16);
  if (c[2] < 0x10) {
    b = "0" + b;
  }
  return (r + g + b).toUpperCase();
}


/* set field helper for keydown events */
function sf_ok(f, v) {
  if (window.event) {
    if (event.keyCode == 13) {
	  set_color(v);
      event.cancelBubble = true;
    }
  }
}

/* focus field */
function ff(f) {
  var v = document.forms.form1.elements;
  var e = v.field;
  for (var i = 0; i < e.length; i++) {
    if (e[i].value == f) {
      e[i].checked = true;
      v[f].focus();
      break;
    }
  }
}
