var repeatalert = true;
function clickLink(anchor)
{
	var anchors = document.getElementsByName("link");
	for (var i = 0; i < anchors.length; i++)
		anchors[i].style.color = "#cf0038";
	anchor.style.color = "black";
}

function AlertOnce(msg)
{
    if (repeatalert && !confirm(msg + "\n\nDeze meldingen blijven tonen?"))
        repeatalert = false;
}

function GetIframes()
{
    var iframeSrc;
    if (document.location.pathname != '/paginas/home.aspx')
    {
        var iframe = parent.document.getElementById('MSOImageWebPart_WebPartWPQ1');
        iframeSrc = iframe != null ? parent.document : parent.parent.document;
    }
    else
        iframeSrc = document;
    return iframeSrc.getElementsByTagName("iframe");
}

function refreshIframe(title, src)
{
    var iframes = GetIframes();
	for (var i = 0; i < iframes.length; i++)
		if (iframes[i].title == title)
			iframes[i].src = src;
}

function resizeIframes()
{
    var iframes = GetIframes();
	var titles = getTitles();
	var targetheight = Math.max(400, document.body.clientHeight - 220);
	for (var i = 0; i < iframes.length; i++)
		if (iframes[i].title == titles[0] || iframes[i].title == titles[1] || iframes[i].title == titles[2])
			getParent(iframes[i]).style.height = targetheight;
}

function getImg(url, count)
{
	var parts = url.split('.');
	var len = parts.length;
	var nr = (1 + Math.round((count - 1) * Math.random()));
	var newUrl = parts[0];
	for (var i = 1; i < len - 1; i++)
		newUrl += '.' + parts[i];
	
	newUrl += nr.toString() + '.' + parts[len - 1];
	return newUrl;
}

function refreshIframeFromMenu(title, src, width)
{
     var iframes = GetIframes();
	 for (var i = 0; i < iframes.length; i++)
	 {
	 	if (iframes[i].title == title)
	 	{
	 		var pelem = getParent(iframes[i]);
		 	var cnt = 0;
	 		while (pelem != null && cnt < 5)
	 		{
	 			pelem.style.width = width;
	 			pelem = getParent(pelem);
	 			cnt++;
	 		}
	 		iframes[i].src = src;
	 	}
	 }
}

function makeLinkActive(linkText)
{
	try
	{
    	var linkjes = document.getElementsByName('contentLink');
    	if (linkjes.length == 0)
    	{
            var iframes = GetIframes();
            linkjes = parent.document.getElementsByName('contentLink');
    		for (var i = 0; i < iframes.length; i++)
    		{
    			if (iframes[i].src.substr(0, 8).toLowerCase() == 'menu.htm')
    				iframes[i].src = 'menu.htm?activetab=' + linkText;
    		}
    	}
    	for (var i = 0; i < linkjes.length; i++)
    		linkjes[i].style.color = GetInnerText(linkjes[i]) != linkText ? '#ffffff' : '#C0C0C0';
	}
	catch (e)
	{
		AlertOnce('makeLinkActive: ' + e.message);
	}
}

function getWidths()
{
	var widths = new Array();
	widths[0] = 244;
	widths[1] = 582;
	widths[2] = 195;
	return widths;
}

function getTitles()
{
	var titles = new Array();
	titles[0] = "Kolom links";
	titles[1] = "Kolom midden";
	titles[2] = "Kolom rechts";
	return titles;
}

function updateImage(src)
{
    var iframe;
    if (document.location.pathname != '/paginas/home.aspx')
    {
        iframe = parent.document.getElementById('MSOImageWebPart_WebPartWPQ1');
        iframeSrc = iframe != null ? parent.document : parent.parent.document;
    }
    else
        iframeSrc = document;
    iframe = iframeSrc.getElementById('MSOImageWebPart_WebPartWPQ1');
    
    //if (iframe == null)
    //    iframe = parent.parent.document.getElementById('MSOImageWebPart_WebPartWPQ1');
	iframe.src = src;
}

function jumptoHome(ctrl)
{
	jumpto(ctrl, 'content_left.htm', '/website content/home/welkom.htm', 'content_right.htm', getImg('/afbeeldingen/header_overEFM.jpg', 4))
}

function jumpto(ctrl, url_links, url_midden, url_rechts, imgUrl, tabName)
{
	var titles = getTitles();
	var widths = getWidths();
	refreshIframeFromMenu(titles[0], url_links, widths[0]);
	refreshIframeFromMenu(titles[1], url_midden, widths[1]);
	refreshIframeFromMenu(titles[2], url_rechts, widths[2]);
	updateImage(imgUrl);
	if (ctrl != null)
		makeLinkActive(GetInnerText(ctrl));
	if (typeof(tabName) != "undefined")
		makeLinkActive(tabName);
}

function jumptoFromIndex(url)
{
  	refreshIframe(getTitles()[1] ,url);
}

function enter(ctrl)
{
    statuc = GetInnerText(ctrl);
	ctrl.style.cursor = 'Hand';
}

function enterIndex(statusText, ctrl)
{
	status = statusText;
	ctrl.style.cursor = 'Hand';
}

function leave(ctrl)
{
	status = '';
	ctrl.style.cursor = '';
}

function check()
{
	var parts = document.location.href.split('?');
	if (parts.length == 2)
	{
		var pair = parts[1].split('=');
		if (pair.length == 2)
			makeLinkActive(pair[1]);
	}
}

function makeActive(title, innerText)
{
    var iframes = GetIframes();
	for (var i = 0; i < iframes.length; i++)
		if (iframes[i].title == title)
			iframes[i].src = "menu.htm?activeTab=" + innerText;
}

function enterContent(ctrl)
{
	status = ctrl.name;
	ctrl.style.cursor='Hand';
}

function leaveContent(ctrl)
{
	status = '';
	ctrl.style.cursor='';
}

function ShowContentPage()
{
    var url = "";
    var params = unescape(document.location.search);
    if (params.length > 1)
        params = params.substr(1);
    else
        return;
    var pairs = params.split('&');
    while (pairs.length > 0)
    {
        var pair = pairs.shift().split('=');
        if (pair.length >= 2 && pair[0] == 'content' && pair[1] != '')
        {
           	pair.shift();
          	url = pair.join('=');
          	if (pairs.length > 0)
          	    url += '&' + pairs.join('&');
        }
    }
    if (url != "")
        refreshIframeFromMenu(getTitles()[1], url, getWidths()[1]);
}

function SubmitSearchRedirect(strUrl)
{
	strUrl = strUrl.replace('_layouts/searchresults.aspx', 'paginas/resultaten.aspx');
	var frm = document.forms["frmSiteSearch"];
	if (frm == null && typeof(MSOWebPartPageFormName) != "undefined")
		frm = document.forms[MSOWebPartPageFormName];
	if (frm != null)
	{
		var searchText = frm.elements["SearchString"].value;
		strUrl = strUrl + "?k=" + escapeProperly(searchText);
		var searchScope = frm.elements["SearchScope"];
		if (searchScope != null && searchScope.value)
			strUrl = strUrl + "&u=" + escapeProperly(searchScope.value);
		jumptoFromIndex(strUrl);
	}
}

