/** 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.ref = null;
	this.init = function(aReadyCallback, ref) { this.readyCallback = aReadyCallback; this.ref = ref; }
	this.httpRequest = aHttpRequest;
	thisModule = this;
	this.httpRequest.onreadystatechange = function() {
		if (aHttpRequest.readyState == 4 && aHttpRequest.status == 200) { 
			thisModule.readyCallback(aHttpRequest, thisModule.ref);
		}
	}
	this.getAsync = function(url) {
		this.httpRequest.open('GET', serverURI + url, true); 
		this.httpRequest.send('');
	}
}

function getResponseXML(request) {
	if (window.XMLHttpRequest) {
		return request.responseXML;
	} else if (window.ActiveXObject) {
		var docXML = new ActiveXObject("Microsoft.XMLDOM");
		docXML.validateOnParse = false;
		docXML.async = false;
		docXML.loadXML(request.responseText);
		return docXML;
	}
	return null;
}

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 = getResponseXML(httpRequest);
			var message = get_element_n0t(xml, 'system-message');
			if (message != '') {
				alert(message);
			} 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');
	}
}

function addRankToComment(aLink, aMod, aCommentUID, aOpinion){
	if(!getCookie(aMod+aCommentUID)){
		setCookie(aMod+aCommentUID, aOpinion, 31);
		var myXHR = getXHRInstance();
		if (myXHR) {
			myXHR.init(function(httpRequest) {
				var xmlDoc = getResponseXML(httpRequest);
				if (xmlDoc && xmlDoc.firstChild) {
					var myRetData = '';
					if (IE){
						var myItems = xmlDoc.getElementsByTagName('response');
						myRetData = myItems[0].text;
					} else {
						myRetData = xmlDoc.firstChild.textContent;
					}
					if(IE){
						aLink.innerText = myRetData;
					} else{
						aLink.textContent = myRetData;
					}
				}
			});
			myXHR.getAsync('index.php?module=comment&action=setRank&subMod='+aMod+'&opinion='+aOpinion+'&uid='+aCommentUID+'&postresponse=ajax');
		}
	}
	
	if(aLink.className.indexOf('unactive') == -1){
		aLink.className = aLink.className+' unactive';
		aLink.setAttribute('onclick','');
	}
}

// cookie functions
function setCookie(aName, aValue, aDays){
	var expdate=new Date();
	expdate.setDate(expdate.getDate()+aDays);
	document.cookie = aName+"="+escape(aValue)+";expires="+expdate.toGMTString();
}

function getCookie(aName){
		var nameEQ = aName + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return false;
}

function get_element_n0(node, tagname) {
	if (!node) return null;
	var elements = node.getElementsByTagName(tagname);
	if (elements.length < 1) return null;
	return elements[0];
}

function get_element_n0t(node, tagname) {
	if (!node) return '';
	var elements = node.getElementsByTagName(tagname);
	if (elements.length < 1) return '';
	var element = elements[0];
	return element.text != undefined ? element.text : element.textContent;
}

function directoryCommEdit_handler(form, fieldname) {
	if (fieldname == '_directory-comm_directoryCommData_source') {
		var source =  form.elements[fieldname].value;
		if (source != '' && source.indexOf('http://cibl1015.com/') == 0) {
			var xhrInstance = getXHRInstance();
			if (!xhrInstance) return false;
			xhrInstance.init(downloadSource, form);
			xhrInstance.getAsync('core/Plugins/electionmtl/ajax.php?action=downloadSource&url='+window.encodeURIComponent(source));
			return true;
		}else{
			alert('Vous devez spécifier la source!');
		}
	}
	return false;
}

function downloadSource(httpRequest, form) {
	var xmlDoc = getResponseXML(httpRequest);
	var post = get_element_n0(xmlDoc, 'post');
	if (!post) {
		alert('Erreur d\'importation. Impossible de télécharger l\'article.');
		return false;
	}

	var inputTitle = form.elements['__directory-comm_directoryCommData_title'];
	var inputResume = form.elements['__directory-comm_directoryCommData_resume'];
	var inputContent = form.elements['__directory-comm_directoryCommData_content'];
	var refAudio = form.elements['_directory-comm_directoryCommData_refaudio'];
	if (inputTitle.value != '' && !confirm('Voulez-vous vraiment remplacer le titre et le contenu?')) {
		return false;
	}
	inputTitle.value = get_element_n0t(post, 'title');
	inputResume.value = get_element_n0t(post, 'resume');
	var html_content = get_element_n0t(post, 'html_content');
	inputContent.value = html_content;
	if (tinyMCE) {
		tinyMCE.activeEditor.setContent(html_content, {source_view: true});
	}
	refAudio.value = get_element_n0t(post, 'refaudio');
	return true;
}


