function clearOF(itemnum) {
	element = document.getElementById('fid_'+itemnum);
	if (element.value==def[itemnum]) element.value='';
	element.className=element.className.replace(cleartext,'');
}
function restoreOB(itemnum) {
	element = document.getElementById('fid_'+itemnum);
	if (element.value=='' || element.value==def[itemnum]) {
		element.value=def[itemnum];
		element.className+=cleartext;
	}
}
function restoredefaults(formnum) {
	for (key in ipf[formnum]) changevalue(ipf[formnum][key], (def[ipf[formnum][key]] ? def[ipf[formnum][key]] : ''));
	reseterrors(formnum);
	return false;
}
function changevalue(itemnum, newvalue) {
	var fid = document.getElementById('fid_'+itemnum+'-1');
	if (!fid && (fid = document.getElementById('fid_'+itemnum))) {
		if (fid.type == 'checkbox') fid.checked = (newvalue ? 'checked' : '');
		else {
			fid.value = (newvalue ? newvalue : '');
			if (autoclear) {
				if (def[itemnum] && newvalue == def[itemnum] && fid.className.search(cleartext) == -1) fid.className+=cleartext;
				else fid.className.replace(cleartext,'');
			}
		}
	} else if (fid){
		var count = 0;
		var cors = (fid.type ? 'checked' : 'selected');
		if (!newvalue) while (fid = document.getElementById('fid_'+itemnum+'-'+(++count))) eval("fid."+cors+"='';");
		else {
			var marked;
			if (typeof newvalue == 'string') marked = '[['+newvalue+']]';
			else marked = '[['+newvalue.join(']][[')+']]';
			while (fid = document.getElementById('fid_'+itemnum+'-'+(++count))) eval("fid."+cors+"=(marked.search('[['+fid.value+']]') != -1 ? '"+cors+"' : '')");
		}
	}
}
function validate(formnum) {
	var jstrue=false;
	var alertboxhtml='';
	var errornum=0;
	var msgtermlist;
	var expterms=new Array();
	var msgterms=new Array();
	var errterms=new Array();
	var i=0;
	while (document.getElementById('form_'+(++i))) reseterrors(i);
	fidval = getfivalues(formnum);
	for (msg in errmsg[formnum]) {
		msgterms[msg] = new Array();
		for (psexp in errmsg[formnum][msg]) {
			eval('if ('+errmsg[formnum][msg][psexp][0]+') jstrue = true;');
			if (!jstrue) {
				expterms = errmsg[formnum][msg][psexp][1].split("-");
				for (key in expterms) {
					msgterms[msg][expterms[key]] = expterms[key];
					errterms[expterms[key]] = expterms[key];
				}
			}
			jstrue = false;
		}
		msgtermlist = new Array();
		for (key in msgterms[msg]) msgtermlist.push(key);
		if (msgtermlist.length) alertboxhtml += '<TR><TD STYLE="margin-left: 5px; vertical-align: top">('+(++errornum)+')</TD><TD ID="errormsg_'+errornum+'" CLASS="'+errorclass+'">'+msg+' ['+msgtermlist.join(', ')+']</TD></TR>';
	}
	for (key in errterms) throwerror(errterms[key]);
	if (alertboxhtml) {
		document.getElementById('alertbox').innerHTML = '<DIV CLASS="'+form_alert+'"><TABLE><TR><TD STYLE="font-size: larger" COLSPAN="2">Please correct the following errors...</TD></TR>'+alertboxhtml+'</TABLE></DIV>';
		location.href='#alertbox';
		return false;
	} else if (captcha && getdata('inc_php/ajaxverify.php?captcha='+getfivalue(captcha), function(response) {
		if (response["text"]) document.getElementById("form_"+formnum).submit();
		else {
			document.getElementById('alertbox').innerHTML = '<DIV CLASS="'+form_alert+'"><TABLE><TR><TD STYLE="font-size: larger" COLSPAN="2">Please correct the following errors...</TD></TR><TR><TD STYLE="margin-left: 5px; vertical-align: top">(1)</TD><TD ID="errormsg_1" CLASS="'+errorclass+'">The verification code you entered did not match. Please try again. ['+captcha+']</TD></TR></TABLE></DIV>';
			document.getElementById("captcha").src = 'inc_php/captcha.php?load='+getfivalue(captcha); 
			changevalue(captcha, (def[captcha] ? def[captcha] : ''));
			throwerror(captcha);
			location.href='#alertbox';
		}
	} )) return false;
	return true;
}
function getfivalues(formnum) {
	var fivalues = new Array();
	var itemvalue;
	var fiscassarray;
	for (key in jsdec[formnum]) {
		itemvalue = getfivalue('fid_'+jsdec[formnum][key]);
		if (typeof(item) == "string") fivalues[jsdec[formnum][key]] = itemvalue;
		else {
			fiscassarray = new Array();
			for (key in itemvalue) fiscassarray[itemvalue[key]] = itemvalue[key];
			fivalues[jsdec[formnum][key]] = fiscassarray;
		} 
	}
	return fivalues;
}
function getfivalue(id) {
	var fid = document.getElementById(id);
	if (fid && !fid.multiple) return (fid.type != 'checkbox' ? fid.value : fid.checked);
	else {
		var fisccounter = 1;
		var fiscarray = new Array();
		while (fid = document.getElementById(id+'-'+(fisccounter++))) if (fid.selected || fid.checked) fiscarray.push(fid.value);
		if (!fiscarray.length) return null;
		else if (document.getElementById(id+'-1').type == 'radio') return fiscarray.join();
		else return fiscarray;
	}
}
function geterroroutline(itemnum) {
	var erroutline = document.getElementById('tablefid_'+itemnum);
	if (!erroutline) erroutline = document.getElementById('labelfid_'+itemnum);
	if (!erroutline) erroutline = document.getElementById('fid_'+itemnum);
	return erroutline;
}
function throwerror(itemnum) {
	var erroutline = geterroroutline(itemnum);
	if (erroutline.className.search(errorelement) == -1) erroutline.className += errorelement;
	document.getElementById('fiet_'+itemnum).innerHTML = itemnum;
}
function clearerror(objid) {
	var obj = document.getElementById(objid);
	obj.className = obj.className.replace(errorelement, '');
}
function reseterrors(formnum) {
	var erroutline;
	for (key in jsdec[formnum]) {
		erroutline = geterroroutline(jsdec[formnum][key]);
		erroutline.className = erroutline.className.replace(errorelement, '');
		document.getElementById('fiet_'+jsdec[formnum][key]).innerHTML = '';
	}
}