var effectDuration = 1000;

function asynchronizeForms (node) {
	/* get forms in element */
	$j('form', node).submit(function() {
		/* get input fields and values */
		var inputs = [];
		$j(':input', this).each(function(){
			/* use checkboxes and radiobuttons only if checked */
			if(!($j(this).is(':radio') || $j(this).is(':checkbox')) || $j(this).is(':checked'))
				inputs.push(this.name + '=' + escape(this.value));
		});
		/* send request */
		jQuery.ajax({
            data: inputs.join('&'),
            url: this.action,
            type: "POST",
            timeout: 2000,
            /* TODO: error handling */
            error: function(){ console.log("25:Fehler"); },
            /* load returned html to element */
            success: function(ret){
            	$j(node).html(ret);
            	/* recursive call, needed if form returns (with error) */
            	asynchronizeForms (node);
            }
        });
		return false;
	});
};


function loadPageInLayerAdd(url, isAjaxForm){
	if (url.indexOf("=ViewAjax")<0) {
		url = url.replace(/ViewAction=View/,"ViewAction=ViewAjax");
	}
	addAjaxLayer();
	/* load  content into layerAdd*/
	$j('#ajaxContent').load(url, function () {
		/* transform form into ajax form if enabled */
		if(isAjaxForm)
			asynchronizeForms(this);
		/* show finished layerAdd */
		$j('#ajaxLayerAdd, #ajaxLayerBG').fadeIn({queue: false, duration: effectDuration});
	});
}

function addAjaxLayer(){
	/* append nescessary html, if needed */
	if ($j('#ajaxLayerAdd').length==0) {
		$j('.page .main .Content').first().append('<div id="ajaxLayerAdd" class="ajaxLayerAdd"><div id="ajaxContent" class="ajaxContent"></div><div id="ajaxCloseLayerAdd" class="closeButton">{X}</div></div>');
		$j('body').prepend('<div id="ajaxLayerBG" class="ajaxLayerBG"></div>');
	}
	/* assign function to closing button */
	$j('#ajaxCloseLayerAdd, #ajaxLayerBG').click(function() {
		$j('#ajaxLayerAdd, #ajaxLayerBG').fadeOut({queue: false, duration: effectDuration});
	});
}
