// Tournament Viewer Functions

// Global Variables
var tournamentIDs = new Array();
var tournaments = new Array();
var events = new Array();
var days = new Array();
var _tournament = null;
var _event = null;
var _eevent = null;
var _day = null;
var _dday = null;
var _menu = null;
var _board = null;
var gallery = new Array();
var galTO = null;
var lockClicks = false;
var hiC = "#ffa";
var daysLoaded = true;
var loadingCounter = 0;

var leaderBoards = new Array('WSOP Top Money', 'Top Money', 'WSOP Top Money', 'WSOP Cashes', 'WSOP Bracelets', 'Women in Poker', 'Top Countries', 'Final Tables');
var boardNames = new Array('year-tourney-top-money', 'year-top-money', 'tourney-top-money', 'tourney-cashes', 'bracelets', 'women-in-poker', 'top-countries', 'final-tables');
	

// Objects
// Tournament Object
function Tournament(id, fields, data) {
    this.id = id;
    this.fields = fields;
    this.data = data;
    this.eventIDs = new Array();
};

Tournament.prototype.get = function(field) 
{
    if (this.isField(field)) return this.data[field];
};

Tournament.prototype.isField = function(field)
{
    if (this.fields.toString().match(field)) return true;
    return false;
};


// Event Object
function Event(id, fields, data)
{
    this.id = id;
    this.fields = fields;
    this.data = data;
    this.dayIDs = new Array();
};

Event.prototype.isField = function(field)
{
    if (this.fields.toString().match(field)) return true;
    return false;
};

Event.prototype.set = function(field, value) 
{
    if (this.isField(field)) this.data[field] = value;
};

Event.prototype.get = function(field) 
{
    if (this.isField(field)) return this.data[field];
};

Event.prototype.addDay = function(day) 
{
    this.days.push(day);
};

Event.prototype.hasDays = function()
{
    return this.days.length;
};


// Day Object
function Day(id, fields, data)
{
    this.id = id;
    this.fields = fields;
    this.data = data;
};

Day.prototype.isField = function(field)
{
    if (this.fields.toString().match(field)) return true;
    return false;
};

Day.prototype.set = function(field, value) 
{
    if (this.isField(field)) this.data[field] = value;
};

Day.prototype.get = function(field) 
{
    if (this.isField(field)) return this.data[field];
};


// Display Functions
function listTournaments() {
    for (var i=0; i<tournamentIDs.length; i++) {
	var id = tournamentIDs[i];
	$('tournaments').options[i] = new Option(tournaments[id].get('name'), id);
    }
    $('tournaments').selectedIndex = i-1;
    _tournament = tournaments[id];
}

function selectTournament() {
    var tID = 274;
    _tournament = tournaments[tID];
    clearEvents();
    
    if(_tournament.eventIDs.length) {
	    listEvents();
    }
    else {
	    ajaxManager("Load", "Events", tID);
    }
    
    $('blogURL').innerHTML = "All " + _tournament.get('name') + " Blogs >";
    $('blogURL').href = _tournament.get('blogArchivesURL');
    //$('results').value = _tournament.get('resultsLink');
}

function clearEvents() {
    $('eventList').innerHTML = "";
    _eevent = null;
    _event = null;
}

function listEvents(tID) {
    // disregard tID for now
    var defaultEvent = -1;
    for (var i=0; i<_tournament.eventIDs.length; i++) {
	var id = _tournament.eventIDs[i];
	var div = elementize("SPAN", "id=event_" + id, "className=eventNum");
	texit(div, i+1);
	eventer(div, "mouseover", previewLabel, false);
	eventer(div, "mouseout", resetLabel, false);
	eventer(div, "click", displayEvent, false);
	foster($('eventList'), div);
	
	if (events[id].get('overrideSchedule'))
	    defaultEvent = id;
    }
    // Move scroll to right
    $('eventList').scrollLeft = $('eventList').scrollWidth;
    
    // Go the default Event
    if (defaultEvent < 0)
	defaultEvent = id; // last event;
    
    _eevent = "event_" + defaultEvent;
    _event = events[defaultEvent];
    setStyle($(_eevent), "background=#000000", "color=#ffff00");
    $('eventLabel').innerHTML = _event.get('title');
    if (_event.dayIDs.length) listDays();
    else {
	ajaxManager("Load", "Days", _event.id);
     }
}

function previewLabel(e) {
    // change background and change label
    e = new Evt(e);
    setStyle(e.source, "background=#000000", "color=#ffffff");
    
    //$('eventLabel').innerHTML = events[e.source.id.split('_')[1]].get('title');
}

