
// ASB, 2008/02/14

function ajaxIndicator( status ) {
	$('#indicator').css( { visibility: ( status == 0 ? "hidden" : "visible" ) } );
}

function ajaxRequest( element_id, url, data, onload_func ) {
	ajaxIndicator(1);
	//alert( "ajaxRequest( '" + element_id + "', '" + url + "' )" );
	//var max = data.length; for( var i = 0; i < max; i++ ){ obj = data[i]; alert( obj.name + '=' + data[obj.name] ); }
/*
	jQuery.post( url, data, function(obj) {
		$('#'+element_id).empty();
		$('#'+element_id).html(obj);
	});
*/
	$('#'+element_id).load( url, data, onload_func );
	ajaxIndicator(0);
}

function ajaxJs( url, data, onload_func ) {
	ajaxIndicator(1);
	//alert( "ajaxJs( '" + url + "' )" );
	jQuery.post( url, data, function(obj) {
		if( typeof(onload_func) == 'function' ) onload_func(); // before or after 'obj' ?

		//alert(obj);
		eval(obj);
		ajaxIndicator(0);
	});

}

function ajaxLink( element_id, anchor, onload_func ) {
	//alert( "ajaxLink( '" + element_id + "', a.href='" + anchor.href + "' )" );
	ajaxRequest( element_id, anchor.href, onload_func );
	return false;
}

function ajaxLinkJs( anchor, onload_func ) {
	//alert( "ajaxLinkJs( '" + anchor.href + "' )" );
	ajaxJs( anchor.href, onload_func );
	return false;
}

function ajaxForm( element_id, form, onload_func ) {
	//alert( "ajaxForm( '" + element_id + "', '" + form.action + "' ), form.length = " + form.length );
//	ajaxRequest( element_id, form.action, form.elements );
	ajaxRequestSubForm( element_id, form.action, form, '', onload_func );
	return false;
}

/** send part of form - only fields with name begin by name_pefix; use action = form.action or other */
function ajaxRequestSubForm( element_id, action, form, name_pefix, onload_func ) {
	//alert( "ajaxSubForm( '" + element_id + "', '" + action + "', [form], '" + name_pefix + "...' )" );
	data = {};
	var max = form.length;
	for( var i = 0; i < max; i++ ) {
		obj = form.elements[i];
		if( obj.name.indexOf(name_pefix) == 0 ) {
			if( 'checkbox' == obj.type ) {
				data[obj.name] = obj.checked;
			} else {
				data[obj.name] = obj.value;
			}
			//alert( obj.name + '=' + data[obj.name] );
		}
	}
	ajaxRequest( element_id, action, data, onload_func );
	return false;
}

function ajaxFormJs( form, onload_func ) {
	//alert( "ajaxFormJs( '" + form.action + "' )" );
	ajaxJs( form.action, form.elements, onload_func );
	return false;
}

// Используется aim.js (submit через скрытый iframe):
// NB! ограничение: если form.action возвращает HTML+JS, возможны проблемы:
// - ошибка для setupAllTabs() @ WebFXTabPane 
function ajaxFormUpload( element_id, form, onload_func ) 
{
	//alert( "ajaxFormUpload( '" + element_id + "', '" + form.action + "' ), form.length = " + form.length );

	res = AIM.submit( form, {
		'onStart' : function() {
			//alert( "ajaxFormUpload(): callback onStart()" );
			ajaxIndicator(1);
			return true;
		},
		'onComplete' : function(response) {
			ajaxIndicator(0);
			//alert( "ajaxFormUpload(): callback onComplete() response:\n" + response );
			$('#'+element_id).empty();
			$('#'+element_id).html(response); // only clean HTML, not work HTML+JS

			if( typeof(onload_func) == 'function' ) {
				//alert(onload_func);
				onload_func();
			}
		}
	});
	//alert(res);
	return res;
}

