﻿// Initialise bubble place holders until they are overwritten.
if (OddBubble == null) {
	OddBubble = {};
	OddBubble.OnMouseOverOdds = function() { }
	OddBubble.StartLoading = function() { }
}

function adjustPaginationPositionEffect() {
	var pagination = $('oddsPagination');
	pagination.setStyle("margin-top", pagination.middle + "px");
}

function adjustPaginationPosition(e) {
	var pagination = $('oddsPagination');

	if (pagination != null) {
		var parent = pagination.getParent().getParent();

		var scrollY = this.getScrollTop();
		var parentPosition = parent.getPosition();
		var parentHeight = parent.getHeight().toInt();

		var pageTop = scrollY;
		var pageBottom = this.getHeight() + pageTop;

		var middle = Math.ceil((pageBottom - pageTop) / 2); // Attempt to sit the container in the middle of the window.
		var half = Math.ceil(pagination.getHeight() / 2);

		middle += pageTop; // Shift downwards to allow for scrolling.
		middle -= half; // Adjust by half the height of the floating container.
		middle -= parentPosition.y; // Remember the floating container is currently sitting in a parent.
		middle -= 35; // Adjust boundary offset.

		var currentOffset = pagination.getStyle("margin-top").toInt();
		var primaryOffset = 50;

		var upperOffset = middle;
		var bottomOffset = middle + pagination.getHeight().toInt() + 35;

		if (parentHeight < bottomOffset) {
			middle = parentHeight - pagination.getHeight().toInt() - 35;

		} else if (primaryOffset > upperOffset) {
			middle = primaryOffset;
		}

		pagination.parentHeight = parentHeight;
		pagination.middle = middle;

		adjustPaginationPositionEffect();
	}
}

Utils.OnScroll(adjustPaginationPosition);

// FUNCTIONS

// Overwrite original update function so that we can fit our data into the structure we have.
DataManager.Update = function() {
	if (DataManager.DataExists()) {
		DataManager.TOTAL_PAGES = Math.ceil(DataManager.LOCAL.SPORTS_BOOKS.length / DataManager.ITEMS_PER_PAGE);

		var content = DataManager.GetData();
		var columnCount = 0;
		
		//var startIndex = (DataManager.ITEMS_PER_PAGE * (DataManager.CURRENT_PAGE - 1));
		var startIndex = (DataManager.ITEMS_PER_PAGE * DataManager.CURRENT_PAGE) - DataManager.ITEMS_PER_PAGE + 1;
		//if (DataManager.CURRENT_PAGE == 1) { startIndex += 1; }

		// Update the sports book names, but only if the page has been updated.
		for (var c = startIndex - 1; columnCount < DataManager.LOCAL.Headers.length - 1; c++) {
			var value = (c >= DataManager.LOCAL.SPORTS_BOOKS.length) ? "&nbsp;" : DataManager.LOCAL.SPORTS_BOOKS[c];
			columnCount += 1;

			var cell = DataManager.LOCAL.Headers[columnCount];
			cell.innerHTML = value;

			if (value.length > 0) {
				cell.SportsBook = value;
				cell.onclick = function() { DataManager.Sort('Numeric', this.SportsBook); }
			} else {
				cell.onclick = null;
			}
		}

		// Update the actual data.
		for (var r = 0; r < DataManager.LOCAL.Cells.length; r++) {
			var row = DataManager.LOCAL.Cells[r];
			var data = DataManager.DATA.CONTENT[r];

			columnCount = 0;

			function printToCell(columnName, row) {
				columnCount += 1;

				var cell = row[columnCount - 1];
				cell.innerHTML = data[columnName];

				cell.target = "";
				cell.href = "Javascript:void(0);";
				cell.setStyle("cursor", "default");

				if (data[columnName].length > 0) {
					if (data[columnName + "_ID"] != null && data[columnName + "_ID"].trim().length > 0) {
						cell.dataID = data[columnName + "_ID"];
						cell.data = DataManager.GetDetails(cell.dataID);

						cell.addEvent("mouseover", function(e) { OddBubble.OnMouseOverOdds(e, this); });

						if (cell.data["OddURL"].trim().length > 0) {
							cell.href = cell.data["OddURL"];
							cell.target = "_blank";
							cell.setStyle("cursor", "pointer");
						}

						if (cell.data["IsBestOdd"] == "1") {
							cell.addClass("bestOdds");
						} else {
							cell.removeClass("bestOdds");
						}
					}
				}

				// If this is IE6, we need to force a redraw or nothing will be aligned properly.
				if (Utils.isMSIE6) {
					cell.setStyle('position', 'absolute');
					cell.setStyle('position', 'relative');
				}
			}

			printToCell("CompetitorName", row);

			// Loop over all of the sports books.
			for (var c = startIndex - 1; columnCount < row.length; c++) {
				
				// Clear any columns that should be empty.
				if (c >= DataManager.LOCAL.SPORTS_BOOKS.length) {
					columnCount += 1;
					var cell = row[columnCount - 1];

					cell.innerHTML = "&nbsp;";
					cell.href = "Javascript:void(0);";
					cell.onmouseover = null;

					cell.setStyle("cursor", "default");
					cell.removeClass("bestOdds");

					// Otherwise, print the relevant odds.
				} else {
					printToCell(DataManager.LOCAL.SPORTS_BOOKS[c], row);
				}
			}
		}
	}
}

// Overwrite original pagination function so that we can paginate using the structure below.
DataManager.Paginate = function(pageNumber) {
	if (pageNumber == null) { pageNumber = 1; }

	if (DataManager.DataExists()) {
		DataManager.PREVIOUS_PAGE = DataManager.CURRENT_PAGE;
		DataManager.CURRENT_PAGE = pageNumber;

		DataManager.Update();
	}
}
