﻿
var row_hover_background = '#FFF';

var msGarbage = navigator.appName.indexOf("Microsoft Internet Explorer") > -1;

// ----------------- EXTRA FUNCTIES ------------------


function cancelBubble(e) {
    if (!e)
        e = window.event;

    if (e.cancelBubble != null)
        e.cancelBubble = true;

    if (e.stopPropagation != null)
        e.stopPropagation();

    return false;
}


// alleen dit window open houden
// (een eerder gecheckt window: sluiten)
var onlyCurrentWindow_id = null;
function onlyCurrentWindow(p_strId) {
    if (onlyCurrentWindow_id && onlyCurrentWindow_id != p_strId)
        getE(onlyCurrentWindow_id).style.display = 'none';

    onlyCurrentWindow_id = p_strId;
}

// past de hoogte van een element met p_strId aan.
function checkHeight(p_strId, p_intMaxHeight) {
    var el = jQuery('#' + p_strId);
    //alert(el.height());
    if (el.height() > p_intMaxHeight) {
        el.height(p_intMaxHeight);
    }
}


// ---------- Input controle


// gebruik deze functies bij het onkeypress event.
// (bij onkeydown is de window.event.keyCode een unicode ipv een ascii, en dat maakt vergelijken met - en . onmogelijk.

// backspace, ctrl, enter zijn toegestaan
function checkAllowedKeys(e) {
    var key;
    var isCtrl = false;
    var isShift = false;
    var keychar;
    var isAllowed = false;

    if (window.event) {
        key = window.event.keyCode;
        keychar = String.fromCharCode(key); // is idd een ascii waarde, maar alleen bij het onkeypress event. Anders is het een unicode.
        isCtrl = window.event.ctrlKey;
        isShift = window.event.shiftKey;
    }
    else if (e.which) {
        key = e.which;
        keychar = String.fromCharCode(key); // is goed, 'which' geeft ascii value ... (heb ik ergens gelezen)
        isCtrl = e.ctrlKey;
        isShift = e.shiftKey;
    }

    if (isNaN(key)) isAllowed = true;


    // check for backspace or delete, or if Ctrl was pressed
    if (key == 8 || isCtrl) {
        isAllowed = true;
    }

    return { key: key, keychar: keychar, isAllowed: isAllowed, isShift: isShift };
}


// controleer of het getypte char binnen een string van toegestane chars voor komt.
// er wordt onderscheid gemaakt tussen chars waar de shift-toets van belang is (bij 1,!,2,@,3,#....)
// en waar dat niet van belang is (bij a,A,b,B,c,C....)
function checkChars(keychar, anyChars, isShift, nonShiftChars) {
    if (nonShiftChars.indexOf(keychar) != -1) {  // keychar komt voor in nonShiftChars
        return !isShift;
    }
    return (anyChars.indexOf(keychar) != -1);
}


function checkHex(obj, e) {
    var keys;
    var reg;

    keys = checkAllowedKeys(e);
    //if (keys.key != 16) alert('key=' + keys.key + ' char=' + keys.keychar + ' isallowed=' + keys.isAllowed);

    // default, speciale chars toestaan.
    if (keys.isAllowed) return true;

    // lijstje van toegestane chars controleren
    if (!checkChars(keys.keychar, 'abcdef', keys.isShift, '0123456789')) return false;

    // alle controles zijn gelukt.
    return true;
}



function checkInt(obj, e) {
    var keys;
    var reg;

    keys = checkAllowedKeys(e);
    //if (keys.key != 16) alert('key=' + keys.key + ' char=' + keys.keychar + ' isallowed=' + keys.isAllowed);

    // default, speciale chars toestaan.
    if (keys.isAllowed) return true;

    // lijstje van toegestane chars controleren
    if (!checkChars(keys.keychar, '', keys.isShift, '0123456789')) return false;

    // alle controles zijn gelukt.
    return true;
}


function checkIntSigned(obj, e) {
    var keys;
    var reg;

    keys = checkAllowedKeys(e);
    //if (keys.key != 16) alert('key=' + keys.key + ' char=' + keys.keychar + ' isallowed=' + keys.isAllowed);

    // default, speciale chars toestaan.
    if (keys.isAllowed) return true;

    // lijstje van toegestane chars controleren
    if (!checkChars(keys.keychar, '', keys.isShift, '-0123456789')) return false;

    // overige controle
    if (keys.keychar == '-') {
        // alleen het eerste teken mag negatief zijn
        // dus of string='', of anders moet je op de 1e positie zitten...
        return (obj.value.length == 0 || getSelectionStart(obj) == 0);
    }

    // alle controles zijn gelukt.
    return true;
}


function checkDouble(obj, e, intDecimals, blnOnlyPositive) {
    var keys;
    var reg;

    keys = checkAllowedKeys(e);
    //if (keys.key != 16) alert('key=' + keys.key + ' char=' + keys.keychar + ' isallowed=' + keys.isAllowed);

    // default, speciale chars toestaan.
    if (keys.isAllowed) return true;

    // lijstje van toegestane chars controleren
    if (!checkChars(keys.keychar, '', keys.isShift, '.,-0123456789')) return false;

    // overige controle
    if (keys.keychar == '-') {
        if (blnOnlyPositive)
            return false;
        else
        // alleen het eerste teken mag negatief zijn
        // dus of string='', of anders moet je op de 1e positie zitten...
            return (obj.value.length == 0 || getSelectionStart(obj) == 0);
    }

    // er mag hooguit 1 punt (of comma) in het getal voorkomen.
    var count = 0;
    var i;
    if (keys.keychar == '.' || keys.keychar == ',') {
        count = 1;  // je typt er nu eentje in.
        for (i = 0; i < obj.value.length; i++) {
            if (obj.value.charAt(i) == '.' || obj.value.charAt(i) == ',') count += 1;
        }
        if (count > 1) return false;  // er mag maar 1 punt/komma zijn.
    }

    // hoeveel decimalen zijn er.
    var pos_point = -1;
    for (i = 0; i < obj.value.length; i++) {
        if (obj.value.charAt(i) == '.' || obj.value.charAt(i) == ',')
            pos_point = i;
    }
    if (pos_point >= 0) {
        if (getSelectionStart(obj) > pos_point + intDecimals)
            return false;   // je zit te ver na de punt.
    }

    // alle controles zijn gelukt.
    return true;
}


// gekopieerd van http://javascript.nwbox.com/cursor_position/cursor.js
function getSelectionStart(o) {
    if (o.createTextRange) {
        var r = document.selection.createRange().duplicate()
        r.moveEnd('character', o.value.length)
        if (r.text == '') return o.value.length
        return o.value.lastIndexOf(r.text)
    } else return o.selectionStart
}

function getSelectionEnd(o) {
    if (o.createTextRange) {
        var r = document.selection.createRange().duplicate()
        r.moveStart('character', -o.value.length)
        return r.text.length
    } else return o.selectionEnd
}





// -----------

function getE(strId) {
    var element = document.getElementById(strId);
    if (!element) {
        var elements = document.getElementsByName(strId);
        if (elements.length > 0) {
            element = elements[0];
        }
    }
    return element;
}

