﻿var cur_request;
var xmlhttp;
var cur_xml;
function getHTMLStringFromURL(tmpURL, obj) {


    var xmlhttp = GLOBAL.Lang.createAjaxObject();
    var tmpResult = "";

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                tmpResult = xmlhttp.responseText;
                obj.innerHTML = tmpResult;
            }
        }
    }
    xmlhttp.open('get', tmpURL, true);
    xmlhttp.send(null);
}

//弹出层
function PopDivWindow(senderId, divId) {
    var txtSender;
    var divPop;
    if (typeof (senderId) == "object") {
        txtSender = senderId;
    }
    else {
        txtSender = _g(senderId);
    }
    if (typeof (divId) == "object") {
        divPop = divId;
    }
    else {
        divPop = _g(divId);
    }
    var t = txtSender.offsetTop;
    var l = txtSender.offsetLeft;
    while (txtSender = txtSender.offsetParent) {
        t += txtSender.offsetTop;
        l += txtSender.offsetLeft;
    }
    if (divPop.id == "divHotelProductChanged" && ((680 + l) > document.body.clientWidth)) {
        l = l - 680;
    }
    if (divPop.id == "divHotelInfo" && ((330 + l) > document.body.clientWidth)) {
        l = l - 330;
    }
    if (divPop.id == "divBeginPrice" && ((400 + l) > document.body.clientWidth)) {
        l = l - 400;
    }
    if (divPop.id == "divBeginPrice") {
        t = t + 20;
    }
    if (divPop.id == "moreExplain") {
        t = t + 20;
    }
    divPop.style.left = l + "px";
    divPop.style.top = t + "px";
    divPop.style.display = "";
}
//关闭所有弹出的div
function CloseAllPopInfoDiv(sender) {
    TagOperator.hid("divVisaInfo");
    TagOperator.hid("divOtherInfo");
    TagOperator.hid("divHotelInfo");
    TagOperator.hid("divAirInfo");
    TagOperator.hid("divAirProductChanged");
    TagOperator.hid("divHotelProductChanged");
    TagOperator.hid("divOtherProductChanged");
    TagOperator.hid("divBeginPrice");
    TagOperator.hid("divWarmPrompt");
    TagOperator.hid("SingleRoomInfo");
    TagOperator.hid("divHotelDesc");
    TagOperator.hid("divOtherProductDesc");
    TagOperator.hid("divFlightRule");
    TagOperator.hid("moreExplain");
}
//得到特定下拉列表框所选的值



function showMaybeLike(productid) {
    var strURL = "";
    strURL = "/DomesticPackage/ProductDetailService.ashx?OprType=7&ProductID=" + productid + "";
    getHTMLStringFromURL(strURL, _g("divMaybeLike"));
}
//显示退改签
function ShowFlightRule(AirLineCode, CabinCode, DiscountRate, Rule, event) {
    _g("txtEventX").value = event.clientX;
    _g("txtEventY").value = event.clientY;
    var tdContent = _g("tdContent");
    CallServer(AirLineCode, CabinCode, tdContent);
}
//==============================计算价格==============================


