
	//
	// page_players.js
	//

var bugtrack = false;
	
	var mCurrRatingYear = 2009;
	
	var FILTER_PANEL_HEIGHT = 45;
	var RATING_CHANGE_REQUESTED = 1;
	var RATING_CHANGE_DONE = 2;
	
	var elem_firstname;
	var elem_lastname;
	var elem_district;
	var elem_playerID;
	var elem_playerDataID;
	var elem_entry_mode;
	var elem_curr_rating;
	var elem_num_raters;
	
	var but_new_obj;
	var but_exit_new_obj;
	var but_delete_obj;
	var but_kill_obj;
	var but_save_obj;
	
	var elem_player_photo;
	
	var elem_submit_but;	
	var elem_delete_but;

	var mFilterPanel;
	var mPlayerTbl;
	var mRatingTbl;
	var mRatingHistTbl;
	var mPlayerForm;
	var mImportForm;
	var mRatePanel;
	var mOrderPopup;
	var mPlayerListPanel;
	var mTournListPanel;
	var mEventTablePanel;
	
	var mSavedRow;
	var mMovePanelIntID;
	var mFileName;
	var mTitleObj;
	
	var mRatingShowIntFunc;
	var mSavedPlayerID;
	
	var mSignButPos;
	var mSignButNeg;
	var mDecWholeNum;
	var mIncWholeNum;
	var mDecTenths;
	var mIncTenths;
	var mDecHundreds;
	var mIncHundreds;

	var mRating;
	var mSoundAvail = false;
	var mDefaultSort = "rating";
	
	var mPlayerBlogMode = "closed";	// open or closed


	//---------------------------
	//     INIT PAGE
	//---------------------------
	function InitPlayerPage()
		{			
//		SetPlayerBlogMode("closed");
		GetPrivileges(GetUsername(), "");	
		if (!mPlayerPageInit)
			{
			Event_Init();
			InitElementVars();
			elem_playerID.value = "empty";
			BuildPlayerTable();
			SetupBuildRatingTable();
	//		BuildTournamentTable();
	//		BuildEventTable();
	//		BuildWinnersTable();
	//		BuildAttendeesTable();
			mPlayerPageInit = true;
			CleanupUpload();
//			SetRatingPeriodStartDate();
//			SetTotalRatingsMade();
//			SetTotalRaters();
			}
		
//		RefreshPlayerBlog();
		}

	//----------------------------------------------
	function BuildPlayerTable()
		{		
		mPlayerListPanel = new Panel("id_player_tbl_panel",22, 10, 544, 380,"1px", "inset", "#000000", "#cccccc", null);
		//----------- TITLE BAR ----------------------------------------------------------
		var titlebar = mPlayerListPanel.AddObject("TB_player_tbl", TYPE_TITLE_BAR,0,0,18,mPlayerListPanel.width,"Player Listing","","");
		titlebar.SetBkgndImage("images_ui/titlebars/liteblue.jpg");
		mPlayerListPanel.Show();

		mPlayerTbl = new Table('pla');					// Create a new instance of a table (Player Table)
		mPlayerTbl.SetPosition(72, 5);					// Position the table (top, left)
		mPlayerTbl.SetTotalRowsPerPage(20);				// Set initial num of visible rows in table
		mPlayerTbl.SetParentElem(mPlayerListPanel.div);
		if (mDefaultSort == "lastname") hdg = 2;
		else hdg = 4;
		
		mPlayerTbl.SetDfltSelectedHdg(hdg);				// Set default hilited heading (last name)
		mPlayerTbl.SetTotalCols(6);						// Set total number of colums
		mPlayerTbl.SetColAlignments("center","left","left","left","center","center");			// Set column alignments
		mPlayerTbl.SetColWidths(40, 90, 90, 60, 40, 45);// Set column widths
		mPlayerTbl.SetXtraPopup("Year", SetupYearPopup);
		mPlayerTbl.SetSelectRowFunc(SelectPlayerRow);	// Set selected row
		mPlayerTbl.SetSelectHdgFunc(SelectHdg);			// Set selected heading
		mPlayerTbl.SetHeadingNames("#", "First Name", "Last Name", "District", "Rating", "# Raters");
		mPlayerTbl.SetDataStrID("id_playerData");		// Set the element that will keep a copy of all player data
		mPlayerTbl.SetColDataIndicies(-1,1,2,3,5,6);	// Set visible columns
		mPlayerTbl.SetPostDataFunc(FinalDataEdit);
	
		CreatePlayerListPanels();
		CreatePlayerInfoPanel();
		SetRatePanel();

		mPlayerTbl.Show();								// Display the table
		
	//	CreateImportPanel();
		}
	//-----------------------------
	function CreatePlayerListPanels()
		{
		SetFilterPanel();
		}
		
//---------------------------------------------------------
function SetFilterPanel()
	{
	mFilterPanel = new Panel(mPlayerTbl.tableID+"_filterForm",
						   20, mPlayerTbl.left-8, FILTER_PANEL_HEIGHT, mPlayerTbl.width+30,
						   "thin", "none", color_medium_gray, "transparent",mPlayerListPanel.div);

	var fname = mFilterPanel.AddObject("FNAME", TYPE_TEXT_EDIT, 5, 78, 20, 70, "First Name");
	fname.SetChangeFunc("ChangeFirstName");
	var lname = mFilterPanel.AddObject("LNAME", TYPE_TEXT_EDIT, 5, 158, 20, 70, "Last Name");
	lname.SetChangeFunc("ChangeLastName");

	var districtPopup = mFilterPanel.AddObject("District", TYPE_POPUP, 5, 8, 20, 60, "District");
	districtPopup.AddOption("All");
	districtPopup.LoadFromDB("players", "district", DonePlayerFilterFunc, mFilterPanel);	
	districtPopup.SetChangeFunc("ChangeDistrict");
	
	var photosPopup = mFilterPanel.AddObject("Photo", TYPE_POPUP, 5, 235, 20, 84, "Photo");
	photosPopup.AddOption("All");
	photosPopup.AddOption("Photos_Only");
	photosPopup.AddOption("No_Photos");
	photosPopup.SetChangeFunc("ChangePhotoFilter");
	photosPopup.SetValue("All");
	
	mOrderPopup = mFilterPanel.AddObject("OrderPopup_ID", TYPE_POPUP, 5, 325, 20, 49, "Order");
	mOrderPopup.AddOption("ASC");
	mOrderPopup.AddOption("DESC");
	mOrderPopup.SetChangeFunc("Change_ASC_DESC");
	mOrderPopup.SetValue("ASC");
	
	mPlayerTbl.AddFilter("sort", mDefaultSort);
	mPlayerTbl.AddFilter("district", "All");
	mPlayerTbl.AddFilter("first_name", "");
	mPlayerTbl.AddFilter("last_name", "");
	mPlayerTbl.AddFilter("has_photo", "All");
	mPlayerTbl.AddFilter("asc_desc", "ASC");
	}
//-----------------------------
function ChangeDistrict(elem)
	{
	mPlayerTbl.SetFilterValue("district", elem.value);
	RebuildPlayerList(1);
	}
//-----------------------------
function ChangePhotoFilter(elem)
	{
	mPlayerTbl.SetFilterValue("has_photo", elem.value);
	RebuildPlayerList(1);
	}
//-----------------------------
function Change_ASC_DESC(elem)
	{
	mPlayerTbl.SetFilterValue("asc_desc", elem.value);
	RebuildPlayerList(1);
	}

//-----------------------------
function ChangeFirstName(elem)
	{
	mPlayerTbl.SetFilterValue("first_name", elem.value);
	GetElemByID("LNAME").value = "";
	mPlayerTbl.SetFilterValue("last_name", "");
	RebuildPlayerList(1);
	}
//-----------------------------
function ChangeLastName(elem)
	{
	mPlayerTbl.SetFilterValue("last_name", elem.value);
	GetElemByID("FNAME").value = "";
	mPlayerTbl.SetFilterValue("first_name", "");
	RebuildPlayerList(1);
	}
	
//		this.filterForm.AddObject("test", TYPE_TEXT, 10, 10, 10, 60, "this is a test");
	//	districtPopup.AddOptions("one","two","fwee")		
