// CFORM system © Mysterious Ways 2000-2003 http://www.mways.co.uk
var gSafeOnload = new Array(); 
function SafeAddOnload(f)
{
	if(window.onload)
	{
		if(window.onload != SafeOnload)
		{
			gSafeOnload[0]=window.onload;
			window.onload = SafeOnload;
		}		
		gSafeOnload[gSafeOnload.length] = f;
	} else window.onload = f;
}
function SafeOnload() 
{	
	for(var i=0;i<gSafeOnload.length;i++) gSafeOnload[i](); 
}

function cformremselected(dest)
{
	for(var i=0;i<dest.options.length;i++)
	{
		var o = dest.options[i];
		if(o.selected)
		{
			dest.options[i]=null;
		}
	}
}

function cformaddselected(from,dest,maxcount)
{
	var options = new Object();
	
	if(maxcount>0)
	{
		if(dest.options.length>=maxcount) return;
	}
	
	
	for(var i=0;i<dest.options.length;i++)
	{
		options[dest.options[i].value] = dest.options[i].text;
	}
	for(var i=0;i<from.options.length;i++)
	{
		var o = from.options[i];
		if(o.selected)
		{
			if(options[o.value] == null || options[o.value] == "undefined" || options[o.value]!=o.text)
			{
				dest.options[dest.options.length] = new Option( o.text, o.value, false, false);
			}
		}
	}
	
	sortSelect(to);
	
	from.selectedIndex = -1;
	dest.selectedIndex = -1;
}


function cformcheckAll(formid,val) 
{
	for(var elementIdx=0; elementIdx < formid.elements.length; elementIdx++) 
	{
		if(formid.elements[elementIdx].type == 'checkbox') 
		{ 
			formid.elements[elementIdx].checked = val;
		}
	}
}
function cformvalidate(formid,itemid,valtype,vmin,vmax)
{
 var v=1;  
 var itemval = itemid.value;  
 


 if(valtype.charAt(0)=="@")
 {
 
 	if(itemval=="") return(true);
 	valtype = valtype.substring(1,valtype.length);
 	
 }
 switch(valtype)
 {
 case "CUSTOMJS":
 	v=0;
 	var exe = vmin+"(document.forms[\""+formid+"\"]);";
 	if(eval(exe)) v=1;

 	break;
 case "SET": 
 	if(itemval=="") v=0;  
 	break;  
 case "NEEDBOTH": 
 	v=0;  
 	if(itemval) 
 	{ 
 		var val2 = document.forms[formid].elements[vmin].value;  
 		if(val2) v=1;  
 	} 
 	break;  
 case "EMAIL":
 	var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;  
 	v = regex.test(itemval);  
 	break;  
 case "TEL":
 case "PHONE":
 	var regex = /^\+?[\(\) 0-9-]+$/;  
 	v = regex.test(itemval);  
 	break;  
 case "NEEDEITHER":
	 v=0;  
	 if(!itemval)
	 {
	 	var item2val = document.forms[formid].elements[vmin].value;  if(item2val) v=1;  
	 	if(vmax) 
	 	{
	 		var item2val = document.forms[formid].elements[vmax].value;  if(item2val) v=1;  
	 	}
 
 	} else v=1;  
 	
 	break;  
 
	 case "INT":
		 v=0;  
		 if(!isNaN(itemval)&&(itemval!=''))
		 {
		 	vmin = parseInt(vmin);  
		 	vmax = parseInt(vmax);  
		 	if(itemval>=vmin && itemval<=vmax) v=1;  
		 }
		 break;  
	 case "NOTEQ":
	 case "NOTEQUAL":
	 	if(itemval==vmin) v=0;  
	 	break;  
	 case "SELECT":
	 	if(parseInt(itemval)==0) v=0;  
	 	break;  
	 case "CLEANTEXT":
	 case "ALPHA": 
	 case "ALPHANUMERIC":
	 case "PLAINTEXT":
	 case "TEXT":
	 	v=0;  
	 	if(itemval)
	 	{ 
 			var strl = itemval.length;  
 			vmin = parseInt(vmin);  
 			vmax = parseInt(vmax);  
 			if((strl>=vmin) && (strl<=vmax)) v=1;  
 		}
 		break;  
 	case "VAREQ":
 		v = 0;  
 		var val2 = document.forms[formid].elements[vmin].value;  
 		if(val2 == itemval) v = 1;  break;  
 	}
 	return(v); 
 }
 
 // Title: Tigra Color Picker
// URL: http://www.softcomplex.com/products/tigra_color_picker/
// Version: 1.1
// Date: 06/26/2003 (mm/dd/yyyy)
// Note: Permission given to use this script in ANY kind of applications if
//    header lines are left unchanged.
// Note: Script consists of two files: picker.js and picker.html
// Converted for use with CFORM





var TCP = new TColorPicker();

function TCPopup(field, palette) 
{
	this.field = field;
	this.initPalette = !palette || palette > 2 ? 0 : palette;
	var w = 194, h = 206,
	move = screen ? 
		',left=' + ((screen.width - w) >> 1) + ',top=' + ((screen.height - h) >> 1) : '', 
	o_colWindow = window.open('/cform/picker/picker.html', null, "help=no,status=no,scrollbars=no,resizable=no" + move + ",width=" + w + ",height=" + h + ",dependent=yes", true);
	o_colWindow.opener = window;
	o_colWindow.focus();
}

