// bowers

var gBowersDivs = new List();
var gStartYear = 2002;
var gLastYear = 2010;
var _ratingDlogWidth = 300;
var _ratingDlogHeight = 240;

var _addToMyList = 1;
var _rmvFromMyList = 2;
var gTournID = 0;

//--------------------------------------------------
function bowers()
	{	
	this.playerBoxNew();
	this.first = 1;
	this.last = 100;
	return this;
	}

//--------------------------------------------------
bowers.prototype.playerBoxNew = function()
	{
	this.playerBox = $(_div)
	.addClass("playerBox").css({left:-2200})
	.appendTo($(".content")).css({zIndex:32000});
	var txt = $(_div).addClass("playerText").appendTo(this.playerBox);
	this.playerMug = $("<img/>").addClass("playerMug").appendTo(this.playerBox);
	this.playerName  = $(_a).appendTo(txt);
	this.playerRating  = $(_a).appendTo(txt);
	this.playerDist  = $(_a).appendTo(txt);
	return this;
	}

//--------------------------------------------------
bowers.prototype.load = function(done)
	{
	var bowers = this;
	var data = {};
	data.command = "getPlayers",
	data.user_id = getuserid();
	data.order = bowers.sortCtl.val();

	var div = gBowersDivs.get(bowers.divID);
	if (div) div.html("");
		
	if (bowers.yearCtl) {
		data.year = $(bowers.yearCtl).children(":selected").html();
	}
	else data.year = gLastYear;
	
	if (bowers.distCtl) 
		{
		var val = $(bowers.distCtl).children(":selected").html();
		if (val != "Anywhere") 
			{
			data.filter = escape("shuf_player.district='" + val + "'");
			}
		}
	
	if (bowers.firstnameCtl)
		{
		data.firstname = bowers.firstnameCtl.attr("value");
		}
	if (bowers.lastnameCtl)
		{
		data.lastname = bowers.lastnameCtl.attr("value");	
		}
	if (bowers.ratingCtl)
		{
		var rating = bowers.ratingCtl.val();
		if (rating!="all") data.rating = rating;
		}
	if (bowers.recs) bowers.recs = {};
	bowers.clockOn();
	var nolimit = false;
	
	if (this.namesPerPageCtl)
		{
		t = this.namesPerPageCtl.val();
		if (t=="all")
			{
			nolimit = true;
			}
		}

	if (!nolimit)
		{
		if (this.pageCtl && this.pageCtl.attr("inited")) 
			{
			var opt = $(this.pageCtl).children(":selected");
			data.rowStart = parseInt(opt.attr("pg1"))-1;
			data.rowLimit = parseInt(opt.attr("pg2"))-data.rowStart;
			}
		else
			{
			data.rowStart = 0;
			data.rowLimit = 100;
			}
		}
	$.post("shuf_ratings.php", {data: $.toJSON(data)}, function(res)
		{
		var obj = $.evalJSON(res);
		if (inAdminMode()) if (obj.sql) $(".sql").html(obj.sql);
		if (obj.recs)
			{
			bowers.total = parseInt(obj.total);
			if (bowers.recs) delete bowers.recs;
			bowers.recs = $.evalJSON(obj.recs);
			bowers.setPagePop();
			if (done) done(bowers);
	//		$("#tourns").trigger("reset");
			}
		});
	return this;
	}

//--------------------------------------------------
bowers.prototype.getTotal = function()
	{
	return this.total;
	}						
//--------------------------------------------------
bowers.prototype.stopDraw = function()
	{
	if (this.drawFuncID) 
		{
		clearInterval(this.drawFuncID);
		this.drawFuncID = undefined;
		}
	return this;
	}
				