function resetLabel(e) {
    // reset background and label
    e = new Evt(e);
    if (e.source.id == _eevent) 
	setStyle(e.source, "background=#000000", "color=#ffff00");
    else setStyle(e.source, "background=#585db8", "color=#ffffff");
    
    //var label = "Pick an Event number above";
    //if (_event) label = _event.get('title');
    
    //$('eventLabel').innerHTML = label;
}

function displayEvent(e) {
    showSponsor(3);
    /*
    if (lockClicks) {
	alert ('Please wait for event ' + $(_eevent).innerHTML  + ' to finish loading');
	return;
    }
    */
    e = new Evt(e);
    
    if (_eevent)
	setStyle($(_eevent), "background=#585db8", "color=#fff");

    _eevent = e.source.id;
    _event = events[e.source.id.split('_')[1]];
    setStyle(e.source, "background=#759CFC", "color=#000");
    if (_event.dayIDs.length) listDays();
    else ajaxManager("Load", "Days", _event.id);
}

function listDays() {
    // Create links for each day
    $('daze').innerHTML = "";
    _day = null;
    _dday = null;
    var defaultDay;
    for (var i=0; i<_event.dayIDs.length; i++) {
	var id = _event.dayIDs[i];
	var day = days[id];
	var div = elementize("div", "id=day_" + id, "className=dayLink");
	var label = "";
	if (day.get('title').match(/final/i)) label = "Final";
	else {
		label = day.get('title').substring(4);
	}
	texit(div, label);
	eventer(div, "mouseover", hiLite, false);
	eventer(div, "mouseout", deLite, false);
	eventer(div, "click", dayer, false);
	foster($('daze'), div);

	// Display the default day
	if (_event.get('overrideSchedule') == id)
	    defaultDay = div;
    }

    if (! defaultDay) 
	defaultDay = $('day_' + id); // last day

    setStyle(defaultDay, "background=#000000", "color=#ffff00");
    displayDay(defaultDay.id);

    // Display event info
    selectMenu(_menu);
}

function hiLite(e) {
    e = new Evt(e);
    setStyle(e.source, "background=#000000", "color=#ffffff");
}

function deLite(e) {
    e = new Evt(e);
    if (e.source.id == _dday) 
	setStyle(e.source, "background=#000000", "color=#ffff00");
    else 
	setStyle(e.source, "background=#767fdc", "color=#ffffff");
}

function dayer(e) {
    e = new Evt(e);
    if (_day) {
	setStyle($(_dday), "background=#767fdc", "color=#ffffff");
    }

    setStyle(e.source, "background=#000000", "color=#ffff00");
    displayDay(e.source.id);
}

var li1TI = null;
var li2TI = null;
function displayDay(d) {
    _dday = d;
    _day = days[d.split('_')[1]];
    
    // Chip Leader image
    if (getOpacity($('leaderImg1')) > 0)
	li1TI = setInterval("fadeOut('leaderImg1', 'li1TI', .1)", 40);
    //setOpacity($('leaderImg1'), 0);
    $('loadingImg').style.display = "inline";
    if (_day.get('leaderImage')) {
	$('leaderImg1').src = _day.get('leaderImage');
    } else {
	var pic = Math.floor(Math.random()*18) + 1;
	if (pic < 10) pic = "0" + pic;
	$('leaderImg1').src = "/fp/nonflash/images/stock_" + pic + ".gif";
    }

    // Chip Leader text
    $('textHolder').innerHTML = "";
    if (_day.get('chipLeader')) {
	$('textHolder').style.display = "inline";
	var winner = elementize("DIV", "className=winnerText");
	texit(winner, _day.get('featureLabel') + ": " + _day.get('chipLeader'));
	var amount = elementize("DIV", "className=amountText");
	var tex = "wins ";
	if (_day.get('featureLabel') == "Chip Leader") tex = "leading with ";
	texit(amount, tex + _day.get('chips'));
	var desc = elementize("DIV", "className=descText");
	texit(desc, _event.get('title').split(':')[1]);
	foster($('textHolder'), winner, amount, desc);
    } else {
	$('textHolder').style.display = "inline";
	var desc = elementize("DIV", "className=noWinnerText");
	texit(desc, _event.get('title').split(':')[1]);
	foster($('textHolder'), desc);
    }
    
    // Blog title
    $('blogTitle').innerHTML = _tournament.get('name') + " - " + _event.get('title').split(':')[0] + " - " + _day.get('title');

    // Blog date
    ajaxManager("Set blogDate", _day.get('startDate'));

    // Blog text
    $('blogText').innerHTML = "";
    if (_day.get('eventBlogIntro')) {
	$('blogText').innerHTML = _day.get('eventBlogIntro');
    }

    // Read More link
    $('readMoreHolder').style.display = "none";
    if ($('readMore').href = _day.get('blogURL')) {
	$('readMoreHolder').style.display = "inline";
    }

    // Gallery
    //images = new Array();
    //gallery = new Array();
    //setOpacity($('galleryImg_1'), 0);
    //setOpacity($('galleryImg_2'), 0);
    //clearTimeout(galTO);
    //clearInterval(galTI);
    //_image = 0;
    //var tmpGallery = _day.get('gallery').split('|');
    //for (var i=0; i<tmpGallery.length; i++) {
	//images[i] = new Image(242, 151);
	//images[i].src = tmpGallery[i].split('~')[0];
	//gallery.push(tmpGallery[i].split('~')[0]);
    //}
    //if (gallery.length) {
	//$('galleryImg_1').src = gallery[_image];
   // }
}

