﻿var productsPerPage=20; //default
function delegateFunction(data, action) {
    switch (action) {
        case "doShowCities":
            var divFoundCities = document.getElementById('divFoundCities');
            divFoundCities.setAttribute('style', 'display:block');
            divFoundCities.innerHTML = '';
            for (var key in data) {
                if (data.hasOwnProperty(key)) {
                    var linkCity = document.createElement('a');
                    linkCity.setAttribute('href', '#');
                    linkCity.setAttribute('onclick', 'SelectCity("' + data[key].CITY + '")');
                    linkCity.innerHTML = data[key].CITY;
                    divFoundCities.appendChild(linkCity);
                }
            }

            break;
        case "doShowSearchProducts":
            var productCnt = 0;
            var searchResultsRoot = document.createElement('div');
            var pageSpecific = document.getElementById('hfPageSpecific').value == 'true';

            searchResultsRoot.setAttribute('class', 'SearchResultsAjax');

            if (data.length > 0) {
                document.getElementById('hfSearchResultTotalCount').value = data[0].TOTAL_COUNT;
            }

            productCnt = ProcessResults(data, searchResultsRoot);

            var popupHeight = 600;
            switch (productCnt) {
                case 0:
                case 1:
                    popupHeight = 180;
                    break;
                case 2:
                case 3:
                    popupHeight = 450;
                    break;
                case 4:
                    popupHeight = 600;
                    break;
            }

            var objCategories = document.getElementById('ddlCategories');
            var objCountries = document.getElementById('ddlCountries');
            var objTransport = document.getElementById('ddlTransport');

            var headerText = 'Resultaten (' + document.getElementById('hfSearchResultTotalCount').value + ') - ';
            var amountShown = true;

            if (document.getElementById('hfCat') != null && document.getElementById('hfCat').value == '') {
                headerText += 'Min. budget  : &euro;' + document.getElementById('hfFromAmount').value + ', ';
                headerText += 'Max. budget: &euro;' + document.getElementById('hfToAmount').value;
            } else if (document.getElementById('hfCat') != null && document.getElementById('hfCat').value != '' && document.getElementById('hfDestFinderUsed').value == 0) {
                amountShown = false;
                headerText += '';
            } else {
                if (document.getElementById('hfDestFinderUsed') != null) {
                    document.getElementById('hfDestFinderUsed').value = 0;
                }
                var fromAmount = document.getElementById('hfFromAmount') == null ? document.getElementById('txtMinBudget').value : document.getElementById('hfFromAmount').value;
                var toAmount = document.getElementById('hfToAmount') == null ? document.getElementById('txtMaxBudget').value : document.getElementById('hfToAmount').value;

                headerText += 'Min. budget  : &euro;' + fromAmount + ', ';
                headerText += 'Max. budget: &euro;' + toAmount;
            }

            if (pageSpecific && document.getElementById('hfCat').value != '') {
                headerText += (amountShown ? ', ' : '') + document.getElementById('hfCat').value;
            } else if (objCategories.options[objCategories.selectedIndex].value > 0) {
                headerText += (amountShown ? ', ' : '') + objCategories.options[objCategories.selectedIndex].text;
            }

            if (pageSpecific && document.getElementById('hfCountry').value != '') {
                headerText += ', ' + document.getElementById('hfCountry').value;
            } else if (objCountries.options[objCountries.selectedIndex].value > 0) {
                headerText += ', ' + objCountries.options[objCountries.selectedIndex].text;
            }
            if (pageSpecific && document.getElementById('hfCity').value != '') {
                headerText += ', ' + document.getElementById('hfCity').value;
            } else if (document.getElementById('txtCity').value != '') {
                headerText += ', ' + document.getElementById('txtCity').value;
            }
            if (objTransport.options[objTransport.selectedIndex].value > 0) {
                headerText += ', ' + objTransport.options[objTransport.selectedIndex].text;
            }
            Common.ShowPopup(headerText, (productCnt == 0 ? '<h2>Er zijn geen aanbiedingen gevonden bij de criteria die u heeft opgegeven!<h2>' : searchResultsRoot.innerHTML), 800, popupHeight, false, action == 'doShowSearchProductsPageSpecific');
            DeterminePrevNextButtons();
            break;
        case "doShowNextPrevResults":
            var searchResultsRoot = document.createElement('div');
            productCnt = ProcessResults(data, searchResultsRoot);

            document.getElementById("MessageWindowMiddleText").innerHTML = searchResultsRoot.innerHTML;

            var lblOneMoment = document.getElementById('lblOneMoment');
            lblOneMoment.setAttribute('style', 'display:none');

            DeterminePrevNextButtons();
            break;
        case "doShowCountries":
            var objCategories = document.getElementById('ddlCategories');
            var objCountries = document.getElementById('ddlCountries');

            objCountries.options.length = 0;
            if (objCategories.selectedIndex > 0) {
                objCountries.options[0] = new Option(Lang.Global_SelectCountry, 0);
            } else {
                objCountries.options[0] = new Option("", 0);
            }

            for (var key in data) {
                if (data.hasOwnProperty(key)) {
                    objCountries.options[objCountries.options.length] = new Option(data[key].COUNTRY, data[key].COUNTRY_ID);
                }
            }

            break;
        case "doEventsTop":
            var divEventsDesc = document.getElementById('divEventsDesc');
            divEventsDesc.setAttribute('style', 'display:block');
            divEventsDesc.innerHTML = '';
            ProcessEvents(data, divEventsDesc);

            break;
        case "doEvents":
            var eventsResultsRoot = document.createElement('div');
            eventsResultsRoot.setAttribute('class', 'EventResultsAjax');
            ProcessEvents(data, eventsResultsRoot);
            Common.ShowPopup('Alle evenementen voor ' + (document.getElementById('hfCity') != null ? document.getElementById('hfCity').value + ', ' : '') + document.getElementById('hfCountry').value, eventsResultsRoot.innerHTML, 800, 600);
            Common.HidePopupNavigation();
            break;
        case "doSubscribeNewsLetter":
            Common.HideOverlay('overlaySpinner');
            Common.RemoveSpinner();
            alert("Aanmelden gelukt");
            document.getElementById('txtEmailNewsLetter').value = '';
            break;
    }
}

