﻿/* Copyright billetsavion.be 2011, All Rights Reserved*/  

$("#TripTo, #TripFrom").autocomplete("/js/search_iata.php", {
    minChars: 2,
    delay: 0,
    matchContains: true,
    selectFirst: true,
    width: 250,
    max: 10,
    scroll: false,
    formatResult: function(data, value) {
        return data[1];
    }
});

var agences = new Array();
agences[1] = 'Opodo';
agences[2] = 'GoVoyages';
agences[3] = 'Ebookers';
agences[4] = 'Bravofly';
agences[5] = 'XL';
agences[6] = 'Edreams';
agences[7] = 'VoyageSNCF';

var LowAgencesCost = new Array();
LowAgencesCost[1] = 0;
LowAgencesCost[2] = 0;
LowAgencesCost[3] = 0;
LowAgencesCost[4] = 0;
LowAgencesCost[5] = 0;
LowAgencesCost[6] = 0;
LowAgencesCost[7] = 0;

var numTicketsOnPage = 25;
var page = 0;
var ticket = new Array();
var to = Array();
var from = Array();
var uniqCarrier = Array();
var costs = Array();

$("#airsearch").submit(function() {
    if ($("#TripFrom").val() != '' && $("#TripTo").val() != '') {
        if ($("#TripFrom").val().indexOf("[") == -1 || $("#TripTo").val().indexOf("[") == -1) {
            alert("Merci de préciser votre ville de départ et d'arrivée");
            return false;
        }
        else {
			$("#head_list").hide();
			$("#submitSearch").show();
			$("#cmps").hide();
			$("#cmps").html('');
			$("#page-content").show();
			$("#block_filters").hide();
			$("#block_block_list").hide();
			$("#cdescription").hide();
			$("#submitSearch").attr("disabled","disabled");
			$("#avec").attr("disabled","disabled");
			$("#direct").attr("disabled","disabled");
			$("#filterComp").html('');
			$("#reshref").html('');
			$("#reshref1").html('');
            $("#ticketsList").html('');
			$('#slider-range').slider('option', 'max', 0);
			$('#slider-range').slider('option', 'min', 500);
			$('#slider-range').slider('option', 'values', [0,500]);
			$("#amount1").html('0,00&euro;');
			$("#amount2").html('500,00&euro;');
			$("#numres1").html('0');
			$("#numres2").html('0');
			$("#resall").html('0');
			$("#time_aller").hide();
			$("#time_retour").hide();
			$("#t_aller_0").attr("checked", "checked");
			$("#t_aller_1").attr("checked", "checked");
			$("#t_aller_2").attr("checked", "checked");
			$("#t_aller_3").attr("checked", "checked");
			$("#t_retour_0").attr("checked", "checked");
			$("#t_retour_1").attr("checked", "checked");
			$("#t_retour_2").attr("checked", "checked");
			$("#t_retour_3").attr("checked", "checked");
            $("#filterAgences").html('');
            page = 0;
            ticket = Array();
            ticket_a = Array();
            to = Array();
            to_a = Array();
            from = Array();
            from_a = Array();
            uniqCarrier = Array();
            numanswer = 0;
            LowAgencesCost[1] = 0;
            LowAgencesCost[2] = 0;
            LowAgencesCost[3] = 0;
            LowAgencesCost[4] = 0;
            LowAgencesCost[5] = 0;
            LowAgencesCost[6] = 0;
            LowAgencesCost[7] = 0;
			
			$("#status").html('<img src="/i/site/loader.gif" alt="" />&nbsp;recherche en cours, veuillez patienter...');
			$("#ticketsList").html('');

            var nowDate = new Date();
            nowDate = nowDate.getTime();


            $.post("tickets.ajax.php?num=1&time=" + nowDate, $("#airsearch").serialize() + '&dd=' + nowDate,
                function(data) {
                    $("#submitSearch").removeAttr("disabled");
                    check_answer(1);
                }, "script");
            $.post("tickets.ajax.php?num=2&time=" + nowDate, $("#airsearch").serialize() + '&dd=' + nowDate,
                function(data) {
                    $("#submitSearch").removeAttr("disabled");
                    check_answer(2);
                }, "script");
            $.post("tickets.ajax.php?num=3&time=" + nowDate, $("#airsearch").serialize() + '&dd=' + nowDate,
                function(data) {
                    $("#submitSearch").removeAttr("disabled");
                    check_answer(3);
                }, "script");
            $.post("tickets.ajax.php?num=4&time=" + nowDate, $("#airsearch").serialize() + '&dd=' + nowDate,
                function(data) {
                    $("#submitSearch").removeAttr("disabled");
                    check_answer(4);
                }, "script");
            $.post("tickets.ajax.php?num=5&time=" + nowDate, $("#airsearch").serialize() + '&dd=' + nowDate,
                function(data) {
                    $("#submitSearch").removeAttr("disabled");
                    check_answer(5);
                }, "script");
            $.post("tickets.ajax.php?num=6&time=" + nowDate, $("#airsearch").serialize() + '&dd=' + nowDate,
                function(data) {
                    $("#submitSearch").removeAttr("disabled");
                    check_answer(6);
                }, "script");

        }
    }
    else
        alert("Veuillez saisir votre ville de départ et d'arrivée");
    return false;
});