function GetFldLen(id)
{
	try	{
	var arrFlds = id.split(';');
	var len = 0;
	for (var i = 0; i < arrFlds.length; i++)
		if (arrFlds[i] != '')
			len += getFieldValue(arrFlds[i]).length;
	return len;
	} catch (e)	{ AlertOnce('GetFldLen(' + id + '): ' + e.message);}
}

function ValidateEfmFields(ctlId, fldIds)
{
	try	{
		CombineMandatoryFields(ctlId, fldIds.split('#'));
	} catch (e)	{ AlertOnce('ValidateEfmFields: ' + e.message);}
}

function ValidateEfmFieldsOneMinimal(ctlId, fldIds)
{
	try	{
		CombineMandatoryFieldsOneMinimal(ctlId, fldIds.split('#'));
	} catch (e)	{ AlertOnce('ValidateEfmFields: ' + e.message);}
}

function CheckCustomValidate(ctlId, trId, script)
{
	try
	{
	var ctl = getServerControl('INPUT', ctlId);
	var parsedVal = script != 'Valid' ? eval(unescape(script)) : script;
	ctl.value = parsedVal == '0' ? '' : parsedVal;
	}
	catch (e)
	{
		AlertOnce("CheckCustomValidate('" + ctlId + "','" + trId + "','" + script + "') " + e.message);
	}
}

function CombineMandatoryFieldsOneMinimal(ctlId, arrFld)
{
	try	{
	var len = 0, i;
	for (i = 0; i < arrFld.length; i++)
		len += GetFldLen(arrFld[i]);
	var ctl = getServerControl('INPUT', ctlId);
	ctl.value = len > 0 ? 'Valid' : '';
	} catch (e)	{ AlertOnce('CombineMandatoryFieldsOneMinimal: ' + e.message);}
}

function CombineMandatoryFields(ctlId, arrFld)
{
	try	{
	var len = 1, i;
	for (i = 0; i < arrFld.length; i++)
		len *= GetFldLen(arrFld[i]);
	var ctl = getServerControl('INPUT', ctlId);
	ctl.value = len > 0 ? 'Valid' : '';
	} catch (e)	{ AlertOnce('CombineMandatoryFields: ' + e.message);}
}

function ClearDebug()
{
	try
	{
		if (window.clipboardData)
		{
			//window.clipboardData.clearData('Text');
		}
		else
		{
			//window.efmInfo = "";
		}
	}
	catch (e){AlertOnce("ClearDebug "+ e.message);}
}

function AddDebug(info)
{
	try
	{
		if (window.clipboardData)
		{
			//var old = window.clipboardData.getData('Text');
			//if (old != null)
			//	info = old + "\r\n" + info;
			//window.clipboardData.setData('Text', info);
		}
		else
		{
			//window.efmInfo += "\r\n" + info;
		}
	}
	catch (e){AlertOnce("AddDebug(" + info + ") " + e.message);}
}

function ChainValidation(addOnFn)
{
	try
	{
		if (typeof(document.formEfmValidation) != 'function')
			document.formEfmValidation = function formEfmValidation(){var arrFld, fld, cmd;};
		eval(document.formEfmValidation.toString().split('}')[0] + "\r\n" + addOnFn + ';}');
		document.formEfmValidation = formEfmValidation;
	}
	catch (e)
	{
		AlertOnce('ChainValidation(\r\n' + addOnFn + '\r\n): ' + e.message);
	}
}

function PreSaveItem()
{
  AlertOnce("PreSaveItem");
  ClearDebug();
  return typeof(PreSaveAction) == "function" ? PreSaveAction() : true;
}

function PreSaveAction()
{
	try {
	if (typeof(document.formEfmValidation) == 'function')
	{
		document.formEfmValidation();
		checkInputError(true);
	}
	var form = document.forms[0];
	if (form && form.action)
	{
		form.action = form.action.replace('cancel', 'ok');
		return true;
	}
	return false;
	} catch (e)	{ AlertOnce("PreSaveAction " + e.message); }
}

function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
    else
        AlertOnce('Fout bij opslaan');
}

function getServerControl(tagName, serverId)
{
	var elements = document.getElementsByTagName(tagName);
	for (var i = 0; i < elements.length; i++)
		if (elements[i].id.indexOf(serverId) > 0)
			return elements[i];
	return null;
}

function getFieldValueSub(tagName, title)
{
	var elements = document.getElementsByTagName(tagName);
	for (var i = 0; i < elements.length; i++)
		if (elements[i].title == title)
			return elements[i].value;
	return null;
}

function getControl(tagName, title)
{
    var ctl = null;
    try
    {
	var elements = document.getElementsByTagName(tagName);
	for (var i = 0; ctl == null && i < elements.length; i++)
		if (elements[i].title == title)
			ctl = elements[i];
	}
	catch (e)
	{
	    AlertOnce("getControl: " + e.message);
	}
	return ctl;
}

function getControlByValue(tagName, value)
{
	var elements = document.getElementsByTagName(tagName);
	for (var i = 0; i < elements.length; i++)
		if (elements[i].value == value)
			return elements[i];
	return null;
}

function RemoveOption(select, optionIndex)
{
    if (typeof(select.options.remove) != "undefined")
        select.options.remove(optionIndex);
    else
        select.removeChild(select.options[optionIndex]);
}

function setEigenRisico()
{
    var ctl = getControl("INPUT", "VerzekerdeWaardeSchip");
    GetMoneyFromTextbox(ctl);
    var money = ctl.value;
    while (money.indexOf(".") >= 0)
        money = money.replace(".", "");
	var b = money.valueOf();
	var c = getControl("SELECT", "GewenstEigenRisico");
	var d = c.options;
	
	// als ik gewoon het € teken gebruik, komt er een ? op de pagina te staan
	var euro = c.options[0].value.substr(0, 1);
	var f = new Array();
	if (b < 20000)
		f[f.length] = euro + " 125,00";
	if (b >= 20000 && b < 250000) 
		f[f.length] = euro + " 250,00";
	if (b >= 20000 && b < 500000) 
		f[f.length] = euro + " 500,00";
	if (b >= 20000) 
		f[f.length] = euro + " 1.000,00";
	if (b >= 250000) 
		f[f.length] = euro + " 2.500,00";

    while (c.options.length > 0)
        RemoveOption(c, 0);

	for (var i = 0; i < f.length; i++)
	{
	    var option = document.createElement("OPTION");
	    option.value = f[i];
	    option.text = f[i];
	    c.options.add(option);
    }
}

function assignEigenRisico()
{
	var a = getControl("INPUT", "VerzekerdeWaardeSchip");
	if (a == null)
	{
		AlertOnce("Fout bij laden.");
	}
	else
	{
    	AddEvent(a, 'onchange', setEigenRisico);
		setEigenRisico();
	}
}

