function loadXMLDoc(url, vars, GetOrPost, callBack) {
	req = false;
    if(window.XMLHttpRequest) { //branch for native XMLHttpRequest object
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    } else if(window.ActiveXObject) { // branch for IE/Windows ActiveX version
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	if(req) {
		req.onreadystatechange = callBack;
		if (GetOrPost == "POST") {
			req.open("POST", url, true);
			req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //for POST request
		} else {
			req.open("GET", url, true);
		}
		req.send(vars);
	}
}

//generic addevent function
//kudos to http://www.onlinetools.org/articles/unobtrusivejavascript/chapter4.html and scott andrew lepera
function addEvent(obj, evType, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, false);
		return true;
	} else if (obj.attachEvent) {
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	} else {
		return false;
	}
}

function addOnClick(selobj, c, maxdivs) {
	if(window.addEventListener){ // Mozilla, Netscape, Firefox
		selobj.addEventListener("change", function() { updateDivs(c, maxdivs); }, false);
	} else { // IE
		selobj.attachEvent("onchange", function() { updateDivs(c, maxdivs); } );
	}
}

function removeChildren(obj) {
	while (obj.firstChild) {
		obj.removeChild(obj.firstChild);
	}
}

function showForm() {
	divForm = document.getElementById('replyForm');
	pButt = document.getElementById('buttShowForm');
	pButt.style.visibility = 'hidden';
	pButt.style.display = 'none';
	divForm.style.visibility = 'visible';
	divForm.style.display = 'inline';
}

function showElement(el) {
	oEl = document.getElementById(el);
	oEl.style.visibility = 'visible';
	oEl.style.display = 'inline';
}

function hideElement(el) {
	oEl = document.getElementById(el);
	oEl.style.visibility = 'hidden';
	oEl.style.display = 'none';
}

function updateFormRegistratie() {
	o_status_magazine_new = document.getElementById("fc_status_magazine_new");
	o_status_magazine_verify = document.getElementById("fc_status_magazine_verify");
	o_betaaloptie_acceptgiro = document.getElementById("fc_betaaloptie_acceptgiro");
	o_betaaloptie_incasso = document.getElementById("fc_betaaloptie_incasso");
	o_betaaloptie_ideal = document.getElementById("fc_betaaloptie_ideal");
	oTblIncasso = document.getElementById("tblIncasso");
	oTblAcceptgiro = document.getElementById("tblAcceptgiro");
	oTblIdeal = document.getElementById("tblIdeal");
	oTblReedslid = document.getElementById("tblReedslid");
	oTblBetaalopties = document.getElementById("tblBetaalopties");
	
	if (o_status_magazine_verify.checked) {
		oTblBetaalopties.className = "hideElement";
		oTblAcceptgiro.className = "hideElement";
		oTblReedslid.className = "showElement";
		oTblIncasso.className = "hideElement";
		oTblIdeal.className = "hideElement";
	} else if (o_status_magazine_new.checked) {
		oTblBetaalopties.className = "showElement";
		oTblReedslid.className = "hideElement";
		if (o_betaaloptie_acceptgiro.checked) {
			oTblIncasso.className = "hideElement";
			oTblAcceptgiro.className = "showElement";
			oTblIdeal.className = "hideElement";			
		} else if (o_betaaloptie_incasso.checked) {
			oTblIncasso.className = "showElement";
			oTblAcceptgiro.className = "hideElement";
			oTblIdeal.className = "hideElement";
		} else if (o_betaaloptie_ideal.checked) {
			oTblIncasso.className = "hideElement";
			oTblAcceptgiro.className = "hideElement";
			oTblIdeal.className = "showElement";
		} else {
			oTblIncasso.className = "hideElement";
			oTblAcceptgiro.className = "hideElement";
			oTblIdeal.className = "hideElement";
		}
	} else {
		oTblBetaalopties.className = "hideElement";
		oTblAcceptgiro.className = "hideElement";
		oTblReedslid.className = "hideElement";
		oTblIncasso.className = "hideElement";
		oTblIdeal.className = "hideElement";
	}
}

function updateDivs(tdname, maxdivs) {
	removeEmptyDivs(tdname);
	newEmptyDiv(tdname, maxdivs);
}

function removeEmptyDivs(tdname) {
	tdi = document.getElementById(tdname);
	tdidivs = tdi.getElementsByTagName("div");
	for (var i = 0; i < tdidivs.length; i++) { //loop all divs
		cni = tdidivs[i].getElementsByTagName("select"); //loop all selects, fetch first select
		tdidivs[i].className = "clone";
		cni[0].id = tdname.replace("td_","fc_") + i; //make sure id is correct
		nni = tdidivs[i].getElementsByTagName("input"); //check wether there's a text field, then make sure id is correct
		if (nni.length>0) {
			//newText[0].value = "";
			nni[0].id = tdname.replace("td_","fc_n") + i;
			//alert("waarde " + nni[0].value + " wordt " + tdname.replace("td_","fc_n") + i);
		}
		if (cni[0].options[cni[0].selectedIndex].value == "" && (i>0 || tdidivs.length>1)) { //remove div when div is empty, and (there's more than 1 div or this isn't the first div) 
			tdi.removeChild(tdidivs[i]);
			i--; //set back i because tdidivs.length is decreased also
		}
	}
}

function newEmptyDiv(tdname, maxdivs) {
	tdi = document.getElementById(tdname);
	tdidivs = tdi.getElementsByTagName("div");
	cni = tdidivs[0].getElementsByTagName("select");
	if (cni[0].options[cni[0].selectedIndex].value != "" && tdidivs.length<maxdivs) { //only add new div when first div is not empty and there's less than maxdivs divs
		cloneDiv = tdidivs[(tdidivs.length-1)];
		var newDiv = cloneDiv.cloneNode(true);
		var insertHere = tdi.appendChild(newDiv);
		newSelect = newDiv.getElementsByTagName("select");
		//addOnClick(newSelect[0], tdname, maxdivs);
		addEvent(newSelect[0], 'change', function() { updateDivs(tdname, maxdivs) } );
		//newSelect[0].className = "defaultWidth"; //restore original class because we cannot restore multiple error classes with ajax formfeedback
		newSelect[0].id = tdname.replace("td_","fc_") + (tdidivs.length-1); //prevent identical ids
		newSelect[0].options[0].selected = true; //select first (empty) option
	}
}



















