window.addEvent('domready', function() {
	sendForm();
});

function captionForms() {
	$$('form').each(function(f) {
		var inputs = f.getElements('input[type=text]');
		inputs.combine(f.getElements('textarea'));
		inputs.each(function(el) {
			new OverText(el);
		});
	});
}

function sendForm() {
	var els = $$('input[type=image]');
	els.combine($$('input[type=submit]'));
	els.each(function(el) {
		addSubmitListener(el);
	});
}

function addSubmitListener(el) {
	var f = el.getParent('form');
	var name = f.get('name');
	if (!name) {
		name = f.get('id');
	}
	var url = name.split('_');
	url = 'ajx/' + url[1] + '.ajx.php';

	f.set('send', {
		'url' : url,
		'method' : 'post',
		onComplete : function(rsp) {
			formAction(f, rsp);
		}
	});
	
	el.addEvent('click', function(e) {
		e.stop();
		if ($('actionMsg')) {
			$('actionMsg').destroy();
		}
		ajx_loading(f);
		f.send();
	});
}

function formAction(el, rsp) {
	var act = rsp.split('|');
	var e = new Element('div', {
		'id' : 'actionMsg'
	});

	switch (act[0]) {
		case 'confirmation' :
			e.set({
				'html' : act[1],
				'class' : 'confirmationMgs'
			});
			e.inject(el, 'before');
			delete el.destroy();
			break;
		case 'warning' :
			e.set({
				'html' : act[1],
				'class' : 'warningMgs'
			});
			e.inject(el, 'before');
			break;
		case 'errorHighlight' :
			highlightErrors(act[2], el);
			e.set({
				'html' : act[1],
				'class' : 'warningMgs'
			});
			e.inject(el, 'before');
			break;
	}

	remove_ajx_loading();
}

function highlightErrors(str, el) {

	var els = str.split('_%%_');
	var inputs = el.getElements('input');
	inputs.combine(el.getElements('select'));
	inputs.combine(el.getElements('textarea'));

	inputs.each(function(itm) {

		if (itm.get('type') === 'image') {
			return;
		}

		var name = itm.get('name');

		if (itm.get('tag') === 'select') {
			itm = itm.getParent('div');
		}

		var lbl = itm.getPrevious('label');
		if (!lbl) {
			lbl = itm.getNext('lable');
		}

		if (!lbl) {
			return;
		}

		lbl.setStyle('color', '#7E7E7E');

		if (els.contains(name)) {
			lbl.setStyle('color', '#ED2D23');
		}
	});
}
