// global variables
var editDebiteurenWizard = null;
var editInterneContactpersonenWizard = null;
var editExterneContactpersonenWizard = null;
var editAdressenWizard = null;
var editGebruikersWizard = null;
var editAfsprakenWizard = null;
var editBidataWizard = null;
var editContractenWizard = null;
var editIncidentenWizard = null;
var globalDebXHRDataSource = null;
var gebruikerXHRDataSource = null;
var globalIncDatasource = null;
var globalIncDatatable = null;
var queryappend = null;
var biDataGroepnr = null;
var loadingDebiteur = null;
var crmTabs = null;
var printOfEmailDialog = null;

// common
function feedback(text, duration) {
	var fb = document.getElementById("bncfeedback");
	fb.innerHTML = text;
	document.getElementById("bncfeedback").style.display="block";
	document.getElementById("bncfeedback").style.top=10+document.body.scrollTop+"px";
	var millisecs = 2000;
	if(duration!=null) {
		millisecs = duration;
	}
	setTimeout(hideFeedback,millisecs);	
}
function hideFeedback() {
	document.getElementById("bncfeedback").style.display="none";
}
function onFailure(o) {
	YAHOO.util.Connect.resetFormState();
	alert(o.statusText);
	loadingDebiteur = false;
}
function myescape(text) {
	text=escape(text);
	// escape doet niks met +
	while(text.indexOf('+')!=-1) {
		text = text.replace('+','%2B');
	}
	return text;
}
// -- debiteuren
function onLoadDebiteurEdit() {
	if(document.getElementById("edit_gradondatum")!=null) {
		Calendar.setup({
	        inputField : "edit_gradondatum",
	        ifFormat : "%d-%m-%Y",
	        showsTime : false,
	        timeFormat : "24",
	        mondayFirst : false,
	        weekNumbers: true
	        });
	}
}
function validateDebiteur(curPanel) {
	if(document.getElementById("edit_btwnummer")!=null) {
		document.getElementById("edit_btwnummer").value = document.getElementById("edit_btwnummer").value.toUpperCase();
	} 
	if(curPanel==null||curPanel==1) {
		if (document.getElementById("edit_naam").value == "") {
			alert("Naam moet worden ingevuld");
			return false;
		}
		if (document.getElementById("edit_adres").value == "") {
			alert("Adres moet worden ingevuld");
			return false;
		}
		if (document.getElementById("edit_postcode").value == "") {
			alert("Postcode moet worden ingevuld");
			return false;
		}
		if (document.getElementById("edit_plaats").value == "") {
			alert("Plaats moet worden ingevuld");
			return false;
		}
		if (document.getElementById("edit_telefoon").value == "") {
			alert("Telefoon moet worden ingevuld");
			return false;
		}
		if (document.getElementById("edit_email").value == "") {
			alert("Email moet worden ingevuld");
			return false;
		}
		if(document.getElementById("webcheckbox")!=null && document.getElementById("webcheckbox").checked) {
			if(document.getElementById("gebruikersnaam").value == "") {
				alert("Gebruikersnaam moet worden ingevuld");
				return false;
			}
			if(document.getElementById("webtav").value == "") {
				alert("T.a.v. moet worden ingevuld");
				return false;
			}
		}
	}
	if(curPanel==null||curPanel==2) {
		if(document.getElementById("edit_prijslijstcode").value=="") {
			alert("Prijslijstcode moet worden ingesteld");
			return false;
		}
		if(document.getElementById("edit_betalingsconditie").value=="") {
			alert("Betalingsconditie moet worden ingesteld");
			return false;
		}
		if(document.getElementById("edit_factuurcode").value=="") {
			alert("Factuur moet worden ingesteld");
			return false;
		}
		if(document.getElementById("edit_bezorgkosten").value=="") {
			alert("Bezorgkosten moet worden ingevuld");
			return false;
		}
		if(document.getElementById("edit_src_code").value=="") {
			alert("Zoekcode moet worden ingevuld");
			return false;
		}
	}
	if(curPanel==null||curPanel==3) {
		if (document.getElementById("edit_kredietlimiet")!=null&&document.getElementById("edit_kredietlimiet").value == ""&&document.getElementById("websiteoption").style.display!="none") {
			alert("Kredietlimiet moet worden ingevuld");
			return false;
		}
	}
	return true;
};
function checkAdres() {
	var postcode = document.getElementById("edit_postcode").value.toUpperCase().replace(' ','');
	var aadres = document.getElementById("edit_adres").value.split(" ");
	var now = new Date();
	if(aadres.length!=0) {
		var huisnummer = aadres[aadres.length-1].toUpperCase();
		var callback =
		{
			success:onLoadCheckAdres,
			failure:onFailure
		}
		var query = "select debiteuren.nr, debiteuren.naam, debiteuren.debcode, debiteuren.adres, debiteuren.postcode from debiteuren where UCASE(REPLACE(postcode,' ',''))='"+postcode+"' and UCASE(adres) LIKE '% "+huisnummer+"' and nr!="+document.getElementById("edit_debiteurid").value+" order by naam";
		YAHOO.util.Connect.asyncRequest("GET", gateway+"?appclass=nl.bnc.bncweb.system.applicatie.common.BWAppQuery&json=1&menuid="+menuid+"&connection=bncweb&fn=execute&query="+myescape(query)+"&noCache="+now.getTime(), callback, "");
	}
	/*
	 * check cebuco
	 */
	var callback =
	{
	  success: onLoadCebuco,
	  failure: onFailure
	}
	YAHOO.util.Connect.asyncRequest("GET", gateway+"?appclass=nl.bnc.lib.ajax.BWAppAutocomplete&dbclass=nl.bnc.db.mysql.bncweb.Cebuco&zoek="+postcode.substring(0,4)+"&fields=cebuco.postcode&order=cebuco.postcode&json=1&translatejson=1&menuid="+menuid+"&nocache="+now.getTime(), callback, "");
}
function onLoadCheckAdres(o) {
	var obj=eval("("+o.responseText+")");
	if(obj["xml.rows"]!=null&&obj["xml.rows"].length>0) {
		var melding = "Deze postcode + huisnummer komen al voor bij de volgende debiteur:\n\n";
		for(var i=0; i<obj["xml.rows"].length; i++) {
			melding += (obj["xml.rows"][i]["xml.row.debcode"]+" - "+obj["xml.rows"][i]["xml.row.naam"]+"\n");
		}
		alert(melding);
	}
}
function onLoadCebuco(o) {
	var obj=eval("("+o.responseText+")");
	if(obj["zoekresultaten"]!=null&&obj["zoekresultaten"].length>0) {
		var cebucocode = obj["zoekresultaten"][0].xml_cebuco_cebucocode;
		document.getElementById("edit_cebucocode").value = cebucocode;
	} else {
		document.getElementById("edit_cebucocode").value = "";
	}
}
function selectDebiteurCRM(debnr,type) {
	loadingDebiteur = true;
	
	var now = new Date();
	document.getElementById("gebruikersframe").innerHTML = "";
	document.getElementById("afsprakenframe").innerHTML = "";
	document.getElementById("bidataframe").innerHTML = "";
	if('1'=='0') {
		document.getElementById("incidentenframe").innerHTML = "";
	}
	var now = new Date();
	var callback =
	{
		success:onLoadContactgegevens,
		failure:onFailure
	}
	if(type==0) {
		YAHOO.util.Connect.asyncRequest("GET", "/wobjects/crm/contactgegevens?HttpProxy_fn=select&HttpProxy_debnr="+debnr+"&noCache="+now.getTime(), callback, "");
	} else {
		YAHOO.util.Connect.asyncRequest("GET", "/wobjects/crm/contactgegevens?HttpProxy_fn=selectdebcode&HttpProxy_debcode="+debnr+"&noCache="+now.getTime(), callback, "");
	}
}
function selectDebiteur(debnr,type) {
	document.location.href="#location="+escape("/intranet/crm/crm?debnr="+debnr+"&type="+type);
}
	
