/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
var selectURL = './rservice2';
var minFDate = null;
var bgSiteFlag = false;
var bColor;

jQuery(function(jQuery){// Русификация datapicker

 jQuery.datepicker.regional['ru'] = {
  closeText: 'Закрыть',
  prevText: '<Предыдущий',
  nextText: 'Следующий>',
  currentText: 'Сегодня',
  monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
  'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
  monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
  'Июл','Авг','Сен','Окт','Ноя','Дек'],
  dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
  dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
  dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
  dateFormat: 'dd.mm.yy', firstDay: 1,
  isRTL: false};
 jQuery.datepicker.setDefaults(jQuery.datepicker.regional['ru']);
});

$(function(){

if(!isZeus){
$("#dateFrom").datepicker({
         dateFormat: 'dd.mm.yy',
         minDate:  0,
         maxDate: +100,
         constrainInput: true,
         //beforeShow: function(){secondDp = false;},
         onSelect: function(dateText, inst) {
             minFDate = $(this).datepicker('getDate');
             $( "#dateTo" ).datepicker( "option", "minDate", minFDate );
            //$('#dateTo').datepicker('setDate', minFDate);
            $('#dateTo').val('');
            $('#loadedTables').hide();
            }
});
$('#dateFrom').datepicker( "setDate" , new Date() );


$("#dateTo").datepicker({
         dateFormat: 'dd.mm.yy',
         minDate:  0,
         maxDate: +100,
         constrainInput: true,
         beforeShow: function(){/*
             secondDp = true;
             var df = $('#dateFrom').val();
             if(df.length>0){
                 //$( "#dateTo" ).datepicker( "option", "minDate", minFDate );
             }*/
         },
         onSelect: function(dateText, inst) {
            //$('#dateTo').datepicker('setDate', dateText);
            //$('#toDate').val('');
            $('#loadedTables').hide();
            }
});
$('#dateTo').datepicker( "setDate" , new Date() );
//$('#dateTo').datepicker( "option" ,'minDate', new Date() );
}

$.ajaxSetup({
    url: selectURL,
    type: "GET",
    timeout: 40000
});
bColor = '#009DDD';
if(isZeus){
    bColor = '#B27886';
}

if($('div.menu').size()>0){
    bColor   = $('div.menu').css("background-color");
    bgSiteFlag = true;
    setFormColors(bColor);
}

$('#searchButton').click(getTables);
if(!isZeus){
$('#calF').click(function(){$("#dateFrom").datepicker('show');});
$('#calT').click(function(){$("#dateTo").datepicker('show');});

$('#dfFrom, #dfTo').height(isZeus?300:($(window).height()-$('#content').height()-140));
$('#outCity').change(getCountries);
}
$.preloadImages("img/ajax-loaderS.gif");


});

function updateOutCities(){
  $('#outCity').loadSelect(outCityArray);
}
function updateCountries(){
  $('#country').loadSelect(countryArray);
}
function getCountries(){
blockForm();
var params = 'task=GetFlights&chParam=getCountryes&noutCity='+$('#outCity').val();
$.ajax({
      data: params, //
      dataType: "script",
      success: function(response){unblockForm()},//убрать здесь анимацию
      error: function(xhr,stat,e){
          $('#errorDiv').html("Повторите попытку позже.");
          unblockForm();
          // delete wait animation
      }
    });
}
function blockForm(){
  $('#loadedTables').hide();
  $('#errorDiv').empty();
  $('#dfTo').empty();
  $('#dfFrom').empty();
  $('#content').block({
message: '<div>Загрузка данных<br/><br/><img src="img/ajax-loaderS.gif"/></div>',
fadeIn:50,
fadeOut:50,
css: {border: '4px solid '+bColor,
       height: '70px',
       width:  '180px',
       backgroundColor: '#fff',
       fontSize: '12px',
       color: "#000",
       padding: "10px"},
overlayCSS:  {
    backgroundColor: '#fff',
    opacity:         0.6
    }

  });
}

