var httpPlayerPageNameStatus = getMyHTTPObject(); 
var MAX_AS_PLAYERS_FROM_SERVER = 3000;
var MAX_AS_PLAYERS_FOR_DISPLAY = 20;
var MAX_AS_PLAYER_NAME_SIZE = 35;
var MIN_AS_PLAYERNAME_SIZE = 0;
var DIV_OFFSET = -50;
var NUM_AS_COLUMNS = 3;
var pendingAsPageResponse = false;
var doAnotherAfterAsPagePendDone = false;
var pagePlayers;
var pageTimerID = null;
var autoSuggestPageObject = null;
var pageLeagueNumberAS = -1;
var thePageAsYear = 2008;
var myPagePlayerLinks = new Array();
var idpPageLeague = false;

function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}

function doSetupPlayerPageNameCheck()
{
	var emptyArray = new Array();

	autoSuggestPageObject = new AutoSuggest(document.getElementById('fieldPagePlayerSearch'),emptyArray,1,checkPagePlayerNameNow,
                                       LinkToPagePlayerPage, MAX_AS_PLAYERS_FOR_DISPLAY, DIV_OFFSET, "pageautosuggest", "hideMyPageDiv()");
}

function setupPlayerPageNameCheck(ln, yr, isIDP)
{
   idpPageLeague = isIDP;
	thePageAsYear = yr;
	pageLeagueNumberAS = ln;

	// Delay a bit so object is defined on the page before the class defines events for it
	t=setTimeout("doSetupPlayerPageNameCheck()",1000);
}

// Called with the click of the button
function checkPagePlayerNameNow(theName)
{
	// Clear any timer that may still be running
	if (pageTimerID) {
		clearTimeout(pageTimerID);
		pageTimerID = null;
	}
	var playerName;
	if (theName) {
		playerName = theName;
	}
	else {
		playerName = trim(document.PLAYER_SEARCH.Player.value);
	}

	try
	{
		// Waiting for last results, lets not hit the server again until they're back
		if (!pendingAsPageResponse)
		{
			if (playerName.length > MIN_AS_PLAYERNAME_SIZE) {
				// Note, two places we can get this... for draft guide it doesn't have php5 running, so no /football folder
				//getURL = "/football/player-search-provider.php?PLAYERNAME=" + escape(playerName) + (idpPageLeague ? "&IDP=1" : "") + "&X=" + Math.floor(Math.random() * 99999);
				getURL = "/php/player-search-provider.php?PLAYERNAME=" + escape(playerName) + (idpPageLeague ? "&IDP=1" : "") + "&X=" + Math.floor(Math.random() * 99999);
				httpPlayerPageNameStatus.open("GET", getURL, true);
				httpPlayerPageNameStatus.onreadystatechange = handlePagePlayerNameResponse;
				httpPlayerPageNameStatus.send(null);
				pendingAsPageResponse = true;
			}
		}
		else {
			doAnotherAfterAsPagePendDone = true;
		}
	}
	catch (e)
	{
//		var resultsDiv = document.getElementById('FindaFriendResultBox');
//		resultsDiv.innerHTML = 'Problem Retrieving playerNames!';
	}

}

function positionAbbr(position, show_as_combined_receivers, use_short_labels, show_as_combined_def_st)
{
	if (show_as_combined_receivers == null) show_as_combined_receivers = false;
	if (use_short_labels == null) use_short_labels = false;
	if (show_as_combined_def_st == null) show_as_combined_def_st = false;

	var dispPosition = "QB";
	switch (position)
	{
		case "0":
			dispPosition = "QB";
			break;
		case "1": 
			dispPosition = "RB";
			break;
		case "2":
			if (show_as_combined_receivers)
				dispPosition = "WR/TE";
			else
				dispPosition = "WR";
			break;
		case "3": 
			dispPosition = "TE";
			break;
		case "10":
			dispPosition = "DL";
			break;
		case "11": 
			dispPosition =  "LB";
			break;
		case "12":
			dispPosition = "DB";
			break;
		case "4":
			dispPosition = "K";
			break;
		case "20":
			dispPosition = "P";
			break;
		case "5":
			if (show_as_combined_def_st)
				if (use_short_labels)
					dispPosition = "D/ST";
				else
					dispPosition = "Def/ST";
			else
				if (use_short_labels)
					dispPosition = "Def";
				else
					dispPosition = "Defense";
			break;
		case "6":
			if (show_as_combined_def_st)
				if (use_short_labels)
					dispPosition = "D/ST";
				else
					dispPosition = "Def/ST";
			else
				if (use_short_labels)
					dispPosition = "ST";
				else
					dispPosition = "Special Team";
			break;
		case "7":
			if (use_short_labels)
				dispPosition = "HC";
			else
				dispPosition = "Head Coach";
			break;
		case "8":
			if (use_short_labels)
				dispPosition = "Off";
			else
				dispPosition = "Offense";
			break;
		case "99":
			dispPosition = "OL";
		break;
	}
	return dispPosition;
}

