	/*var httpReqCount=0;
	if(window.name == "") {
		//alert("undefined");
	} else {
		//alert(window.name);
	}
	window.name = "pie";
	window.onunload = test;
	
	function test()
	{
		alert(window.location);
	}*/
	
  
	function dsToggle(obj, inverse, disable)
	{
		var list = obj.options;
		var nH, dispItem, nameList, nameSize, x, y, z, xLen, zLen, found;
		nH = Array();
		if(inverse)
			var valOne = 'none', valTwo = '';
		else
			var valOne = '', valTwo = 'none';
		for(x=0, xLen=list.length; x<xLen; x++)
		{
			nameList = list[x].value.split("_");
			if(nameList.length > 1)
				nameSize = nameList.length-1;
			else
				nameSize = 1;
			for(y=0; y<nameSize; y++)
			{
				dispItem = document.getElementById("_" + nameList[y])
				if(dispItem)
				{
					//alert(dispItem.something);
					if(x==obj.selectedIndex) {
						dispItem.style.display = valOne;
						nH.push(dispItem.id); 
						if(disable) {
							var disableList = dispItem.getElementsByTagName("input");
							for(z=0, zLen = disableList.length; z<zLen; z++)
								disableList[z].disabled = inverse;
							var disableList = dispItem.getElementsByTagName("select");
							for(z=0, zLen = disableList.length; z<zLen; z++)
								disableList[z].disabled = inverse;
						} 
					} else {
						found = false;
						for(z=0, zLen = nH.length; z<zLen; z++)
							if(dispItem.id == nH[z])
								found = true;
						if(!found) {
							dispItem.style.display = valTwo; 
							if(disable) {
								var disableList = dispItem.getElementsByTagName("input");
								for(z=0, zLen = disableList.length; z<zLen; z++)
									disableList[z].disabled = !inverse;
								var disableList = dispItem.getElementsByTagName("select");
								for(z=0, zLen = disableList.length; z<zLen; z++)
									disableList[z].disabled = !inverse;
							}
						}
					}
				}
			}
		}
	}
  
	function displaySelect(obj, inverse, disable)
	{
		var list = obj.options;
		var dispItem, x, y, z, xLen, zLen, found;
		if(inverse)
			var valOne = 'none', valTwo = '';
		else
			var valOne = '', valTwo = 'none';
		for(x=0, xLen=list.length; x<xLen; x++)
		{
 			dispItem = document.getElementById("_" + list[x].value)
			if(dispItem) {
				//alert(dispItem.something);
				if(x==obj.selectedIndex) {
					dispItem.style.display = valOne;
					if(disable) {
						var disableList = dispItem.getElementsByTagName("input");
						for(z=0, zLen = disableList.length; z<zLen; z++)
							disableList[z].disabled = inverse;
						var disableList = dispItem.getElementsByTagName("select");
						for(z=0, zLen = disableList.length; z<zLen; z++)
							disableList[z].disabled = inverse;
					} 
				} else {
					dispItem.style.display = valTwo; 
					if(disable) {
						var disableList = dispItem.getElementsByTagName("input");
						for(z=0, zLen = disableList.length; z<zLen; z++)
							disableList[z].disabled = !inverse;
						var disableList = dispItem.getElementsByTagName("select");
						for(z=0, zLen = disableList.length; z<zLen; z++)
							disableList[z].disabled = !inverse;
					}
				}
			} //if
		}
	}
	
	//display toggle for an input button
	function displayButton(obj, targetId, showText, hideText)
	{
		var target = document.getElementById(targetId);
		if(!obj)
			return;
		if(obj.value == showText) {
			obj.value = hideText;
			target.style.display = '';
		} else {
			obj.value = showText;
			target.style.display = 'none';
		}
	}
	
	function openWin(url, name, specs)
	{
		window.open(url, name, specs);
	}
	
	function cAll(obj)
	{
		//document.write(obj.name);
		var list = obj.form.elements;
		//alert(list.length);
		for(x=0, len = list.length; x<len; x++)
		{
			//document.write(list[x].value.split("_")[0]);

			//document.write(dispItem.id);
			if(list[x].type == "checkbox" && list[x].title == "" && list[x].className == "dynamic")
			{
				if(list[x].checked != obj.checked)
					list[x].click();
				//list[x].checked = obj.checked;
			}
		}
	}
	
	function cAllId(objId, obj)
	{
		//document.write(obj.name);
		var list = document.getElementById(objId).getElementsByTagName("input");
		if(!list) {
			return;
    }
		for(x=0, len = list.length; x<len; x++)
		{
			//document.write(list[x].value.split("_")[0]);

			//document.write(dispItem.id);
			if(list[x].type == "checkbox" && list[x].title == "" && list[x].className == "dynamic")
			{
				if(list[x].checked != obj.checked)
					list[x].click();
				//list[x].checked = obj.checked;
			}
		}
	}

	function cHi(obj)
	{
			if(obj.checked)
				obj.parentNode.parentNode.className = "row-checked";
			else
				obj.parentNode.parentNode.className = "";
	}
	
	function rClick(objId)
	{
		obj = document.getElementById(objId);
		obj.click();
		obj.focus();
	}
	
	function rHover(obj)
	{
		obj.style.cursor = "pointer";
	}
	
	function cUpdate(obj)
	{
		var list = obj.elements.tags("input");
		for(x=0; x<list.length; x++)
			if(list[x].type == "checkbox" && list[x].name != "allbox")
				cHi(list[x]);
	}
	
	function hoverOver(obj)
	{
		if(self.hoverColor)
			obj.style.backgroundColor=hoverColor;
		else
			obj.style.backgroundColor='#FAF0D4';
	}
	
	function hoverOut(obj)
	{
			obj.style.backgroundColor='';
	}
	
	function dispToggle(objId)
	{
		obj = document.getElementById(objId);
		if(!obj)
		  return;
		//document.write(obj);
		//document.write(document.getElementById(objId).className);
		if(obj.style.display == 'none')
			obj.style.display = '';
		else
			obj.style.display = 'none';
	}
	
	function checkToggle(obj, targetId, inverse)
	{
		//alert(targetId+" - checked: "+obj.checked);
		var target = document.getElementById(targetId);
		//document.write(obj);
		//document.write(document.getElementById(objId).className);
		if(obj.checked)
			target.style.display = inverse ? 'none' : '';
		else
			target.style.display = inverse ? '' : 'none';
	}
	
	function ampmToggle(obj){
		if(obj.value=='') 
			obj.value='AM'; 
		else if(obj.value=='AM')
			obj.value='PM';
		else
			obj.value='';
	}
	
	function ampmGameToggle(obj, gameid){
		var value;
		if(obj.value=='PM') 
			value='AM'; 
		else
			value='PM';
		obj.value = value;
		document.getElementById("game_"+gameid+"_ampm").value = value;
	}
	
	function updateRound(sub, round) 
	{
		var vars = new Array("month", "day", "year", "hour", "minute", "ampm");
		var values = new Array(), x, y;
		for(x=0; x<6; x++) {
			var source = document.getElementById("round_"+vars[x]+"_"+sub+"_"+round);
			if(source.value.length > 0) {
				values[vars[x]] = source.value;
				//alert(value);
			}
			source.value = '';
		}
		var list = document.getElementById("round_"+sub+"_"+round).getElementsByTagName("input");
		var len=list.length;
		for(x=0; x < len; x++) {
			if(values[list[x].className] != null)
				list[x].value = values[list[x].className];
		}
	}
	
	function recursiveRound(object, value, valueSource)
	{
		var x;
		var subObject;
		var list = object.childNodes;
		var len=list.length;
		for(x=0; x < len; x++)
		{
//			alert(list[x].className + "==" + valueSource);
			if(list[x].className == valueSource)
			{
//				alert("found " + x);
				list[x].value = value;
				if(valueSource == "ampm")
				{
					list[x].parentNode.className = "schedule-button-" + value;
				}
			} else if (list[x].hasChildNodes) {
					subObject = list[x];
					recursiveRound(subObject, value, valueSource);
			}
		}
	}
	
	function updateDynamic()
	{
			var forms = document.forms;
//			document.write(document.all.length);
//			alert("RUNNING" + mlist.length);
			for(x1=0, len1=forms.length; x1 < len1; x1++)
			{
				var currForm = forms[x1].elements;
				for(x2=0, len2=currForm.length; x2 < len2; x2++) 
				{
				//alert(mx);
					if(currForm[x2].className == "dynamic")
					{
						if(currForm[x2].tagName == "SELECT") {
								currForm[x2].onchange();
						} else if(currForm[x2].tagName == "INPUT" && currForm[x2].name != "allbox") {
								currForm[x2].onclick();
						}
					}
				}
//				alert("crap2");
			}
			/*element = document.getElementById("randomnum");
			if(element)
				element.fireEvent("onchange");*/
	}
	
	function getElementById(id)
	{
		if (document.getElementById) {
			// browser implements part of W3C DOM HTML
			// Gecko, Internet Explorer 5+, Opera 5+
			elm = document.getElementById(id);
		}	else if (document.all) {
			// Internet Explorer 4 or Opera with IE user agent
			elm = document.all[id];
		} else if (document.layers) {
			// Navigator 4
			elm = document.layers[id];
		}
	}
	
	function disableToggle(obj, names, inverse)
	{
		var nameList, inputList, x, y, z, xLen, yLen, zLen, checked, tempObj, dynamicObjs;
		dynamicObjs = new Array();
		checked = obj.checked;
		if(obj.disabled)
			checked = true;
		else if(inverse && checked)
			checked = false;
		else if(inverse && !checked)
			checked = true;
		nameList = names.split(";");
		for(x=0, xLen=nameList.length; x < xLen; x++)
		{
			tempObj = document.getElementById(nameList[x]);
			if(tempObj) {
				if(checked)
					tempObj.className = "disabled";
				else
					tempObj.className = "";
				inputList = tempObj.getElementsByTagName("input");
				for(y=0, yLen=inputList.length; y<yLen; y++)
				{
					inputList[y].disabled = checked;
					if(inputList[y].className == "dynamic") {
						dynamicObjs.push(inputList[y]);
					}
				}
			}
		}
		zLen=dynamicObjs.length;
		for(z=(zLen-1);  z >= 0; z--)
		{
			dynamicObjs[z].onclick();
		}
	}

	function selectLink(obj)
	{
		window.location = obj.options[obj.selectedIndex].value;
	}
	
	function focusText(obj, text)
	{
		if(obj.value == text)
			obj.value = "";
	}
	
	function blurText(obj, text)
	{
		if(obj.value == "")
			obj.value = text;
	}
	
	function httpRequest(method, url, content, callback)
	{
    var request = false;
    if(window.XMLHttpRequest) {
      request = new XMLHttpRequest();
      //if(request.overrideMimeType)
        //request.overrideMimeType('text/xml');
    } else if(window.ActiveXObject) {
      try {
        request = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    request.onreadystatechange = function()
    {
      if(request.readyState == 4) {
        if(request.status == 200) {
          callback();
        }
      }
    }
    switch(method) 
    {
      case "GET":
        request.open("GET", url, true);
        request.send(null);
        break;
      default:
        request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        request.setRequestHeader("Content-length", content.length);
        request.open(method, url, true);
        request.send(content);
    }
    return request;
	}
	
	function processDate(obj, url, hint, format, timezone)
	{
	  var input = encodeURIComponent(obj.value);
	  var raw = document.getElementById("value_"+obj.name);
	  if(obj.value == "" || obj.value == hint) {
	    raw.value="0";
	    return true;
	  }
	  var date=new Date();
	  obj.readOnly = true;
	  //alert(date.getTimezoneOffset());
	  if(url.search(/\?/) == -1)
	    url = url + "?string=" + input + "&now=" + raw.value + "&format=" + encodeURIComponent(format) + "&timezone=" + encodeURIComponent(timezone);
	  else
	    url = url + "&string=" + input + "&now=" + raw.value + "&format=" + encodeURIComponent(format) + "&timezone=" + encodeURIComponent(timezone);
    //alert(url);
	  var request = httpRequest("GET", url, null, changeDate);
	  function changeDate()
	  {
	    if(request.responseText != "INVALID") {
        //alert(request.responseText);
        var dates = request.responseText.split("\n");
	      obj.value = dates[1];
	      raw.value = dates[0];//request.responseText;
	      //obj.style.background = '';
	    } else {
	      obj.value = hint; //displayDate(raw.value, dateOnly);
	      //obj.style.background = '#ccc';
	    }
	    obj.readOnly = false;
	  }
	}
	
	function displayDate(time, dateOnly)
	{
	  //time = Number(time);
	  if(time=="INVALID")
	    return "Invalid";
    /*
	  var date = new Date();
	  date.setTime(time*1000);
	  //return date.toString();
	  var display="";
	  display += (date.getMonth()+1) + "/" + date.getDate() + "/" + date.getFullYear();
	  if(dateOnly)
	    return display;
	  display += " ";
	  var hours = date.getHours();
	  var ampm = hours >= 12 ? " pm" : " am";
	  hours = hours%12 == 0 ? "12" : hours%12;
	  var minutes = date.getMinutes() < 10 ? "0"+date.getMinutes() : date.getMinutes();
    display += hours + ":" + minutes + ampm;
    */
    
    if(dateOnly) {
      var date = time.split(" ");
      return date[0];
    }
	  return time;
	}
	
	function updateRoundAuto(sub, round, url) 
	{
		var y;
		var source = document.getElementById("round_date_"+sub+"_"+round);
		var list = document.getElementById("round_"+sub+"_"+round).getElementsByTagName("input");
		var len=list.length;
		for(x=0; x < len; x++) {
			if(list[x].className == "date") {
			  list[x].value = source.value;
			  list[x].onblur();
			}
		}
		source.value="";
	}
	
	function appendUrl(url)
	{
	  if(url.search(/\?/) == -1)
	    return url+"?";
	  else
	    return url+"&";
	}
	
	function getTimezones(obj, url, selected, target)
	{
	  var input = encodeURIComponent(obj.value);
	  var target = document.getElementById(target);
	  target.readOnly = true;
	  //alert(date.getTimezoneOffset());
	  url = appendUrl(url)+"country="+input+"&selected="+selected;
	  var request = httpRequest("GET", url, null, updateSelect);
	  function updateSelect()
	  {
	    target.innerHTML = request.responseText;
	    target.readOnly = false;
	  }
	}
	
	function updateSelectOptions(obj, url, target)
	{
	  var input = encodeURIComponent(obj.value);
	  var target = document.getElementById(target);
	  target.readOnly = true;
	  url = appendUrl(url)+"select_value="+encodeURIComponent(input);
	  var request = httpRequest("GET", url, null, updateSelect);
	  function updateSelect()
	  {
	  	/*
	    target.innerHTML = request.responseText;
	    */
  		target.selectedIndex = 0;
  		
  		//empty the select
  		var xMax = target.length;
  		
  		for(var x=0; x<xMax; x++)
  		{
  			target.remove(0);
			}
			
			//the number of elements
			var options = request.responseText.split("\n");
			
			//populate the target list again
			xMax = Math.floor(options.length/2);
			for(x=0; x<xMax; x++)
			{
				var option = document.createElement('option');
				option.text = options[x*2+1];
				option.value = options[x*2];
				try
				{
					target.add(option, null);
				}
				catch(ex)
				{
					target.add(option);
				}
			}
			
			target.selectedIndex=0;
	    target.readOnly = false;
	  }
	}
	
	function toggleTreeLinks(obj, node)
	{
		obj.blur();
		var treeLinks = document.getElementById("links-"+node);
		if(treeLinks == null)
			return;
		//get the "stem_tree_show" cookie
		//alert(document.cookie);
		var cookieVars = document.cookie.split("; ");
		var nodes = new Array();
		for(var x=0; x<cookieVars.length; x++) {
			var cvar = cookieVars[x].split("=");
			//alert(cvar[0]);
			if(cvar[0] == "stem_tree_show") {
				//alert("Found");
				if(cvar[1] != null)
					nodes = cvar[1].split(":");
				break;
			}
		}
		//alert(nodes);
		if(treeLinks.style.display == 'none') {
			treeLinks.style.display = '';
			obj.className = "tree-minus";
			//add the node to the array if it isn't there
			var found=false;
			for(var y=0; y<nodes.length; y++) {
				if(nodes[y] == node)
					found = true;
					
			}
			if(!found)
				nodes.push(node);
		} else {
			treeLinks.style.display = 'none';
			obj.className = "tree-plus";
			//remove node from the array
			for(var y=0; y<nodes.length; y++) {
				if(nodes[y] == node)
					nodes.splice(y, 1);
					
			}
		}
		//alert(nodes);
		//save the cookie
		var date = new Date();
		date.setTime(date.getTime()+(365*24*60*60*1000));
		document.cookie = 'stem_tree_show='+nodes.join(":")+'; expires='+date.toGMTString()+'; path=/';
		//alert(document.cookie);
	}
  
  function checkTableRow(tableid, index)
  {
    var table = document.getElementById(tableid);
    if(!table || !table.rows[index])
      return;
    var elements = table.rows[index].getElementsByTagName("input");
    var len=elements.length;
    var status=false;
    for(var x=0; x<len; x++) {
      if(elements[x].type == 'checkbox') {
        if(status == false && elements[x].checked == false) {
          //reset the counter and set status to true (-1 to start at the first element)
          x=-1;
          status=true;
        } else {
          elements[x].checked = status;
        }
      } //if checkbox
    } //for
  }
  
  function checkTableCol(tableid, index)
  {
    var table = document.getElementById(tableid);
    if(!table || !table.rows[0].cells[index])
      return;
    //var elements = table.rows[index].getElementsByTagName("input");
    var len=table.rows.length;
    var status=false;
    for(var x=1; x<len; x++) {
      var node = table.rows[x].cells[index].firstChild;
      if(node.type == 'checkbox') {
        if(status == false && node.checked == false) {
          //reset the counter and set status to true (0 to skip header)
          x=0;
          status=true;
        } else {
          node.checked = status;
        }
      } //if checkbox
    } //for
  }
  
  function setReplyParentid(id, label)
  {
    var obj = document.getElementById("reply_parentid");
    if(obj) {
      obj.value = id;
    }
    var box = document.getElementById("reply_box");
    box.style.display = '';
    var to = document.getElementById("reply_to");
    to.value = label;
    window.scrollTo(0, document.body.offsetHeight);
    return false;
  }
  
  function showTooltip(obj, dest, x, y)
  {
    var offset = findPos(obj);
    var dObj = document.getElementById(dest);
    dObj.style.top = (offset[1]+y) + 'px';
    dObj.style.left = (offset[0]+x) + 'px';
    dObj.style.display = 'block';
  }
  
  function hideTooltip(dest)
  {
    document.getElementById(dest).style.display = 'none';
  }
  
  function findPos(obj) 
  {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
      curleft = obj.offsetLeft
      curtop = obj.offsetTop
      while (obj = obj.offsetParent) {
        curleft += obj.offsetLeft
        curtop += obj.offsetTop
      }
    }
    return [curleft,curtop];
	}
  
  function stageOpponentsSingle(obj)
  {
  	//get the opponent count
  	var opponents = obj.options[obj.selectedIndex].value;
  	
  	//get the winners object
  	var winners = document.getElementById("winners");
  	winners.selectedIndex = 0;
  	
  	//empty the winners list
  	var xMax = winners.length;
  	
  	for(var x=0; x<xMax; x++)
  	{
  		winners.remove(0);
		}
		
		//populate the winners list again
		xMax = Math.floor(opponents/2);
		for(x=1; x<=xMax; x++)
		{
			if((opponents%x)==0)
			{
				var option = document.createElement('option');
				option.text = x;
				option.value = x;
				try
				{
					winners.add(option, null);
				}
				catch(ex)
				{
					winners.add(option);
				}
			}
		}
		
		winners.selectedIndex=0;
		winners.onchange();
	}
	
	function stageWinners(obj)
	{
		//get the number of winners and opponents
		var opponents = document.getElementById("opponents_single").options[document.getElementById("opponents_single").selectedIndex].value;
		var winners = obj.options[obj.selectedIndex].value;
		
		
		//figure out the multiplier
		var multiplier = opponents/winners;
		
		//alert("Opponents: "+opponents+" Winners:"+winners+" Multiplier:"+multiplier);
		
		//our xMax
		var xMax=0, x=0, val;
		
		//update the size select
		var size = document.getElementById("size_single");
		
		//clear the select
		xMax = size.length;
		for(x=0; x<xMax; x++)
			size.remove(0);
			
		//add the new options
		for(x=0; x<10; x++)
		{
			var option = document.createElement('option');
			option.text = opponents*Math.pow(multiplier, x);
			if(option.text > 1024)
				break;
			option.value = option.text;
			try { size.add(option, null); }
			catch(ex) { size.add(option); }
		}
		
		//update the limit object
		var limit = document.getElementById("limit");
		
		//clear the select
		xMax = limit.length;
		for(x=0; x<xMax; x++)
			limit.remove(0);
			
		//add the new options
		for(x=0; x<size.length; x++)
		{
			var option = document.createElement('option');
			option.text = winners*Math.pow(multiplier, x);
			option.value = x;
			try { limit.add(option, null); }
			catch(ex) { limit.add(option); }
		}
	}
	
  function stageOpponentsDouble(obj)
  {
  	//get the opponent count
  	var opponents = obj.options[obj.selectedIndex].value;		
		
		//figure out the multiplier
		var multiplier = 2;
		
		//alert("Opponents: "+opponents+" Winners:"+winners+" Multiplier:"+multiplier);
		
		//our xMax
		var xMax=0, x=0, val;
		
		//update the size select
		var size = document.getElementById("size_double");
		
		//clear the select
		xMax = size.length;
		for(x=0; x<xMax; x++)
			size.remove(0);
			
		//add the new options
		for(x=1; x<10; x++)
		{
			var option = document.createElement('option');
			option.text = opponents*Math.pow(multiplier, x);
			if(option.text > 1024)
				break;
			option.value = option.text;
			try { size.add(option, null); }
			catch(ex) { size.add(option); }
		}
	}