Light12306/Mobile12306New/js/check_station.js

217 lines
5.3 KiB
JavaScript
Raw Normal View History

2014-08-21 17:20:34 +08:00
var CheckStaion = {
runing: false,
objs: {
"a": [],
"b": [],
"c": [],
"d": [],
"e": [],
"f": [],
"g": [],
"h": [],
"i": [],
"j": [],
"k": [],
"l": [],
"m": [],
"n": [],
"o": [],
"p": [],
"q": [],
"r": [],
"s": [],
"t": [],
"u": [],
"v": [],
"w": [],
"x": [],
"y": [],
"z": []
},
objsZh: {},
hotList: [],
callback: null,
init: function() {
if (CheckStaion.runing) {
return false;
}
CheckStaion.runing = true;
CheckStaion.formatStation();
CheckStaion.setHtml();
CheckStaion.bindEvent();
},
formatStation: function() {
CheckStaion.names = WIN["station_names"].substr(1);
CheckStaion.stationList = CheckStaion.names.split('@');
var sub = '',
arr = [];
for (var i = 0; i < CheckStaion.stationList.length; i++) {
sub = CheckStaion.stationList[i][0].toLowerCase();
if (!CheckStaion.objs[sub]) {
CheckStaion.objs[sub] = [];
}
arr = CheckStaion.stationList[i].split('|');
CheckStaion.objs[sub].push(arr);
sub = arr[1][0];
if (!CheckStaion.objsZh[sub]) {
CheckStaion.objsZh[sub] = [];
}
CheckStaion.objsZh[sub].push(arr);
};
CheckStaion.hotList = WIN["favorite_names"].substr(1).split('@');
},
setHtml: function() {
var html = '<div class="fixed_box" id="search_station"><header class="header"><div class="search_box"><a href="javascript:;" class="search_cancel" id="station_cancel">取消</a><div class="search_ipt"><input type="search" name="" placeholder="搜索车站" id="station_search" class="search_input" autocomplete="off"><i class="icon_remove_s"></i></div></div></header>';
// '<div class="box_insert">\
// <div class="form_title">最近查找</div>\
// <ul class="station_list">\
// <li><a href="javascript:;" title="北京" data-code="BJP">北京</a></li>\
// <li><a href="javascript:;" title="上海" data-code="SHH">上海</a></li>\
// <li><a href="javascript:;" title="天津" data-code="TJP">天津</a></li>\
// </ul></div>';
if (CheckStaion.hotList.length > 0) {
var arr = [];
html += '<div class="form_title">热门</div><div class="box"><ul class="station_list">';
for (var i = 0, len = CheckStaion.hotList.length; i < len; i++) {
arr = CheckStaion.hotList[i].split('|');
html += '<li><a href="javascript:;" title="' + arr[1] + '" data-code="' + arr[2] + '">' + arr[1] + '</a></li>';
};
html += '</ul></div><div class="suggest" id="station_suggest"><ul></ul></div></div>';
};
$('body').append(html);
},
show: function() {
$('#search_station').addClass('fixed_box_show');
},
hide: function() {
$('#search_station').removeClass('fixed_box_show');
},
bindEvent: function() {
//取消
$('#station_cancel').on('click', function() {
CheckStaion.hide();
if (CheckStaion.cancelCallback) {
CheckStaion.cancelCallback();
}
});
$('#station_search').on('input', function() {
var text = $(this).val(),
list;
if ($.trim(text)) {
CheckStaion.showSuggest(CheckStaion.searchKey($.trim(text).toLowerCase()));
}else{
$('#station_suggest ul').html('');
$('#station_suggest').hide();
}
});
$('#search_station [data-code]').live('click', function(events, handler) {
var name = $(this).attr('title'),
code = $(this).attr('data-code');
if (CheckStaion.callback) {
CheckStaion.callback(name, code);
}
$('#station_suggest ul').html('');
$('#station_suggest').hide();
$('#station_search').val('');
});
},
showSuggest: function(list) {
if (!list || list.length == 0) {
$('#station_suggest ul').html('');
$('#station_suggest').hide();
return;
}
var str = '';
// for (var i = 0, len = list.length>6?6:list.length; i < len; i++) {
for (var i = 0, len = list.length; i < len; i++) {
str += '<li><a href="javascript:;" title="' + list[i][1] + '" data-code="' + list[i][2] + '">' + list[i][1] + '</a></li>';
};
$('#station_suggest ul').html(str);
$('#station_suggest').show();
},
getSuggestList: function(text) {
if (!text) {
return [];
}
if (/^[\u4E00-\u9FA5]+$/.test(text[0])) {
return CheckStaion.searchKeyZh(text);
} else {
return CheckStaion.searchKey(text);
}
},
searchKey: function(text) {
if (!CheckStaion.objs[text[0]]) {
return [];
}
var list = CheckStaion.objs[text[0]],
arr = [],
arr1 = [],
arr2 = [],
arr3 = [];
if (text.length == 0) {
return list;
}
for (var i = 0, len = list.length; i < len; i++) {
if (list[i][4].indexOf(text) != -1) {
if (list[i][4] == text) {
arr1.unshift(list[i]);
} else {
arr1.push(list[i]);
}
} else if (list[i][3].indexOf(text) != -1) {
if (list[i][3] == text) {
arr2.unshift(list[i]);
} else {
arr2.push(list[i]);
}
} else if (list[i][0].indexOf(text) != -1) {
if (list[i][0] == text) {
arr3.unshift(list[i]);
} else {
arr3.push(list[i]);
}
}
};
arr = arr1.sort(CheckStaion.sort).concat(arr2.sort(CheckStaion.sort), arr3.sort(CheckStaion.sort));
return arr;
},
searchKeyZh: function(text) {
if (!CheckStaion.objsZh[text[0]]) {
return [];
}
var list = CheckStaion.objsZh[text[0]],
arr = [];
if (text.length == 1) {
return list;
}
for (var i = 0, len = list.length; i < len; i++) {
if (list[i][1].indexOf(text) != -1) {
arr.push(list[i]);
};
};
return arr.sort(CheckStaion.sort);
},
sort: function(st1, st2) {
return parseInt(st1[5]) > parseInt(st2[5]) ? 1 : -1;
}
}