
function validate_required(field,alerttxt){
	with (field){
		if (value==null||value==""){
			alert(alerttxt);
			return false
		} else {
			return true
		}
	}
}

function validate_form(thisform){
	with (thisform){
		if (validate_required(email,"Email must be filled out!")==false) {
			email.focus();
			return false
		}
	}
}


/* ================ */
/* = STRING FLAGS = */
/* ================ */


function submit_generic_form() {
	var fields = $$('form div.field').collect(function(f) {
		if (f.hasClassName('fieldset')) return parse_fieldset(f)
		else if ((f.parentNode.nodeName != 'FIELDSET') && (!f.hasClassName('buttons'))) {
			return dispatch_to_parser(f)
		} else {
			return null
		}
	})
	// Form.disable('contact-form')
	new Ajax.Request('form.php', {method:'post', onSuccess:handle_response, postBody:Form.serialize($('contact-form'))})
	// alert(Form.serialize($('contact-form')))

	return false
}

function handle_response(r) {
	eval(r.responseText)
/*	alert(r.responseText)*/
}

function dispatch_to_parser(field) {
	if (field.hasClassName('textarea')) return parse_textarea(field)
	if (field.hasClassName('text')) return parse_text(field)
	if (field.hasClassName('select')) return parse_select(field)
	if (field.hasClassName('checkbox')) return parse_checkbox(field)
	return null
}

function label_for(field) {
	var label = null
	$A(field.childNodes).each(function(f) {
		if (f.nodeName == 'P') $A(f.childNodes).each(function(c) {
			if (c.nodeName == 'LABEL') label = c.innerHTML
		})
	})
	return label
}

function legend_for(fieldset) {
	var legend = null
	$A(fieldset.childNodes).each(function(f) {
		if (f.nodeName == 'FIELDSET') $A(f.childNodes).each(function(c) {
			if (c.nodeName == 'LEGEND') label = c.innerHTML
		})
	})
	return label
}

function value_for_checkbox(field) {
	var value = false
	$A(field.childNodes).each(function(f){
		if(f.nodeName == 'P') $A(f.childNodes).each(function(c) { if (c.checked) value = true })
	})
	return value
}

function value_for_text(field) {
	var value = ''
	$A(field.childNodes).each(function(f){ if(f.nodeName == 'INPUT') value = f.value	})
	return value
}

function value_for_textarea(field) {
	var value = ''
	$A(field.childNodes).each(function(f){ if(f.nodeName == 'TEXTAREA') value = f.value })
	return value
}

function value_for_select(field) {
	var value = ''
	$A(field.childNodes).each(function(f){ if(f.nodeName == 'SELECT') value = f.value })
	return value
}



function parse_text(field) { return escape(label_for(field)) + '=' + escape(value_for_text(field)) }
function parse_textarea(field) { return escape(label_for(field)) + '=' + escape(value_for_textarea(field)) }
function parse_select(field) { return escape(label_for(field)) + '=' + escape(value_for_select(field)) }
function parse_checkbox(field) { return escape(label_for(field)) + '=' + escape(value_for_checkbox(field)) }
function parse_fieldset(fieldset) {
	var values = $A()
	$A(fieldset.childNodes).map(function(f){
		if (f.nodeName == "FIELDSET") $A(f.childNodes).each(function(c) {
			if ((c.nodeName == 'DIV') && (c.hasClassName('field'))) {
				var label = escape(legend_for(fieldset))+ '[' + escape(label_for(c)) + ']'
				var value = 'false'
				if (c.hasClassName('textarea')) value = value_for_textarea(c)
				if (c.hasClassName('text')) value = value_for_text(c)
				if (c.hasClassName('select')) value = value_for_selec(c)
				if (c.hasClassName('checkbox')) value = value_for_checkbox(c)
			}
			values.push(label + '=' + value)
		})
	})
	return values.compact().join("&")
}

window.onload = function() {
	if ($$('.generic-form')) $('send').onclick = submit_generic_form
}