window.AJAX = function(url,options){		
	options.url = url;
	if (!options) options = {};
	var onSuccessFunc = options.onSuccess;
	
	options.evalScripts = false;
	options.evalResponse = false;
	
	options.onSuccess = function(rps, xml) {
		var scripts = {pre: [], post: []},
		text = rps.replace(/<script([^>]*)>([\s\S]*?)<\/script>/gi, function(){
			scripts[arguments[1].contains("_execpre") ? "pre" : "post"].include(arguments[2]);
			return "";
		});
		
		scripts.pre.each($exec);
		if ($type(onSuccessFunc) == "function") onSuccessFunc(text, xml);
		scripts.post.each(function(el){
			$exec(el);
		});
	};
	
	var newRequest = new Request(options);
	newRequest.success = newRequest.onSuccess.bind(newRequest);
	newRequest.send(options.data+'&ajax=1');	
};

/* action.method?var=1&var=2 */
window.Action = function(request,success,failure){
	var failure = failure ? failure : function(){};
	var request = request.split('?');
	AJAX('/',{
		data:'action='+request,
		onSuccess:function(ret){
			success && success(ret);
		},
		onFailure:function(ret){
			failure();
		}
	});
};

window.ajaxUploadForm = function(idform,onLoadFunc){
	var ret = '';
	var onLoadFunc = (onLoadFunc) ? onLoadFunc : (function(ret){});
	
	window.addEvent('domready', function() {
		var form = $(idform);
		form.adopt(new Element('input',{ type:'hidden', name:'ajax', value:'1' }));
		var frameid = 'frame'+Math.floor(Math.random()*11*Math.random()*11);
		var frame = new Element('iframe',{ 'name':frameid, 'id':frameid, 'styles':{ 'display':'none' } });
		frame.addEvent('load',function(){
			var body = $(frameid).contentWindow.document.body;
			var ret = $(body).get('text').trim();
			if (ret) onLoadFunc(ret);
		});
		$(document.body).adopt(frame);
		
		$(form).set({
			'target':frameid
		});
	});
};