//--------------------------------------------------
bowers.prototype.drawNames = function(div)
	{
	if (div) {this.namesDiv = div;}
	else div = this.namesDiv;
	if (this.styleCtl) {
		if (this.styleCtl.val()=="list")
			{
			this.drawTable(div);
			return this;
			}
	} 

	var bowers = this;
	bowers.stopDraw().clockOn();
	if (div) {
		if (this.divID) gBowersDivs.remove(this.divID);
		this.divID = gBowersDivs.add(div);
	}
	else 
		div = gBowersDivs.get(this.divID);
	div.html("");
	if (this.recs)
		{
		var i = 0;
		var recs = this.recs;
		if (!recs) return this;
		if (recs.length==0) return this;
		var total = recs.length;
		bowers.drawFuncID = setInterval(function(){
			var r = recs[i];
			$("<div class='nobr playerEl'>"+r.firstname+" "+r.lastname+"</a>")
			.attr("i",i)
			.hover(function(e){bowers_setupPlayerBox($(this), e, bowers, r);},
			function()
				{
				if (!bowers.playerBox.attr("locked"))
					{
					$(this).unhiliteBoxTxt();
					bowers.hidePlayerBox();
					}
				})
			.bind("mousedown", function(e){	// was click
				bowers_setupPlayerBox($(this), e, bowers, r);
				bowers_lockPlayerBox(e, $(this), bowers, r, _addToMyList);
				return false;
			})
			.css({cursor:"pointer"})
			.css({cursor:"hand"})
			.appendTo(div)
			.css({opacity:0}).animate({opacity:1},1000);
			if (++i < total)
				{
				var sep = "<a> </a>";
				$(sep).css({color:"#bbbbbb",opacity:0})
				.appendTo(div)
				.animate({opacity:1},1000);
				$(".bowersInfo").html("Loading "+(i+1)+" of "+total+"...");
				}
			else
				{
				$(".bowersInfo").html("Viewing "+bowers.first+"-"+bowers.last+" of "+bowers.total);
				bowers.stopDraw();
				}
			},25);
		}
	return bowers.clockOff();
	}
//--------------------------------------------------
bowers.prototype.drawTable = function(div)
	{
	this.createTable(div);
	var bowers = this;
	bowers.stopDraw().clockOn();
	if (div) {
		if (this.divID) gBowersDivs.remove(this.divID);
		this.divID = gBowersDivs.add(div);
	}
	else 
		div = gBowersDivs.get(this.divID);
	if (this.recs)
		{
		var recs = this.recs;
		if (!recs) return this;
		if (recs.length==0) return this;
		var total = recs.length;
		var i = 0;
		bowers.drawFuncID = setInterval(function(){
			$(".bowersInfo").html("Loading "+(i+1)+" of "+total+"...");
			bowers.addToTable(recs[i], true);
			if (++i == total)
				{
				$(".bowersInfo").html("Viewing " + bowers.first + "-" + bowers.last + " of " + bowers.total);
				bowers.stopDraw();
				}
			},25);
		}
	return bowers.clockOff();
	}