function handlePagePlayerNameResponse() 
{
	try
	{
		if (httpPlayerPageNameStatus.readyState == 4) 
		{
			pendingAsPageResponse = false;
			// if we held up and didn't hit the server when there was a pending request out there
			// and pending request is back now... lets ignore this response and do one more server hit with
			// what the user typed so we don't annoy him with these old results and we don't
			// ignore his last keystrokes
			if (doAnotherAfterAsPagePendDone) {
				doAnotherAfterAsPagePendDone = false;
				checkPlayerName();
			}
			else {
				if (httpPlayerPageNameStatus.responseText.indexOf('invalid') == -1) {
					// Use the XML DOM 
					var xmlDocument = httpPlayerPageNameStatus.responseXML; 

					//
					//  get the result object
					//
					var playersAdded = 0;
					var playersCountElem = xmlDocument.getElementsByTagName('players').item(0);
					playersCount     = playersCountElem.getAttribute('count');

					if (playersCount > 0) {
						pagePlayers = xmlDocument.getElementsByTagName('players');
						i = 0;
						var autoPlayers = new Array();
						// Reset this array
						myPagePlayerLinks = new Array();
						while (i < pagePlayers[0].childNodes.length) {
							// Continue only if childNode is a tag (ignores white space in some browsers)
							if (pagePlayers[0].childNodes[i].nodeType == 1) {
								playerName = pagePlayers[0].childNodes[i].getAttribute('last-name') + ", " + pagePlayers[0].childNodes[i].getAttribute('first-name');
								playerPosTeam = ", " + positionAbbr(pagePlayers[0].childNodes[i].getAttribute('position'), false, true, false) + ", " + pagePlayers[0].childNodes[i].getAttribute('team');
								if (playerName.length > MAX_AS_PLAYER_NAME_SIZE) {
									playerName = playerName.substr(0, MAX_AS_PLAYER_NAME_SIZE) + '...';
								}
								myPagePlayerLinks[playersAdded] = pagePlayers[0].childNodes[i].getAttribute('player-num');
								autoPlayers[playersAdded] = "<a href=\"/php/draft-guide-player.php?PN=" + myPagePlayerLinks[playersAdded] + "\">" +
                                                      playerName + playerPosTeam + "</a>";
								playersAdded++;
								i++;

							} // node_Type == 1
							// row is not of right nodeType
							else {
								i++;
							}

							// Cap this at X rows
							if (playersAdded >= MAX_AS_PLAYERS_FROM_SERVER) {
								// Todo - should do something here, a ... list item or something
								break;
							}
						} // while loop
					}  // if playersCount > 0
					else {
						// Put the "None Found" message in the middle
						// Todo - Hmmm, what to do here...
					}
					//
					// Call the function to load the auto-player-search
					//
					if (autoSuggestPageObject) {
						autoSuggestPageObject.suggestions = autoPlayers;
						autoSuggestPageObject.resetSuggestions();
					}
					else {
						autoSuggestPageObject = new AutoSuggest(document.getElementById('fieldPagePlayerSearch'),
															autoPlayers, 1, checkPagePlayerNameNow, LinkToPagePlayerPage, 
															MAX_AS_PLAYERS_FOR_DISPLAY, DIV_OFFSET, "pageautosuggest", "hideMyPageDiv()");
						autoSuggestPageObject.resetSuggestions();
					}
				} // responseText = -1
			} // doAnotherAfterAsPagePendDone
		} // readyState == 4
	}
	catch (e)
	{
		pendingAsPageResponse = false;
	}

}

function LinkToPagePlayerPage(index)
{
	// User selected the special last row, wanting to see all results
	if (index == -1) {
		// No league number specified, lets go to draft guide version
		if (pageLeagueNumberAS <= 0) {
			var URL = "/php/draft-guide-search.php";
			location.href = URL;
			return false;
		}
		else {
			document.PlayerPageSearch.submit();
			return true;
		}
	}
	else {
		this.elem.value = '';
		// No league number specified, lets go to draft guide version
		if (pageLeagueNumberAS <= 0) {
			var URL = "/php/draft-guide-player.php?PN=" + myPagePlayerLinks[index];
			location.href = URL;
		}
		else {
			openPlayerWindow(pageLeagueNumberAS, myPagePlayerLinks[index], thePageAsYear, true);
		}
		return false;
	}

}

function hideMyPageDiv()
{
	autoSuggestPageObject.hideDiv();
}

function getMyHTTPObject() {
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}