function TCBuildCell (R, G, B, w, h) {
	return '<td bgcolor="#' + this.dec2hex((R << 16) + (G << 8) + B) + '"><a href="javascript:P.S(\'' + this.dec2hex((R << 16) + (G << 8) + B) + '\')" onmouseover="P.P(\'' + this.dec2hex((R << 16) + (G << 8) + B) + '\')"><img src="pixel.gif" width="' + w + '" height="' + h + '" border="0"></a></td>';
}

function TCSelect(c) 
{
	this.field.value = '#' + c.toUpperCase();
	this.field.style.backgroundColor = c.toUpperCase();
	
	
	r = parseInt(c.substr(0,2), 16);
	g = parseInt(c.substr(2,2), 16);
	b = parseInt(c.substr(4,2), 16);

	gr = ((3*r)+(6*g)+b)/10;
	
	if(gr<128) fg="ffffff"; else fg = "000000";
	
	this.field.style.color = fg;
	
	this.win.close();
}




function TCPaint(c, b_noPref) {
	c = (b_noPref ? '' : '#') + c.toUpperCase();
	if (this.o_samp) 
		this.o_samp.innerHTML = '<font face=Tahoma size=2>' + c +' <font color=white>' + c + '</font></font>'
	if(this.doc.layers)
		this.sample.bgColor = c;
	else { 
		if (this.sample.backgroundColor != null) this.sample.backgroundColor = c;
		else if (this.sample.background != null) this.sample.background = c;
	}
}

function TCGenerateSafe() {
	var s = '';
	for (j = 0; j < 12; j ++) {
		s += "<tr>";
		for (k = 0; k < 3; k ++)
			for (i = 0; i <= 5; i ++)
				s += this.bldCell(k * 51 + (j % 2) * 51 * 3, Math.floor(j / 2) * 51, i * 51, 8, 10);
		s += "</tr>";
	}
	return s;
}

function TCGenerateWind() {
	var s = '';
	for (j = 0; j < 12; j ++) {
		s += "<tr>";
		for (k = 0; k < 3; k ++)
			for (i = 0; i <= 5; i++)
				s += this.bldCell(i * 51, k * 51 + (j % 2) * 51 * 3, Math.floor(j / 2) * 51, 8, 10);
		s += "</tr>";
	}
	return s	
}

function TCGenerateGray() {
	var s = '';
	for (j = 0; j <= 15; j ++) {
		s += "<tr>";
		for (k = 0; k <= 15; k ++) {
			g = Math.floor((k + j * 16) % 256);
			s += this.bldCell(g, g, g, 9, 7);
		}
		s += '</tr>';
	}
	return s
}

function TCDec2Hex(v) {
	v = v.toString(16);
	for(; v.length < 6; v = '0' + v);
	return v;
}

function TCChgMode(v) {
	for (var k in this.divs) this.hide(k);
	this.show(v);
}

function TColorPicker(field) {
	this.build0 = TCGenerateSafe;
	this.build1 = TCGenerateWind;
	this.build2 = TCGenerateGray;
	this.show = document.layers ? 
		function (div) { this.divs[div].visibility = 'show' } :
		function (div) { this.divs[div].visibility = 'visible' };
	this.hide = document.layers ? 
		function (div) { this.divs[div].visibility = 'hide' } :
		function (div) { this.divs[div].visibility = 'hidden' };
	// event handlers
	this.C       = TCChgMode;
	this.S       = TCSelect;
	this.P       = TCPaint;
	this.popup   = TCPopup;
	this.draw    = TCDraw;
	this.dec2hex = TCDec2Hex;
	this.bldCell = TCBuildCell;
	this.divs = [];
}

function TCDraw(o_win, o_doc) {
	this.win = o_win;
	this.doc = o_doc;
	var 
	s_tag_openT  = o_doc.layers ? 
		'layer visibility=hidden top=54 left=5 width=182' : 
		'div style=visibility:hidden;position:absolute;left:6px;top:54px;width:182px;height:0',
	s_tag_openS  = o_doc.layers ? 'layer top=32 left=6' : 'div',
	s_tag_close  = o_doc.layers ? 'layer' : 'div'
		
	this.doc.write('<' + s_tag_openS + ' id=sam name=sam><table cellpadding=0 cellspacing=0 border=1 width=181 align=center class=bd><tr><td align=center height=18><div id="samp"><font face=Tahoma size=2>sample <font color=white>sample</font></font></div></td></tr></table></' + s_tag_close + '>');
	this.sample = o_doc.layers ? o_doc.layers['sam'] : 
		o_doc.getElementById ? o_doc.getElementById('sam').style : o_doc.all['sam'].style

	for (var k = 0; k < 3; k ++) {
		this.doc.write('<' + s_tag_openT + ' id="p' + k + '" name="p' + k + '"><table cellpadding=0 cellspacing=0 border=1 align=center>' + this['build' + k]() + '</table></' + s_tag_close + '>');
		this.divs[k] = o_doc.layers 
			? o_doc.layers['p' + k] : o_doc.all 
				? o_doc.all['p' + k].style : o_doc.getElementById('p' + k).style
	}
	if (!o_doc.layers && o_doc.body.innerHTML) 
		this.o_samp = o_doc.all 
			? o_doc.all.samp : o_doc.getElementById('samp');
	this.C(this.initPalette);
	if (this.field.value) this.P(this.field.value, true)
}