function setDebiteur(debnr,type) {
	if(crmTabs==null) {
		crmTabs = new bncTabs("crm");
		crmTabs.addTabId("contactgegevens");
		crmTabs.addTabId("gebruikers");
		crmTabs.addTabId("afspraken");
		crmTabs.addTabId("bidata");
		if('1'=='0') {
			crmTabs.addTabId("incidenten");
		}
		crmTabs.initTabs();
	}
	initAutocompletes("crmdeb","crmgebruiker","crmzoekcode", selectDebiteurCRM);

	if(debnr!=null) {
		document.getElementById("tabcontactgegevens").onclick();
		loadingDebiteur = true;
		
		var now = new Date();
		document.getElementById("gebruikersframe").innerHTML = "";
		document.getElementById("afsprakenframe").innerHTML = "";
		document.getElementById("bidataframe").innerHTML = "";
		if('1'=='0') {
			document.getElementById("incidentenframe").innerHTML = "";
		}
		var now = new Date();
		var callback =
		{
			success:onLoadContactgegevens,
			failure:onFailure
		}
		if(type==0) {
			YAHOO.util.Connect.asyncRequest("GET", "/wobjects/crm/contactgegevens?HttpProxy_fn=select&HttpProxy_debnr="+debnr+"&noCache="+now.getTime(), callback, "");
		} else {
			YAHOO.util.Connect.asyncRequest("GET", "/wobjects/crm/contactgegevens?HttpProxy_fn=selectdebcode&HttpProxy_debcode="+debnr+"&noCache="+now.getTime(), callback, "");
		}
	}
}
function loadContactgegevens() {
	var now = new Date();
	var callback =
	{
		success:onLoadContactgegevens,
		failure:onFailure
	}
	YAHOO.util.Connect.asyncRequest("GET", "/wobjects/crm/contactgegevens?noCache="+now.getTime(), callback, "");
}
function onLoadContactgegevens(o) {
	if(printOfEmailDialog==null && ('1'=='0')) {
		/*
		 * definieer dialog voor afdrukken/emailen
		 */
		var handleCancel = function() {
			this.cancel();
		}
		var handleOk = function() {
/*
 * enkele bon raadplegen via:
 * https://www.bnc.nl/wobjects/technische-dienst/incident-bon?HttpProxy_fn=setedit&HttpProxy_keynr=5910000&HttpProxy_menuid=1
 */				
/*
 * meerdere bonnen raadplegen via: 
 * https://www.bnc.nl/wobjects/technische-dienst/incident-bon?HttpProxy_fn=setedit&HttpProxy_editmode=uitleveren&HttpProxy_selectlist=5910000&HttpProxy_selectlist=5910005&HttpProxy_menuid=1
 */				
			if(document.getElementById("inc_radioprint").checked) {
				if(document.getElementById("inc_printofemailmode").value == "edit") {
					popitup("/wobjects/technische-dienst/incident-bon?op=makePrintable&HttpProxy_fn=setedit&HttpProxy_menuid=1&HttpProxy_keynr="+document.getElementById("inc_incidentnummers").innerHTML);
				} else {
					var url = "/wobjects/technische-dienst/incident-bon?op=makePrintable&HttpProxy_fn=setedit&HttpProxy_menuid=1&HttpProxy_editmode=uitleveren";
					var anummers = document.getElementById("inc_incidentnummers").innerHTML.split("; ");
					for(var i=0; i<anummers.length; i++) {
						url += "&HttpProxy_selectlist="+anummers[i];
					}
					popitup(url);
				}
				this.cancel();
			} else {
				/*
				 * de e-mail tekst moet UTF-8 gecodeerd worden om rare chars goed naar de server
				 * te krijgen 
				 */
				var emailtekst = myescape(Utf8.encode(document.getElementById("inc_emailtekst").value.replace(/\n/g,"<br />")));
				var url = gateway+"?appclass=nl.bnc.lib.ajax.BWAppWizard&iwbclass=nl.bnc.bncweb.system.applicatie.td.crm.BWIncidentenWizardBean&fn=setedit&menuid=1&sendmail=1&emailtekst="+emailtekst+"&emailto="+myescape(document.getElementById("inc_emailadressen").value)+"&json=1";
				if(document.getElementById("inc_printofemailmode").value == "edit") {
					url += "&keynr="+document.getElementById("inc_incidentnummers").innerHTML;
				} else {
					url += "&editmode=uitleveren";
					var anummers = document.getElementById("inc_incidentnummers").innerHTML.split("; ");
					for(var i=0; i<anummers.length; i++) {
						url += "&selectlist="+anummers[i];
					}
				}
				var now = new Date();
				var callback =
				{
					success:onLoadIncidentenEmail,
					failure:onFailure 
				}
				YAHOO.util.Connect.asyncRequest("GET", url + "&noCache="+now.getTime(), callback, "");
			}
		}
		var printofemailButtons = [
				{ text: "Afbreken", handler: handleCancel },
				{ text: "Ok", handler: handleOk },
			];
		printOfEmailDialog = new YAHOO.widget.Dialog("printofemaildialog",
			{
				fixedcenter: true,
				modal: true,
				width: "450px",
				constraintoviewport : true,
				visible:false,
				draggable:true,
				close:true,
				zindex: 100000
			});
		printOfEmailDialog.cfg.queueProperty("buttons", printofemailButtons);
		printOfEmailDialog.render();
	}
	document.getElementById("contactgegevensframe").innerHTML = o.responseText;
	loadingDebiteur = false;
}
function onLoadIncidentenEmail(o) {
	var obj=eval("("+o.responseText+")");
	if(obj["xml.error"] != null) {
		alert(obj["xml.error"]);
	} else {
		alert("E-mail verstuurd naar " + document.getElementById("inc_emailadressen").value);
		printOfEmailDialog.hide();
	}
}
function loadContactgegevensEdit(nieuw) {
	var now = new Date();
	var callback =
	{
		success:onLoadDialog,
		failure:onFailure
	}
	YAHOO.util.Connect.asyncRequest("GET", "/wobjects/crm/contactgegevens-edit?HttpProxy_nieuw="+nieuw+"&noCache="+now.getTime(), callback, "");
}
// -- contactpersonen
function validateExternContactpersoon(curPanel) {
	if(document.getElementById("ecp_gebruikernr").value=="x") {
		if(document.getElementById("ecp_achternaam").value=="") {
			alert("Achternaam moet worden ingevuld");
			return false;
		}
		if(document.getElementById("ecp_telefoon").value=="") {
			alert("Telefoon moet worden ingevuld");
			return false;
		}
		if(document.getElementById("ecp_email").value=="") {
			alert("Email moet worden ingevuld");
			return false;
		}
	}
	return true;
}
// -- adressen
function validateAdres(curPanel) {
	if(document.getElementById("ae_adres").value == "") {
		alert("Straat + nr worden ingevuld");
		return false;
	}
	if(document.getElementById("ae_postcode").value == "") {
		alert("Postcode moet worden ingevuld");
		return false;
	}
	if(document.getElementById("ae_plaats").value == "") {
		alert("Plaats moet worden ingevuld");
		return false;
	}
	return true;
}
function calcAfstand(target) {
	if(document.getElementById("ae_postcodechanged").value=="1") {
		document.getElementById("ae_postcodechanged").value = "";
		var now = new Date();
		var callback =
		{
			success:onLoadCalcAfstand,
			failure:onFailure
		}
		YAHOO.util.Connect.asyncRequest("GET", gateway+"?appclass=nl.bnc.bncweb.system.utils.BWAppDirections&json=1&menuid="+menuid+"&from=9723JD&to="+target+"&noCache="+now.getTime(), callback, "");
	}
}
function onLoadCalcAfstand(o) {
	var obj=eval("("+o.responseText+")");
	if(obj["xml.error"] != null) {
		document.getElementById("ae_afstand").value = "0";
		document.getElementById("ae_reistijd").value = "0";
		alert(obj["xml.error"]);
	} else {
		document.getElementById("ae_afstand").value = obj["xml.afstand"];
		document.getElementById("ae_reistijd").value = obj["xml.reistijd"];
	}
}
// -- gebruikers
function loadGebruikers() {
	if(document.getElementById("deb_nr").value=="") {
		alert("Selecteer eerst een debiteur");
		return false;
	}
	if(loadingDebiteur) {
		alert("Debiteur wordt ingelezen, moment A.U.B.");
		return;
	}
	var now = new Date();
	var callback =
	{
		success:onLoadGebruikers,
		failure:onFailure
	}
	YAHOO.util.Connect.asyncRequest("GET", "/wobjects/crm/gebruikers?HttpProxy_fn=select&HttpProxy_debnr="+document.getElementById("deb_nr").value+"&noCache="+now.getTime(), callback, "");
	return true;
}
function onLoadGebruikers(o) {
	document.getElementById("gebruikersframe").innerHTML = o.responseText;
}
function onLoadGebruikersEdit() {
	/*
	 * de debiteuren autocomplete definieren
	 */
	if(document.getElementById("gebruikersDebInput")!=null) {
		var debSchema = ["zoekresultaten", "xml_debiteuren_naam", "xml_debiteuren_debcode"];
		var debXHRDataSource = new YAHOO.widget.DS_XHR(gateway, debSchema);
		// disable the cache 
		debXHRDataSource.maxCacheEntries = 0;	
	    debXHRDataSource.connXhrMode = "queueRequests";	
		debXHRDataSource.responseType = YAHOO.widget.DS_XHR.TYPE_JSON;
		debXHRDataSource.scriptQueryParam = "zoek";
		debXHRDataSource.scriptQueryAppend = "appclass=nl.bnc.lib.ajax.BWAppAutocomplete&dbclass=nl.bnc.db.mysql.bncweb.Debiteuren&fields=debiteuren.debcode,debiteuren.src_code,debiteuren.naam,debiteuren.adres,debiteuren.postcode,debiteuren.plaats,debiteuren.email,debiteuren.telefoon,adressen.naam&distinct=debiteuren.nr,debiteuren.debcode,debiteuren.naam,debiteuren.src_code,debiteuren.plaats&joinclause=left join bncweb.adressen on adressen.debcode=debiteuren.debcode&filter="+myescape("debiteuren.actief=1")+"&order=debiteuren.naam&limit=25&json=1&translatejson=1&menuid="+menuid;
		var debAutoCompCRM = new YAHOO.widget.AutoComplete("gebruikersDebInput","gebruikersDebContainer", debXHRDataSource);
		debAutoCompCRM.minQueryLength = 2;
		debAutoCompCRM.maxResultsDisplayed = 25;
		debAutoCompCRM.formatResult = function(aResultItem, sQuery) {
			var naam = aResultItem[0];
			var debcode = aResultItem[1]; 
			var aMarkup = ["<div>",
				debcode,
				": <b>",
				naam,
				"</b>",
				"</div>"];
			return (aMarkup.join(""));
		};
		var debSelectHandler = function(sType, aArgs) {
			autoSelectDebiteur(aArgs[2][1],aArgs[2][0]);
		};
		debAutoCompCRM.itemSelectEvent.subscribe(debSelectHandler);
	}
	/*
	 * nu de crediteuren autocomplete definieren als we rechten hebben en creInput bestaat
	 */
	if(document.getElementById("creInput")!=null) {
		var creSchema = ["zoekresultaten", "xml_contact_acct_name", "xml_contact_con_uniek"];
		var creXHRDataSource = new YAHOO.widget.DS_XHR(gateway, creSchema);
		// disable the cache 
		creXHRDataSource.maxCacheEntries = 0;	
	    creXHRDataSource.connXhrMode = "queueRequests";	
		creXHRDataSource.responseType = YAHOO.widget.DS_XHR.TYPE_JSON;
		creXHRDataSource.scriptQueryParam = "zoek";
		creXHRDataSource.scriptQueryAppend = "appclass=nl.bnc.lib.ajax.BWAppAutocomplete&dbclass=nl.bnc.db.foxpro.accview.Contact&fields=acct_name,con_uniek,sub_nr&filter="+myescape("cred_show=.T. and rec_blk=.F.")+"&order=acct_name&limit=25&json=1&translatejson=1&menuid="+menuid;
		var creAutoComp = new YAHOO.widget.AutoComplete("creInput","creContainer", creXHRDataSource);
		creAutoComp.minQueryLength = 2;
		creAutoComp.maxResultsDisplayed = 25;
		creAutoComp.formatResult = function(aResultItem, sQuery) {
			var naam = aResultItem[0];
			var crecode = aResultItem[1]; 
			var aMarkup = ["<div>",
				crecode,
				": <b>",
				naam,
				"</b>",
				"</div>"];
			return (aMarkup.join(""));
		};
		var creSelectHandler = function(sType, aArgs) {
			autoSelectCrediteur(aArgs[2][1],aArgs[2][0]);
		};
		creAutoComp.itemSelectEvent.subscribe(creSelectHandler);
	}
}
function autoSelectDebiteur(debcode,debnaam) {
	document.getElementById("gebruikersDebcode").value = debcode;
	document.getElementById("gebruikersDebnaam").value = debnaam;
	document.getElementById("gebruikersShowdebnaam").innerHTML = debnaam;
	document.getElementById("gebruikersDebInput").value = "";
	document.getElementById("gebruikersDebInput").style.display = "none";
}
function autoSelectCrediteur(crecode,crenaam) {
	document.getElementById("crecode").value = crecode;
	document.getElementById("crenaam").value = crenaam;
	document.getElementById("showcrenaam").innerHTML = crenaam;
	document.getElementById("creInput").value = "";
	document.getElementById("creInput").style.display = "none";
}
function validateGebruiker(curPanel) {
	if(document.getElementById("gebruikersDebcode")!=null&&document.getElementById("gebruikersDebcode").value=="") {
		alert("Debiteur moet worden ingevuld");
		return false;
	}
	if(document.getElementById("gebruikersGebruikersnaam").value == "") {
		alert("Gebruikersnaam moet worden ingevuld");
		return false;
	}
	if(document.getElementById("gebruikersAchternaam").value == "") {
		alert("Achternaam moet worden ingevuld");
		return false;
	}
	if(document.getElementById("gebruikersEmail").value == "") {
		alert("Email moet worden ingevuld");
		return false;
	}
	if(document.getElementById("gebruikersTelefoon").value == "") {
		alert("Telefoon moet worden ingevuld");
		return false;
	}
	return true;
}