// blockList

var ticket = Array();
var to = Array();
var from = Array();
var uniqCarrier = Array();
var uniqCarrierCost = Array();

var ticket_a = Array();
var to_a = Array();
var from_a = Array();
var uniqCarrier_a = Array();

var numanswer = 0;
$("#submitSearch").removeAttr("disabled");
function check_answer(data) {
    if (ticket_a[data]) {
        LowAgencesCost[data] = ticket_a[data][0]['cost'];

        for (i = 0; i < ticket_a[data].length; i++) {
            ticket_a[data][i]['agence'] = data;

            ticket.push(ticket_a[data][i]);
        }

        for (i = 0; i < to_a[data].length; i++)
            to.push(to_a[data][i]);

        for (i = 0; i < from_a[data].length; i++)
            from.push(from_a[data][i]);

        for (i = 0; i < uniqCarrier_a[data].length; i++) {
            if (!in_array(uniqCarrier_a[data][i], uniqCarrier))
                uniqCarrier.push(uniqCarrier_a[data][i]);
        }
        init();
    }

    if (++numanswer == 6) {
		$("#status").html('');
		$("#page-content").hide();
		$("#avec").removeAttr("disabled");
		$("#direct").removeAttr("disabled");
        if (ticket.length == 0)
            init();
    }
    else {
        var texttohtml = '';
        var use_car = Array();
        var j = 0;
        for (var i = 0; j < 6 && i < ticket.length; ++i) {
            if (!in_array(ticket[i]['carrier'], use_car)) {
                use_car.push(ticket[i]['carrier']);
                ++j;

               texttohtml += '<li onclick="yaCounter12692755.reachGoal(\''+ticket[i]['partner']+'\')"><span onclick="window.open (\''+ticket[i]['href']+'\')"><img src="/i/carrier/'+ticket[i]['carrier']+'.png" alt="'+ticket[i]['partner']+'" />&raquo;'+ticket[i]['cost']+ticket[j]['currency']+'</span></li>'; 
            }

            $("#cmps").html(texttohtml);
        }
    }
}


function in_array(text, arr) {
    for (j = 0; j < arr.length; j++) {
        if (arr[j] == text)
            return true;
    }

    return false;
}

function array_flip(trans) {    // Exchanges all keys with their associated values in an array
    //
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)

    var key, tmp_ar = {};

    for (key in trans) {
        tmp_ar[trans[key]] = key;
    }

    return tmp_ar;
}

function sCost(i, ii) {
    if (parseFloat(i['cost']) > parseFloat(ii['cost'])) {
        return 1;
    }
    else if (parseFloat(i['cost']) < parseFloat(ii['cost'])) {
        return -1;
    }
    else
        return 0;
}

