222 lines
11 KiB
JavaScript
222 lines
11 KiB
JavaScript
(function() {
|
||
var flight_train_map = {
|
||
"WYW":"WXN","SEQ":"SYX","SHH":"SHA","SNH":"SHA","AOH":"SHA","SXH":"SHA",
|
||
"DPK":"DOY","ZWJ":"ZHY","ZSQ":"ZGN","ZGQ":"ZGN","LVK":"LYI","UYK":"LYI",
|
||
"DUT":"DDG","LHM":"LJG","YWH":"YIW","WWT":"HLH","WVC":"WUA","WXC":"WUA",
|
||
"WMR":"URC","JJG":"JIU","JGG":"JGS","YMR":"YIN","YNR":"YIN","YCB":"LDS",
|
||
"FSQ":"FUO","JMB":"JMU","KHR":"KRY","LZJ":"LHW","LVJ":"LHW","LAJ":"LHW",
|
||
"XRZ":"ACX","JGX":"JGD","BTC":"BAV","BDC":"BAV","BJP":"BJS","VAP":"BJS",
|
||
"BOP":"BJS","VNP":"BJS","BXP":"BJS","BHZ":"BHY","NJH":"NKG","NKH":"NKG",
|
||
"NCW":"NAO","NNZ":"NNG","NCG":"KHN","NUH":"NTG","NFF":"NNY","BOR":"BPL",
|
||
"XMS":"XMN","XKS":"XMN","TZH":"HYN","HFH":"HFE","COH":"HFE","JLL":"JIL",
|
||
"HHC":"HET","NDC":"HET","VTR":"HTN","HMR":"HMI","HLR":"HMI","HBB":"HRB",
|
||
"VBB":"HRB","VAB":"HRB","TSP":"TVS","FUP":"TVS","KSR":"KHG","JGJ":"JGN",
|
||
"GUJ":"GYU","DTV":"DAT","DZX":"DQA","DKM":"DLU","DLT":"DLC","DFT":"DLC",
|
||
"TSJ":"THQ","TBP":"TSN","TJP":"TSN","TIP":"TSN","TXP":"TSN","TYV":"TYN",
|
||
"TBV":"TYN","TDV":"TYN","WKK":"WEH","NVH":"NGB","AQH":"AQG","APH":"AQG",
|
||
"AKY":"AKA","ASW":"AVA","YBW":"YBP","YCN":"YIH","HAN":"YIH","CZH":"CZX",
|
||
"ESH":"CZX","VGQ":"CGD","GYW":"GYS","GBQ":"CAN","GGQ":"CAN","GZQ":"CAN",
|
||
"IZQ":"CAN","GHW":"GHN","KLR":"KRL","KCR":"KCA","YJL":"YNJ","YWY":"ENY",
|
||
"DIQ":"DYG","ZYJ":"YZY","XCH":"XUZ","UUH":"XUZ","ESN":"ENH","ICW":"CTU",
|
||
"CNW":"CTU","CDW":"CTU","YLH":"YTY","LSO":"LXA","JRQ":"SWA","PRW":"PZI",
|
||
"DHJ":"DNH","WXH":"WUX","WGH":"WUX","IFH":"WUX","KMM":"KMG","KXM":"KMG",
|
||
"ZDW":"ZAT","JCG":"JDZ","CYD":"CHG","HGH":"HGH","HZH":"HGH","XHH":"HGH",
|
||
"LXC":"LXI","LZZ":"LZH","GRO":"GOQ","GBZ":"KWL","GLZ":"KWL","TCH":"580",
|
||
"UQW":"LIA","WZZ":"WUZ","ALY":"UYN","WAS":"WUS","WHN":"WUH","AOQ":"LLF",
|
||
"HOY":"HZG","SYT":"SHE","SBT":"SHE","SDT":"SHE","QRS":"JJN","QYS":"JJN",
|
||
"LYF":"LYA","LDF":"LYA","JNK":"TNA","JAK":"TNA","JGK":"TNA","JIK":"JNG",
|
||
"HMQ":"HAK","VUQ":"HAK","HRX":"HLD","AUH":"HIA","AMH":"HIA","SZQ":"SZX",
|
||
"OSQ":"SZX","BJQ":"SZX","IOQ":"SZX","RZH":"WNZ","VRH":"WNZ","ZJZ":"ZHA",
|
||
"ZWQ":"ZHA","MLX":"NZH","MVX":"OHE","WFK":"WEF","YAK":"YNT","MDB":"MDG",
|
||
"ZHQ":"ZUH","ZIQ":"ZUH","BIZ":"AEB","AFH":"YNZ","VVP":"SJW","SJP":"SJW",
|
||
"FZS":"FOC","FYS":"FOC","QTP":"SHP","MYW":"MIG","SZH":"SZV","OHH":"SZV",
|
||
"KAH":"SZV","ITH":"SZV","QEH":"JUZ","XFN":"XFN","XWN":"XFN","XXO":"XNN",
|
||
"EAY":"SIA","XAY":"SIA","CAY":"SIA","XXO":"SIA","ECW":"XIC","ENW":"XIC",
|
||
"GIW":"KWE","GZG":"KOW","CFD":"CIF","CID":"CIF","RXW":"DAX","YNV":"YCU",
|
||
"UIH":"LYG","UKH":"LYG","TLD":"TGO","ZIW":"ZYI","HDP":"HDG","HPP":"HDG",
|
||
"ZZF":"CGO","ZAF":"CGO","CUW":"CKG","CQW":"CKG","CRW":"CKG","JCJ":"JIC",
|
||
"RDQ":"TEN","YIJ":"INC","XTC":"XIL","JZD":"JNZ","JOD":"JNZ","CCT":"CGQ",
|
||
"CET":"CGQ","CRT":"CGQ","CSQ":"CSX","CWQ":"CSX","CBF":"CIH","CZF":"CIH",
|
||
"FYH":"FUG","ASR":"AKU","ART":"YIE","QDK":"TAO","AST":"AOG","AXT":"AOG",
|
||
"JXB":"JXA","HKH":"TXN","HJB":"HEK","QNW":"JIQ","QHX":"NDG"
|
||
};
|
||
|
||
var flight_train_styleHtml = [
|
||
//'<style>',
|
||
'._bb_flight_container {width:169px;border:1px solid rgba(9,2,4,0.2);border-radius:3px;box-shadow:3px 3px 2px rgba(0,0,0,0.03);font-family:"微软雅黑","宋体";}',
|
||
|
||
'._bb_flight_container .title {height:27px;background-color:#E07900;position:relative;}',
|
||
|
||
'._bb_flight_container .title .closeMe {color:#FFFFFF;font-size:24px;position:absolute;top:-4px;left:146px;cursor:pointer;}',
|
||
'._bb_flight_container .title .icon {width:18px;height:19px;background:url(http://www.liebao.cn/ticket/icon.png) no-repeat 0 0;position:absolute;top:4px;left:7px;}',
|
||
'._bb_flight_container .title .titleText {color:#FFFFFF;font-size:12px;position:absolute;top:5px;left:32px;}',
|
||
|
||
'._bb_flight_container .main {height:57px;background-color:#FFFFFF;}',
|
||
'._bb_flight_container .main .notice {font-size:14px;color:#000000;margin-left:8px;line-height:32px;}',
|
||
'._bb_flight_container .main .line {font-size:14px;color:#EF6900;margin-left:8px;}',
|
||
'._bb_flight_container .main .to {margin:0 2px 0 4px;}',
|
||
|
||
'._bb_flight_container .ticketList {margin:0;padding:0;list-style:none;}',
|
||
'._bb_flight_container .ticketList li {height:52px;border-top:1px solid #C4C4C4;background-color:#FFF5ED;position:relative;}',
|
||
'._bb_flight_container .ticketList .date {font-size:12px;color:#000000;position:absolute;left:8px;top:8px;}',
|
||
'._bb_flight_container .ticketList .price {font-size:14px;color:#EF6900;position:absolute;left:8px;top:28px;}',
|
||
'._bb_flight_container .ticketList .discount {font-size:12px;color:#6E6E6E;width:36px;text-align:right;position:absolute;left:56px;top:30px;}',
|
||
'._bb_flight_container .ticketList .buyIt {width:58px;height:28px;font-size:12px;color:#563100;text-align:center;line-height:29px;border:1px solid #D18720;border-radius:2px;background:-webkit-linear-gradient(top,#FBB016,#ED8A0D);box-shadow:1px 1px 2px rgba(0,0,0,0.15);cursor:pointer;position:absolute;left:105px;top:18px;}',
|
||
'._bb_flight_container .ticketList .buyIt:hover {background:-webkit-linear-gradient(top,#D07C11,#FFC245);}',
|
||
'._bb_flight_container .ticketList .buyIt:active {background:-webkit-linear-gradient(top,#FFC245,#D07C11);}',
|
||
//'</style>'
|
||
];
|
||
|
||
var flight_train_scriptHtml = [
|
||
//'<script type="text/javascript">',
|
||
'function _bb_flight_stat(version, type, value1, value2) {',
|
||
'flight_train_stat = document.createElement("img");',
|
||
'flight_train_stat.style.display = "none";',
|
||
'flight_train_stat.src = "http://liebao.tjweb.ijinshan.com/click/__infoc.gif"',
|
||
'+ "?actionname=liebao_80&ver=" + version + "&type=" + type',
|
||
'+ "&value1=" + encodeURIComponent(value1) + "&value2=" + encodeURIComponent(value2)',
|
||
'+ "&_t=" + (new Date()).getTime();',
|
||
'document.body.appendChild(flight_train_stat);',
|
||
'}',
|
||
'function _bb_flight_close() {',
|
||
'document.getElementsByClassName("_bb_flight_container")[0].style.display = "none";',
|
||
'}'
|
||
//'</script>'
|
||
];
|
||
|
||
//top负责显示/隐藏膏药
|
||
if (top === window) {
|
||
chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
|
||
if (request.ticketEvent == 'flightHide') {
|
||
document.getElementsByClassName("_bb_flight_container")[0].style.display = "none";
|
||
return ;
|
||
}
|
||
|
||
if (request.ticketEvent != 'flightShow') {
|
||
return ;
|
||
}
|
||
if (!request.query || !request.data || request.data.length == 0) {
|
||
return ;
|
||
}
|
||
|
||
var flight_train_tip = [
|
||
'<div class="title">',
|
||
'<div class="icon"></div>',
|
||
'<div class="titleText">没抢到火车票?</div>',
|
||
'<div class="closeMe" onclick="_bb_flight_close();_bb_flight_stat(\'' + request.version + '\', \'59\', \'\', \'\');">×</div>',
|
||
'</div>',
|
||
'<div class="main">',
|
||
'<div class="notice">快来看看特价机票</div>',
|
||
'<div class="line"><span>' + request.query.from + '</span><span class="to">—</span><span>' + request.query.to + '</span></div>',
|
||
'</div>',
|
||
'<ul class="ticketList">'
|
||
];
|
||
|
||
var flight_train_tickets = request.data;
|
||
|
||
for (var i = 0; i < flight_train_tickets.length ; i++) {
|
||
flight_train_tip.push(
|
||
'<li>',
|
||
'<div class="date">' + flight_train_tickets[i].date.replace(/-/g,'/') + '</div>',
|
||
'<div class="price">¥<span>' + flight_train_tickets[i].price + '</span></div>',
|
||
'<div class="discount"><span>' + parseInt(flight_train_tickets[i].discount, 10) / 10 + '</span>折</div>',
|
||
'<a class="buyIt" target="_blank" href="'
|
||
+ flight_train_tickets[i].order_url
|
||
+ '" onclick="_bb_flight_stat('
|
||
+ '\'' + request.version + '\', '
|
||
+ '\'58\', '
|
||
+ '\'' + (Date.parse(flight_train_tickets[i].date) - request.context.trainTimestamp) / 86400000 + '\', '
|
||
+ '\'' + request.query.from + '-' + request.query.to + '\''
|
||
+ ');">抢票</a>',
|
||
'</li>'
|
||
);
|
||
}
|
||
|
||
flight_train_tip.push('</ul>');
|
||
|
||
var flight_train_container;
|
||
|
||
if (!document.getElementsByClassName('_bb_flight_container').length) {
|
||
var flight_train_style = document.createElement('style');
|
||
flight_train_style.innerHTML = flight_train_styleHtml.join("\n");
|
||
document.body.appendChild(flight_train_style);
|
||
|
||
var flight_train_script = document.createElement('script');
|
||
flight_train_script.type = 'text/javascript';
|
||
flight_train_script.innerHTML = flight_train_scriptHtml.join("\n").replace(/####version####/, request.version);
|
||
document.body.appendChild(flight_train_script);
|
||
|
||
flight_train_container = document.createElement('div');
|
||
flight_train_container.className = '_bb_flight_container';
|
||
document.body.appendChild(flight_train_container);
|
||
} else {
|
||
flight_train_container = document.getElementsByClassName('_bb_flight_container')[0];
|
||
flight_train_container.style.display = 'block';
|
||
}
|
||
|
||
flight_train_container.innerHTML = flight_train_tip.join("\n");
|
||
flight_train_container.style.position = 'absolute';
|
||
|
||
//计算膏药相对于整个页面的位置
|
||
var trainIframe = document.getElementById('iframepage');
|
||
if (trainIframe !== null) { //在框架中订票
|
||
flight_train_container.style.top = (trainIframe.offsetTop + request.context.positionOffset.y ) + 'px';
|
||
flight_train_container.style.left = Math.max(trainIframe.offsetLeft + request.context.positionOffset.x - 171, 0) + 'px';
|
||
window.onresize = function() {
|
||
flight_train_container.style.left = Math.max(trainIframe.offsetLeft + request.context.positionOffset.x - 171, 0) + 'px';
|
||
};
|
||
} else { //全屏订票
|
||
flight_train_container.style.top = flight_train_main.offsetTop + 'px';
|
||
flight_train_container.style.left = Math.max(flight_train_main.offsetLeft - 171, 0) + 'px';
|
||
window.onresize = function() {
|
||
flight_train_container.style.left = Math.max(flight_train_main.offsetLeft - 171, 0) + 'px';
|
||
};
|
||
}
|
||
sendResponse({status: true});
|
||
});
|
||
}
|
||
|
||
//主界面(不管是在iframe里还是顶级)负责查询信息反馈
|
||
var flight_train_main = document.getElementById('main');
|
||
if (flight_train_main && flight_train_main.contentWindow) {
|
||
chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
|
||
if (request.ticketEvent != 'get12306Query') {
|
||
return ;
|
||
}
|
||
|
||
var flight_train_document = flight_train_main.contentWindow.document,
|
||
flight_train_fromInput = flight_train_document.getElementById('fromStation'),
|
||
flight_train_toInput = flight_train_document.getElementById('toStation'),
|
||
flight_train_dateInput = flight_train_document.getElementById('startdatepicker');
|
||
|
||
if (!flight_train_document || !flight_train_fromInput || !flight_train_toInput || !flight_train_dateInput) {
|
||
return ;
|
||
}
|
||
|
||
var flight_train_from = flight_train_fromInput.value,
|
||
flight_train_to = flight_train_toInput.value,
|
||
flight_train_date = flight_train_dateInput.value;
|
||
|
||
if (!flight_train_from || !flight_train_to || !flight_train_date) {
|
||
return ;
|
||
}
|
||
if (!flight_train_map[flight_train_from] || !flight_train_map[flight_train_to]) {
|
||
return ;
|
||
}
|
||
|
||
var flight_train_timestamp = Date.parse(flight_train_date);
|
||
|
||
sendResponse({
|
||
shortFrom: flight_train_map[flight_train_from],
|
||
shortTo: flight_train_map[flight_train_to],
|
||
date: flight_train_timestamp < Date.now() ? //今天
|
||
[flight_train_timestamp, flight_train_timestamp + 172800000] :
|
||
[flight_train_timestamp - 86400000, flight_train_timestamp + 86400000],
|
||
context: {
|
||
trainTimestamp: flight_train_timestamp,
|
||
positionOffset: {x: flight_train_main.offsetLeft, y: flight_train_main.offsetTop}
|
||
}
|
||
});
|
||
});
|
||
}
|
||
})(); |