function GetNextPrevResults(action, handler) {
    var category = '';
    var country = '';
    var city = '';
    var pageSpecific = document.getElementById('hfPageSpecific').value == 'true';


    if (pageSpecific) {
        category = document.getElementById("hfCatID").value;
        country = document.getElementById("hfCountryID").value;
        city = document.getElementById("hfCity").value;
    }
    
    if (document.getElementById('lblOneMoment') != null) {
        var lblOneMoment = document.getElementById('lblOneMoment');
        lblOneMoment.setAttribute('style', 'display:block');
    }
    var newPageId = 0;
    if(action=='next' || action=='prev'){
        newPageId = parseInt(document.getElementById('hfSearchResultPage').value) + (action=='next'?1:-1);
        var objProductsPerPage = document.getElementById('ddlProductsPerPage'); 
        productsPerPage = objProductsPerPage.options[objProductsPerPage.selectedIndex].value;
    }else if(action=='productsperpage'){
        var objProductsPerPage = document.getElementById('ddlProductsPerPage');
        productsPerPage = objProductsPerPage.options[objProductsPerPage.selectedIndex].value;
        newPageId = 1;
    }else{
        productsPerPage = 20;
        newPageId = 1;
    }
    document.getElementById('hfSearchResultPage').value = newPageId;

    var objCategories = document.getElementById('ddlCategories');
    var objCountries = document.getElementById('ddlCountries');
    var objTransport = document.getElementById('ddlTransport');

    var fromAmount = document.getElementById('hfFromAmount') == null ? document.getElementById('txtMinBudget').value : document.getElementById('hfFromAmount').value;
    var toAmount = document.getElementById('hfToAmount') == null ? document.getElementById('txtMaxBudget').value : document.getElementById('hfToAmount').value;

    Json.Init();
    Json.Add("PRICE_FROM", (pageSpecific ? 0 : fromAmount));
    Json.Add("PRICE_TO", (pageSpecific?4000:toAmount));
    Json.Add("CITY", (pageSpecific?city:document.getElementById('txtCity').value));
    Json.Add("COUNTRY_ID", (pageSpecific?country:objCountries.options[objCountries.selectedIndex].value));
    Json.Add("CATEGORY_ID", (pageSpecific?category:objCategories.options[objCategories.selectedIndex].value));
    Json.Add("TRANSPORT_ID", (pageSpecific?0:objTransport.options[objTransport.selectedIndex].value));
    Json.Add("PAGE", document.getElementById('hfSearchResultPage').value);
    Json.Add("PRODUCTS_PER_PAGE", productsPerPage);

    Json.SendToServer('/ajax/destinationfinder/getsearchproducts.aspx', handler, '', '');
}