function GetInnerText(ctl)
{
    return ctl.innerText ? ctl.innerText : ctl.textContent;
}

function SetInnerText(ctl, innerText)
{
    //AlertOnce("SetInnerText: ", innerText);
    if (ctl.innerText)
        ctl.innerText = innerText;
    else
        ctl.textContext = innerText;
}

function setEigenRisicoBeroeps()
{
	var tonnage = GetNumberFromTextbox(getControl("INPUT", "Tonnage"));
	var risico = GetNumberFromTextbox(getControl("INPUT", "EigenRisicoBeroeps"));
	var c = getControl("INPUT", "EigenRisicoBeroeps");
	
	var tonnages = new Array();
	var risicos = new Array();
	var index = -1;
	for (var i = 0; i < 39; i++)
	{
		tonnages[i] = 200 + i * 100;
		risicos[i] = 500 + i * 50;
		if (tonnages[i] <= tonnage)
			index = i;
	}
	var tds = document.getElementsByTagName("TD");
    for (var i = 0; i < tds.length; i++)
    {
        var td = tds[i];
        var check = " Minimum: ";
        if (GetInnerText(td).substring(0, check.length) == check)
        {
            if (index > -1)
                td.innerHTML = "&nbsp;" + trim(check) + "&nbsp;&euro;&nbsp;" + risicos[index].toString().replace('.', ',') + ",00";
            else
                td.innerHTML = "&nbsp;" + trim(check) + "&nbsp;(geen)";
        }
    }
	if (index > -1)
	{
	}
}

function assignEigenRisicoBeroeps()
{
	var a = getControl("INPUT", "Tonnage");
	if (a == null)
	{
		AlertOnce("Fout bij laden.");
	}
	else
	{
    	AddEvent(a, 'onchange', setEigenRisicoBeroeps);
		//a.onchange = setEigenRisicoBeroeps;
		setEigenRisicoBeroeps();
	}
}

function setKW(e)
{
    if (e.target)
    {
        event = e;
        event.srcElement = e.target;
    }
	var naam = event.srcElement.title.substr(0, event.srcElement.title.length - 2);
	
	var pk = GetNumberFromTextbox(getControl("INPUT", naam + "PK"));
	var kw = Math.round(100 * pk / 1.3605) / 100;
	
	var a = getControl("INPUT", naam + "KW");
	a.value = kw.toString().replace('.', ',');
}

function setPK(e)
{
    if (e.target)
    {
        event = e;
        event.srcElement = e.target;
    }
	var naam = event.srcElement.title.substr(0, event.srcElement.title.length - 2);
	
	var kw = GetNumberFromTextbox(getControl("INPUT", naam + "KW"));
	var pk = Math.round(100 * kw * 1.3605) / 100;
	
	var a = getControl("INPUT", naam + "PK");
	a.value = pk.toString().replace('.', ',');
}

function assignPKKW(naam)
{
	var a = getControl("INPUT", naam + "KW");
	var b = getControl("INPUT", naam + "PK");
	if (a == null || b == null)
	{
		AlertOnce("Fout bij laden");
	}
	else
	{
    	AddEvent(a, 'onchange', setPK);
    	AddEvent(b, 'onchange', setKW);
		//a.onchange = setPK;
		//b.onchange = setKW;
	}
}

function getControlByInnerText(tagName, text)
{
	var elements = document.getElementsByTagName(tagName);
	for (var i = 0; i < elements.length; i++)
		if (GetInnerText(elements[i]) == text)
			return elements[i];
	return null;
}

function getChecked(title)
{
	return getControl("SPAN", title).children[0].checked;
}


function setBron()
{
	try
	{
		document.getElementById("trBronWebsite").style.display = getChecked("Website") ? '' : 'none';
		document.getElementById("trBronAdvertentie").style.display = getChecked("Advertentie") ? '' : 'none';
		document.getElementById("trBronBeurs").style.display = getChecked("Beurs") ? '' : 'none';
		document.getElementById("trBronAssurantieTussenpersoon").style.display = getChecked("Via Assurantie Tussenpersoon") ? '' : 'none';
		document.getElementById("trBronAnders").style.display = getChecked("Anders") ? '' : 'none';
	    var select = getControl("SELECT", "BronBeurs");
		if (select != null)
	        select.selectedIndex = getChecked("Beurs") ? 0 : (select.options.length - 1);
	}
	catch (e)
	{
		AlertOnce('setBron: ' + e.message);
	}
	return true;	
}

function assignBron()
{
	var f1 = getControl("SPAN", "Website");
	var f2 = getControl("SPAN", "Advertentie");
	var f3 = getControl("SPAN", "Beurs");
	var f4 = getControl("SPAN", "Via Assurantie Tussenpersoon");
	var f5 = getControl("SPAN", "Anders");

	if (f1 != null && f2 != null && f3 != null && f4 != null && f5 != null)
	{
		if (typeof(f1.children[0].addEventListener) == "function")
		{
			f1.children[0].onclick = setBron;
			f2.children[0].onclick = setBron;
			f3.children[0].onclick = setBron;
			f4.children[0].onclick = setBron;
			f5.children[0].onclick = setBron;
		}
		else
		{
			f1.children[0].onpropertychange = setBron;
			f2.children[0].onpropertychange = setBron;
			f3.children[0].onpropertychange = setBron;
			f4.children[0].onpropertychange = setBron;
			f5.children[0].onpropertychange = setBron;
		}
		setBron();
	}
}

function NormalizeMoney(val)
{
    // periods are thousand separators -> skip
    while (val.indexOf('.') >= 0)
       val = val.replace('.', '');
    
	// store fraction
	var lastPos = val.lastIndexOf(',');
	var fraction = lastPos > -1 ? val.substr(lastPos + 1) : '';
	val = lastPos > -1 ? val.substr(0, lastPos) : val;
	while (val.indexOf(',') >= 0)
		val = val.replace(',', '');
		
	return fraction!='' ? val + '.' + fraction : val;
}

function DenormalizeMoney(val)
{
    var cPos = val.indexOf('.');
    val = val.replace('.', ',');
    
    var fraction = (cPos == -1 || cPos == val.length - 1) ? "00" : val.substr(cPos + 1);
    var denom = cPos == -1 ? val : val.substr(0, cPos);
    
    var result = '';
    var index = 0;
    for (var i = denom.length - 1; i >= 0; i--)
        result = ((((++index) % 3) == 0 && i > 0) ? '.' : '') + denom.substr(i, 1) + result;

    fraction = fraction.length > 2 ? fraction.substr(0, 2) : fraction;
    while (fraction.length < 2)
        fraction += '0';
    return result;
}