function blockTables(){
  $('#loadedTables').block({
message: '<div>Загрузка данных<br/><br/><img src="img/ajax-loaderS.gif"/></div>',
fadeIn:50,
fadeOut:50,
css: {border: '4px solid '+bColor,
       height: '70px',
       width:  '180px',
       backgroundColor: '#fff',
       fontSize: '12px',
       color: "#000",
       padding: "10px"},
overlayCSS:  {
    backgroundColor: '#fff',
    opacity:         0.6
    }

  });
}

function unblockForm(){
    $("#content").unblock();
}

function getTables(){//Вернет все рейсы туда и обратные рейсы для всех рейсов
    if(checkForm()){
        blockForm();
        var params = 'task=GetPlFlTables&'+$('#otForm').formSerialize();
        //alert(params);
        $.ajax({
            data:params,
            dataType:'script',
            success:function(response){
                unblockForm();
                if(response.indexOf('Exception')!=-1){
                    $('#errorDiv').html("<span style='color:#599FF0'>Ничего не найдено.</span>");
                }
                //$('#dfFrom').html(response);
                //$('#loadedTables').html(response);
            },
            error:function(){
                unblockForm();
                $('#errorDiv').html("Повторите попытку позже.");
                return false;}
        });
    }
}

function getReturnTables(rid){// Вернет обратные рейсы
    if(checkForm()){
         var params = 'reysId='+rid+'&task=GetPlFlRetTables&'+ $('#otForm').formSerialize();
         alert(params);
    }
}
function checkForm(){
    if($('#dateFrom').val()==''){
        $('#errorDiv').html('Выберите дату вылета туда!');
        $('#dateFrom').focus();
        return false;
    }
    if($('#dateTo').val()==''){
        $('#errorDiv').html('Выберите дату вылета обратно!');
        $('#dateTo').focus();
        return false;
    }
    if(!is_int_my($('#dcFrom').val())||$('#dcFrom').val()<0){
        $('#dcFrom').val('0');
    }
    if(!is_int_my($('#dcTo').val())||$('#dcFrom').val()<0){
        $('#dcTo').val('0');
    }
    return true;
}
//заполняет таблицу, левую или правую (isFlyTo)
function updateFlightsTo(flArray, isFlyTo, selectorString){// второй параметр флаг для парса таблицы, третий , селектор, куда надо добавить таблицу
    if(flArray.length>0){
        var clName = 'lblue';
        if(bgSiteFlag){
            clName = 'dat';
        }
    var flTable="<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\" id=\"restableFLTO\">\n";
        flTable+="<tr><th>Дата вылета</th><th>Время вылета</th><th>Время прибытия</th><th>Время в пути</th><th>Рейс</th><th>Аэропорт<br>вылета</th><th>Аэропорт<br>прилета</th><th>Эконом</th><th>Бизнес</th></tr>\n";
    for(var i=0; i<flArray.length; i++){
        flTable+="<tr"+((i)%2==1?(" class='fl_to_tr "+clName+"'"):" class='fl_to_tr'")+" rid='"+i+"'>\n";
        flTable+="   <td>"+flArray[i].vilDate+"</td>\n";
        flTable+="   <td>"+flArray[i].flyTime+"</td>\n";
        flTable+="   <td>"+flArray[i].arriveTime+"</td>\n";
        flTable+="   <td>"+flArray[i].timeInWay+"</td>\n";
        flTable+="   <td>"+flArray[i].reysName+"<br>"+flArray[i].aviacName+"</td>\n";
        flTable+="   <td>"+flArray[i].fromCityName+"<br>"+flArray[i].fromAPCode+"</td>\n";
        flTable+="   <td>"+flArray[i].toCityName+"<br>"+flArray[i].toAPCode+"</td>\n";
        var stops = getStops(i, isFlyTo);
        if(stops.length==0){//нету никаких стопов
            flTable+="   <td"+(flArray[i].economColor!=""?(" style='background-color:"+flArray[i].economColor+"'"):'')+">"+flArray[i].econom+"</td>\n";
            //flTable+="   <td"+(flArray[i].premiumColor!=""?(" style='background-color:"+flArray[i].premiumColor+"'"):'')+">"+flArray[i].premium+"</td>\n";
            flTable+="   <td"+(flArray[i].businessColor!=""?(" style='background-color:"+flArray[i].businessColor+"'"):'')+">"+flArray[i].business+"</td>\n";
        }else if(isFullStoped(stops)){//Все на стопе
            flTable+="   <td style='background-color:#FF3333; color:#FFFFFF; font-weight:bold;'>STOP</td>\n";
            //flTable+="   <td style='background-color:#FF3333; color:#FFFFFF; font-weight:bold;'>STOP</td>\n";
            flTable+="   <td style='background-color:#FF3333; color:#FFFFFF; font-weight:bold;'>STOP</td>\n";
        }else{
            var economS   = $.inArray("Y", stops)!=-1;
            //var premiumS  = $.inArray("R", stops)!=-1;
            var businessS = $.inArray("C", stops)!=-1;

            var stopStyle = " style='background-color:#FF3333; color:#FFFFFF; font-weight:bold;' "

            var ecStyle   = economS?stopStyle:(flArray[i].economColor!=""?(" style='background-color:"+flArray[i].economColor+"'"):'');
            //var prStyle   = premiumS?stopStyle:(flArray[i].premiumColor!=""?(" style='background-color:"+flArray[i].premiumColor+"'"):'');
            var buStyle   = businessS?stopStyle:(flArray[i].businessColor!=""?(" style='background-color:"+flArray[i].businessColor+"'"):'');

            flTable+="   <td"+ecStyle+">"+(economS?"STOP":flArray[i].econom)+"</td>\n";
            //flTable+="   <td"+prStyle+">"+(premiumS?"STOP":flArray[i].premium)+"</td>\n";
            flTable+="   <td"+buStyle+">"+(businessS?"STOP":flArray[i].business)+"</td>\n";
        }
        flTable+="</tr>\n";
    }
    flTable+="</table>";
    $(selectorString).html(flTable);
    $('#restableFLTO th, #restableFLRET th').css('background-color', bColor);

    if(isFlyTo){// Означает, что левая таблица
        $('#dfTo').empty();
        rows = $('#restableFLTO  tr.fl_to_tr');
        rows.hover(function(){$(this).addClass("tmOver");
            }, function(){$(this).removeClass("tmOver");
            }).click(function(){
                $('tr.current').removeClass("current");
                $(this).addClass("current");
                getReturnTables( $(this).attr('rid') );
            });
        $('#loadedTables').show();
    }else{
        $('#dfTo table tr').css('cursor', 'default');
        }
    }else{
        $(selectorString).empty();//html('Для выбранного рейса в данную дату велета обратно нету обратных !');
        }
}