//得到成人数量
function getAdultNO() {
    var selAdultNum = _g("selAdultNum");
    for (var i = 0; i < selAdultNum.length; i++) {
        if (selAdultNum[i].selected) {
            _g("hfAdultNO").value = selAdultNum[i].value;
            return selAdultNum[i].value;
        }
    }
}
//得到儿童数量
function getChildNO() {
    var selChildNum = _g("selChildNum");
    for (var i = 0; i < selChildNum.length; i++) {
        if (selChildNum[i].selected) {
            _g("hfChildNO").value = selChildNum[i].value;
            return selChildNum[i].value;
        }
    }
}
//得到房间数量
function getRoomNO() {
    var selRoomNum = _g("selRoomNum");
    for (var i = 0; i < selRoomNum.length; i++) {
        if (selRoomNum[i].selected) {
            return selRoomNum[i].value;
        }
    }
}
//得到机票价格
function getAirPrice(AdultNO, ChildNO) {
    var AdultPriceObject = _g("InputAdultPrice_1");
    var ChildPriceObject = _g("InputChildPrice_1");
    var i = 1;
    var AdultPrice = 0;
    var ChildPrice = 0;
    while (AdultPriceObject != null) {
        AdultPrice = AdultPrice + parseFloat(AdultPriceObject.value);
        if (parseFloat(ChildPriceObject.value) != 0) {
            ChildPrice = ChildPrice + parseFloat(ChildPriceObject.value);
        }
        else {
            ChildPrice = ChildPrice + parseFloat(AdultPriceObject.value);
        }
        i++;
        AdultPriceObject = _g("InputAdultPrice_" + i.toString());
        ChildPriceObject = _g("InputChildPrice_" + i.toString());
    }
    var AirSum = 0;
    var AirSum = AdultNO * AdultPrice + ChildNO * ChildPrice;
    return AirSum;
}
//得到酒店价格
function getHotelPrice(RoomNO) {
    var hotelObject = _g("InputHotelPriceInfo_1");
    var i = 1;
    var hotelprice = 0;
    while (hotelObject != null) {
        if (hotelObject.value != "" && hotelObject.value != null) {
            hotelprice = hotelprice + parseFloat(hotelObject.value);
        }
        i++;
        hotelObject = _g("InputHotelPriceInfo_" + i.toString());
    }
    var HotelSum = 0;
    HotelSum = hotelprice * RoomNO;
    return HotelSum;
}
//得到签证价格
function getVisaPrice(number) {
    var visaPrice = _g("hfVisaPrice");
    var visaSum = 0;
    visaSum = number * parseFloat(visaPrice.value);
    return visaSum;
}
//成团产品计算单间差
function GroupProudct() {
    var hfIsGroup = _g("hfIsGroup");
    var selRoomNum = _g("selRoomNum");
    for (var j = 0; j < selRoomNum.childNodes.length; i++) {
        selRoomNum.removeChild(selRoomNum.childNodes[0]);
    }

    if (hfIsGroup != null && hfIsGroup.value.toUpperCase() == "FALSE") {
        for (var i = 1; i <= 9; i++) {
            selectOperator.addOption(selRoomNum, i.toString(), i.toString());
        }
        return;
    }
    var selAdultNum = _g("selAdultNum");
    var selChildNum = _g("selChildNum");

    var AdultNum = selAdultNum.value;
    var ChildNum = selChildNum.value;
    var CostomerNum = parseInt(AdultNum);  //+ parseInt(ChildNum);
    var LeastNum = 0;

    LeastNum = CostomerNum % 2;
    if (LeastNum == 0) {
        LeastNum = parseInt(CostomerNum / 2);
        TagOperator.hid("SingelRoomDiff");
    }
    else {
        TagOperator.show("SingelRoomDiff");
        LeastNum = parseInt(CostomerNum / 2) + 1;
    }

    for (var i = LeastNum; i <= CostomerNum; i++) {
        selectOperator.addOption(selRoomNum, i.toString(), i.toString());
    }
}
//成团产品价格计算
function getGroupHotelPrice(AdultNum, ChildNum, RoomNum) {
    //计算单间差
    var singleRoomDiefference = 0;
    var comsterNum = parseInt(AdultNum) + parseInt(ChildNum);
    singleRoomDiefference = parseInt(RoomNum) * 2 - parseInt(AdultNum);
    //总价
    var hfStandardRate = _g("hfStandardRate");
    var hfStandardChildRate = _g("hfStandardChildRate");
    var hfSingleRoomDifference = _g("hfSingleRoomDifference");
    var HotelSum = 0;
    //成人
    if (hfStandardRate != null) {
        HotelSum = AdultNum * parseFloat(hfStandardRate.value);
    }
    //儿童
    if (hfStandardChildRate != null) {
        if (hfStandardChildRate.value != "" && hfStandardChildRate.value != "0" && hfStandardChildRate.value != "0.00") {
            HotelSum += ChildNum * parseFloat(hfStandardChildRate.value);
        }
        else {
            HotelSum += ChildNum * parseFloat(hfStandardRate.value);
        }
    }
    //单价差
    if (hfSingleRoomDifference != null && hfSingleRoomDifference.value != "") {
        HotelSum += singleRoomDiefference * parseFloat(hfSingleRoomDifference.value);
    }
    return HotelSum;
}
//可选附加服务价格计算
function getAppendItemPrice() {
    var item = _g("AppendCheckbox_0");
    var i = 0;
    var sumPrice = 0;
    while (item != null) {
        if (item.checked) {
            var SelectNO = _g("AppendSelectNO_" + i.toString())
            var number = 0;
            for (var m = 0; m < SelectNO.length; m++) {
                if (SelectNO[m].selected) {
                    number = SelectNO[m].value;
                    break;
                }
            }
            var price = _g("AppendPrice_" + i.toString()).value;
            sumPrice = sumPrice + parseInt(number) * parseFloat(price)
        }
        i++;
        item = _g("AppendCheckbox_" + i.toString());
    }
    return sumPrice;
}
//价格计算
function CalcTotalPrice() {
    var days = _g("hfDuration");
    var AdultNum = getAdultNO();
    var ChildNum = getChildNO();
    var RoomNum = getRoomNO();
    var HotelSum = 0;
    var AirSum = 0;
    var VisaSum = 0;
    //是否为成团产品   
    var hfIsGroup = _g("hfIsGroup");
    //成团
    if (hfIsGroup != null && hfIsGroup.value.toUpperCase() == "TRUE") {
        HotelSum = getGroupHotelPrice(AdultNum, ChildNum, RoomNum);
        //        VisaSum = getVisaPrice(parseInt(AdultNum) + parseInt(ChildNum));
    }
    //非成团
    else {
        AirSum = getAirPrice(AdultNum, ChildNum);
        HotelSum = getHotelPrice(RoomNum);
        //        VisaSum = getVisaPrice(parseInt(AdultNum) + parseInt(ChildNum));
    }
    var AppendItemPrice = getAppendItemPrice();
    //产品价格
    var productPrice = parseFloat(HotelSum) + parseFloat(AirSum) + parseFloat(VisaSum);
    var ProductPrice = _g("ProductPrice");
    ProductPrice.innerHTML = "￥" + productPrice + "";
    //线路价格
    var totalSum = parseFloat(HotelSum) + parseFloat(AirSum) + parseFloat(VisaSum) + parseFloat(AppendItemPrice);
    var TotalPrices = _g("TotalPrices");
    TotalPrices.innerHTML = "￥" + totalSum + "";

}
//==============================取预定数据==============================