function NormalizeNumber(val)
{
    // only one decimal seperator allowed
    while (val.indexOf('.') >= 0)
       val = val.replace('.', ',');
    while (val.lastIndexOf(',') != val.indexOf(','))
       val = val.replace(',', '');
    
	// store fraction
	var lastPos = val.lastIndexOf(',');
	var fraction = lastPos > -1 ? val.substr(lastPos + 1) : '';
	val = lastPos > -1 ? val.substr(0, lastPos) : val;
	while (val.indexOf(',') >= 0)
		val = val.replace(',', '');
		
	return fraction!='' ? val + '.' + fraction : val;
}

function DenormalizeNumber(val)
{
    return val.replace('.', ',');
}

function GetNumberFromTextbox(ctl)
{
	var nr = 0;
	var val = NormalizeNumber(ctl.value); // nodig voor correcte conversie naar getal
	var errMsg = '';
	if (val != '') do
	{
		try {nr = eval(val==''?'0':val);errMsg = '';} catch (e) {errMsg = e.message;}
		if (val != '' && errMsg != '')
			val = val.substr(0, val.length - 1);
	}
	while (errMsg != '' && val != '');
	// aanpassen van de ctl value zonder meer hangt IE op omdat dit al een onchange event is
	// maar alleen aanpassen indien nodig, gaat wel goed
	val = DenormalizeNumber(val);
	
	if (ctl.value != val)
		ctl.value = val;
	return nr;
}

function isDecimalDigit(keyCode)
{
    return (keyCode == 188 || keyCode == 190 || keyCode == 110)
}

function isAlpha(keyCode)
{
    return (keyCode >= 65 && keyCode <= 90)
}

function validNumber( ctl, e ) {
    var keycode;
    // keycode for ie
    if ( window.event ) {
        e = window.event;
        keycode = e.keyCode;
    }
    // keycode for firefox, safari and opera
    else {
        keycode = e.which;
    }
    var valid = !isAlpha(keycode) && !isDecimalDigit(keycode);
    ctl.style.color = valid ? 'black' : 'red';
    return valid;
}

function GetMoneyFromTextbox(ctl)
{
	var nr = 0;
	var val = NormalizeMoney(ctl.value); // nodig voor correcte conversie naar getal
	
	var errMsg = '';
	if (val != '') do
	{
		try {nr = eval(val==''?'0':val);errMsg = '';} catch (e) {errMsg = e.message;}
		if (val != '' && errMsg != '')
			val = val.substr(0, val.length - 1);
	}
	while (errMsg != '' && val != '');
	// aanpassen van de ctl value zonder meer hangt IE op omdat dit al een onchange event is
	// maar alleen aanpassen indien nodig, gaat wel goed
	val = DenormalizeMoney(val);
	
	if (ctl.value != val)
		ctl.value = val;
	return nr;
}

function alert3(a, b, c)
{
    AlertOnce("alert3: " +  a.toString() + "\n" + b.toString() + "\n" + c.toString());
}

function AddEvent(ctl, eventName, eventFunction)
{
    try
    {
    SPOnError_cachedOriginalOnError = alert3;
    if (ctl.addEventListener) 
    {
        eval("ctl." + eventName + "=" + eventFunction.toString());
    }
	else if (ctl.attachEvent)
        ctl.attachEvent(eventName, eventFunction);
    else
        AlertOnce('AddEvent: error');
    }
    catch (e)
    {
        AlertOnce("AddEvent: " + e.message);
    }
}
function setPascalCaseTextBox(controlid)
{
	try
	{
	var a = getControl("INPUT", controlid);
	if (a != null)
	{
		var fname = 'pascalCase' + controlid;
		//eval('function ' + fname + '(){if (this.value.length > 0) this.value = this.value.substring(0, 1).toUpperCase() + this.value.substring(1);}');
		//AddEvent(a, 'onchange', eval(fname));
		AddEvent(a, 'onchange', 
		function anon(e)
		{
		    try
		    {
    		    var ee = e.target ? e.target : event.srcElement;
    		    if (ee.value.length > 0) 
    		        ee.value = ee.value.substring(0, 1).toUpperCase() + ee.value.substring(1);
		    }
		    catch (error)
		    {
		        AlertOnce("PascalTextbox: " + error.message);
    		}
        });
		//a.onchange = eval(fname);
	}
	} catch (e) {AlertOnce('setPascalCaseTextBox: ' + e.message);}
}

function getFieldValueFrom(sourceControlId, destControlId)
{
	try
	{
	var src = getControl("INPUT", sourceControlId);
	if (src != null)
	{
        src.destControl = destControlId;
		AddEvent(src, 'onchange', 
		function(e)
		{
		    try
		    {
    		    var ee = e.target ? e.target : event.srcElement;
    		    var newVal = ee.value.length > 0 ? ee.value.substring(0, 1).toUpperCase() + ee.value.substring(1) : "<onbekend>";
      		    getControl("INPUT", ee.destControl).value = newVal;
                ee.value = newVal;
		    }
		    catch (error)
		    {
		        AlertOnce("getFieldValueFrom: " + error.message);
    		}
        });

//	    var fname = 'getFieldValueFrom' + sourceControlId;
//		var body = 'function ' + fname + '()';
//		body += '{';
//		body += 'if (this.value.length > 0) ';
//		body += 'this.value = this.value.substring(0, 1).toUpperCase() + this.value.substring(1);';
//		body += 'getControl("INPUT", "' + destControlId + '").value = this.value.length > 0 ? this.value.substring(0, 1).toUpperCase() + this.value.substring(1) : this.value;';
//		body += '}';
//		eval(body);
//    	AddEvent(src, 'onchange', eval(fname));
		//src.onchange = eval(fname);
		var dest = getControl("INPUT", destControlId);
		dest.value = '<onbekend>';
		dest.style.display = 'none';
	}
	} catch (e) {AlertOnce('getFieldValueFrom: ' + e.message);}
}

function setAllUpperCaseTextBox(controlid)
{
	try
	{
	var a = getControl("INPUT", controlid);
	if (a != null)
	{
		var fname = 'upperCase' + controlid;
		eval('function ' + fname + '(){var ctl = getControl("INPUT", "' + controlid + '");if (ctl.value.length > 0) ctl.value = ctl.value.toUpperCase();}');
    	AddEvent(a, 'onchange', eval(fname));
		//a.onchange = eval(fname);
	}
	} catch (e) {AddDebug('setAllUpperCaseTextBox: ' + e.message);}
}

function setMoneyTextbox(controlid)
{
	try
	{
	var ctl = getControl("INPUT", controlid);
	if (ctl == null)
		AlertOnce("Fout bij laden");
	else
	{
		var fname = 'moneyValidation' + controlid;
		eval('function ' + fname + '(){GetMoneyFromTextbox(getControl("INPUT", "' + controlid + '"));}');
    	AddEvent(ctl, 'onchange', eval(fname));

        // geen punten of komma's toestaan		
		//eval('function ' + fname + 'kd(){return validNumber(this, event.keyCode);}');
		//AddEvent(ctl, 'onkeydown', eval(fname + 'kd'));
		AddEvent(ctl, 'onkeydown', function chkkd(src){return validNumber(window.event ? event.srcElement : e.target, window.event ? event.keyCode : e.which);});
	}
	} catch (e) {AlertOnce('setMoneyTextbox: ' + e.message);}
}