function ProcessResults(data, searchResultsRoot) {
    var productCnt = 0;
    for (var key in data) {
        if (data.hasOwnProperty(key)) {
            var productRow = document.createElement('div');
            productRow.setAttribute('class', 'ProductRow');
            searchResultsRoot.appendChild(productRow);

            /* Left row */
            var productColLeft = document.createElement('div');
            productColLeft.setAttribute('class', 'ProductColLeft');
            productRow.appendChild(productColLeft);

            var productImg = document.createElement('img');
            productImg.setAttribute('src', data[key].IMG_URL);
            productImg.setAttribute('onclick', 'window.open(\'http://www.vakantiestation.nl/gotoproduct.aspx?id=' + data[key].PRODUCT_ID + '\')');
            productColLeft.appendChild(productImg);

            /* Middle row */
            var productColMiddle = document.createElement('div');
            productColMiddle.setAttribute('class', 'ProductColMiddle');
            productRow.appendChild(productColMiddle);

            var productNameLink = document.createElement('a');
            productNameLink.setAttribute('href', '/gotoproduct.aspx?id=' + data[key].PRODUCT_ID);
            productNameLink.setAttribute('target', '_blank');
            productNameLink.innerHTML = data[key].NAME;
            productColMiddle.appendChild(productNameLink);

            var countryCity = document.createElement('span');
            countryCity.setAttribute('class', 'CountryCity');
            countryCity.innerHTML = data[key].COUNTRY + '->' + data[key].CITY;
            productColMiddle.appendChild(countryCity);

            var productText = document.createElement('span');
            productText.innerHTML = data[key].PRODUCT_TEXT;
            productColMiddle.appendChild(productText);

            /* Right row */
            var productColRight = document.createElement('div');
            productColRight.setAttribute('class', 'ProductColRight');
            productRow.appendChild(productColRight);

            var fromText = document.createElement('span');
            fromText.innerHTML = 'Vanaf';
            productColRight.appendChild(fromText);

            var fromPrice = document.createElement('span');
            fromPrice.setAttribute('class', 'Price');
            fromPrice.innerHTML = '€' + data[key].PRICE;
            productColRight.appendChild(fromPrice);

            var productCampaignImg = document.createElement('img');
            productCampaignImg.setAttribute('src', '/images/campaigns/imagestream.aspx?sort=campaign&id=' + data[key].CAMPAIGN_ID);
            productCampaignImg.setAttribute('onclick', 'window.open(\'http://www.vakantiestation.nl/gotoproduct.aspx?id=' + data[key].PRODUCT_ID + '\')');
            productColRight.appendChild(productCampaignImg);

            productCnt++;
        }
    }
    return productCnt;
}