function init() {
    if (ticket.length > 0) {
        var uniqCarrierNew = Array();

        for (var i = 0; i < uniqCarrier.length; i++) {
            var A = uniqCarrier[i].split(' ');
            var qv = true;
            for (var j = 0; j < uniqCarrierNew.length; j++) {
                var B = uniqCarrierNew[j].split(' ');
                var count = A.length < B.length ? A.length : B.length;
                var diff = 0;
                for (var t = 0; t < A.length; t++) {
                    for (var y = 0; y < B.length; y++) {
                        if (A[t].toLowerCase() == B[y].toLowerCase())
                            diff++;
                    }
                }

                if (count <= diff) {
                    qv = false;
                    if (A.length < B.length) {
                        for (var b = 0; b < ticket.length; b++) {
                            if (to[b]['carrier'].toLowerCase() == uniqCarrierNew[j].toLowerCase())
                                to[b]['carrier'] = uniqCarrier[i];
                            if (from[b]['carrier'].toLowerCase() == uniqCarrierNew[j].toLowerCase())
                                from[b]['carrier'] = uniqCarrier[i];
                        }
                        uniqCarrierNew[j] = uniqCarrier[i];
                    }
                    else {
                        for (var b = 0; b < ticket.length; b++) {
                            if (to[b]['carrier'].toLowerCase() == uniqCarrier[i].toLowerCase())
                                to[b]['carrier'] = uniqCarrierNew[j];
                            if (from[b]['carrier'].toLowerCase() == uniqCarrier[i].toLowerCase())
                                from[b]['carrier'] = uniqCarrierNew[j];
                        }
                        uniqCarrier[i] = uniqCarrierNew[j];
                    }
                    break;
                }
            }

            if (qv)
                uniqCarrierNew.push(uniqCarrier[i]);
        }
        uniqCarrier = uniqCarrierNew.slice();
        flipCarrier = array_flip(uniqCarrier);

        ticket.sort(sCost);
        to.sort(sCost);
        from.sort(sCost);

        uniqCarrier.sort();
        $("#filterComp").html('');
        for (i = 0; i < uniqCarrier.length; i++) {
            var low_cost = 0;

            for (var g = 0; g < ticket.length; ++g) {
                if (to[g]['carrier'] == uniqCarrier[i] || from[g]['carrier'] == uniqCarrier[i]) {
                    low_cost = ticket[g]['cost'];
                    break;
                }
            }

        $("#filterComp").html($("#filterComp").html() + '<tr><td width="10%"><input type="checkbox" id="filter' + i + '" checked="checked" onclick="nextPage(0)" /></td><td width="60%"><label for="filter' + i + '">' + uniqCarrier[i] + '</td><td width="30%" align="right">' + low_cost + '&euro;</label></td></tr>');
        }

        $("#filterAgences").html("");
        for (var i = 1; i < agences.length; ++i) {
            if (LowAgencesCost[i] != 0)
                $("#filterAgences").html($("#filterAgences").html() + '<tr><td width="10%"><input type="checkbox" id="filter_agences' + i + '" checked="checked" onclick="nextPage(0)" /></td><td width="60%"><label for="filter_agences' + i + '">' + agences[i] + '</td><td width="30%" align="right">' + LowAgencesCost[i] + '&euro;</label></td></tr>');
        }

        minVal = Math.ceil(ticket[0]['cost']) - 1;
        maxVal = Math.ceil(ticket[0]['cost']) + 1;

        for (i = 1; i < ticket.length; i++) {
            if (ticket[i]['cost'] > maxVal)
                maxVal = Math.ceil(ticket[i]['cost']) + 1;
            if (ticket[i]['cost'] < minVal)
                minVal = Math.ceil(ticket[i]['cost']) - 1;
        }

		$('#slider-range').slider('option', 'max', maxVal);
		$('#slider-range').slider('option', 'min', minVal);
		$('#slider-range').slider('option', 'values', [minVal,maxVal]);
		$("#amount1").html(minVal+',00&euro;');
		$("#amount2").html(maxVal+',00&euro;');
		$("#time_aller").show();
		if (from[0]['in'] != '')
		$("#time_retour").show();
		$("#submitSearch").hide();
		$("#cmps").show();
		$("#page-content").hide();
		$("#block_filters").show();
		$("#block_list").show();
		$("#head_list").show();
		$("#cdescription").show();

        nextPage(0);
    }
    else
			$("#status").html('<center>La recherche s\'est bien terminée. Aucun résultat trouvé pour vos critères.</center><br /><center>Modifiez vos critères de recherche</center><br /><br /><span><center>Publicité:</center></span><br /><center><img src="/i/site/ads/noresults_ads.gif" alt="" onclick="window.open (\'/go.php?partner=opodo\')" style="cursor:pointer" /></center>');
}

