var strDestination;
var iAdult;
var iChild;
var iInfant;
var strBoardingClass;
var currencyCode;
var dtDateFrom;
var dtDateTo;
var strPromoCode = "";

var tmpOutFlight_id = "";
var tmpOutFare_id = "";
var tmpRetFlight_id = "";
var tmpRetFare_id = "";

function getDestination()
{
    var objOrigin=document.getElementById(FindControlName("select", "optOrigin"));
    var objDestination=document.getElementById(FindControlName("select", "optDestination"));
    var strSelectedOrigin="";
    
    //Add destination from selected origin
    strSelectedOrigin = objOrigin.options[objOrigin.selectedIndex].value;
    objDestination = ClearOptions(objDestination);  //Clear previous value
    
    for(var iCount = 0; iCount < arrDestination.length; iCount++)
    {
        if(arrDestination[iCount].split("|")[2] == strSelectedOrigin.split("|")[0])
        {
            //Allowed only the destination that have the same
            //origin as selected origin.
            var opt = document.createElement("option");
            opt.value = arrDestination[iCount].split("|")[2] + "|" + 
                        objOrigin.options[objOrigin.selectedIndex].text + "|" + 
                        arrDestination[iCount].split("|")[0] + "|" + 
                        arrDestination[iCount].split("|")[1] + "|" + 
                        arrDestination[iCount].split("|")[3];
            
            //Add display text to option
            if (navigator.appName.indexOf('Microsoft') == 0)
            { opt.innerText = arrDestination[iCount].split("|")[1]; }
            else
            { opt.text = arrDestination[iCount].split("|")[1]; }
            
            objDestination.appendChild(opt);
            opt = null;        
        }
    }
    objOrigin = null;
    objDestination = null;
}

function SearchAvailability(strSearchType)
{
    var objOrigin = document.getElementById(FindControlName("select", "optOrigin"));
    var strOrigin = objOrigin.options[objOrigin.selectedIndex].value;
    var objDestination = document.getElementById(FindControlName("select", "optDestination"));
    var objOneWay = document.getElementById("optOneWay");
    var objAdult = document.getElementById("optAdult");
    var objChild = document.getElementById("optChild");
    var objInfant = document.getElementById("optInfant");
    var objBoardingClass = document.getElementById("optBoardingClass");
    var objPromoCode = document.getElementById("txtPromoCode");
    
    strDestination = objDestination.options[objDestination.selectedIndex].value;
    isOneWay = objOneWay.checked.toString();
    iAdult = parseInt(objAdult.options[objAdult.selectedIndex].value);
    iChild = parseInt(objChild.options[objChild.selectedIndex].value);
    iInfant = parseInt(objInfant.options[objInfant.selectedIndex].value);
    strBoardingClass = objBoardingClass.options[objBoardingClass.selectedIndex].value;
    currencyCode = strOrigin.split("|")[1];
    dtDateFrom = getdatefrom();
    dtDateTo = getdateto();
    if(objPromoCode != null)
    {
        strPromoCode = objPromoCode.value;
    }
    
    //Call Availability web service
    if(iInfant > iAdult)
    {
        ShowMessageBox("It is not possible to book more Infants than Adults!", 0,'');
    }
    else if((iAdult + iChild + iInfant) > 12)
    {
        ShowMessageBox("Total passenger can't be more than 12 !!", 0,'');
    }
    else {

        var strOri = "";
        var strDest = "";
        
        strOri = strDestination.split("|")[0];
        strDest = strDestination.split("|")[2];

        objOrigin = null;
        objDestination = null;

        ShowProgressBar(true);
        tikAeroB2C.WebService.B2cService.GetAvailability(strOri,
                                                        strDest,
                                                        dtDateFrom,
                                                        dtDateTo,
                                                        isOneWay,
                                                        "0",
                                                        iAdult,
                                                        iChild,
                                                        iInfant,
                                                        strBoardingClass,
                                                        currencyCode,
                                                        strPromoCode,
                                                        strSearchType,
                                                        0,
                                                        "",
                                                        SuccessSearchFlight,
                                                        showError,
                                                        showTimeOut);
    }
    
    objOrigin = null;
    objDestination = null;
    objOneWay = null;
    objAdult = null;
    objChild = null;
    objInfant = null;
    objBookingClass = null;
}
function SuccessSearchFlight(result) {

    if (result.length > 0) {
        if (result == "{003}") {
            ShowMessageBox("Invalid Required Parameter.", 0, '');
        }
        else {
            if (result == "{004}") {
                ShowMessageBox("System Error. Please try again.", 0, '');
            }
            else {
                var obj = document.getElementById("dvContainer");
                obj.innerHTML = result;

                if (document.getElementById("dvRedMenu").style.display == "none") {
                    DisplayBookingProcessNotLogin();
                }
            }

            var chkOutward = document.getElementsByName("Outward");
            var chkReturn = document.getElementsByName("Return");

            if (chkOutward != null && chkOutward.length > 0) {
                chkOutward[0].checked = true;
                for (var i = 0; i < chkOutward.length; i++) {
                    if (chkOutward[i].value.split("|")[3] == dtDateFrom) {
                        chkOutward[i].checked = true;
                        break;
                    }
                }
            }
            if (chkReturn != null && chkReturn.length > 0) {
                chkReturn[0].checked = true;
                for (var i = 0; i < chkReturn.length; i++) {
                    if (chkReturn[i].value.split("|")[3] == dtDateTo) {
                        chkReturn[i].checked = true;
                        break;
                    }
                }
            }

            ShowPannel(true);
            //Move scroll to top page.
            scroll(0, 0);

            chkOutward = null;
            chkReturn = null;
        }
    }
   
    ShowProgressBar(false);
}

