/*
 * @(#)jquery.CEA.flightInfoInCookie.js
 *       
 * 系统名称：东航电子商务国内B2C系统
 * 版本号：1.0
 * 
 * Copyright (c)  TravelSky
 * All Rights Reserved.
 * 
 * 作者：bjiang
 * 创建日期：Mar 12, 2010
 * 
 * 功能描述：查询航班数据联存。
 * 
 *      需要liveuery支持
 * 修改人：
 * 修改日期：
 * 修改原因：
 * 
 * 
 */

if (!$.isFunction(jQuery.livequery))
{
    $.ajax({
        type: "GET",
        cache: true,
        url: '/mu/images/jquery.livequery.js',
        async: false,
        dataType: 'script'
    });
}

if (!$.isFunction(jQuery.cookie))
{
    $.ajax({
        type: "GET",
        cache: true,
        url: '/mu/images/jQuery.cookies.js',
        async: false,
        dataType: 'script'
    });
}

$(function()
{
    var flightinfo = new FlightInfoInCookie;
});

var FlightInfoInCookie = function()
{
    var singleOrRoundTrip = ''; //单程或往返
    var homeOrAbroadTrip = ''; //国内或国际
    var departureCity = ''; //出发城市
    var arrivalCity = ''; //到达城市
    var departureDate = ''; //出发日期
    var arrivalDate = ''; //到达日期
    var depCity3Code = ''; //出发城市3字码
    var arrCity3Code = ''; //到达城市3字码
    var adtNum = ''; //成人人数
    var chdNum = ''; //儿童人数
    var infNum = ''; //婴儿人数
    var sortType = ''; //排序方式
    var saveToCookie = function()
    {
        var totalFlightInfo = singleOrRoundTrip + ";" + homeOrAbroadTrip + ";" + departureCity + ";" + arrivalCity + ";" + departureDate + ";" + arrivalDate + ";" + depCity3Code + ";" + arrCity3Code + ";" + adtNum + ";" + chdNum + ";" + infNum + ";" + sortType;
        $.cookie("totalFlightInfo", totalFlightInfo, {
            path: '/'
        });
    };
    var loadFromCookie = function()
    {
        var totalFlightInfo = $.cookie("totalFlightInfo");
        if (totalFlightInfo != null && totalFlightInfo != '')
        {
            var flightInfoArray = totalFlightInfo.split(";");
            singleOrRoundTrip = flightInfoArray[0];
            homeOrAbroadTrip = flightInfoArray[1];
            departureCity = flightInfoArray[2];
            arrivalCity = flightInfoArray[3];
            departureDate = flightInfoArray[4];
            arrivalDate = flightInfoArray[5];
            depCity3Code = flightInfoArray[6];
            arrCity3Code = flightInfoArray[7];
            adtNum = flightInfoArray[8];
            chdNum = flightInfoArray[9];
            infNum = flightInfoArray[10];
            sortType = flightInfoArray[11];
        }
    };
    //设置国际国内航班
    var homeAbroadListener = function()
    {
        var $obj = null;
        //初始化国内国际航班radio
        $("input[name='cond.isInternationalFlight']").livequery(function()
        {
            if($obj !== null)
            {
                return;
            } 
            $obj = $("input[name='cond.isInternationalFlight']");
            if (homeOrAbroadTrip !== null && homeOrAbroadTrip != '')
            {
                if (homeOrAbroadTrip == 331)
                {
                    $obj.filter("[value='331']").click();
                }
                else if (homeOrAbroadTrip == 332)
                {
                    $obj.filter("[value='332']").click();
                }
            }
            $obj.filter("[value='332']").click(function()
            {
                $("input[name='cond.tripType']").eq(1).click();
            });

            $obj.filter("[value='331']").bind("click",
            function()
            {
                if ($("input[name='cond.depCode']").attr("_3CODE") === 'PVG')
                {
                    $("input[name='cond.depCode']").val("上海(虹桥机场)");
                    $("input[name='cond.depCode']").attr('_3CODE', "SHA");
                    //切换国内国际航班后,到达城市应清空
                    $("input[name='cond.arrCode']").val("支持中文/拼音");
                    $("input[name='cond.arrCode']").attr("_3CODE", '');
                }
            });
            $obj.filter("[value='332']").bind("click",
            function()
            {
                if ($("input[name='cond.depCode']").attr("_3CODE") === 'SHA')
                {
                    $("input[name='cond.depCode']").val("上海(浦东机场)");
                    $("input[name='cond.depCode']").attr('_3CODE', "PVG");
                    //切换国内国际航班后,到达城市应清空
                    $("input[name='cond.arrCode']").val("支持中文/拼音");
                    $("input[name='cond.arrCode']").attr("_3CODE", '');
                }
            });
        });

        //保存国内国际航班到cookie
        var saveCookie = function()
        {
            homeOrAbroadTrip = $obj.filter(":checked").val();
            saveToCookie();
        };

        //监听国内国际选择
        var listener = null;
        $("input[name='cond.isInternationalFlight']:checked").livequery(function()
        {
            $("input[name='cond.isInternationalFlight']:checked").expire();
            listener = 'input[name="cond.isInternationalFlight"]:checked';
            $(listener).livequery(saveCookie);
        });
    };

    //设置单程往返radio
    var singleRoundTripListener = function()
    {
        //设置单程或往返
        var $obj = null;
        $("input[name='cond.tripType']").livequery(function()
        {
            if($obj !== null)
            {
                return;
            } 
            $obj = $("input[name='cond.tripType']");
            if (singleOrRoundTrip != null && singleOrRoundTrip != '')
            {
                if (singleOrRoundTrip === 'OW')
                {
                    $obj.filter("[value='OW']").click();
                }
                else if (singleOrRoundTrip === 'RT')
                {
                    $obj.filter("[value='RT']").click();
                }
            }
        });

        //保存单程往返到cookie
        var saveCookie = function()
        {
            singleOrRoundTrip = $obj.filter(":checked").val();
            saveToCookie();
        };

        //监听单程往返选择
        var listener = null;
        $("input[name='cond.tripType']:checked").livequery(function()
        {
            $("input[name='cond.tripType']:checked").expire();
            listener = 'input[name="cond.tripType"]:checked';
            $(listener).livequery(saveCookie);
        });
    };

    //设置出发城市及其3字码
    var depCodeListener = function()
    {
        var $obj = null;
        //初始化出发城市及其3字码
        $("input[name='cond.depCode'][id!='fdepCode']").livequery(function()
        {
            $obj = $(this);
            if (depCity3Code.length === 3)
            {
                $obj.val(departureCity);
                $obj.attr('_3CODE', depCity3Code);
            }
            else
            {
                depCity3Code = 'SHA';
                departureCity = '上海(虹桥机场)';
                $obj.val(departureCity);
                $obj.attr('_3CODE', depCity3Code);
            }
        });

        //保存出发城市及其3字码到cookie
        var saveCookie = function()
        {
            departureCity = $obj.val();
            depCity3Code = $obj.attr('_3CODE');
            saveToCookie();
        };

        //监听出发城市及其3字码
        var listener = null;
        $("input[name='cond.depCode'][_3CODE][id!='fdepCode']").livequery(function()
        {
            $("input[name='cond.depCode'][_3CODE][id!='fdepCode']").expire();
            var queryListener = function()
            {
                $(listener).expire();
                listener = 'input[name="cond.depCode"][id!="fdepCode"][_3CODE="' + $obj.attr('_3CODE') + '"]';
                $(listener).livequery(saveCookie, queryListener);
            };
            queryListener();
        });
    };

    //设置到达城市及其3字码
    //注意,低价机票页面有重复的航班信息输入项,需要避免冲突
    var arrCodeListener = function()
    {
        var $obj = null;
        //初始化到达城市及其3字码
        $("input[name='cond.arrCode'][id!='farrCode']").livequery(function()
        {
            $obj = $(this);
            if (arrCity3Code.length === 3)
            {
                $obj.val(arrivalCity);
                $obj.attr('_3CODE', arrCity3Code);
            }
            else
            {
                $obj.val('支持中文/拼音');
                $obj.attr('_3CODE','');
            }
        });

        //保存到达城市及其3字码到cookie
        var saveCookie = function()
        {
            arrivalCity = $obj.val();
            arrCity3Code = $obj.attr('_3CODE');
            saveToCookie();
        };

        //监听到达城市及其3字码
        var listener = null;
        $("input[name='cond.arrCode'][_3CODE][id!='farrCode']").livequery(function()
        {
            $("input[name='cond.arrCode'][_3CODE][id!='farrCode']").expire();
            var queryListener = function()
            {
                $(listener).expire();
                listener = 'input[name="cond.arrCode"][id!="farrCode"][_3CODE="' + $obj.attr('_3CODE') + '"]';
                $(listener).livequery(saveCookie, queryListener);
            };
            queryListener();
        });
    };

    //设置出发时间
    var depDateListener = function()
    {
        var $obj = null;
        //初始化出发时间
        $("input[name='cond.depDate']").livequery(function()
        {
            $obj = $(this);
            if (departureDate !== null && departureDate !== '')
            {
                $obj.val(departureDate);
            }
            //监听出发时间
            $obj.change(saveCookie);
        });

        //保存出发时间到cookie
        var saveCookie = function()
        {
            departureDate = $obj.val();
            saveToCookie();
        };

    };

    //设置到达时间
    var arrDateListener = function()
    {
        var $obj = null;
        //初始化到达时间
        $("input[name='cond.arrDate']").livequery(function()
        {
            $obj = $(this);
            if (arrivalDate !== null && arrivalDate !== '')
            {
                $obj.val(arrivalDate);
            }
            //监听到达时间
            $obj.change(saveCookie);
        });

        //保存到达时间到cookie
        var saveCookie = function()
        {
            arrivalDate = $obj.val();
            saveToCookie();
        };
    };

    //设置成人人数
    var adtNumListener = function()
    {
        var $obj = null;
        //初始化成人人数
        $("select[name='cond.adultNumber']").livequery(function()
        {
            $obj = $(this);
            if (adtNum !== null && adtNum !== '')
            {
                $obj.val(adtNum);
            }
            //监听成人人数
            $obj.change(saveCookie);
        });

        //保存成人人数到cookie
        var saveCookie = function()
        {
            adtNum = $obj.val();
            saveToCookie();
        };
    };

    //设置儿童人数
    var chdNumListener = function()
    {
        var $obj = null;
        //初始化儿童人数
        $("select[name='cond.childNumber']").livequery(function()
        {
            $obj = $(this);
            if (chdNum !== null && chdNum !== '')
            {
                $obj.val(chdNum);
            }
            //监听儿童人数
            $obj.change(saveCookie);
        });

        //保存儿童人数到cookie
        var saveCookie = function()
        {
            chdNum = $obj.val();
            saveToCookie();
        };
    };

    //设置婴儿人数
    var infNumListener = function()
    {
        var $obj = null;
        //初始化婴儿人数
        $("select[name='cond.infantNumber']").livequery(function()
        {
            $obj = $(this);
            if (infNum !== null && infNum !== '')
            {
                $obj.val(infNum);
            }
            //监听婴儿人数
            $obj.change(saveCookie);
        });

        //保存婴儿人数到cookie
        var saveCookie = function()
        {
            infNum = $obj.val();
            saveToCookie();
        };

    };

    //设置排序种类
    var sortTypeListener = function()
    {
        //设置排序种类
        var $obj = null;
        $("input[name='cond.sortType']").livequery(function()
        {
            if($obj !== null)
            {
                return;
            }
            $obj = $("input[name='cond.sortType']");
            if (sortType != null && sortType != '')
            {
                if (sortType === '1')
                {
                    $obj.filter("[value='1']").click();
                }
                else if (sortType === '2')
                {
                    $obj.filter("[value='2']").click();
                }
            }
        });

        //保存排序种类到cookie
        var saveCookie = function()
        {
            sortType = $obj.filter(":checked").val();
            saveToCookie();
        };

        //监听排序种类
        var listener = null;
        $("input[name='cond.sortType']:checked").livequery(function()
        {
            $("input[name='cond.sortType']:checked").expire();
            listener = 'input[name="cond.sortType"]:checked';
            $(listener).livequery(saveCookie);
        });
    };

    var init = function()
    {
        loadFromCookie();
        homeAbroadListener();
        singleRoundTripListener();
        depCodeListener();
        arrCodeListener();
        depDateListener();
        arrDateListener();
        adtNumListener();
        chdNumListener();
        infNumListener();
        sortTypeListener();
    };
    return init();
}