﻿var pop_remain = false; //暂无实际用处，可扩展
var popup_layer_id = 0; //  显示层的Div的id
var isIE = (document.all) ? true : false;

var mySortedCities = new Array();
var allLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
sortByLetter(citys, allLetters, 0); //取得按字母顺序排序的城市数组

function sortByLetter(oCityArr, oLetters, szmCharIndex) {
    var cityArrLen = oCityArr.length;
    for (var i = 0; i < oLetters.length; i++) {
        var letter = oLetters.charAt(i).toString();
        var oArrToStore = new Array();
        for (var ii = 0; ii < cityArrLen; ii++) {
            var leftLetter = oCityArr[ii][2].charAt(szmCharIndex).toUpperCase();
            if (letter == leftLetter) {
                var oArrLen = oArrToStore.length;
                oArrToStore[oArrLen] = oCityArr[ii];
            }
            if (cityArrLen == ii + 1) {
                if (oArrToStore.length > 1) {
                    oArrToStore = sortSingleCityArrByLetter(sortSingleCityArrByLetter(oArrToStore, oLetters, szmCharIndex + 1), oLetters, szmCharIndex + 2);
                }
                for (var mm = 0; mm < oArrToStore.length; mm++) {
                    var tmpLen = mySortedCities.length;
                    //mySortedCities[tmpLen] = new Array();

                    mySortedCities[tmpLen] = oArrToStore[mm];
                }
            }
        }
    }
    return mySortedCities;
}
// 按照汉语拼音里的前三个字母继续排序
function sortSingleCityArrByLetter(oCityArr, oLetters, szmCharIndex) {
    var arrRank = 0;
    var oArrToStore = new Array();
    for (var i = 0; i < oLetters.length; i++) {
        var letter = oLetters.charAt(i).toString();
        for (var ii = 0; ii < oCityArr.length; ii++) {
            var leftLetter = oCityArr[ii][2].charAt(szmCharIndex).toUpperCase();
            if (szmCharIndex == 1) {
                if (letter == leftLetter) {
                    oArrToStore[arrRank] = oCityArr[ii];
                    arrRank++;
                }
            }
            else if (szmCharIndex == 2) {
                var charCurIndex = oLetters.indexOf(leftLetter);
                var charCurPrevIndex = oLetters.indexOf(oCityArr[ii][2].charAt(szmCharIndex - 1).toUpperCase());
                for (var kk = ii + 1; kk < oCityArr.length; kk++) {
                    var charNextIndex = oLetters.indexOf(oCityArr[kk][2].charAt(szmCharIndex).toUpperCase());
                    var charPreNextIndex = oLetters.indexOf(oCityArr[kk][2].charAt(szmCharIndex - 1).toUpperCase());
                    if (charNextIndex < charCurIndex && charPreNextIndex == charCurPrevIndex) {
                        var tmpArr = oCityArr[ii];
                        oCityArr[ii] = oCityArr[kk];
                        oCityArr[kk] = tmpArr;
                    }
                }
            }
        }
    }
    for (var k = 0; k < oArrToStore.length; k++) {
        oCityArr[k] = oArrToStore[k];
    }
    return oCityArr;
}


//根据航空公司二字码取公司名
function getAirCompanyByEzm(oEzm, oArr) {
    if (oEzm.length == 0) oEzm = "";
    var airCompanyName = "";
    for (var i = 0, len = oArr.length / 2; i < len; i++) {
        if (oEzm == oArr[2 * i]) {
            airCompanyName = oArr[2 * i + 1];
            break;
        }
    }
    return airCompanyName;
}

//根据航空公司名取二字码
function getEzmByAirCompany(oName, oArr) {
    var oEzm = "";
    for (var i = 0, len = oArr.length / 2; i < len; i++) {
        if (oName == oArr[2 * i + 1]) {
            oEzm = oArr[2 * i];
            break;
        }
    }
    return oEzm;
}

var target_City_Field, target_City_Code; //城市拼音和汉字  城市三字码
var target_AirCompany_Field, target_AirCompany_Code; //航空公司和对应二字码