function openBlog() {
    if (_day) {
    	window.open(_day.get('blogURL'), "_blank");
    }
}

function openGallery() {
    //window.open(_event.get('galleryLink'), "_blank");
}

var _image = 0;
var galTO = null;
var galTI = null;
function galleryFadeIn() {
//    var node = $('galleryImg_1');
//    var o = getOpacity(node) + .1;
//    if (o < 1) {
//	setOpacity(node, o);
 //   } else {
//	setOpacity(node, 1);
//	clearInterval(galTI);
//	galTO = setTimeout('galleryNext()', 3000);
//    }
}

function galleryFadeOut() {
 //   var node = $('galleryImg_1');
   // var o = getOpacity(node) - .1;
  //  if (o > 0) {
//	setOpacity($('galleryImg_1'), o);
 //   } else {       
//	clearInterval(galTI);
//	setOpacity($('galleryImg_1'), 0);
//	if (++_image >= gallery.length) _image = 0;
//	node.src = gallery[_image];
//    }
}

function galleryStart() {
    clearInterval(galTI);
    galTI = setInterval("galleryFadeIn()", 20);
}

function galleryNext() {
    clearInterval(galTI);
    galTI = setInterval("galleryFadeOut()", 20);    
}

//var plTO = null;

function playLoading() {
    if (lockClicks) {
	if (_eevent) {
	    $('loadingMsg').innerHTML = "Loading event " + $(_eevent).innerHTML + ", please wait...";
	} else {
	    $('loadingMsg').innerHTML = "Loading, please wait...";
	}
	$('loadingMsg').style.display = "inline";
	$('eventList').style.display = "none";
    } else {
	//clearTimeout(plTO);
	$('loadingMsg').innerHTML = "";
	$('eventList').style.display = "inline";
	$('loadingMsg').style.display = "none";
    }
}

var sponsorT0 = null;

function showSponsor(t) {
	$('sponsorImg').style.display = "inline";
	setTimeout("checkSponsor()",3000);
	ajaxManager("Impression","AD_IMPR");
}

function checkSponsor() {
	$('sponsorImg').style.display = "none";
}

