var CHG_DATA = {
	version :0,
	datas : []
};
var ALL_DATA = {
	version :0,
	datas : []
};
var CHG_MAX_SIZE = 1000;
//var UP_IMG_SRC = Betzc.base + '/styles/images/redjt.gif';
//var DOWN_IMG_SRC = Betzc.base + '/styles/images/greenjt.gif';

function startAwardUpdate(reqTimeout,updateTimeout){
	if (reqTimeout == null)
		reqTimeout = 20000;
	if (updateTimeout == null)
		updateTimeout = 200;

	var version = parseInt($('version').value, 10);
	CHG_DATA.version = version;

	awardReqFn(reqTimeout);
	awardUpdateFn(updateTimeout);
}

function awardUpdateFn(timeout) {
	var timeout2 = timeout;
	if (ALL_DATA.datas.length > 0) {
		if (CHG_DATA.version <= ALL_DATA.version) {
			CHG_DATA.version = ALL_DATA.version;
			CHG_DATA.datas = [];
		}
		var data = ALL_DATA.datas[0];
		var awards = data.awardArr;
		key = data.intTime + '_' + data.lineId;
		for (j = 0; j < awards.length; j++) {
			var awardEl = $('award_' + key + '_' + j);
			if (null != awardEl) {
				awardEl.set('text', awards[j].toFixed(2));
				var imgEl = $('img_' + key + '_' + j);
				if (imgEl != null)
					imgEl.setStyle('display', 'none');
			}
		}
		ALL_DATA.datas.erase(data);
		if (ALL_DATA.datas.length == 0) 
			$('version').value = ALL_DATA.version;
	} else if (CHG_DATA.datas.length > 0) {
		if (CHG_DATA.datas.length >= CHG_MAX_SIZE) {
			CHG_DATA.version = 0;
			CHG_DATA.datas = [];
		} else {
			var versionEl = $('version');
			var curVersion = parseInt(versionEl.value, 10);
			var data = CHG_DATA.datas[0];
			if (curVersion < data.version) {
				var key = data.intTime + '_' + data.lineId;
				var awardEl = $('award_' + key + '_' + data.index);
				if (null != awardEl) {
					awardEl.set('text', data.award.toFixed(2));
					var img = $('img_' + key + '_' + data.index);
					if (img != null) {
						if (data.changeFlag == -1) {
							img.src = img.src.replace(/redjt/g, 'greenjt');
							img.setStyle('display', '');
						} else if (data.changeFlag == 0) {
							img.setStyle('display', 'none');
						} else if (data.changeFlag == 1) {
							img.src = img.src.replace(/greenjt/g, 'redjt');
							img.setStyle('display', '');
						}
					}
				}
				versionEl.value = data.version;
			}
			CHG_DATA.datas.erase(data);
		}
	}else{
		timeout2 = 5000;
	}
	
	window.setTimeout( function() {
		awardUpdateFn(timeout);
	}, timeout2);
}

function awardReqFn(timeout) {
	var fn = function() {
		window.setTimeout( function() {
			awardReqFn(timeout);
		}, timeout);
	};
	var awardRequestLocalUrl = Betzc.base + '/requestRemote.jsp';
	var req = new Request( {
		url :awardRequestLocalUrl,
		method :'get',
		onSuccess : function(responseText) {
			if (responseText != null) {
				responseText = responseText.trim();
				responseText = responseText.replace(/\r\n/g, "");
			}
			if (responseText != null && responseText != '' && isJsonString(responseText)) {
				var chgHash = JSON.decode(responseText);
				if (chgHash.changeData.length >  0){
					var maxVersion = chgHash.maxVersion;
					var minVersion = chgHash.minVersion;
					if (minVersion > CHG_DATA.version || CHG_DATA.version > maxVersion) {// 超出变化范围，请求全局
						var req = new Request( {
							url :awardRequestLocalUrl,
							method :'get',
							onSuccess : function(responseText) {
								if (responseText != null && responseText.trim() != '') {
									responseText = responseText.replace(/\r\n/g, "");
									if (isJsonString(responseText)) {
										var allHash = JSON.decode(responseText);
										ALL_DATA.version = allHash.version;
										ALL_DATA.datas = allHash.allData;
										changeTime();
									}
								}
								fn();
							},
							onFailure : function(instance) {
								fn();
							}
						}).send('url=' + window.AllAwardRequestUrl + '&noCache=' + new Date().getTime());
					} else {// 变化范围之内
						var datas = [];
						for ( var i = 0; i < chgHash.changeData.length; i++) {
							var data = chgHash.changeData[i];
							if (data.version > CHG_DATA.version)
								datas.push(data);
						}
						if (datas.length > 0) {
							var size = datas.length + CHG_DATA.datas.length;
							if(size >= CHG_MAX_SIZE){
								CHG_DATA.version = 0;
								CHG_DATA.datas = [];
							}else{
								CHG_DATA.version = maxVersion;
								CHG_DATA.datas.extend(datas);// 将datas纳入CHG_DATA.datas
								changeTime();
							}
						}
						fn();
					}
				}else{
					fn();
				}
			} else {
				fn();
			}
		},
		onFailure : function(instance) {
			fn();
		}
	}).send('url=' + window.changeAwardRequestUrl + '&noCache=' + new Date().getTime());
}

function changeTime() {
	var d = new Date();
	var month = (d.getMonth() + 1).toString().length == 1 ? '0' + (d.getMonth() + 1) : (d.getMonth() + 1);
	var date = d.getDate().toString().length == 1 ? '0' + d.getDate() : d.getDate();
	var hours = d.getHours().toString().length == 1 ? '0' + d.getHours() : d.getHours();
	var minutes = d.getMinutes().toString().length == 1 ? '0' + d.getMinutes() : d.getMinutes();
	var time = month + '-' + date + ' ' + hours + ':' + minutes;
	$('changeTime').set('text', time);
}

function updateEurOdds(obj) {
	// 异步请求得到字符串
	var url = window.oddsURL;
	url += obj.value + ".json";
	var awardRequestLocalUrl = Betzc.base + '/requestRemote.jsp';
	var req = new Request( {
		url :awardRequestLocalUrl,
		method :'get',
		onSuccess : function(responseText) {
			if (responseText == null) {
				return;
			} else if (responseText.trim() == '') {
				return;
			}
			var oddshash = JSON.decode(responseText);
			oddshash.each( function(value) {
				oddsValue = value;
				var homeWin = (/d+\.d+/).test(value.homeWin) ? '--' : value.homeWin.toFixed(2);
				var draw = (/d+\.d+/).test(value.standoff) ? '--' : value.standoff.toFixed(2);
				var guestWin = (/d+\.d+/).test(value.guestWin) ? '--' : value.guestWin.toFixed(2);
				var str = homeWin + " " + draw + " " + guestWin;
				var intTime = value.intTime;
				var lineId = value.lineId;
				var el = $('oddspan_' + intTime + "_" + lineId);
				if (null != el) {
					el.set('text', str);
				}
			});
		}
	}).send('url=' + url + '&noCache=' + new Date().getTime());
}