// controleer of dit een getal is, met een beperkt aantal decimalen.
function js_check_number(p_strId, p_numdecimals) {
    var element = document.getElementById(p_strId);
    if (element != null) {
        var value = element.value;
        var i;
        if (value != null) {
            var strResult = '';
            var blnHasDot = false;

            for (i = 0; i < value.length; i++) {
                var c = value.charAt(i);
                if (c < '0' || c > '9') {
                    if (blnHasDot == true) {
                        // er mag maar 1 niet-cijfer zijn, dat is de punt.
                        break;
                    }

                    c = '.';
                    blnHasDot = true;
                }
                if (blnHasDot == true) {
                    p_numdecimals -= 1;
                    if (p_numdecimals < -1) {
                        // het aantal decimalen is bereikt.
                        break;
                    }
                }
                strResult += c;
            }

            if (strResult != '' && strResult != value) {
                element.value = strResult; // het aangepaste getal.
            }
        }
    }
}



// dateRef < of > dateAdjust
// dateRef is de referentiedatum
// dateAdjust is de datum die aangepast wordt, als er niet aan de strCompare is voldaan.
// als de Year in Asc(ending)=oplopende volgorde wordt getoond, dan is p_blnYasc==true
function js_sync_date_time(p_strDateRef, p_strTimeRef, p_strDateAdjust, p_strTimeAdjust, p_strCompare, p_blnYasc) {
    var dateRefY = document.getElementById(p_strDateRef + '_y');
    var dateRefM = document.getElementById(p_strDateRef + '_m');
    var dateRefD = document.getElementById(p_strDateRef + '_d');
    var timeRefH = document.getElementById(p_strTimeRef + '_h');
    var timeRefN = document.getElementById(p_strTimeRef + '_n');

    var dateAdjustY = document.getElementById(p_strDateAdjust + '_y');
    var dateAdjustM = document.getElementById(p_strDateAdjust + '_m');
    var dateAdjustD = document.getElementById(p_strDateAdjust + '_d');
    var timeAdjustH = document.getElementById(p_strTimeAdjust + '_h');
    var timeAdjustN = document.getElementById(p_strTimeAdjust + '_n');

    //alert(p_strCompare);
 
    if (p_strCompare == '<')	// eis is dat dateRef < dateAdjust
    {
        if ((p_blnYasc == true && dateRefY.selectedIndex > dateAdjustY.selectedIndex) || (p_blnYasc == false && dateRefY.selectedIndex < dateAdjustY.selectedIndex)) {
            dateAdjustY.selectedIndex = dateRefY.selectedIndex;
            dateAdjustM.selectedIndex = dateRefM.selectedIndex;
            dateAdjustD.selectedIndex = dateRefD.selecte0dIndex;
            timeAdjustH.selectedIndex = timeRefH.selectedIndex;
            timeAdjustN.selectedIndex = timeRefN.selectedIndex;
        }
       if (dateRefY.selectedIndex == dateAdjustY.selectedIndex) {
            if (dateRefM.selectedIndex > dateAdjustM.selectedIndex) {
                dateAdjustM.selectedIndex = dateRefM.selectedIndex;
                dateAdjustD.selectedIndex = dateRefD.selectedIndex;
                timeAdjustH.selectedIndex = timeRefH.selectedIndex;
                timeAdjustN.selectedIndex = timeRefN.selectedIndex;
                //alert('a');
            }
            if (dateRefM.selectedIndex == dateAdjustM.selectedIndex) {
                if (dateRefD.selectedIndex > dateAdjustD.selectedIndex) {
                    dateAdjustD.selectedIndex = dateRefD.selectedIndex;
                    timeAdjustH.selectedIndex = timeRefH.selectedIndex;
                    timeAdjustN.selectedIndex = timeRefN.selectedIndex;
                    //alert('b');
                }
                if (dateRefD.selectedIndex == dateAdjustD.selectedIndex) {
                    if (timeRefH.selectedIndex > timeAdjustH.selectedIndex) {
                        timeAdjustH.selectedIndex = timeRefH.selectedIndex;
                        timeAdjustN.selectedIndex = timeRefN.selectedIndex;
                        //alert('c');
                    }
                    if (timeRefH.selectedIndex == timeAdjustH.selectedIndex) {
                        if (timeRefN.selectedIndex > timeAdjustN.selectedIndex) {
                            timeAdjustN.selectedIndex = timeRefN.selectedIndex;
                            //alert('d');
                        }
                    }
                }
            }
        }

    } else if (p_strCompare == '>')	// eis is dat dateRef > dateAdjust
    {
        if ((p_blnYasc == true && dateRefY.selectedIndex < dateAdjustY.selectedIndex) || (p_blnYasc == false && dateRefY.selectedIndex > dateAdjustY.selectedIndex)) {
            dateAdjustY.selectedIndex = dateRefY.selectedIndex;
            dateAdjustM.selectedIndex = dateRefM.selectedIndex;
            dateAdjustD.selectedIndex = dateRefD.selectedIndex;
            timeAdjustH.selectedIndex = timeRefH.selectedIndex;
            timeAdjustN.selectedIndex = timeRefN.selectedIndex;
        }
        if (dateRefY.selectedIndex == dateAdjustY.selectedIndex) {
            if (dateRefM.selectedIndex < dateAdjustM.selectedIndex) {
                dateAdjustM.selectedIndex = dateRefM.selectedIndex;
                dateAdjustD.selectedIndex = dateRefD.selectedIndex;
                timeAdjustH.selectedIndex = timeRefH.selectedIndex;
                timeAdjustN.selectedIndex = timeRefN.selectedIndex;
            }
            if (dateRefM.selectedIndex == dateAdjustM.selectedIndex) {
                if (dateRefD.selectedIndex < dateAdjustD.selectedIndex) {
                    dateAdjustD.selectedIndex = dateRefD.selectedIndex;
                    timeAdjustH.selectedIndex = timeRefH.selectedIndex;
                    timeAdjustN.selectedIndex = timeRefN.selectedIndex;
                }
                if (dateRefD.selectedIndex == dateAdjustD.selectedIndex) {
                    if (timeRefH.selectedIndex < timeAdjustH.selectedIndex) {
                        timeAdjustH.selectedIndex = timeRefH.selectedIndex;
                        timeAdjustN.selectedIndex = timeRefN.selectedIndex;
                    }
                    if (timeRefH.selectedIndex == timeAdjustH.selectedIndex) {
                        if (timeRefN.selectedIndex < timeAdjustN.selectedIndex) {
                            timeAdjustN.selectedIndex = timeRefN.selectedIndex;
                        }
                    }
                }
            }
        }
    }
}

function js_sync_time(p_strTimeRef, p_strTimeAdjust, p_strCompare) {
    var timeRefH = document.getElementById(p_strTimeRef + '_h');
    var timeRefM = document.getElementById(p_strTimeRef + '_n');

    var timeAdjustH = document.getElementById(p_strTimeAdjust + '_h');
    var timeAdjustM = document.getElementById(p_strTimeAdjust + '_n');

    if (p_strCompare == '<') {
        if (timeRefH.selectedIndex > timeAdjustH.selectedIndex) {
            timeAdjustH.selectedIndex = timeRefH.selectedIndex;
            timeAdjustN.selectedIndex = timeRefN.selectedIndex;
        }
        if (timeRefH.selectedIndex == timeAdjustH.selectedIndex) {
            if (timeRefN.selectedIndex > timeAdjustN.selectedIndex) {
                timeAdjustN.selectedIndex = timeRefN.selectedIndex;
            }
        }

    } else if (p_strCompare == '>') {
        if (timeRefH.selectedIndex < timeAdjustH.selectedIndex) {
            timeAdjustH.selectedIndex = timeRefH.selectedIndex;
            timeAdjustN.selectedIndex = timeRefN.selectedIndex;
        }
        if (timeRefH.selectedIndex == timeAdjustH.selectedIndex) {
            if (timeRefN.selectedIndex < timeAdjustN.selectedIndex) {
                timeAdjustN.selectedIndex = timeRefN.selectedIndex;
            }
        }
    }
}