function getRandomNum(lbound, ubound) {
	return (Math.floor(Math.random() * (ubound - lbound)) + lbound);
}

function getPassword() {
	var numberChars = "0123456789";
	var lowerChars = "abcdefghijklmnopqrstuvwxyz";
	var upperChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var otherChars = "`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/? ";
	var charSet;
	charSet += numberChars;
	charSet += lowerChars;
	charSet += upperChars;
	var rc = "";
	for (var idx = 0; idx < 8; ++idx) {
		rc = rc + charSet.charAt(getRandomNum(0, charSet.length));
	}
	return rc;
}

function zetNaam() {
	var voornaam = document.getElementById('gebruikersVoornaam').value+" ";
	var tussenvoegsel = document.getElementById('gebruikersTussenvoegsel').value;
	if(tussenvoegsel !="") {
		tussenvoegsel=tussenvoegsel+" ";
	} 
	var achternaam = document.getElementById('gebruikersAchternaam').value;
	var debiteur = " ("+document.getElementById('gebruikersDebiteur').value+")";
	if(debiteur.match("B & C BV Intern gebruik")) {
		debiteur = " (Bossers & Cnossen)";
	}
	document.getElementById('gebruikersFullEmail').value=voornaam+tussenvoegsel+achternaam+debiteur;
	document.getElementById('gebruikersAflevernaam').value=voornaam+tussenvoegsel+achternaam
}

// -- afspraken
function loadAfspraken() {
	if(document.getElementById("deb_nr").value=="") {
		alert("Selecteer eerst een debiteur");
		return false;
	}
	if(loadingDebiteur) {
		alert("Debiteur wordt ingelezen, moment A.U.B.");
		return;
	}
	var now = new Date();
	var callback =
	{
		success:onLoadAfspraken,
		failure:onFailure
	}
	YAHOO.util.Connect.asyncRequest("GET", "/wobjects/crm/afspraken?HttpProxy_fn=select&HttpProxy_debnr="+document.getElementById("deb_nr").value+"&noCache="+now.getTime(), callback, "");
	return true;
}
function onLoadAfspraken(o) {
	document.getElementById("afsprakenframe").innerHTML = o.responseText;
}
function validateAfspraak(curPanel) {
	if(document.getElementById("afspraak_omschrijving").value == "") {
		alert("Omschrijving moet worden ingevuld");
		return false;
	}
	if(document.getElementById("afspraak_type").value != "4" && document.getElementById("afspraak_tekst").value == "") {
		alert("Tekst moet worden ingevuld");
		return false;
	}
	if(document.getElementById("afspraak_type").value == "2" && document.getElementById("afspraak_sleutel").value == "") {
		alert("Productcode moet worden ingevuld");
		return false;
	}
	return true;
}
function onLoadAfspraakEdit() {
	/*
	 * init calendars
	 */
	Calendar.setup({
        inputField : "afspraak_einddatum",
        ifFormat : "%d-%m-%Y",
        showsTime : false,
        timeFormat : "24",
        mondayFirst : false,
        weekNumbers: true
        });
	calcAfspraakNiveauTarief();
}	
function selectAfspraakType(typenr) {
	switch(typenr) {
		case "0":
			document.getElementById("afspraak_sleuteltitel").style.display="none";
			document.getElementById("afspraak_sleutelinvoer").style.display="none";
			document.getElementById("afspraak_artikelgroepen").style.display="none";
			document.getElementById("afspraak_productgroepen").style.display="none";
			document.getElementById("afspraak_niveaus").style.display="none";
			document.getElementById("afspraak_teksttitel").style.display="block";
			document.getElementById("afspraak_tekstdiv").style.display="block";
			document.getElementById("afspraak_toonbijoffertetitel").style.display="block";
			document.getElementById("afspraak_toonbijoffertediv").style.display="block";
			document.getElementById("afspraak_kortingtitel").style.display="none";
			document.getElementById("afspraak_kortingdiv").style.display="none";
			break;
		case "1":
			document.getElementById("afspraak_sleutelinvoer").style.display="none";
			document.getElementById("afspraak_sleutel").value=document.getElementById("afspraak_selectartikelgroep").value;
			document.getElementById("afspraak_artikelgroepen").style.display="block";
			document.getElementById("afspraak_sleuteltitel").innerHTML="Artikelgroep:";
			document.getElementById("afspraak_sleuteltitel").style.display="block";
			document.getElementById("afspraak_productgroepen").style.display="none";
			document.getElementById("afspraak_niveaus").style.display="none";
			document.getElementById("afspraak_teksttitel").innerHTML="Tekst:";
			document.getElementById("afspraak_teksttitel").style.display="block";
			document.getElementById("afspraak_tekstdiv").style.display="block";
			document.getElementById("afspraak_toonbijoffertetitel").style.display="block";
			document.getElementById("afspraak_toonbijoffertediv").style.display="block";
			document.getElementById("afspraak_kortingtitel").style.display="none";
			document.getElementById("afspraak_kortingdiv").style.display="none";
			break;
		case "2":
			document.getElementById("afspraak_sleutel").value="";
			document.getElementById("afspraak_sleutelinvoer").style.display="block";
			document.getElementById("afspraak_artikelgroepen").style.display="none";
			document.getElementById("afspraak_sleuteltitel").innerHTML="Productcode:";
			document.getElementById("afspraak_sleuteltitel").style.display="block";
			document.getElementById("afspraak_productgroepen").style.display="none";
			document.getElementById("afspraak_niveaus").style.display="none";
			document.getElementById("afspraak_teksttitel").innerHTML="Tekst:";
			document.getElementById("afspraak_teksttitel").style.display="block";
			document.getElementById("afspraak_tekstdiv").style.display="block";
			document.getElementById("afspraak_toonbijoffertetitel").style.display="block";
			document.getElementById("afspraak_toonbijoffertediv").style.display="block";
			document.getElementById("afspraak_kortingtitel").style.display="none";
			document.getElementById("afspraak_kortingdiv").style.display="none";
			break;
		case "3":
			document.getElementById("afspraak_sleutelinvoer").style.display="none";
			document.getElementById("afspraak_sleutel").value=document.getElementById("afspraak_selectproductgroep").value;
			document.getElementById("afspraak_artikelgroepen").style.display="none";
			document.getElementById("afspraak_sleuteltitel").innerHTML="Productgroep:";
			document.getElementById("afspraak_sleuteltitel").style.display="block";
			document.getElementById("afspraak_productgroepen").style.display="block";
			document.getElementById("afspraak_niveaus").style.display="none";
			document.getElementById("afspraak_teksttitel").innerHTML="Tekst:";
			document.getElementById("afspraak_teksttitel").style.display="block";
			document.getElementById("afspraak_tekstdiv").style.display="block";
			document.getElementById("afspraak_toonbijoffertetitel").style.display="block";
			document.getElementById("afspraak_toonbijoffertediv").style.display="block";
			document.getElementById("afspraak_kortingtitel").style.display="none";
			document.getElementById("afspraak_kortingdiv").style.display="none";
			break;
		case "4":
			document.getElementById("afspraak_sleutel").value="";
			document.getElementById("afspraak_sleutelinvoer").style.display="none";
			document.getElementById("afspraak_artikelgroepen").style.display="none";
			document.getElementById("afspraak_sleuteltitel").innerHTML="Niveau:";
			document.getElementById("afspraak_sleuteltitel").style.display="block";
			document.getElementById("afspraak_productgroepen").style.display="none";
			document.getElementById("afspraak_niveaus").style.display="block";
			document.getElementById("afspraak_teksttitel").style.display="none";
			document.getElementById("afspraak_tekstdiv").style.display="none";
			document.getElementById("afspraak_toonbijoffertetitel").style.display="none";
			document.getElementById("afspraak_toonbijoffertediv").style.display="none";
			document.getElementById("afspraak_kortingtitel").style.display="block";
			document.getElementById("afspraak_kortingdiv").style.display="block";
			calcAfspraakNiveauTarief();
			break;
	}
}
function calcAfspraakNiveauTarief() {
	// als het type niet Incidenten is, dan niks doen
	if(document.getElementById("afspraak_type").options[document.getElementById("afspraak_type").selectedIndex].value!=4) {
		return;
	}
	var korting = 0;
	var kobj = document.getElementById("afspraak_korting");
	var tobj = document.getElementById("afspraak_tekst");
	try {
		korting = parseFloat(kobj.value.replace(",","."));
		tobj.value = kobj.value;
		if(isNaN(korting)) {
			kobj.value = "0,00";
			tobj.value = "0,00";
			korting = 0;
		}
		if(korting>100) {
			alert("Korting mag niet groter dan 100% zijn!");	
			kobj.value = "0,00";
			tobj.value = "0,00";
			korting = 0;
		}
	} catch(e){
		kobj.value = "0,00";
		tobj.value = "0,00";
	}
	var selniv = document.getElementById("afspraak_selectniveau");
	var niveaunr = selniv.options[selniv.selectedIndex].value;
	var tariefspan = document.getElementById("afspraak_calculated_niveautarief");
	try {
		var tarief = document.getElementById("afspraak_niveautarief_"+niveaunr).value;
		document.getElementById("afspraak_standaard_niveautarief").innerHTML = tarief;
		var calctarief = Math.round((100-korting)*parseFloat(tarief.replace(",",".")));
		var fcalc = "";
		if(calctarief<10) {
			fcalc = "0,0"+calctarief;
		} else if(calctarief<100) {
			fcalc = "0,"+calctarief;
		} else {
			fcalc = "" + calctarief; // toString
			fcalc = fcalc.substring(0,fcalc.length-2) + "," + fcalc.substring(fcalc.length-2,fcalc.length); 			
		}
		tariefspan.innerHTML = fcalc;
	} catch(e) {
		tariefspan.innerHTML = "???";		
	}
}
// -- BI data
function loadBidata() {
	if(document.getElementById("deb_nr").value=="") {
		alert("Selecteer eerst een debiteur");
		return false;
	}
	if(loadingDebiteur) {
		alert("Debiteur wordt ingelezen, moment A.U.B.");
		return;
	}
	var now = new Date();
	var callback =
	{
		success:onLoadBidata,
		failure:onFailure
	}
	YAHOO.util.Connect.asyncRequest("GET", "/wobjects/crm/bidata?HttpProxy_fn=select&HttpProxy_debnr="+document.getElementById("deb_nr").value+"&noCache="+now.getTime(), callback, "");
	return true;
}
function onLoadBidata(o) {
	document.getElementById("bidataframe").innerHTML = o.responseText;
}
function onLoadBidataEdit() {
	document.getElementById("groep"+biDataGroepnr).style.display = 'block';
}	