//--------------------------------------------------
bowers.prototype.drawCtls = function(div)
	{
	var bowers = this;
	//-- Sort: (last, first, rating, district)
	div.appendTxt("Sort:");
	bowers.sortCtl = wnditm_select_add({klass:"bowersSort",
		selFunc: function(){
			bowers.load(function(){
				bowers.drawNames();
			})
		},
		options:[
			{label:"Rating", value:"rating"},
			{label:"Last Name", value:"lastname"},
			{label:"First Name", value:"firstname"},
			{label:"District", value:"district"}
		]}, div);
	
	//-- Year (filterYear)
	div.appendTxt("Year:",2);
	wnditm_selectPHP_add({klass:"filterYear",
		cmd:"get_rating_years",
		php:"shuf_ratings.php",
		setPHPData: function(data,wnd){data.desc=true;},
		done:function(ctl){bowers.yearCtl = ctl;},
		selFunc: function(){
			bowers.load(function(){
				bowers.drawNames();
			});
		}
		}, div);
		
	// Filter by: District (filterDist)
	div.appendTxt("Dist:",2);
	wnditm_selectPHP_add({klass:"filterDist",
		cmd:"get_districts",
		php:"shuf_ratings.php",
		entry1: "Anywhere",
		done:function(ctl){bowers.distCtl = ctl;},
		selFunc: function(){
			bowers.load(function(){
				bowers.drawNames();
			});
		}
		}, div);

	//-- Style: (list, mush)
	div.appendTxt("Style:",2);
	bowers.styleCtl = wnditm_select_add({klass:"filterYear",
		selFunc: function(){
			bowers.drawNames();
		},
		options:[
			{label:"Mush", value:"mush"},
			{label:"List", value:"list"}
		]}, div);

	//-- #names/page: (list, mush)
	div.appendTxt("#Names/Pg:",2);
	bowers.namesPerPageCtl = wnditm_select_add({klass:"filterYear",
		selFunc: function(){
			bowers.setPagePop();
			bowers.load(function(){
				bowers.drawNames();});
		},
		options:[
		{label:"100", value:"100"},
			{label:"200", value:"200"},
			{label:"300", value:"300"},
			{label:"400", value:"400"},
			{label:"500", value:"500"},
			{label:"1000", value:"1000"},
			{label:"2000", value:"2000"},
			{label:"All", value:"all"}
		]}, div);
	
	//-- page: x of total
	div.appendTxt("Page:",1);

	//-- page - previous
	var pBut = $(_button).addClass("ctlBut")
	.bind("click", function(){
		if (bowers.pageCtl)
			{
			var pg = bowers.pageCtl.val();
			if (pg>1) pg -= 1;
			else pg = bowers.pageCtl.children().length;
			bowers.pageCtl.val(pg);
			bowers.refresh();
			}
	})
	.attr("value","<");
	$(_a).appendTo(div).append(pBut);

	//-- page - next
	var pBut = $(_button).addClass("ctlBut")
	.bind("click", function(){
			var pg = bowers.pageCtl.val();
			var total = bowers.pageCtl.children().length;
			if (pg<total) ++pg;
			else pg = 1;
			bowers.pageCtl.val(pg);
			bowers.refresh();
	})
	.attr("value",">");
	$(_a).appendTo(div).append(pBut);

	//---- page POPUP
	bowers.pageCtl = wnditm_select_add({klass:"pagePop",
		selFunc: function(){
			bowers.load(function(){
				bowers.drawNames();});
		}}, div);
	
	//-- Rating: 
	div.appendTxt("Rating:",2);
	bowers.ratingCtl = wnditm_select_add({klass:"filterRating",
		selFunc: function(){
			bowers.load(function(){
				bowers.drawNames();});
		},
		options:[
			{label:"All", value:"all"},
			{label:"-1's", value:"-1"},
			{label:" 0's", value:"0"},
			{label:" 1's", value:"1"},
			{label:" 2's", value:"2"},
			{label:" 3's", value:"3"},
			{label:" 4's", value:"4"}
		]}, div);

	// Filter by: First Name (filterFirst)
	div.appendTxt("First:",2);
	bowers.firstnameCtl = wnditm_inputText_add({klass:"filterFirst",
		keyup: function(){
			bowers.lastnameCtl.attr("value","");
			bowers.load(function(){
				bowers.drawNames();
			});		
		}}, div);
			
	// Filter by: Last Name (filterLast)
	div.appendTxt("Last:",2);
	bowers.lastnameCtl = wnditm_inputText_add({klass:"filterLast",
			keyup: function(){
			bowers.firstnameCtl.attr("value","");
			bowers.load(function(){
				bowers.drawNames();
			});		
		}}, div);

	$("<a></a>").addClass("bowersInfo")
	.appendTo(div);
	return this;
	}

//--------------------------------------------------
bowers.prototype.clockOn = function()
	{
	if (!this.clock)
		{
		this.clock = $(_img).attr("src","ui_images/wait_clock.gif")
		.addClass("wait").css({zIndex:32555}).appendTo($(".content"));
		}
	return this;
	}
//--------------------------------------------------
bowers.prototype.clockOff = function()
	{
	this.clock.remove();
	this.clock = undefined;
	return this;
	}

