$.namespace("aggr.score");

//the following line will be replaced in build process
var ctxPath = '/livescore';

var minDiff = 0;
var fetchRate = 6000;
var repaintRate = 30000;

function getRequestParam(name) {
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec(window.location.href);
	if( results == null )
		return "";
	else
		return results[1];
}

function calculateMinuteDiff() {
	var localTime = new Date();
	var tzOffset = parseInt(localTime.getTimezoneOffset() / 60);
	localTime.setHours(localTime.getHours() + 8 + tzOffset, localTime.getMinutes(), localTime.getSeconds(), 0);
	
	var serverTime = new Date(parseInt(svrTime.substring(0,2), 10) + 2000,
							  parseInt(svrTime.substring(2,4), 10) - 1,
							  parseInt(svrTime.substring(4,6), 10),
							  parseInt(svrTime.substring(6,8), 10),
							  parseInt(svrTime.substring(8,10), 10),
							  localTime.getSeconds(), 0);
	
	minDiff = parseInt((serverTime.getTime() - localTime.getTime()) / (60 * 1000));
}

function changeView(type) {
	var url = ctxPath + "/livescore.jspa";
	url += "?lang=" + locale;
	url += "&v=" + type;
	
	window.location.replace(url);
}

function changeLocale(locale) {
	var param = getRequestParam("id");
	var url = ctxPath + "/livescore.jspa";
	url += "?lang=" + locale;
	
	param = getRequestParam("v");
	if (param.length != 0)
		url += "&v=" + param;
	
	param = getRequestParam("id");
	if (param.length != 0)
		url += "&id=" + param;
	
	window.location.replace(url);
}

function chooseLeague(leagueId) {
	var url = ctxPath + "/livescore.jspa";
	url += "?lang=" + locale;
	url += "&v=" + viewType;
	url += "&id=" + leagueId;
	
	window.location.replace(url);
}

function hoverRow(row) {
	var prevName = row.className;
	
	row.className = prevName + " rowHover";
	row.onmouseout = function() {
		row.className = prevName.replace(/rowHover/g, "");
	}
}

function visitOperator(oprCode) {
	var url;
	
	if (oprCode == 'SBO')
		url = "http://www.sbobet.com/default.aspx?lang=en&p=sport";
	else if (oprCode == '12B')
		url = "http://www.12biying.com/92032323/sportsbook/en/index.aspx";
	else if (oprCode == '188')
		url = "http://www.188bet.com/en-gb?vendorid=6396&vendorType=3";
	else if (oprCode == 'PIN')
		url = "http://affiliates.pinnaclesports.com/processing/clickthrgh.asp?btag=a_4888b_1238";
	
	window.open(url, "_blank");
}

function initSelector() {
	$("body select").msDropDown();
}


aggr.score.refreshClock = function() {
	var now = new Date();
	var tzOffset = parseInt(now.getTimezoneOffset() / 60);
	now.setHours(now.getHours() + 8 + tzOffset, now.getMinutes(), now.getSeconds(), 0);
	
	var date = now.getDate();
	var month = now.getMonth();
	var year = now.getFullYear();
	var hour = now.getHours();
	var min = now.getMinutes() + minDiff;
	var fullmonth;
	
	if (month == 0)
		fullmonth = "Jan";
	else if (month == 1)
		fullmonth = "Feb";
	else if (month == 2)
		fullmonth = "Mar";
	else if (month == 3)
		fullmonth = "Apr";
	else if (month == 4)
		fullmonth = "May";
	else if (month == 5)
		fullmonth = "Jun";
	else if (month == 6)
		fullmonth = "Jul";
	else if (month == 7)
		fullmonth = "Aug";
	else if (month == 8)
		fullmonth = "Sep";
	else if (month == 9)
		fullmonth = "Oct";
	else if (month == 10)
		fullmonth = "Nov";
	else
		fullmonth = "Dec";
	
	if (date <= 9)
		date = "0" + date;
	if (hour <= 9)
		hour = "0" + hour;
	if (min <= 9)
		min = "0" + min;
	
	var time = date + " " + fullmonth + " " + year + " | " + hour + ":" + min + " (GMT +08:00)";
	var updCell = $(".navDateTime");
	
	updCell.replaceWith("<td class='navDateTime'>" + time + "</td>");
}