function setNumberTextBox(controlid)
{
	try
	{
	var ctl = getControl("INPUT", controlid);
	if (ctl == null)
		AlertOnce("Fout bij laden");
	else
	{
		var fname = 'numberValidation' + controlid;
		eval('function ' + fname + '(){GetNumberFromTextbox(getControl("INPUT", "' + controlid + '"));return true;}');
    	AddEvent(ctl, 'onchange', eval(fname));
		//ctl.onchange = eval(fname);
	}
	} catch (e) {AlertOnce('setNumberTextBox: ' + e.message);}
}

function ApplyPI()
{
	var l = GetNumberFromTextbox(getControl("INPUT", "AfmetingenL"));
	var b = GetNumberFromTextbox(getControl("INPUT", "AfmetingenB"));
	var d = GetNumberFromTextbox(getControl("INPUT", "AfmetingenD"));
	try
	{
    	var warningElement = document.getElementById("trAfmetingenWaarschuwing");
    	if (warningElement != null)
        	warningElement.style.display = b > 100 ?'':'none';
    	
        var sel = getControl("SELECT", "SoortSchip");
        var piSel = getControl("SELECT", "PIVerzekering");
      	var current = sel.options[sel.selectedIndex].text;
   		var att = getParent(getParent(sel)).attributes["showonselect"];
    	var ctrl = document.getElementById('trpi');
    	if (att != null)
    	{
    		var showOnSelectValues = att.value.split(';');
    		var containedInArray = GetContainedInArray(sel.options, current);
    		for (var i = 0; i < showOnSelectValues.length; i++)
    		{
    		    var pair = showOnSelectValues[i].split('#');
    		    if (trim(pair[0]) == 'pi' && pair.length > 3 && OptionContainedIndex(current, pair[3], containedInArray) >= 0)
    		    {
    		        var disp = (l > 110 || b > 11.45) ? '' : 'none';
                	//ctrl.style.display = disp;
                    setDisplayRecursive(ctrl, disp);
                    if (piSel != null) {
                        //AlertOnce("ApplyPi: disp=" + disp + " piSel=" + piSel + l + "x" + b + "x" + d + "");
                        piSel.selectedIndex = (l > 110 || b > 11.45) ? 0 : 1;
                    }
                	
                	//AlertOnce("ApplyPI(" + current + ") display=>" + ctrl.style.display);
                	//AlertOnce("ApplyPI(" + current + ") display=>" + ctrl.style.display + " l=" + l + " b=" + b + " d=" + d);
                }
    		}
    	}
    }
	catch (error)
	{
	    AlertOnce("ApplyPI: " + error.message);
	}
	return l > 110 || b > 11.45;
}

function IsOptionInListSelected(ctlId, list)
{
    return list.indexOf(getFieldValue(ctlId)) >= 0;
}

function assignPI()
{
	var a = getControl("INPUT", "AfmetingenL");
	var b = getControl("INPUT", "AfmetingenB");
	var c = getControl("INPUT", "AfmetingenD");
	
	if (a != null && b != null && c != null)
	{
    	AddEvent(a, 'onchange', function chka() {ApplyPI();return true;});
    	AddEvent(b, 'onchange', function chkb() {ApplyPI();return true;});
    	AddEvent(c, 'onchange', function chkc() {ApplyPI();return true;});
		ApplyPI();
	}
}

function getValueFromUrl(name)
{
	var search = document.location.search.substring(1);
	var parmlist = search.split('&');
	for (var i = 0; i < parmlist.length; i++)
	{
		var kvp = parmlist[i].split('=');
		if (name == kvp[0])
			return unescape(kvp[1]);
	}
	return '';
}

function selectValueInList(list, val)
{
	var options = list.options;
	for (var i = 0; i < options.length; i++)
		if (options[i].text == val)
			list.selectedIndex = i;
}

function onkennisbankload()
{
	try 
	{
		//ClearDebug();
		var scopeList = document.getElementById("SearchBoxEx1_SBScopesDDL");
		var options = scopeList.options;
		RemoveOption(scopeList, 0);
		//options.remove(0);
		var val = getValueFromUrl('s');
		//AddDebug("onkennisbankload: val(s) = " + val);
		if (val != '')
			selectValueInList(scopeList, val);
	}
	catch (e) 
	{
		AlertOnce("onkennisbankload: " + e.message);
	}
}

function hideCtrl(ctrl, display)
{
    AddDebug("hideCtrl " + ctrl.id);
	if (ctrl.style != null)
	{
		if (ctrl.orgDisp == null)
			ctrl.orgDisp = levelUp.style.display;
		if (ctrl != null)
		{
			ctrl.style.visibility = display == 'block' ? ctrl.orgDisp : 'hidden';
			ctrl.style.position = display == 'block' ? 'relative' : 'absolute';
		}
	}
}

function trim(str)
{
	return str.replace(/ /g, '').replace(/	/g, '').replace(/\n/g, '').replace(/\r/g, '');
}

function GetContainedInArray(options, current)
{
   	var containedInArray = new Array();
   	for (var i = 0; i < options.length; i++)
   	{
   	    var chk = options[i].text;
   	    if (chk.indexOf(current) >= 0 && chk.length > current.length)
   	        containedInArray[containedInArray.length] = chk;
   	}
   	return containedInArray;
}

function OptionContainedIndex(option, chkText, containedInArray)
{
    //pair[1].indexOf(current) >= 0;
    for (var i = 0; i < containedInArray.length; i++)
        chkText = chkText.replace(trim(containedInArray[i]), '');
    return chkText.indexOf(option);
}

function setDisplayRecursive(ctl, disp)
{
    ctl.style.display = disp;
    for (var i = 0; i < ctl.children.length; i++)
        setDisplayRecursive(ctl.children[i], disp);
}

function flipControlOnContext(showOnSelect, current, containedInArray)
{
    // pas op, de trim functie haalt ALLE spaties weg, dit kan tot verwarring leiden
	try
	{
    	var pair = trim(showOnSelect).split('#');
    	var controlIds = pair[0].split(',');
    	current = trim(current)
    	for (var i = 0; i < controlIds.length; i++)
    	{
    		var legal = false;
    		var id = trim(controlIds[i]);
    		var ctrl = document.getElementById('tr' + id);
    		if (ctrl != null)
    		{
    			if (pair.length == 2)
    			    legal = OptionContainedIndex(current, pair[1], containedInArray) >= 0;
    			else if (pair.length  > 1 && OptionContainedIndex(current, pair[1], containedInArray) >= 0)
    				legal = eval(pair[2]);
    			else if (pair.length > 3 && OptionContainedIndex(current, pair[3], containedInArray) >= 0)
    				legal = eval(pair[4]);
    			if (ctrl.style.display || !legal)
    			    setDisplayRecursive(ctrl, legal ? '' : 'none');
    				//ctrl.style.display = legal ? '' : 'none';
    		}
    	}
	}
	catch (e)
	{
	    AlertOnce("flipControlOnContext(" + trim(showOnSelect) + ", " + current + "):" + e.message);
	}
}

