var landen = [
	// land, inwoners, nice, al lid, niet/voor/tegen/onth, kort
	// bron inwonertallen: CIA World Factbook (schattingen voor juli 2005)
	['België', 10364388, 12, 1, 0, 'be'], 
	['Bulgarije', 7450349, 10, 0, 0, 'bu'], 
	['Cyprus', 780133, 4, 1, 0, 'cy'], 
	['Denemarken', 5432335, 7, 1, 0, 'da'], 
	['Duitsland', 82431390, 29, 1, 0, 'de'], 
	['Estland', 1332893, 4, 1, 0, 'ee'], 
	['Finland', 5223442, 7, 1, 0, 'fi'], 
	['Frankrijk', 60656178, 29, 1, 0, 'fr'], 
	['Griekenland', 10668354, 12, 1, 0, 'gr'], 
	['Hongarije', 10006835, 12, 1, 0, 'hu'], 
	['Ierland', 4015676, 7, 1, 0, 'ei'], 
	['Italië', 58103033, 29, 1, 0, 'it'], 
	['Kroatië', 4495904, 0, 0, 0, 'kr'], 
	['Letland', 2290237, 4, 1, 0, 'lv'], 
	['Litouwen', 3596617, 7, 1, 0, 'li'], 
	['Luxemburg', 468571, 4, 1, 0, 'lu'], 
	['Malta', 398534, 3, 1, 0, 'mt'], 
	['Nederland', 16407491, 13, 1, 0, 'nl'], 
	['Oostenrijk', 8184691, 12, 1, 0, 'at'], 
	['Polen', 38635144, 27, 1, 0, 'pl'], 
	['Portugal', 10566212, 12, 1, 0, 'pt'], 
	['Roemenië', 22329977, 14, 0, 0, 'ro'], 
	['Slovenië', 2011070, 4, 1, 0, 'si'], 
	['Slowakije', 5431363, 7, 1, 0, 'sk'], 
	['Spanje', 40341462, 27, 1, 0, 'sp'], 
	['Tsjechië', 10241138, 12, 1, 0, 'cz'], 
	['Turkije', 69660559, 0, 0, 0, 'tu'], 
	['Ver. Kon.rijk', 60441457, 29, 1, 0, 'uk'], 
	['Zweden', 9001774, 10, 1, 0, 'se']
];
var drempelsnice = [232, 258, 0, 0];
var bevolkingsdrempel = 0.65;
var ninwoners = [0, 0, 0]; // array [voor, tegen, onth]
var nlanden = [0, 0, 0]; // array [voor, tegen, onth]
var totinwoners, totlanden;
var balken = ['landen', 'inwoners'];
var keuzes = ['voor', 'tegen', 'onth'];

function haalEl(id) {
	return document.getElementById ? document.getElementById(id) : false;
}

function zetpunt(x) {
	return x.substr(0,x.length-3) + "." + x.substr(x.length-3);
}

function duizendtalpunt(tal) {
	tal = tal.toString();
	while ((tal.length >4) && ((tal.indexOf(".")<0) || (tal.indexOf(".")>3)) ) {
		p = tal.indexOf(".");
		tal = zetpunt((p<0)?tal:tal.substr(0, p)) + ((p<0)?"":tal.substr(p));
	}
	return tal;
}


