
function onChangePakketSelectieVerzekeraarOption(
    element,
    targetElementId,
    targetUrl,
    columnNr,
    LiReGelijk
    ) {
    var selectedVerzekeraarId = element.options[element.selectedIndex].value;
    var selectedVerzekeraarNaam = element.options[element.selectedIndex].text;
    new Ajax.Updater(
        targetElementId,
        targetUrl,
        {
            method: 'get',
            parameters: {
                column: columnNr,
                verzekeraar: selectedVerzekeraarId
            },
            onComplete: function() {
                resizePopContainerPakketSelectie();
                if (columnNr == 1 && LiReGelijk) {
                    changeOtherPakketSelectieVerzekeraarOption(selectedVerzekeraarId,
                        selectedVerzekeraarNaam,'kolom2pakketselectie',targetUrl,2);
                }
            }
        }
        );
}

function changeOtherPakketSelectieVerzekeraarOption(
    selectedVerzekeraarId,
    selectedVerzekeraarNaam,
    targetElementId,
    targetUrl,
    columnNr
    ) {
    new Ajax.Updater(
        targetElementId,
        targetUrl,
        {
            method: 'get',
            parameters: {
                column: columnNr,
                verzekeraar: selectedVerzekeraarId,
                verzekeraarNaam: selectedVerzekeraarNaam
            },
            onComplete: function() {
                var select2 = document.getElementById('verzekeraarSelect2');
                if (select2.options[select2.selectedIndex].value == 'nothing'
                    // als links 1 mogelijkheid is en rechts meerdere
                    || (document.getElementById('basisVerzekeringCheckBox1') != null
                        && document.getElementById('basisVerzekeringCheckBox2') == null)) {
                    document.getElementById('cel1pakketselectie').colSpan='1';
                    document.getElementById('cel2pakketselectie').style.display='block';
                }
            }
        }
        );
}

function onChangePakketSelectieBasisVerzekeringOption(
    element, // the select element
    targetElementId,
    targetUrl,
    columnNr,
    verzekeraarId,
    LiReGelijk
    ) {
    var selectedBvId = element.options[element.selectedIndex].value;
    var selectedBvNaam = element.options[element.selectedIndex].text;
    new Ajax.Updater(
        targetElementId,
        targetUrl,
        {
            parameters: {
                column: columnNr,
                verzekeraar: verzekeraarId,
                basisVerzekering: selectedBvId
            },
            onComplete: function() {
                resizePopContainerPakketSelectie();
                if (columnNr == 1 && LiReGelijk) {
                    // als rechts 1 BV mogelijkheid heeft, dan hoeft rechts niet meer gevuld te worden
                    if (document.getElementById('basisVerzekeringCheckBox2') == null) {
                        changeOtherPakketSelectieBasisVerzekeringOption(selectedBvId,
                        selectedBvNaam,'kolom2pakketselectie',targetUrl,2,verzekeraarId);
                    } else {
                        document.getElementById('cel1pakketselectie').colSpan='1';
                        document.getElementById('cel2pakketselectie').style.display='block';
                    }
                }
            }
        }
        );
}

function changeOtherPakketSelectieBasisVerzekeringOption(
    selectedBvId,
    selectedBvNaam,
    targetElementId,
    targetUrl,
    columnNr,
    verzekeraarId
    ) {
    new Ajax.Updater(
        targetElementId,
        targetUrl,
        {
            parameters: {
                column: columnNr,
                verzekeraar: verzekeraarId,
                basisVerzekering: selectedBvId,
                basisVerzekeringTitel: selectedBvNaam
            },
            onComplete: function() {
                var select2 = document.getElementById('basisVerzekeringSelect2');
                if (select2.options[select2.selectedIndex].value == 'nothing') {
                    document.getElementById('cel1pakketselectie').colSpan='1';
                    document.getElementById('cel2pakketselectie').style.display='block';
                }
            }
        }
        );
}

function onClickPakketSelectieAanvullendeVerzekeringOption(
    element,  // the input[type=checked] element
    formId,   // form to submit
    targetId, // where to put response
    actionUrl, // where to get action
    LiReGelijk
    ) {
var inputTags = $(targetId).getElementsByTagName('input');

    for (var i = 0; i < inputTags.length; i++)
    {
        if (inputTags[i].getAttribute('type') == 'checkbox'
            && !inputTags[i].selected)
            {
            inputTags[i].onclick = function(){
                this.selected = false;
            };
        }
    }

    var formObject = $(formId).serialize(true);

    // Needed for error handling.
    var container = {
        success: targetId,
        failure: null
    };

    new Ajax.Updater(container, actionUrl, {
        method: 'get',
        parameters: formObject,
        onException: ajaxErrorHandler,
        onFailure: ajaxErrorHandler,
        onSuccess: function(){
            if (LiReGelijk) {
                var element2 = document.getElementById(element.id.replace("kolom-1-av", "kolom-2-av"));
                if (element2 != null) {
                    element2.checked = element.checked;
                    onClickPakketSelectieAanvullendeVerzekeringOption(element2,formId.replace("1", "2"),targetId.replace("1", "2"),actionUrl,false);
                }
            }
        }
    });
}