// dateRef < of > dateAdjust
// dateRef is de referentiedatum
// dateAdjust is de datum die aangepast wordt, als er niet aan de strCompare is voldaan.
// als de Year in Asc(ending)=oplopende volgorde wordt getoond, dan is p_blnYasc==true
function js_sync_dates(p_strDateRef, p_strDateAdjust, p_strCompare, p_blnYasc) {
    var dateRefY = document.getElementById(p_strDateRef + '_y');
    var dateRefM = document.getElementById(p_strDateRef + '_m');
    var dateRefD = document.getElementById(p_strDateRef + '_d');

    var dateAdjustY = document.getElementById(p_strDateAdjust + '_y');
    var dateAdjustM = document.getElementById(p_strDateAdjust + '_m');
    var dateAdjustD = document.getElementById(p_strDateAdjust + '_d');

    if (p_strCompare == '<')	// eis is dat dateRef < dateAdjust
    {
        if ((p_blnYasc == true && dateRefY.selectedIndex > dateAdjustY.selectedIndex) || (p_blnYasc == false && dateRefY.selectedIndex < dateAdjustY.selectedIndex)) {
            dateAdjustY.selectedIndex = dateRefY.selectedIndex;
            dateAdjustM.selectedIndex = dateRefM.selectedIndex;
            dateAdjustD.selectedIndex = dateRefD.selectedIndex;
        }
        if (dateRefY.selectedIndex == dateAdjustY.selectedIndex) {
            if (dateRefM.selectedIndex > dateAdjustM.selectedIndex) {
                dateAdjustM.selectedIndex = dateRefM.selectedIndex;
                dateAdjustD.selectedIndex = dateRefD.selectedIndex;
            }
            if (dateRefM.selectedIndex == dateAdjustM.selectedIndex) {
                if (dateRefD.selectedIndex > dateAdjustD.selectedIndex) {
                    dateAdjustD.selectedIndex = dateRefD.selectedIndex;
                }
            }
        }

    } else if (p_strCompare == '>')	// eis is dat dateRef > dateAdjust
    {
        if ((p_blnYasc == true && dateRefY.selectedIndex < dateAdjustY.selectedIndex) || (p_blnYasc == false && dateRefY.selectedIndex > dateAdjustY.selectedIndex)) {
            dateAdjustY.selectedIndex = dateRefY.selectedIndex;
            dateAdjustM.selectedIndex = dateRefM.selectedIndex;
            dateAdjustD.selectedIndex = dateRefD.selectedIndex;
        }
        if (dateRefY.selectedIndex == dateAdjustY.selectedIndex) {
            if (dateRefM.selectedIndex < dateAdjustM.selectedIndex) {
                dateAdjustM.selectedIndex = dateRefM.selectedIndex;
                dateAdjustD.selectedIndex = dateRefD.selectedIndex;
            }
            if (dateRefM.selectedIndex == dateAdjustM.selectedIndex) {
                if (dateRefD.selectedIndex < dateAdjustD.selectedIndex) {
                    dateAdjustD.selectedIndex = dateRefD.selectedIndex;
                }
            }
        }
    }
}


// loopt oneindig door;
// schrijft de waarde die uit de cardreader wordt opgehaald naar het veld crd_mifarenumber.
var checkreader_trg_id = '';
function doCheckReader() {
    var cr = document.getElementById('CardReader');

    try {
        var bit = cr.doCheck();

        if (bit != '') {
            //alert(bit);
            var element = document.getElementById(checkreader_trg_id);
            if (bit != element.value) {
                element.value = bit; // dit bevat de waarde die de pas doorgeeft.
                if (element.onpaste) {
                    element.onpaste(); // het bijbehorende event triggeren.
                }
            }
        };
    } catch (err) {
    };

};


/* deze gebruik ik niet meer: te ingewikkeld omdat verschillende browsers verschillende functies/eigenschappen van elementen gebruiken.
Ik laat het staan ter referentie, misschien is het ooit nog eens handig.
function js_recurse_area_left(obj)
{
var p = obj;
var x = obj.offsetLeft;
while (p.parentNode != null)
{
p = p.parentNode;
if (p.offsetLeft)	// not 0, not undefined
{
x += p.offsetLeft;
}
}
return x;
}

// dit bekijkt het oppervlak van een element
function js_inside_area(obj, e, p_px_left)
{
if (e == null)
{
e = window.event;
}
	
//alert('clientX = ' + e.clientX + 'layerX = ' + e.layerX + 'pageX = ' + e.pageX + 'screenX = ' + e.screenX + '  objOffsetX=' + js_recurse_area_left(obj));

//dit werkt in explorer:
if (obj.getBoundingClientRect)
{
var oRect = obj.&nbsp;getBoundingClientRect();
var px_rel_mouse = e.clientX - oRect.left;	// relatieve muis-positie binnen het object.
if (px_rel_mouse > p_px_left)
{
return true;
} else {
return false;
}
} else if (obj.getBoxObjectFor) {
var oRect = doc.getBoxObjectFor(viewportElement);
alert('posX = ' + oRect.screenX);
} else {
}
}
*/


// Houd een lijst bij van welke keys zijn ingedrukt/losgelaten, je moet dit toepassen of document-niveau (keydown/keyup events -> value=1/0).
//zoals dit aan het begin van je pagina: strResult.AppendLine("<script type=""text/javascript"">document.onkeyup=js_key_up;document.onkeydown=js_key_down</script>")
var keys = new Array()
function js_key_change(e, p_value) {
    if (e.keyCode > 0 && e.keyCode < 100) {
        if (keys[e.keyCode] != p_value)		// doe niets als de waarde onveranderd blijft.
        {
            keys[e.keyCode] = p_value;

            // extra: activeer het "huidige& element, als dat bestaat.
            // dit moet apart worden bijgehouden
            if (document.current_element) {
                // voer een event-functie uit als terugkoppeling.
                // hetzelfde als wanneer een element aandacht krijgt.
                document.last_inp_hidden = null; 												// reset de referentie naar het laatste aangepaste element (=specifiek voor deze applicatie)
                document.current_element.onmouseover(e);
            }
        }
    }
}

function js_key_down(e) {
    if (!e) var e = window.event		// dit is nodig voor IE ; Firefox geeft het via het argument door.
    js_key_change(e, 1);
    //alert(keys);
}
function js_key_up(e) {
    if (!e) var e = window.event
    js_key_change(e, 0);
}



function js_radio_clear(p_strRadioButtons) {
    var elements = document.getElementsByName(p_strRadioButtons)
    for (var i = 0; i < elements.length; i++) {
        elements[i].checked = false;
    }
}

// rob.
function js_get_radio_value(p_id, p_default_value) {
    var list = document.getElementsByName(p_id);
    var i;
    for (i = 0; i < list.length; i++) {
        if (list[i].checked)
            return list[i].value;
    }
    return p_default_value;
}


// genereert een random getal van 0-9.
function js_random_number(p_intNumChars) {
    var strResult = '';
    for (var i = 0; i < p_intNumChars; i++) {
        strResult += Math.floor(Math.random() * 10.0);
    }
    return strResult;
}


// reset de inhoud van de genoemde velden.
// de waarde wordt ''
//

