var form_errmsg = '';
var reValidEmail = new RegExp('^[a-z0-9\.\_\%\+\-]+@([A-Z0-9-]+\.)+[a-z]{2,6}$', 'i');

function validate_contact_form(form) {
	if (is_empty(form.msg_from_name.value)) {
		form_errmsg = form_errmsg + "\n" + L_contact_name_missing;
		form.msg_from_name.focus();
		return -1;
	}
	if (!is_email(form.msg_from_email.value)) {
		form_errmsg = form_errmsg + "\n" + L_contact_email_missing;
		form.msg_from_email.focus();
		return -2;
	}
	if (is_empty(form.msg_subject.value)) {
		form_errmsg = form_errmsg + "\n" + L_contact_subject_missing;
		form.msg_subject.focus();
		return -3;
	}
	if (is_empty(form.msg_body.value)) {
		form_errmsg = form_errmsg + "\n" + L_contact_body_missing;
		form.msg_body.focus();
		return -4;
	}
	return 0;
}

function validate_newsletter_form(form, formMode) {
	if (is_empty(form.firstname.value)) {
		form_errmsg = form_errmsg + "\n" + L_newsletter_firstname_missing;
		form.firstname.focus();
		return -1;
	}
	if (is_empty(form.lastname.value)) {
		form_errmsg = form_errmsg + "\n" + L_newsletter_lastname_missing;
		form.lastname.focus();
		return -2;
	}
	if (!is_email(form.email.value)) {
		form_errmsg = form_errmsg + "\n" + L_newsletter_email_missing;
		form.email.focus();
		return -3;
	}
	if (formMode == 'new') {
		var el = Form.getInputs(form, 'checkbox', 'group[]');
		var gr_checked = false;
		for (var i = 0; i < el.length; i++) {
			if (gr_checked = gr_checked || el[i].checked) break;
		}
		if (!gr_checked) {
			form_errmsg = form_errmsg + "\n" + L_newsletter_interests_missing;
			return -4;
		}
	}
	return 0;
}

function validate_contact_multi_form(form) {
	var el, hasRecpts = false;
	el = Form.getInputs(form, 'radio', 'recpts')
	if (el.length) { // mozda su radio
		for (var i = 0; i < el.length; i++) {
			if (hasRecpts = hasRecpts || el[i].checked) break;
		}
	} else {
		el = Form.getInputs(form, 'checkbox', 'recpts[]')
		if (el.length) { // checkboxovi
			for (var i = 0; i < el.length; i++) {
				if (hasRecpts = hasRecpts || el[i].checked) break;
			}
		} else {
			el = form.recpts;
			if (el && el.length) { // dropdown
				hasRecpts = true; // uvek je nesto selektovano
			} else { // nema gi?
				hasRecpts = false;
			}
		}
	}
	if (!hasRecpts) form_errmsg = form_errmsg + "\n" + L_contact_to_missing;
	return hasRecpts ? 0 : -5;
}

function contact_multi_form_submit(form, divID, callback_f) {
	var errcode;
	trim_all_elements(form);
	errcode = validate_contact_form(form);
	errcode += validate_contact_multi_form(form);
	if (errcode) {
		alert(trim(form_errmsg));
		form_errmsg = '';
	} else {
		Form.disable(form);
		var params = Form.serialize(form);
		new Ajax.Updater(divID, form.action, 
    		{ asynchronous:true,
      		  evalScripts:true, 
	      	  onComplete: function(r) { callback_f(r.responseText); },
    	  	  parameters:params
    		}
		);
	}
}

function cv_form_submit(form, formMode, divID, callback_f) {
	var errcode;
	trim_all_elements(form);
	if (errcode = validate_contact_form(form, formMode)) {
		alert(trim(form_errmsg));
		form_errmsg = '';
		return false;
	} else {
//		Form.disable(form);
		return true;
	}
}

function newsletter_form_submit(form, formMode, divID, callback_f) {
	var errcode;
	trim_all_elements(form);
	if (errcode = validate_newsletter_form(form, formMode)) {
		alert(trim(form_errmsg));
		form_errmsg = '';
	} else {
		Form.disable(form);
		var params = Form.serialize(form);
		new Ajax.Updater(divID, form.action, 
    		{ asynchronous:true,
      		  evalScripts:true, 
	      	  onComplete: function(r) { callback_f(r.responseText); },
    	  	  parameters:params
    		}
		);
	}
}

function contact_form_submit(form, divID, callback_f) {
	var errcode;
	trim_all_elements(form);
	if (errcode = validate_contact_form(form)) {
		alert(trim(form_errmsg));
		form_errmsg = '';
	} else {
		Form.disable(form);
		var params = Form.serialize(form);
		new Ajax.Updater(divID, form.action, 
    		{ asynchronous:true,
      		  evalScripts:true, 
	      	  onComplete: function(r) { callback_f(r.responseText); },
    	  	  parameters:params
    		}
		);
	}
}

function dummy(response) {}

/****** utility functions ********/

function is_email(str) {
	return reValidEmail.test(str);
}

function is_empty(str) {
	return (typeof(str) == 'undefined') || !str;
}

function ltrim(str) {
	return str.replace(/^\s*/, '');
}

function rtrim(str) {
	return str.replace(/\s*$/, '');
}

function trim(str) {
	return ltrim(rtrim(str));	
}

function trim_all_elements(form) {
	var el = Form.getElements(form);
	for (var i = 0; i < el.length; i++) {
		if (el[i].type != 'file') 
			el[i].value = trim(el[i].value);
	}
}