//初始化，写入一个隐藏层，当单击选择城市按钮时，显示该层(需要确定位置)
function cityPanelSetUp(top_loc, left_loc, prompt, layer_id) {
    var ccols = 0;
    document.write(
	"<div onclick='hidePopup()' id='" + layer_id + "' " +
	"style='background:red; width:480px; height:220px; background-color:white; font-size:9pt; " +
	" border:solid 1px #ccc; " +
	"position:absolute; top:" + top_loc +
	"; left:" + left_loc +
	"; overflow:scroll; white-space: nowrap; " +
	"visibility:hidden; z-index:1;' >" +
	"<div style='text-align: left;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
	prompt + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span onclick='hidePopup()' style='color:blue;cursor:pointer'>关闭</span>" +
	"</div><table id='tbCityFloatLayer' width=450 height='120' >");
    var currentLetter = '0';
    for (var i = 0; i < mySortedCities.length; i++) {
        var lt = mySortedCities[i][2].charAt(0).toUpperCase();
        if (currentLetter != lt) {
            if (currentLetter == '0') document.write("<tr><td>");
            else document.write("</tr></tr><td>");
            currentLetter = lt;
            document.write(currentLetter + "</td>");
            ccols = 0;
        }
        var cname = mySortedCities[i][1];
        var cci = 0;
        var cc = cname.toUpperCase().charCodeAt(cci);
        while (cci < cname.length && cc <= 90) {
            cci++;
            cc = cname.toUpperCase().charCodeAt(cci);
        }
        var cname_cn = cname.substring(cci);

        ccols++;
        if (ccols > 10) {
            document.write("</tr><td>&nbsp;</td>");
            ccols = 0;
        }
        document.write("<td");
        if (cname_cn.length > 3) {
            document.write(" colspan=2");
            ccols++;
        } else document.write("  width=40");

        document.write("><span style='cursor:pointer' title='单击选择' onclick='cityCodeSet(\"" +
		mySortedCities[i][1] + "\" , \"" +
		 mySortedCities[i][0] + "\");'> " +
		cname_cn +
		"</span></td>");
    }
    document.write("</tr></table></div>");
}

// 设置选择的城市和三字码
function cityCodeSet(ctname, ctcode) {
    document.getElementById(target_City_Field).value = ctname;
    //document.getElementById(target_City_Code).value = ctcode;
    hidePopup();
}

//可视尺寸
function windowW() { return self.innerWidth || de && de.clientWidth || document.body.clientWidth; }
function windowH() { return self.innerHeight || de && de.clientHeight || document.body.clientHeight; }
//页面尺寸
function pageW() { var s = document.body.scrollWidth; var c = windowW(); return s > c ? s : c; }
function pageH() { var s = document.body.scrollHeight; var c = windowH(); return s > c ? s : c; }
//滚动条位置
function scrollX() { return self.pageXOffset || de && de.scrollLeft || document.body.scrollLeft; }
function scrollY() { return self.pageYOffset || de && de.scrollTop || document.body.scrollTop; }

//显示城市层
function showCityLayer(event, cityName, cityCode, pos) {
    pop_remain = true;
    target_City_Field = cityName;
    target_City_Code = cityCode;
    hidePopup();
    popup_layer_id = "cityFloatLayer"; //显示城市选择层
    var current_layer = document.getElementById(popup_layer_id);
    var divWidth = parseInt(current_layer.style.width, 10); //选择层宽度
    var ctrlWidth = parseInt(getControlWidthAndHeightByControl(document.getElementById(cityName)).split("-")[0]); //城市输入文本框宽度
    var posArr = pos.split("-");
    var leftPos = parseInt(posArr[0]); //使浮动层正好对齐到文本框的左边
    if (leftPos + divWidth > pageW() + scrollX()) {
        leftPos = (leftPos - divWidth + ctrlWidth); //使浮动层正好对齐到文本框的右边
    }
    if (isIE) {
        current_layer.style.top = posArr[1];
        current_layer.style.left = leftPos;

    }
    else {
        current_layer.style.top = posArr[1] + "px";
        current_layer.style.left = leftPos + "px";
    }
    current_layer.style.visibility = "visible";
    setSelectControlHidden(current_layer); //隐藏select
    //    if (isIE)
    //        window.document.attachEvent("onclick", hidePopup);
    //    else
    //        window.document.addEventListener("click", hidePopup, false);

}

//function setFloatLayerDisplayByDomClick() {
//    //    alert(popup_layer_id);
//    if (popup_layer_id != 0)
//        document.getElementById(popup_layer_id).style.visibility = "hidden";

//    //if (isIE && ieVersion < 7) {  //将所有select置为可用
//    setSelectControlVisible(document.getElementById("cityFloatLayer"));
//    //}
//    if (isIE)
//        window.document.detachEvent("onclick", hidePopup);
//    else
//        window.document.removeEventListener("click", hidePopup, false);
//}

//关闭层
function hidePopup() {
    if (popup_layer_id != 0)
        document.getElementById(popup_layer_id).style.visibility = "hidden";

    //if (isIE && ieVersion < 7) {  //将所有select置为可用
    setSelectControlVisible(document.getElementById("cityFloatLayer"));
    //}
}

//单击按钮，显示城市层
function showCityToSelect(event, oTxtId) {
    var orgTxt, orgHiddenField;
    var pos;
    if (oTxtId == "orgCity") {
        orgTxt = "orgCity";
        orgHiddenField = "org";
    }
    else if (oTxtId == "dstCity") {
        orgTxt = "dstCity";
        orgHiddenField = "dst";
    }
    else {
        orgTxt = "transferCity";
        orgHiddenField = "hfTransferSzm";
    }
    pos = fixDivCoordinate(document.getElementById(orgTxt));
    showCityLayer(event, orgTxt, orgHiddenField, pos);
}