//酒店
function GetHotelBookingProduct(RoomNum) {
    var strResult = "";
    var A_PPlid = _g("InputHotelInfo_1");
    var k = 1;
    while (A_PPlid != null && A_PPlid.value != "-1") {

        if (k > 1) {
            if (A_PPlid.value != _g("InputHotelInfo_" + (k - 1))) {
                var hotelinfostring = A_PPlid.value;
                if (hotelinfostring.lastIndexOf('|') > 0) {
                    hotelinfostring = hotelinfostring.substring(0, hotelinfostring.length - 1)
                }

                var hotelinfo = hotelinfostring.split('|');
                for (var i = 0; i < hotelinfo.length; i++) {
                    if (hotelinfo[i] != "") {
                        var hotel = hotelinfo[i].split(',');
                        strResult += "<Product>";
                        strResult += "<PPlid>";
                        strResult += hotel[0];
                        strResult += "</PPlid>";
                        strResult += "<ElementKey>";
                        strResult += hotel[1];
                        strResult += "</ElementKey>";
                        strResult += "<ElementSubKey>";
                        strResult += hotel[2];
                        strResult += "</ElementSubKey>";
                        strResult += "<ElementKeyText>";
                        strResult += hotel[3];
                        strResult += "</ElementKeyText>";
                        strResult += "<ElementSubKeyText>";
                        strResult += hotel[4];
                        strResult += "</ElementSubKeyText>";
                        strResult += "<ElementType>";
                        strResult += "Hotel";
                        strResult += "</ElementType>";
                        strResult += "<Date>";
                        strResult += hotel[5];
                        strResult += "</Date>";
                        strResult += "<Amount>";
                        strResult += RoomNum.toString();
                        strResult += "</Amount>";
                        strResult += "</Product>";
                    }
                }
            }
        }
        else {
            var hotelinfostring = A_PPlid.value;
            if (hotelinfostring.lastIndexOf('|') > 0) {
                hotelinfostring = hotelinfostring.substring(0, hotelinfostring.length - 1)
            }
            var hotelinfo = hotelinfostring.split('|');
            for (var i = 0; i < hotelinfo.length; i++) {
                var hotel = hotelinfo[i].split(',');
                strResult += "<Product>";
                strResult += "<PPlid>";
                strResult += hotel[0];
                strResult += "</PPlid>";
                strResult += "<ElementKey>";
                strResult += hotel[1];
                strResult += "</ElementKey>";
                strResult += "<ElementSubKey>";
                strResult += hotel[2];
                strResult += "</ElementSubKey>";
                strResult += "<ElementKeyText>";
                strResult += hotel[3];
                strResult += "</ElementKeyText>";
                strResult += "<ElementSubKeyText>";
                strResult += hotel[4];
                strResult += "</ElementSubKeyText>";
                strResult += "<ElementType>";
                strResult += "Hotel";
                strResult += "</ElementType>";
                strResult += "<Date>";
                strResult += hotel[5];
                strResult += "</Date>";
                strResult += "<Amount>";
                strResult += RoomNum.toString();
                strResult += "</Amount>";
                strResult += "</Product>";
            }
        }

        k++;
        A_PPlid = _g("InputHotelInfo_" + k);
    }
    return strResult;
}
//机票
function GetAirBookingProduct(CustomNum) {
    var strResult = "";
    var A_PPlid = _g("InputPPLDID_1");
    var i = 1;
    while (A_PPlid != null && A_PPlid.value != "-1") {
        var A_key = _g("InputKey_" + i);
        var fdate = _g("InputDepartureDay_" + i);
        strResult += "<Product>";
        strResult += "<PPlid>";
        strResult += A_PPlid.value;
        strResult += "</PPlid>";
        strResult += "<ElementKey>";
        strResult += A_key.value;
        strResult += "</ElementKey>";
        strResult += "<ElementSubKey>";
        strResult += "0";
        strResult += "</ElementSubKey>";
        strResult += "<ElementKeyText>";
        strResult += "";
        strResult += "</ElementKeyText>";
        strResult += "<ElementSubKeyText>";
        strResult += "";
        strResult += "</ElementSubKeyText>";
        strResult += "<ElementType>";
        strResult += "Air";
        strResult += "</ElementType>";
        strResult += "<Date>";
        if (fdate.value != undefined) {
            strResult += fdate.value;
        }
        else {
            if (fdate.innerText) {
                strResult += fdate.innerText;
            }
            else {
                strResult += fdate.textContent;
            }
        }
        strResult += "</Date>";
        strResult += "<Amount>";
        strResult += CustomNum.toString();
        strResult += "</Amount>";
        strResult += "</Product>"
        i++;
        A_PPlid = _g("InputPPLDID_" + i);
    }
    return strResult;
}
//签证
function GetVisaBookingProduct(CustomNum) {
    var strResult = "";
    var i = 1;
    var V_PPlid = _g("InputOtherInfo_" + i);
    while (V_PPlid != null) {
        var otherinfostring = V_PPlid.value;
        if (otherinfostring.lastIndexOf('|') > 0) {
            otherinfostring = otherinfostring.substring(0, otherinfostring.length - 1)
        }
        var otherinfo = otherinfostring.split('|');
        var type = _g("InputType_" + i.toString()).value;
        if (type == "visa") {
            for (var k = 0; k < otherinfo.length; k++) {
                if (otherinfo[k] != "") {
                    var other = otherinfo[k].split(',');
                    strResult += "<Product>";
                    strResult += "<PPlid>";
                    strResult += other[0];
                    strResult += "</PPlid>";
                    strResult += "<ElementKey>";
                    strResult += other[1];
                    strResult += "</ElementKey>";
                    strResult += "<ElementSubKey>";
                    strResult += "0";
                    strResult += "</ElementSubKey>";
                    strResult += "<ElementKeyText>";
                    strResult += other[2];
                    strResult += "</ElementKeyText>";
                    strResult += "<ElementSubKeyText>";
                    strResult += "";
                    strResult += "</ElementSubKeyText>";
                    strResult += "<ElementType>";
                    strResult += "Visa";
                    strResult += "</ElementType>";
                    strResult += "<Date>";
                    strResult += other[3];
                    strResult += "</Date>";
                    strResult += "<Amount>";
                    strResult += CustomNum.toString();
                    strResult += "</Amount>";
                    strResult += "</Product>";
                }
            }
        }
        else if (type == "other") {
            for (var k = 0; k < otherinfo.length; k++) {
                if (otherinfo[k] != "") {
                    var other = otherinfo[k].split(',');
                    strResult += "<Product>";
                    strResult += "<PPlid>";
                    strResult += other[0];
                    strResult += "</PPlid>";
                    strResult += "<ElementKey>";
                    strResult += other[1];
                    strResult += "</ElementKey>";
                    strResult += "<ElementSubKey>";
                    strResult += "0";
                    strResult += "</ElementSubKey>";
                    strResult += "<ElementKeyText>";
                    strResult += other[2];
                    strResult += "</ElementKeyText>";
                    strResult += "<ElementSubKeyText>";
                    strResult += "";
                    strResult += "</ElementSubKeyText>";
                    strResult += "<ElementType>";
                    strResult += "Other";
                    strResult += "</ElementType>";
                    strResult += "<Date>";
                    strResult += other[3];
                    strResult += "</Date>";
                    strResult += "<Amount>";
                    strResult += CustomNum.toString();
                    strResult += "</Amount>";
                    strResult += "</Product>";
                }
            }
        }
        i++;
        V_PPlid = _g("InputOtherInfo_" + i);
    }
    return strResult;
}
//其他产品
function GetOtherBookingProdcut() {
    var strResult = "";
    var i = 0;
    var chkOtherP = _g("AppendCheckbox_" + i.toString());
    while (chkOtherP != null) {
        if (chkOtherP.checked) {
            var Num = selectOperator.getSelectValue("AppendSelectNO_" + i.toString());
            var O_key = _g("Appendkey_" + i.toString());
            var OLink = _g("AppendKeyText_" + i.toString());
            var fdate = selectOperator.getSelectValue("AppendPrudcutDate_" + i.toString());
            if (fdate == null) {
                var date = new Date();
                fdate = date.getFullYear().toString() + "-" + date.getMonth().toString() + "-" + date.getDay().toString();
            }
            var type = _g("AppendType_" + i.toString()).value;
            var O_PPlid = _g("AppendPPLID_" + i.toString());
            if (parseInt(Num) > 0) {
                if (type == "Visa") {
                    strResult += "<Product>";
                    strResult += "<PPlid>";
                    strResult += O_PPlid.value;
                    strResult += "</PPlid>";
                    strResult += "<ElementKey>";
                    strResult += O_key.value;
                    strResult += "</ElementKey>";
                    strResult += "<ElementSubKey>";
                    strResult += "0";
                    strResult += "</ElementSubKey>";
                    strResult += "<ElementKeyText>";
                    strResult += OLink.value;
                    strResult += "</ElementKeyText>";
                    strResult += "<ElementSubKeyText>";
                    strResult += "";
                    strResult += "</ElementSubKeyText>";
                    strResult += "<ElementType>";
                    strResult += "Visa";
                    strResult += "</ElementType>";
                    strResult += "<Date>";
                    var date = new Date();
                    strResult += date.getFullYear().toString() + "-" + date.getMonth().toString() + "-" + date.getDay().toString();
                    strResult += "</Date>";
                    strResult += "<Amount>";
                    strResult += Num.toString();
                    strResult += "</Amount>";
                    strResult += "</Product>";
                }
                if (type == "Other") {
                    strResult += "<Product>";
                    strResult += "<PPlid>";
                    strResult += O_PPlid.value;
                    strResult += "</PPlid>";
                    strResult += "<ElementKey>";
                    strResult += O_key.value;
                    strResult += "</ElementKey>";
                    strResult += "<ElementSubKey>";
                    strResult += "0";
                    strResult += "</ElementSubKey>";
                    strResult += "<ElementKeyText>";
                    strResult += OLink.value;
                    strResult += "</ElementKeyText>";
                    strResult += "<ElementSubKeyText>";
                    strResult += "";
                    strResult += "</ElementSubKeyText>";
                    strResult += "<ElementType>";
                    strResult += "Other";
                    strResult += "</ElementType>";
                    strResult += "<Date>";
                    strResult += fdate;
                    strResult += "</Date>";
                    strResult += "<Amount>";
                    strResult += Num.toString();
                    strResult += "</Amount>";
                    strResult += "</Product>";
                }
            }
        }
        i++;
        chkOtherP = _g("AppendCheckbox_" + i.toString());
    }
    return strResult;
}
//预定
function GetBookingProduct() {
    var AdultNum = getAdultNO();
    var ChildNum = getChildNO();
    var RoomNum = getRoomNO();
    var No = 1;
    var strRuesult = "";
    strRuesult += "<Document>";
    strRuesult += "<ds>";
    strRuesult += GetHotelBookingProduct(RoomNum);
    strRuesult += GetAirBookingProduct(parseFloat(AdultNum) + parseFloat(ChildNum));
    strRuesult += GetVisaBookingProduct(parseFloat(AdultNum) + parseFloat(ChildNum));
    strRuesult += GetOtherBookingProdcut();
    strRuesult += "</ds>";
    strRuesult += "</Document>";
    var hfBookingData = _g("hfBookingData");
    hfBookingData.value = encodeURI(strRuesult);
}