function js_clear_fields() {
    for (var i = 0; i < arguments.length; i++) {
        var element = js_getElementByIdOrName(arguments[i]);
        //alert(arguments[i] + ' ' + element);
        if (element != null) {
            if (element.selectedIndex != null)
                element.selectedIndex = 0;
            //if (element.value != '' && element.value != 'undefined') {
            else
                element.value = '';
            //}
        }
    }
}


// ondersteuning voor cookies: om een langere query-style cookie te schrijven
// waar waardes uit velden in worden gestopt (via ID benaderen)
// Je kunt een lijst van IDs doorgeven. Het eerste argument moet de cookiename zijn.

function js_getElementByIdOrName(p_strIdOrName) {
    var element = null;
    element = document.getElementById(p_strIdOrName); // zoek op eerste ID
    //alert('Get: op ID');
    if (element == null) {
        var elements = document.getElementsByName(p_strIdOrName);
        //alert('Get: op Name, aantal=' + elements.length);
        if (elements.length > 0) {
            element = elements[0]; // zoek op eerste Name (Firefox doet dit alternatief niet automatisch).
        }
    }
    return element;
}

function js_set_cookie_query_checkboxes(p_strName)	// naam + onbekend aantal argumenten
{
    var strQuery = '';
    for (var i = 1; i < arguments.length; i++) {
        var element = null;
        element = js_getElementByIdOrName(arguments[i]); // zoek op eerste ID
        //alert('Veldkeuze-cookie = ' + arguments[i] + ' element = ' + element);

        if (element != null && element.checked == true && element.value != '') {
            if (strQuery != '') {
                strQuery += '&';
            }
            strQuery += arguments[i] + '=' + element.value;
        }
    }
    if (strQuery != '') {
        var days = 100;
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = '; expires=' + date.toGMTString();

        document.cookie = p_strName + '=' + strQuery + expires;
        //js_setCookie(p_strName, strQuery);
        return true;
    } else {
        return false;
    }
}

// activeer het element via een andere bron (bijv. een TD element)
// aanzetten
function InpYNSet(inp_id) {
    return InpYNChange(inp_id, true)
}

// uitzetten
function InpYNCancel(inp_id) {
    return InpYNChange(inp_id, false)
}

// verandering (aan of uit)
function InpYNChange(inp_id, valueYN) {
    if (valueYN != true && valueYN != false) {
        return false;
    }

    var inp_hidden = document.getElementById(inp_id);

    if (inp_hidden != null) {

        // aanpassen indien nodig:
        if (inp_hidden.checked != valueYN && inp_hidden.style.display != 'none') {
            inp_hidden.checked = valueYN;
            inp_hidden.update();
        }
        return true;
    } else {
        return false;
    }
}


// dit wordt direct uitgevoerd.
document.last_inp_hidden = null

function updateSelected(blnCheck) {
    if (blnCheck) {
        intSelected += 1;
    } else {
        intSelected -= 1;
    };
    getE('num_selected').innerHTML = intSelected;
}

// verandering (aan of uit)
function InpYNToggle(inp_id) {

    var inp_hidden = document.getElementById(inp_id);

    if (inp_hidden != null && inp_hidden != document.last_inp_hidden && inp_hidden.style.display != 'none') {

        inp_hidden.checked = !inp_hidden.checked;

        if (inp_hidden.update) {
            inp_hidden.update();
        }
        document.last_inp_hidden = inp_hidden;

        updateSelected(inp_hidden.checked);

        return true;
    } else {
        return false;
    }
}

// activeer het element via een andere bron (bijv. een TD element)
function InpYNActivate(element, inp_id) {
    InpYNClick_inp(inp_id)
}

// activeer het element door op het gerelateerde image te klikken
function InpYNClick(img) {
    InpYNClick_inp(img.refid)
}

function InpYNClick_inp(inp_id) {
    if (inp_id == '') {
        return false
    }

    var inp_hidden = document.getElementById(inp_id);

    //var img = inp_hidden.img

    if (inp_hidden != null && inp_hidden.style.display != 'none') {
        if (inp_hidden.checked != true) {
            inp_hidden.checked = true;
            //inp_hidden.value = inp_hidden.value_on;
            //img.src = img.src_on;
        } else {
            inp_hidden.checked = false;
            //inp_hidden.value = '';
            //img.src = img.src_off;
        }

        if (inp_hidden.update) {
            inp_hidden.update();
        }

        updateSelected(inp_hidden.checked);
    }

    return true
}

function InpYNUpdate() {
    if (this.checked == true) {
        this.value = this.value_on;
        this.img.src = this.img.src_on;
    } else {
        this.value = '';
        this.img.src = this.img.src_off;
    }
}

function InpYNInit(ImgsName, ImgSrc_off, ImgSrc_on) {
    //alert('init start ' + ImgsName);
    var imgs = document.getElementsByName(ImgsName);

    for (var i = 0; i < imgs.length; i++) {
        var img = imgs[i];
        if (i < 1) {
            //alert('img = ' + img + ' img.refid = ' + img.refid);
        }
        // in FireFox: img.refig=undefined...

        var inp_hidden = document.getElementById(img.refid);
        if (inp_hidden != null) {
            // it's checked if it's been defined.

            inp_hidden.checked = (inp_hidden.initstate == 'True')
            inp_hidden.img = img; // referentie naar het image

            img.src_off = ImgSrc_off;
            img.src_on = ImgSrc_on;
            inp_hidden.update = InpYNUpdate

            inp_hidden.value_on = inp_hidden.value;

            if (inp_hidden.checked != true) {
                img.src = img.src_off;
                inp_hidden.value = '';
            } else {
                img.src = img.src_on;
                inp_hidden.value = inp_hidden.value_on;
            }
        }

    }
}




// overschrijf waarde van een select-box, indien de waarde nonzero is.
// het is voldoende om de "value" aan te passen.
function write_select(p_selectId, p_selectValue) {
    if ((p_selectValue != 0) & (p_selectValue != "")) {
        var element = document.getElementById(p_selectId);
        if (element && element != "undefined") {
            element.value = p_selectValue
        }
    }
}


// controleert of er tenminste een checkbox met een bepaalde naam is geselecteerd.
function checkboxes_named_selected(checkbox_name) {
    var checkbox_list = document.getElementsByName(checkbox_name);
    var count = 0;

    for (var i = 0; i < checkbox_list.length; i++) {
        if (checkbox_list[i].checked) {
            count += 1;
        }
    }

    if (count == 0) {
        //alert('Er zijn lege elementen');
        for (var i = 0; i < checkbox_list.length; i++) {
            checkbox_list[i].style.backgroundColor = '#ff5a27';
        }
        return false;
    }
    else {
        for (var i = 0; i < checkbox_list.length; i++) {
            checkbox_list[i].style.backgroundColor = '';
        }
        return true;
    }
}

// variatie op js_toggle.
// dit keer wordt de waarde standaard uitgezet, voor 1 element.

function js_toggle_off(p_Id) {
    var element;

    element = document.getElementById(p_Id);

    if (element != null) {
        element.style.display = 'none';
    }
}

// variatie op js_toggle.
// dit keer worden de waardes gekopieerd voor het element met een bepaald Id.

function js_toggle_set_byId(p_Id, p_RefId) {
    var elementRef;
    var element;

    element = document.getElementById(p_Id);
    elementRef = document.getElementById(p_RefId);

    if (element != null && elementRef != null) {
        element.style.display = elementRef.style.display;
    }
}

// variatie op js_toggle.
// dit keer worden de waardes bijgewerkt voor alle elementen met een bepaalde naam.