function nextPage(i) {
    page = i;
    allTickets = 0;
    text = '';
    num = 0;

    for (i = 0; i < ticket.length; i++) {
        if (!$("#filter_agences" + ticket[i]['agence']).attr("checked"))
            continue;

        if ((!$("#avec").attr("checked")) && (to[i]['stopOver'] != 0) && (to[i]['stopOver'] != ''))
            continue;
        if ((!$("#avec").attr("checked")) && (from[i]['stopOver'] != 0) && (from[i]['stopOver'] != ''))
            continue;
        if ((!$("#direct").attr("checked")) && (to[i]['stopOver'] == 0) && (to[i]['stopOver'] != ''))
            continue;
        if ((!$("#direct").attr("checked")) && (from[i]['stopOver'] == 0) && (from[i]['stopOver'] != ''))
            continue;

        if ((!$("#filter" + flipCarrier[to[i]['carrier']]).attr("checked")) && (to[i]['carrier'] != ''))
            continue;
        if ((!$("#filter" + flipCarrier[from[i]['carrier']]).attr("checked")) && (from[i]['carrier'] != ''))
            continue;

        if ((ticket[i]['cost'] < $('#slider-range').slider('option', 'values')[0]) || (ticket[i]['cost'] > $('#slider-range').slider('option', 'values')[1]))
            continue;

        if ((!$("#t_aller_0").attr("checked")) && (to[i]['out'].substr(0, 2) >= 0) && (to[i]['out'].substr(0, 2) < 8))
            continue;
        if ((!$("#t_aller_1").attr("checked")) && (to[i]['out'].substr(0, 2) >= 8) && (to[i]['out'].substr(0, 2) < 13))
            continue;
        if ((!$("#t_aller_2").attr("checked")) && (to[i]['out'].substr(0, 2) >= 13) && (to[i]['out'].substr(0, 2) < 20))
            continue;
        if ((!$("#t_aller_3").attr("checked")) && (to[i]['out'].substr(0, 2) >= 20) && (to[i]['out'].substr(0, 2) < 24))
            continue;

        if ((!$("#t_retour_0").attr("checked")) && (from[i]['in'].substr(0, 2) >= 0) && (from[i]['in'].substr(0, 2) < 8))
            continue;
        if ((!$("#t_retour_1").attr("checked")) && (from[i]['in'].substr(0, 2) >= 8) && (from[i]['in'].substr(0, 2) < 13))
            continue;
        if ((!$("#t_retour_2").attr("checked")) && (from[i]['in'].substr(0, 2) >= 13) && (from[i]['in'].substr(0, 2) < 20))
            continue;
        if ((!$("#t_retour_3").attr("checked")) && (from[i]['in'].substr(0, 2) >= 20) && (from[i]['in'].substr(0, 2) < 24))
            continue;

        allTickets++;
    }

    $("#resall").html(allTickets);

    for (i = page * numTicketsOnPage; (i < ticket.length) && (num < numTicketsOnPage); i++) {
        if (!$("#filter_agences" + ticket[i]['agence']).attr("checked"))
            continue;

        if ((!$("#avec").attr("checked")) && (to[i]['stopOver'] != 0) && (to[i]['stopOver'] != ''))
            continue;
        if ((!$("#avec").attr("checked")) && (from[i]['stopOver'] != 0) && (from[i]['stopOver'] != ''))
            continue;
        if ((!$("#direct").attr("checked")) && (to[i]['stopOver'] == 0) && (to[i]['stopOver'] != ''))
            continue;
        if ((!$("#direct").attr("checked")) && (from[i]['stopOver'] == 0) && (from[i]['stopOver'] != ''))
            continue;

        if ((!$("#filter" + flipCarrier[to[i]['carrier']]).attr("checked")) && (to[i]['carrier'] != ''))
            continue;
        if ((!$("#filter" + flipCarrier[from[i]['carrier']]).attr("checked")) && (from[i]['carrier'] != ''))
            continue;

        if ((ticket[i]['cost'] < $('#slider-range').slider('option', 'values')[0]) || (ticket[i]['cost'] > $('#slider-range').slider('option', 'values')[1]))
            continue;

        if ((!$("#t_aller_0").attr("checked")) && (to[i]['out'].substr(0, 2) >= 0) && (to[i]['out'].substr(0, 2) < 8))
            continue;
        if ((!$("#t_aller_1").attr("checked")) && (to[i]['out'].substr(0, 2) >= 8) && (to[i]['out'].substr(0, 2) < 13))
            continue;
        if ((!$("#t_aller_2").attr("checked")) && (to[i]['out'].substr(0, 2) >= 13) && (to[i]['out'].substr(0, 2) < 20))
            continue;
        if ((!$("#t_aller_3").attr("checked")) && (to[i]['out'].substr(0, 2) >= 20) && (to[i]['out'].substr(0, 2) < 24))
            continue;

        if ((!$("#t_retour_0").attr("checked")) && (from[i]['in'].substr(0, 2) >= 0) && (from[i]['in'].substr(0, 2) < 8))
            continue;
        if ((!$("#t_retour_1").attr("checked")) && (from[i]['in'].substr(0, 2) >= 8) && (from[i]['in'].substr(0, 2) < 13))
            continue;
        if ((!$("#t_retour_2").attr("checked")) && (from[i]['in'].substr(0, 2) >= 13) && (from[i]['in'].substr(0, 2) < 20))
            continue;
        if ((!$("#t_retour_3").attr("checked")) && (from[i]['in'].substr(0, 2) >= 20) && (from[i]['in'].substr(0, 2) < 24))
            continue;

        text += tick(to[i]['img_carrier'], from[i]['img_carrier'], to[i]['in'], to[i]['out'], to[i]['stopOver'], to[i]['flightTime'], ticket[i]['cost'], ticket[i]['currency'], ticket[i]['partner'], from[i]['in'], from[i]['out'], from[i]['stopOver'], from[i]['flightTime'], ticket[i]['href']);

        num++;
    }

    if (text != '')
        $("#ticketsList").html(text);
    else
        $("#ticketsList").html('<center>Aucun résultat pour vos critères. Modifiez vos critères de recherche SVP</center>');

    if (allTickets != 0)
        $("#numres1").html(page * numTicketsOnPage + 1);
    else
        $("#numres1").html(0);
    $("#numres2").html((page * numTicketsOnPage + num < allTickets) ? page * numTicketsOnPage + num : allTickets);

    text = '';
    curDecPage = (page - page % 20) / 20;
    relPage = curDecPage * 20;
    allPage = Math.ceil(allTickets / numTicketsOnPage);
    for (i = relPage; i < allPage && i < (relPage + 21); i++) {
        if (i == relPage && i != 0)
            text += ' <a style="cursor:pointer;" onclick="nextPage(' + (i - 1) + ')"><span><<</span></a> ';

        if (i == page)
            text += ' ' + (i + 1) + ' ';
        else if (i == relPage + 20 && (i + 1) != allPage)
            text += ' <a style="cursor:pointer;" onclick="nextPage(' + i + ')"><span>>></span></a> ';
        else
            text += ' <a style="cursor:pointer;" onclick="nextPage(' + i + ')">' + (i + 1) + '</a> ';
    }
    $("#reshref").html(text);
    $("#reshref1").html(text);
}