function hideNotCurrent(sel)
{
    try
    {
        if (typeof(sel) == 'undefined')
            AlertOnce("hideNotCurrent: " + typeof(sel));
    	var current = sel.options[sel.selectedIndex].text;
    	// check if current optiontext is part of an other optiontext
    	var containedInArray = GetContainedInArray(sel.options, current);
    	var att = getParent(getParent(sel)).attributes["showonselect"];
	
    	if (att != null)
    	{
    		var showOnSelectValues = att.value.split(';');
    		for (var i = 0; i < showOnSelectValues.length; i++)
    			flipControlOnContext(showOnSelectValues[i], current, containedInArray);
    	}
   	}
   	catch (e)
	{
	    AlertOnce("hideNotCurrent: " + e.message);
	}
}

function showOnSelect(fieldName)
{
    try
    {
    	var select = getControl("SELECT", fieldName);
    	AddEvent(select, 'onchange', function selChange(e){hideNotCurrent(e.target ? e.target : event.srcElement);});
    	hideNotCurrent(select);
	}
	catch (e)
	{
    	AlertOnce("showOnSelect: " + e.message);
	}
}

function ReplaceTitle(tagName, fldName, oldTitle, newTitle)
{
	var labels = document.getElementsByTagName(tagName);
	for (var i = 0; i < labels.length; i++)
		if (GetInnerText(labels[i]) == oldTitle && labels[i].htmlFor.indexOf(fldName) >= 0)
			SetInnerText(labels[i], newTitle);
}

// toevoegen aan url van lijst: &sel=Motortankschip
function SelectSoortSchip(search, fldName, paramName)
{
	var vals = search.split('&');
	var ctrl = getControl("SELECT", fldName);
	//AddDebug("SelectSoortSchip");
	for (var i = 0; i < vals.length; i++)
	{
		var pair = vals[i].split('=');
		if (pair[0] == paramName)
			for (var j = 0; j < ctrl.options.length; j++)
				if (ctrl.options[j].text == unescape(pair[1]))
					ctrl.options[j].selected = true;
	}
	
}

function FillFieldFromUrl(search, fldName)
{
	var vals = search.split('&');
	var ctrl = getControl("INPUT", fldName);
	if (ctrl == null)
	    AlertOnce(fldName + " niet gevonden!");
	else
	for (var i = 0; i < vals.length; i++)
	{
		var pair = vals[i].split('=');
		//alert (fldName + "::" + pair[0].toLowerCase() + " == " + fldName.toLowerCase());
		if (pair[0].toLowerCase() == fldName.toLowerCase())
		{
		    ctrl.value = unescape(pair[1]);
		    // needed for the synctitle behaviour
		    ctrl.fireEvent("onchange");
		}
	}
	
}

function getToday()
{
    var today = new Date();
    return new Date(today.getFullYear(), today.getMonth(), today.getDate(), 23, 59, 59);
}

function fieldToDate(dutchDate)
{
    var parts = dutchDate.split('-');
    if (parts.length == 3)
        return new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0]) - 1);
    return new Date(Date.parse(dutchDate));
}

function onlistload(naam)
{
	//ClearDebug();
	checkInputError();
	hidePrevNextButtons();
    switch (naam)
	{
		case 'Adreswijziging':
			break;
		case 'Contactformulier':
			hideSaveButton("none");
			break;
		case 'ContactOpnemen':
			showOnSelect("IsKlantEfm");
			break;
		case 'DigiInfo':
	        break;
		case 'DigiInfoBevestiging':
			FillFieldFromUrl(document.location.search, "BevestigingsSleutel");
			FillFieldFromUrl(document.location.search, "infoid");
			FillFieldFromUrl(document.location.search, "email");
	        break;
		case 'DigiInfoAfmelden':
	        break;
		case 'GratisEfmVlag':
			getFieldValueFrom("Klantnaam", "Titel");
			break;
		case 'Offerte Beroepsvaart':
			SelectSoortSchip(document.location.search, "SoortSchip", "sel");
			ReplaceTitle('LABEL', 'WebSiteSchip', 'Geef een eigen waarde op:', 'Ja, adres website is:');
			showOnSelect("SoortSchip");		
			showOnSelect("IsPostAdresAfwijkend");
			hideSaveButton("none");
			assignEigenRisicoBeroeps();
            assignPI();
			break;
		case 'OfferteChartervaart':
			ReplaceTitle('LABEL', 'WebSiteSchip', 'Geef een eigen waarde op:', 'Ja, adres website is:');
			hideSaveButton("none");
			showOnSelect("IsPostAdresAfwijkend");
			break;
		case 'OffertePleziervaart':
			ReplaceTitle('LABEL', 'Gebruik', 'Geef een eigen waarde op:', 'Anders:');
			SelectSoortSchip(document.location.search, "ScheepsSoort", "sel");
			showOnSelect("ScheepsSoort");		
			showOnSelect("IsPostAdresAfwijkend");
			hideSaveButton("none");
			assignEigenRisico();
			break;
		case 'OnlineAfspraak':
			ReplaceTitle('LABEL', 'SoortAfspraak', 'Geef een eigen waarde op:', 'Anders:');
			break;
		case 'VarendeWoonschepen':
			ReplaceTitle('LABEL', 'WebSiteSchip', 'Geef een eigen waarde op:', 'Ja, adres website is:');
			hideSaveButton("none");
			showOnSelect("IsPostAdresAfwijkend");
			assignEigenRisico();
			break;
		case 'VoormaligeBeroepsschepen':
			ReplaceTitle('LABEL', 'WebSiteSchip', 'Geef een eigen waarde op:', 'Ja, adres website is:');
			hideSaveButton("none");
			showOnSelect("IsPostAdresAfwijkend");
			assignEigenRisico();
			break;
		case 'WoonschepenWoonarken':
			ReplaceTitle('LABEL', 'WebSiteSchip', 'Geef een eigen waarde op:', 'Ja, adres website is:');
			hideSaveButton("none");
			showOnSelect("IsPostAdresAfwijkend");
			assignEigenRisico();
			break;
		case 'SchadeMelden':
			hideSaveButton("none");
			break;
		case 'SchadeMeldenUitgebreid':
			ReplaceTitle('LABEL', 'Windsnelheid', 'Geef een eigen waarde op:', 'Windsnelheid (m/sec)');
			hideSaveButton("none");
			showOnSelect("HeeftTegenPartij2");
			showOnSelect("HeeftGetuige2");
			showOnSelect("HeeftGetuige3");
			showOnSelect("HeeftGetuige4");
			showOnSelect("Geladen");
			showOnSelect("GesleeptGeduwd");
			showOnSelect("MotorKeerkoppelingSchade");
			showOnSelect("SchroefSchade");
			break;
	}
}