function js_toggle_set_byname(p_name, p_RefId) {
    var elementRef;
    var list;

    elementRef = document.getElementById(p_RefId);
    if (elementRef != null) {
        list = document.getElementsByName(p_name);

        for (var i = 0; i < list.length; i++) {
            list[i].style.display = elementRef.style.display;
        }
    }
}

// variatie op js_toggle.
// dit keer wordt de waarde bijgewerkt in een bijbehorend hidden-input veld.

function js_toggle_stored(p_id) {
    var element;

    element = document.getElementById(p_id);

    if (element != null) {

        if (element.style.display == 'block') {
            element.style.display = 'none';
        }
        else {
            element.style.display = 'block';
        }

        element_form = document.getElementById(p_id + '_Form');

        //alert('Adjusting value: ' + element.id + '.value=' + element.value + '  element_Form_Id = ' + p_id + '_Form');


        if (element_form != null) {
            element_form.value = element.style.display;
            //alert('Adjusting form value: ' + element_form.id + '.value=' + element_form.value);
        }
    }
}


// variatie op js_toggle.
// dit keer wordt de focus op een nieuw veld gelegd.

function js_toggle_refocus(p_id, focus_old, focus_new) {
    var element = document.getElementById(p_id);
    var focus2 = document.getElementById(focus_old);
    var focus1 = document.getElementById(focus_new);

    if (element.style.display == 'block') {
        element.style.display = 'none';
        focus1.focus();
    }
    else {
        element.style.display = 'block';
        focus2.focus();
    }
}



// checkboxes toggle.
// kopieert de waarde van een referentie-checkbox met een bepaalde ID naar alle checkboxes met een bepaalde Name
function toggleCheckboxes(name_copy, name_change) {
    var refcheckbox = document.getElementById(name_copy);
    var checkboxes = document.getElementsByName(name_change);

    if (checkboxes != "undefined") {

        //var checkboxcomment = ''

        if (checkboxes.length != 0) // oud: if (checkboxes.length != 'undefined')
        {
            for (var i = 0; i < checkboxes.length; i++) {
                checkboxes[i].checked = refcheckbox.checked;

                // uitgezet, want dit werkt niet in Chrome.
                /*
                if (typeof checkboxes[i].update == 'function') {
                // indien nodig, updates vanwege die verandering in checked-waarde
                alert('update = ' + checkboxes[i].update)
                //checkboxes[i].update();
                }
                */
                //checkboxcomment += checkboxes[i].checked  + ','
            }
        } else {
            //checkboxes.checked = refcheckbox.checked
        }

        //alert(name_copy + ' ' + name_change + ' ' + checkboxes.length + ' ... ' + checkboxcomment)
    }
}


function countCheckboxes(p_strName, p_blnValue) {
    var checkboxes = document.getElementsByName(p_strName);
    var count = 0;

    if (checkboxes != "undefined") {

        if (checkboxes.length != 0) {
            for (var i = 0; i < checkboxes.length; i++) {
                if (checkboxes[i].checked == p_blnValue) {
                    count += 1;
                }
            }
        }
    }
    return count;
}

// -------------------- EINDE EXTRA FUNCTIES ----------------------


function toggleMenu(p_strID) {
    if (document.frmMenu.Menustate.value.indexOf(p_strID) > 0) {
        document.frmMenu.Menustate.value = document.frmMenu.Menustate.value.replace(p_strID + ',', '');
    }
    else {
        document.frmMenu.Menustate.value = document.frmMenu.Menustate.value + p_strID + ',';
    }
    js_toggle(p_strID);
    js_setCookie('Menu', document.frmMenu.Menustate.value, 10);
}

function js_toggle(p_id) {
    if (document.getElementById(p_id).style.display == 'none') {
        document.getElementById(p_id).style.display = 'block';
    }
    else {
        document.getElementById(p_id).style.display = 'none';
    }
}


function js_toggle_oud(p_id) {
    if (document.getElementById(p_id).style.display == 'none') {
        document.getElementById(p_id).style.display = 'block';
        new Effect.SlideDown(p_id, { duration: 0.5 });
        document.getElementById(p_id).style.display = 'none';
    }
    else {
        document.getElementById(p_id).style.display = 'none';
        new Effect.SlideUp(p_id, { duration: 0.5 });
        document.getElementById(p_id).style.display = 'block';
    }
}

function js_toggleTree(p_strID) {
    var TreeState;

    TreeState = document.frmForm.Treestate.value;

    TreeState = TreeState.replace('undefined', '');
    TreeState = TreeState.replace('null', '');
    TreeState = ',' + TreeState + ',';

    while (TreeState.indexOf(',,') >= 0) {
        TreeState = TreeState.replace(',,', ',');
    };

    if (TreeState.indexOf(',' + p_strID + ',') >= 0) {
        var arrTree;
        var i;
        var NewTree;

        NewTree = ',';

        arrTree = TreeState.substring(1, TreeState.length - 1).split(',');
        for (i = 0; i < arrTree.length; i++) {
            if (arrTree[i].substring(0, p_strID.length) == p_strID) {
                if (arrTree[i] == p_strID) {
                    // exact match, deze wordt later getoggled;
                } else {
                    // alert(arrTree[i])
                    toggleIcon(arrTree[i]);
                    js_toggle(arrTree[i]);
                };
            } else {
                // node met rust laten
                NewTree = NewTree + arrTree[i] + ',';
            };

        };
        TreeState = NewTree;
        //TreeState = TreeState.replace(p_strID + ',','');
    } else {
        TreeState = TreeState + p_strID + ',';
    }

    document.frmForm.Treestate.value = TreeState;

    toggleIcon(p_strID);
    js_toggle(p_strID);
    js_setCookie('Tree', TreeState, 10);
}

function js_confirmDelete(p_strURL, p_text) {
    if (!p_text)
        p_text = 'Wilt u dit onderdeel verwijderen?'
    if (confirm(p_text) == true) {
        location.replace(p_strURL);
    }
}

function js_confirmDeleteIframe(url, confirmText, title, iFrameName, iFrameWidth, iFrameHeight, iFrameLeft, iFrameTop, onClose) {
    if (confirm(confirmText) == true) {
        iFrameBox(url, title, iFrameName, iFrameWidth, iFrameHeight, iFrameLeft, iFrameTop, onClose);
    }
}

function js_confirmUnDelete(p_strURL) {
    if (confirm('Wilt u deze verwijdering ongedaan maken?') == true) {
        location.replace(p_strURL);
    }
}

function js_confirmCopy(p_strURL) {
    if (confirm('Wilt u dit onderdeel copieren?') == true) {
        location.replace(p_strURL);
    }
}

function js_openFullscreenWindow(p_strURL) {
    window.open(p_strURL, "_blank", "fullscreen=yes,resizable=no,scrollbar=no,scrolling=no")
}


function js_setCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}


function js_getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function js_replace(p_value, p_replace_value, p_replace_by) {
    var strValue = p_value;
    strValue = strValue.replace(p_replace_value, p_replace_by);
    return strValue;
}

/*************************************************************************************************
***
***		FUNCTIES t.b.v. picklist
***
*************************************************************************************************/
function copyToList(from, to) {
    fromList = eval('document.frmForm.' + from);
    toList = eval('document.frmForm.' + to);
    if (toList.options.length > 0 && toList.options[0].value == 'temp') {
        toList.options.length = 0;
    }
    var sel = false;
    for (i = 0; i < fromList.options.length; i++) {
        var current = fromList.options[i];
        if (current.selected) {
            sel = true;
            if (current.value == 'temp') {
                alert('Deze optie mag niet verplaatst worden!');
                return;
            }
            txt = current.text;
            val = current.value;
            toList.options[toList.length] = new Option(txt, val);
            fromList.options[i] = null;
            i--;
        }
    }
}