//控制提示div的位置，使之刚好出现在文本输入框的下面
function fixDivCoordinate(oTxt) {
    var topPos = 0, leftPos = 0;
    aTag = oTxt;
    //    do {
    //        aTag = oTxt.offsetParent;
    //        topPos += aTag.offsetTop;
    //        leftPos += aTag.offsetLeft;
    //    } while (aTag.tagName != "BODY" && aTag.tagName != "HTML");
    while (aTag = aTag.offsetParent) {
        leftPos += aTag.offsetLeft;
        topPos += aTag.offsetTop;
    }
    return (oTxt.offsetLeft + leftPos).toString() + "-" + (oTxt.offsetTop + topPos + oTxt.offsetHeight + 2).toString();
}

//获取控件位置
function fixControlCoordinate(oControl) {
    var leftPos = oControl.offsetLeft;
    var topPos = oControl.offsetTop;
    var height = oControl.offsetHeight;
    while (oControl = oControl.offsetParent) {
        leftPos += oControl.offsetLeft;
        topPos += oControl.offsetTop;
    }
    return leftPos + "-" + topPos;
}

//全选文本框的内容
function txtSelectAll(oTxt, oNum) {
    var range = oTxt.createTextRange();
    if (oNum > 0)
        range.select();
    else range.moveStart('character', oTxt.value.length);
}

// 将光标停在对象的最后
function setCursorAtLast(oTxt) {
    oTxt.focus();
    var range = oTxt.createTextRange();
    range.moveStart('character', oTxt.value.length);
    range.collapse(true);
    range.select();
}

/*航空公司*/
var airCompanyToSelectArr = [
'', '所有',
'CZ', '中国南方航空公司',
'MU', '中国东方航空公司',
'CA', '中国国际航空公司',
'HU', '海南航空公司',
'MF', '厦门航空公司',
'FM', '上海航空公司',
'ZH', '深圳航空公司',
'SC', '山东航空公司',
'3U', '四川航空公司',
'EU', '鹰联航空有限公司',
'BK', '奥凯航空公司',
'KN', '中国联合航空公司',
'8C', '东星航空公司',
'HO', '吉祥航空公司',
'G5', '华夏航空公司',
'8L', '祥鹏航空公司',
'NX', '澳门航空公司',
'GS', '新华快运航空公司',
'PN', '西部航空公司',
'VD', '鲲鹏航空公司'

];

function airlineCellChange(code, value) {
    document.write("<tr><td style='cursor:pointer; font-size:9pt;'" +
	" onmouseover=\"this.style.color='white';this.style.backgroundColor='navy';\" " +
	" onmouseout=\"this.style.color='black';this.style.backgroundColor='white';\" " +
	" onclick='airlineCodeSet(\"" + code + "\" , \"" + value + "\");'>" +
	value +
	"</td></tr>");
}

function airlinePanelSetUp(pos, left_pos, layer_id, oTxtId) {
    target_AirCompany_Code = "";
    target_AirCompany_Field = "";
    var oTxt = document.getElementById(oTxtId);
    var txtWidth = oTxt.offsetWidth;
    var tbWidth = (txtWidth > 120) ? txtWidth : 120;
    document.write(
	"<div onclick='hidePopup()' id='" + layer_id +
	"' style='width:" + tbWidth + "; height:220px;overflow-y:scroll;position: absolute; left:" + left_pos +
	"; top: " + pos +
	"; visibility: hidden; background-color:white; z-index:9999; border-style:solid; border-width:1px; border-color:#ccc;'>" +
    //"<div style='text-align: right;'>&nbsp;&nbsp;&nbsp;<span onclick='hidePopup()' style='color:blue;cursor:pointer'>关闭</span></div>" +
	"<table width='" + tbWidth + "'>");
    var ai = 0;
    for (var ai = 0; ai < airCompanyToSelectArr.length / 2; ai++) {
        airlineCellChange(airCompanyToSelectArr[ai * 2], airCompanyToSelectArr[ai * 2 + 1]);
    }
    document.write("</table></div>");
}

function airlineCodeSet(airlineCode, airlineName) {
    document.getElementById(target_AirCompany_Field).value = airlineName;
    //document.getElementById(target_AirCompany_Code).value = airlineCode;
    hidePopup();
}

//显示航空公司层
function showAirCompanyLayer(event, airCompanyName, airCompanyEzm, pos) {
    pop_remain = true;
    target_AirCompany_Code = airCompanyEzm;
    target_AirCompany_Field = airCompanyName;
    hidePopup();
    popup_layer_id = "airlineFloatLayer"; //显示航空公司选择层
    var current_layer = document.getElementById(popup_layer_id);
    var posArr = pos.split("-");
    if (isIE) {
        current_layer.style.left = posArr[0];
        current_layer.style.top = posArr[1];
    }
    else {
        current_layer.style.left = posArr[0] + "px";
        current_layer.style.top = posArr[1] + "px";
    }
    current_layer.style.visibility = "visible";
}

//单击按钮，显示航空公司层
function showAirCompanyToSelect(event, oTxtId) {
    var airCompanyTxt, airLineHiddenField;
    var pos;
    if (oTxtId == "txtAirCompanys") {
        airCompanyTxt = "txtAirCompanys";
        airLineHiddenField = "airline";
    }
    pos = fixDivCoordinate(document.getElementById(airCompanyTxt));
    showAirCompanyLayer(event, airCompanyTxt, airLineHiddenField, pos);
}