//=============================更换酒店=====================

//更换酒店
function HotelChangeAndHid() {
    var checkhotel = _g("Hotel_0");
    var info = "";
    var hid = "";
    var price = "";
    var strResult = "";
    var i = 0;
    strResult += "<ProductInfo>";
    strResult += "<HotelList>";
    while (checkhotel != null) {
        if (checkhotel.checked) {
            info = _g("HidHotelInfo_" + i.toString()).value;
            hid = _g("HidhInfo_" + i.toString()).value;
            price = _g("HidhHotelPirce_" + i.toString()).value;
            var hotel = info.split(',');
            strResult += "<DefaultHotel>";
            strResult += "<StartDate>";
            strResult += hotel[0];
            strResult += "</StartDate>";
            strResult += "<EndDate>";
            strResult += hotel[1];
            strResult += "</EndDate>";
            strResult += "<HotelID>";
            strResult += hotel[2];
            strResult += "</HotelID>";
            strResult += "<HotelName>";
            strResult += hotel[3];
            strResult += "</HotelName>";
            strResult += "<RoomName>";
            strResult += hotel[4];
            strResult += "</RoomName>";
            strResult += "<RoomOtherInfo>";
            strResult += hotel[5];
            strResult += "</RoomOtherInfo>";
            strResult += "<Star>";
            strResult += hotel[6];
            strResult += "</Star>";
            strResult += "<HidInfo>";
            strResult += hid;
            strResult += "</HidInfo>";
            strResult += "<PriceInfo>";
            strResult += price;
            strResult += "</PriceInfo>";
            strResult += "</DefaultHotel>";
        }
        i++;
        checkhotel = _g("Hotel_" + i.toString());
    }
    strResult += "<SelectHotel>";
    strResult += "hotel";
    strResult += "</SelectHotel>";
    strResult += "</HotelList>";
    strResult += "</ProductInfo>";
    var productid = _g("hfProductID");
    var DATE = _g("hfDepartureDate");

    var xmlhttp = GLOBAL.Lang.createAjaxObject();
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                var hotel = _g("hotelDIV");
                if (hotel != "null" && xmlhttp.responseText != "") {
                    hotel.innerText = "";
                    hotel.innerHTML = xmlhttp.responseText;
                    var hoteldiv = _g("ChangeHotel");
                    hoteldiv.style.display = "none";
                    CalcTotalPrice();
                }
            }
        }
    }
    xmlhttp.open('post', 'NonRealTimeBookPreAjax.ashx?OprType=HotelChange&ProductID=' + productid.value + "&DepartureDay=" + DATE.value, true);
    xmlhttp.setRequestHeader("strResult", escape(strResult));
    xmlhttp.send(null);
}

//显示产品详情页
function showProductInfo(productID, productType, isInstance) {
    window.open("p" + productID + "i" + productType + "a" + isInstance);
}
