var offerDialog;
var data;
$(function () {
    var buttons = {};
    buttons[__('Zrusiť')] = function() { 
        $(this).dialog("close");
    };
    var top = 50;
    var left =  $('#center').position().left + 25;
    offerDialog = $('<div class="offerDialog" />').dialog({
        autoOpen: false,
        modal: true,
        width: $('#content').width() - 50,
        position: [left, top],
        title: __('Detail spojenia'),
        buttons: buttons
    });
        
    $('#specialRyanairCalendar').submit(function(){
        var ajaxData = {};
        ajaxData['specialCalendar'] = 1;
        ajaxData['date1'] = $(':radio[name="calendarDate_1"]:checked').val();
        if ($(':radio[name="calendarDate_2"]').is(':checked')) {
            ajaxData['date2'] = $(':radio[name="calendarDate_2"]:checked').val();
        }
        if (!$(':radio[name="calendarDate_1"]').is(':checked')) {
            alert(__('Vyberte dátum pre odlet'));
            return false;
        }
        if ($(':radio[name="calendarDate_2"]').length && !$(':radio[name="calendarDate_2"]').is(':checked')) {
            alert(__('Vyberte dátum pre návrat'));
            return false;
        }
        if ($(':radio[name="calendarDate_2"]').length && ajaxData.date2 < ajaxData.date1) {
            alert(__('Návratový let nemôže mať skorší dátum odletu ako dátum odchádzajúceho letu.'));
            return false;
        }
        ajaxData['iata_from'] = $(':hidden[name="fromIata"]').val();
        ajaxData['iata_to'] = $(':hidden[name="toIata"]').val();
        ajaxData['ADT'] = Number($(':select[name="ADT"]').val()) + Number($(':select[name="YTH"]').val()) + Number($(':select[name="YCD"]').val());
        ajaxData['CHD'] = Number($(':select[name="CHD"]').val());
        ajaxData['INF'] = Number($(':select[name="INF"]').val());
        $.ajax({
            url: Router('ryanair/ajax-get-offer-details'),
            data: ajaxData,
            type: 'post',
            beforeSend: function() {
                ajaxTag = $('<div class="ryanairSectorAjax" style="position:relative;margin:0 auto;width:32px;"></div>');
                ajaxImgTag = $('<div class="ryanairSectorAjaxImg"></div>');
                ajaxImgTag.css({
                    height: 32,
                    width: 32
                });
                ajaxTag.html(ajaxImgTag);
                ajaxTag.fadeTo(0, 0.7);
                offerDialog.html(ajaxTag).dialog('open');
            },
            success: function (res) {
                $('div.ryanairSectorAjax', offerDialog).remove();
                offerDialog.html(res);
                bindDialogFunctions(offerDialog);
                $(':hidden.lowestPrice', offerDialog).each(function(){
                    tag = $('div.sectorCalendars[rel="' + $(this).attr('rel')+'"] div.selected');
                    if ($(this).val() != tag.attr('rel').split('|')[2]) {
                        $('strong', tag).html(Number($(this).val()).toFixed(1) + ' €');
                    }
                });
            }
        })
        return false;
    });
    //bindSpecial();
    specialOfferBind($("table.fareOfferList tr.specialFareOfferRow"));
    loadOtherSpecialOffers(1);
});

function specialOfferBind(tag) {
    tag.mouseenter(function(){
            $(this).addClass('bg1');
            tag = $('<div class="selectOfferButton"/>').slideDown(200);
            tag.append('<input class="submit" type="button" value="Vybrať let"/>');
            $(this).children('td:eq(0)').append(tag);
            tag = $('div.selectOfferButton');
            left = ($(this).width() / 2) - (tag.width() /2);
            tag.css({
                top: $(this).position().top,
                left: left
            });
        }).mouseleave(function(){
            $(this).removeClass('bg1');
            $('div.selectOfferButton').remove();
        }).click(function(){
            $('tr', $(this).parents('table')).removeClass('bg1');
            $(this).addClass('bg1');
            offerDialog.html('');
            if (true || $("div.error", offerDialog).length) {
                getAjaxOffers(offerDialog, $(this).attr('rel'));
            }
            $('div.selectOfferButton').remove();
            offerDialog.dialog('open');
    });
}

function loadOtherSpecialOffers(pos) {
    if (typeof(pos) == 'undefined') {
        pos = 1;
    }
    if ($(':hidden.ryanairOtherIata:eq(' + (pos - 1)+ ')').length) {
        tag = $(':hidden.ryanairOtherIata:eq(' + (pos - 1)+ ')');
        var ajaxData = {};
        ajaxData['dest'] = tag.val();
        ajaxData['pos'] = pos;
        $.ajax({
            url: Router('ryanair/other-special-offer'),
            data: ajaxData,
            success: function(res){
                if (res != 'ERROR') {
                    var table = $('<table />').html(res.replace(/<!DOCTYPE[^>]*>/, ''));
                     specialOfferBind($('.specialFareOfferRow', table));
                     $("table.fareOfferList:eq(0) tr.ryanairOtherIata[rel='" + pos + "']").replaceWith(table.children());
                }
                $("table.fareOfferList:eq(0) tr.ryanairOtherIata[rel='" + pos + "']").remove();
                loadOtherSpecialOffers(pos + 1);
            }
        });
    }
}

