function rx_form(block_prefix,wait_label) {
	if (block_prefix!=null) this.block_prefix=block_prefix;
	if (wait_label!=null) this.wait_label=wait_label;
}
rx_form.prototype.save_button_label=null;
rx_form.prototype.wait_label='Momentje a.u.b...';
rx_form.prototype.buttonid='submitButton';
rx_form.prototype.buttonlabelid='submitButton';
rx_form.prototype.block_prefix='contact';
rx_form.prototype.force_key_exist=false;
rx_form.prototype.status_scrolls_up = true;


rx_form.prototype.submit=function(e, waittxt, alt_cf) {
	if (!e || e.tagName.toUpperCase() != 'FORM') return false;
	if(!this.validateForm(e)) return false;
	if(!this.checkForm(e)) return false;
	this.xajaxsubmit(e, waittxt, alt_cf);
	return false;
}

rx_form.prototype.xajaxsubmit=function(frm, waittxt, alt_cf) {
	if (waittxt) this.wait_label=waittxt;

	var formElements = frm.elements;
	var target_cf = formElements['target_cf'] ? formElements['target_cf'].value : alt_cf;
	if(!target_cf) return false;

	if (formElements['wait_button'] && formElements['wait_button'].value) this.buttonid=formElements['wait_button'].value;
	if (formElements['wait_label'] && formElements['wait_label'].value) this.buttonlabelid=formElements['wait_label'].value;
	else this.buttonlabelid=this.buttonid;

	if (formElements['checksum']) {
		var chksum = location.hostname;
		formElements['checksum'].setAttribute("value",chksum);
	}

	var button=xajax.$(this.buttonid);
	if (button) button.disabled=true;
	var label=xajax.$(this.buttonlabelid);
	if (label) {
		if (label.tagName.toUpperCase()=='INPUT') {
			this.save_button_label=label.value;
			label.value=this.wait_label;
		} else {
			this.save_button_label=label.innerHTML;
			label.innerHTML=this.wait_label;
		}
	}
	xajax.call(target_cf, new Array(xajax.getFormValues(frm,this.force_key_exist)), 1);
	return false;
}

rx_form.prototype.show_status=function(frm_status, frm_text,frm_linkto) {
	if (frm_status) {
		if (frm_linkto) {
			location.href=frm_linkto;
		} else {
			if (xajax.$(this.block_prefix+'_form')) xajax.$(this.block_prefix+'_form').style.display = 'none';
			if (xajax.$(this.block_prefix+'_result')) {
				if (frm_text) {
					xajax.$(this.block_prefix+'_result').innerHTML = frm_text;
				}
				xajax.$(this.block_prefix+'_result').style.display = 'block';
			}
			if (this.status_scrolls_up) window.scrollTo(1,1);
		}
	} else {
		var button=xajax.$(this.buttonid);
		if (button) button.disabled=false;
		var label=xajax.$(this.buttonlabelid);
		if (label) {
			if (label.tagName.toUpperCase()=='INPUT') {
				label.value=this.save_button_label;
			} else {
				label.innerHTML=this.save_button_label;
			}
		}
		if (frm_text) alert(frm_text);
	}
}