function selectMenu(m) {
    // Default tab to chipCounts, or stats if chipCounts is empty
    var defaultTab = "chipCounts";
    if (! _event.get(defaultTab)) defaultTab = "chipCounts";
    if (! m) m = $(defaultTab);

    // If it's results, then just open a window with the results link
    if (m.id == "results") {
	window.open($('results').value, "_blank");
	return;
    }

    // If a menu is already selected, do nothing if it's the menu is stats already
    if (_menu) {
	if (_menu.id == 'stats' && m.id == 'stats') return;
	//setStyle(_menu, "color=#000000", "background=#c1bfc0", "textDecoration=none");
      _menu.className = "menuTabIdle";
    }

    // Do nothing if there's no event selected (weird case)
    if (! _event) return;

    // Ready to select a menu
    //_menu = m;
    //setStyle(_menu, "color=#000000", "background=#a6a6a6", "textDecoration=none");
    //$('eventInfo').innerHTML = '';
    
    _menu = m;
    _menu.className = "menuTabActive";
    $('eventInfo').innerHTML = '';

    // If chipCounts, payouts, or blinds are empty, display a temporary message
    if (_menu.id != "stats" && ! _event.get(_menu.id)) {
	$('eventInfo').innerHTML = "Coming soon...";
	return;
    }

    switch(_menu.id) {
	case "chipCounts":
	    var cc = _event.get(_menu.id).split(/\n/);
	    var table = elementize("table", "style.position=absolute", "style.top=0px", "align=center", "width=95%", "cellSpacing=0");
	    var thead = elementize("thead");
	    var tbody = elementize("tbody");
	    foster(table, foster(thead, foster(elementize('tr'), elementize('th', 'innerHTML=Name', 'style.textAlign=left'), elementize('th', 'innerHTML=Chips', 'style.textAlign=right'))));
	    for (var i=0; i<cc.length; i++) {
	      var backColor = "#afafaf";
	      if (i%2==0) {
                backColor = "#bfbfbf";
            }
		if (cc[i].match(/^timestamp:/)) {
		    var ts = new Date(cc[i].split(':')[1] * 1).toString().replace(/GMT-?\w*\b/, '');
		    foster(tbody, foster(elementize('tr'), elementize('td', 'className=cc_timestamp', 'colSpan=2', 'innerHTML=' + ts)));

		    //foster($('eventInfo'), foster(elementize('div','innerHTML=' + ts)));
		} else {
		    var line = cc[i].replace(/\s+/, ' ').replace(/^\s*/, '').replace(/\s*$/, '');
		    var cols = line.split(/\s/);
		    if (! cols[0]) continue;
		    var seat = '';
		    if (cols[0].match(/^\d+\./))
			seat = cols.shift();
		    var chips = 0;
		    if (cols[cols.length-1].match(/0|\d+,?\d*/))
			chips = cols.pop();
		    var name = cols.join(' ');
		    //var td_seat = elementize('td', 'style.textAlign=right', 'bgColor=' + backColor);
		    //texit(td_seat, seat);
		    var td_name = elementize('td', 'bgColor=' + backColor);
		    texit(td_name, name);
		    var td_count = elementize('td', 'style.textAlign=right', 'bgColor=' + backColor);
		    texit(td_count, chips);
		    foster(tbody, foster(elementize('tr'), td_name, td_count));
		}
	    }
	    foster($('eventInfo'), foster(table, tbody));
	break;
    case "payoutStructure":
	var ps = _event.get(_menu.id).split(/\n/g);
	var table = elementize("TABLE", "width=90%", "cellSpacing=0", "cellPadding=0");
	var tbody = elementize("TBODY");
	for (var i=0; i<ps.length; i++) {
	    var backColor = "#afafaf";
	    if (i%2==0) {
              backColor = "#bfbfbf";
          }
	    var tr = elementize("TR");
	    var cols = ps[i].split(/\s+/);
	    if (! cols[0]) continue;
	    var td_pos = elementize("TD", "width=50%", 'align=center', 'bgColor=' + backColor);
	    texit(td_pos, cols[0]);
	    var td_pay = elementize("TD", "width=50%", 'align=center', 'bgColor=' + backColor);
	    texit(td_pay, cols[1]);
	    foster(tbody, foster(tr, td_pos, td_pay));
	}
	foster($('eventInfo'), foster(table, tbody));
	break;
    case "stats":
	var lb_table = elementize("table", "id=leaderboards");
	var lb_tbody = elementize("tbody");
	var lb_tr_header = elementize("tr");
	var lb_th_boards = elementize("th");
	texit(lb_th_boards, "LeaderBoards");
	var lb_th_leaders = elementize("th");
	texit(lb_th_leaders, " ");
	var lb_tr_data = elementize("tr");
	var lb_td_boards = elementize("td", "id=lb_boards", "vAlign=top");
	var lb_td_leaders = elementize("td", "id=lb_leaders", "vAlign=top");
	
	var lb_year = null;
	if (_tournament.get('tournamentType') == "WSOP") {
	    lb_year = _tournament.get('name').split(' ')[1];
	}

	for (var i=0; i<leaderBoards.length; i++) {
	    var tex = "";
	    if (i < 2) {
		tex += lb_year + " ";
	    }
	    tex += leaderBoards[i];
	    var div = elementize("div", "id=lb_" + boardNames[i], "className=lb_divs");
	    texit(div, tex);
	    eventer(div, "click", pickBoard, false);
	    foster(lb_td_boards, div);
	}
	foster($('eventInfo'), foster(lb_table, foster(lb_tbody, foster(lb_tr_header, lb_th_boards, lb_th_leaders), foster(lb_tr_data, lb_td_boards, lb_td_leaders))));
	ajaxManager("Get Stats", "year-tourney-top-money", lb_year);
	_board = $('lb_year-tourney-top-money');
	setStyle(_board, "background=#ffa", "textDecoration=underline");
	break;
    default:
	$('eventInfo').innerHTML = _event.get(_menu.id).replace(/\n/g, "<br />");
	break;
    }
}

function pickBoard(e) {
    e = new Evt(e);
    
    if (_board) {
	setStyle(_board, "background=", "textDecoration=");	
    }

    var lbYear = null;
    if (_tournament.get('tournamentType') == "WSOP")
	lbYear = _tournament.get('name').split(' ')[1];

    ajaxManager("Get Stats", e.source.id.split('_')[1], lbYear);
    
    _board = e.source;
    setStyle(_board, "background=#ffa", "textDecoration=underline");	
}

function openLeaderboardPage(leaderboardLabel, lbYear) {
    q_str = "?list=" + leaderboardLabel + "&year=" + lbYear + "&tournament=" + _tournament.get('tournamentType');
    window.open('/players/leaderboards_dynamic.php' + q_str, "_blank");
}