function updateFlightsObrDefault(flArray, selectorString){// второй параметр флаг для парса таблицы, третий , селектор, куда надо добавить таблицу
    if(flArray.length>0){
        var clName = 'lblue';
        if(bgSiteFlag){
            clName = 'dat';
        }
    var flTable="<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\" id=\"restableFLTO\">\n";
        flTable+="<tr><th>Дата вылета</th><th>Время вылета</th><th>Время прибытия</th><th>Время в пути</th><th>Рейс</th><th>Аэропорт<br>вылета</th><th>Аэропорт<br>прилета</th><th>Эконом</th><th>Бизнес</th></tr>\n";
    for(var i=0; i<flArray.length; i++){
        flTable+="<tr"+((i)%2==1?(" class='fl_to_tr "+clName+"'"):" class='fl_to_tr'")+" rid='"+i+"'>\n";
        flTable+="   <td>"+flArray[i].vilDate+"</td>\n";
        flTable+="   <td>"+flArray[i].flyTime+"</td>\n";
        flTable+="   <td>"+flArray[i].arriveTime+"</td>\n";
        flTable+="   <td>"+flArray[i].timeInWay+"</td>\n";
        flTable+="   <td>"+flArray[i].reysName+"<br>"+flArray[i].aviacName+"</td>\n";
        flTable+="   <td>"+flArray[i].fromCityName+"<br>"+flArray[i].fromAPCode+"</td>\n";
        flTable+="   <td>"+flArray[i].toCityName+"<br>"+flArray[i].toAPCode+"</td>\n";
        var stops =[] ;
        for(var k=0; k<obrStopArray.length;k++){
            if(i==obrStopArray[k].reysIndex){
                for(var p=0; p<obrStopArray[k].reysType.length;p++){
                    stops.push(obrStopArray[k].reysType[p]);
                }
            }
        }
        if(stops.length==0){//нету никаких стопов
            flTable+="   <td"+(flArray[i].economColor!=""?(" style='background-color:"+flArray[i].economColor+"'"):'')+">"+flArray[i].econom+"</td>\n";
            //flTable+="   <td"+(flArray[i].premiumColor!=""?(" style='background-color:"+flArray[i].premiumColor+"'"):'')+">"+flArray[i].premium+"</td>\n";
            flTable+="   <td"+(flArray[i].businessColor!=""?(" style='background-color:"+flArray[i].businessColor+"'"):'')+">"+flArray[i].business+"</td>\n";
        }else if(isFullStoped(stops)){//Все на стопе
            flTable+="   <td style='background-color:#FF3333; color:#FFFFFF; font-weight:bold;'>STOP</td>\n";
            //flTable+="   <td style='background-color:#FF3333; color:#FFFFFF; font-weight:bold;'>STOP</td>\n";
            flTable+="   <td style='background-color:#FF3333; color:#FFFFFF; font-weight:bold;'>STOP</td>\n";
        }else{
            var economS   = $.inArray("Y", stops)!=-1;
            //var premiumS  = $.inArray("R", stops)!=-1;
            var businessS = $.inArray("C", stops)!=-1;

            var stopStyle = " style='background-color:#FF3333; color:#FFFFFF; font-weight:bold;' "

            var ecStyle   = economS?stopStyle:(flArray[i].economColor!=""?(" style='background-color:"+flArray[i].economColor+"'"):'');
            //var prStyle   = premiumS?stopStyle:(flArray[i].premiumColor!=""?(" style='background-color:"+flArray[i].premiumColor+"'"):'');
            var buStyle   = businessS?stopStyle:(flArray[i].businessColor!=""?(" style='background-color:"+flArray[i].businessColor+"'"):'');

            flTable+="   <td"+ecStyle+">"+(economS?"STOP":flArray[i].econom)+"</td>\n";
            //flTable+="   <td"+prStyle+">"+(premiumS?"STOP":flArray[i].premium)+"</td>\n";
            flTable+="   <td"+buStyle+">"+(businessS?"STOP":flArray[i].business)+"</td>\n";
        }
        flTable+="</tr>\n";
    }
    flTable+="</table>";
    $(selectorString).html(flTable);
    $('#restableFLTO th, #restableFLRET th').css('background-color', bColor);
    $('#dfTo table tr').css('cursor', 'default');
        
    }else{
        $(selectorString).empty();//html('Для выбранного рейса в данную дату велета обратно нету обратных !');
        }
}