rx_form.prototype.validateForm=function(e) {
	var msg = '';
	var chk = '';
	var focusfld = '';
	var i,ii,x;
	var rclist = [];
	var val = '';
	for(i=0;i<e.length;i++) {
		if (chk = e[i].getAttribute('inpchk')) {
			e[i].className = e[i].className.replace('mandatory','');
			if ((chk == 'notempty')) {
				if (e[i].type == 'checkbox') {
					val = (e[i].checked) ? '1' : '';
				} else {
					val = e[i].value.replace(/^\s+|\s+$/g,""); // trim string
				}
				if (val == '' || (e[i].getAttribute('orgvalue')  && e[i].getAttribute('orgvalue') == val)) {
					if (focusfld == '') focusfld = e[i].name;
					msg += e[i].getAttribute('chkmsg')+"\n";
					e[i].className += ' mandatory';
				}
			}
			if ((chk == 'minmaxlen')) {
				var min = e[i].getAttribute('minlen');
				var max = e[i].getAttribute('maxlen');
				if (e[i].value.length < min) {
					msg += e[i].getAttribute('chkmsg')+"\n";
					if (focusfld == '') focusfld = e[i].name;
					e[i].className += ' mandatory';
				}
				if (e[i].value.length > max) {
					msg += e[i].getAttribute('maxmsg')+"\n";
					if (focusfld == '') focusfld = e[i].name;
					e[i].className += ' mandatory';
				}
			}
			if ((chk == 'radiovalue')) {
				if (rclist[e[i].name] == 1) continue;
				rclist[e[i].name] = 1;
				x = e[e[i].name];
				if (!!x[0]) {
					for(ii=0;ii<x.length;ii++) {
						x[ii].className = x[ii].className.replace('mandatory','');
					}
					val = false;
					for(ii=0;ii<x.length;ii++) {
						if (x[ii].checked) val = true;
					}
					if (!val) {
						for(ii=0;ii<x.length;ii++) {
							x[ii].className += ' mandatory';
						}
						if (focusfld == '') focusfld = i;
						msg += e[i].getAttribute('chkmsg')+"\n";
					}
				}
			}
		}
	}
	if (msg) {
		alert(msg);
		e[focusfld].scrollIntoView(false);
		e[focusfld].focus();
		return false;
	}
	return true;
}

rx_form.prototype.checkForm=function(theform) {
        var form_err = '';
        var form_invalid_err = '';
        for (var i=0;i<theform.elements.length;i++) {
            theform.elements[i].disabled = 'true';
            if (theform.elements[i].getAttribute('required') != undefined && theform.elements[i].getAttribute('required') == 'true') {
				if (theform.elements[i].type == 'radio') {
					var checked = 0;
					var e = theform.elements[theform.elements[i].name];
					for (var z=0;z<e.length;z++) {
						if (e[z].checked) {
							checked = 1;
							break;
						}
					}
					if (!checked) {
						form_err = form_err + '\n  - ' + theform.elements[i].name;
					}
					continue;
				}
				if (theform.elements[i].type == 'checkbox') {
					if (theform.elements[i].checked) continue;
					form_err = form_err + '\n  - ' + theform.elements[i].name;
				} else {
					if (theform.elements[i].value == undefined || theform.elements[i].value == '') {
						//for "select" type elements
						if (theform.elements[i].length != undefined)
						{
							if (theform.elements[i].selectedIndex == undefined || theform.elements[i].options[theform.elements[i].selectedIndex] == undefined || theform.elements[i].options[theform.elements[i].selectedIndex].value == '' ) {
								form_err = form_err + '\n  - ' + theform.elements[i].name;
							}
						}
						else form_err = form_err + '\n  - ' + theform.elements[i].name;
					 } else if (theform.elements[i].name.indexOf('email') > -1 && theform.elements[i].type == 'text') {
							 if (/([\w.-]+\@[\w.-]{3,})/i.test(theform.elements[i].value) == false) {
								 form_invalid_err = form_invalid_err + '\n  - ' + theform.elements[i].name;
							 }
					 }
				}
            }
        }
        for (var i=0;i<theform.elements.length;i++) theform.elements[i].disabled = '';

        if (form_err != '' || form_invalid_err != '') {
            //form_err = "The following fields are required:" + form_err;
			var err = '';
			if (form_err) {
				err += "De volgende velden zijn niet ingevuld:" + form_err;
			}
			if (form_invalid_err) {
				if (err != "") err += "\n\n";
				err += "De volgende velden zijn niet goed ingevuld:" + form_invalid_err;
			}
			alert(err);
            return false;
        } else return true;
    }