function getFieldValue(fieldName)
{
	var fieldValue = getFieldValueSub('SELECT', fieldName);
	if (fieldValue == null)
		fieldValue = getFieldValueSub('INPUT', fieldName);
	if (fieldValue == null)
		fieldValue = getFieldValueSub('TEXTAREA', fieldName);
	return fieldValue;
}

function getButtons(id)
{
	var btnArray = new Array();
	var btn = document.getElementById(id);
	if (btn != null)
		btnArray[btnArray.length] = btn;
	btn = document.getElementById(id + '1');
	if (btn != null)
		btnArray[btnArray.length] = btn;
	btn = document.getElementById(id + '2');
	if (btn != null)
		btnArray[btnArray.length] = btn;
	return btnArray;
}

function setDisabled(btnArray, disabled)
{
	for (var i = 0; i < btnArray.length; i++)
		btnArray[i].disabled = disabled;
}

function setDisplay(btnArray, disp)
{
	try
	{
		for (var i = 0; i < btnArray.length; i++)
		{
			if (btnArray[i] != null && btnArray[i].style != null)
				btnArray[i].style.display = disp;
		}
	}
	catch (e)
	{
		AlertOnce('setDisplay: ' + e.message);
	}
}

function setCurrentNr(btnArray, currentNr)
{
	for (var i = 0; i < btnArray.length; i++)
		btnArray[i].currentNr = currentNr;
}

function hidePrevNextButtons()
{
    if (document.getElementById('tab1') == null)
    {
      	var btnNextArray = getButtons('btnNext');
        var btnPrevArray = getButtons('btnPrev');
        setDisplay(btnNextArray, 'none');
        setDisplay(btnPrevArray, 'none');
	}
}

function hideSaveButton(disp)
{
	try
	{
	var btnSaveArray = new Array();
	btnSaveArray[0] = getControlByValue('INPUT', 'Verstuur');

	setDisplay(btnSaveArray, disp);
	}
	catch (e)
	{
	AlertOnce('hideSaveButton' + e.message);
	}
}

function getParent(elm)
{
    if (elm.parentElement)
        return elm.parentElement;
    else if (elm.parentNode)
        return elm.parentNode;
    else
        return null;
}

function hideFieldGroups(currentNr)
{
    try
    {
	var tabPages = document.getElementById('tabPages');
	if (currentNr == null)
		currentNr = 1;

	if (tabPages != null)
	{
		var totalTabs = tabPages.rows[0].cells.length;
		var btnNextArray = getButtons('btnNext');
		var btnPrevArray = getButtons('btnPrev');

		setDisabled(btnNextArray, currentNr == totalTabs - 1);
		setDisabled(btnPrevArray, currentNr == 0);
		hideSaveButton(currentNr == totalTabs - 1 ? '' : 'none');
	
		var tab = document.getElementById('tab' + currentNr);
		if (tab != null)
    		getParent(tab).style.display = '';
        else
            AlertOnce('tab :' + currentNr + ': not found!');
		
		setCurrentNr(btnNextArray, (currentNr * 1) + 1);
		setCurrentNr(btnPrevArray, (currentNr * 1) - 1);
	
		for (var i = 0; i < totalTabs; i++)
		{
			var tbl = document.getElementById('tbl' + i);
			var tab = document.getElementById('tab' + i);
			
			tbl.style.display = currentNr != i ? 'none' : '';
			tab.className = currentNr != i ? 'tab' : 'activetab';
				
			getParent(tab).className = currentNr == i ? 'tabCellActive' : 'tabCell';
		}
	}
	}
	catch (e)
	{
	    AlertOnce(e.message);
	}
}

function getParentRowValidation(validator)
{
    try
    {
    	var parentElm = getParent(validator);
    	while (parentElm != null && parentElm.tagName != 'TD')
    		parentElm = getParent(parentElm);
    	if (parentElm == null || parentElm.attributes["trid"] == null)
    	    AlertOnce(parentElm.tagName + ":::validator not found!");
    	return parentElm;
	}
	catch (e)
	{
	    AddDebug("getParentRowValidation: " + e.message);
	}
}

function ValidatorAndActive(span)
{
	var isActive = 
		span.id != '' &&
		span.className == 'ms-formvalidation' && 
		GetInnerText(span) != ' *' && 
		span.style.visibility != 'hidden';
	var parentRow = null;
	var dataRow, validationRow;
	var msg = '';
	if (isActive)
	{
		parentRow = getParentRowValidation(span);
		if (parentRow != null)
		{
		    dataRow = document.getElementById(parentRow.attributes["trid"].value);
   			isActive = dataRow.style.display!='none' && document.getElementById(span.controltovalidate).value == '';
            msg = " parentRow: " + dataRow.id + " val=" + document.getElementById(span.controltovalidate).value + "#";
		}
	}
	// verplichte velden die als verplicht gemodelleerd zijn in de lijst, ijlen 1 klick na, vandaar deze
	// check om het naijlen te voorkomen
	if (GetInnerText(span) != "" && span.className == 'ms-formvalidation' && span.controltovalidate == null && getParent(span).children[0].value == '')
	{
		isActive = true;
	}
	
	if (isActive)
	{
	    if (parentRow != null)
	    {
	        validationRow = getParent(parentRow);
    	    AddDebug("validationRow");
    	    AddDebug(validationRow.outerHTML);
    	    validationRow.className = 'stdRow';
    	}
	    AddDebug("ValidatorAndActive return " + isActive + msg);
	    //if (parentRow != null)
    	//    AddDebug(parentRow.outerHTML);
	}
	return isActive;
}

function getTabNr(span)
{
	var table = span;
	while (table != null && (table.tagName != 'TABLE' || table.id == ''))
		table = getParent(table);
	return table != null ? table.id.substring(3) : -1;
}

function checkInputError(custom)
{
    try
    {
	if (typeof(custom) == "undefined")
		custom = false;
	var tabPages = document.getElementById('tabPages');
	if (tabPages != null)
	{
		var totalTabs = tabPages.rows[0].cells.length;
		var spans = document.getElementsByTagName('SPAN');
		var found = false;
		
		for (var i = 0; i < spans.length; i++)
		{
			if (spans[i].style.visibility == 'hidden' && 
			    custom && 
			    document.getElementById(spans[i].controltovalidate).value == '')
			{
			    // zit ik in een niet actieve tab of ben ik gewoon niet van toepassing?
				spans[i].style.visibility = 'visible';
				//if (!ValidatorAndActive(spans[i]))
				//    document.getElementById(spans[i].controltovalidate).value = 'ok';
			}
			if (ValidatorAndActive(spans[i]))
			{
				if (GetInnerText(spans[i]).indexOf('U moet een waarde opgeven voor dit vereiste veld.') != -1)
					SetInnerText(spans[i], 'Sorry, deze gegevens zijn noodzakelijk voor de aanvraag');
				if (!found)
				{
					for (var j = 0; j < totalTabs; j++)
						getParent(document.getElementById('tab' + j)).style.display = '';
					
					var tabNr = getTabNr(spans[i]);
					if (tabNr != -1)
						hideFieldGroups(tabNr);
				}
				found = true;
			}
		}
	}
	}
	catch (error)
	{
	    AlertOnce("checkInputError: " + error.message);
	}
}