function tick(to_carrier, from_carrier, tout, tin, tstopOver, tflightTime, cost, currency, partner, fin, fout, fstopOver, fflightTime, href) {
    rtext = '';
    if (fin != '') {
		rtext = '<tr><td align="left"><img src="/i/site/retour.gif" alt="" /></td><td align="left">'+fin+'</td><td align="left">'+fout+'</td><td>'+fstopOver+' escale<br />'+((fflightTime-fflightTime%60)/60)+'h'+(fflightTime%60)+'min'+'</td></tr>';
    }

    if (to_carrier == from_carrier || from_carrier == '') {
        image_layer = '<img src="/i/carrier/' + to_carrier + '.png"  alt="' + to_carrier + '" />';
    }
    else {
        image_layer = '<img src="/i/carrier/' + to_carrier + '.png" alt="' + to_carrier + '" /><img style="margin-top:5px;" src="/i/carrier/' + from_carrier + '.png" alt="' + from_carrier + '" />'
    }

	return  '<div onclick="yaCounter12692755.reachGoal(\''+partner+'\')"><table class="ticketsList" onclick="window.open (\''+href+'\')"><tr><td id="carrier" align="center" width="20%">' + image_layer + '</td></td><td width="62%"><table class="timeList"><tr><td align="left"><img src="/i/site/aller.gif" alt="" /></td><td align="left">'+tin+'</td><td align="left">'+tout+'</td><td>'+tstopOver+' escale<br />'+((tflightTime-tflightTime%60)/60)+'h'+(tflightTime%60)+'min</td></tr>'+rtext+'</table></td><td align="center" width="18%"><img src="/i/agence/' + partner + '.gif" alt="' + partner + '" width="60" height="19" /><br /><font class="price">'+cost+' '+currency+'</font><br /><img src="/i/site/visiter.gif" width="70" height="20" alt="" /></td></tr></table></div>';
	
}

$(function() {
    $("#slider-range").slider({
        range: true,
        min: 0,
        max: 500,
        values: [0, 500],
        slide: function(event, ui) {
            $("#amount1").html(ui.values[0] + ',00&euro;');
            $("#amount2").html(ui.values[1] + ',00&euro;');
        },
        change: function(event, ui) {
            nextPage(0);
        }
    });
    $("#amount1").html($("#slider-range").slider("values", 0) + ',00&euro;');
    $("#amount2").html($("#slider-range").slider("values", 1) + ',00&euro;');
	
	
});
