var order_requestindex=new Array();
var order_request_timeouts=new Array();
var order_callbacks=new Array();

function OrderSetCallback(divid,cb)	
{
	order_callbacks[divid]=cb;	
}


function OrderProcess(divid,mode,update,redraw,params)	
{
	//parameters to pass

  	if(!params)	params=new Array();
	params['mode']=mode;
	params['divid']=divid;

	//any inputs, selects, text areas in the current div
	var inputs=jQuery('#'+divid+" INPUT");
	for(var i=0;i<inputs.length;i++)
	{
		if(inputs[i].type=='radio')
		{
		   	if(inputs[i].checked)
			  	params[inputs[i].name]=inputs[i].value;
		}
		else if(inputs[i].type=='checkbox')
		{
		   	if(inputs[i].checked)
			  	params[inputs[i].name]=inputs[i].value;
		}
		else
		  	params[inputs[i].name]=inputs[i].value;
	}
	var selects=jQuery('#'+divid+" SELECT");
	for(var i=0;i<selects.length;i++)
	  	params[selects[i].name]=selects[i].value;	
	var textareas=jQuery('#'+divid+" TEXTAREA");
	for(var i=0;i<textareas.length;i++)
	  	params[textareas[i].name]=textareas[i].value;	

	//request index is null if there has not been a request yet.	  	
	order_requestindex[divid]=order_requestindex[divid]?order_requestindex[divid]:0;
	order_requestindex[divid]++;

	params['requestindex']=order_requestindex[divid];

	//show loading, and set ajax processing flags (do an ajax 'update' action, and/or redraw....)
	for(var i=0;i<redraw.length;i++)
	{
		if(redraw[i])
			OrderShowLoading(redraw[i],true);  //if we're going to redraw, show loading indication
		if(redraw[i]==divid)
			params['redraw']=true;				//if we're updating, set AJAX processing redraw falg
	}

	//show loading, and set ajax processing flags (do an ajax 'update' action, and/or redraw....)
	for(var i=0;i<update.length;i++)
	{
		if(update[i]==divid)
			params['update']=true;				//if we're updating, set AJAX processing update falg
	}

	if(!params['timeout'])	params['timeout']=10000;
	else					params['timeout']*=2;

	//post the ajax request, set w/call backs.
	//if no response after 10 seconds, resubmit!
	AjaxRequest.post(
		{
			'url':'/ajax/order_process.php',
			'parameters':params,
			'onComplete':function(request){OrderProcessComplete(divid,mode,update,redraw,request)},
			'timeout':params['timeout'],
			'onTimeout':function(request){OrderProcess(divid,mode,update,redraw,params)}
		}
	);		
}

function OrderProcessComplete(divid,mode,update,redraw,request)
{
	/*
	  	//DEBUG
	 	params=new Array();
		params['mode']=mode;
		params['divid']=divid;
		params['complete']='COMPLETE';
		params['requestindex']=request.parameters['requestindex'];
		params['requestindex']=order_requestindex[divid];
		AjaxRequest.post(
			{
				'url':'/ajax/order_process.php',
				'parameters':params,
				'onComplete':function(request){},
			}
		);	
	*/	

	//request came back, we'll just respond to the answer to most recent request on a given div....
	if(request.parameters['requestindex']>=order_requestindex[divid])
	{
	  	//load HTML we got back, if we're supposed to redraw ourselves....
		for(var i=0;i<redraw.length;i++)
		{
			if(redraw[i]==divid)
			  	jQuery("#"+divid).html(request.responseText);		  
		}
		//order_requestindex[divid]++;  
		
		//do any daisy chained requests....
		for(var i=0;i<update.length;i++)
		{
			if(update[i]==divid)//don't resend same action.
				update[i]='';
			else if(update[i])		//but do resend others.
				OrderProcess(update[i],mode,update,redraw);
		}
		for(var i=0;i<redraw.length;i++)
		{
			if(redraw[i]==divid)//don't resend same action.
				redraw[i]='';	
			else if(redraw[i])		//but do resend others.
				OrderProcess(redraw[i],mode,update,redraw);
		}

		//callbacks
		if(order_callbacks[divid])	
			eval(order_callbacks[divid]);

		//eval any scripts contained in the response....
//		var scripts=jQuery('SCRIPT',request.responseText);
//	  	for(var i=0;i<scripts.length;i++)
//			eval(scripts.get(i).innerHTML);		
		
		//no longer loading			
		OrderShowLoading(divid,false);		
	}
}

function OrderShowLoading(divid,show_loading)
{
	if(!show_loading && divid)
	{
		jQuery('#'+divid).removeClass('loading');	  
	}
	else if(divid)
	{
		jQuery('#'+divid).addClass('loading');	  
	}
  
}