function compareOptionValues(a, b) {
    var sA = parseInt(a.value, 36);
    var sB = parseInt(b.value, 36);
    return sA - sB;
}

function compareOptionText(a, b) {
    var sA = parseInt(a.text, 36);
    var sB = parseInt(b.text, 36);
    return sA - sB;
}

function moveDualList(srcList, destList, moveAll) {
    if ((srcList.selectedIndex == -1) && (moveAll == false)) {
        return;
    }
    newDestList = new Array(destList.options.length);
    var len = 0;
    for (len = 0; len < destList.options.length; len++) {
        if (destList.options[len] != null) {
            newDestList[len] = new Option(destList.options[len].text, destList.options[len].value, destList.options[len].defaultSelected, destList.options[len].selected);
        }
    }
    for (var i = 0; i < srcList.options.length; i++) {
        if (srcList.options[i] != null && (srcList.options[i].selected == true || moveAll)) {
            newDestList[len] = new Option(srcList.options[i].text, srcList.options[i].value, srcList.options[i].defaultSelected, srcList.options[i].selected);
            len++;
        }
    }
    for (var j = 0; j < newDestList.length; j++) {
        if (newDestList[j] != null) {
            destList.options[j] = newDestList[j];
        }
    }
    for (var i = srcList.options.length - 1; i >= 0; i--) {
        if (srcList.options[i] != null && (srcList.options[i].selected == true || moveAll)) {
            //srcList.options[i].value = "";
            //srcList.options[i].text  = "";
            srcList.options[i] = null;
        }
    }
}

/*************************************************************************************************
***
***		OVERIGE FUNCTIES
***
*************************************************************************************************/
function showNote(what, eventDOM) {
    var currentLayer = document.getElementById(what);
    if (msGarbage) {
        xPos = event.clientX + document.body.scrollLeft;
        yPos = event.clientY + document.body.scrollTop;
        Xwindow = document.body.scrollWidth;
        Ywindow = document.body.scrollHeigth;
    }
    else {
        xPos = eventDOM.pageX;
        yPos = eventDOM.pageY;
        Xwindow = 0;
        YWindow = 0;
    }
    //	alert(xPos);
    //	alert(yPos);
    with (currentLayer.style) {
        noteWidth = parseInt(200) + 10;
        noteHeight = parseInt(70) + 10;
        //		alert(noteWidth);
        //		alert(noteHeight);
        if (xPos + noteWidth > Xwindow) {
            xPos = xPos - noteWidth - 10;
        }
        else {
            xPos += 10;
        }
        if (yPos + noteHeight > Ywindow) {
            yPos = yPos - noteHeight - 10;
        }
        else {
            yPos += 10;
        }
        top = yPos;
        left = xPos;
        display = 'block';
    }
}

function hideNote(what) {
    document.getElementById(what).style.display = 'none';
}


function emptySelect(selectBox) {
    //alert(selectBox);
    var selSelect = document.getElementById(selectBox);
    /*Leegmaken select-opties, behalve eerste lege optie */
    //alert(selSelect.length);
    while (selSelect.length > 0) {
        selSelect.options[selSelect.length - 1] = null;
    }
}

function NumCheckKey(field) {
    var strChar;
    strChar = String.fromCharCode(event.keyCode);
    //alert(strChar)
    if ('0123456789'.indexOf(strChar) == -1) {
        if (strChar == String.fromCharCode(13)) {
            strChar = '[Enter]';
        }
        else {
            event.returnValue = false
        }
    }
}

function NumCheckKey2(field) {
    var strChar;
    strChar = String.fromCharCode(event.keyCode);
    //alert(strChar)
    if ('0123456789.,'.indexOf(strChar) == -1) {
        if (strChar == String.fromCharCode(13)) {
            strChar = '[Enter]';
        }
        else {
            event.returnValue = false
        }
    }
}

function NumCheckKeyAllowed(field, allowed) {
    var strChar;
    strChar = String.fromCharCode(event.keyCode);
    //alert(strChar)
    if (allowed.indexOf(strChar) == -1) {
        if (strChar == String.fromCharCode(13)) {
            strChar = '[Enter]';
        }
        else {
            event.returnValue = false
        }
    }
}

function maakrekenbedrag(Bedrag) {
    //alert ('maakrekenbedrag = ' + Bedragfieldname.value);
    ttl = Bedrag;
    //  ttl = document.all[Bedragfieldname].value;
    ttl = ttl.replace(',', '.')
    if (isNaN(ttl)) {
        //  	  alert('geen getal')
        ttl = '0';
    }
    return parseFloat(ttl);
}

function maakmooibedrag(Bedrag) {
    //alert ('maakmooibedrag = ' + Bedrag);
    var ttl = new String(Bedrag);
    ttl = ttl.replace('.', ',')
    var ttlarr = ttl.split(',');
    if (ttlarr.length == 1) {
        ttl = ttl + ',000';
    }
    else {
        if (ttlarr[1].length == 1) { ttl = ttl + '00' }
        if (ttlarr[1].length == 2) { ttl = ttl + '0' }
    }
    return ttl;
}

function maakmooibedrag2(field) {
    //alert ('maakmooibedrag = ' + Bedrag);
    var ttl = new String(field.value);
    ttl = ttl.replace('.', ',');
    var ttlarr = ttl.split(',');
    //	alert(ttlarr.length);
    if (ttlarr.length == 1) {
        ttl = ttl + ',000';
    }
    else {
        if (ttlarr[1].length == 1) { ttl = ttl + '00' }
        if (ttlarr[1].length == 2) { ttl = ttl + '0' }
    }
    field.value = ttl;
}

/*************************************************************************************************
***
***		TEXTAREA FUNCTIES
***
*************************************************************************************************/
var blnError = false;

function TextCheckKey(maxlen, field) {
    var strChar;
    strChar = String.fromCharCode(event.keyCode);
    //alert(strChar)
    //	if('^@$èéùìòÇÅ !"#%&\'()*+,-.ÄÖÑÜäöñüàÉ/?à:;<=>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789[]_'.indexOf(strChar)==-1)
    if ('^@$ !"#%&\'()*+,-./?:;<=>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789[]_'.indexOf(strChar) == -1) {
        if (strChar == String.fromCharCode(13)) {
            strChar = '[Enter]';
        }
        else {
            document.all("PCount" + field).innerText = 'Ongeldig teken: ' + strChar;
            blnError = true;
            event.returnValue = false
        }
    }
    else {
        blnError = false;
        if (CountChars(field) >= maxlen)
            event.returnValue = false;
    }
}

function UpdateCount(maxlen, field) {	//alert(maxlen)
    if (!blnError)
        document.all("PCount" + field).innerText = 'Aantal resterende tekens: ' + (maxlen - CountChars(field));
}

function CountChars(field) {
    return document.all(field).innerText.length;
}

function chkAreaOnPaste(maxlen, field) {
    var sNewString = ''
    var veld = document.getElementById(field)

    event.returnValue = false;
    veld.innerText = window.clipboardData.getData("Text", sNewString);

    if (veld.innerText.length > maxlen) {
        document.all("PCount" + field).innerText = 'Gecopieerde tekst is langer dan ' + maxlen + ' tekens;beperkt tot maximum';
        veld.innerText = veld.innerText.substr(0, maxlen);
        veld.focus();
        blnError = true;
    }
    else {
        blnError = false;
        UpdateCount(maxlen, field)
    }
}