function toonstand() {
	haalEl("balklanden").innerHTML = '<img src="/pix/balk_voor.png" hspace="0" width="' + Math.max(Math.round(200*(nlanden[0]/totlanden)), 1) + '" style="position: absolute; left: 0; top: 0;"><img src="/pix/balk_onth.png" hspace="0" width="' + Math.max(Math.round(200*(nlanden[2]/totlanden)),1) + '" style="position: absolute; top: 0; right: ' + Math.round(200*(nlanden[1]/totlanden)) + 'px;"><img src="/pix/balk_tegen.png" hspace="0" width="' + Math.max(Math.round(200*(nlanden[1]/totlanden)), 1) + '" style="position: absolute; top: 0; right: 0;"><div id="drempellanden"></div>';
	haalEl("balkinwoners").innerHTML = '<img src="/pix/balk_voor.png" hspace="0" width="' + Math.max(Math.round(200*(ninwoners[0]/totinwoners)), 1) + '" style="position: absolute; left: 0; top: 0;"><img src="/pix/balk_onth.png" hspace="0" width="' + Math.max(Math.round(200*(ninwoners[2]/totinwoners)),1) + '" style="position: absolute; top: 0; right: ' + Math.round(200*(ninwoners[1]/totinwoners)) + 'px;"><img src="/pix/balk_tegen.png" hspace="0" width="' + Math.max(Math.round(200*(ninwoners[1]/totinwoners)), 1) + '" style="position: absolute; top: 0; right: 0;"><div id="drempelinwoners" style="background: url(/pix/balk_'+(bevolkingsdrempel*100)+'.png)"></div>';
	haalEl("datalandenvoor").innerHTML = (((Math.floor((nlanden[0]/totlanden)*1000)/10)+"").replace(/\./i, ",")).split(",") + "% (" + nlanden[0] + ')';
	haalEl("datainwonersvoor").innerHTML = (((Math.floor((ninwoners[0]/totinwoners)*1000)/10)+"").replace(/\./i, ",")).split(",") + "%";
	haalEl("datalandentegen").innerHTML = (((Math.floor(((nlanden[1]/totlanden)+(nlanden[2]/totlanden))*1000)/10)+"").replace(/\./i, ",")).split(",") + "% (" + (nlanden[1] + nlanden[2]) + ')';
	haalEl("datainwonerstegen").innerHTML = (((Math.floor(((ninwoners[1]/totinwoners)+(ninwoners[2]/totinwoners))*1000)/10)+"").replace(/\./i, ",")).split(",") + "%";
}

function markeer(id, wat) {
	for (var i = 0; i < keuzes.length; i++) {
		haalEl(keuzes[i]+id).className = (i == wat ? 'high' : 'low');
	}
}

function toonstatus() {
	if ( ((nlanden[1]/totlanden) + (nlanden[2]/totlanden) > 1 - 0.55)
			|| (nlanden[1] + nlanden[2] > totlanden - 15) ) {
		haalEl('statusvoorstel').innerHTML = '<strong>voorstel afgewezen</strong> (onvoldoende landen voor)';
	} else if ((ninwoners[0]/totinwoners) >= bevolkingsdrempel && (nlanden[0]/totlanden) >= 0.55 && nlanden[0] >= 15) {
		haalEl('statusvoorstel').innerHTML = '<strong>voorstel aangenomen</strong> (vereiste meerderheden behaald)';
	} else if ((ninwoners[1]/totinwoners) + (ninwoners[2]/totinwoners) >= (1 - bevolkingsdrempel) && nlanden[1] + nlanden[2] >= 4) {
		haalEl('statusvoorstel').innerHTML = '<strong>voorstel afgewezen</strong> (er is een blokkerende minderheid)';
	} else if (nlanden[0] + nlanden[1] + nlanden[2] == totlanden
			&& nlanden[1] + nlanden[2] < 4) {
		haalEl('statusvoorstel').innerHTML = '<strong>voorstel aangenomen</strong> (minderheid te klein)';
	} else if (nlanden[0] + nlanden[1] + nlanden[2] == totlanden) {
		haalEl('statusvoorstel').innerHTML = '<strong>voorstel afgewezen</strong> (vereiste meerderheid is niet behaald)';
	} else {
		haalEl('statusvoorstel').innerHTML = 'onbeslist';
	}
}

