function test_element(f,name,type,error_msg)
{
	var testnames=new Array();
	testnames=name.split("|");
	var i,j;
	var fail=0;
	var radio_check=false;
	for(i=0;i<testnames.length;i++){
		switch(type){
			case 'radio':
				for (j=0;j<eval("f."+testnames[i]+".length");j++)
					if(eval("f."+testnames[i]+"["+j+"].checked"))
						radio_check=true;
				if(!radio_check)
					fail++;
				break;
			case 'text':
				if(eval("f."+testnames[i]+".value.length==0"))
					fail++;
				break;
			case 'select':
				if(eval("f."+testnames[i]+".selectedIndex==0"))
					fail++;
				break;
			case 'num':
				var ret=new String(eval("parseInt(f."+testnames[i]+".value)"));
				if(ret.indexOf('NaN') != -1)
					fail++;
				break;
		};
	}

	if(fail == testnames.length)
		return "\n\t"+error_msg;
	else
		return "";
}

function do_submit(my_form)
{

	var i;
	var e="";
	var f;
	if(my_form == null)
		f=document.forms[0];
	else
		f=my_form;

	var passes=new Array();

	re1 = /\"/g;
	re2 = /\'/g;
	re3 = /\;/g;
	str=new String();
	for(i=0;i<f.elements.length;i++){
		if(f.elements[i].type == "text" || f.elements[i].type == "textarea"){
			str=(f.elements[i].value);
			str=str.replace(re1,"\&quot\;");
			// str=str.replace(re2,"");
			// str=str.replace(re3,"\&\#59\;");
			f.elements[i].value=str;
		}
	}

	for(i=0;i<tests.length;i++){
		if(tests[i][1] == "pass"){
			passes=tests[i][0].split("|");
			if(eval("f."+passes[0]+".value != f."+passes[1]+".value")){
				e+="\n\t"+tests[i][2];
			}
		}
		else
			e+=test_element(f,tests[i][0],tests[i][1],tests[i][2]);
	}

	if(e.length > 0){
		alert("Error:"+e);
		return false;
	}
	else
		return true;
}