//--------------------------------------------------
bowers.prototype.setPagePop = function()
	{
	if (this.pageCtl.attr("inited")) var oldSel = this.pageCtl.val();
	var ctl = this.pageCtl.empty().attr("inited",true);
	var num = parseInt(this.namesPerPageCtl.val());
	var total = this.getTotal();
	var pages = parseInt((total+num-1)/num);
	var pg1 = 1;
	var pg2 = pg1+num-1;

	for (var i=1; i<=pages; ++i)
		{
		$("<option value="+i+">"+i+" ("+pg1+"-"+pg2+")"+"</option>")
		.attr({pg1:pg1,pg2:pg2})
		.appendTo(ctl);
		pg1 = pg2+1;
		pg2 = pg1+num-1;
		if (pg2>total) pg2 = total;
		}
	if (oldSel)
		{
		if (oldSel <= pages) this.pageCtl.val(oldSel);
		}
	return this;
	}
//--------------------------------------------------
bowers.prototype.createTable = function(div)
	{
	div.empty();
	this.tab = $("<table></table>").addClass("bowersTable").appendTo(div);
	this.thead = $("<thead></thead>").appendTo(this.tab);
	var s = ""; for (var yr = gStartYear; yr<=gLastYear; ++yr) s+="<th>"+yr+"</th>";
	$("<tr><th>#</th><th>First Name</th><th>Last Name</th><th>District</th><th>Rating</th>"+s+"</tr>")
	.addClass("tableHeadRow")
	.appendTo(this.thead);
	this.tbody = $("<tbody></tbody>").appendTo(this.tab);
	return this;
	}

//--------------------------------------------------
bowers.prototype.drawMyTable = function(div)
	{
	var bowers = this;
	div.empty();
	$(_div).addClass("tabCtlBar").appendTo(div)
	.appendTxt("Tournament:")
	.append($(_select)
		.slct({
			id:"tourns",
			recs: this.tournRecs,
			fldlbl: "name",
			fldval: "id",
			first: "none",
			width:280,
			reset: function(sel, o)
			{
				bowers.loadTourns(function(recs)
				{
					o.recs = recs;
					var tourn_id = sel.attr("newVal");
					if (!tourn_id) 
						{
						var tot = sel.slctTotal();
						if (o.first)
							{
							if (tot>1) tourn_id = sel.slctIdxToVal(1);
							}
						else if (tot>0) tourn_id = sel.slctIdxToVal(0);
						}
					o.tourn_id = tourn_id;
					bowers.refreshMyPlayerList(tourn_id, function(){
							sel.slctReset(o);
							if (tot==0 || sel.slctVal()==-1) $(".tournDelBut").attr("disabled","disabled");
							else $(".tournDelBut").removeAttr("disabled");
							});
					});
			},
			func: function()
			{
			bowers.refreshMyPlayerList($(this).slctVal());
			}
	}))
	.append($(_button).addClass("tabCtl tabBut").attr({value:"New"})
	.bind("click",function(){
		$(this).modal({height:158, draw:bowers_drawNewTournDlog}); 
	}))
	.append($(_button).addClass("tabCtl tabBut tournDelBut").attr({value:"Del"})
	.bind("click",function(){
		var slct = $("#tourns"); 
		var r = gBowers.tournRecs[slct.slctIdx()-1];
		var okToDel = true;
		if (r.user_id) if (gUser.user_id!=r.user_id) okToDel = false;
		if (r.visitor_id) if (gUser.visitor_id!=r.visitor_id) okToDel = false;
		
		if (okToDel)
			{
			if (confirm("Are you sure you want to delete\nthe tournament,\"" + slct.slctTxt() + "\"?")) 
				{
				var tourn_id = slct.slctVal();
					$("#tourns").attr("newVal", slct.slctNextVal(tourn_id));
					$.post("shuf_ratings.php",{data:$.toJSON({command:"tourn_delete",id:tourn_id})},function(res){
						$("#tourns").trigger("reset");
					});
				}
			}
		else
			{
			alert("You cannot delete tournaments that you did not create.");
			}
	}));
	tblBox = $(_div).addClass("myTableBox").appendTo(div);
	this.createTable(tblBox);
	if (this.activeRecs)
		{
		var r = this.activeRecs;
		var t = r.length;
		for (i=0; i<t; ++i)
			{
			$("<tr><td>"+i+"</td><td>"+r.firstname+"</td><td>"
			+r.lastname+"</td><td>"+r.district+"</td><td>"
			+r.rating+"</td><tr>")
			.addClass("tableRow")
				.appendTo(this.tbody);
			}
		}
	return bowers;
	}