//		this.filterForm.Show();


	//---------------------------
	//     CLICK FIRST ROW
	//---------------------------
	function ClickFirstRow()
		{
		mPlayerTbl.SelectTopRow();
		}
	//---------------------------
	//     INIT ELEMENT VARS
	//---------------------------
	function InitElementVars()
		{
		elem_playerID = GetElemByID('id_player_id');
		}
		
	//---------------------------
	//     GET ENTRY MODE
	//---------------------------
	function GetEntryMode()
		{
		for (i = 0; i < elem_entry_mode.entry_mode.length; i++)
			{
			if (elem_entry_mode.entry_mode[i].checked == true)
				{
				switch(i)
					{
					case 0: return 'View';
					case 1: return 'Edit';
					case 2: return 'New';
					}
				}
			}
		}
	//----------------------------------------------------------------
	function SetEntryModeElement(mode)
		{
		for (i = 0; i < elem_entry_mode.entry_mode.length; i++)
			{
			elem_entry_mode.entry_mode[i].checked = false;
			}
			
		switch(mode)
			{
			case "View": elem_entry_mode.entry_mode[0].checked = true; break;
			case "Edit": elem_entry_mode.entry_mode[1].checked = true; break;
			case "New": elem_entry_mode.entry_mode[02].checked = true; break;
			}
		}
	//---------------------------
	//     SET BACK COLOR
	//---------------------------
	function SetBackColor(elem, color) 
		{
		if (elem != null) elem.style.backgroundColor = color;
		}

	//---------------------------
	//     VALIDATE FIELDS
	//---------------------------
	function ValidateFields()
		{
		var missingFlds = false;
		
		if (elem_firstname.value == "")
			{
			SetBackColor(elem_email, 0xffbbbb);
			missingFlds = true;
			}
		if (elem_lastname.value == "")
			{
			SetBackColor(elem_email, 0xffbbbb);
			missingFlds = true;
			}
		if (elem_district.value == "")
			{
			SetBackColor(elem_email, 0xffbbbb);
			missingFlds = true;
			}
		if (missingFlds == true)
			{
			( "First name, last name, and district are all required fields." );		
			}
		return !missingFlds;
		}
	//---------------------------
	//     VALIDATE EMAIL
	//---------------------------
	function ValidateEmail(email) 
		{
		var str = new String(email);
		var isOK = true;
		
		if (email == "") return isOK;
		
		rExp = /[!\"�$%\^&*()-+=<>,\'#?\\|�`\/\[\]]/
		if( rExp.test(str) )
		isOK = false;
		if( str.indexOf('.') == -1 || str.indexOf('@') == -1 )
		isOK = false;
		if( str.slice(str.lastIndexOf('.')+1,str.length).length < 2 )
		isOK = false;
		if( str.slice(0,str.indexOf('@')).length < 1 )
		isOK = false;
		if( str.slice(str.indexOf('@')+1,str.lastIndexOf('.')).length < 1 )
		isOK = false;

		if( !isOK )
			{
			SetBackColor(elem_email, 0xffbbbb);
			( "The email address you have entered is invalid." );
			elem_email.focus();
			elem_email.Select();	
			}
		return isOK;
		}
	
	//---------------------------
	//     REBUILD PLAYER LIST
	//--------------------------- 
	function RebuildPlayerList(selectRow)
		{
		SetCursor_Waiting();
		start_rating_date = "1/1/88";
		mSavedRow = selectRow;
		sortby = mPlayerTbl.GetFilterValue("sort");
		if (sortby == null) sortby = mDefaultSort;
		var distfilter = mPlayerTbl.GetFilterValue("district");
		if (distfilter == null) distfilter = "all";
		var firstfilter = mPlayerTbl.GetFilterValue("first_name");
		if (firstfilter == null) firstfilter = "";
		var lastfilter = mPlayerTbl.GetFilterValue("last_name");
		if (lastfilter == null) lastfilter = "";
		var photofilter = mPlayerTbl.GetFilterValue("has_photo")
		if (photofilter == null) photofilter = "Photos_Only";
		var asc_desc_order = mPlayerTbl.GetFilterValue("asc_desc")
		if (asc_desc_order == null) asc_desc_order = "ASC";
		year = GetRatingYear();
		var str='sort='+sortby+'^dist='+distfilter+'^fname='+firstfilter+'^lname='+lastfilter+'^photofilter='+photofilter+
				'^start_rating_date='+start_rating_date+'^asc_desc='+asc_desc_order+
				'^year='+year;

		// Make AJAX call -------------------
//		EnableDetailFields(false);
//		("fields have been dimmed")
		var ajax = new AJAX("lib_players/get_player_data.php", str);
		ajax.onload = RefreshTableData;
		ajax.get();
		}

	//---------------------------
	//     RefreshTableData
	//---------------------------
	function RefreshTableData(ajax, success)
		{
		if (success)
			{
			ajax.PutStrInValue("id_playerData");
		//	var s = ajax.GetRtnStr();
		//	GetElemID("id_playerData").value = s.substr(0, s.length-1);	
			mPlayerTbl.Refresh();
			elem_playerID.value = RowToPlayerID(mSavedRow);
			}

		delete ajax;
		mPlayerTbl.SetControlForm();
		SetDetailsElements();
		if (success) 
			{
			mPlayerTbl.SelectRow(mSavedRow);	
			}
		mPlayerTbl.ResetTotal();
		SetCursor_Normal();
		RebuildRatingHistList();
		}

//--------------------------------------------
function RowToPlayerID(row)
	{
	var rowData = mPlayerTbl.GetRowData(row);	
	return rowData [0];
	}
//--------------------------------------------
function PlayerIDToRow(playerid)
	{
	return mPlayerTbl.RowIDToRow(playerid);
	}

	//---------------------------
	//     SelectPlayerRow
	//---------------------------
	function SelectPlayerRow(tblObj, rowNum)
		{
//		DisableSubmit();
//		MakeAllFieldsWhite();
		if (rowNum > 0) SetRowDataValues(rowNum);
		EnableDetailFields(true);
		RebuildRatingList();
		RebuildRatingHistList();
		}
		
	//---------------------------------------------------------
	function Set_ASC_DESC_Default(asc_desc)
		{
		var elem = GetElemByID("OrderPopup_ID");	
		if (elem != null) 
			{
			elem.value = asc_desc;
			mPlayerTbl.SetFilterValue("asc_desc", asc_desc);
			}
		}
	
	//---------------------------
	//     SelectHdg
	//---------------------------
	function SelectHdg(tblObj, col)
		{
		var val;
		
		Set_ASC_DESC_Default("ASC");
		
		switch(parseInt(col))
			{
			case 1: val = "firstname";  break;
			case 2: val = "lastname";	break;
			case 3: val = "district";	break;
			case 4: val = "rating";		break;
			case 5: val = "num_raters";	
				Set_ASC_DESC_Default("ASC");
				break;
			}
		mPlayerTbl.SetFilterValue("sort", val);
		RebuildPlayerList(1);
		}
	
//---------------------------------------------------------
function GetContribAndShowPict(fName)
	{
	var str = "request=filename_to_contrib^filename="+fName;
	// Make AJAX call -------------------
	var ajax = new AJAX("mug_shot_contribs_ajax.php", str);
	ajax.onload = Done_GetContribAndShowPict;
	ajax.get();
	}
//---------------------------------------------------------
function Done_GetContribAndShowPict(ajax, success)
	{
	if (success)
		{
		var rtn = ajax.GetRtnStr();	
		var data = rtn.split(",");
		var filename = data[0];
		var contrib_name = data[1];
		var contrib_date = data[2];
		
		ShowPict(filename, contrib_name, contrib_date) 
		}
	delete ajax;
	}

//---------------------------------------------------------
function ShowPict(fName, contrib_by, contrib_date) 
	{
	var path = "";
	
	elem_player_photo = GetElemByID("P_PHOTO");
	if (fName != "")
		{
		path = "../photos/"+fName.toLowerCase();
		var img = new Image();
		img.src = path;
		}

	elem_player_photo.src = path+'?'+escape(new Date());
	
	if (fName == "") elem_player_photo.alt = "Empty";
	else if (contrib_by == "") elem_player_photo.alt = GetFullName(); 
	else elem_player_photo.alt = GetFullName()+"\nPhoto contributed by "+contrib_by+"\non "+contrib_date;
	}

//---------------------------
function FirstNameKeyHit()
	{
	elem_last_filter.value = "";
	RebuildPlayerList(1);
	}
//---------------------------
function LastNameKeyHit()
	{
	elem_first_filter.value = "";
	RebuildPlayerList(1);	
	}

//---------------------------
function ResetEnableSubmitButton()
	{
	switch(GetEntryMode())
		{
		case "New":
			elem_submit_but.disabled = false;	
			break;
		case "Edit":
			elem_submit_but.disabled = false;
			break;
		case "View":
			elem_submit_but.disabled = true;
			break;
		}
	}
//---------------------------
function DisableSubmit()
	{
	if (elem_submit_but != null) 
		{
		elem_submit_but.disabled = true;
		}
	}
//---------------------------
function EnableDetailFields(enable)
	{
	if (elem_firstname != null)
		{
	 	elem_firstname.disabled = !enable;
	 	elem_lastname.disabled = !enable;
	 	elem_district.disabled = !enable;
	 	elem_email.disabled = !enable;
		}
	}
//---------------------------
function ClearPlayerDetails()
	{
	elem_firstname.value = "";
	elem_lastname.value = "";
	elem_district.value = "";
	elem_email.value = "";
	ShowPict("","","");
	SetPlayerTitle("");
	}

//---------------------------
//     ClearPlayer
//---------------------------
function ClearPlayer()
	{
	EnableDetailFields(true);
	DisableSubmit();
	}
//---------------------------
//     SubmitChanges
//---------------------------
function SubmitChanges()
	{
	var mode = GetEntryMode();
	
	if (mode == "Edit")
		{
		UpdatePlayer();
		}
	else
		{
		if (mode == "New")
			{
			AddPlayer();
			}
		}
	}
//---------------------------
//     UpdatePlayer
//---------------------------
function UpdatePlayer()
	{
	if (!ValidateFields()) return;
	
	savedRow = mPlayerTbl.GetCurrentRow();
	firstname = elem_firstname.value;
	lastname = elem_lastname.value;
	district = elem_district.value;
	email = elem_email.value;
	playerid = elem_playerID.value;
	
	if (!ValidateEmail(email)) return;
	var str='fname='+firstname+'^lname='+lastname+'^dist='+district+'^email='+email+'^playerid='+playerid;
	mSavedRow = mPlayerTbl.GetCurrentRow();
	
	// Make AJAX call -------------------
	var ajax = new AJAX("lib_players/player_update.php", str);
	ajax.onload = FinishUpdate;
	ajax.get();
	}
//---------------------------
//     FINISH UPDATE
//---------------------------
function FinishUpdate(ajax, success)
	{
	if (success)
		{
		RebuildPlayerList(1);
		ResetEnableSubmitButton();
		EnableDetailFields(true);
		("Information has been saved.")
		}
	delete ajax;
	}
	
//---------------------------
//     AddPlayer
//---------------------------
function AddPlayer()
	{
	if (!ValidateFields()) return;
	
	firstname = elem_firstname.value;
	lastname = elem_lastname.value;
	district = elem_district.value;
	email = elem_email.value;
	playerid = elem_playerID.value;
	
	if (!ValidateEmail(email)) return;
	var str='fname='+firstname+'^lname='+lastname+'^dist='+district+'^email='+email;

	// Make AJAX call -------------------
	var ajax = new AJAX("lib_players/player_add.php", str);
	ajax.onload = FinishAdd;
	ajax.get();

	}

//---------------------------
//     FINISH ADD
//---------------------------
function FinishAdd(ajax, success)
	{
	if (success)
		{
		var newPlayerID = ajax.GetRtnStr();
		ExitPlayerNewMode(nil,nil,nil);
		RebuildPlayerList(PlayerIDToRow(newPlayerID));	
		SetToViewMode();
		}
	delete ajax;
	}
			
//---------------------------
//     DeletePlayer
//---------------------------
function DeletePlayer()
	{
	if (mPlayerTbl.GetCurrentRow() > 0 && elem_playerID.value != "")
		{
		var str = 'id='+elem_playerID.value;
		
		// Make AJAX call -------------------
		var ajax = new AJAX("lib_players/player_delete.php", str);
		ajax.onload = FinishDelete;
		ajax.get();
		}
	}

//---------------------------
//     FINISH DELETE
//---------------------------
function FinishDelete(ajax, success)
	{
	if (success)
		{
		("Player has been deleted.")
//		ajax.PutStrInValue(id_new_player_results);
		RebuildPlayerList(1);	
	//	SetToViewMode();
		}
	delete ajax;
	}

//-------------------------------
//     MAKE ALL FIELDS WHITE
//-------------------------------
function MakeAllFieldsWhite()
	{
	if (elem_firstname != null) SetBackColor(elem_firstname, 0xffffff);	
	if (elem_lastname != null) SetBackColor(elem_lastname, 0xffffff);	
	if (elem_district != null) SetBackColor(elem_district, 0xffffff);	
	if (elem_email != null) SetBackColor(elem_email, 0xffffff);	
	}

//-------------------------------
//     ARE ALL REQD FIELDS FILLED
//-------------------------------
function AreAllReqdFieldsFilled()
	{
	if (	elem_firstname.value != ""
		&&  elem_lastname.value != ""
		&&  elem_district.value != ""
		)
		{
		return true;
		}
	return false;
	}
//---------------------------
//     CHECK OK TO EDIT
//---------------------------
function CheckOKToEdit(elem)
	{
	return !(GetEntryMode() == 'View');
	}

//---------------------------
//     FIELD KEY HIT
//---------------------------
function FieldKeyHit(elem)
	{
	var mode = GetEntryMode();
	if (mode != 'View')
		{
		if (AreAllReqdFieldsFilled())
			{
			SetBackColor(elem, 0xffffff);	
			ResetEnableSubmitButton();
			}
		}
	}
	
//---------------------------
//     ENTER VIEW MODE
//---------------------------
function EnterPlayerViewMode() 
	{
	if (mPlayerTbl.GetCurrentRow() == 0)
		{
		mPlayerTbl.SelectRow(1);	
		}
	}
//---------------------------
//     ENTER EDIT MODE
//---------------------------
function EnterPlayerEditMode() 
	{
	if (mPlayerTbl.GetCurrentRow() == 0)
		{
		mPlayerTbl.SelectRow(1);	
		}
	MakeAllFieldsWhite();
	}

//-------------------------------------------------------------------------------
function EnterPlayerNewMode(elem,event,panel_id)
	{
	if (GetPrivilege(GetUsername(), "priv_add_players"))
		{
		ClearAllRatings();
		mSavedPlayerID = elem_playerID.value; 
		but_exit_new_obj.Show();
		but_new_obj.Hide();
		but_delete_obj.Hide();
		if (IsAdmin()) but_kill_obj.Hide();
		ClearPlayerDetails();
		elem_firstname.focus();
		mPlayerTbl.SelectRow(0);
	
		elem_playerID.value = "";
		EnableDetailFields(true);
		elem_firstname.focus();
		}
	else
		{
		AlertNoPriv("Add Player");
		}
	}

//-------------------------------------------------------------------------------
function ExitPlayerNewMode(elem,event,panel_id)
	{
	but_exit_new_obj.Hide();
	but_new_obj.Show();
	but_delete_obj.Show();
	if (IsAdmin()) but_kill_obj.Show();
	var row = PlayerIDToRow(mSavedPlayerID);
	SelectPlayerRow(null, row);
	mPlayerTbl.SelectRow(row);
	}	

//-------------------------------------------------------------------------------
function IsAdmin()
	{
	return (GetElemByID("id_username").value == "admin");
	}
	
	//---------------------------
	//     SET TO VIEW MODE
	//---------------------------
	function SetToViewMode() 
		{
		SetEntryModeElement("View");
		}
/*
		if (GetEntryMode != )
		if (GetCurrentUserLevel() >= RATER_LEVEL)
			{
			SetEntryModeElement("Edit");
			}
		else SetEntryModeElement("View");
*/

	//---------------------------
	//     SetRowDataValues
	//---------------------------
	function SetRowDataValues(rowNum)
		{
		var filename;

		if (rowNum > -1)
			{
			rowData = mPlayerTbl.GetRowData(rowNum);
			elem_playerID.value = rowData [0];
			elem_firstname.value = rowData [1];
			elem_lastname.value = rowData [2];
			elem_district.value = rowData [3];
			elem_email.value = rowData [4];
			elem_curr_rating.value = rowData[5];
			mRating.SetDigitsValue(elem_curr_rating.value);	// copy ratings into rater area
			elem_num_raters.value = rowData[6];
			

			filename = elem_firstname.value+elem_lastname.value+".jpg";
			filename.replace(" ","");
			ProcessPhoto(filename);
		//	ShowPict(filename);
			SetPlayerTitle(elem_firstname.value+" "+elem_lastname.value);
//			GetElemByID("id_comments_about").innerHTML = "Comments about "+
//						elem_firstname.value+" "+elem_lastname.value+".";
//			RefreshPlayerBlog();
			}
		else
			{
			elem_playerID.value = "";
			elem_firstname.value = "";
			elem_lastname.value = "";
			elem_district.value = "";
			elem_email.value = "";
			ShowPict("","","");
			SetPlayerTitle("");
			}
		
		}

//---------------------------------------------------------
function CreatePlayerInfoPanel()
	{
	var panelID = mPlayerTbl.tableID+"_playerForm";
	mPlayerForm = new Panel(panelID,mPlayerListPanel.top, 414, 378, 250,"1px", "inset", "#000000", "#cccccc", null);
	
	//----------- TITLE BAR ----------------------------------------------------------
	var titlebar = mPlayerForm.AddObject("TB_PlayerInfo", TYPE_TITLE_BAR,0,0,18,mPlayerForm.width,"Player Information","","");
	titlebar.SetBkgndImage("images_ui/titlebars/liteblue.jpg");
	
	//----------- TITLE ----------------------------------------------------------
	var ht = mFilterPanel.height;
	var width = mPlayerForm.width;

	mTitleObj = mPlayerForm.AddObject("TITLE", TYPE_TITLE,26,0,ht,mPlayerForm.width,"One Moment Please...");
	mTitleObj.SetTextSize(18);
	mTitleObj.SetFontWeight("bold");
	mTitleObj.SetColor("black");

	var vpos = 60;
	//----------- PHOTO BUTTONS ----------------------------------------------------------
	var photo = mPlayerForm.AddObject("P_PHOTO", TYPE_PHOTO_WITH_FRAME, vpos, 30, 190, 180, "");

	var leftBut = mPlayerForm.AddObject("but_left", TYPE_IMG_BUTTON, vpos+50, 5, 0, 0, "");
	leftBut.SetLeftButImages(GotoPrevPlayer, null);

	var rtBut = mPlayerForm.AddObject("but_rt", TYPE_IMG_BUTTON, vpos+50, 217, 0, 0, "");
	rtBut.SetRtButImages(GotoNextPlayer, null);

	var dblLeftBut = mPlayerForm.AddObject("but_left_dbl", TYPE_IMG_BUTTON, vpos+110, 5, 0, 0, "");
	dblLeftBut.SetDblLeftButImages(GotoFirstPlayer, null);
		
	var dblRtBut = mPlayerForm.AddObject("but_rt_dbl", TYPE_IMG_BUTTON, vpos+110, 217, 0, 0, "");
	dblRtBut.SetDblRtButImages(GotoLastPlayer, null);
	
	vpos += 200;
	//------------------------------------------------------------------------------------------
	var fname = mPlayerForm.AddObject("P_FNAME", TYPE_TEXT_EDIT, vpos, 10, 20, 100, "First Name");
	fname.SetChangeFunc("ValidateFirstName");
	var lname = mPlayerForm.AddObject("P_LNAME", TYPE_TEXT_EDIT, vpos, 120, 20, 120, "Last Name");
	lname.SetChangeFunc("ValidateLastName");
	var dist = mPlayerForm.AddObject("P_DIST", TYPE_TEXT_EDIT, vpos+40, 10, 20, 50, "District");
	var email = mPlayerForm.AddObject("P_EMAIL", TYPE_TEXT_EDIT, vpos+40, 70, 20, 170, "EMail");

	vpos += 88;
	but_new_obj = mPlayerForm.AddObject("P_NEW", TYPE_STD_BUTTON, vpos, 7, 0, 70, "New");
	but_new_obj.SetChangeFunc("EnterPlayerNewMode");

	but_exit_new_obj = mPlayerForm.AddObject("P_EXIT_NEW", TYPE_STD_BUTTON, vpos, 7, 0, 100, "Exit New Mode");
	but_exit_new_obj.SetChangeFunc("ExitPlayerNewMode");

	but_delete_obj = mPlayerForm.AddObject("P_DELETE", TYPE_STD_BUTTON, vpos, 81, 0, 80, "Deactivate");
	but_delete_obj.SetChangeFunc("InactivatePlayerRecord");

	but_save_obj = mPlayerForm.AddObject("P_SUBMIT", TYPE_STD_BUTTON, vpos, 167, 0, 70, "Save");
	but_save_obj.SetChangeFunc("AcceptPlayerChanges");	

	if (GetPrivilege(GetUsername(), "priv_set_ratings"))
		{
		entryMode = "Edit";
		}
	else
		{
		entryMode = "View";
		}
	var entryMode = mPlayerForm.AddObject("P_ENTRY_MODE", TYPE_RADIO_CLUSTER, 365, 8, 0, 0, "", entryMode, "entry_mode");
	entryMode.AddOptions("View", "Edit", "New");
	entryMode.SetChangeFunc("SetEntryMode");
	
	mPlayerForm.Show();
	but_exit_new_obj.Hide();
	entryMode.Hide();
	
	//---
	panelID = mPlayerTbl.tableID+"_other";
	var top = mPlayerForm.top+mPlayerForm.height + 20;
	var otherPanel = new Panel(panelID,top, mPlayerForm.left, 120, mPlayerForm.width,"0", "inset", "#8888bb", "transparent", null);

var thank_you_link = otherPanel.AddObject("THANK_YOU", TYPE_LINK_TEXT, 64, 78, 26, 130, "More Player Mugs...");
	thank_you_link.SetLinkURL("page_mugs.php");

	var thankyouBox = otherPanel.AddObject("THANK_YOU_BOX", TYPE_BOX, 62, 76, 21, 114, "");
	thankyouBox.SetColor("black");
	if (false)		//IsAdmin())
		{
		but_kill_obj = otherPanel.AddObject("P_DELETE2", TYPE_STD_BUTTON, 28, -55, 0, 210, "Delete Player Record");
		but_kill_obj.SetChangeFunc("DeletePlayerRecord");
//		var clrRatings = mRatePanel.AddObject("CLEAR_ALL_RATINGS", TYPE_STD_BUTTON, 542, 21, 26, 122, "Clear All Ratings");
//		clrRatings.SetChangeFunc("ClearAllRatings");
		}
	otherPanel.Show();
	}

//---------------------------------------------------------
function HideAllDigitButtons()
	{
	mSignButPos.Hide();
	mSignButNeg.Hide();
	mDecWholeNum.Hide();
	mIncWholeNum.Hide();
	mDecTenths.Hide();
	mIncTenths.Hide();
	mDecHundreds.Hide();
	mIncHundreds.Hide();
	}
//---------------------------------------------------------
function SetOverOutMouseFuncsForDigitButs()
	{
	mSignButPos.SetButMouseOver(MouseOverDigitBut);
	mSignButPos.SetButMouseOut(MouseOutDigitBut);
	mSignButNeg.SetButMouseOver(MouseOverDigitBut);
	mSignButNeg.SetButMouseOut(MouseOutDigitBut);
	mDecWholeNum.SetButMouseOver(MouseOverDigitBut);
	mDecWholeNum.SetButMouseOut(MouseOutDigitBut);
	mIncWholeNum.SetButMouseOver(MouseOverDigitBut);
	mIncWholeNum.SetButMouseOut(MouseOutDigitBut);
	mDecTenths.SetButMouseOver(MouseOverDigitBut);
	mDecTenths.SetButMouseOut(MouseOutDigitBut);
	mIncTenths.SetButMouseOver(MouseOverDigitBut);
	mIncTenths.SetButMouseOut(MouseOutDigitBut);
	mDecHundreds.SetButMouseOver(MouseOverDigitBut);
	mDecHundreds.SetButMouseOut(MouseOutDigitBut);
	mIncHundreds.SetButMouseOver(MouseOverDigitBut);
	mIncHundreds.SetButMouseOut(MouseOutDigitBut);
	}
//---------------------------------------------------------
function MouseOverDigitBut(id)
	{
	GetElemByID(id).obj.Show();
	}
//---------------------------------------------------------
function MouseOutDigitBut(id)
	{
	GetElemByID(id).obj.Hide();
	}


//---------------------------------------------------------
function Digits_MouseOver(elem)
	{
	HideAllDigitButtons();

	switch(elem.id)
		{
		case "RATE1":
			mSignButPos.Show();
			mSignButNeg.Show();
			break;
		case "RATE2":
			mDecWholeNum.Show();
			mIncWholeNum.Show();
			break;
		case "RATE3":
			mDecTenths.Show();
			mIncTenths.Show();
			break;
		case "RATE4":
			mDecHundreds.Show();
			mIncHundreds.Show();
			break;
		default:
			("what?!?   digitID="+digitID)
			break;
		}
	}
//---------------------------------------------------------
function Digits_MouseOut(digitID)
	{
	HideAllDigitButtons();
	}
//---------------------------------------------------------
//---------------------------------------------------------
//---------------------------------------------------------
function Digit_SetSignPos()
	{
	var signVal = mRating.GetDigit(1);
	var val = parseInt(mRating.GetDigit(2));
	if (signVal == "-")
		{
		mRating.SetDigit(1, " ");	
		}
	else
		{
		if (val > 1) val = mRating.SetDigit(2, "0.");
		mRating.SetDigit(1, "-");
		}
	}
//---------------------------------------------------------
function Digit_SetSignNeg()
	{
	Digit_SetSignPos();
	}

//---------------------------------------------------------
function Digit_SetDecWhole()
	{
	var max;
	var signVal = mRating.GetDigit(1);
	var val = parseInt(mRating.GetDigit(2));

	if (signVal == "-")
		{
		if (val == 1) val = 0;
		else val = 1;
		}
	else
		{
		if (val > 0) val -= 1;
		else
			{
			var val3 = parseInt(mRating.GetDigit(3));
			var val4 = parseInt(mRating.GetDigit(4));	
			if (val3 == "0" && val4 == "0") val = 5;
			else val = 4;
			}
		}
	mRating.SetDigit(2,val+".");
	}
	
//---------------------------------------------------------
function Digit_SetIncWhole()
	{
	var max;
	var signVal = mRating.GetDigit(1);
	var val = parseInt(mRating.GetDigit(2));
	if (signVal == "-")
		{
		if (val == 1) val = 0;
		else val = 1;
		}
	else
		{
		var val3 = parseInt(mRating.GetDigit(3));
		var val4 = parseInt(mRating.GetDigit(4));	
		if (val3 == "0" && val4 == "0") max = 5;
		else max = 4;
		if (val < max) val += 1;
		else val = 0;
		}
	mRating.SetDigit(2,val+".");
	}
//---------------------------------------------------------
function Digit_SetDecTens()
	{
	var val = parseInt(mRating.GetDigit(3));
	if (val > 0) val -= 1;
	else val = 9;
	mRating.SetDigit(3,val);
	if (val > 0)
		{
		if (parseInt(mRating.GetDigit(2) == 5)) mRating.SetDigit(2,"4");
		}
	}
//---------------------------------------------------------
function Digit_SetIncTens()
	{
	var val = parseInt(mRating.GetDigit(3));
	if (val < 9) val += 1;
	else val = 0;
	mRating.SetDigit(3,val);
	if (val > 0)
		{
		if (parseInt(mRating.GetDigit(2) == 5)) mRating.SetDigit(2,"4");
		}
	}

//---------------------------------------------------------
function Digit_SetDecHund()
	{
	var val = parseInt(mRating.GetDigit(4));
	if (val > 0) val -= 1;
	else val = 9;
	mRating.SetDigit(4,val);
	if (val > 0)
		{
		if (parseInt(mRating.GetDigit(2) == 5)) mRating.SetDigit(2,"4");
		}
	}
//---------------------------------------------------------
function Digit_SetIncHund()
	{
	var val = parseInt(mRating.GetDigit(4));
	if (val < 9) ++val;
	else val = 0;
	mRating.SetDigit(4,val);
	if (val > 0)
		{
		if (parseInt(mRating.GetDigit(2) == 5)) mRating.SetDigit(2,"4");
		}
	}


//---------------------------------------------------------
function SetRatePanel()
	{
	var year = "2009";
	var top = mPlayerForm.top;
	var left = mPlayerForm.left + mPlayerForm.width + 5;
	var ht = mPlayerListPanel.height+60;

	if (GetPrivilege(GetUsername(), "priv_rater_anal")) width = 260;
	else width = 178;

	mRatePanel = new Panel("id_rate_panel",top,left,ht,width,"1px", "inset", "#000000", "cccccc", null);
//	mRatePanel = new Panel(mPlayerListPanel.top,left,ht,width,"", "", 0, 0);

	//----------- TITLE BAR ----------------------------------------------------------
	var titlebar = mRatePanel.AddObject("TB_recent ratings", TYPE_TITLE_BAR,0,0,18,mRatePanel.width,"Rate Player for "+year,"","");
	titlebar.SetBkgndImage("images_ui/titlebars/liteblue.jpg");
/*
	var tblTitle = mRatePanel.AddObject("mainRtgHdg", TYPE_SHADOW_TEXT, 4, 18, 20, 220, "Rate This Player");
	tblTitle.SetTextAndShadowColor("#000000", "#aaaaff");
	tblTitle.SetTextSize(14);

	var tblTitle2 = mRatePanel.AddObject("mainRtgHdg2", TYPE_SHADOW_TEXT, 26, 28, 20, 220, "for the year, "+mCurrRatingYear+".");
	tblTitle2.SetTextAndShadowColor("#000000", "#aaaaff");
	tblTitle2.SetTextSize(11);
*/
	DrawRatingInfoBox(mRatePanel, "Current", "Rating", "P_CURR_RATING", 122, 10, 24, 60);
	DrawRatingInfoBox(mRatePanel,"Number of", "Raters", "P_NUM_RTRS", 122, 94, 24, 60);

	var listView = mRatePanel.AddObject("P_LIST_VIEW", TYPE_RADIO_CLUSTER, 190, 30, 0, 0, "", "Recent", "listview");
	listView.AddOptions("Recent", "History");
	listView.SetChangeFunc("SetListView");

	mRating = mRatePanel.AddObject("RATE", TYPE_DIGITS, 40, 24, 36, 73, "", "", "");
	mRating.SetTextSize(28);
	mRating.SetFontWeight("bold");
	mRating.SetChangeFunc("ChangeRating");
	mRating.SetHorizOffsets(17, -92);
	mRating.SetColor(color_green);
	mRating.SetBackColor(color_black);
	mRating.SetCursor("hand");
	mRating.SetValue(" 0.00");

	var butTop = 39
	var butTop2 = 89;
	mSignButPos = mRatePanel.AddObject("sign_but_top", TYPE_IMG_BUTTON, butTop, 26, 0, 0, "");
	mSignButPos.SetLeftButImages(Digit_SetSignPos, null);
	mSignButNeg = mRatePanel.AddObject("sign_but_bot", TYPE_IMG_BUTTON, butTop2, 26, 0, 0, "");
	mSignButNeg.SetRtButImages(Digit_SetSignNeg, null);

	mDecWholeNum = mRatePanel.AddObject("wholenum_but_top", TYPE_IMG_BUTTON, butTop, 37, 0, 0, "");
	mDecWholeNum.SetLeftButImages(Digit_SetDecWhole, null);
	mIncWholeNum = mRatePanel.AddObject("wholenum_but_bot", TYPE_IMG_BUTTON, butTop2, 37, 0, 0, "");
	mIncWholeNum.SetRtButImages(Digit_SetIncWhole, null);

	mDecTenths = mRatePanel.AddObject("tens_but_top", TYPE_IMG_BUTTON, butTop, 58, 0, 0, "");
	mDecTenths.SetLeftButImages(Digit_SetDecTens, null);
	mIncTenths = mRatePanel.AddObject("tens_but_bot", TYPE_IMG_BUTTON, butTop2, 58, 0, 0, "");
	mIncTenths.SetRtButImages(Digit_SetIncTens, null);

	mDecHundreds = mRatePanel.AddObject("huns_but_top", TYPE_IMG_BUTTON, butTop, 77, 0, 0, "");
	mDecHundreds.SetLeftButImages(Digit_SetDecHund, null);
	mIncHundreds = mRatePanel.AddObject("huns_but_bot", TYPE_IMG_BUTTON, butTop2, 77, 0, 0, "");
	mIncHundreds.SetRtButImages(Digit_SetIncHund, null);

	mRating.SetMouseOver("Digits_MouseOver");
	mRating.SetMouseOut("Digits_MouseOut");

	var submit = mRatePanel.AddObject("SUBMIT_RATE", TYPE_STD_BUTTON, 58, 104, 26, 58, "Submit");
	submit.SetChangeFunc("SubmitRating");

	var rateHelp = mRatePanel.AddObject("RATING_HELP", TYPE_LINK_TEXT, 96, 120, 26, 58, "Help");
	rateHelp.SetLinkURL("page_help_ratings2.php");

	var rateHelpBox = mRatePanel.AddObject("RATE_HELP_BOX", TYPE_BOX, 97, 119, 16, 28, "");
	rateHelpBox.SetColor("black");

	SetOverOutMouseFuncsForDigitButs();
	

	//---------------------------------
	var del_this_rating = mRatePanel.AddObject("P_del_this_rating", TYPE_STD_BUTTON, 450, -113, 0, 162, "Delete my rating for this player");
	del_this_rating.SetButtonFontSize(9);
	del_this_rating.SetChangeFunc("DeleteMyRatingForCurrentPlayer");

	del_this_rating = mRatePanel.AddObject("P_del_all_ratings", TYPE_STD_BUTTON, 475, -113, 0, 162, "Delete my rating for ALL players");
	del_this_rating.SetButtonFontSize(9);
	del_this_rating.SetChangeFunc("DeleteMyRatingForAllPlayers");

	mRatePanel.Show();
	HideAllDigitButtons();	
	}
//---------------------------------------------------------
function CreateRatingInfoPanel()
	{
/*
	var panelWidth;
	var uname = GetElemByID("id_username").value;

	if (!GetPrivilege(uname, "priv_rater_anal")) panelWidth = 260;
	else panelWidth = 178;
	
	mRatingForm = new Panel(mPlayerTbl.tableID+"_ratingForm",
						   mPlayerTbl.top+59, mRatePanel.left, mPlayerForm.height+44, panelWidth,
						   "thin", "none", color_medium_gray, "transparent", null);
//	mRatingForm = new Panel(mPlayerTbl.tableID+"_ratingForm",
//						   mPlayerTbl.top+59, mRatePanel.left, mPlayerForm.height, 250, "", "", "", 0);
	
//	var tblTitle = mRatingForm.AddObject("RtgHdg", TYPE_TEXT, 87, 45, 20, 120, "Recent Ratings");

	
	mRatingForm.Show();
*/
	}

//---------------------------------------------------------
function DeleteMyRatingForCurrentPlayer(elem,event,panel_id)
	{
	var username = GetUsername();
	var playerid = GetElemByID("id_player_id").value;
	var str = "request=del_my_rating_for_this_player^username="+username+"^playerid="+playerid+"^year="+mCurrRatingYear;
	// Make AJAX call -------------------
	var ajax = new AJAX("rating.php", str);
	ajax.onload = RatingDeleted;
	ajax.get();
	}
//---------------------------------------------------------
function DeleteMyRatingForAllPlayers(elem,event,panel_id)
	{
	var username = GetUsername();
	var playerid = GetElemByID("id_player_id").value;
	var str = "request=del_my_rating_for_all_players^username="+username+"^year="+mCurrRatingYear;
	// Make AJAX call -------------------
	var ajax = new AJAX("rating.php", str);
	ajax.onload = RatingDeleted;
	ajax.get();
	}
//---------------------------------------------------------
function RatingDeleted(ajax, success)
	{
	if (success)
		{
		alert(ajax.GetRtnStr());
		RebuildPlayerList(mPlayerTbl.GetCurrentRow());
		RebuildRatingList();
		SetTotalRatingsMade();
		SetTotalRaters();
		}
	delete ajax;
	}

//---------------------------------------------------------
function GetCurrentUserLevel()
	{
	return GetElemByID("id_userlevel").value;
	}

//---------------------------------------------------------
function SubmitRating(elem,event,panel_id)
	{
	var username = GetUsername();
	var playerid = GetElemByID("id_player_id").value;
	var year = mCurrRatingYear;
	var submitRating = true;
	
	if (year != GetRatingYear())
		{
		var s = "You are about to submit a rating for "+GetFullName()+".\n\n"+
				"Notice that you are currently viewing "+GetRatingYear()+" ratings.\n\n"+
				"The rating you are about to submit will apply to "+year+".\n\n"+
				"If you wish to submit the rating, select OK, otherwise hit Cancel.";
		submitRating = (window.confirm(s))
		}

	if (submitRating)
		{
		// Make AJAX call -------------------
		var str = "request=get_rating_info^year="+year+"^username="+username+"^playerid="+playerid;
		var ajax = new AJAX("rating.php", str);
		ajax.onload = CheckedForExistingRating;
		ajax.get();
		}
	}

//---------------------------------------------
function CheckedForExistingRating(ajax, success)
	{
	if (success)
		{
		var rtn = ajax.GetRtnStr();
		if (rtn == "none")
			{
			ActuallySubmitRating();
			}
		else
			{
			// If this user has already rated this player for the specified year, then prompt the user
			// to see if he/she wants to override the last rating.
			var data = rtn.split(",");
			rating = data[0];
			entered = data[1];
			
			s = "You already rated "+GetFullName()+" for "+mCurrRatingYear+".\n\n" +
				"The rating, "+rating+", was entered on "+entered+".\n\n" +
				"If you wish to replace this rating with "+mRating.GetDigitsValue()+", click OK.\n" +
				"If you do NOT wish to change this rating, click Cancel.\n";
			if (window.confirm(s))
				{
				ActuallySubmitRating();
				}
			}
		}
	delete ajax;
	}
//---------------------------------------------------------
function ActuallySubmitRating()
	{
	var rating = mRating.GetDigitsValue();
	var username = GetUsername();
	var year = mCurrRatingYear;

	if (GetPrivilege(username, "priv_set_ratings"))
		{
		var userlevel = GetElemByID("id_userlevel").value;
		var playerid = GetElemByID("id_player_id").value;
		var rating = mRating.GetDigitsValue();
		
		// Make AJAX call -------------------
		var str = 'username='+username+'^userlevel='+userlevel+'^playerid='+playerid+'^rating='+rating+'^year='+year;
		var ajax = new AJAX("lib_players/rating_add.php", str);
		ajax.onload = NewRatingAdded;
		ajax.get();
		}
	else
		{
		AlertNoPriv("Rater");
		}
	}

//---------------------------------------------
function NewRatingAdded(ajax, success)
	{
	delete ajax;
	if (success)
		{
		RebuildPlayerList(mPlayerTbl.GetCurrentRow());
		var rating = mRating.GetDigitsValue();
		var when = ajax.GetRtnStr();
		var subBy = GetElemByID("id_fName").value+" "+GetElemByID("id_lName").value;

		var s = "Thank You for submitting your rating.\n\n" +
				"Player:  "+elem_firstname.value+" "+elem_lastname.value+"\n" +
				"Current Rating:  "+elem_curr_rating.value+"\n\n" +
				"Submitted Rating:  "+rating+"\n\n" +
				"By:  "+subBy+"\n" +
				"On:  "+when;
				
		alert(s);
		}
	}

//---------------------------------------------------------
function IsCharNum(chr)
	{
	return (chr >= "0" && chr <= "9");
	}
//---------------------------------------------------------
function ChangeRating(elem)
	{
/*
	var s = elem.value;
	switch(s.length)
		{
		case 0:
		break;
		
		case 1:
			if (IsCharNum(s.charAt(0)))
				{
				elem.value = s + ".";
				}
			else
				{
				elem.value = "";	
				}
		break;
		
		case 2:
		break;
		
		case 3:
		break;
		
		case 4:
		break;
		
		default:
		break;
		}
*/
	}

//---------------------------------------------------------
function SetPlayerTitle(text)
	{
	GetElemByID(mTitleObj.objID).value = text;
	}

//---------------------------------------------------------
function GotoPrevPlayer()
	{
	mPlayerTbl.GotoPrev();
	}
//---------------------------------------------------------
function GotoNextPlayer()
	{
	mPlayerTbl.GotoNext();
	}
//---------------------------------------------------------
function GotoFirstPlayer()
	{
	mPlayerTbl.GotoFirst();
	}
//---------------------------------------------------------
function GotoLastPlayer()
	{
	mPlayerTbl.GotoLast();
	}

//---------------------------------------------------------
function CreateImportPanel()
	{
	var mImportForm = new Panel(mPlayerTbl.tableID+"_importForm",
						   mPlayerForm.top+mPlayerForm.height+2, 298, 62, 250,
						   "thin", "none", color_medium_gray, "transparent", null);
//	var photoFileImport = mImportForm.AddObject("ImpPict", TYPE_FILE_IMPORT, 10, 5,30,200,"Import Photo...");
	mImportForm.Show();
	}
	
//---------------------------------------------------------
function SetEntryMode(radioElem)
	{
	var mode = GetEntryMode();
	var uname = GetElemByID("id_username").value;

	if (!GetPrivilege(uname, "priv_change_any"))
		{
		mode = "View";
		SetEntryModeElement("View");
		}
	if (mode == "View")
		{
		DisableSubmit();
		EnableDetailFields(false);	
		}
	else
		{
		if (mode == "New")
			{
			EnterPlayerNewMode(nil,nil,nil);
			} 
		ResetEnableSubmitButton();
		EnableDetailFields(true);
		}				
	}

//---------------------------------------------------------
function SetDetailsElements()
	{
	elem_firstname = GetElemByID("P_FNAME");
	elem_lastname = GetElemByID("P_LNAME");
	elem_district = GetElemByID("P_DIST");
	elem_email = GetElemByID("P_EMAIL");
	elem_player_photo = GetElemByID("P_PHOTO");
	elem_submit_but = GetElemByID("P_SUBMIT");
	elem_delete_but = GetElemByID("P_DELETE");
	elem_entry_mode = GetElemByID("P_ENTRY_MODE");
	elem_curr_rating = GetElemByID("P_CURR_RATING");
	elem_num_raters = GetElemByID("P_NUM_RTRS");
	}
//---------------------------------------------------------
function AcceptPlayerChanges(elem,event,panel_id)
	{
	if (GetPrivilege(GetUsername(), "priv_change_any"))
		{
		SubmitChanges();
		}
	else AlertNoPriv("Change Player Info");
	}
//---------------------------------------------------------
function DeletePlayerRecord(elem,event,panel_id)
	{
	DeletePlayer();
	}
//---------------------------------------------------------
function InactivatePlayerRecord(elem,event,panel_id)
	{
	DeactivatePlayer();
	}
	
//---------------------------------------------------------
function FinalDataEdit(tbl)
	{
	}
	
//-------------------------------------------------
function ProcessPhoto(filename)
	{
	mFileName = filename;
	var str="path=../photos/"+filename;
 
	// Make AJAX call -------------------
	var ajax = new AJAX("file_exists.php", str);
	ajax.onload = HandleProcessPhoto;
	ajax.get();
	}
//-------------------------------------------------		
function HandleProcessPhoto(ajax, success)
	{
	if (success)
		{
		if (ajax.GetRtnStr())
			{
			GetContribAndShowPict(mFileName);	
			}
		else
			{
			ShowPict("../photos/aa_photo_not_avail.jpg","","");
			}
		}
	delete ajax;
	}
	
//---------------------------------------------------------
function ClearAllRatings(elem)
	{
	var str="table=ratings";

	// Make AJAX call -------------------
	var ajax = new AJAX("clear_table.php", str);
	ajax.onload = DBTableCleared;
	ajax.get();
	}
//---------------------------------------------------------
function DBTableCleared(ajax, success)
	{
	if (success)
		{
		GetElemByID("id_ratingData").value = "empty";
		RebuildRatingList();
		var row = mPlayerTbl.GetCurrentRow();
		if (row > 0) RebuildPlayerList(mPlayerTbl.GetCurrentRow());
		}
	else
		{
			("failed"+ajax.GetRtnStr())
		}
	delete ajax;
	}

//---------------------------------------------------------
function DrawRatingInfoBox(panel, hdg1, hdg2, id, top, left, height, width)
	{
	
	var lbl1 = panel.AddObject(id+"hdg1", TYPE_TEXT, top, left, height-5, width, hdg1);
	var lbl2 = panel.AddObject(id+"hdg2", TYPE_TEXT, top+12, left, height-5, width, hdg2);
	var rating = panel.AddObject(id, TYPE_TEXT_EDIT_READ_ONLY, top+17, left, height, width, "");
	lbl1.SetFontAlign("center");
	lbl2.SetFontAlign("center");
	rating.SetFontAlign("center");
	rating.SetTextSize("14");
	rating.SetBackColor("#000000");
	rating.SetColor("#00ff00");
	}
	
//----------------------------------------------
function BuildRatingHistTable()
	{
	var uname = GetElemByID("id_username").value;
	mRatingHistTbl = new Table('hist_list');					// Create a new instance of a table (Player Table)
	mRatingHistTbl.SetPosition(220, 26);	// Position the table (top, left)
	mRatingHistTbl.SetParentElem(mRatePanel.div);
	mRatingHistTbl.SetTotalRowsPerPage(6);				// Set initial num of visible rows in table
	mRatingHistTbl.SetDfltSelectedHdg(0);				// Set default hilited heading (date)

	mRatingHistTbl.SetTotalCols(2);						// Set total number of colums
	mRatingHistTbl.SetColWidths(65, 50);				// Set column widths
	mRatingHistTbl.SetColAlignments("center","center");	// Set column alignments
	mRatingHistTbl.SetHeadingNames("Year", "Rating");
	mRatingHistTbl.SetColDataIndicies(0, 1);			// Set visible columns

	mRatingHistTbl.SetSelectRowFunc(SelectRatingHistRow);	// Set selected row
	mRatingHistTbl.SetDataStrID("id_ratingHistData");		// Set the element that will keep a copy of all player data
	mRatingHistTbl.SetSelectHdgFunc(SelectRtgHistHdg);		// Set selected heading

	mRatingHistTbl.SetFilterValue("sort", "year");
	mRatingHistTbl.Show();
	HideElemID("hist_list");
	}
//-----------------------------------------------------------------------
function SelectRatingHistRow(tblObj, rowNum)
	{
	}
	
//-----------------------------------------------------------------------
function SelectRtgHistHdg(tblObj, col)
		{
		var val;

		switch(parseInt(col))
			{
			case 1: val = "year";	break;
			case 2: val = "rating";	break;
			}
		mRatingHistTbl.SetFilterValue("sort", val);
		RebuildRatingHistList();
		}

//--------------------------------------------------------------------
function RebuildRatingHistList()
	{
	SetCursor_Waiting();
	if (mRatingHistTbl == null) return;	

	if (!IsEmpty(elem_playerID.value))
		{
		sortby = mRatingHistTbl.GetFilterValue("sort");
		playerid = elem_playerID.value;
		var str = "request=get_ratings_history^playerid="+playerid+"^sortby="+sortby;

		// Make AJAX call -------------------
		var ajax = new AJAX("bowers.php", str);
		ajax.onload = RefreshRatingHistTable;
		ajax.get();
		}
	}

//--------------------------------------------------------------------
function RefreshRatingHistTable(ajax, success)
	{
	if (success)
		{
		ajax.PutStrInValue("id_ratingHistData");
		mRatingHistTbl.Refresh();
		}
	delete ajax;
	SetCursor_Normal();
	}

///////////////////////////////////////
//----------------------------------------------
function SetListView(radioElem)
	{
	switch(radioElem.value)	
		{
		case "Recent":
			ShowElemID("rat");
			HideElemID("hist_list");
			break;
			
		case "History":
			ShowElemID("hist_list");
			HideElemID("rat");
			break;
		}
	}
//----------------------------------------------
function SetupBuildRatingTable()
	{
	mRatingShowIntFunc = setInterval ( "DoBuildRatingTable()", 500 );
	}

//-----------------------------------------------------------------
function DoBuildRatingTable()
	{
	if (!IsEmpty(elem_playerID.value))
		{
		BuildRatingTable();	
		BuildRatingHistTable();
		clearInterval(mRatingShowIntFunc);
		}
	}

//----------------------------------------------
function BuildRatingTable()
	{	//id 	username 	userlevel 	playerid 	rating 	timestamp
	var uname = GetElemByID("id_username").value;

	mRatingTbl = new Table("rat");					// Create a new instance of a table (Player Table)
	mRatingTbl.SetPosition(220, 26);				// Position the table (top, left)
	mRatingTbl.SetParentElem(mRatePanel.div);
	mRatingTbl.SetTotalRowsPerPage(14);				// Set initial num of visible rows in table
	mRatingTbl.SetDfltSelectedHdg(0);				// Set default hilited heading (date)

	if (1)	
		{
		mRatingTbl.SetTotalCols(2);						// Set total number of colums
		mRatingTbl.SetColWidths(65, 50);				// Set column widths
		mRatingTbl.SetColAlignments("center","center");	// Set column alignments
		mRatingTbl.SetHeadingNames("Date", "Rating");
		mRatingTbl.SetColDataIndicies(3, 2);				// Set visible columns
		}
	else	
		{
		mRatingTbl.SetTotalCols(3);						// Set total number of colums
		mRatingTbl.SetColWidths(65, 50, 100);				// Set column widths
		mRatingTbl.SetColAlignments("center","center","left");	// Set column alignments
		mRatingTbl.SetHeadingNames("Date", "Rating", "Username");
		mRatingTbl.SetColDataIndicies(3, 2, 0);				// Set visible columns
		}

//	mRatingTbl.SetColAlignments("right");			// Set column alignments
	mRatingTbl.SetSelectRowFunc(SelectRatingRow);	// Set selected row
	mRatingTbl.SetDataStrID("id_ratingData");		// Set the element that will keep a copy of all player data
	mRatingTbl.SetSelectHdgFunc(SelectRtgHdg);		// Set selected heading
	mRatingTbl.SetPostDataFunc(FinalDataEdit);
	mRatingTbl.Show();
	RebuildRatingList();
	}
//-----------------------------------------------------------------------
function SelectRatingRow(tblObj, rowNum)
	{
	}
	
//-----------------------------------------------------------------------
function SelectRtgHdg(tblObj, col)
		{
		var val;

		switch(parseInt(col))
			{
			case 1: val = "date";	break;
			case 2: val = "rating";	break;
			}
		mRatingTbl.SetFilterValue("sort", val);
		RebuildRatingList();
		}

//--------------------------------------------------------------------
function RebuildRatingList()
	{
	SetCursor_Waiting();
	if (mRatingTbl == null) return;	

	if (!IsEmpty(elem_playerID.value))
		{
		var str='playerid='+elem_playerID.value+'^desc_asc=DESC';
		// Make AJAX call -------------------
		var ajax = new AJAX("lib_players/get_rating_data.php", str);		ajax.onload = RefreshRatingTable;
		ajax.get();
		}
	}

//--------------------------------------------------------------------
function RefreshRatingTable(ajax, success)
	{
	if (success)
		{
		ajax.PutStrInValue("id_ratingData");
		mRatingTbl.Refresh();
		}
	delete ajax;
//	mPlayerTbl.SetControlForm();
//	mPlayerTbl.ResetTotal();
	SetCursor_Normal();
	}
//--------------------------------------------------------------------
function IsEmpty(s)
	{
	return (s.substr(0,5) == "empty");
	}

//--------------------------------------------------------------------
function WriteErrToDBLog(err)
	{
	var str="msg="+err;

	// Make AJAX call -------------------
	var ajax = new AJAX("lib_players/db_debug.php", str);
	ajax.onload = WroteErr;
	ajax.get();
	}

//--------------------------------------------------------------------
function WroteErr(ajax, success)
	{
	delete ajax;
	}
//--------------------------------------------------------------------
function DeactivatePlayer()
	{
	if (GetPrivilege(GetUsername(), "priv_add_players"))
		{
		alert("This feature is not yet implemented.")
		}
	else AlertNoPriv("Deactivate Player");
	}

//--------------------------------------------------------------------
function DoneUploadingMug()
	{
	}
//----------------------------------------------------------------------
function DrawBox(id, top, left, height, width, color)
	{
	var boxPanel = new Panel(id, top, left, height, width, "thin", "offset", color, "#000000", null);
	boxPanel.AddObject("nuttin", TYPE_TITLE,8,0,12,22,"");
	boxPanel.Show();
	}
//----------------------------------------------------------------------
function SetRatingPeriodStartDate()
	{
	GetElemByID("id_rating_start_period").innerHTML = "Jan 1, 2009";
	}
//----------------------------------------------------------------------
function GetRatingPeriodStartDate()
	{
	return GetElemByID("id_rating_start_period").innerHTML;
	}
//----------------------------------------------------------------------
function SetTotalRatingsMade()
	{
	var str="request=get_total_ratings_in_year^year="+mCurrRatingYear;
	// Make AJAX call -------------------
	var ajax = new AJAX("rating.php", str);
	ajax.onload = Done_SetTotalRatingsMade;
	ajax.get();
	}
//----------------------------------------------------------------------
function Done_SetTotalRatingsMade(ajax, success)
	{
	if (success)
		{
		GetElemByID("id_total_ratings_made").innerHTML = ajax.GetRtnStr();
		}
		delete ajax;
	}

//----------------------------------------------------------------------
function SetTotalRaters()
	{
	var str="request=get_total_raters_in_year^year="+mCurrRatingYear;
	// Make AJAX call -------------------
	var ajax = new AJAX("rating.php", str);
	ajax.onload = Done_SetTotalRaters;
	ajax.get();
	}
//----------------------------------------------------------------------
function Done_SetTotalRaters(ajax, success)
	{
		if (success)
			{
			GetElemByID("id_total_raters").innerHTML = ajax.GetRtnStr();
			}
		delete ajax;
	}
//----------------------------------------------------------------------
function Player_Blog_OnKeyUp(elem)
	{
		
	}
//----------------------------------------------------------------------
function Add_Player_Comment_Func(elem)
	{
	GetElemByID("id_player_comment").value = "";
	SetPlayerBlogMode("open");	
	}
//----------------------------------------------------------------------
function Submit_Player_Comment_Func(elem)
	{
	var comments = GetElemByID("id_player_comment").value;
	
	if (comments != "")
		{
		// Make AJAX call -------------------
		var str = "request=add_comment^player_id="+elem_playerID.value+
		"^username="+GetUsername()+"^comments="+GetElemByID("id_player_comment").value;
		var ajax = new AJAX("player_blog.php", str);
		ajax.onload = BlogCommentAddedFunc;
		ajax.get();
		}
	}

//----------------------------------------------------------------------
function BlogCommentAddedFunc(ajax, success)
	{
	if (success)
		{
//		RefreshPlayerBlog();
		}
	SetPlayerBlogMode("closed");
	delete ajax;
	}
	
//----------------------------------------------------------------------
function Abort_Player_Comment_Func(elem)
	{
	SetPlayerBlogMode("closed");	
	}
//----------------------------------------------------------------------
function SetPlayerBlogMode(mode)
	{	
	mPlayerBlogMode = mode;
	if (mode == "open")
		{
		HideElemID("id_add_player_comment_but");	
		ShowElemID("id_add_comments_descrip");	
		ShowElemID("id_player_comment");	
		ShowElemID("id_player_abort_but");	
		ShowElemID("id_player_submit_but");	
		}
	else	
		{
		ShowElemID("id_add_player_comment_but");	
		HideElemID("id_add_comments_descrip");	
		HideElemID("id_player_comment");	
		HideElemID("id_player_abort_but");	
		HideElemID("id_player_submit_but");	
		}
	}

//----------------------------------------------------------------------
function RefreshPlayerBlog()
	{
	if (elem_playerID.value > 0)
		{
		// Make AJAX call -------------------
		var str = "request=get_full_text^player_id="+elem_playerID.value;
		var ajax = new AJAX("player_blog.php", str);
		ajax.onload = BlogTextFetchedFunc;
		ajax.get();
		}
	}

//----------------------------------------------------------------------
function BlogTextFetchedFunc(ajax, success)
	{
	if (success)
		{
		GetElemByID("id_player_comments_ro").value = ajax.GetRtnStr();
		}
	SetPlayerBlogMode("closed");
	delete ajax;
	}
//----------------------------------------------------------------------
function SetupYearPopup(obj)
	{
	obj.AddOption("2009");
	obj.AddOption("2008");
	obj.AddOption("2007");
	obj.AddOption("2006");
	obj.AddOption("2005");
	obj.AddOption("2004");
	obj.AddOption("2002");
	obj.SetChangeFunc("ChangeRatingYear");
	obj.SetValue("2009");
	}

//----------------------------------------------------------------------
function ChangeRatingYear(elem)
	{
	RebuildPlayerList(1);
	}

//----------------------------------------------------------------------
function GetRatingYear()
	{
	var year = GetElemByID("id_year");
	if (year == null) return "2009";
	return year.value;
	}
//---------------------------------------------
function GetFullName()
	{
	return elem_firstname.value+" "+elem_lastname.value;
	}


//====================================================================

var mFilterPanelElemID = "panel_players_panel_div";
var mFliterTableElemID = "table_table_players";

//-----------------------------
function ChangeDistrict(elem)
	{
	mPlayerTbl.SetFilterValue("district", elem.value);
	RebuildPlayerList(1);
	}
//-----------------------------
function ChangePhotoFilter(elem)
	{
	mPlayerTbl.SetFilterValue("has_photo", elem.value);
	RebuildPlayerList(1);
	}
//-----------------------------
function Change_ASC_DESC(elem)
	{
	mPlayerTbl.SetFilterValue("asc_desc", elem.value);
	RebuildPlayerList(1);
	}

//-----------------------------
function ChangeFirstName(elem)
	{
	mPlayerTbl.SetFilterValue("first_name", elem.value);
	GetElemByID("LNAME").value = "";
	mPlayerTbl.SetFilterValue("last_name", "");
	RebuildPlayerList(1);
	}
//-----------------------------
function ChangeLastName(elem)
	{
	mPlayerTbl.SetFilterValue("last_name", elem.value);
	GetElemByID("FNAME").value = "";
	mPlayerTbl.SetFilterValue("first_name", "");
	RebuildPlayerList(1);
	}

//---------------------------------------------------------
function DonePlayerFilterFunc(filterForm)
	{
	mFilterPanel.Show();
	}


	//----------------------------------------------
	function BuildTournamentTable()
		{		
		mTournListPanel = new Panel("id_tourn_tbl_panel",422, 610, 444, 380,"1px", "inset", "#000000", "#cccccc", null);
		//----------- TITLE BAR ----------------------------------------------------------
		var titlebar = mTournListPanel.AddObject("TB_tourn_table", TYPE_TITLE_BAR,0,0,18,mPlayerListPanel.width,"Tournaments","","");
		titlebar.SetBkgndImage("images_ui/titlebars/liteblue.jpg");
		mTournListPanel.Show();
/*
		mPlayerTbl = new Table('pla');					// Create a new instance of a table (Player Table)
		mPlayerTbl.SetPosition(72, 5);					// Position the table (top, left)
		mPlayerTbl.SetTotalRowsPerPage(20);				// Set initial num of visible rows in table
		mPlayerTbl.SetParentElem(mPlayerListPanel.div);
		if (mDefaultSort == "lastname") hdg = 2;
		else hdg = 4;
	
		mPlayerTbl.SetDfltSelectedHdg(hdg);				// Set default hilited heading (last name)
		mPlayerTbl.SetTotalCols(6);						// Set total number of colums
		mPlayerTbl.SetColAlignments("center","left","left","left","center","center");			// Set column alignments
		mPlayerTbl.SetColWidths(40, 90, 90, 60, 40, 45);// Set column widths
		mPlayerTbl.SetXtraPopup("Year", SetupYearPopup);
		mPlayerTbl.SetSelectRowFunc(SelectPlayerRow);	// Set selected row
		mPlayerTbl.SetSelectHdgFunc(SelectHdg);			// Set selected heading
		mPlayerTbl.SetHeadingNames("#", "First Name", "Last Name", "District", "Rating", "# Raters");
		mPlayerTbl.SetDataStrID("id_playerData");		// Set the element that will keep a copy of all player data
		mPlayerTbl.SetColDataIndicies(-1,1,2,3,5,6);	// Set visible columns
		mPlayerTbl.SetPostDataFunc(FinalDataEdit);
	
		CreatePlayerListPanels();
		CreatePlayerInfoPanel();
		SetRatePanel();

		mPlayerTbl.Show();								// Display the table
		
	//	CreateImportPanel();
*/
		}

//--------------------------------------------------------------------------------------------------------------------------------------------------
	function BuildEventTable(){
		mEventTablePanel = new Panel("id_event_tbl_panel", 492, 510, 344, 380, "1px", "inset", "#000000", "#cccccc", null);
		//----------- TITLE BAR ----------------------------------------------------------
		var titlebar = mEventTablePanel.AddObject("TB_EvtTable", TYPE_TITLE_BAR, 0, 0, 18, mEventTablePanel.width, "Events", "", "");
		titlebar.SetBkgndImage("images_ui/titlebars/liteblue.jpg");
		mEventTablePanel.Show();
	}
//--------------------------------------------------------------------------------------------------------------------------------------------------
	function BuildWinnersTable(){
		mWinTablePanel = new Panel("id_win_tbl_panel", 520, 490, 344, 380, "1px", "inset", "#000000", "#cccccc", null);
		//----------- TITLE BAR ----------------------------------------------------------
		var titlebar = mWinTablePanel.AddObject("TB_EvtTable", TYPE_TITLE_BAR, 0, 0, 18, mWinTablePanel.width, "Place Winners", "", "");
		titlebar.SetBkgndImage("images_ui/titlebars/liteblue.jpg");
		mWinTablePanel.Show();
	}
//--------------------------------------------------------------------------------------------------------------------------------------------------
	function BuildAttendeesTable(){
		mAttendTablePanel = new Panel("id_attend_tbl_panel", 542, 477, 344, 380, "1px", "inset", "#000000", "#cccccc", null);
		//----------- TITLE BAR ----------------------------------------------------------
		var titlebar = mAttendTablePanel.AddObject("TB_EvtTable", TYPE_TITLE_BAR, 0, 0, 18, mAttendTablePanel.width, "Attendees", "", "");
		titlebar.SetBkgndImage("images_ui/titlebars/liteblue.jpg");
		mAttendTablePanel.Show();
	}