function bindSpecial(tag) {
    if (typeof(tag) == 'undefined') { tag = $('body');}
    $('ul.ryanairWeek > li.Fly', tag).mouseover(function(){
        $(this).addClass('hoverFly');
    }).mouseout(function(){
        $(this).removeClass('hoverFly');
    }).click(function(){
        var q = $(this).attr('rel');
        $("div.dayOffer[rel!='" + q + "']", $(this).parents('div.ryanairSector')).hide();
        $("div.dayOffer[rel='" + q + "']", $(this).parents('div.ryanairSector')).show();
        $("li.Fly", $(this).parent()).removeClass('active');
        $(this).addClass('active');
    });
    
    $('a.changeWeek', tag).click(function(){
        var sectorTag = $(this).parents('div.ryanairSector');
        $.ajax({
            url: $(this).attr('href'),
            dataType: 'html',
            beforeSend: function() {
                ajaxTag = $('<div class="ryanairSectorAjax"></div>');
                ajaxImgTag = $('<div class="ryanairSectorAjaxImg"></div>');
                ajaxImgTag.css({
                    height: sectorTag.outerHeight(),
                    width: sectorTag.outerWidth()
                });
                ajaxTag.append(ajaxImgTag);
                ajaxTag.fadeTo(0, 0.9);
                sectorTag.append(ajaxTag);
            },
            success: function(res) {
                $('div.ryanairSectorAjax', sectorTag).remove();
                sectorTag.html('');
                sectorTag.append($(res).children('div:eq(0)'));
                sectorTag.append($(res).children('div.offers'));
                bindSpecial(sectorTag);
            },
            error: function(res) {
                $('div.ryanairSectorAjax', sectorTag).remove();
                alert(res);
            }
        });
        return false;
    });
}

function specialFareOfferDetailsShow(fareId,show,hideOther, content) {
    if ($(':radio.specialFareOfferRadioBtn:checked').length) {
        $(':radio.fareOfferRadioBtn').each(function(){
            $(this).removeAttr('checked');
        });
    }
    if (typeof(content) == 'undefined') {
        content = $('div.ryanairSector:eq(0)').parent();
    }
    if (typeof(hideOther) == 'undefined') {
        hideOther = false;
    }
    if (typeof(show) == 'undefined') {
        show = -1;
    }
    var tagDetails = $('#specialFareOfferDetailsRow_' + fareId + ' .details', content);
    if (tagDetails.css('display') == 'none' && tagDetails.parents('div.ryanairSector').length && (tagDetails.html() == '' || $('div.fareError', tagDetails).length)) {
        $.ajax({
            url: '/ajax/get-ryanair-fare',
            data: 'fareId=' + $('#fareOfferSelect_' + fareId).val(),
            beforeSend: function() {
                tagDetails.html('<div class="fareLoading">' + __('Načítavam detaily letu ...') + '</div>');
            },
            success: function(res) {
                tagDetails.html(res);
            },
            error: function() {
                tagDetails.html('<div class="fareError">' + __('Nepodarilo sa načítať detaily letu.') + '</div>');
            }
        });
    }
    if (show == 1) {
        tagDetails.slideDown(200);
    } else if (show == 0) {
        tagDetails.slideUp(200);
    } else {
        tagDetails.slideToggle(100);
    }
    if (hideOther) {
        //uzavrieme vsetky ostatne detaily
        $('table.fareOfferList tr.details', content).each(function (idx,el) {
            var eljq = $(el);
            if (!eljq.is('#specialFareOfferDetailsRow_' + fareId)) {
                $('div.details',eljq).slideUp(200);
            }
        });
    }
}

