﻿function kickToAjax(desc, page, line, chr) {
    if (desc == null) { desc = ''; }
    if (page == null) { page = ''; }
    if (line == null) { line = ''; }
    if (chr == null) { chr = ''; }
    Ajax_Code.reportJSError(desc, page, line, chr, SucceededCallback, FailedCallback);
}

function checknobags(bagobj) {
    var weightobj = getObj('gewicht_' + bagobj.id.substr(bagobj.id.indexOf('_')+1));

    if (weightobj) {
        if (bagobj[bagobj.selectedIndex].value == '') {
            weightobj.disabled = true;
        } else {
            weightobj.disabled = false;
        }
    }
}

function nrbags(selectedcode, id) {
    var retstr = '<select id="bagage_' + id + '" name="bagage_' + id + '" onchange="javascript:checknobags(this); ">';
    var selectedstr = '';

    if (selectedcode == '') {
        selectedstr = "selected";
    }

    retstr = retstr + '<option text="geen" value=""' + selectedstr + '>geen</option>';

    for (ij = 1; ij < 6; ij++) {
        selectedstr = '';
        if (selectedcode==ij.toString()+'BAG')
        {
            selectedstr = "selected";
        }
        retstr = retstr + '<option text="' + ij.toString() + ' stuks" value="'+ij.toString()+'BAG"'+selectedstr+'>' + ij.toString() + ' stuks</option>';         
    }

    retstr = retstr + '</select>';

    return retstr;
}

function bagweight(selectedcode, id, selectedbag) {
    var retstr = '<select id="gewicht_' + id + '"' + ((selectedbag == '') ? ' disabled="true"' : '') + ' name="gewicht_' + id + '">';

    retstr = retstr + '<option text="15 kg" value=""' + ((selectedcode=='')?' selected':'') + '>15 kilo</option>';
    retstr = retstr + '<option text="20 kg" value="05KG"' + ((selectedcode == '05KG') ? ' selected' : '') + '>20 kilo</option>';
    retstr = retstr + '<option text="23 kg" value="08KG"' + ((selectedcode == '08KG') ? ' selected' : '') + '>23 kilo</option>';
    retstr = retstr + '<option text="26 kg" value="11KG"' + ((selectedcode == '11KG') ? ' selected' : '') + '>26 kilo</option>';
    retstr = retstr + '<option text="29 kg" value="14KG"' + ((selectedcode == '14KG') ? ' selected' : '') + '>29 kilo</option>';
    retstr = retstr + '<option text="32 kg" value="17KG"' + ((selectedcode == '17KG') ? ' selected' : '') + '>32 kilo</option>';
    retstr = retstr + '<option text="35 kg" value="20KG"' + ((selectedcode == '20KG') ? ' selected' : '') + '>35 kilo</option>';
    retstr = retstr + '<option text="38 kg" value="23KG"' + ((selectedcode == '23KG') ? ' selected' : '') + '>38 kilo</option>';
    retstr = retstr + '<option text="41 kg" value="26KG"' + ((selectedcode == '26KG') ? ' selected' : '') + '>41 kilo</option>';
    retstr = retstr + '<option text="44 kg" value="29KG"' + ((selectedcode == '29KG') ? ' selected' : '') + '>44 kilo</option>';
    retstr = retstr + '<option text="47 kg" value="32KG"' + ((selectedcode == '32KG') ? ' selected' : '') + '>47 kilo</option>';
    retstr = retstr + '<option text="50 kg" value="35KG"' + ((selectedcode == '35KG') ? ' selected' : '') + '>50 kilo</option>';
    
    retstr = retstr + '</select>';

    return retstr;
}

var idarray=new Array();