function getReturnTables(reysToId){
    $('#dfTo').empty();
    //$('#rdSpan').html('для рейса '+flyToArray[reysToId].reysName+","+flyToArray[reysToId].aviacName+" дата "+flyToArray[reysToId].vilDate+" "+flyToArray[reysToId].flyTime);
    blockTables();
    var jointRevReyss = [];
    jointStopsAr = [];// Вместе с обратным рейсом здесь сохраняем соответственно стоп обратного рейса
    for(var i=0; i<joinArr.length;i++){
        if(joinArr[i].flyFrom==reysToId){
            jointRevReyss.push(retFlyArray[joinArr[i].flyTo]);
            jointStopsAr.push(joinArr[i].reysType);// Сохраняем оригинальный индекс, для дальнейшего использования в стопе
        }
    }
    updateFlightsTo(jointRevReyss, false, '#dfTo');
    $('#loadedTables').unblock();
}

function getStops(i, isFlyTo){
    var stopi = [];
    if(isFlyTo){// Stop - ы для первой таблицы
        for(var k=0; k<tudaStopArray.length;k++){
            if(i==tudaStopArray[k].reysIndex){
                for(var p=0; p<tudaStopArray[k].reysType.length;p++){
                    stopi.push(tudaStopArray[k].reysType[p]);
                }
            }
        }
    }else{//Стопы для таблицы обратных рейсов
        /*for(var k=0; k<obrStopArray.length;k++){
            if(jointStopsIndex[i]==obrStopArray[k].reysIndex){
                for(var p=0; p<obrStopArray[k].reysType.length;p++){
                    stopi.push(obrStopArray[k].reysType[p]);
                }
            }
        }*/
        stopi = jointStopsAr[i];

    }
    return stopi;
}