function hideMenu(menuid)
{
	document.getElementById(menuid).style.display = 'none';
}

function showMenu(menuid)
{
	var menu = document.getElementById(menuid);
	menu.style.left = event.x - 30;
	menu.style.top = event.y - 32;
	menu.style.display = '';
	if (document.body.clientWidth > menu.clientWidth + event.x - 30)
		menu.style.left = event.x - 30;
	else
		menu.style.left = 0;
}

function toggleMenu(menuid)
{
	var menu = document.getElementById(menuid);
	if (menu.style.display == '') 
		hideMenu(menuid);
	else 
		showMenu(menuid);
}


//------------------------------------------------------------------
// This javascript sets the default value of a lookup field identified 
// by <<FIELD DISPLAY NAME>> to the value stored in the querysting variable
// identified by <<QUERYSTRING VARIABLE NAME>>
// Customize this javascript by replacing <<FIELD DISPLAY NAME>> and 
// <<QUERYSTRING VARIABLE NAME>> with appropriate values.
// Then just paste it into NewForm.aspx inside PlaceHolderMain
//_spBodyOnLoadFunctionNames.push("fillDefaultValues");

function fillDefaultValues() {
  var qs = location.search.substring(1, location.search.length);
  var args = qs.split("&");
  var vals = new Object();
  for (var i=0; i < args.length; i++) {
    var nameVal = args[i].split("=");
    var temp = unescape(nameVal[1]).split('+');
    nameVal[1] = temp.join(' ');
    vals[nameVal[0]] = nameVal[1];
  }  
  setLookupFromFieldName("Scheepsnaam", vals["sn"]);
}

function setLookupFromFieldName(fieldName, value) {
  if (value == undefined) return;
  var theSelect = getTagFromIdentifierAndTitle("select","Lookup",fieldName);
// if theSelect is null, it means that the target list has more than
// 20 items, and the Lookup is being rendered with an input element
  if (theSelect == null) { 
    var theInput = getTagFromIdentifierAndTitle("input","",fieldName);
    ShowDropdown(theInput.id); //this function is provided by SharePoint 
    var opt=document.getElementById(theInput.opt);
    setSelectedOption(opt, value);
    OptLoseFocus(opt); //this function is provided by SharePoint 
  } else {
    setSelectedOption(theSelect, value);
  }
}

function setSelectedOption(select, value) {
  var opts = select.options;
  var l = opts.length;
  if (select == null) return;
  for (var i=0; i < l; i++) {
    if (opts[i].value == value) {
      select.selectedIndex = i;
      return true;
    }
  }
  return false;
}

function getTagFromIdentifierAndTitle(tagName, identifier, title) {
  var len = identifier.length;
  var tags = document.getElementsByTagName(tagName);
  for (var i=0; i < tags.length; i++) {
    var tempString = tags[i].id;
    if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {
      return tags[i];
    }
  }
  return null;
}
//------------------------------------------------------------------

function ProcessDefaultOnLoad(onLoadFunctionNames)
{
//** Uncomment this to see when this runs
//AlertOnce('Fixing the Issue');

ProcessPNGImages();
UpdateAccessibilityUI();

//** We comment out the offending ootb function
//** and leave the rest of the functions as they were
//ProcessImn();
for (var i=0; i < onLoadFunctionNames.length; i++)
{
var expr="if(typeof("+onLoadFunctionNames[i]+")=='function'){"+onLoadFunctionNames[i]+"();}";
eval(expr);
}
if (typeof(_spUseDefaultFocus)!="undefined")
DefaultFocus();
}

var wsStatus = "";
var wsStatus2 = "";
function ProcessResult(xData, status) {
    wsStatus = xData.statusText;
    wsStatus2 = status;
    //alert(xData.statusText);
    //$("#raw").append(xData.statusText);
}

function ProcessError(xData, status, error) {
    wsStatus = xData.statusText;
    wsStatus2 = status;
    //alert(xData.statusText);
    //$("#raw").append(xData.statusText);
}

function LogOfferte()
{
    var inputText = "";
    var userAgent = (navigator && navigator.userAgent) ? navigator.userAgent : "onbekend";
    var inputs = document.getElementsByTagName("INPUT");
    for (var i = 0;i < inputs.length; i++)
    {
        if (inputs[i].title != '' && inputs[i].value != '')
            inputText += (inputText==""?"":"\n") + inputs[i].title + "=" + inputs[i].value;
        if (inputs[i].type == "radio" && inputs[i].checked)
        {
            var name = inputs[i].name;
            var nameparts = name.split('$');
            if (nameparts.length > 1)
                name = nameparts[1].split('_')[0];
            inputText += (inputText==""?"":"\n") + name + "=" + getParent(inputs[i]).title;
        }
    }  
    inputs = document.getElementsByTagName("SELECT");
    for (var i = 0;i < inputs.length; i++)
        if (inputs[i].title != '')
            inputText += (inputText==""?"":"\n") + inputs[i].title + "=" + inputs[i].options[inputs[i].selectedIndex].innerText;
    var titleCtl = getControl("INPUT", "Titel");
    var listTitle = titleCtl != null ? titleCtl.value : "";
    return AddListItem('OfferteLogboek', { Title: listTitle, LijstNaam : document.title, OfferteInhoud : inputText, UserAgent : userAgent });
}

function AddListItem(listName, fields)
{
	var params = [listName, BatchAddListItem(listName, fields)];
	var packet = 
	"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
	    <soapenv:Body> \
	        <UpdateListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
	            <listName>{0}</listName> \
	            <updates>{1}</updates> \
	        </UpdateListItems> \
	    </soapenv:Body> \
	 </soapenv:Envelope>";

    for (var i=0; i < params.length; i++)
        packet = packet.replace('{' + i.toString() + '}', (params[i] == null ? '' : params[i]));
        
	return packet;
}

function BatchAddListItem(listName, fields) {
    var batch;
    var itemArray;

    batch = "";

    if (fields.constructor != Array) {
        itemArray = [fields];
    }
    else {
        itemArray = fields;
    }

    for (var i = 0; i < itemArray.length; i++) {
        batch += "<Method ID='1' Cmd='New'>";

        for (att in itemArray[i]) {
            batch += "<Field Name='" + att + "'><![CDATA[" + itemArray[i][att] + "]]></Field>";
        }

        batch += "</Method>";
    }

    return "<Batch OnError='Continue'>" + batch + "</Batch>";
}
