<!--


function TournamentSchedule() {

	/*************************
	* Private variables
	**************************/
	
	// Constants
	var DAILY = 0;
	var WEEKLY = 1;
	var TIME = 0;
	var EVENT = 1;
	var BUYIN = 2;
	var FEE = 3;
	var REBUY = 4;
	var NOTES = 5;
	var dayWeighting = new Array('mon','tue','wed','thu','fri','sat','sun');
	var _dailyColumns = new Array('time','event','buyin','fee','rebuy','notes');
	var _dailyColumnTitles = new Array('Start Time*','Event','Buy-In','Fee','Rebuy','Notes');
	var _dailyColumnWidths = new Array(66,106,46,36,41,192);
	var _weeklyColumnTitles = new Array('time *','mon','tue','wed','thu','fri','sat','sun');
	var _weeklyColumnWidths = new Array(50,50,50,50,50,50,50,50);
	
	
	// Global vars
	var _dataStack = document.getElementById('data-stack');
	var _dailyViewNav  = document.getElementById('view-daily-days');
	var _dailyTableContainer = document.getElementById('view-daily-table');
	var _weeklyViewNav  = document.getElementById('view-weekly-days');
	var _weeklyTableContainer = document.getElementById('view-weekly-table');
	var _dailyDetail = document.getElementById('view-daily-detail');
	var _pagingPrev = document.getElementById('schedule-paging-prev');
	var _pagingNext = document.getElementById('schedule-paging-next');
	var _dataRefs = new Array();
	var _table;
	var _weeklyTable;
	var _currentView = DAILY;
	var _filterCount = 0;
	var _filterField = '';
	var _filters = new Array();
	var _currentFilter = 'all';
	var _currentFilterDisplay = '';
	var _weeklyDataReady = false;
	var _filterChange = false;
	var emptyCell = document.createElement('div')
	emptyCell.className = 'tournament';
	emptyCell.appendChild(document.createElement('br'));
	emptyCell.appendChild(document.createElement('br'));
	emptyCell.appendChild(document.createElement('br'));
	emptyCell.style.cursor = 'default';
	
	// Context information
	var _currentWeek = '';
	var _hasPrevWeek = true;
	var _hasNextWeek = true;
	var _weekStart;
	var _weekEnd;
	var _todayIsInCurrentWeek = false;
	var _today;
	var _todayName;
	var _tournamentDailyCount = new Array();
	var _currentDay = '';
	var _currentTournamentCount = 0;

	// For daily view
	var _dayCount = 0;
	var _days = new Array();
	
	// For weekly view
	var _startTimeCount = 0; 
	var _startTimes = new Array(_startTimeCount);
	
	
		
	
	/*************************
	* Public property pointers
	**************************/
	this.filterField = setFilterField;
	this.currentWeek = setcurrentWeek;	
	this.weekStart = setWeekStart;
	this.weekEnd = setWeekEnd;
	
	/*************************
	* Public properties 
	**************************/
	function setFilterField(fieldName) 
	{
		_filterField = fieldName;
	}
	function setWeekStart(date) 
	{
		_weekStart = date;
	}
	function setWeekEnd(date) 
	{
		_weekEnd = date;
	}
	function setcurrentWeek(week) 
	{
		_currentWeek = week;
	}
	
	
	
	/*************************
	* Public method pointers
	**************************/
 	this.addDay = addDay;
	this.addFilter = addFilter;
	this.addStartTime = addStartTime;	
	this.showDailyView = showDailyView;
	this.showWeeklyView = showWeeklyView;
	this.switchDay = switchDay;
	this.filterData = filterData;
	this.gotoPage = gotoPage;
	this.useFilter = useFilter;
	this.setView = setView;
	this.dailyDetail = dailyDetail;
	this.showDailyDetail = showDailyDetail;
	this.hideDailyDetail = hideDailyDetail;
	this.weeklyPreload = weeklyPreload;
	this.init = init;
	
	/*************************
	* Public methods
	**************************/
	function dailyDetail(day, row, subindex) 
	{
		fade(50);
		setDailyDetailValues(day,row,subindex);
		setTimeout('schedule.showDailyDetail();',10);
	}
	function addDay(day, month, year, dayFull, monthFull, date, count) 
	{
		var newDay = new ScheduleDay(day, month, year, dayFull, monthFull, date, count);
		_days.push(newDay);
		_dayCount++;
	}
	function addFilter(filterName) 
	{
		if (filterName != '') {
			_filters.push(filterName);
			_filterCount++;
		}
	}
	function addStartTime(startTime) 
	{
		if (startTime != '') {
			_startTimes.push(startTime);
			_startTimeCount++;
		}
	}
	
	function showDailyDetail() 
	{
		var top = getTop(document.images['positioner']);
		var left = getLeft(document.images['positioner']);
		var moveLeft, moveTop;
		var siteWidth = 760;
		var popupWidth = 276;
		var popupHeight = 315; // approx
		var footerHeight=170;
		var popupRight;
		var windowHeight;
		var scroll;

		moveLeft = xpos-70;
		moveTop = ypos-50;
		
		// Get the window dimensions
		if (self.innerHeight) // all except Explorer
		{
			windowHeight = self.innerHeight;
		}
		else if (document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode
		{
			windowHeight = document.documentElement.clientHeight;
		}
		else if (document.body) // other Explorers
		{
			windowHeight = document.body.clientHeight;
		}
		
		// Get the scroll amount
		if (self.pageYOffset) // all except Explorer
		{
			scroll = self.pageYOffset;
		}
		else if (document.documentElement && document.documentElement.scrollTop) // Explorer 6 Strict
		{
			scroll = document.documentElement.scrollTop;
		}
		else if (document.body) // all other Explorers
		{
			scroll = document.body.scrollTop;
		}	
		
		
		popupRight = moveLeft + popupWidth;

		popupBottom = moveTop - scroll + popupHeight;
		
		// Ensure the box doesn't move past the edge of the screen
		var siteLeft = document.getElementById('container').offsetLeft;
		var siteRight = siteLeft + siteWidth;
		
		if (popupRight > siteRight) {
			moveLeft -= (popupRight-siteRight);
			if (!self.innerHeight) moveLeft+=26; // add some to IE
		}
		if (popupBottom > windowHeight) {
			moveTop -= (popupBottom - windowHeight);
		}
		
		
	
		_dailyDetail.style.top = moveTop + 'px';
		_dailyDetail.style.left = moveLeft + 'px';
		_dailyDetail.style.display = 'block';
	}
	
	function hideDailyDetail() 
	{
		_dailyDetail.style.display = 'none';
		fade(100);
	}
	function showDailyView() 
	{
		_currentView = DAILY;
		viewState('view-daily', true);		
		viewState('view-weekly', false);

		document.forms['frmSchedule'].view[0].checked=true;

		// Remove the no events info if present
		var noevents = document.getElementById('noevents');
		if (noevents) {
			_dailyTableContainer.removeChild(noevents);
		}
		
		if (_currentDay != '') {
			returnAllDataToStack();
			clearContainer();
		}
		
		

		addTableHeader();	    
		addDailyColumnHeadings();

		addDailyDataRows();		
	
		_dailyTableContainer.appendChild(_table);
	
		
		if (eventsFound==0) {
			var tables = getElementsByClass("poker-tournament-schedule-table");

			for(var i = 0; i < tables.length; i++){ 
				tables[i].style.display = "none";	
			}
			
			var div = document.createElement('div'); 
			var em = document.createElement('span');
			div.id='noevents';
			div.appendChild(document.createTextNode('No '));
			em.className="filter-name";
			em.appendChild(document.createTextNode(_currentFilterDisplay));
			div.appendChild(em);
		 	div.appendChild(document.createTextNode(' events found for this day.'));
			div.className = 'noevents';
			_dailyTableContainer.appendChild(div);
			
			
			hideDailyDetail();
		}
		
		
	}
	function showWeeklyView() 
	{
		_currentView = WEEKLY;
		viewState('view-weekly', true);
		viewState('view-daily', false);
		
		document.forms['frmSchedule'].view[1].checked=true;
		
		returnAllDataToStack();
		clearContainer();
		
		if (!_weeklyDataReady) {
			getWeeklyGrid();
		}
		
		if (!_weeklyDataReady || _filterChange){
			createWeeklyTable();
			_weeklyDataReady = true;
		} 
		
		_weeklyTableContainer.appendChild(_weeklyTable);
		
		
	}
	function switchDay(day) 
	{
		switchDailyNav(day);
		showDailyView();
	}
	function useFilter(filter) 
	{
		if (filter != '') {
			_currentFilter = filter;
			for (var n=0;n<_filterCount;n++) {
				if (_filters[n] == _currentFilter) {
					document.forms['frmSchedule'].dropdownlistFilter.selectedIndex = n;
				}
			}
		}	
	}
	function setView(view) 
	{
		if (view != '') {
			_currentView = view;
		}	
	}
	function filterData(filterIndex) 
	{
		_filterChange = true;
		_currentFilter = _filters[filterIndex];
		_currentFilterDisplay = document.forms['frmSchedule'].dropdownlistFilter[filterIndex].innerHTML;
		
		if (_currentView == DAILY) {
			showDailyView();
		} else {
			showWeeklyView();
		}
	}
	function gotoPage(week) 
	{
		location.href='tournament-schedule.jsp?week=' + week + '&filter=' + _currentFilter + '&view=' + _currentView;
	}
	function init() 
	{
		sortDays();
		buildDailyNavigation();		
		buildWeeklyColumnHeadings();
		initVars();
		setTodaysNav();
			
		if (_currentView == DAILY) {
			showDailyView();
		} else {
			showWeeklyView();
		}
	}
	function weeklyPreload() {
		if (_currentView == DAILY) {
		getWeeklyGrid();
		createWeeklyTable();
		_weeklyTableContainer.appendChild(_weeklyTable);
		_weeklyDataReady = true;
		}
	}	
	
	
	/*************************
	* Private methods
	**************************/
	
	
	function setDailyDetailValues(day, row, subindex) 
	{
		var objTitle = document.getElementById('daily-detail-title');
		var objDate = document.getElementById('daily-detail-date');
		var objBuyin = document.getElementById('daily-detail-buyin');
		var objFee = document.getElementById('daily-detail-fee');
		var objRebuy = document.getElementById('daily-detail-rebuy');
		var objNotes = document.getElementById('daily-detail-notes');
		var rootId = 'tournament-' + day.day() + '-' + row + '-';
		var dataId, dataObj, html;

		dataId = rootId + 'event';
		dataObj = document.getElementById(dataId);
		if (dataObj) objTitle.innerHTML = dataObj.innerHTML;
		
		dataId = rootId + 'time';
		dataObj = document.getElementById(dataId);
		var time = dataObj.innerHTML;
		var date = day.dayFull() + ' ' + day.monthFull() + ' ' + day.date() + ', ' + day.year();
		if (dataObj) objDate.innerHTML = date + ' at ' + time;
		
		dataId = rootId + 'buyin';
		dataObj = document.getElementById(dataId);
		html = dataObj.innerHTML;
		if (dataObj) objBuyin.innerHTML = (html != '')?'' + html:'n/a';
		
		dataId = rootId + 'fee';
		dataObj = document.getElementById(dataId);
		html = dataObj.innerHTML;
		if (dataObj) objFee.innerHTML = (html != '')?'' + html:'n/a';
		
		dataId = rootId + 'rebuy';
		dataObj = document.getElementById(dataId);
		html = dataObj.innerHTML;
		if (dataObj) objRebuy.innerHTML = (html != '')?'' + html:'n/a';
		
		dataId = rootId + 'notes';
		dataObj = document.getElementById(dataId);
		html = dataObj.innerHTML;
		if (dataObj) objNotes.innerHTML = html;		
	}
	function fade(opacity)	
	{
		if (typeof(opacity) == 'undefined') opacity = 50;
		_weeklyTableContainer.className = 'opaque' + opacity;		
	}
	function initVars() 
	{
		getToday();
		_currentDay = _todayIsInCurrentWeek?_todayName:'mon';
		_currentTournamentCount = getTodaysTournamentCount();
	}
	
	var eventsFound=0;
	function addDailyDataRows() 
	{
		var data, event, eventData, rowCount=0;
		var columns = _dailyColumns.length;
		var currentTime='';
		var theTime;

		eventsFound=0;
		_currentTournamentCount = getTodaysTournamentCount();
		
		var tr = document.createElement('tr');
		var td = document.createElement('td');
		
		for(var r=0;r<_currentTournamentCount;r++) {
			eventData = fetchData(_currentDay,r,_dailyColumns[EVENT]);
			event = getTournamentType(eventData);
			
			// Only include the data if it matches the filter
			if ((event.indexOf(_currentFilter) > -1) || _currentFilter == 'all') {
				eventsFound++;
				
				if (rowCount%2 == 1) {
					tr.className = 'poker-odd';
				} else {
					tr.className = 'poker-even';
				}
					
				var trclone = tr.cloneNode(true);

				rowCount++;
				
				for (var c=0;c<columns;c++) {
					
					var tdclone = td.cloneNode(true);
					
					if (c==0) {
						tdclone.className = 'table-cell-time';
					} else {
						tdclone.className = 'table-cell';
					}
					
					tdclone.width = _dailyColumnWidths[c];
					
					data = fetchData(_currentDay,r,_dailyColumns[c]);	
					
					if (data.innerHTML == '') {
						tdclone.appendChild(document.createTextNode(' '));
					} else {
						if (c==0) {
							theTime = data.innerHTML;
							if (theTime != currentTime) {
								_dataRefs.push(data);
								tdclone.appendChild(data);
							} else {
								tdclone.className = 'table-cell-time-notop';
								tdclone.appendChild(document.createTextNode(' '));
							}
							currentTime = theTime;
						} else {
							_dataRefs.push(data);
							tdclone.appendChild(data);
							var details = new Cell ( _currentDay, r, data, 1, false );
						}
					}
					
					trclone.appendChild(tdclone);
				}
				_table.tBodies[0].appendChild(trclone);	
			}			
		}
		
		
	}
	function addDailyColumnHeadings() 
	{
		var tb = document.createElement('tbody');
		_table.appendChild(tb);

		var tr = document.createElement('tr');
		var columns = _dailyColumnTitles.length;
		
		for (var r=0;r<columns;r++) {
			var th = document.createElement('th');
			th.className = 'daily-column-heading';
			th.appendChild(document.createTextNode(_dailyColumnTitles[r]));
			th.width = _dailyColumnWidths[r];
			th.align = 'center';
			tr.appendChild(th);	
		}

		_table.tBodies[0].appendChild(tr);	
	}
	function buildWeeklyColumnHeadings() 
	{
		var dayList = document.createElement('ul')
		dayList.id = 'weekly-daylist';
		
		var columns = _weeklyColumnTitles.length;
		
		for (var n=0;n<columns;n++) {
			var li = document.createElement('li')
			if (n==0) {
				li.className = 'time';
			} else if (n == columns-1) {
				li.className = 'last-day';
			} else {
				li.className = 'day';
			}
			
			if (n == 0) {
				li.appendChild(document.createTextNode(_weeklyColumnTitles[n]));
			} else {
				li.appendChild(document.createTextNode( _days[n-1].day() + ' ' + _days[n-1].month() + ' '));
				var span = document.createElement('span');
				span.className = 'date-num';
				span.appendChild(document.createTextNode(_days[n-1].date()));
				li.appendChild(span);
			}

			dayList.appendChild(li);
		}
		_weeklyViewNav.appendChild(dayList);
	}
	
	
	// Establish a 2D array for the weekly cell data
	var rows;
	var cols;
	var weeklyCellData;
	
	function getWeeklyGrid() 
	{
		rows = _startTimeCount;
		cols = _dayCount;
		weeklyCellData = new Array(cols);
		var cell = new Array();
		var subindex;
		var subcount=0;
		var output = '';
		
		for (var x=0;x<cols;x++) {
			weeklyCellData[x] = new Array(rows);
		}
	
		// Fill with clones of the real data
		// so that it doesn't have to be returned to the stack

		for (var x=0;x<cols;x++) {
			for(var y=0;y<rows;y++) {
				subindex=1;
				subcount=0;
				
				var cell = new Array();
				cell.rowNum = new Array();
				cell.data = new Array();
				cell.empty = true;
				cell.tournamentType = new Array();
				cell.eventCount = 0;
				cell.startTime = _startTimes[y];
				cell.subindex = subindex;
				cell.day = _days[x].day();
				cell = fetchWeeklyCellData2(cell);

				weeklyCellData[x][y] = cell;
			}
		}

	}
	
	function fetchWeeklyCellData2(cell) 
	{
		var dataId, data, data;
		var subIndex=1;
		
		cell.data = new Array();
		dataId = 'tournament-' + cell.day + '-' + cell.startTime + '-' + subIndex;
		data = document.getElementById(dataId);
		
		if (data == null) {
			cell.rowNum = null;
			cell.tournamentType = '';
			cell.data.push(emptyCell.cloneNode(true));
			cell.data[cell.eventCount].className = 'tournament';
			cell.empty = true;
		} else {
		
			while (data != null) {
				cell.rowNum.push(data.getAttribute('rownum'));
				cell.tournamentType.push(data.getAttribute('tournamenttype'));
				cell.data.push(data.cloneNode(true));
				cell.data[cell.eventCount].className = 'tournament';
				cell.empty = false;
				cell.eventCount++;
			
				subIndex++;
			
				dataId = 'tournament-' + cell.day + '-' + cell.startTime + '-' + subIndex;
				data = document.getElementById(dataId);
			}
		}
		
		return cell;
	}
	
	var hr = document.createElement('hr');
		hr.className='weekly-seperator';
		hr.color='#537CA6';
		hr.size=1;
		hr.width='100%';
		hr.align='center';
	
	///////////////////////////////////////////////////////
	//
	// Create a complete cellular table for the weekly 
	// data. We no longer have to dispose of it each time
	// as it's source is made up of cloned data.
	//
	///////////////////////////////////////////////////////
	function createWeeklyTable() 
	{
		var rows = _startTimeCount;
		var cols = _dayCount;
		var rowNum;
		var rowCount=-1;
		var tournamentType='';
		var emptyRow = true;
		var cellHasData = false;
		var subindex=1;
		var subcount=0;
		var filterMatch = false;
		
		_weeklyTable = document.createElement('table')
		_weeklyTable.className = 'poker-tournament-schedule-table';
		_weeklyTable.cellPadding = 2;
		_weeklyTable.cellSpacing = 0;
		_weeklyTable.border = 0;
		_weeklyTable.width = 546;
		
		var tb = document.createElement('tbody');
		var tr = document.createElement('tr');
		var td = document.createElement('td');
		
		
		_weeklyTable.appendChild(tb);

		// Loop through the rows
		for(var y=0;y<rows;y++) {		
			
			var trclone = tr.cloneNode(true);
			var tdclone = td.cloneNode(true);
			
			// Add the start time for each row
			tdclone.width=_weeklyColumnWidths[0];
			tdclone.className = 'table-cell-time';
			tdclone.appendChild(document.createTextNode(_startTimes[y]));	
			
			trclone.appendChild(tdclone);
			emptyRow = true;
			rowCount++;

			// Loop through the columns
			for (var x=0;x<cols;x++) {
							
				var tdclone = td.cloneNode(true);
				tdclone.width=_weeklyColumnWidths[x+1];
				tdclone.className = 'table-cell';
				tdclone.style.paddingTop = '4px';
				tdclone.style.paddingBottom = '4px';
				
				eventsAddedToCell = 0;
				
				// Handle multiple events in the same time slot
				for (var n=0;n<weeklyCellData[x][y].eventCount;n++) {
					
					filterMatch = (weeklyCellData[x][y].tournamentType[n].indexOf(_currentFilter) > -1) || (_currentFilter == 'all') ;

					if (filterMatch) {
						if (eventsAddedToCell > 0) {
							var hrclone = hr.cloneNode(true);
							tdclone.appendChild(hrclone);
						}		
						tdclone.appendChild(weeklyCellData[x][y].data[n]);		
						eventsAddedToCell++;
					} 
								
					if (!weeklyCellData[x][y].empty && filterMatch) {
						tdclone.title = 'click for details';
						var details = new Cell ( _days[x], weeklyCellData[x][y].rowNum[n], weeklyCellData[x][y].data[n], n+1, true );
						emptyRow = false;
					}
				}

				if (weeklyCellData[x][y].empty || eventsAddedToCell==0){
					tdclone.appendChild(emptyCell.cloneNode(true));	
				}
				
				trclone.appendChild(tdclone);
			}
			
			// Remove empty rows
			if (!emptyRow) {
				if (rowCount%2 == 1) trclone.className = 'data-row-odd';
				else trclone.className = 'data-row';
				_weeklyTable.tBodies[0].appendChild(trclone);
			} else {
				rowCount--;
			}
		}				
	}
	
		
	
	
	function setTodaysNav() 
	{
		var navId = 'nav-' + _currentDay;
		var objNav = document.getElementById(navId);
		if (objNav) objNav.className = 'current';
	}
	function switchDailyNav(newDay) 
	{
		// Turn off last nav
		
		var oldNavId = 'nav-' + _currentDay;
		var oldObjNav = document.getElementById(oldNavId);
		
		if (_currentDay == 'mon') {
			if (oldObjNav) oldObjNav.className = 'first-day';
		} else {
			if (oldObjNav) oldObjNav.className = '';
		}
		// Set the currentDay to the new day and set it on
		_currentDay = newDay;
		setTodaysNav();
	}
	
	function getToday() 
	{
		var shortDays = new Array("sun","mon","tue","wed","thu","fri","sat");
		var date = new Date();
		var d = date.getDate();
		
		var m = date.getMonth() + 1;
		var y = date.getFullYear();
		
		d = (d<10)?'0'+d:d;
		m = (m<10)?'0'+m:m;
		
		_today = y+m+d;
		_todayName = shortDays[date.getDay()];

		if ( (_today>=_weekStart) && (_today<=_weekEnd) ) {
			_todayIsInCurrentWeek = true;
		} else {
			_todayIsInCurrentWeek = false;
		}
	}
	function getTodaysTournamentCount() 
	{
		 for (var n=0;n<_dayCount;n++) {
		 	if (_days[n].day() == _currentDay) {
			 	return _days[n].tournamentCount();
			}
		 }
	}
	function getTournamentCount(day) 
	{
		 for (var n=0;n<_dayCount;n++) {
		 	if (_days[n].day() == day) {
			 	return _days[n].tournamentCount();
			}
		 }
	}
	function returnDataToStack(data) 
	{
		_dataStack.appendChild(data);
	}
	function returnAllDataToStack() 
	{
		for (var n=0;n<_dataRefs.length;n++) {
			_dataStack.appendChild(_dataRefs[n]);
		}
	}
	function clearContainer() 
	{
		var children, container;		
		
		if (_currentView == DAILY){
			container = _dailyTableContainer;
		} else {
			container = _weeklyTableContainer;
		}
		
		children = container.childNodes;                
		for(var i=0; i < children.length; i++) {    
			container.removeChild(children[i]);
		}
	}
	function resetTable() 
	{
		_table = null;
	}
	function addTableHeader() 
	{
		_table = document.createElement('table')
		_table.className = 'poker-tournament-schedule-table';
		_table.cellPadding = 3;
		_table.cellSpacing = 0;
		_table.border = 0;
		_table.width = 546;
	}
	function buildDailyNavigation() 
	{
		var navList = document.createElement('ul')
		navList.id = 'daily-daylist';
		for (var n=0;n<_dayCount;n++) {
			var li = document.createElement('li')
			li.id='nav-' + _days[n].day();
			var a = document.createElement('a')
			a.setAttribute("href", "javascript:schedule.switchDay('" + _days[n].day() + "');");
			a.appendChild(document.createTextNode(_days[n].day() + ' ' + _days[n].month() + ' '));
			var span = document.createElement('span');
			span.className = 'date-num';
			span.appendChild(document.createTextNode(_days[n].date()));
			a.appendChild(span);
			li.appendChild(a);
			navList.appendChild(li);
		}
		_dailyViewNav.appendChild(navList);
	}
	
	function viewState(viewId, state)
	{
		var view = document.getElementById(viewId);
		view.style.display=state?'block':'none';
	}
	function sortDays() 
	{
		var tmpDays = new Array(7);
		for (var n=0;n<_dayCount;n++) {
			for (var x=0;x<7;x++) {
				if (dayWeighting[x] == _days[n].day()) {
					tmpDays[x] = _days[n];
				}
			}
		}
		var newDays=0;
		for (var n=0;n<7;n++) {
			while ((tmpDays[n] == undefined) && n<7) {
				n++;
			}
			_days[newDays++] = tmpDays[n];
		}		
	}
	
	function fetchData(day, row, fieldName)
	{
		var dataId, data;
		dataId = 'tournament-' + day + '-' + row + '-' + fieldName;
		data = document.getElementById(dataId);
		if (data == null) {
			//alert("null found: " + dataId);
		}
		return data;
	}	
	function getRowForTime(day, time, subindex) 
	{
		var dataId, data;
		
		dataId = 'tournament-' + day + '-' + time + '-' + subindex;
		data = document.getElementById(dataId);
		if (data != null) {
			return data.innerHTML;
		} else {
			return null;
		}
	}
	function getTournamentType(objData) 
	{
		if (objData == null) {return "";}
		
		var tournamentType = objData.getAttribute('tournamenttype');
		if (tournamentType) {
			return tournamentType;
		} else {
			return "";
		}
	}
	
	function getLeft(ll) 
	{
		if (ll.offsetParent) return (ll.offsetLeft + getLeft(ll.offsetParent));
		else return (ll.offsetLeft);
	}
	function getTop(ll) 
	{
		if (ll.offsetParent) return (ll.offsetTop + getTop(ll.offsetParent));
		else return (ll.offsetTop);
	}
}


function ScheduleDay(day, month, year, dayFull, monthFull, date, count) {
	
	/*************************
	* Private variables
	**************************/
	var _dayName = day;
	var _dayFull = dayFull;
	var _monthName = month;
	var _monthFull = monthFull;
	var _date = date;
	var _year = year;
	var _tournamentCount = count;
	
	/*************************
	* Public property pointers
	**************************/
	this.day = getScheduleDay;
	this.dayFull = getScheduleDayFull;
	this.month = getScheduleMonth;
	this.monthFull = getScheduleMonthFull;	
	this.year = getScheduleYear;
	this.date = getScheduleDate;
	this.tournamentCount = getTournamentCount;
	 	 
	/*************************
	* Public properties 
	**************************/
	function getScheduleDay() {
		return (_dayName);
	}
	function getScheduleMonth() {
		return (_monthName);
	}
	function getScheduleDayFull() {
		return (_dayFull);
	}
	function getScheduleMonthFull() {
		return (_monthFull);
	}
	function getScheduleYear() {
		return(_year);
	}
	function getScheduleDate() {
		return (_date);
	}	
	function getTournamentCount() {
		return (_tournamentCount);
	}	
}

function Cell(day, row, element, subindex, on){
	this.element = element;
	this.day = day;
   	this.row = row;
	this.subindex = subindex;
	
	if (on == true) {
		element.handler = this;
		element.onclick = function() {this.handler.processClick();}
		
		if (document.all) {
			element.onmouseover = function() {this.handler.processOvr();}
			element.onmouseout = function() {this.handler.processOut();}
		}
	} else {
		element.onclick = function() {return true;}
		
		if (document.all) {
			element.onmouseover = function() {return true;}
			element.onmouseout = function() {return true;}
		}		
	}
}

Cell.prototype.processClick = function(){
	schedule.dailyDetail(this.day, this.row, this.subindex);	
}
Cell.prototype.processOvr = function(){ 
	//this.element.className = 'table-cell-hover';
	this.element.style.textDecoration = 'underline';
	this.element.style.color = '#0060BF';
	this.element.style.cursor = 'pointer';
}
Cell.prototype.processOut = function(){
	//this.element.className = '';
	this.element.style.textDecoration = 'none';
	this.element.style.color = '#1A2633';
	this.element.style.cursor = 'pointer';
}

var xpos=0;
var ypos=0;

var IE = document.all?true:false;
if (!IE) document.captureEvents(Event.MOUSECLICK)
document.onclick = getMouseXY;
var tempX = 0;
var tempY = 0;
function getMouseXY(e) {
if (IE) { // grab the x-y pos.s if browser is IE
tempX = event.clientX + document.body.scrollLeft;
tempY = event.clientY + document.body.scrollTop;
}
else {  // grab the x-y pos.s if browser is NS
tempX = e.pageX;
tempY = e.pageY;
}  
if (tempX < 0){tempX = 0;}
if (tempY < 0){tempY = 0;}  
xpos = tempX;
ypos = tempY;

return true;
}

//-->