/*
new MultiAjax({update: "result"}).send("./optacheck", "type=blahdiblah");

*/
MultiAjax = new Class({
	Extends: Request,

	options: {
		multiple: true,
		update: false,
		autoCancel: true
	},

	initialize: function( options){
		this.parent(options);
		if(this.options.update && $(this.options.update))
		{
			$(this.options.update).set('html','<center><img src="./images/wait.gif"><br>Even geduld a.u.b.</center>');
			$(this.options.update).set('slide', {duration: 'short', transition:  Fx.Transitions.Quint.easeInOut});		
			$(this.options.update).setStyle('display','block').get('slide').hide();
		}
		
		if($('statusDiv'))
		{
			$('statusDiv').set('slide', {duration: 'short', transition: Fx.Transitions.Quint.easeInOut});		
			$('statusDiv').setStyle('display','block').get('slide').hide();
		}
	}, 


	
	send: function(theUrl, theData){

		if($('statusDiv'))	$('statusDiv').slide('in');
		if($(this.options.update)) $(this.options.update).setStyle('height','').slide('in');
		;
		if(!$defined(theData)) theData = {};
		return this.parent({url: theUrl,  data: theData});
	},


	success: function(text, xml){
		if($(this.options.update)) 
		{
			$(this.options.update).get('slide').slideOut().chain(function() {
				$(this.options.update).empty().set('html', text).get('slide').slideIn();	
			}.bind(this));
		}
		if (this.options.multiple) this.updateMultiple(text);
	
		if (this.options.updateMultiple) this.updateMultiple(text);
		if($('statusDiv'))	$('statusDiv').slide('out');
		return text.stripScripts.delay(350, text, true);
				
		this.onSuccess(text, xml);
	},

	updateMultiple: function(text){
		try	{ 
			eval("var inputObject = "+ text);	// we're expecting a JSON object, eval it to inputObject
					for (var i in inputObject) { 
						if(i == 'script') { eval(inputObject[i]); continue; }
						$(i).empty().set('html', inputObject[i]);
					} // if it's not script, update the corresponding div
				} 
		catch (e) {
			alert('There was an error ( '+e.message+') processing: '+text); 
		} // in case of an error	
		
	
	}
});