/*************************************************************************************************
***
***		AJAX FUNCTIES
***
*************************************************************************************************/
var http_request = false;
var windowhandle;

function AJAXcallback(targetdiv, targeturl) {
    var target;
    //alert(targetdiv);
    //alert(targeturl);
    target = document.getElementById(targetdiv);
    target.innerHTML = '<table height="100%" width="100%"><tr><td valign="middle" align="center"><img src="/tbt/images/loading.gif"/></td></tr></table>';

    new Ajax.Updater(targetdiv, targeturl);
}

function searchBox(url, title) {
    searchBoxClose();
    var windowhandle = dhtmlwindow.open('searchWindow', 'iframe', url, title, 'width=500px,height=350px,resize=0,scrolling=0,center=0', 'recal');
    windowhandle.moveTo(200, 100);
    //		new Effect.Appear(windowhandle,{duration:0.8});
}

function searchBoxClose() {
    if (windowhandle != null) windowhandle.hide();
}

function iFrameBox(url, title, iFrameName, iFrameWidth, iFrameHeight, iFrameLeft, iFrameTop, onClose) {
    iFrameBoxClose();
    var windowhandle = dhtmlwindow.open(iFrameName, 'iframe', url, title, 'width=' + iFrameWidth + 'px,height=' + iFrameHeight + 'px,resize=0,scrolling=0,center=0', 'recal');
    windowhandle.moveTo(iFrameLeft, iFrameTop);
    //Run custom code when window is about to be closed
    if (onClose == 'ja') {
        windowhandle.onclose = function() {
            parent.window.location.reload();
        }
    }

    //	alert(document.getElementById('_iframe-'+iFrameName).scrollHeight);
    //	document.getElementById('_iframe-'+iFrameName).scrollHeight=14;


    //		new Effect.Appear(windowhandle,{duration:0.8});
}

function iFrameBoxClose() {
    if (windowhandle != null) windowhandle.hide();
}

function findPosX(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        curleft = obj.offsetLeft

        while (obj = obj.offsetParent) {
            curleft += obj.offsetLeft
        }
    }
    return curleft;
}

function findPosY(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        curtop = obj.offsetTop
        while (obj = obj.offsetParent) {
            curtop += obj.offsetTop
        }
    }
    return curtop;
}

/*-------------------------------------------------------------------------------
Naam       : funcGetSelect
Auteur     : Ronald Strous
Datum      : 23 mei 2006
Doel       : Ophalen opties selectbox
Parameters : selectBox	= naam select veld
parameters = met te geven parameters
							
-------------------------------------------------------------------------------*/
function funcGetSelect(selectBox, parameters, masterValue, selectValue) {
    //alert(selectBox);
    //alert(parameters);
    //alert(masterValue);
    var url = path_scripts + '/select_xml.aspx';
    var selSelect = document.getElementById(selectBox);
    //alert(url);
    // eventueel ophalen oude geselecteerde waarde
    if (selectValue == 1) {
        selectValue = selSelect.options[selSelect.selectedIndex].value;
    }

    /*Leegmaken select-opties, behalve eerste lege optie */
    while (selSelect.length > 0) {
        selSelect.options[selSelect.length - 1] = null;
    }

    /*Ophalen nieuwe opties */
    // aanmaken XMLhttp object
    parameters += masterValue;
    makeRequest(url, parameters);

    var strHTML = http_request.responseText;
    //alert(strHTML);

    // indien de geselecteerde waarde van de master (b.v. klant) niet leeg is (selectie van een andere klant)
    // ==> geselecteerde waarde van de beoogde selectbox (b.v. module) leeg maken (er moet dan opnieuw worden gekozen)
    if (masterValue != '') {
        selectValue = ''
    }

    // toevoegen opties aan selectbox
    var arrOptions = strHTML.split('|');
    var arrOption;
    for (var i = 0; i < arrOptions.length; i++) {
        arrOption = arrOptions[i].split('=');
        if (arrOption[1] == 'selectedvalue') {
            selectValue = arrOption[0];
            //      alert(selectValue);
        }
        else {
            if (arrOption[0] == selectValue) {
                selSelect.options[i] = new Option(arrOption[1], arrOption[0], false, true);
            }
            else {
                selSelect.options[i] = new Option(arrOption[1], arrOption[0], false, false);
            }
        }
    }

}

/*-------------------------------------------------------------------------------
Naam       : makeRequest
Auteur     : Ronald Strous
Datum      : 24 mei 2006
Doel       : xmlHTTP object aanmaken
Parameters : url					= de pagina die moet worden aangeroepen
parameters	= de parameters die mee moeten worden gegeven
-------------------------------------------------------------------------------*/
function makeRequest(url, parameters) {
    http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
        }
    }
    else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) { }
        }
    }
    if (!http_request) {
        alert('Cannot create XMLHTTP instance');
        return false;
    }

    http_request.onreadystatechange = alertContents;
    http_request.open('GET', url + parameters, false);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", parameters.length);
    //	http_request.setRequestHeader("Connection", "close");
    http_request.send(null);
}


function alertContents() {
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            //alert(http_request.responseText); 
        }
        else {
            alert('There was a problem with the request.');
        }
    }
}

/*************************************************************************************************
***
***		TBT-Functies
***
*************************************************************************************************/
function toggle_display(field, togglefieldName) {
    //alert(togglefieldName);
    var togglefield = document.getElementById(togglefieldName);
    // wijzigen display-waarde
    if (togglefield.style.display == 'none') {
        togglefield.style.display = ''
    }
    else {
        togglefield.style.display = 'none'
    }
    // link wijzigen
    if (field.innerHTML == '+') {
        field.innerHTML = '-'
    }
    else {
        field.innerHTML = '+'
    }
}

function toggle_display2(field, togglefieldName, tabelNaam) {
    //alert('togglefieldName = ' + togglefieldName);
    var oObject = document.all.item(togglefieldName);
    var i;
    if (oObject != null) {
        if (oObject.length != null) {
            for (i = 0; i < oObject.length; i++) {
                if (oObject(i).style.display == 'none') {
                    //tonen, alleen voor huidige object
                    oObject(i).style.display = '';
                }
                else {
                    //niet tonen
                    oObject(i).style.display = 'none';
                    // nu eventueel voor de childs (alleen inklappen)
                    //alert('object ' + i + ' = ' + oObject(i).waarde);
                    inKlappen(oObject(i).waarde);
                } // einde if style.display
            } // einde for
        }
        else		// object bestaat wel, maar er is er maar 1 van
        {
            var togglefield = document.getElementById(togglefieldName);
            if (togglefield.style.display == 'none') {
                //tonen, alleen voor huidige object
                togglefield.style.display = '';
            }
            else {
                //niet tonen
                togglefield.style.display = 'none';
                // nu eventueel voor de childs (alleen inklappen)
                //alert('enkele = ' + togglefield.waarde);
                inKlappen(togglefield.waarde);
            }
        } // einde oObject.length != null	
    } // einde oObject != null

    // link wijzigen
    if (field.innerHTML == '+') {
        // uitgeklapt
        field.innerHTML = '-'
    }
    else //ingeklapt
    {
        field.innerHTML = '+'

        //nu de onderliggende niveau ook op openklappen zetten
        inKlapZetten(togglefieldName)
    }

    //* nu nog door de tablerows lopen en de class goed zetten
    //==> LET OP! table.id = tabel
    if (typeof tabelNaam == 'undefined') {
        tabelNaam = 'tabel';
    }
    OddEven(tabelNaam)

}

