/**
 * Plugin use to execute AJAX request
 */
(function($){
	
	/**
	 * Execute an AJAX request
	 * @param string url
	 * @param array args [optional]
	 * @param function customCallback [optional]
	 * @param bool async [optional]
	 */
	$.ajaxer = function(url, args, customCallback, async){
		//Init
		url = url ? url : false;
		async = async ? async : false;
		args = args ? args : {};
		args.pageArgs = args.pageArgs ? args.pageArgs : {};
		args.pageArgs.enctype = 'json';
		args.r = Math.random();
		var _customCallback = customCallback ? customCallback : function(){};
		var fullCallback = function(jsonObject){
			//Include CSS contents
			for(id in jsonObject.css){
				$.includeCssCode(id, jsonObject.css[id]);
			}
			//Execute callback
			var data = {
				title: jsonObject.title,
				language : jsonObject.language,
				html: jsonObject.html
			};
			_customCallback(data);
			//Include JS files
			for(id in jsonObject.js){
				$.includeJsCode(jsonObject.js[id]);
			}
		};
		if((url != false) && (url.length > 0)){
			$.ajax({
				url: url,
				dataType: 'json',
				data: args,
				success: fullCallback,
				async: async
			});
		}
	};
})(jQuery);