//--------------------------------------------------
bowers.prototype.addToTable = function(r, isBowersTable)
	{
	if (!isBowersTable)
		{
		if (this.findInTable(r))
			{
			alert(r.firstname+" "+r.lastname+" is already on the list.");
			return this;
			}
		}
	var bowers = this;
	var s = "";
	if (r.ratings)
		{
		var rats = $.evalJSON(r.ratings);
		for (var y=gStartYear; y<=gLastYear; ++y)
			{
			if (rats[y]) s+= "<td>"+rats[y]+"</td>"
			else  s+= "<td>n/a</td>";
			}
		}
	var idx = 1+this.tbody.children("tr").length;
	var tr = $("<tr><td>"+idx+"</td><td>"+r.firstname+"</td><td>"
			+r.lastname+"</td><td>"+r.district+"</td><td>"
			+r.rating+"</td>"+s+"</tr>")

		.attr("i",idx-1)
		.hover(function(e){bowers_setupPlayerBox($(this), e, bowers, r);},
			function(){
				if (!bowers.playerBox.attr("locked"))
				{
				$(this).css({color: "#bbbbbb"});
				bowers.hidePlayerBox();
				}
		})
		.bind("mousedown", function(e){	// was click
			bowers_setupPlayerBox($(this), e, bowers, r);
				bowers_lockPlayerBox(e, $(this), bowers, r, 
					isBowersTable ? _addToMyList : _rmvFromMyList);

			return false;
		})
	.attr("pid", r.pid)
	.addClass("tableRow")
	.appendTo(this.tbody);
	return tr;
	}
//--------------------------------------------------
bowers.prototype.findInTable = function(player)
	{
	var tr;
	var bowers = this;
	var tbody = $(".bowersTable").children("tbody");
	tbody.children("tr").each(function(){
		if (player.firstname==$(this).children("td:eq(1)").text())
			{
			if (player.lastname==$(this).children("td:eq(2)").text())
				{
				tr = $(this);
				return false;
				}
			}
		});
	return tr;
	}

//--------------------------------------------------
bowers.prototype.removeFromTable = function(player)
	{
	var tr = this.findInTable(player);
	if (tr)
		{
		tr.remove();
		this.renumberTable();	
		}
	}

//--------------------------------------------------
bowers.prototype.resetPlayer = function(tr)
	{
	this.namesDiv.children("a").each(function(){
		if ($(this).text()==(tr.children("td:eq(1)").text()
										+" "+tr.children("td:eq(2)").text()))
			{
			$(this).unhiliteBoxTxt();
			}
		});
	}
//--------------------------------------------------
bowers.prototype.renumberTable = function()
	{
	this.tbody.children("tr").each(function(i){
		$(this).children("td:eq(0)").html(i+1)
	});
	return this;
	}
	
//--------------------------------------------------
bowers.prototype.hidePlayerBox = function()
	{
	if (this.playerBox) this.playerBox.move(0,-2000);
	return this;
	}
//--------------------------------------------------
bowers.prototype.refresh = function()
	{
	var bowers = this;
	bowers.load(function(){
		bowers.drawNames();
	});
	return this;
	}