function inKlappen(waarde) {
    var i;
    //alert('waarde = ' + waarde);
    if (waarde != '') {
        var oObject = document.all.item(waarde);
        if (oObject != null) {
            if (oObject.length != null) {
                for (i = 0; i < oObject.length; i++) {
                    oObject(i).style.display = 'none';
                    // nu eventueel voor de childs (alleen inklappen)
                    //alert('object sub ' + i + ' = ' + oObject(i).waarde);
                    inKlappen(oObject(i).waarde);
                }
            }
            else {
                togglefield = document.getElementById(waarde);
                togglefield.style.display = 'none';
                // nu eventueel voor de childs (alleen inklappen)
                //alert('enkele sub = ' + togglefield.waarde);
                inKlappen(togglefield.waarde);
            }
        }

        // nu de de '+' zetten
        inKlapZetten(waarde)

    } // einde if waarde

}

function inKlapZetten(waarde) {
    //alert('waarde = ' + waarde);
    var i;
    var oObject = document.all.item('a_' + waarde);
    if (oObject != null) {
        if (oObject.length != null) {
            for (i = 0; i < oObject.length; i++) {
                oObject(i).innerHTML = '+';
            }
        }
        else {
            document.getElementById('a_' + waarde).innerHTML = '+';
        }
    }
}

function OddEven(tablename) {
    var i;
    var tabel = document.getElementById(tablename);
    var strClass = 'row_even';
    for (i = 0; i < tabel.rows.length; i++) {
        // alleen de regels die getoond worden
        if (tabel.rows(i).style.display != 'none') {
            tabel.rows(i).className = strClass;
            // wisselen van class
            if (strClass == 'row_odd') {
                strClass = 'row_even';
            }
            else {
                strClass = 'row_odd';
            }
        }
    }
}

function chkMaxValue(field, maxValue) {
    //	alert(field.value);
    if (field.value > parseFloat(maxValue)) {
        alert('Maximaal 100% toegestaan!');
        field.value = maxValue;
        field.focus();
    }
}

function chkMaxValues(changedRow, die_vermogen, con_vermogen, con_vermogen_geinstalleerd, culture) {
    var strName;
    var chkValue = maakrekenbedrag(changedRow.value);
    //nu eerst omzetten van Watt naar kW
    die_vermogen = parseFloat(die_vermogen / 1000);
    con_vermogen = parseFloat(con_vermogen / 1000);
    con_vermogen_geinstalleerd = parseFloat(con_vermogen_geinstalleerd / 1000);
    //controleren of het ingevoerde vermogen groter is dan het vermogen van de dienst
    if (chkValue > die_vermogen) {
        alert('Ingevoerde vermogen is groter dan het maximum vermogen van deze positie; vermogen is gezet op het maximum vermogen');
        chkValue = die_vermogen;
    }
    //controleren of het nieuwe vermogen groter is dan het con_vermogen
    //optellen huidige velden van de ruimte
    var arrInput = document.getElementsByTagName('input');
    for (i = 0; i < arrInput.length; i++) {
        if (arrInput[i].type == 'text') {
            strName = arrInput[i].name;
            if (strName.indexOf('text_') == 0) {
                con_vermogen_geinstalleerd += maakrekenbedrag(arrInput[i].value);
            }
        }
    }
    //nu controleren of nieuwe geinstalleerde contractvermogen groter is dan het contractvermogen
    if (con_vermogen_geinstalleerd > con_vermogen) {
        alert('Totale waarde van nieuwe geinstalleerde contract vermogen is groter dan het contract vermogen');
        chkValue = die_vermogen;
    }
    changedRow.value = maakmooibedrag(chkValue);
}

function js_toggleMenu(p_strID) {
    if (document.frmMenu.Menustate.value.indexOf(p_strID) > 0) {
        document.frmMenu.Menustate.value = document.frmMenu.Menustate.value.replace(p_strID + ',', '');
    }
    else {
        document.frmMenu.Menustate.value = document.frmMenu.Menustate.value + p_strID + ',';
    }
    js_toggle(p_strID);
    js_setCookie('Menu', document.frmMenu.Menustate.value, 10);
}

function reset_velden() {
    var oObject = document.frmForm.elements;
    var i;
    if (oObject != null) {
        if (oObject.length != null) {
            for (i = 0; i < oObject.length; i++) {
                //alert(oObject(i).id + ' = ' + oObject(i).type);
                if (oObject(i).type == 'text') {
                    oObject(i).value = '';
                }
                if (oObject(i).type == 'select-one') {
                    oObject(i).selectedIndex = -1;
                }

            } // einde for

        } // einde oObject.length != null	
    } // einde oObject != null

}

function formatNumber(veld) {
    var waarde = veld.value;
    var part1, part2, part3, part4;
    waarde = waarde.replace('.', '');
    waarde = waarde.replace('.', '');
    waarde = waarde.replace('.', '');
    waarde = waarde.replace('.', '');

    if (waarde.length > 9) {
        // meer dan 9 tekens ==> drie punten toevoegen
        part1 = waarde.substr(waarde.length - 3, 3);
        part2 = waarde.substr(waarde.length - 6, 3);
        part3 = waarde.substr(waarde.length - 9, 3);
        part4 = waarde.substr(0, waarde.length - 9);
        veld.value = part4 + '.' + part3 + '.' + part2 + '.' + part1;
        return true;
    }

    if (waarde.length > 6) {
        // meer dan 6 tekens, maar minder dan 10 tekens ==> twee punten toevoegen
        part1 = waarde.substr(waarde.length - 3, 3);
        part2 = waarde.substr(waarde.length - 6, 3);
        part3 = waarde.substr(0, waarde.length - 6);
        veld.value = part3 + '.' + part2 + '.' + part1;
        return true;
    }

    if (waarde.length > 3) {
        // meer dan 3 tekens, maar minder dan 7 tekens ==> een punten toevoegen
        part1 = waarde.substr(waarde.length - 3, 3);
        part2 = waarde.substr(0, waarde.length - 3);
        veld.value = part2 + '.' + part1;
        return true;
    }

    if (waarde.length <= 3) {
        veld.value = waarde;
        return true;
    }
}





/*
function isDate(dtStr) {
var pos1 = dtStr.indexOf('/');
var pos2 = dtStr.indexOf('/', pos1 + 1);
if (pos1 == -1 || pos2 == -1) {
return false;
}
var strMonth = dtStr.substring(0, pos1)
var strDay = dtStr.substring(pos1 + 1, pos2)
var strYear = dtStr.substring(pos2 + 1)
strYr = strYear
if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1)
if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth = strMonth.substring(1)
for (var i = 1; i <= 3; i++) {
if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1)
}
month = parseInt(strMonth)
day = parseInt(strDay)
year = parseInt(strYr)
*/

function isDate(year, month, day) {


    if (month < 1 || month > 12) {
        return false;
    }

    if (day <= 0) {
        return false;
    }

    if (month == 4 || month == 6 || month == 9 || month == 11) {
        if (day > 30) return false;
    }
    else if (month == 2) {
        var daysInFebruary = (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
        if (day > daysInFebruary)
            return false;
    }
    else {
        if (day > 31) return false;
    }

    return true;
}

function js_checkDate(p_name) {
    var day = document.getElementById(p_name + '_d').value;
    var month = document.getElementById(p_name + '_m').value;
    var year = document.getElementById(p_name + '_y').value;
    if (day != '' && day != '0' && month != '' && month != '0' && year != '' && year != '0') {
        if (!isDate(year, month, day))
            alert('U heeft een ongeldige datum opgegeven.');
    }
}