function validateBidata(curPanel) {
	return true;
}
// -- contracten
function onLoadContractEdit() {
	/*
	 * init calendars
	 */
	Calendar.setup({
        inputField : "begindatum",
        ifFormat : "%d-%m-%Y",
        showsTime : false,
        timeFormat : "24",
        mondayFirst : false,
        weekNumbers: true
        });
	Calendar.setup({
        inputField : "einddatum",
        ifFormat : "%d-%m-%Y",
        showsTime : false,
        timeFormat : "24",
        mondayFirst : false,
        weekNumbers: true
        });
	for (var i = 1; i < 6; i++) {
		Calendar.setup({
			inputField: "alarmdatum"+i,
			ifFormat: "%d-%m-%Y",
			showsTime: false,
			timeFormat: "24",
			mondayFirst: false,
			weekNumbers: true
		});
	}
}	
function loadContracten() {
	if(document.getElementById("deb_nr").value=="") {
		alert("Selecteer eerst een debiteur");
		return false;
	}
	if(loadingDebiteur) {
		alert("Debiteur wordt ingelezen, moment A.U.B.");
		return;
	}
	var now = new Date();
	var callback =
	{
		success:onLoadContracten,
		failure:onFailure
	}
	YAHOO.util.Connect.asyncRequest("GET", "/wobjects/crm/contracten?HttpProxy_fn=select&HttpProxy_debnr="+document.getElementById("deb_nr").value+"&noCache="+now.getTime(), callback, "");
	return true;
}
function onLoadContracten(o) {
	document.getElementById("contractenframe").innerHTML = o.responseText;
}
function validateContract(curPanel) {
	if(curPanel==null||curPanel==1) {
		if(document.getElementById("contract_naamnr").value == "0" && document.getElementById("contract_naam").value == "") {
			alert("Kies een contractnaam of vul een nieuwe in");
			return false;
		}
		if(document.getElementById("contract_typenr").value == "0" && document.getElementById("contract_typeomschrijving").value == "") {
			alert("Kies een contracttype of vul een nieuwe in");
			return false;
		}
	}
	if(curPanel==null||curPanel==2) {
		if(document.getElementById("omschrijving").value == "") {
			alert("Omschrijving moet worden ingevuld");
			return false;
		}
	}
	if(curPanel==null||curPanel==3) {
		if(document.getElementById("checkboxalarm1").checked&&document.getElementById("actie1").value == "") {
			alert("Actie 1 moet worden ingevuld");
			return false;
		}
		if(document.getElementById("checkboxalarm2").checked&&document.getElementById("actie2").value == "") {
			alert("Actie 2 moet worden ingevuld");
			return false;
		}
		if(document.getElementById("checkboxalarm3").checked&&document.getElementById("actie3").value == "") {
			alert("Actie 3 moet worden ingevuld");
			return false;
		}
		if(document.getElementById("checkboxalarm4").checked&&document.getElementById("actie4").value == "") {
			alert("Actie 4 moet worden ingevuld");
			return false;
		}
		if(document.getElementById("checkboxalarm5").checked&&document.getElementById("actie5").value == "") {
			alert("Actie 5 moet worden ingevuld");
			return false;
		}
	}	
	return true;
}
function vulContractNamen() {
	var i = 1;
	var typenr = document.getElementById("type").value;
	var naamobj = document.getElementById("contract_naamnr");
	naamobj.options.length = 0;
	var opt = document.createElement("OPTION");
	opt.value = "0";
	opt.text = "Selecteer..";	
	naamobj.options.add(opt);
	opt = document.createElement("OPTION");
	opt.value = "0";
	opt.text = "Nieuw contract -->";
	naamobj.options.add(opt);
	document.getElementById('contract_naam').style.display='none';
	while(true) {
		var tst = document.getElementById("cn_type"+i);
		if(tst==null) {
			break;
		}
		if(tst.value==typenr) {
			opt = document.createElement("OPTION");
			opt.value = document.getElementById("cn_nr"+i).value;
			opt.text = document.getElementById("cn_naam"+i).value;
			naamobj.options.add(opt);
		}
		i++;
	}
}
function vulContractTypes() {
	var i = 1;
	var naamnr = document.getElementById("contract_naamnr").value;
	var typeobj = document.getElementById("contract_typenr");
	typeobj.options.length = 0;
	var opt = document.createElement("OPTION");
	opt.value = "0";
	opt.text = "Selecteer..";
	typeobj.options.add(opt);	
	opt = document.createElement("OPTION");
	opt.value = "0";
	opt.text = "Nieuw type -->";
	typeobj.options.add(opt);
	document.getElementById('contract_typeomschrijving').style.display='none';	
	while(true) {
		var tst = document.getElementById("ct_cn_nr"+i);
		if(tst==null) {
			break;
		}
		if(tst.value==naamnr) {
			opt = document.createElement("OPTION");
			opt.value = document.getElementById("ct_nr"+i).value;
			opt.text = document.getElementById("ct_omschrijving"+i).value;
			typeobj.options.add(opt);
		}
		i++;
	}
	if(document.getElementById("contract_naamnr").selectedIndex==1) {
		typeobj.selectedIndex=1;
		document.getElementById('contract_typeomschrijving').style.display='inline';
	}
}
function setContractSpecificaties(obj) {
	if(obj.id=="type") {
		vulContractNamen();
		vulContractTypes();
	} else {
		vulContractTypes();
	}
}
// -- incidenten
function loadIncidenten(o) {
	if(document.getElementById("deb_nr").value=="") {
		alert("Selecteer eerst een debiteur");
		return false;
	}
	if(loadingDebiteur) {
		alert("Debiteur wordt ingelezen, moment A.U.B.");
		return false;
	}
	var now = new Date();
	var callback =
	{
		success:onLoadIncidenten,
		failure:onFailure
	}
	YAHOO.util.Connect.asyncRequest("GET", "/wobjects/crm/incidenten?HttpProxy_fn=select&HttpProxy_debnr="+document.getElementById("deb_nr").value+"&noCache="+now.getTime(), callback, "");
	if(o!=null) {
		// the response is embedded in <pre> tags, so remove them...
		var response = o.responseText.replace(/<pre>/gi,"").replace(/<\/pre>/gi,"");
		var obj = eval("("+response+")");
		if(obj["xml.printofemail"]!=null) {
			document.getElementById("inc_emailtekst").value = "";
			if(obj["xml.incidenten.editmode.edit"]=="1") {
				printOfEmailDialog.setHeader("Incident afdrukken of e-mailen");
				document.getElementById("inc_printofemailmode").value = "edit";
				document.getElementById("inc_incidentnummers").innerHTML=obj["xml.incidenten.incidentnr"];
				document.getElementById("inc_emailadressen").value = getContactpersoonEmail(obj["xml.incidenten.contactpersonen"]);
			} else {
				var nummers = "";
				var emailadressen = {};
				for(var i=0; i<obj["xml.incidenten.uitleveren"].length; i++) {
					nummers += ((i!=0)?"; ":"") +  obj["xml.incidenten.uitleveren"][i]["xml.incidenten.incidentnr"];
					var emailadres = getContactpersoonEmail(obj["xml.incidenten.uitleveren"][i]["xml.incidenten.contactpersonen"]);
					if(emailadres!="" && emailadressen[emailadres]==null) {
						emailadressen[emailadres] = 1;
						document.getElementById("inc_emailadressen").value += ((i!=0)?";":"") + emailadres;
					}
				}
				printOfEmailDialog.setHeader("Uitgeleverde incidenten afdrukken of e-mailen");
				document.getElementById("inc_printofemailmode").value = "uitleveren";
				document.getElementById("inc_incidentnummers").innerHTML=nummers;
			}
			printOfEmailDialog.render();
			printOfEmailDialog.show();
		}
	}
	return true;
}
function getContactpersoonEmail(acontactpersonen) {
	for(var i=0; i<acontactpersonen.length; i++) {
		if(acontactpersonen[i]["xml.contactpersonen.selected"]=="1") {
			return(acontactpersonen[i]["xml.gebruikers.email"]);
		}
	}
	return "";
}
function onLoadIncidenten(o) {
	document.getElementById("incidentenframe").innerHTML = o.responseText;
}
function onLoadIncidentEdit() {
	// initialiseer incident edit scherm
	if(document.getElementById('inc_uitvoerdatum')!=null) {
		Calendar.setup({
	        inputField : "inc_uitvoerdatum",
	        ifFormat : "%d-%m-%Y %H:%M",
	        showsTime : true,
	        timeFormat : "24",
	        mondayFirst : true,
	        weekNumbers: true
	        });
	}
	// initialiseer de tooltips bij notities
	var tooltipCounter = 1;
	while(document.getElementById("incidentenTooltip"+tooltipCounter)!=null) {
		var incidentenTooltipText = document.getElementById("incidentenTooltipText"+tooltipCounter).innerHTML;
	   	var inctt = new YAHOO.widget.Tooltip("incidentenTooltipDiv"+tooltipCounter, 
								{ context:"incidentenTooltip"+tooltipCounter, 
								  showDelay: 500, 
								  autodismissdelay: 60000,
								  width: "600px",
								  text: incidentenTooltipText, 
								  zindex:100001 });
		// tooltip object wordt aan html object gekoppeld om later weer te kunnen verwijderen								 
		document.getElementById("incidentenTooltip"+tooltipCounter).tooltipObj = inctt;
		tooltipCounter++;
	}
	// initialiseer de autocomplete voor debiteuren
	if(document.getElementById("inc_debinput")!=null) {
		var debSchema = ["zoekresultaten", "xml_debiteuren_naam", "xml_debiteuren_debcode"];
		var debXHRDataSource = new YAHOO.widget.DS_XHR(gateway, debSchema);
		// disable the cache 
		debXHRDataSource.maxCacheEntries = 0;	
	    debXHRDataSource.connXhrMode = "queueRequests";	
		debXHRDataSource.responseType = YAHOO.widget.DS_XHR.TYPE_JSON;
		debXHRDataSource.scriptQueryParam = "zoek";
		debXHRDataSource.scriptQueryAppend = "appclass=nl.bnc.lib.ajax.BWAppAutocomplete&dbclass=nl.bnc.db.mysql.bncweb.Debiteuren&fields=debiteuren.debcode,debiteuren.src_code,debiteuren.naam,debiteuren.adres,debiteuren.postcode,debiteuren.plaats,debiteuren.email,debiteuren.telefoon,adressen.naam&distinct=debiteuren.nr,debiteuren.debcode,debiteuren.naam,debiteuren.src_code,debiteuren.plaats&joinclause=left join bncweb.adressen on adressen.debcode=debiteuren.debcode&filter="+myescape("debiteuren.actief=1")+"&order=debiteuren.naam&limit=25&json=1&translatejson=1&menuid="+menuid;
		var debAutoCompCRM = new YAHOO.widget.AutoComplete("inc_debinput","inc_debcontainer", debXHRDataSource);
		debAutoCompCRM.minQueryLength = 2;
		debAutoCompCRM.maxResultsDisplayed = 25;
		debAutoCompCRM.formatResult = function(aResultItem, sQuery) {
			var naam = aResultItem[0];
			var debcode = aResultItem[1]; 
			var aMarkup = ["<div>",
				debcode,
				": <b>",
				naam,
				"</b>",
				"</div>"];
			return (aMarkup.join(""));
		};
		var debSelectHandler = function(sType, aArgs) {
			var debcode = aArgs[2][1];
			var debnaam = aArgs[2][0];
			document.getElementById("inc_debcode").value = debcode;
			document.getElementById("inc_showdebnaam").innerHTML = debnaam;
			document.getElementById("inc_debinput").value = "";
			document.getElementById("inc_debinput").style.display = "none";
			
			var onLoadContactpersonen = function(o) {
				var obj = eval("("+o.responseText+")");
				var selcpobj = document.getElementById("inc_contactnr");
				for(var i=0; i<obj["zoekresultaten"].length; i++) {
					/*
					 * nieuwe option aanmaken per contactpersoon
					 */
					var nopt = document.createElement("option");
					nopt.value = obj["zoekresultaten"][i]["xml_gebruikers_nr"];
					nopt.text = 
						((obj["zoekresultaten"][i]["xml_gebruikers_voornaam"]!=null)?obj["zoekresultaten"][i]["xml_gebruikers_voornaam"] + " ":"") +
						((obj["zoekresultaten"][i]["xml_gebruikers_tussenvoegsel"]!=null)?obj["zoekresultaten"][i]["xml_gebruikers_tussenvoegsel"] + " ":"") +
									obj["zoekresultaten"][i]["xml_gebruikers_achternaam"];
					selcpobj.options.add(nopt);
					/*
					 * nieuwe hidden input aanmaken per contactpersoon voor adresnr
					 */
					var tdadrinp = document.createElement("input");
					tdadrinp.id = "inc_contactadres_"+nopt.value;
					tdadrinp.type = "hidden";
					tdadrinp.value = (obj["zoekresultaten"][i]["xml_gebruikers_adresnr"] || "0");
					document.getElementById("inc_contactinfocontainer").appendChild(tdadrinp);
				}
			};
			var onLoadAdressen = function(o) {
				var obj = eval("("+o.responseText+")");
				var seladrobj = document.getElementById("inc_adresnr");
				for(var i=0; i<obj["zoekresultaten"].length; i++) {
					/*
					 * nieuwe option aanmaken per adres
					 */
					var nopt = document.createElement("option");
					nopt.value = obj["zoekresultaten"][i]["xml_adressen_nr"];
					nopt.text = 
						obj["zoekresultaten"][i]["xml_adressen_adres"] + ", " +
						((obj["zoekresultaten"][i]["xml_adressen_postcode"]!=null)?obj["zoekresultaten"][i]["xml_adressen_postcode"] + " ":"") +
						obj["zoekresultaten"][i]["xml_adressen_plaats"];
					seladrobj.options.add(nopt);
				}
			};
			onLoadNiveaus = function(o) {
				/*
				 * de niveaus worden opnieuw gelezen om de tarieven opnieuw te bepalen
				 */
				var obj = eval("("+o.responseText+")");
				for(var i=0; i<obj["zoekresultaten"].length; i++) {
					var tip = document.getElementById("inc_niveautarief_"+obj["zoekresultaten"][i].xml_niveaus_nr);
					if(tip!=null) {
						tip.value = obj["zoekresultaten"][i].xml_niveaus_tarief;	
					}
				}
				setIncidentTarief();
			}
			var now = new Date();
			var callback =
			{
				success:onLoadContactpersonen,
				failure:onFailure
			}
			YAHOO.util.Connect.asyncRequest("GET", gateway+"?appclass=nl.bnc.lib.ajax.BWAppAutocomplete&dbclass=nl.bnc.db.mysql.bncweb.Gebruikers&zoek="+debcode+"&fields=gebruikers.debcode&joinclause=join bnc.groupings on gebruikers.userid=groupings.userid&filter="+myescape("gebruikers.debcode='"+debcode+"' and gebruikers.deactivated=0 and groupings.groupId='bnc-extranet-0008_____'")+"&order=gebruikers.voornaam, gebruikers.achternaam&json=1&translatejson=1&menuid="+menuid+"&nocache="+now.getTime(), callback, "");
			callback =
			{
				success:onLoadAdressen,
				failure:onFailure
			}
			YAHOO.util.Connect.asyncRequest("GET", gateway+"?appclass=nl.bnc.lib.ajax.BWAppAutocomplete&dbclass=nl.bnc.db.mysql.bncweb.Adressen&zoek="+debcode+"&fields=adressen.debcode&filter="+myescape("adressen.debcode='"+debcode+"' ")+"&order=adressen.plaats,adressen.adres&json=1&translatejson=1&menuid="+menuid+"&nocache="+now.getTime(), callback, "");
			callback =
			{
				success:onLoadNiveaus,
				failure:onFailure
			}
			YAHOO.util.Connect.asyncRequest("GET", gateway+"?appclass=nl.bnc.lib.ajax.BWAppAutocomplete&dbclass=nl.bnc.db.mysql.bnctd.Niveaus&zoek=&fields=&debcode="+debcode+"&order=niveaus.naam&json=1&translatejson=1&menuid="+menuid+"&nocache="+now.getTime(), callback, "");
		};
		debAutoCompCRM.itemSelectEvent.subscribe(debSelectHandler);
	}
	// initialiseer de autocomplete datatable voor serienummers
	if(document.getElementById("inc_serienummer_zoekcontainer")!=null) {
		var incidentnr = 0;
		if(document.getElementById("inc_incidentnr")!=null) {
			incidentnr = document.getElementById("inc_incidentnr").value;
		}
		var serSchema = ["zoekresultaten", "xml_serienummers_serienummer", "xml_serienummers_productcode"];
		var serXHRDataSource = new YAHOO.widget.DS_XHR(gateway, serSchema);
		// disable the cache 
		serXHRDataSource.maxCacheEntries = 0;	
	    serXHRDataSource.connXhrMode = "queueRequests";	
		serXHRDataSource.responseType = YAHOO.widget.DS_XHR.TYPE_JSON;
		serXHRDataSource.scriptQueryParam = "zoek";
		serXHRDataSource.scriptQueryAppend = "appclass=nl.bnc.lib.ajax.BWAppAutocomplete&dbclass=nl.bnc.db.mysql.bncweb.Serienummers&fields=serienummers.serienummer&order=serienummers.serienummer&json=1&translatejson=1&menuid="+menuid;
		var serAutoComp = new YAHOO.widget.AutoComplete("inc_serienummer","inc_serienummer_zoekcontainer", serXHRDataSource);
		serAutoComp.minQueryLength = 3;
		serAutoComp.formatResult = function(aResultItem, sQuery) {
			var serienummer = aResultItem[0];
			var productcode = aResultItem[1]; 
			var aMarkup = ["<div>",
				serienummer,
				" - ",
				productcode,
				"</div>"];
			return (aMarkup.join(""));
		};
		var serSelectHandler = function(sType, aArgs) {
			document.getElementById("inc_productcode").value = aArgs[2][1];
		};
		serAutoComp.itemSelectEvent.subscribe(serSelectHandler);
		
		createSerienummerDatatable();
	}
	// bepaal zichtbaarheid div's m.b.t. hardwarestoring en kosten
	if(document.getElementById('inc_repatypenr')!=null) {
		setIncidentType(document.getElementById('inc_repatypenr').options[document.getElementById('inc_repatypenr').selectedIndex].value);
	}	
}
function changeInputType(node, type) {
	var nn = document.createElement("input");
	nn.className = "incidentselector";
	nn.type = type;
	node.parentNode.replaceChild(nn, node);
	nn.id = node.id;
	nn.name = node.name;
	nn.value = node.value;
}
function setIncidentEditMode(mode) {
	/*
	 * Door deze functie wordt de editmode gezet op 'edit' of op 'uitleveren'. In het geval
	 * van 'edit' willen we een overzicht van alle incidenten waaruit we via een radiobutton
	 * een kunnen selecteren; in het geval van 'uitleveren' moeten alleen de uit te leveren
	 * incidenten worden getoond met checkboxes, zodat we er meer dan een kunnen selecteren.
	 */
	if(mode=="edit") {
		var aselectors = YAHOO.util.Selector.query(".incidentselector");
		for(var i=0; i<aselectors.length; i++) {
			changeInputType(aselectors[i],"radio");
		}
		// nog een keer opvragen aangezien de oorspronkelijke elementen zijn vervangen
		aselectors = YAHOO.util.Selector.query(".incidentselector");
		if(aselectors.length>0) {
			aselectors[0].checked=true;
		}
		var ashow = YAHOO.util.Selector.query(".incidentenedit");
		for(var i=0; i<ashow.length; i++) {
			ashow[i].style.display="table-row";
		}
	} else {
		var aselectors = YAHOO.util.Selector.query(".incidentselector");
		for(var i=0; i<aselectors.length; i++) {
			changeInputType(aselectors[i],"checkbox");
		}
		var ashow = YAHOO.util.Selector.query(".incidentenedit");
		for(var i=0; i<ashow.length; i++) {
			ashow[i].style.display="none";
		}
	}
}
function readSerienummerDatatable() {
	var zoek = "-1";
	if(document.getElementById("inc_serienummer").value.length>0) {
		zoek = document.getElementById("inc_serienummer").value;
	}
	globalIncDatasource.sendRequest("&zoek="+zoek, globalIncDatatable.onDataReturnInitializeTable, globalIncDatatable);
}
function createSerienummerDatatable() {
		var incidentnr = 0;
		if(document.getElementById("inc_incidentnr")!=null) {
			incidentnr = document.getElementById("inc_incidentnr").value;
		}
        var incidentBekijken = function(elCell, oRecord, oColumn, oData) {
			elCell.innerHTML = '<a onclick="popitup(\'/wobjects/technische-dienst/incident-overzicht?HttpProxy_fn=setedit&HttpProxy_keynr='+oRecord.getData("xml_incidenten_incidentnr")+'\');"><img src="/framework/afbeeldingen/layout/vergrootglas.png" style="border: none;" /></a>';
		}
        var incidentOpenen = function(elCell, oRecord, oColumn, oData) {
			elCell.innerHTML = '<a onclick="editIncidentenWizard.editItem('+oRecord.getData("xml_incidenten_incidentnr")+');"><img src="/framework/afbeeldingen/layout/openen.png" style="border: none;" /></a>';
		}
        var incSerienummersColumnDefs = [
            {key:"xml_incidenten_incidentnr", label:"Incidentnr", sortable:true},
            {key:"xml_incidenten_serienummer", label:"Serienummer", sortable:true},
            {key:"xml_incidenten_omschrijving", label:"Omschrijving", sortable:true},
            {key:"xml_incidenten_invoerdatum", label:"Datum", sortable:true},
            {key:"xml_incidenten_status_tekst", label:"Status", sortable:false},
			{label:"",formatter:incidentBekijken},
			{label:"",formatter:incidentOpenen}
        ];
        globalIncDatasource = new YAHOO.util.DataSource(gateway+"?appclass=nl.bnc.lib.ajax.BWAppAutocomplete&dbclass=nl.bnc.db.mysql.bnctd.Incidenten&fields=incidenten.serienummer&joinclause=left join bnctd.repatypes on incidenten.repatypenr=repatypes.nr&filter="+myescape("incidenten.debcode='"+document.getElementById("inc_debcode").value+"' and incidenten.incidentnr<>"+incidentnr+" and incidenten.deleted=0 and repatypes.hardwarestoring=1")+"&order=incidenten.incidentnr&json=1&translatejson=1&menuid="+menuid);
		globalIncDatasource.responseType = YAHOO.util.DataSource.TYPE_JSON;
		globalIncDatasource.connXhrMode = "queueRequests";
		globalIncDatasource.responseSchema = {
            resultsList: "zoekresultaten",
            fields: [
				{key:"xml_incidenten_incidentnr"},
				{key:"xml_incidenten_serienummer"},
				{key:"xml_incidenten_omschrijving"},
				{key:"xml_incidenten_invoerdatum"},
				{key:"xml_incidenten_status_tekst"}
			],
			metaFields: {
				errorMessage: "xml_error"
			}			
		};					
		var initialZoek = "-1";
		if(document.getElementById("inc_serienummer").value.length>0) {
			initialZoek = document.getElementById("inc_serienummer").value;
		}
		// DataTable instance
		globalIncDatatable = new YAHOO.widget.DataTable("inc_serienummercontainer",
									incSerienummersColumnDefs,
									globalIncDatasource,
									{initialRequest: "&zoek="+initialZoek });
}
function setIncidentType(repatypenr) {
	/*
	 * de prioriteit dropdown box krijgt de waarde die bij het type hoort 
	 */
	if(document.getElementById("repatypeprioriteit"+repatypenr)!=null) {
		var prioriteit = document.getElementById("repatypeprioriteit"+repatypenr).value;
		var aprioriteiten = document.getElementById("inc_prioriteit").options;
		for(var i=0; i<aprioriteiten.length; i++) {
			if(aprioriteiten[i].value == prioriteit) {
				document.getElementById("inc_prioriteit").selectedIndex = i;
				break;
			}
		}
	}
	/*
	 * als het type 'hardwarestoring' is moet de 'showhardwarevelden' div zichtbaar
	 * zijn, anders niet; als het type 'hardwarestoring' is OF een externe leverancier is
	 * geselecteerd moeten de kosten worden getoond
	 */
	var ishardwarestoring = (document.getElementById("repatypehardwarestoring"+repatypenr)!=null);
	document.getElementById("showhardwarestoring").style.display = (ishardwarestoring)?"block":"none";
	if(document.getElementById("showgeenhardwarestoring")!=null) {
		document.getElementById("showgeenhardwarestoring").style.display = (ishardwarestoring)?"none":"block";
		document.getElementById("inc_showkosten").style.display =
				(ishardwarestoring || document.getElementById("inc_externleveranciernr").selectedIndex!=0)
				?"block":"none";
	}
}
function setIncidentUitvoerdatum(prioriteit) {
	var uitvoerdatum = document.getElementById("inc_prioriteit_tijdstip"+prioriteit).value;
	document.getElementById("inc_uitvoerdatum").value = uitvoerdatum;
}
function setIncidentenInfo(id) {
	/*
	 * toon de info behorende bij geselecteerd id en verberg de rest
	 */
	var seloptions = document.getElementById(id).options;
	var selindex = document.getElementById(id).selectedIndex;
	/*
	 *  optie 0 slaan we over, die geeft aan 'Niet ingesteld'...
	 */
	for(var i=1; i<seloptions.length; i++) {	
		document.getElementById(id+"info"+seloptions[i].value).style.display = 
			(i == selindex) ? "block" : "none";
	}
}
function setIncidentenAdres() {
	/*
	 * selecteer het standaard adres dat bij de geselecteerde gebruiker hoort
	 */
	var contactoptions = document.getElementById('inc_contactnr').options;
	var gebruikernr = contactoptions[document.getElementById('inc_contactnr').selectedIndex].value;
	if(gebruikernr!=0) {
		var adresnr = document.getElementById("inc_contactadres_"+gebruikernr).value;
		var adresoptions = document.getElementById('inc_adresnr').options;
		for(var i=0; i<adresoptions.length; i++) {
			if(adresoptions[i].value == adresnr) {
				document.getElementById('inc_adresnr').selectedIndex = i;
				break;
			}
		}
	} else {
		document.getElementById('inc_adresnr').selectedIndex = 0;
	}
	/*
	 * toon de adresinfo van het geselecteerde adres
	 */
	//setIncidentenInfo("inc_adresnr");
}
function setIncidentDeelfacturatie(id) {
	document.getElementById("inc_deelfacturatiecheckbox").checked = (document.getElementById("inc_parentdeelfacturatie"+id)!=null);
}
function setIncidentTarief() {
	var niveauidx = document.getElementById("inc_niveaunr").selectedIndex;
	if(niveauidx<=0) {
		document.getElementById("inc_urentarief").value = "0,00";
	} else {
		var niveaunr = document.getElementById("inc_niveaunr").options[niveauidx].value;
		var tariefobj = document.getElementById("inc_niveautarief_"+niveaunr);
		document.getElementById("inc_urentarief").value = tariefobj.value;
	}
}
function validateIncidenten(curPanel) {
	if(curPanel==null||curPanel==1) {
		/*
		 * alleen valideren als inc_debcode bestaat (anders zie je het Uitleveren overzicht)
		 */
		if(document.getElementById("inc_debcode")!=null) {
			if(document.getElementById("inc_debcode").value == "") {
				alert("Debiteur moet worden ingevuld");
				return false;
			}
			if(document.getElementById("inc_omschrijving").value == "") {
				alert("Omschrijving moet worden ingevuld");
				return false;
			}
			if(document.getElementById("inc_repatypenr")!=null && document.getElementById("inc_repatypenr").selectedIndex == 0) {
				alert("Incident type moet worden ingesteld");
				return false;
			}
			if(document.getElementById("inc_klacht").value == "") {
				alert("Klacht moet worden ingevuld");
				return false;
			}
		} else {
			if( document.getElementById("inc_selcode")!=null &&
				document.getElementById("inc_selcode").value == "") {

				alert("Selcode moet worden ingevuld");
				return false;
			}
		}
	}
	if(curPanel==null||curPanel==2) {
		/*
		 * als "showhardwarestoring" bestaat, dan zijn we niet aan het uitleveren; nu
		 * moet e.e.a. worden gevalideerd
		 */
		if(document.getElementById("showhardwarestoring")!=null) {
			if(document.getElementById("showhardwarestoring").style.display != "none") {
				if(	document.getElementById("inc_rmaleveranciernr")!=null &&
				   	document.getElementById("inc_rmaleveranciernr").value == "0") {
					alert("Leverancier moet worden geselecteerd");
					return false;
				}
				if(document.getElementById("inc_serienummer").value == "") {
					alert("Serienummer moet worden ingevoerd");
					return false;
				}
				if(document.getElementById("inc_productcode").value == "") {
					alert("Productcode moet worden ingevoerd");
					return false;
				}
				if( document.getElementById("inc_sendleverancieremailhardware")!=null &&
					document.getElementById("inc_sendleverancieremailhardware").value == "yes" &&
					document.getElementById("inc_rmaleveranciernr").value == "0") {
					alert("Leverancier moet worden geselecteerd om te kunnen emailen");
					return false;
				}
			} else {
				if( document.getElementById("inc_sendleverancieremailextern")!=null &&
					document.getElementById("inc_sendleverancieremailextern").value == "yes" &&
					document.getElementById("inc_externleveranciernr").value == "0") {
					alert("Leverancier moet worden geselecteerd om te kunnen emailen");
					return false;
				}
			}
		}
	}
	/*
	 * omdat het aantal panels niet altijd gelijk is valideren we verder alleen bij submitten
	 * van de form
	 */
	if(curPanel==null) {
		// minstens 1 medewerker moet zijn geselecteerd, of 'Alle medewerkers'
		/*if(document.getElementById("allemedewerkers")!=null && !document.getElementById("allemedewerkers").checked) {
			var bstatus = false;
			var aboxes = YAHOO.util.Selector.query(".medewerkercheckbox");
			for(var i=0; i<aboxes.length; i++) {
				if(aboxes[i].checked) {
					bstatus = true;
				}
			}
			if(!bstatus) {
				alert("Selecteer minstens één medewerker");
				return false;
			}
		}*/
	}
	return true;
}
function onCloseIncidentenEdit() {
	/*
	 * als de dialog wordt gesloten moeten de tooltips worden verwijderd
	 */
	var tooltipCounter = 1;
	while(document.getElementById("incidentenTooltip"+tooltipCounter)!=null) {
		document.getElementById("incidentenTooltip"+tooltipCounter).tooltipObj.destroy();
		tooltipCounter++;
	}
}
// -- offertezaken
function kiesGebruikerOfferte(userid) {
	var now = new Date();
	var callback =
	{
		success:onLoadOfferte,
		failure:onFailure
	}
	YAHOO.util.Connect.asyncRequest("GET", gateway+"?appclass=nl.bnc.bncweb.system.applicatie.webshop.BWAppOfferte&json=1&menuid="+menuid+"&ac=editofferte&fn=selectgebruiker&userid="+myescape(userid)+"&activearea="+getActivearea()+"&noCache="+now.getTime(), callback, "");
}
function onLoadOfferte(o) {
	var obj=eval("("+o.responseText+")");
	feedback("Offerte voor "+obj["xml.users.volledigenaam"]+" van "+obj["xml.users.debnaam"]);
	if(obj["xml.offerteregels.aantal"]!=null && parseInt(obj["xml.offerteregels.aantal"])>0) {
		if(confirm("Prijzen actualiseren?")) {
			var now = new Date();
			var callback =
			{
				success:onActualiseren,
				failure:onFailure
			}
			YAHOO.util.Connect.asyncRequest("GET", gateway+"?appclass=nl.bnc.bncweb.system.applicatie.webshop.BWAppOfferte&json=1&menuid="+menuid+"&ac=editofferte&fn=restaffel&activearea="+getActivearea()+"&noCache="+now.getTime(), callback, "");
		} else {
			updateOverzichtEnOfferte();
		}
	} else {
		updateOverzichtEnOfferte();
	}
}
function onActualiseren(o) {
	updateOverzichtEnOfferte();
}
function updateOverzichtEnOfferte() {
	if (document.getElementById("pageId_offerte") != null) {
		// offertepagina bestaat, deze verwijderen
		document.getElementById("pageId_offerte").parentNode.removeChild(document.getElementById("pageId_offerte"));
	}
	updateOverzicht();
}
// init	
function filterAppend(actief) {
	return "&filter="+myescape("actief="+actief);
}
function initAutocompletes(pfDeb,pfGebruiker,pfZoekcode,selectDebiteur) {
	// define autocomplete
	var debSchema = ["zoekresultaten", "xml_debiteuren_naam", "xml_debiteuren_nr", "xml_debiteuren_debcode", "xml_debiteuren_adres", "xml_debiteuren_postcode", "xml_debiteuren_plaats", "xml_debiteuren_telefoon", "xml_debiteuren_src_code"];
	if(globalDebXHRDataSource==null) {
		globalDebXHRDataSource = new YAHOO.widget.DS_XHR(gateway, debSchema);
		// disable the cache 
		globalDebXHRDataSource.maxCacheEntries = 0;	
		globalDebXHRDataSource.responseType = YAHOO.widget.DS_XHR.TYPE_JSON;
		globalDebXHRDataSource.scriptQueryParam = "zoek";
	    globalDebXHRDataSource.connXhrMode = "queueRequests";	
		queryappend = "appclass=nl.bnc.lib.ajax.BWAppAutocomplete&dbclass=nl.bnc.db.mysql.bncweb.Debiteuren&fields=debiteuren.debcode,debiteuren.src_code,debiteuren.naam,debiteuren.adres,debiteuren.postcode,debiteuren.plaats,debiteuren.email,debiteuren.telefoon,adressen.naam&distinct=debiteuren.nr,debiteuren.debcode,debiteuren.naam,debiteuren.src_code,debiteuren.adres,debiteuren.postcode,debiteuren.plaats&joinclause=left join bncweb.adressen on adressen.debcode=debiteuren.debcode&order=debiteuren.naam&limit=25&json=1&translatejson=1&menuid="+menuid;
		globalDebXHRDataSource.scriptQueryAppend = queryappend+filterAppend(1)+" and (adressen.naam<>'' or adressen.standaard=1)";
	}
	var debAutoCompCRM = new YAHOO.widget.AutoComplete(pfDeb+"Input",pfDeb+"Container", globalDebXHRDataSource);
	debAutoCompCRM.minQueryLength = 2;
	debAutoCompCRM.maxResultsDisplayed = 25;
	debAutoCompCRM.formatResult = function(aResultItem, sQuery) {
		var naam = aResultItem[0];
		var debcode = aResultItem[2]; 
		var srccode = aResultItem[7];
		var adres = (aResultItem[3]!=null)?aResultItem[3]:"";
		var plaats = ((aResultItem[4]!=null)?aResultItem[4]:"")+" "+((aResultItem[5]!=null)?aResultItem[5]:"");
		var aMarkup = ["<div style=\"height: 15px; line-height: 15px;\"><div style=\"float: left; width: 35px;\">",
			debcode,
			"</div><div style=\"float: left; width: 95px; overflow: hidden; padding-left: 5px; \">",
			srccode,
			"</div><div style=\"float: left; font-weight: bold; width: 225px; overflow: hidden; padding-left: 5px; \">",
			naam,
			"</div><div style=\"float: left; width: 175px; overflow: hidden; padding-left: 10px; \">",
			adres,				
			"</div><div style=\"float: left; width: 175px; overflow: hidden; padding-left: 5px; \">",
			plaats,
			"</div></div>"];
		return (aMarkup.join(""));
	};
	var itemSelectHandler = function(sType, aArgs) {
		selectDebiteur(aArgs[2][1],0);
	};
	debAutoCompCRM.itemSelectEvent.subscribe(itemSelectHandler);
	
	// define autocomplete voor zoeken op zoekcode
	var zoekcodeSchema = ["zoekresultaten", "xml_debiteuren_naam", "xml_debiteuren_nr", "xml_debiteuren_debcode", "xml_debiteuren_adres", "xml_debiteuren_postcode", "xml_debiteuren_plaats", "xml_debiteuren_telefoon", "xml_debiteuren_src_code"];
	zoekcodeXHRDataSource = new YAHOO.widget.DS_XHR(gateway, debSchema);
	// disable the cache 
	zoekcodeXHRDataSource.maxCacheEntries = 0;	
    zoekcodeXHRDataSource.connXhrMode = "queueRequests";	
	zoekcodeXHRDataSource.responseType = YAHOO.widget.DS_XHR.TYPE_JSON;
	zoekcodeXHRDataSource.scriptQueryParam = "zoek";
	zoekcodequeryappend = "appclass=nl.bnc.lib.ajax.BWAppAutocomplete&dbclass=nl.bnc.db.mysql.bncweb.Debiteuren&fields=src_code&order=src_code&limit=50&json=1&translatejson=1&menuid="+menuid;
	zoekcodeXHRDataSource.scriptQueryAppend = zoekcodequeryappend+filterAppend(1);
	zoekcodeAutoComp = new YAHOO.widget.AutoComplete(pfZoekcode+"Input",pfZoekcode+"Container", zoekcodeXHRDataSource);
	zoekcodeAutoComp.minQueryLength = 2;
	zoekcodeAutoComp.maxResultsDisplayed = 50;
	zoekcodeAutoComp.formatResult = function(aResultItem, sQuery) {
		var naam = aResultItem[0];
		var debcode = aResultItem[2]; 
		var srccode = aResultItem[7];
		var adres = (aResultItem[3]!=null)?aResultItem[3]:"";
		var plaats = ((aResultItem[4]!=null)?aResultItem[4]:"")+" "+((aResultItem[5]!=null)?aResultItem[5]:"");
		var aMarkup = ["<div><div style=\"float: left; width: 95px; overflow: hidden;\">",
			srccode,
			"</div><div style=\"float: left; width: 35px;\">",
			debcode,
			"</div><div style=\"float: left; font-weight: bold; \">",
			naam,
			"</div><div style=\"float: left; padding-left: 5px; \">",
			adres,				
			"</div><div style=\"float: left; padding-left: 5px; \">",
			plaats,
			"</div><div class=\"cleaner\">&nbsp;</div></div>"];
		return (aMarkup.join(""));
	};
	var zoekcodeSelectHandler = function(sType, aArgs) {
		selectDebiteur(aArgs[2][1],0);
	};
	zoekcodeAutoComp.itemSelectEvent.subscribe(zoekcodeSelectHandler);		

	var gebruikerSchema = ["zoekresultaten", "xml_gebruikers_debnaam", "xml_gebruikers_debcode", "xml_gebruikers_voornaam", "xml_gebruikers_tussenvoegsel", "xml_gebruikers_achternaam"];
	gebruikerXHRDataSource = new YAHOO.widget.DS_XHR(gateway, gebruikerSchema);
	// disable the cache 
	gebruikerXHRDataSource.maxCacheEntries = 0;	
	gebruikerXHRDataSource.connXhrMode = "queueRequests";	
	gebruikerXHRDataSource.responseType = YAHOO.widget.DS_XHR.TYPE_JSON;
	gebruikerXHRDataSource.scriptQueryParam = "zoek";
	gebruikerXHRDataSource.scriptQueryAppend = "appclass=nl.bnc.lib.ajax.BWAppAutocomplete&dbclass=nl.bnc.db.mysql.bncweb.Gebruikers&fields=debcode,voornaam,achternaam,username,email,telefoon&order=achternaam,voornaam&limit=25&json=1&translatejson=1&menuid="+menuid+"&filter="+myescape("deactivated=0");
	var gebruikerAutoComp = new YAHOO.widget.AutoComplete(pfGebruiker+"Input",pfGebruiker+"Container", gebruikerXHRDataSource);
	gebruikerAutoComp.minQueryLength = 2;
	gebruikerAutoComp.maxResultsDisplayed = 25;
	gebruikerAutoComp.formatResult = function(aResultItem, sQuery) {
		var debcode = aResultItem[1];
		var voornaam = (aResultItem[2]!=null)?aResultItem[2]:"";
		var tussenvoegsel = (aResultItem[3]!=null)?aResultItem[3]:"";
		var naam = aResultItem[4]+", "+voornaam+ " " +tussenvoegsel;
		var debnaam = aResultItem[0];
		var aMarkup = ["<div><div style=\"float: left; width: 35px;\">",
			debcode,
			"</div><div style=\"float: left; font-weight: bold; \">",
			naam,
			"</div><div style=\"float: left; padding-left: 5px; \">",
			debnaam,				
			"</div><div class=\"cleaner\">&nbsp;</div></div>"];
		return (aMarkup.join(""));
	};
	var gebruikerSelectHandler = function(sType, aArgs) {
		selectDebiteur(aArgs[2][1],1);
	};
	gebruikerAutoComp.itemSelectEvent.subscribe(gebruikerSelectHandler);
	
}
function init() {
	loadingDebiteur = false;

	editDebiteurenWizard = new bncWizard("debiteurenwizard",
		gateway+"?appclass=nl.bnc.lib.ajax.BWAppWizard&iwbclass=nl.bnc.bncweb.system.applicatie.crm.BWDebiteurenWizardBean&json=1&menuid="+menuid,
		"/wobjects/crm/debiteuren-edit",
		"Debiteur",loadContactgegevens,onLoadDebiteurEdit,validateDebiteur);
	editInterneContactpersonenWizard = new bncWizard("internecontactpersonenwizard",
		gateway+"?appclass=nl.bnc.lib.ajax.BWAppWizard&iwbclass=nl.bnc.bncweb.system.applicatie.crm.BWInterneContactpersonenWizardBean&json=1&menuid="+menuid,
		"/wobjects/crm/interne-contactpersonen-edit",
		"Intern contactpersoon",loadContactgegevens);
	editExterneContactpersonenWizard = new bncWizard("externecontactpersonenwizard",
		gateway+"?appclass=nl.bnc.lib.ajax.BWAppWizard&iwbclass=nl.bnc.bncweb.system.applicatie.crm.BWExterneContactpersonenWizardBean&json=1&menuid="+menuid,
		"/wobjects/crm/externe-contactpersonen-edit",
		"Extern contactpersoon",loadContactgegevens,null,validateExternContactpersoon);
	editAdressenWizard = new bncWizard("adressenwizard",
		gateway+"?appclass=nl.bnc.lib.ajax.BWAppWizard&iwbclass=nl.bnc.bncweb.system.applicatie.crm.BWAdressenWizardBean&json=1&menuid="+menuid,
		"/wobjects/crm/adressen-edit",
		"Extra adres",loadContactgegevens,null,validateAdres);
	editGebruikersWizard = new bncWizard("gebruikerswizard",
		gateway+"?appclass=nl.bnc.lib.ajax.BWAppWizard&iwbclass=nl.bnc.bncweb.system.applicatie.crm.BWGebruikersWizardBean&json=1&menuid="+menuid,
		"/wobjects/crm/gebruikers-edit",
		"Gebruiker",loadGebruikers,onLoadGebruikersEdit,validateGebruiker);
	editAfsprakenWizard = new bncWizard("afsprakenwizard",
		gateway+"?appclass=nl.bnc.lib.ajax.BWAppWizard&iwbclass=nl.bnc.bncweb.system.applicatie.crm.BWAfsprakenWizardBean&json=1&menuid="+menuid,
		"/wobjects/crm/afspraken-edit",
		"Afspraak",loadAfspraken,onLoadAfspraakEdit,validateAfspraak);
	editBidataWizard = new bncWizard("bidatawizard",
		gateway+"?appclass=nl.bnc.lib.ajax.BWAppWizard&iwbclass=nl.bnc.bncweb.system.applicatie.crm.BWBIDataWizardBean&json=1&menuid="+menuid,
		"/wobjects/crm/bidata-edit",
		"Business Intelligence gegevens",loadBidata, onLoadBidataEdit);
	editContractenWizard = new bncWizard("contractenwizard",
		gateway+"?appclass=nl.bnc.lib.ajax.BWAppWizard&iwbclass=nl.bnc.bncweb.system.applicatie.crm.BWContractenWizardBean&json=1&menuid="+menuid,
		"/wobjects/crm/contracten-edit",
		"Contract",loadContracten,onLoadContractEdit,validateContract);
	if('1'=='0') {
		editIncidentenWizard = new bncWizard({
			id:"incidentenwizard",
			actionUrl:gateway+"?appclass=nl.bnc.lib.ajax.BWAppWizard&iwbclass=nl.bnc.bncweb.system.applicatie.td.crm.BWIncidentenWizardBean&json=1&menuid="+menuid,
			layoutUrl:"/wobjects/crm/incidenten-edit",
			title:"Incident",
			onDone:loadIncidenten,
			onLoadPanels:onLoadIncidentEdit,
			onValidate:validateIncidenten,
			onClose:onCloseIncidentenEdit,
			width:"960px"
		});
	}
}
YAHOO.util.Event.onDOMReady(init);