//--------------------------------------------------
bowers.prototype.drawPlayerDlog = function(div, r)
	{
	var bowers = this;
	var s = "stroke_data/mugs/"+r.firstname+r.lastname+".jpg";
	$(_img).addClass("playerDlogImg")
	.attr("src",s.toLowerCase())
	.appendTo(div);
	var name = r.firstname+" "+r.lastname;
	$(_div).addClass("playerDlogName").html(name).appendTo(div);
	$(_div).addClass("playerDlogDist").html(r.district).appendTo(div);
	$(_div).addClass("playerDlogRating").html(r.rating).appendTo(div);
	$(_a).addClass("playerDlogPeanutTitle")
	.hover(function(){$(this).css({color:"#aaffaa"});},function(){$(this).css({color:"#4444cc"});})
	.bind("click",function(){
		alert("The 'Peanut Gallery Rating System' is not intended as a replacement "
			+"for the 'Bowers Rating System'.  The PG Rating System was conceived to simply "
			+"explore and demonstrate ways to improve the process of collecting the ratings, "
			+"as well as new ways to disburse the information.");
	})			
	.html("Peanut Gallery Rating System").appendTo(div);
	
	$(_div).addClass("playerDlogRatingQ").html("What would you rate "+name+"?").appendTo(div);
	
	$(_input).addClass("playerDlogRatingInp").attr({value:r.rating})
	.bind("keyup", bowers_ratingKeyUp)
	.appendTo(div).focus().select();
	$(_button).addClass("playerDlogRatingInpBut").attr({value:"submit"})
	
	.bind("click", function(){
		$.post("rating.php", {data: $.toJSON({command:"get",player_id: r.pid})}, function(res){
			var o = $.evalJSON(res);
			var submit = true;
			if (o.rating) bowers_replaceRating(o,r);
			else
				{
				$.post("rating.php", {data: $.toJSON({command:"submit", player_id: r.pid,
													rating:$(".playerDlogRatingInp").attr("value")})},
													 function(res2){
													 	bowers_computeRating(r);
														 });
				}

		});
	})
.appendTo(div);

	$(_div).addClass("playerDlogNumRaters").appendTo(div);
	$(_div).addClass("playerDlogPGRating").appendTo(div);
	bowers_computeRating(r);
	$(_div).addClass("playerDlogMsg").appendTo(div);
/*
		var rats = $.evalJSON(r.ratings);
		for (var y=gStartYear; y<=gLastYear; ++y)
			{
			if (rats[y]) s+= "<td>"+rats[y]+"</td>"
			else  s+= "<td>n/a</td>";
			}

 */	
	}
//--------------------------------------------------
function bowers_computeRating(r)
{
	$.post("rating.php", {
		data: $.toJSON({
			command: "compute",
			player_id: r.pid
		})
	}, function(res)
	{
		var o = $.evalJSON(res);
		if (o.total && o.total > 0) {
			if (o.total > 1) var s = "s";
			else var s = "";
			$(".playerDlogNumRaters").html(r.firstname + " has been rated by " + o.total + " rater" + s + ".");
			$(".playerDlogPGRating").html("Computed Rating: " + o.rating);
		}
		else {
			$(".playerDlogNumRaters").html(r.firstname + " has not been rated by anyone in the Peanut Gallery.");
			$(".playerDlogPGRating").html("");
		}
	});
}
 //--------------------------------------------------
function bowers_killRatings()
	{
	$.post("rating.php", {data: $.toJSON({command:"del_all"})},function(){
		alert("All Peanut Gallery ratings have been deleted.");
			});	
	}
//--------------------------------------------------
function bowers_replaceRating(o,r)
	{
	$(".playerDlogRatingInpBut").attr("disabled","disabled");
	$(".playerDlogMsg")
		.html("You rated " + r.firstname + " a " + o.rating + " on " + o.timestamp+".<br><br>")
		.append($(_button).addClass("playerDlogReplaceBut")
		.attr({value:"Replace "+o.rating+" with "+$(".playerDlogRatingInp").attr("value")+"."})
		.attr({orat:o.rating}))
		.bind("click",function(){
			$.post("rating.php", {data: $.toJSON({command:"submit", player_id: r.pid,
									rating:$(".playerDlogRatingInp").attr("value")})},function(){
									 	bowers_computeRating(r);
										bowers_resetRatingDlg();
										 });
			return false;
		})
		.append($("<br>"))
		.append($(_button).addClass("playerDlogNoReplaceBut")
		.attr({value:"Keep the old rating."})
		.bind("click",function(){
			bowers_resetRatingDlg();
			return false;
		}));
	$(".modalDiv").animate({height:_ratingDlogHeight+93},300, function(){	
	});
}
//--------------------------------------------------
function bowers_resetRatingDlg()
	{
	$(".modalDiv").animate({height:_ratingDlogHeight},300, function(){
			$(".playerDlogMsg").empty();
			$(".playerDlogRatingInpBut").removeAttr("disabled");
	});	
	}
