﻿var loader = null;
var timer = 0;
var currentPage = null;

var gTeamNameA = "";
var gTeamNameB = "";
var gAnimations = new Array();
var gameID = 0;
var accountID = 0;
var pbpPaused = false;
var lang = new Array();
var currentLanguage;

var PBP_LINES = 0;
var REFRESH_DEFAULT = 0;
var REFRESH_KEYFACTS = 0;
var REFRESH_PBP = 0;
var REQUEST_TIMEOUT = 0;

var pbpScroller, bigPbpScroller, scScroller = null;
var currentOvMode = -1;

//-------------------------------------------------------------
function MainLoader() {

	var parseXml = function(xml) {
		$(xml).children().children().each(function() {
			switch ($(this).context.tagName) {
				case "HEADER":
					processHeader($(this));
					break;
				case "SCOREBOARD":
					processScoreboard($(this));
					break;
				case "TEAMSTATS":
					if (currentPage == "TeamStatistics") {
						processStatsComparison($(this), $("#big_scInternal"));
					}
					else {
						processStatsComparison($(this), $("#scInternal"));
					}
					break;
				case "OVERVIEW":
					if (currentPage == "Overview") {
						processBigOverview($(this));
					}
					else {
						processOverview($(this));
					}
					break;
				case "BANNER":
					processBanner($(this));
					break;
				case "BOXSCORE":
					processBoxscore($(this));
					break;
				case "PLAYBYPLAY":
					var prefix = "";
					if (currentPage == "PlayByPlay") prefix = "big_";
					processPlaybyplay($(this), prefix);
					break;
				case "SCOREDEVELOPMENT":
					processScoreDevelopment($(this));
					break;
				case "SHOTCHART":
					processShotChart($(this));
					break;
				case "TICKER":
					processTicker($(this));
					break;
			}
			animateChanges();
		});
	}

	this.load = function() {
		$("#statusMsg").text("Loading...");
		var url = currentPage + ".ashx?acc=" + accountID + "&lng=" + currentLanguage;
		if (gameID != "") {
			url += "&gameID=" + gameID;
		}
		else {
			url += "&full=1";
		}
		$.ajax({
			url: url,
			type: "GET",
			dataType: "xml",
			timeout: REQUEST_TIMEOUT,
			error: function(xhr, txtStatus, thrownError) {
				$("#statusMsg").text("Error loading XML document: " + txtStatus);
			},
			success: function(xml) {
				parseXml(xml);
				$("#splash").hide(); $("#splashIcon").hide();
				$("#statusMsg").text("Last refresh: " + new Date());
			}
		});
	}

	this.loadPBP = function() {
		$("#statusMsg").text("Loading...");
		pbpPaused = false;
		$("#stopContinuePbp").text(lang["pause"]);
		$.ajax({
			url: currentPage + ".ashx?acc=" + accountID + "&gameID=" + gameID + "&from=1&lng=" + currentLanguage,
			type: "GET",
			dataType: "xml",
			timeout: REQUEST_TIMEOUT,
			error: function(xhr, txtStatus, thrownError) {
				$("#statusMsg").text("Error loading XML document: " + txtStatus);
			},
			success: function(xml) {
				$("#big_pbpContainer").html("");
				parseXml(xml);
				$("#splash").hide(); $("#splashIcon").hide();
				$("#statusMsg").text("Last refresh: " + new Date());
			}
		});
	}

	this.init = function() {
		return true;
	}

	this.stopContinuePbp = function() {
		if (pbpPaused) {
			this.loadPBP();
		}
		else {
			pbpPaused = true;
			$("#stopContinuePbp").text(lang["continue"]);
		}
	}
}

//-------------------------------------------------------------
function main() {
	loader = new MainLoader();
	if (loader.init()) {
		if (gameID == "") {
			switchPage("Overview");
		}
		else {
			switchPage("KeyFacts");
		}
	}
}

//-------------------------------------------------------------
function switchGame(newID) {
	// Show progress window
	$("#splash").show(); $("#splashIcon").show();

	// Clean up
	$("#pbpContainer").html("");
	$("#big_pbpContainer").html("");
	$("#schQuarters").html("");
	$("#schPlayersA").html("");
	$("#schPlayersB").html("");
	$("#overviewContent").html("");
	
	gameID = newID;
	loader.load();
}

//-------------------------------------------------------------
function switchPage(newPage) {
	clearInterval(timer);
	
	var refresh = REFRESH_DEFAULT * 1000;
	$("div.uielement").hide();

	// Show progress window
	$("#splash").show(); $("#splashIcon").show();

	switch (newPage) {
		case "KeyFacts":
			$("#dHeader").show();
			$("#dKeyfacts").show();
			$("#dTeamstats").show();
			$("#dPlaybyplay").show();
			$("#dBanner").show();
			$("#dPromotion").show();
			$("#dOverview").show();
			$("#main_layout").show();
			refresh = REFRESH_KEYFACTS * 1000;
			break;
		case "PlayByPlay":
			$("#dHeader").show();
			$("#dBigPlaybyplay").show();
			$("#dBanner").show();
			$("#dOverview").show();
			$("#main_layout").show();
			refresh = REFRESH_PBP * 1000;
			break;
		case "ScoreDevelopment":
			$("#dHeader").show();
			$("#dScoreDevelopment").show();
			$("#dBanner").show();
			$("#dOverview").show();
			$("#main_layout").show();
			break;
		case "Boxscore":
			$("#dHeader").show();
			$("#dBoxscore").show();
			$("#dTeamComparison").show();
			$("#dBanner").show();
			$("#dOverview").show();
			$("#main_layout").show();
			break;
		case "TeamStatistics":
			$("#dHeader").show();
			$("#dStatsComparison").show();
			$("#dBanner").show();
			$("#dOverview").show();
			$("#main_layout").show();
			break;
		case "ShotChart":
			$("#dHeader").show();
			$("#dBanner").show();
			$("#dOverview").show();
			$("#dShotChart").show();
			$("#main_layout").show();
			break;
		case "Overview":
			$("#main_layout").hide();
			$("#dBigOverview").show();
			break;
	}
	if (currentPage) $("#btn" + currentPage).removeClass("active");
	$("#btn" + newPage).addClass("active");
	currentPage = newPage;
	loader.load();
	timer = setInterval("loader.load();", refresh);
}

//-------------------------------------------------------------
function animateChanges() {
	if (gAnimations.length <= 12) {
		for (i = 0; i < gAnimations.length; i++) {
			$(gAnimations[i]).fadeOut();
			$(gAnimations[i]).fadeIn();
			$(gAnimations[i]).fadeOut();
			$(gAnimations[i]).fadeIn();
		}
	}
	gAnimations.length = 0;
}