aggr.score.dopostscore = function(timer) {
	var postdata = {
			"leagueId" : leagueId,
			"evtUpdId" : evtUpdId,
			"mktUpdId" : mktUpdId,
			"viewType" : viewType,
			"lang" : locale
	};
	$.post("printScore.jspa",
			postdata,
			function(jsonData) {
				aggr.score.processdata(jsonData);
			},
			"json");
};

aggr.score.processdata = function(jsondata) {
	evtUpdId = jsondata.evtUpdId;
	mktUpdId = jsondata.mktUpdId;
	
	if (jsondata.upds !== undefined)
		aggr.score.updateevents(jsondata.upds);
	if (jsondata.mins !== undefined)
		aggr.score.updatemore(jsondata.more);
};

aggr.score.updateevents = function(updsDatas) {
	for (var i = 0; i < updsDatas.length; i++) {
		var data = updsDatas[i];
		var updTbl = $("#DATE_" + data.date);
		
		if (updTbl.length > 0) {
			var updRow = $("#EVENT_" + data.id);
			
			if (updRow.length > 0) {
				var cssClass = updRow.attr("className");
				var newData = data.data.replace(/<tr /g, "<tr class='" + cssClass + "' ");
				
				updRow.replaceWith(newData);
			} else {
				changeView(viewType);
			}
		} else {
			changeView(viewType);
		}
	};
};

aggr.score.updatemore = function(moreData) {
	for (var i = 0; i < moreData.length; i++) {
		var data = moreData[i];
		var updCell = $("#MORE_" + data.id);
		
		if (updCell.length > 0) {
			updCell.replaceWith(data.data);
		}
	};
};

aggr.score.repaintCellChanges = function() {
	var updCell = null;
	
	updCell = $(".highlightCell3");
	updCell.removeClass("highlightCell3");
	
	updCell = $(".highlightCell2");
	updCell.addClass("highlightCell3");
	updCell.removeClass("highlightCell2");
	
	updCell = $(".highlightCell1");
	updCell.addClass("highlightCell2");
	updCell.removeClass("highlightCell1");
	
	updCell = $(".highlightCell");
	updCell.addClass("highlightCell1");
	updCell.removeClass("highlightCell");
	
	
	var oddsDiv = null;
	
	oddsDiv = $(".oddsUpL1");
	oddsDiv.removeClass("oddsUpL1");
	oddsDiv = $(".oddsDownL1");
	oddsDiv.removeClass("oddsDownL1");
	
	oddsDiv = $(".oddsUpR1");
	oddsDiv.removeClass("oddsUpR1");
	oddsDiv = $(".oddsDownR1");
	oddsDiv.removeClass("oddsDownR1");
	
	oddsDiv = $(".oddsUpL");
	oddsDiv.addClass("oddsUpL1");
	oddsDiv.removeClass("oddsUpL");
	oddsDiv = $(".oddsDownL");
	oddsDiv.addClass("oddsDownL1");
	oddsDiv.removeClass("oddsDownL");
	
	oddsDiv = $(".oddsUpR");
	oddsDiv.addClass("oddsUpR1");
	oddsDiv.removeClass("oddsUpR");
	oddsDiv = $(".oddsDownR");
	oddsDiv.addClass("oddsDownR1");
	oddsDiv.removeClass("oddsDownR");
}

$(document).ready(function(){
	$.timer(fetchRate, function(timer){
		//past events dont need update
		if (viewType == "p")
			return;
		
		aggr.score.dopostscore(timer);
	});
	
	$.timer(repaintRate, function(timer){
		aggr.score.repaintCellChanges();
		aggr.score.refreshClock();
	});
	
	calculateMinuteDiff();
	initSelector();
});