//--------------------------------------------------
function bowers_ratingKeyUp()
	{
	var but = $(".playerDlogReplaceBut");
	var txt = $(this).attr("value");
	var s = "";
	var len = txt.length;
	if (len>0)
		{
		for (i=0;i<len;++i)
			{
			var chr = txt.substr(i,1);
			if (isNaN(chr)) 
				{	//-, ., or a non-0-9
				if (i==0) 
					{
					if (chr == "-") s = chr;
					else if (chr == ".") s = "0.";
					}
				else if (chr == ".") 
					{
					if (s.indexOf(".") == -1) s += chr;
					}
				}
			else 
				{				// 0-9
				if (i == 0) {
					if (chr < 6) s += chr;
				}
				else
					{
					//if (s.indexOf(".") == -1)
					//s.substr(1).toLowerCase();
					s += chr;
					}
				}
			}
		if (s.length>0)
			{
			if (s[0]=="-")
				{
				if (s.substr(1,1)==".")
					{
					s = s.substr(0,1)+"0"+s.substr(1);	
					}
				}
			else if (s.substr(0,1)==".")
				{
				s = "0"+s;	
				}
			}
		if (s.indexOf(".") == -1)
			{
			if (s>=6 || s<=-2) s = s.substr(0,s.length-1);
			}
		var dec = s.indexOf(".");
		if (dec != -1)
			{
			if (s.substr(0,1)=="-")
				{
				if (s.length>5) s = s.substr(0,5);
				}
			else if (s.length>4) s = s.substr(0,4);
			}
		$(this).attr({value:s});
		if (but) but.attr({value:"Replace "+but.attr("orat")+" with "+s+"."});
		}
	}

//--------------------------------------------------
function bowers_unlockPlayerBox(playerEl)
	{
	if ($(".playerBox").attr("locked"))
		{
		$(".playerButBox").remove();
		$(".playerBox")
		.appendTo($(".content"))
		.css({height:""})
		.removeAttr("locked").move(0,-2000);
		playerEl.unhiliteBoxTxt();
		}
	}
//--------------------------------------------------
function bowers_lockPlayerBox(e, playerEl, bowers, r, otherBut)
	{
	if ($(".playerBox").attr("locked"))
		{
		$(".cover").trigger("mousedown"); 
		return;	
		}

	var box = $(".playerBox").bind("mousedown",function(){return false;})
	.attr({locked:true});
	playerEl.lockBoxTxt();
	var par = box.parent();
	var butBox = $(_div).addClass("playerButBox").appendTo(box);
	
	switch(otherBut)
		{
		case _addToMyList:
			$(_button).addClass("playerBut")
					.attr({value:"Copy to My Player List"})
					.bind("click",function(){
						bowers.addToTable(r,true);
						bowers.saveMyPlayer(r);
						$(".cover").trigger("mousedown"); 
						playerEl.unhiliteBoxTxt();
						return false;}
					).appendTo(butBox);
			break;
		case _rmvFromMyList:
			$(_button).addClass("playerBut")
					.attr({value:"Remove Player..."})
					.bind("click",function(){
						if (confirm("Are you sure you want to remove " + r.firstname + "?")) 
							{
							$.post("shuf_ratings.php", 
								{data: $.toJSON({command:"plist_delete", 
								tourn_id: bowers.getTournID(), player_id:r.pid})}, function(){
									bowers.removeFromTable(r);
								});
							}
						$(".cover").trigger("mousedown");
						return false;
						})
			.appendTo(butBox);
			break;
		}
	if (otherBut==_addToMyList)
		{
		$(_button).addClass("playerBut")
			.attr({value:"Rate this Player..."})
			.bind("click",function(){
				$(".cover").trigger("mousedown");
				playerEl.modal({height:_ratingDlogHeight, width:_ratingDlogWidth, draw:bowers.drawPlayerDlog, 
				data:bowers.recs[parseInt(playerEl.attr("i"))]}); 
				playerEl.unhiliteBoxTxt();
				return false;}
		).appendTo(butBox);
		}

	box.appendTo($(_div).cover(function(){bowers_unlockPlayerBox(playerEl)}).css({top:$(".content").css("top")}));
	var p = par.position();
	box.moveInPar(e.pageY-p.top+19, e.pageX-p.left-40, 3);
	}


