
var gSafeOnload = new Array(); 
var xmlhttp=false;

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 labtog(formname,ctrlname)
{
	var thisctrl = document.forms[formname].elements[ctrlname];
	thisctrl.checked = 1 - thisctrl.checked;	
}

function cformselectAll(formid,dval,ctrlname)
{
	
		for(var i=0;i<formid.elements[ctrlname].length;i++)
		{
			if(dval)
				formid.elements[ctrlname].options[i].selected=true;
			else
				formid.elements[ctrlname].options[i].selected=false;
		}
}

function cformcheckAll(formid,val,pattern) 
{
	for(var elementIdx=0; elementIdx < formid.elements.length; elementIdx++) 
	{
		if(formid.elements[elementIdx].type == 'checkbox') 
		{ 
			
			if(pattern!="")
			{
				var pat = new RegExp(pattern);
				
				if(pat.test(formid.elements[elementIdx].name)==true)
				{
					formid.elements[elementIdx].checked = val;
				}
				
			} else
			{
				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 "CHECKED":
	
	 	if(!itemid[1].checked) 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); 
 }
 
 function getxmlhttp()
{
	var _xmlhttp=false;
	try 
	{
  		_xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 	} catch (e) 
 	{
  		try 
  		{
   		_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  		} catch (E) 
  		{
   		_xmlhttp = false;
  		}
 	}
	if(!_xmlhttp && typeof XMLHttpRequest!='undefined') 
	{
  		_xmlhttp = new XMLHttpRequest();
	}
	return _xmlhttp;
}

function cformajaxvalidate(formid,ctrlid)
{
	// we need to check here for multiple controls such as radio and multiselect
	// note: we return 1 as default failure because server-side validation will take over
	
	var value = document.forms[formid].elements[ctlrid].value;


	if(xmlhttp && xmlhttp.readyState!=0)
	{
		xmlhttp.abort()
	}
	xmlhttp=getxmlhttp();
  
	if(xmlhttp)
  	{	
  		xmlhttp.open("GET","/cform/cform_ajax.php?ctrl="+ctrlid+"&form="+formid+"&value="+value,true);
  		xmlhttp.send(null);
  		
  		if(xmlhttp.status==200)
  		{
  			if(xmlhttp.responseText) return(1); else return(0);
  		} else return(1);
		
	} else return(1);
}
