/** get an instance of xml http request, inspired by dmo code */
function getXHRInstance() {
	var httpRequest = null;
	if (window.XMLHttpRequest) {
		httpRequest = new XMLHttpRequest();
		//if (httpRequest.overrideMimeType) {
		//	httpRequest.overrideMimeType('text/xml');
		//}
	} else if (window.ActiveXObject) {
		try { httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); } 
		catch(e) { try { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} }
	}
	if (httpRequest) {
		return new DzXMLHttpRequest(httpRequest)
	}
	return null;
}

/**
 * @param XMLHttpRequest aHttpRequest a generic httpRequest
 */
function DzXMLHttpRequest(aHttpRequest) {
	this.readyCallback = null;
	this.init = function(aReadyCallback) { this.readyCallback = aReadyCallback; }
	this.httpRequest = aHttpRequest;
	thisModule = this;
	this.httpRequest.onreadystatechange = function() {
		if (aHttpRequest.readyState == 4 && aHttpRequest.status == 200) { 
			thisModule.readyCallback(aHttpRequest);
		}
	}
	this.getAsync = function(url) { this.httpRequest.open('GET', serverURI + url, true); this.httpRequest.send(''); }
}

function getContainer(aLink, width, height) {
	var container = aLink.parentNode.parentNode.getElementsByTagName('div')[0];
	var left = ((document.width || document.documentElement.clientWidth) - width)/2;
	var scrollY = window.scrollY || document.documentElement.scrollTop || 0;
	var top =  (scrollY + 100);
	container.style.top = top + 'px';
	container.style.left = left + 'px';
	container.style.width = width + 'px';
	container.style.height = height + 'px';
	container.style.display = 'block';
	return container;
}

function getReportErrorForm(aLink, remodule, refuid) {
	var myXHR = getXHRInstance();
	if (myXHR) {
		myXHR.init(function(httpRequest) {
			var container = getContainer(aLink, 509, 350);
			container.innerHTML = httpRequest.responseText;
			document.message.getElementsByTagName('a')[0].setAttribute('onclick','frm=document.message; if (frm.__type.selectedIndex < 1) {frm.__type.focus(); return false; } return true;');
		});
		myXHR.getAsync('index.php?module=message&action=getReportErrorForm&remodule='+remodule + '&uid='+refuid);
	}
}

function debug_expose(obj, label) {
  var s = '';
  if (label) s += label + ' => ' + obj + '\n';
  for (var i in obj) {
    try {
      s+= i + '=' + obj[i] + '\t';
    } catch(e) {
      s+= i + '=' + 'exception\t';
    }
  }
  alert(s);
}

function sendReportError(type, module, uid) {
	var myXHR = getXHRInstance();
	if (myXHR) {
		myXHR.init(function(httpRequest) {
			var xml = httpRequest.responseXML;
			if (xml && xml.firstChild && xml.firstChild.nodeName.toLowerCase() == 'system-message') {
				alert(xml.firstChild.textContent);
			} else {
				alert("Votre rapport d'erreur a été envoyé avec succès à l'administrateur du site.");
			}
		});
		myXHR.getAsync('index.php?module=message&action=sendReportErrorForm&uid='+uid+'&__remodule='+module + '&__type='+type+'&getxml');
	}
}