function onClickPakketSelectieAanvullendeVerzekeringRadio(element, LiReGelijk) {
    if (LiReGelijk) {
        var element2 = document.getElementById(element.id.replace("kolom-1-av", "kolom-2-av"));
        if (element2 != null) {
            element2.checked = element.checked;
        }
    }
}

function popupPakketSelectie() {
    var popContainer = $('popContainerPakketSelectie');
	
    if(popContainer.hasClassName('hide')) {

        var height = document.getElementById('scrollable-div').offsetHeight;
        if(document.getElementById('berekening')!= null) {
            height += document.getElementById('berekening').offsetHeight;
        }
        document.getElementById('scrollable-div').style.height = height + "px";
        
        var kostenberekening = $('kostenoverzicht');
        kostenberekening.addClassName('hide');
        if(kostenberekening.childNodes.length != undefined){
            while (kostenberekening.childNodes.length > 0) {
                kostenberekening.removeChild(kostenberekening.firstChild);
            }
        }
 
        popContainer.absolutize();
     
        // IE7 does not like cloning the position of document.body
		
        popContainer.removeClassName('hide');
        resizePopContainerPakketSelectie();

        popContainer.scrollTo();
    }
    else {
        popContainer.addClassName('hide');
    }
}

function resizePopContainerPakketSelectie() {
    var popContainer = $('popContainerPakketSelectie');
    var popWindow = $('popWindowPakketSelectie');
	
    var height = Math.max(
        (window.innerHeight || 0),
        document.body.clientHeight,
        document.documentElement.clientHeight,
        document.body.scrollHeight + 50,
        popWindow.cumulativeOffset().top + popWindow.getHeight() + 50
        );

    popContainer.setStyle({
        left: '0px',
        top: '0px',
        height: height + 'px',
        width: '100%'
    });
	
}

function disablePakketSelectie() {
    var popContainer = $('popInnerPakketSelectie');
    popContainer.addClassName('hide');
}

function enablePakketSelectie() {
    var popContainer = $('popInnerPakketSelectie');
    popContainer.removeClassName('hide');
}


function onClickSubmitPakketSelectie(targetId, actionUrl, columns, message) {
    var startTime = getMillis();
    var succes = columns;

    showWaitCursor(true);

    var mergedParameters = new Object();
    for( var k = 1; k <= columns; k ++ ) {
        var formId = 'kolom' + k + 'aanvullendeVerzekeringen-form';
        var formElement = $(formId);
        if( formElement == null ) {
            succes --; continue;
        }
        var formObject = $(formId).serialize(true);
		
        for( var key in formObject ) {
            mergedParameters['column['+k+'].'+key] = formObject[key];
        }
    }

    // als er twee kolommen gevuld zijn, hoeft er geen foutmelding op te treden
    if( succes < columns && succes < 2 ) {
        showWaitCursor(false);
        alert( message );
        return;
    }
    popupPakketSelectie();
	
    // Needed for error handling.
    var container = {
        success: targetId,
        failure: null
    };

    disablePakketSelectie();

    new Ajax.Updater(container, actionUrl, {
        method: 'get',
        parameters: mergedParameters,
        onException: ajaxErrorHandler,
        onFailure: ajaxErrorHandler,
        onSuccess: function(){
        },
        onComplete: function() {

        
            updateDekkingen( function() {
               
                enablePakketSelectie();
                refreshDifferences();
                observeKostensoortenClicks();
                showTiming("total update table", getMillis()-startTime);
                showWaitCursor(false);
                checkTree();
                if (pageTracker) pageTracker._trackPageview(actionUrl);
            } );
        }
    });
}

updateDekkingen = function ( onCompleteFunc ) {

    var parameters = new Object();
    // Call update of body.
    for( var k = 1; k <= 3; k ++ ) {
        var headId = 'column-' + k + '-header';
        var headElement = $(headId);
        if( !headElement ) {
            continue;
        }
        var bvElement = $(headId).down('input');
        var avElement = bvElement.next('input');
		
        parameters[bvElement.name]=bvElement.value;
        parameters[avElement.name]=avElement.value;
    }
	
    //	var body = $('kostensoort_body');
    //	var elements = body.childElements();
    //	elements.each( function(element) {
    //		var input = element.firstDescendant().firstDescendant().firstDescendant();
    //		if (input) {
    //			parameters[input.name]=input.value;
    //		}
    //	});
	
	
    var container = {
        success: 'main',
        failure: null
    };
    var table = $('main');
    var tableParts = $('main').childNodes;
    for (var i=tableParts.length; i-->0; ) {
        if (tableParts[i].tagName && tableParts[i].tagName.toLowerCase() == "tbody") table.removeChild(tableParts[i]);
    }
    new Ajax.Updater(container, $$('base')[0].readAttribute('href') +'/dekking/overzicht.do', {
        insertion: Insertion.Bottom,
        method: 'get',
        parameters: parameters,
        onException: ajaxErrorHandler,
        onFailure: ajaxErrorHandler,
        onSuccess: function() {
            stopObservingKostensoortenClicks();
        },
        onComplete: onCompleteFunc
    });
}