function herstel() {
	haalEl('statusvoorstel').innerHTML = '';
	haalEl('balklanden').innerHTML = '<div id="drempellanden"></div>';
	haalEl('balkinwoners').innerHTML = '<div id="drempelinwoners" style="background: url(/pix/balk_'+(bevolkingsdrempel*100)+'.png)"></div>';
	haalEl('datainwonersvoor').innerHTML = '';
	haalEl('datainwonerstegen').innerHTML = '';
	haalEl('datalandenvoor').innerHTML = '';
	haalEl('datalandentegen').innerHTML = '';
	ninwoners = [0, 0, 0]; nlanden = [0, 0, 0];
	for (var i = 0; i <landen.length; i++) {
		landen[i][4] = 0;
	}
	var allehrefs = document.getElementsByTagName("a");
	for (var i = 0; i <allehrefs.length; i++) {
		if (allehrefs[i].id.indexOf('voor') == 0) allehrefs[i].className = 'low'; 
		if (allehrefs[i].id.indexOf('tegen') == 0) allehrefs[i].className = 'low'; 
		if (allehrefs[i].id.indexOf('onth') == 0) allehrefs[i].className = 'low'; 
	}
}

function keuze(wat, id) {
	switch(landen[id][4]) {
		case 0: // eerste klik
			ninwoners[wat] += landen[id][1];
			nlanden[wat]++;
			break;
		case 1: // was voor
			switch(wat) {
				case 0: break;
				default: 
					ninwoners[0] -= landen[id][1];
					ninwoners[wat] += landen[id][1];
					nlanden[0]--;
					nlanden[wat]++;
					break;
			}
			break;
		case 2: // was tegen
			switch(wat) {
				case 1: break;
				default: 
					ninwoners[1] -= landen[id][1];
					ninwoners[wat] += landen[id][1];
					nlanden[1]--;
					nlanden[wat]++;
					break;
			}
			break;
		case 3: // was onth
			switch(wat) {
				case 2: break;
				default: 
					ninwoners[2] -= landen[id][1];
					ninwoners[wat] += landen[id][1];
					nlanden[2]--;
					nlanden[wat]++;
					break;
			}
			break;
	}
	landen[id][4] = wat+1;
	if (nlanden[wat] < 0) nlanden[wat] = 0;
	if (ninwoners[wat] < 0) ninwoners[wat] = 0;
	toonstand();
	markeer(id, wat);
	toonstatus();
}

function haalhtml(land, id) {
	return '<p><a class="info" id="info'+id+'" href="#"><img src="/pix/info.png" height=15 width=15 alt="" title="" align="top" border="0" id="pietje"></a> ' + land + '<br><span class="voor"><a href="#" onclick="keuze(0, '+ id +'); return false;" id="voor' + id + '" class="low">voor</a></span><span class="tegen"><a href="#" onclick="keuze(1, '+ id +'); return false;" id="tegen' + id + '" class="low">tegen</a></span><span class="onth"><a href="#" onclick="keuze(2, '+ id +'); return false;" id="onth' + id + '" title="onthouding" class="low">onth.</a></span></p>';
}

function toonlanden() {
	var hrefs = document.getElementsByTagName('a');
	if (arguments.length == 1 && arguments[0] == true) {
		// lijst eerst wissen
		herstel();
		haalEl("blokjes").innerHTML = '';
		// events verwijderen
		for (var i = 0; i < hrefs.length; i++) {
			if (hrefs[i].className == 'info' && hrefs[i].detachEvent) {
				hrefs[i].detachEvent('onclick', doeniets);
				hrefs[i].detachEvent('onmouseover', toonboks);
				hrefs[i].detachEvent('onmouseout', verbergboks);
			} else if(hrefs[i].className == 'info' && hrefs[i].removeEventListener) {
				hrefs[i].removeEventListener('click', doeniets, false);
				hrefs[i].removeEventListener('mouseover', toonboks, false);
				hrefs[i].removeEventListener('mouseout', verbergboks, false);
			}
		}
	}
	totinwoners = 0;
	totlanden = 0;
	var dehtml = new Array();
	var j = 0;
	for (var i = 0; i < landen.length; i++) {
		if (landen[i][3] == 1) {
			haalEl("blokjes").innerHTML += haalhtml(landen[i][0], i);
			totinwoners += landen[i][1];
			totlanden++;
			j++;
		}
	}
	// eventhandlers voor info-tooltips aanmaken
	for (var i = 0; i < hrefs.length; i++) {
		if (hrefs[i].className == 'info' && hrefs[i].attachEvent) {
			hrefs[i].attachEvent('onclick', doeniets);
			hrefs[i].attachEvent('onmouseover', toonboks);
			hrefs[i].attachEvent('onmouseout', verbergboks);
		} else if(hrefs[i].className == 'info' && hrefs[i].addEventListener) {
			hrefs[i].addEventListener('click', doeniets, false);
			hrefs[i].addEventListener('mouseover', toonboks, false);
			hrefs[i].addEventListener('mouseout', verbergboks, false);
		}
	}
}

