/**
 * Fonction AJAX XHR
 *
 * @author     StÃ©phane REMENE <sremene@hachette-livre.fr>
 */

// =================================================================================================================================
// RÃ©cupÃ©ration d'une requÃªte HTTP
// =================================================================================================================================
function getContent(idObject, url, urlImageLoader, sync) {
	return getHttpRequest('POST', url, idObject, sync, false, urlImageLoader);
}

function getHttpRequest(method, url, idObject, sync, hasBody, urlImageLoader) {
	
	if (hasBody == undefined)
		hasBody == false;
		
	if (sync == undefined)
		sync = false;
	
	if (urlImageLoader != undefined) {
		obj = document.getElementById(idObject);
		obj.innerHTML = '<div align="center"><img src="' + urlImageLoader + '" /> Chargement...</div>';
	}
	
	dojo.xhr(
		method.toUpperCase(),
		{ 
			url: url, 
			sync: sync,
			handleAs: 'text',
			timeout: 5000,
			load: function(response, ioArgs) {
				obj = document.getElementById(idObject);
				obj.innerHTML = '<body>' + response + '<body>';
				var allScripts = obj.getElementsByTagName('script');
				var nbScript = allScripts.length;
				
				for (var i=0; i<nbScript; i++) {
					var s = allScripts[i];
					if (s.src && s.src != '') {
						var script = document.createElement('script');
						script.type = 'text/javascript';
						script.text = loadExternalScript(s.src);
						obj.appendChild(script);
					} else {
						var script = document.createElement('script');
						script.type = 'text/javascript';
						script.text = s.text;
						obj.appendChild(script);
					}
				}
				return response;
			},
			error: function(response, ioArgs) {
				console.error('HTTP status code: ', ioArgs.xhr.status);
				return response;
			}
		},
		hasBody
	);
	
	return true;
	
}

// =================================================================================================================================
// Chargement des scripts externes
// =================================================================================================================================
function loadExternalScript(url) {

	var scriptSource = '';

	dojo.xhr(
		'GET',
		{ 
			url: url, 
			sync: true,
			handleAs: 'text',
			timeout: 5000,
			load: function(response, ioArgs) {
				scriptSource = response;
			},
			error: function(response, ioArgs) {
				console.error('HTTP status code: ', ioArgs.xhr.status);
			}
		},
		false
	);
	
	return scriptSource;
	
}

// =================================================================================================================================
// Envoi d'une requÃªte HTTP
// =================================================================================================================================
function sendRequest(url, sync) {
	return sendHttpRequest('POST', url, sync);
}

function sendHttpRequest(method, url, sync, form1) {
	
	if (sync == undefined)
		sync = false;
	
	dojo.xhr(
		method.toUpperCase(),
		{ 
			url: url, 
			sync: sync,
			form: form1,
			handleAs: 'text',
			timeout: 5000,
			load: function(response, ioArgs) {
			},
			error: function(response, ioArgs) {
				console.error('HTTP status code: ', ioArgs.xhr.status);
			}
		},
		false
	);
	
	return true;
	
}

function getXMLHTTP() {

	var xhr = null;
	if (window.XMLHttpRequest) { // Firefox et autres
		xhr = new XMLHttpRequest();
	} else {
		if (window.ActiveXObject) { // Internet Explorer
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					xhr = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e1) {
					xhr = null;
				}
			}
		} else { // XMLHttpRequest non supporté par le navigateur
			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		}
	}
	
	return xhr;
	
}

