var fwajax =
{
	type: 'POST',
	dataType: 'json',
	langSegment: '/',
	verbose: true,

	callback_globalAjaxError: function( XMLHttpRequest, textStatus, errorThrown)
	{
		if(fwajax.verbose)
			alert('ajax error: ' + textStatus );
	}

	,

	phpExecute : function(controlObject)
	{


		var obj=new Object;

		obj[ '_fwajax_url' ] = controlObject.url;
		obj[ '_fwajax' ] = '_fwajax';

		for(var i=1; i<arguments.length; i++)
		{
			var objIx='_fwajax_a' + (i-1);
			obj[ objIx ]=arguments[i];
		}

		var newUrl=fwajax.langSegment;
		if( controlObject.url.length >= 1 && controlObject.url.charAt(0)=='/')
			newUrl += controlObject.url.substr(1);
		else
			newUrl += controlObject.url;

		$.ajax(
			{
				url: newUrl,
				data: obj,
				success: fwajax.jsExecute,
				//error: callback_error_test2,
				timeout: 8000
			}
		);
	} // phpExecute

	,


	jsExecute : function(controlObject, statusText)
	{
		if( typeof( controlObject['_fwajax'] ) == 'undefined' || controlObject['_fwajax']!='_fwajax')
		{
			if(fwajax.verbose)
			{
				alert('jsExecute: Invalid JSON');
			}

			return;
		}

		if( typeof( controlObject['_fwajax_callback'] ) == 'undefined' || controlObject['_fwajax_callback']=='')
		{
			return;
		}

		var callback=controlObject['_fwajax_callback'];

		var evalArgs='';

		for(var i=0; ; i++)
		{
			var ix='_fwajax_a'+i;

			var argType= typeof( controlObject[ix] );

			if( argType == 'undefined')
				break;

			if(evalArgs != '')
				evalArgs += ', ';

			if( argType == 'string')
			{
				//evalArgs += '"' + controlObject[ix].replace(/"/g, '\\"') + '"';
				evalArgs += '"' + controlObject[ix] + '"';
			}
			else
			{
				evalArgs +=  controlObject[ix] ;
			}
		}

		var evalCode=callback+'(' + evalArgs + ')';

		eval( evalCode );

	} // jsExecute
};

$.ajaxSetup(
				{
					type: "POST",
					dataType: "json",
					error: fwajax.callback_globalAjaxError
				}
			  );

