$.extend({
	system : {
		/**
		 * Ajax Request
		 * 
		 * @param string mode
		 * @param function func
		 * @param string additionalQuery
		 * @param object additionalData
		 * @return void
		 */	
		request : function(mode, func, additionalQuery, additionalData)
		{
			// URL Query
			if (typeof additionalQuery == 'string')
			{
				additionalQuery = '&'+additionalQuery;
			}
			else
			{
				additionalQuery = '';
			}
			
			// Post Data
			var data = {};
			if (typeof additionalData == 'object')
			{
				data = additionalData;
			}
			
			data.mode = mode;
			
			$.ajax({
				url : conf.url_dir+'bin/request/index.php?site='+conf.site+'&id='+conf.id+additionalQuery,
				type : 'POST',
				data : data,
				dataType : 'json',
				success : function(data, status, httpRequest)
				{
					if (typeof func == 'function')
					{
						func(data);
					}
				}
			});
		},
		
		/**
		 * Skript Parameter ermitteln
		 * 
		 * @param string name
		 * @return object
		 */
		getScriptParams : function(name)
		{
			var script = $('script[src*='+name+'.js]');
			var params = {};
			
			if (script.length)
			{
				var matches = script.attr('src').match(/[^\?&]+=[^&]+/g);

				for (var i=0;i<matches.length;i++)
				{
					var param = matches[i].split('=');
					var key = param[0], value = param[1];
					
					switch(true)
					{
						// Boolean
						case (value == 'true' || value == 'false'):
							value = eval(value);
							break;
							
						// Integer
						case /^\d+$/.test(value):
							value = parseInt(value);
							break;
							
						// Float
						case /^\d+\.\d+$/.test(value):
							value = parseFloat(value);
							break;
					}
					
					params[key] = value;
				}
			}

			return params;
		}
	}
});
