/**
 * @author Cientista
 */

function AjaxForm(boxId) {
	var divAjax = null;
	var divContent = null;
	var imgLoading = null;
	var button = null;
	var form = null;
	var _boxId = null;
	var _this = this;
	
	this.element = function(elemName) {
		var query = "#" + _boxId + " [name=" + elemName + "]"
		return $(query).get(0);
	}
	
	this.post = function() {
		var wajax = new Ajax();
		
		_this.onPost();
		
		Utils.setDisplay(divAjax, false);
		Utils.setDisplay(button, false);
		Utils.setDisplay(imgLoading, true);
		
		wajax.onReturn = onReturn;
		wajax.postForm(form);
		
		return false;
	}
	
	this.reenable = function() {
		var fade = new Fader();
		var fade2 = new Fader();
		
		form.reset();
		fade.fadeIn(divContent);
		Utils.setDisplay(button, true);
	}
	
	this.aButton = function() { return button; }
	
	this.onOk = function() {} // Should overwrite
	this.onPost = function() {} // Should overwrite
	this.onFailed = function() {} // Should overwrite
	this.form = null;
	
	parseElements();
	
	function onReturn(wajax) {
		var className = "green";
		var fade = new Fader();
		var fadeb = new Fader();
		
		if (!wajax.APRok) { className = "red"; }
		
		divAjax.innerHTML = '<span class="'+className+'">'+wajax.message+"</span>";
		
		if (wajax.APRok) {
			fade.fade(imgLoading, divAjax);
			fadeb.fadeOut(divContent);
			fadeb.onFinish = function() {
				_this.onOk();
			}
		}
		else {
			fade.fade(imgLoading, button);
			fadeb.fadeIn(divAjax);
			_this.onFailed();
		}
	}
	
	function parseElements() {
		var box = document.getElementById(boxId);

		if (box == null) alert("AjaxForm: Box not defined");

		for (node in box.childNodes) {
			var elem = box.childNodes[node];
			
			if (elem.className == "boxcontent") parseContent(elem);
			if (elem.className == "boxfooter") parseFooter(elem);
		}
		
		_this.form = form;
		_boxId = boxId;
		button.onclick = _this.post;
		form.onsubmit = _this.post;
	}
	
	function parseContent(div) {
		divContent = div;
		for (node in div.childNodes) {
			var elem = div.childNodes[node];

			if (elem.nodeName == "FORM") form = elem;
		}
	}
	
	function parseFooter(divFooter) {
		for (node in divFooter.childNodes) {
			var elem = divFooter.childNodes[node];
			
			if (elem.className == "ajax") divAjax = elem;
			if (elem.className == "js button") button = elem;
			if (elem.className == "postbutton") button = elem;
			if (elem.tagName == "IMG") imgLoading = elem;
		}
	}
}