function isFullStoped(sarr){
    for(var i=0; i<sarr.length; i++){
        if(sarr[i].indexOf("STOP")!=-1)
            return true;
    }
    return false;
}

function setFormColors(bColor){
    $('#content fieldset').css('border-color', bColor);
    $('#content legend').css("border-color", bColor);
    $('#content legend').css('background-color', bColor);
    $('#outCity, #country, #dateFrom, #dcFrom, #dateTo, #dcTo').css("border-color", bColor);
    $('#searchButton').css('background-color', bColor);
    $('h1.attention').css('color', bColor);
    $('#ldft th div').css('background-color', bColor).css('border-color', bColor);
    $('#dfFrom, #dfTo').css("border-color", bColor);

}

$.preloadImages = function()
{
 for(var i = 0; i<arguments.length; i++)
 {
  $("<img>").attr("src", arguments[i]);
 }
};

// Использование
function is_int_my(input){
    return !isNaN(input)&&parseInt(input)==input;
  }
$.preloadImages("img/ajax-loaderS.gif");

(function($) { // adding comands, initialzation onload
   $.fn.emptySelect = function() { // освобождаем список
     return this.each(function(){
       if (this.tagName=='SELECT'){this.options.length = 0;$(this).empty();}
     });
   }

   $.fn.loadSelect = function(optionsDataArray, randVal, mkurortId) { // добавляем списку объекты
     return this.emptySelect().each(function(){
       if (this.tagName=='SELECT') {
         var selectElement = this;
         if(randVal){// если установлен 2 параметр, то инициализируеться список со значением любой
           var option = new Option("Любой", "rand");
           if ($.browser.msie) {
             selectElement.add(option);
           }
           else {
             selectElement.add(option,null);
           }
         }
         if(isNaN(mkurortId)){
         $.each(optionsDataArray,function(index,optionData){
           var option = new Option(optionData.option,
                                   optionData.val);
           if ($.browser.msie) {
             selectElement.add(option);
           }
           else {
             selectElement.add(option,null);
           }
         });}else{// фильтруем отели по курорту a
         $.each(optionsDataArray,function(index,optionData){
           if(optionData.hotelCity==mkurortId){
           var option = new Option(optionData.option,
                                   optionData.val);
           if ($.browser.msie) {
             selectElement.add(option);
           }
           else {
             selectElement.add(option,null);
           }
           }
         });

         }
       }
     });
   }

 })(jQuery);