function doeniets() {return false;}
function toonboks(e) {
	if (!e) var e = window.event;
	var linkID = e.srcElement ? e.srcElement.parentNode.id : this.id;
	var boks = haalEl('infoboxje');
	boks.innerHTML = '<img src="/media/vlaggen/'+landen[linkID.substr(4)][5]+'.png" height="15"> ' + landen[linkID.substr(4)][0] + '<br>Inwoners: ' + duizendtalpunt(landen[linkID.substr(4)][1]);
	boks.style.display = 'block';
	var posx = (typeof e.pageX != 'undefined') ? e.pageX 
		: e.clientX + (document.documentElement ? document.documentElement.scrollLeft 
			: document.body.scrollLeft);
	var posy = (typeof e.pageY != 'undefined') ? e.pageY 
		: e.clientY + (document.documentElement ? document.documentElement.scrollTop 
			: document.body.scrollTop);
	boks.style.top = posy - 20 + 'px';
	boks.style.left = posx + 10 + 'px';
}
function verbergboks() {
	haalEl('infoboxje').style.display = 'none';
}

function erbij(kort) {
	var land;
	switch(kort) {
		case 'bu': land = 'Bulgarije'; break;
		case 'kr': land = 'Kroatië'; break;
		case 'ro': land = 'Roemenië'; break;
		case 'tu': land = 'Turkije'; break;
	}
	for (var i = 0; i < landen.length; i++) {
		if (landen[i][0] == land) {
			landen[i][3] = (landen[i][3] == 1 ? 0 : 1);
		}
	}
	toonlanden(true);
}

function toggletoon(id) {
	if (haalEl(id).style.display == "none" 
		|| haalEl(id).style.display == "") {
			haalEl(id).style.display = "block";
	} else {
		haalEl(id).style.display = "none";
	}
}

function stemvariant(knopID) {
	if (haalEl(knopID).value == 0 && haalEl(knopID).checked == true) {
		bevolkingsdrempel = 0.65;
		haalEl("drempelinwoners").style.background = 'url("/pix/balk_65.png")';
	} else if (haalEl(knopID).value == 1 && haalEl(knopID).checked == true) {
		bevolkingsdrempel = 0.72;
		haalEl("drempelinwoners").style.background = 'url("/pix/balk_72.png")';
	}
	toonstatus();
}

function sortbycol_0(a,b) {
	if (a[0] < b[0]) { return -1; }
	if (a[0] > b[0]) { return 1; }
	return 0;
}
function sortbycol_1(a,b) {
	if (a[1] < b[1]) { return -1; }
	if (a[1] > b[1]) { return 1; }
	return 0;
}

function sorteerlanden(knopID) {
	if (haalEl(knopID).value == 0 && haalEl(knopID).checked == true) landen.sort(sortbycol_0);
	if (haalEl(knopID).value == 1 && haalEl(knopID).checked == true) landen.sort(sortbycol_1);
	toonlanden(true);
}


