function httpRequest() {
	var httpRequest;
	try {
		httpRequest = new XMLHttpRequest();    
	}
	catch (e) {
		try {
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");      
		}
		catch (e) {
			try {
				httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
      		catch (e) {
				httpRequest = false;
			}
		}
	}
	return httpRequest;
}

var infoPopUpId = false;
var infoPopUpFocus = false;
function showInfoPopUp(id) {
	if (infoPopUpId) closeInfoPopUp(infoPopUpId);
	document.getElementById(id).style.display = "block";
	infoPopUpId = id;
	setTimeout("addRemovableEvent(document, 'click', infoPopUpClick)", 10);
	infoPopUpFocus = false;
	addRemovableEvent(document.getElementById(id), 'mouseover', infoPopUpSetFocus);
	addRemovableEvent(document.getElementById(id), 'mouseout', infoPopUpSetBlur);
}
function closeInfoPopUp(id) {
	document.getElementById(id).style.display = "none";
	removeEvent(document, 'click', infoPopUpClick);
	removeEvent(document.getElementById(id), 'mouseover', infoPopUpSetFocus);
	removeEvent(document.getElementById(id), 'mouseout', infoPopUpSetBlur);
	infoPopUpId = false;
}
function infoPopUpClick() {
	if (!infoPopUpFocus) closeInfoPopUp(infoPopUpId);
}
function infoPopUpSetFocus() {
	infoPopUpFocus = true;
}
function infoPopUpSetBlur() {
	infoPopUpFocus = false;
}

function toBigInt(num) {
	if (isNaN(num)) return "0";
	if (num < 1000) {
		num = num.toString();
		return num;
	}
	else if (num < 1000000) {
		num = num.toString();
		return num.slice(0, -3) + "." + num.slice(-3);
	}
	else if (num < 1000000000) {
	    num = num.toString();
		return num.slice(0, -6) + "." + num.slice(-6, -3) + "." + num.slice(-3);
	}
	else {
		num = num.toString();
		return num.slice(0, -9) + "." + num.slice(-9, -6) + "." + num.slice(-6, -3) + "." + num.slice(-3);
	}
}

function toDecimal(num, decimals) {
	if (isNaN(num)) return "0";
	if (num >= 1) {
	    var temp = Math.round(num * Math.pow(10, decimals)).toString();
 	    return temp.slice(0, -decimals) + "," + temp.slice(-decimals);
	}
	else if (num == 0) {
		var temp = '0,';
		for (var i = 0; i < decimals; i++) temp += '0';
		return temp;
	}
	else if (num.toString() == "Infinity") {
		return "&infin;";
	}
	else {
 	    return (Math.round(num * Math.pow(10, decimals)) / Math.pow(10, decimals)).toString().replace(".", ",");
	}
}

function toShowMode(num, mode, key) {
	if (mode == 'relative') return toDecimal(num, 2);
	else if (mode == 'perc_tlds') return toDecimal(100 * num, 1) + '%';
	else if (mode == 'perc_keywords') return toDecimal(100 * num, 1) + '%';
	else return toBigInt(num);
}

function setValue(id, value) {
	var handle;
	if (handle = document.getElementById(id).firstChild) {
		handle.nodeValue = value;
	}
	else {
		//alert(id + " + " + value);
	}
}

function addEvent(handle, type, value){
	if (handle.addEventListener) {
		handle.addEventListener(type, value, false);
	}
	else if (handle.attachEvent) {
		var f = function() {value.call(handle)}
		handle.attachEvent("on" + type, f);
	}
}
function addRemovableEvent(handle, type, value){
	if (handle.addEventListener) {
		handle.addEventListener(type, value, false);
	}
	else if (handle.attachEvent) {
		handle.attachEvent("on" + type, value);
	}
}
function removeEvent(handle, type, value) {
	if (handle.removeEventListener) {
		handle.removeEventListener(type, value, false);
	}
	else if (handle.detachEvent) {
		handle.detachEvent("on" + type, value);
	}
}

function inputFocus(handle, def) {
	if (handle.value == def) {
		handle.value = "";
	}
}
function inputBlur(handle, def) {
	if (handle.value == "") {
		handle.value = def;
	}
	if (handle.id == "input_a" || handle.id == "input") {
		setExactWording();
	}
}
function inputValue(id, value) {
	document.getElementById(id).value = value;
}

function splitWoorden(woorden) {
	var lijst, multi, i, woord;
	lijst = Array();
	multi = false;
	woorden = woorden.split("\n");
	for (i = 0; i < woorden.length; i++) {
		/*woord = woorden[i].replace(/[\n\r]/g, " ");
		if (multi == false && woord != "") lijst[lijst.length] = woord;
		if (multi == false && woord.indexOf("\"") != -1) {
			multi = 1;
			woord = woord.replace("\"", "");
			lijst[lijst.length - 1] = woord;
		}
		if (multi == true && woord.indexOf("\"") != -1) {
			multi = false;
			woord = woord.replace("\"", "");
			if (multi == 1) lijst[lijst.length - 1] = woord;
			else if (multi > 1) lijst[lijst.length - 1] += " " + woord;
		}
		if (multi > 1) lijst[lijst.length - 1] += " " + woord;*/
		woord = woorden[i].replace(/[\n\r]/g, " ");
		if (woord != "") lijst[lijst.length] = woord;
	}
	return lijst;
}

function log(getal) {
	return Math.log(getal) / Math.log(10);
}

function savedUrl(type, key) {
	return "http://www.hitsplitter.com/saved_" + type + "_" + key;
}

function convertEntities(str) {
	var temp = document.createElement('p');
	temp.innerHTML = str;
	return temp.firstChild.nodeValue;
}

function realInt(value, def) {
	value = Math.round(value);
	if (!isNaN(value) && value != Number.NEGATIVE_INFINITY && value != Number.POSITIVE_INFINITY) {
		return value;
	}
	else {
		return def;
	}
}

function getRadioValue(obj) {
	for (var i = 0; i < obj.length; i++) {
		if (obj[i].checked) return obj[i].value;
	}
}

function parseHtmlValue(str, encode) {
	var temp = document.createElement('div');
	temp.innerHTML = str;
	return temp.firstChild ? (encode ? encodeURIComponent(temp.firstChild.nodeValue) : temp.firstChild.nodeValue) : '';
}