//------------------------------------------------------------
$.fn.hiliteBoxTxt = function()
	{
	$(this).css({color: "yellow",border: "#111155 1px solid"});
	return $(this);
	}
//------------------------------------------------------------
$.fn.unhiliteBoxTxt = function()
	{
	$(this).css({color: "#bbbbbb",border: "#111155 1px solid",
				fontSize:$(this).parClass("tabContent").css("fontSize"), fontWeight: "normal"});
	return $(this);
	}
//------------------------------------------------------------
$.fn.lockBoxTxt = function()
	{
	var fs = parseInt($(this).parClass("tabContent").css("fontSize"));
	$(this).css({fontSize:fs+6, fontWeight:"bold"});
	return $(this);
	}
//------------------------------------------------------------
function bowers_setupPlayerBox(playerEl, e, bowers, r)
	{			
	if (!bowers.playerBox.attr("locked"))
		{
		playerEl.css({color: "yellow", border:"#4444bb 1px solid"});
		var s = "stroke_data/mugs/"+r.firstname+r.lastname+".jpg";
		var p = bowers.playerBox.parent().position();
		bowers.playerMug.attr("src",s.toLowerCase());
		bowers.playerName.html(r.firstname+" "+r.lastname);
		bowers.playerRating.html("<br>Rating: "+r.rating);
		bowers.playerDist.html("<br>District: "+r.district);
		bowers.playerBox.moveInPar(e.pageY-p.top+19, e.pageX-p.left-40, 3);
		}
	}

//--------------------------------------------------
function bowers_drawNewTournDlog(div,r)
	{
	$(_div).addClass("dlogTitle").html("Add a Tournament").appendTo(div);
	$(_div).addClass("dlogFldLbl").html("Tournament Name").appendTo(div);
	var tname = $(_input).addClass("dlogTxtFld").attr({value:"None"}).appendTo(div)
	.focus().select();
	
	$(_button).addClass("okBut").attr({value:"ok"})
	.bind("click", function(){
		$.post("shuf_ratings.php", 
		{data: $.toJSON({command:"tourn_add"
							,name:$(tname).attr("value")})}, function(res)
		{
		var obj = $.evalJSON(res);
		$("#tourns").attr("newVal",obj.id).trigger("reset");
		ShutModal();
		});
	}).appendTo(div);
	}

//--------------------------------------------------
bowers.prototype.loadTourns = function(done)
	{
	var bwr = $(this);
	$.post("shuf_ratings.php", 
		{data: $.toJSON({command:"tourn_get"})}, function(res)
		{
		var obj = $.evalJSON(res);
		if (obj.recs)
			{
			if (gBowers.tournRecs) delete gBowers.tournRecs;
			gBowers.tournRecs = $.evalJSON(obj.recs);
			}
		if (done) done(gBowers.tournRecs);
		});
	return bwr;
	}

//--------------------------------------------------
bowers.prototype.refreshMyPlayerList = function(tourn_id, done)
	{	
	gTournID = tourn_id;
	var bwr = this;
	bwr.tbody.empty();
	$.post("shuf_ratings.php", 
		{data: $.toJSON({command:"plist_get", tourn_id:tourn_id, year:gLastYear})}, function(res)
		{
		var obj = $.evalJSON(res);

		if (obj.recs)
			{
			var recs  = $.evalJSON(obj.recs);
			var t = recs.length;
			if (t>0)
				{
				for (var i=0;i<t;++i)
					{
					bwr.addToTable(recs[i]);	
					}
				}
			delete obj.recs;
			}
		delete obj;
		if (done) done();
		});
	return bwr;
	}

//--------------------------------------------------
bowers.prototype.saveMyPlayer = function(r)
	{
	$.post("shuf_ratings.php", 
		{data: $.toJSON({command:"plist_add", pid:r.pid, 
					tourn_id:this.getTournID()})}, function(res){});
	}

//--------------------------------------------------
bowers.prototype.getTournID = function()
	{
	return $("#tourns").slctVal();
	}