function ProcessEvents(data, eventResultsRoot) {
    var productCnt = 0;
    for (var key in data) {
        if (data.hasOwnProperty(key)) {
            
            var eventRow = document.createElement('div');
            eventRow.setAttribute('class', 'EventRow');
            eventResultsRoot.appendChild(eventRow);

            /* Left row */
            var eventColLeft = document.createElement('div');
            eventColLeft.setAttribute('class', 'EventColLeft');
            eventRow.appendChild(eventColLeft);

            var eventImgUrl = document.createElement('a');
            eventImgUrl.setAttribute('href', '/gotoevent.aspx?id=' + data[key].EVENT_ID);
            eventImgUrl.setAttribute('target', '_blank');

            eventColLeft.appendChild(eventImgUrl);

            var eventImg = document.createElement('img');
            eventImg.setAttribute('src', data[key].IMAGE_URL);
            eventImgUrl.appendChild(eventImg);

            /* Middle row */
            var eventColMiddle = document.createElement('div');
            eventColMiddle.setAttribute('class', 'EventColMiddle');
            eventRow.appendChild(eventColMiddle);

            var eventNameLink = document.createElement('a');
            eventNameLink.setAttribute('href', '/gotoevent.aspx?id=' + data[key].EVENT_ID);
            eventNameLink.setAttribute('target', '_blank');
            eventNameLink.innerHTML = data[key].NAME;
            eventColMiddle.appendChild(eventNameLink);

            var eventText = document.createElement('span');
            eventText.innerHTML = data[key].DESCRIPTION;
            eventColMiddle.appendChild(eventText);

            var eventPrice = document.createElement('span');
            eventPrice.setAttribute('class', 'Bold');
            eventPrice.innerHTML = 'Prijs: &euro;' + data[key].PRICE;
            eventColMiddle.appendChild(eventPrice);

            var eventEmpty = document.createElement('span');
            eventEmpty.innerHTML = '';
            eventColMiddle.appendChild(eventEmpty);

            var eventDate = document.createElement('span');
            var date = eval(data[key].DATE.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"));
            eventDate.innerHTML = 'Datum: ' + date.getDate() + '-' + (date.getMonth() + 1) + '-' + date.getFullYear();
            eventColMiddle.appendChild(eventDate);
            
            var eventTime = document.createElement('span');
            eventTime.innerHTML = 'Tijd: ' + data[key].TIME;
            eventColMiddle.appendChild(eventTime);
            productCnt++;
        }
    }
    
    if(productCnt==0) {
        var eventNotFoundRow = document.createElement('div');
        eventNotFoundRow.setAttribute('class', 'EventRow');
        eventNotFoundRow.innerHTML = Lang.Global_NoEventsFound;
        eventResultsRoot.appendChild(eventNotFoundRow);
    } else if (productCnt == 5) {
        document.getElementById('hlMoreEvents').style.display = 'block';
    }

    if ((document.getElementById('divTips').offsetHeight - document.getElementById('divEvents').offsetHeight) > 250) {
        //Show bannerpool
        document.getElementById('divBanners_300_250').style.display = 'block';
    } else if ((document.getElementById('divEvents').offsetHeight - document.getElementById('divTips').offsetHeight) > 250) {
        document.getElementById('divBanners_300_250_tips').style.display = 'block';
    }
}

function DeterminePrevNextButtons() {
    var totalCount = parseInt(document.getElementById('hfSearchResultTotalCount').value);
    var page = parseInt(document.getElementById('hfSearchResultPage').value);
    
    if (page == 1) {
        document.getElementById('searchPrev').style.display = 'none';
    } else {
        document.getElementById('searchPrev').style.display = 'block';
    }

    var totalPage = totalCount / productsPerPage;

    if (page == parseInt(totalPage)+1) {
        document.getElementById('searchNext').style.display = 'none';
    } else {
        document.getElementById('searchNext').style.display = 'block';
    }
}

function OpenAdvertisePage() {
    Common.ShowPopupIframe(Lang.Global_Advertise_Title, Lang.Global_Advertise_Location, 600, 645);
}

function OpenAddTipPage() {
    Common.ShowPopupIframe(Lang.Global_OpenTipPage_Title, '/addtip.aspx?category=' + document.getElementById('hfCat').value + '&country=' + document.getElementById('hfCountry').value + '&city=' + document.getElementById('hfCity').value, 600, 650);
}

function OpenJobsPage() {
    Common.ShowPopupIframe(Lang.Global_OpenJobsPage_Title, Lang.Global_OpenJobsPage_Location, 600, 300);
}

function OpenAddPhotoPage() {
    Common.ShowPopupIframe(Lang.Global_OpenPhotoPage_Title, '/addphoto.aspx?category=' + document.getElementById('hfCat').value + '&country=' + document.getElementById('hfCountry').value + '&city=' + document.getElementById('hfCity').value, 600, 500);
}