function saveLuggage() {
    var saveStr = '';

    for (j=0; j<idarray.length; j++)
    {
        var mybag = getObj('bagage_' + idarray[j]);
        var mywgt = getObj('gewicht_' + idarray[j]);

        if (saveStr != '') { saveStr += '|'; }
        saveStr = saveStr + idarray[j] + ':' + mybag[mybag.selectedIndex].value + ':' + mywgt[mywgt.selectedIndex].value; ; 
    }

    Ajax_Code.saveTransaviaLuggage(saveStr, SucceededCallback, FailedCallback);
}

function SucceededCallback(result, userContext, methodName)
{
    switch (methodName)
    {
        case "reportJSError":
            
            break;

	   case "saveTransaviaLuggage":
            if (result == true) {
                window.location.href = 'prijs.aspx';
            } else {
                alert('Er is iets misgegaan bij het aanpassen van de bagage. Probeer het opnieuw.');
                hidePopup();
            }

            break;
        case "getBoekingenByMonth":
            var splitResult = new Array();
            splitResult = result.split("|");
            var divObj = getObj(splitResult[1]);
            divObj.innerHTML = splitResult[0];

            break;
        case "editTransaviaLuggage":
            var splitResult = new Array();
            splitResult = result.split('|');

            idarray = new Array();

            var html = '<div style="width: 360px; height: 280px; padding: 25px 10px 0px 10px; background-image: url(\'/App_Image/popup_380_300.png\'); background-repeat: no-repeat"><div style="font-weight: bold; font-size: 14px; margin-bottom: 17px">Transavia bagage aanpassen</div><div style="width: 350px; height: 200px; overflow-y: scroll"><table cellpadding="0" cellspacing="0" style="font-size: 9px">';

            for (i = 0; i < splitResult.length; i++) {
                var travResult = new Array();
                travResult = splitResult[i].split(':');

                idarray.push(travResult[0]);

                html = html + '<tr><td colspan="3" style="padding-bottom: 3px; font-size: 11px; font-weight: bold">' + travResult[1] + '</td></tr><tr><td><div style="width: 8px">&nbsp;</div></td><td style="padding-right: 12px">Aantal koffers:&nbsp;' + nrbags(travResult[2], travResult[0]) + '</td><td>Totaal gewicht:&nbsp;' + bagweight(travResult[3], travResult[0], travResult[2]) + '</td></tr>';
                html = html + '<tr><td colspan="3">&nbsp;</td></tr>';
            }

            html = html + '</table></div>';
            html = html + '<img style="cursor: pointer; margin-bottom: 4px; float: right; margin-right: 10px; margin-top: 4px" src="App_Image/button/bevestigen.png" onclick="javascript:saveLuggage(); " onmouseover="javascript:this.src=\'/App_Image/button/bevestigen_over.png\'; " onmouseout="javascript:this.src=\'/App_Image/button/bevestigen.png\'; "  alt="Bevestigen" /><img style="cursor: pointer; margin-top: 4px" src="App_Image/button/annuleren.png" onclick="javascript:hidePopup(); " onmouseover="javascript:this.src=\'/App_Image/button/annuleren_over.png\'; " onmouseout="javascript:this.src=\'/App_Image/button/annuleren.png\'; "  alt="Annuleren" />&nbsp;';
            html = html + '</div>';

            showPopup(380, 300, html);
            break;
        case "fillHotels":
            var i = 0;
            var splitResult = new Array();
            var tabelAppend = getObj('bodyContent_controlTable');

            var newrow = document.createElement('tr');
            var newcellTitle = document.createElement('td');
            var newcell = document.createElement('td');
            var newList = document.createElement('select');

            splitResult = result.split('|');
            for (i = 0; i < splitResult.length; i++) {
                var splitHotelResult = new Array();
                splitHotelResult = splitResult[i].split('~');
                var newListOption = document.createElement('option');

                newListOption.text = splitHotelResult[0];
                newListOption.value = splitHotelResult[1];
                newList.options.add(newListOption);
            }

            newcellTitle.innerHTML = 'Hotel';
            newcell.appendChild(newList)
            newrow.appendChild(newcellTitle);
            newrow.appendChild(newcell);
            tabelAppend.appendChild(newrow);
            break;
        case "fillkantoorKeten":
            var i = 0;
            var splitResult = new Array();
            var tabelAppend = getObj('bodyContent_controlTable');

            var newrow = document.createElement('tr');
            var newcellTitle = document.createElement('td');
            var newcell = document.createElement('td');
            var newList = document.createElement('select');

            splitResult = result.split('|');
            for (i = 0; i < splitResult.length; i++) {
                var splitHotelResult = new Array();
                splitHotelResult = splitResult[i].split('~');
                var newListOption = document.createElement('option');

                newListOption.text = splitHotelResult[0];
                newListOption.value = splitHotelResult[1];
                newList.options.add(newListOption);
            }

            newcellTitle.innerHTML = 'Reisburo';
            newcell.appendChild(newList)
            newrow.appendChild(newcellTitle);
            newrow.appendChild(newcell);
            tabelAppend.appendChild(newrow);
            break;
        case "toonHotel":
            var splitResult = new Array();
            splitResult = result.split('~');
            
            var hotelID = splitResult[0];
            
            var hotelSpacer = getObj('hotelInfo_'+hotelID);
            
            var contentStr='<img src="/App_Image/min.png" style="margin-top: 1px" alt="Hotelinformatie inklappen" />&nbsp;Hotelinformatie<br/><br/>';
            
            contentStr=contentStr+splitResult[1];
            
            hotelSpacer.innerHTML=contentStr;
        break;
        
        case "jumpMonth":
            //alert(result);
            fillCalendar('ctl00_bodyContent_zoekBoekBorder_ZoekEnBoek_Kalender_Heen_', result.substr(4, 2), result.substr(0, 4)); 
        break;
        
        case "loadCityDD":
            var splitResult = new Array();
            splitResult = result.split('|');
        
            var ddObj=getObj(cityDD);
        
            while (ddObj.length>0) { ddObj.remove(0); }

            for (g=0;g<splitResult.length;g++)
            {
                var splitParts = new Array();
                splitParts=splitResult[g].split('~');
                
                var listOption = document.createElement('option');
                listOption.value=splitParts[1];
                listOption.label=splitParts[0];
                listOption.text=splitParts[0];
                ddObj.appendChild(listOption);
            }
        break;
        
        case "fillCalendarDays":
            var splitResult = new Array();
            splitResult = result.split('~');
                
            var calID = splitResult[0];
            var tmpCSS = splitResult[1];
            
            var cssCol = new Array();
            cssCol = tmpCSS.split(";");
            
            loadCalendarDates(calID, cssCol, true);
            
            var selDate = getObj(calID+'selectedDate');
            
            if (selDate) {
                if (selDate.value!='')
                {
                    var splitDate = new Array();
                    splitDate = selDate.value.split('-');
                    
                    if (!isNaN(new Date(splitDate[2],splitDate[1]-1,splitDate[0]))) { selectDate(calID, new Date(splitDate[2],splitDate[1]-1,splitDate[0])); }
                }
            }
        break;

    case "updateTransportOptions":
        var splitResult = new Array();
        splitResult = result.split('~');

        var transportRow = getObj(transTable).rows[0];

        for (i = 0; i < 3; i++) {
            if (splitResult[i] == '0') { transportRow.cells[i].style.display = 'none'; } else { transportRow.cells[i].style.display = 'inline'; }
            if (splitResult[i] == '2') {
                switch (i) {
                    case 0:
                        getObj(transLead + 'vervoerVlieg').click();
                        break;
                    case 1:
                        getObj(transLead + 'vervoerTrein').click();
                        break;
                }
            }
        }

        if (splitResult[0] == '0' && selectedTransport() == 12) { getObj(transLead + 'vervoerTrein').click(); }
        if (splitResult[1] == '0' && selectedTransport() == 13) { getObj(transLead + 'vervoerVlieg').click(); }

        //TODO selectedTransport transfer when hidden
        if (selectedTransport() == 11) {
            getObj(vanNaar).style.display = 'none';
        } else {
            Ajax_Code.updateDepDest(selectedType(), selectedTransport(), selectedCity(), SucceededCallback, FailedCallback);
        }

        //if (splitResult[1]=='0') { getObj(transRadio+'vervoerTrein').style.display='none'; } else { getObj(transRadio+'vervoerTrein').style.display='inline'; }
        //if (splitResult[2]=='0') { getObj(transRadio+'vervoerBoot').style.display='none'; } else { getObj(transRadio+'vervoerBoot').style.display='inline'; }
        break;
        
        case "updateDepDest":
            var splitResult = new Array();
            splitResult = result.split('~'); 
            
            eval(splitResult[2]);
            eval(splitResult[3]);
            
            getObj(vanNaar).style.display='inline';
            
            var depOptions = splitResult[0].split('|');
            var dstOptions = splitResult[1].split('|');

            var ddDep = getObj(depDD);
            var ddDst = getObj(dstDD);
            
            while (ddDep.length>0) { ddDep.remove(0); }
            while (ddDst.length>0) { ddDst.remove(0); }
            
            for (dep=0; dep<depOptions.length; dep++)
            {
                var depOption = document.createElement('option');
                depOption.value=depOptions[dep];
                depOption.label=ddDesc[depOptions[dep]];
                depOption.text=ddDesc[depOptions[dep]];
                ddDep.appendChild(depOption);
            }            
            
            for (dst=0; dst<dstOptions.length; dst++)
            {
                var dstOption = document.createElement('option');
                dstOption.value=dstOptions[dst];
                dstOption.label=ddDesc[dstOptions[dst]];
                dstOption.text=ddDesc[dstOptions[dst]];
                ddDst.appendChild(dstOption);
            }  
            
            ddDep.value=splitResult[4];          
            ddDst.value=splitResult[5];
        break;
        
        case "removeExtra":
            getObj(totaalPrijsID).innerHTML=result;
            Ajax_Code.updatePrijsRegels(SucceededCallback, FailedCallback);
        break;
        
        case "removeTransfer":
            getObj(totaalPrijsID).innerHTML=result;
            Ajax_Code.updatePrijsRegels(SucceededCallback, FailedCallback);
        break;
        
        case "updateExtras":
            var splitresult = new Array();
            splitresult = result.split('~');
            
            getObj(extrasPanelID).innerHTML=splitresult[0];
            
            eval(splitresult[1]);
        break;
        
        case "addTransfer":
            getObj(totaalPrijsID).innerHTML=result;
            Ajax_Code.updatePrijsRegels(SucceededCallback, FailedCallback);
        break;
        
        case "updatePrijsRegels":
            getObj(prijzenPanelID).innerHTML=result;
        break;
        
        case "toonSteden":
            stedenCache=result;
            showCityPanel(result);
        break;
        
        case "addExtra":
            getObj(totaalPrijsID).innerHTML=result;
            Ajax_Code.updatePrijsRegels(SucceededCallback, FailedCallback);
        break;
        
        case "loadFlights":
            if (result!='')
            {
                var splitresult = new Array();
                splitresult = result.split('~');
                
                getObj(outboundID).innerHTML=splitresult[0];
                getObj(inboundID).innerHTML=splitresult[1];
            }
        break;
        
        default:
            alert(':(: '+result);
        break;
    }
}

function FailedCallback(error, userContext, methodName) 
{
    if(error !== null) 
    {
        switch (methodName)
        {
            case "ajax_updateAvailability":
                //TODO retry in some seconds
            break;
            
            default:
                //alert('Error with '+methodName+': '+error.get_message());
            break;
        }
    }    
}