function getdatefrom()
{ 
    var ddlMY_1=document.getElementById('ddlMY_1');
    var ddlDate_1=document.getElementById('ddlDate_1');
    return (ddlMY_1.options[ddlMY_1.selectedIndex].value+ddlDate_1.options[ddlDate_1.selectedIndex].value);
}
function getdateto()
{
    var ddlMY_2 =document.getElementById('ddlMY_2');
    var ddlDate_2=document.getElementById('ddlDate_2');
    return (ddlMY_2.options[ddlMY_2.selectedIndex].value+ddlDate_2.options[ddlDate_2.selectedIndex].value);
}
function ShowHideCalendar()
{
    var objSearch = document.getElementById("optReturn");
    var objCar = document.getElementById("calRen2");
    var objReturnLabel = document.getElementById("lblReturnDate");
    
    if(objSearch.checked == true)
    {
        objCar.style.display = "block";
        objReturnLabel.style.display = "block";
    }
    else
    {
        objCar.style.display = "none";
        objReturnLabel.style.display = "none";
    }
    
    objReturnLabel = null;
    objCar = null;
    objSearch = null;
}
function SearchSingleFlight(flightDate, strFlightType)
{
    if(strFlightType == "Outward")
    {
        document.getElementById("Outward_loading").style.display = "block";
        ShowProgressBar(true);
        setFromDate(flightDate);
        tikAeroB2C.WebService.B2cService.SearchSingleFlight(flightDate, true, SuccessSearchFlight, showError, showTimeOut);
    }
    else
    {
        document.getElementById("Return_loading").style.display = "block";
        ShowProgressBar(true);
        setToDate(flightDate);
        tikAeroB2C.WebService.B2cService.SearchSingleFlight(flightDate, false, SuccessSearchFlight, showError, showTimeOut);
    }
    document.getElementById("dvAvaiNext").style.display = "none";
}