function bindDialogFunctions(dialog) {
    $('form[name="specialOfferSelect"]').submit(function(){
        var fare1 = $(':radio[name="flightId_1"]:checked');
        var fare2 = $(':radio[name="flightId_2"]:checked');
        var allowForm = true;
        if (fare1.length != 1) {
            alert(__('Nevybrali ste si odchádzajúci let.'));
            allowForm = false;
        }
        regexp = new RegExp('~[A-Z]{3}~([0-9]{2}/\\d{2}/\\d{4} \\d{2}:\\d{2})+');
        fareDate1 = new Date(Date.parse(regexp.exec(fare1.val())[1]));
        if ($(':radio[name="flightId_2"]').length) {
            if (fare2.length != 1) {
                alert(__('Nevybrali ste si návratový let.'));
                allowForm = false;
            }
            regexp = new RegExp('~[A-Z]{3}~([0-9]{2}/\\d{2}/\\d{4} \\d{2}:\\d{2})$');
            fareDate2 = new Date(Date.parse(regexp.exec(fare2.val())[1]));
            if (fareDate2 <= fareDate1) {
                alert(__('Návratový let nemôže mať skorší dátum a čas odletu ako dátum a čas odchádzajúceho letu.'));
                allowForm = false;
            }
        }
        if (allowForm) {
            $('input[name="flightId_1"]').attr('value', fare1.val());    
            if (fare2.length) {
                $('input[name="flightId_2"]').attr('value', fare2.val());    
            }
            offerDialog.dialog('destroy');
            showProgressSpecial();
            return true;
        } else {
            return false;    
        }
    });
    $(':radio', dialog).change(function(){
        if ($(this).is(':checked')) {
            var baseFare = 0;
            var taxFare = 0;
            $("span[class^='baseAmount']", dialog).html('');
            $("span[class^='taxAmount']", dialog).html('');
            $(':radio:checked', dialog).each(function(){
                $(':input.baseFare', $(this).parents('div.offerTab')).each(function(){
                    var val = $(this).val();
                    var type = $(this).attr('id');
                    var amount = Number(val.split('|')[1]);
                    baseFare += Number(Math.round(amount * val.split('|')[0] * 100) / 100);
                    var sum = amount + Number($('span.baseAmount_' + type, dialog).text());
                    $('span.baseAmount_' + type, dialog).html(sum.toFixed(2));
                });
                $(':input.taxFare', $(this).parents('div.offerTab')).each(function(){
                    var val = $(this).val();
                    var type = $(this).attr('id');
                    var amount = Number(Math.round(val.split('|')[1] * val.split('|')[0] * 100) / 100);
                    taxFare += amount;
                    var sum = amount + Number($('span.taxAmount_' + type, dialog).text());
                    $('span.taxAmount_' + type, dialog).html(sum.toFixed(2));
                });
            })
            var sum = baseFare + taxFare;
            $('span.offerTotalPrice', dialog).html(sum.toFixed(2));
        }
    });
    $(':radio', dialog).change();
    $('div.fareOffer', dialog).mouseenter(function(){
        $(this).addClass('bg2');
    }).mouseleave(function(){
        $(this).removeClass('bg2');
    }).click(function(){
        $(':radio', $(this)).attr('checked', 'checked').change();
        $('div.fareOffer', $(this).parent()).removeClass('bg3');
        $(this).addClass('bg3');
    });
    calendar = $('div.dialogCalendar', dialog);
    if (calendar.length) {
        $('div.daySelect, div.daySelectMin', calendar).bind('click',bindCalendar);
    }
}

function bindCalendar(){
    $('div.daySelect, div.daySelectMin', $(this).parents('div.sectorCalendars')).removeClass('selected');
    $(this).addClass('selected');
    $(this).children(':radio').attr('checked', 'checked');
    tmp = $(':radio:checked', $('div.sectorCalendars'));
    getAjaxOffers(offerDialog, 0, tmp[0].value, typeof(tmp[1]) != 'undefined' ? tmp[1].value:null);
}

function getAjaxOffers(dialog, showCalendar, date1, date2) {
    var ajaxData = {};
    if ( typeof(date1) == 'undefined' ) {
        ajaxData['calendar'] = showCalendar.split('|')[0];
        ajaxData['position'] = showCalendar.split('|')[1];
   } else {
      if ( typeof(date2) == 'undefined' ) {
          ajaxData['date1'] = date1;
      } else {
          ajaxData['date1'] = date1;
          ajaxData['date2'] = date2;
      }
   }
   $.ajax({
        url: '/ryanair/ajax-get-offer-details',
        data: ajaxData,
        type: 'post',
        beforeSend: function() {
            ajaxTag = $('<div class="ryanairSectorAjax"></div>');
            ajaxTag.css({
                top: 0,
                left: 0
            });                
            ajaxImgTag = $('<div class="ryanairSectorAjaxImg"></div>');
            ajaxImgTag.css({
                height: dialog.outerHeight(),
                width: dialog.outerWidth()
            });
            ajaxTag.append(ajaxImgTag);
            ajaxTag.fadeTo(0, 0.7);
            dialog.append(ajaxTag);
        },
        success: function (res) {
            if (res =='SessionTimeOut') {
                window.location(Router('/'));    
            }
            $('div.ryanairSectorAjax').remove();
            target = $('div.offerDetails', dialog);
            if (target.length && showCalendar != 1) {
                $('div.offerDetails', dialog).replaceWith(res);
            } else {
                dialog.html(res);
            }
            bindDialogFunctions(dialog);
        },
        error: function () {
            dialog.html('<div class="error">' + __('JS_Offer_Dialog_Error') + '</div>');
        }
    });
}

