/**
 * Ajax manager
 * 
 * @author Antoine Ughetto
 * @version 0.2
 * 
 * @package P6_framework
 * @subpackage javascript
 */
var P6_xmlRequest = {
	'div_dest':null,
	'complete':null,
	
	'handleSuccess':function(o){
		if(o.responseText != "" && this.div_dest){
			this.div_dest.innerHTML = o.responseText;	
			var response = o.responseText;
			var myRegExp = /<script([^>]*)>([\s\S]*?)<\/script>/igm;
			while((tabJS = myRegExp.exec(response)) != null){
				 eval(tabJS[2]);
			}
			if(this.complete != null){					
				eval(this.complete);
			}				
		}		
	},
	'handleFailure':function(o){
		alert( o.status + " " + o.statusText);
	},
	'get':function(objet) {
		var url = objet.url;
		var call = callback;
		var flux = '';
		var type = "POST";
		
		this.div_dest = document.getElementById(objet.id);
		if(!this.div_dest){
			this.div_dest = document.getElementsByTagName("body")[0];
		}
		if(objet.callback != undefined){
			call = objet.callback;
		}
		if(objet.flux != undefined){
			flux = objet.flux;
		}
		if(objet.type != undefined){
			type = objet.type;
		}
		
		if(objet.complete != undefined){			
			this.complete = objet.complete;	
		}else{
      this.complete = null;
    }
		
		if(objet.start != undefined){
			eval(objet.start);
		}
		if(type == "POST"){
			YAHOO.util.Connect.resetFormState();
			YAHOO.util.Connect.asyncRequest('POST', objet.url , call, flux);
		}
		if(type == "FORM"){
			YAHOO.util.Connect.resetFormState();
			YAHOO.util.Connect.setForm(document.getElementById(objet.formId), false);
			YAHOO.util.Connect.asyncRequest('POST', objet.url, call);
		}
		if(type == "UPLOAD"){
			if(objet.callback != undefined) callbackUpload = objet.callback;
			YAHOO.util.Connect.resetFormState();
			YAHOO.util.Connect.setForm(document.getElementById(objet.formId), true);
			YAHOO.util.Connect.asyncRequest('POST', objet.url, callbackUpload);
		}
		
		if(objet.indicator != undefined){
			this.div_dest.innerHTML = '<span style="background: url(\''+objet.indicator+'\') no-repeat left center;padding-left:20px;">Loading...</span>';
		}
		
	}
};

/**
*
*	Classic callback
*
**/
var callback ={
	success: P6_xmlRequest.handleSuccess,
	failure: P6_xmlRequest.handleFailure,
	scope:P6_xmlRequest,
	argument: "ok"
};

/**
*
*	Upload callback
*
**/
var callbackUpload = {
	upload : P6_xmlRequest.handleSuccess,
	failure: P6_xmlRequest.handleFailure,
	scope:P6_xmlRequest,
	argument: "ok"
}