function SelectFlight()
{
    var chkOutward = document.getElementsByName("Outward");
    var OutwardParam = "";
    var OutwardDate = "";
    var OutwardTime = "";
    
    
    var chkReturn = document.getElementsByName("Return");
    var ReturnParam = "";
    var ReturnDate = 0;
    var ReturnTime = 0;
    
    var arrFlightInfo;
    var arrFlightDetail;
    
    var iCount = 0;
    
    if(chkOutward != null)
    {
        iCount = chkOutward.length;
        if(iCount > 0)
        {
            for(var i=0;i<iCount;i++)
            {
                if(chkOutward[i].checked == true)
                {
                    OutwardParam = chkOutward[i].value;
                    break;
                }
            }
            if(OutwardParam.length > 0)
            {
                arrFlightInfo = OutwardParam.split("|");
                for(var i=0; i<arrFlightInfo.length; i++)
                {
                    arrFlightDetail = arrFlightInfo[i].split(":");
                    if(arrFlightDetail[0] == "departure_date")
                    {
                        OutwardDate = parseInt(arrFlightDetail[1]);
                    }
                    if(arrFlightDetail[0] == "planned_departure_time")
                    {
                        OutwardTime = parseInt(arrFlightDetail[1]);
                    }
                }    
            }
        }
    }
   
    iCount = 0;
    if(chkReturn != null)
    {
        iCount = chkReturn.length;
        if(iCount > 0)
        {
            for(var i=0;i<iCount;i++)
            {
                if(chkReturn[i].checked == true)
                {
                    ReturnParam = chkReturn[i].value;
                    break;
                }
            }
            if(ReturnParam.length > 0)
            {
                arrFlightInfo = ReturnParam.split("|");
                for(var i=0; i<arrFlightInfo.length; i++)
                {
                    arrFlightDetail = arrFlightInfo[i].split(":");
                    if(arrFlightDetail[0] == "departure_date")
                    {
                        ReturnDate = parseInt(arrFlightDetail[1]);
                    }
                    if(arrFlightDetail[0] == "planned_departure_time")
                    {
                        ReturnTime = parseInt(arrFlightDetail[1]);
                    }
                }    
            }
        }
    }
    
    if (OutwardParam.length == 0)
    { ShowMessageBox("Please select outward flight", 0,'');}
    else if (document.getElementById("optOneWay").checked == false && ReturnParam.length == 0)
    { ShowMessageBox("Please select return flight", 0,'');}
    else if(ReturnParam.length != 0 && (OutwardDate > ReturnDate))
    { ShowMessageBox("Your return flight time must be after your outbound flight arrived.", 0,''); }
    else if (ReturnParam.length != 0 && (OutwardTime > ReturnTime) && (OutwardDate == ReturnDate))
    { ShowMessageBox("Your return flight time must be after your outbound flight arrived.", 0,''); }
    else
    {
        ShowProgressBar(true);
        tikAeroB2C.WebService.B2cService.AddFlight(OutwardParam, ReturnParam, g_strIpAddress, SuccessSelectFlight, showError, showTimeOut);
    }
    
    chkOutward = null;
    chkReturn = null;
}
function SuccessSelectFlight(result)
{
    var arrResult = result.split("{!}");
    
    if(arrResult[0] == "0")
    {
        //Success.
        var obj = document.getElementById("dvContainer");
        obj.innerHTML = arrResult[1];
        obj = null;
        
        ShowPannel(false);
        ShowProgressBar(false);
    }
    else if(arrResult[0] == "101")
    {
        //US Message
        ShowProgressBar(false);
        ShowMessageBox("Flight number " + arrResult[1] + " full", 0,'');
    }
    scroll(0,0);
}
function GetLowFareFinder()
{
    var objDestination = document.getElementById(FindControlName("select", "optDestination"));
    var arrAirport = objDestination.options[objDestination.selectedIndex].value.split("|");
    
    var strOrigin = arrAirport[0];
    var strDestination = arrAirport[2];
    var objOneWay = document.getElementById("optOneWay");

    var dtDateFrom = getdatefrom();
    var dtDateTo = 0;
    
    if(objOneWay.checked == false)
    { dtDateTo = getdateto(); }
    
    
    //Start Check Minimum Date that can select low fare finder.
    var d = Number(dtDateFrom.toString().substring(6,8));
    var m = Number(dtDateFrom.toString().substring(4,6));
    var y = Number(dtDateFrom.toString().substring(0,4));
    
    var iDate = new Date(y,m - 1,d);
    
    var todayDate = new Date();
    var cDate = new Date(todayDate.getFullYear(),todayDate.getMonth(),todayDate.getDate());
    //End Check Minimum Date that can select low fare finder.
    if(dtDateTo != 0 && (dtDateFrom > dtDateTo))
    { ShowMessageBox("outward Date less than return Date", 0,''); }
    else if(dateDiff("d", cDate, iDate) < 21)
    { ShowMessageBox("Our low fare finder is only available for flights departing more than three weeks from now, for dates before this time use our normal Flight Selection. ", 0,'');}
    else
    {
        ShowProgressBar(true);
        tikAeroB2C.WebService.B2cService.GetLowFareFinder(strOrigin, strDestination, dtDateFrom, dtDateTo, SuccessGetLowFareFinder, showError, dtDateFrom + "|" + dtDateTo);
    }    
    
    chkOutward = null;
    chkReturn = null;
}
function SuccessGetLowFareFinder(result, strSelectDate)
{
    if(result.length > 0)
    {
        var obj = document.getElementById("dvContainer");
        obj.innerHTML = result;
        var arrDate = strSelectDate.split("|");
        var objOutWare = document.getElementsByName("optLowfare_Outward");
        var objReturn = document.getElementsByName("optLowfare_Return");
        
        var todayDate = new Date();
        var cDate = new Date(todayDate.getYear(),todayDate.getMonth(),todayDate.getDate());
        
        var strSelectDate;
        var d = Number(strSelectDate.substring(6,8));
        var m = Number(strSelectDate.substring(4,6));
        var y = Number(strSelectDate.substring(0,4));
        
        var iDate;
        
       
        if(objOutWare != null && objOutWare.length > 0)
        {
            for(var i = 0; i<objOutWare.length; i++)
            {
                strSelectDate = ReformatXmlToYYYYMMDD(objOutWare[i].value.split("|")[3])
                var d = Number(strSelectDate.substring(6,8));
                var m = Number(strSelectDate.substring(4,6));
                var y = Number(strSelectDate.substring(0,4));
                
                iDate = new Date(y,m - 1,d);
                //Remove date at are not match the 21 days
                if(dateDiff("d", cDate, iDate) <= 21)
                {
                   objOutWare[i].style.display = "none"; 
                }
                 //Select at selected date
                if(strSelectDate == arrDate[0])
                {
                   objOutWare[i].checked = true; 
                }
                iDate = null
            }
            //Highlight Selected date
            LffHighLight("Outward", true);
        }
        
        if(objReturn != null && objReturn.length > 0)
        {
            for(var i = 0; i<objReturn.length; i++)
            {
                strSelectDate = ReformatXmlToYYYYMMDD(objReturn[i].value.split("|")[3])
                var d = Number(strSelectDate.substring(6,8));
                var m = Number(strSelectDate.substring(4,6));
                var y = Number(strSelectDate.substring(0,4));
                
                iDate = new Date(y,m - 1,d);
                //Remove date at are not match the 21 days
                if(dateDiff("d", cDate, iDate) <= 21)
                {
                   objReturn[i].style.display = "none"; 
                }
                //Select at selected date
                if(ReformatXmlToYYYYMMDD(objReturn[i].value.split("|")[3]) == arrDate[1])
                {
                   objReturn[i].checked = true; 
                }
            }
            //Highlight Selected date
            LffHighLight("Return", true);
        }
        objOutWare = null;
        objReturn = null;
    }
    ShowProgressBar(false);
}
function GetAvailabilityFromLowFareFinder()
{
    var objOptLowFare;
    var ArrParam; //Origin_rcd|Origin_name|Destination_Rcd|flight Date|fare amount
    var strParam = "";
    var strDateFrom = "";
    var strDateTo = "";
    var dblOutwarFare = 0;
    var dblRetrunFare = 0;
    
    //-- Outward Flight
    objOptLowFare = document.getElementsByName("optLowfare_Outward");
    if(objOptLowFare != null)
    {
        for(var i = 0;i<objOptLowFare.length; i++)
        {
            if(objOptLowFare[i].checked == true)
            {
                ArrParam = objOptLowFare[i].value.split("|");
                strParam = ArrParam[0] + "|" + ArrParam[1] + "|" + ArrParam[2] + "|1";
                strDateFrom = ReformatXmlToYYYYMMDD(ArrParam[3]);
                dblOutwarFare = ArrParam[4];
            }
        }
    } 
    objOptLowFare = null;
    
    //-- Return Flight
    objOptLowFare = document.getElementsByName("optLowfare_Return");
    if(objOptLowFare != null)
    {
        for(var i = 0;i<objOptLowFare.length; i++)
        {
            if(objOptLowFare[i].checked == true)
            {
                ArrParam = objOptLowFare[i].value.split("|");
                strDateTo = ReformatXmlToYYYYMMDD(ArrParam[3]);
                dblRetrunFare = ArrParam[4];
            }
        }
    } 
    objOptLowFare = null;
    
    if(ArrParam.length > 0)
    {
        if(strDateTo.length != 0 && (strDateFrom > strDateTo))
        { ShowMessageBox("outward Date less than return Date", 0,''); }
        else if (strDateFrom.length == 0)
        { ShowMessageBox("Please select Outward Date", 0,'');}
        else if (document.getElementById("td_Return") != null && strDateTo.length == 0)
        { ShowMessageBox("Please select return Date", 0,'');}
        else
        {
            ShowProgressBar(true);
            tikAeroB2C.WebService.B2cService.GetAvailabilityFromLowFareFinder(strParam, 
                                                                              strDateFrom, 
                                                                              strDateTo,
                                                                              false,
                                                                              dblOutwarFare,
                                                                              dblRetrunFare,
                                                                              tmpOutFlight_id + ":" + tmpOutFare_id,
                                                                              tmpRetFlight_id + ":" + tmpRetFare_id,
                                                                              SuccessGetAvailabilityFromLowFareFinder, 
                                                                              showError, 
                                                                              showTimeOut);       
        }
    }
}
function SuccessGetAvailabilityFromLowFareFinder(result)
{
    if(result.length > 0)
    {
        var obj = document.getElementById("dvContainer");
        obj.innerHTML = result.split("{}")[1];
        
        var chkOutward = document.getElementsByName("Outward");
        var chkReturn = document.getElementsByName("Return");
        
        if(chkOutward != null && chkOutward.length > 0)
        {
            chkOutward[0].checked = true;
        }
        if(chkReturn != null && chkReturn.length > 0)
        {
            chkReturn[0].checked = true;
        }
    }
    ShowProgressBar(false);
}
function GetFlightSelectValue(o)
{
    for(var i=0;i<o.length;i++)
    {
        if(o[i].checked == true)
        {
            return o[i].value;
        }
    }
    return "";
}
function setFromDate(strDate)
{   
    SetComboValue("ddlMY_1", strDate.substring(0,6));
    SetComboValue("ddlDate_1", strDate.substring(6,8));
}
function setToDate(strDate)
{   
    SetComboValue("ddlMY_2", strDate.substring(0,6));
    SetComboValue("ddlDate_2", strDate.substring(6,8));
}
function LffHighLight(strName, bSelect)
{
    var objOptLowFare = document.getElementsByName("optLowfare_" + strName);
    var strId = "";
    if(objOptLowFare != null)
    {
        for(var i = 0;i<objOptLowFare.length; i++)
        {
            if(objOptLowFare[i].checked == true)
            {
                strId = objOptLowFare[i].id.split("_")[2];
            }
        }
    } 
    var objTdSelect = document.getElementById("td_" + strName + "_" + strId);
    if(objTdSelect != null)
    {
        if(bSelect == true)
        {
            objTdSelect.className = "Select";
            document.getElementById("spnLowfare_" + strName + "_" + strId).className = "DataCssClass-Select";
        }
        else
        {
            objTdSelect.className = "";
            document.getElementById("spnLowfare_" + strName + "_" + strId).className = "DataCssClass";
        }
    }
    objTdSelect = null
    objOptLowFare = null;
}

function SelectLlf(strName)
{
    LffHighLight(strName.split("_")[0], false);
    document.getElementById("optLowfare_" + strName).checked = true;
    LffHighLight(strName.split("_")[0], true);
    return false;
}

