/*
Floating Menu script-  Roy Whittle (http://www.javascript-fx.com/)
Script featured on/available at http://www.dynamicdrive.com/
This notice must stay intact for use
*/

function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return URLDecode(pair[1]);
    }
  } 
}

function URLDecode( text )
{
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var encoded = text;
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while
   return plaintext;
};


var verticalpos="frombottom"

function JSFX_FloatTopDiv()
{
	var startX = 3,
	startY = 150;
	var ns = (navigator.appName.indexOf("Netscape") != -1);
	var d = document;
	function ml(id)
	{
		var el=d.getElementById?d.getElementById(id):d.all?d.all[id]:d.layers[id];
		
		if(d.layers)el.style=el;
		el.sP=function(x,y){this.style.left=x;this.style.top=y;};
		el.x = startX;
		if (verticalpos=="fromtop")
			el.y = startY;
		else{
			el.y = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
			el.y -= startY;
		}
		return el;
	}
	
	window.stayTopLeft=function()
	{
		if (verticalpos=="fromtop"){
			var pY = ns ? pageYOffset : document.body.scrollTop;
			ftlObj.y += (pY + startY - ftlObj.y)/8;
		}else{
			var pY = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
			ftlObj.y += (pY - startY - ftlObj.y)/8;
		}
		ftlObj.sP(ftlObj.x, ftlObj.y);
		setTimeout("stayTopLeft()", 10);
	}
	
	ftlObj = ml("flashidid");
	stayTopLeft();
	
}
JSFX_FloatTopDiv();
			
 /* I rewrote this to call a function that associates the maxlength
  behavior now
 */
 function textareasInit(){
  var objs = document.getElementsByTagName("textarea");
  for (oi=0;oi < objs.length; oi++){
   thisObj = objs[oi];
   addMaxLength(thisObj);
  }
  
 }
 /* this adds the maxlength behavior to an object */
 function addMaxLength(thisObj){
  if (thisObj.getAttribute('maxlength')){
   thisObj.onkeyup = forceMaxLength;
   thisObj.onchange = forceMaxLength;
   thisObj.onblue = forceMaxLength;
   thisObj.onfocus = forceMaxLength;
   /* now I want to add a little tooltip span after the textarea that lets the user know how much of the textarea is in use */
   insertSpan(thisObj,thisObj.value.length + '/' + thisObj.getAttribute('maxlength') + ' of maximum length used');
  }
 }

 /* fairly generic function for inserting a span after a given object */
 function insertSpan(obj,msg,cssClass){
  var newSpan = document.createElement('SPAN');
  newSpan.innerHTML = msg;
  obj = obj.nextSibling;
  if(cssClass) //lets the cssClass parameter be optional
   newSpan.className = cssClass;

  obj.parentNode.insertBefore(newSpan,obj);
 }

 /* here we actually enforce the maxlength property of the textarea */
 function forceMaxLength(){
  var maxLength = parseInt(this.getAttribute('maxlength'));
  if(this.value.length > maxLength){
   this.value = this.value.substring(0,maxLength);
  }

  /* the only real change, now we update the tooltip span to show the correct amount of usage */
  this.nextSibling.innerHTML = this.value.length + '/' + maxLength + ' of maximum length used';
 }

 /* FUNCTIONS FOR GETTING IT ALL TO WORK */
 function addEvent(elm, evType, fn, useCapture)
 // addEvent and removeEvent
 // cross-browser event handling for IE5+,  NS6 and Mozilla
 // By Scott Andrew
 {
   if (elm.addEventListener){
  elm.addEventListener(evType, fn, useCapture);
  return true;
   } else if (elm.attachEvent){
  var r = elm.attachEvent("on"+evType, fn);
  return r;
   } else {
  alert("Handler could not be removed");
   }
 } 

 addEvent(window, "load", textareasInit);
 
 var xywindow;
	
function savePop(URL) {
	var winleft = (screen.width - 300) / 2;
	var winUp = (screen.height - 125) / 2;
	id = "descsaver";
	eval(" xywindow = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=300,height=125,left = "+winleft+",top = "+winUp+"');");
}

function xreplace(checkMe,toberep,repwith){
	var temp = checkMe;
	var i = temp.indexOf(toberep);
	while(i > -1){
		temp = temp.replace(toberep, repwith);
		i = temp.indexOf(toberep);
	}
	return temp;
}

var oldtxt = "";
var oldlinks = "";
function descedit(show) {
	var divObj = document.getElementById("desc");
	var linkObj = document.getElementById("gdesc_links");
	
	if (typeof(show) == "object") {
		txtObj = document.getElementById("desct");
		txtObj.value = trim(txtObj.value);
		
		if (txtObj.value == "") {
			alert("Description can not be left empty.");
			txtObj.focus();
			return;
		}
		
		savePop("index.php?MODE=clubs&EVENT=save_desc&GID="+getQueryVariable("GID")+"&DESC="+escape(txtObj.value));
		
	} else if (show == "saved") {	
	
		linkObj.innerHTML = "<a href=\"javascript:descedit(true)\">Edit</a>";
		divObj.innerHTML = saved(trim(txtObj.value));
		
	} else if (show) {
		
		oldtxt = trim(divObj.innerHTML);
		txttxt = oldtxt;
		txttxt = txttxt.replace(/\r\n|\n/g," ");
		linkObj.innerHTML = "";
		divObj.innerHTML = "<form><textarea class=post maxlength=1000 id='desct' style='width:100%;height:100px'></textarea><div><input type=button onclick='descedit(this.form);' value='Save'>&nbsp;&nbsp;<input type=button value='Cancel' onclick='descedit(false);'></div></form>";
		txtObj = document.getElementById("desct");
		addMaxLength(txtObj);
		txtObj.value = symbolsToEntities(trim(txttxt));
		txtObj.focus();
		
	} else {
	
		linkObj.innerHTML = "<a href=\"javascript:descedit(true)\">Edit</a>";
		divObj.innerHTML = oldtxt;
		
	}
}

function addpreHTML(html) {
	var preObj = document.getElementById("comments_pre");
	preObj.innerHTML = html+preObj.innerHTML;
}

function commDelit(commid) {
	var divObj = document.getElementById("comment_id"+commid);
	if (divObj) {
		if ( confirm("Are you sure you want to delete this user's comment?\n\nClick \"OK\" to delete.") ) {
			savePop("index.php?MODE=profile&EVENT=del_comment&COMMID="+commid);	
		}
	}
}

function remComm(commid) {
	divObj = document.getElementById("comment_id"+commid);
	if (divObj) {
		divObj.innerHTML = "";
		divObj.style.position = "absolute";
	}
}

function addcomment(show) {
	divObj = document.getElementById("comment_space");
	linkObj = document.getElementById("comment_links");
	preObj = document.getElementById("comments_pre");
	
	if (typeof(show) == "object") {
		txtObj = document.getElementById("comment_area");
		txtObj.value = trim(txtObj.value);
		
		if (txtObj.value == "") {
			alert("Your comment can not be left empty.");
			txtObj.focus();
			return;
		}
		
		savePop("index.php?MODE=profile&EVENT=save_comment&ID="+getQueryVariable("ID")+"&COMMENT="+escape(txtObj.value));
		
	} else if (show == "saved") {	
	
		linkObj.innerHTML = oldlinks;
		divObj.innerHTML = "";
		preObj.style.display = "block";
		
	} else if (show) {
	
		preObj.style.display = "none";
		oldtxt = trim(divObj.innerHTML);
		txttxt = oldtxt;
		txttxt = txttxt.replace(/\r\n|\n/g," ");
		oldlinks = linkObj.innerHTML;
		linkObj.innerHTML = "";
		divObj.innerHTML = "<form><textarea class=post maxlength=1000 id='comment_area' style='width:100%;height:100px'></textarea><div><input type=button onclick='addcomment(this.form);' value='Save'>&nbsp;&nbsp;<input type=button value='Cancel' onclick='addcomment(false);'></div></form>";
		txtObj = document.getElementById("comment_area");
		addMaxLength(txtObj);
		txtObj.value = symbolsToEntities(trim(txttxt));
		txtObj.focus();
		
	} else {
	
		divObj.innerHTML = oldtxt;
		preObj.style.display = "block";
		linkObj.innerHTML = oldlinks;
	}
}

function trim(str) {
	return str.replace(/^(\s+)?(.*\S)(\s+)?$/, '$2');
}

function symbolsToEntities(str) {
	str = xreplace(str,"<br>","\n");
	str = xreplace(str,"&#39;","'");
	str = xreplace(str,"&quot;","\"");
	str = xreplace(str,"&#62;",">");
	str = xreplace(str,"&#60;","<");
	str = xreplace(str,"&gt;",">");
	str = xreplace(str,"&lt;","<");
	str = xreplace(str,"&amp;","&");
	return str;
}


function saved(str) {
	str = str.replace("&","&amp;");
	str = str.replace("<","&#60;");
	str = str.replace(">","&#62;");
	str = str.replace("\"","&quot;");
	str = str.replace("'","&#39;");
	str = xreplace(str,"\n\n\n","\n\n");
	str = str.replace(/\r\n|\n/g,"<br>");
	str = xreplace(str,"<br><br><br>","<br><br>");
	return str;
}
/*
Floating Menu script-  Roy Whittle (http://www.javascript-fx.com/)
Script featured on/available at http://www.dynamicdrive.com/
This notice must stay intact for use
*/

function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return URLDecode(pair[1]);
    }
  } 
}

function URLDecode( text )
{
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var encoded = text;
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while
   return plaintext;
};


var verticalpos="frombottom"

function JSFX_FloatTopDiv()
{
	var startX = 3,
	startY = 150;
	var ns = (navigator.appName.indexOf("Netscape") != -1);
	var d = document;
	function ml(id)
	{
		var el=d.getElementById?d.getElementById(id):d.all?d.all[id]:d.layers[id];
		
		if(d.layers)el.style=el;
		el.sP=function(x,y){this.style.left=x;this.style.top=y;};
		el.x = startX;
		if (verticalpos=="fromtop")
			el.y = startY;
		else{
			el.y = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
			el.y -= startY;
		}
		return el;
	}
	
	window.stayTopLeft=function()
	{
		if (verticalpos=="fromtop"){
			var pY = ns ? pageYOffset : document.body.scrollTop;
			ftlObj.y += (pY + startY - ftlObj.y)/8;
		}else{
			var pY = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
			ftlObj.y += (pY - startY - ftlObj.y)/8;
		}
		ftlObj.sP(ftlObj.x, ftlObj.y);
		setTimeout("stayTopLeft()", 10);
	}
	
	ftlObj = ml("flashidid");
	stayTopLeft();
	
}
JSFX_FloatTopDiv();
			
 /* I rewrote this to call a function that associates the maxlength
  behavior now
 */
 function textareasInit(){
  var objs = document.getElementsByTagName("textarea");
  for (oi=0;oi < objs.length; oi++){
   thisObj = objs[oi];
   addMaxLength(thisObj);
  }
  
 }
 /* this adds the maxlength behavior to an object */
 function addMaxLength(thisObj){
  if (thisObj.getAttribute('maxlength')){
   thisObj.onkeyup = forceMaxLength;
   thisObj.onchange = forceMaxLength;
   thisObj.onblue = forceMaxLength;
   thisObj.onfocus = forceMaxLength;
   /* now I want to add a little tooltip span after the textarea that lets the user know how much of the textarea is in use */
   insertSpan(thisObj,thisObj.value.length + '/' + thisObj.getAttribute('maxlength') + ' of maximum length used');
  }
 }

 /* fairly generic function for inserting a span after a given object */
 function insertSpan(obj,msg,cssClass){
  var newSpan = document.createElement('SPAN');
  newSpan.innerHTML = msg;
  obj = obj.nextSibling;
  if(cssClass) //lets the cssClass parameter be optional
   newSpan.className = cssClass;

  obj.parentNode.insertBefore(newSpan,obj);
 }

 /* here we actually enforce the maxlength property of the textarea */
 function forceMaxLength(){
  var maxLength = parseInt(this.getAttribute('maxlength'));
  if(this.value.length > maxLength){
   this.value = this.value.substring(0,maxLength);
  }

  /* the only real change, now we update the tooltip span to show the correct amount of usage */
  this.nextSibling.innerHTML = this.value.length + '/' + maxLength + ' of maximum length used';
 }

 /* FUNCTIONS FOR GETTING IT ALL TO WORK */
 function addEvent(elm, evType, fn, useCapture)
 // addEvent and removeEvent
 // cross-browser event handling for IE5+,  NS6 and Mozilla
 // By Scott Andrew
 {
   if (elm.addEventListener){
  elm.addEventListener(evType, fn, useCapture);
  return true;
   } else if (elm.attachEvent){
  var r = elm.attachEvent("on"+evType, fn);
  return r;
   } else {
  alert("Handler could not be removed");
   }
 } 

 addEvent(window, "load", textareasInit);
 
 var xywindow;
	
function savePop(URL) {
	var winleft = (screen.width - 300) / 2;
	var winUp = (screen.height - 125) / 2;
	id = "descsaver";
	eval(" xywindow = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=300,height=125,left = "+winleft+",top = "+winUp+"');");
}

function xreplace(checkMe,toberep,repwith){
	var temp = checkMe;
	var i = temp.indexOf(toberep);
	while(i > -1){
		temp = temp.replace(toberep, repwith);
		i = temp.indexOf(toberep);
	}
	return temp;
}

var oldtxt = "";
var oldlinks = "";
function descedit(show) {
	var divObj = document.getElementById("desc");
	var linkObj = document.getElementById("gdesc_links");
	
	if (typeof(show) == "object") {
		txtObj = document.getElementById("desct");
		txtObj.value = trim(txtObj.value);
		
		if (txtObj.value == "") {
			alert("Description can not be left empty.");
			txtObj.focus();
			return;
		}
		
		savePop("index.php?MODE=clubs&EVENT=save_desc&GID="+getQueryVariable("GID")+"&DESC="+escape(txtObj.value));
		
	} else if (show == "saved") {	
	
		linkObj.innerHTML = "<a href=\"javascript:descedit(true)\">Edit</a>";
		divObj.innerHTML = saved(trim(txtObj.value));
		
	} else if (show) {
		
		oldtxt = trim(divObj.innerHTML);
		txttxt = oldtxt;
		txttxt = txttxt.replace(/\r\n|\n/g," ");
		linkObj.innerHTML = "";
		divObj.innerHTML = "<form><textarea class=post maxlength=1000 id='desct' style='width:100%;height:100px'></textarea><div><input type=button onclick='descedit(this.form);' value='Save'>&nbsp;&nbsp;<input type=button value='Cancel' onclick='descedit(false);'></div></form>";
		txtObj = document.getElementById("desct");
		addMaxLength(txtObj);
		txtObj.value = symbolsToEntities(trim(txttxt));
		txtObj.focus();
		
	} else {
	
		linkObj.innerHTML = "<a href=\"javascript:descedit(true)\">Edit</a>";
		divObj.innerHTML = oldtxt;
		
	}
}

function addpreHTML(html) {
	var preObj = document.getElementById("comments_pre");
	preObj.innerHTML = html+preObj.innerHTML;
}

function commDelit(commid) {
	var divObj = document.getElementById("comment_id"+commid);
	if (divObj) {
		if ( confirm("Are you sure you want to delete this user's comment?\n\nClick \"OK\" to delete.") ) {
			savePop("index.php?MODE=profile&EVENT=del_comment&COMMID="+commid);	
		}
	}
}

function remComm(commid) {
	divObj = document.getElementById("comment_id"+commid);
	if (divObj) {
		divObj.innerHTML = "";
		divObj.style.position = "absolute";
	}
}

function addcomment(show) {
	divObj = document.getElementById("comment_space");
	linkObj = document.getElementById("comment_links");
	preObj = document.getElementById("comments_pre");
	
	if (typeof(show) == "object") {
		txtObj = document.getElementById("comment_area");
		txtObj.value = trim(txtObj.value);
		
		if (txtObj.value == "") {
			alert("Your comment can not be left empty.");
			txtObj.focus();
			return;
		}
		
		savePop("index.php?MODE=profile&EVENT=save_comment&ID="+getQueryVariable("ID")+"&COMMENT="+escape(txtObj.value));
		
	} else if (show == "saved") {	
	
		linkObj.innerHTML = oldlinks;
		divObj.innerHTML = "";
		preObj.style.display = "block";
		
	} else if (show) {
	
		preObj.style.display = "none";
		oldtxt = trim(divObj.innerHTML);
		txttxt = oldtxt;
		txttxt = txttxt.replace(/\r\n|\n/g," ");
		oldlinks = linkObj.innerHTML;
		linkObj.innerHTML = "";
		divObj.innerHTML = "<form><textarea class=post maxlength=1000 id='comment_area' style='width:100%;height:100px'></textarea><div><input type=button onclick='addcomment(this.form);' value='Save'>&nbsp;&nbsp;<input type=button value='Cancel' onclick='addcomment(false);'></div></form>";
		txtObj = document.getElementById("comment_area");
		addMaxLength(txtObj);
		txtObj.value = symbolsToEntities(trim(txttxt));
		txtObj.focus();
		
	} else {
	
		divObj.innerHTML = oldtxt;
		preObj.style.display = "block";
		linkObj.innerHTML = oldlinks;
	}
}

function trim(str) {
	return str.replace(/^(\s+)?(.*\S)(\s+)?$/, '$2');
}

function symbolsToEntities(str) {
	str = xreplace(str,"<br>","\n");
	str = xreplace(str,"&#39;","'");
	str = xreplace(str,"&quot;","\"");
	str = xreplace(str,"&#62;",">");
	str = xreplace(str,"&#60;","<");
	str = xreplace(str,"&gt;",">");
	str = xreplace(str,"&lt;","<");
	str = xreplace(str,"&amp;","&");
	return str;
}


function saved(str) {
	str = str.replace("&","&amp;");
	str = str.replace("<","&#60;");
	str = str.replace(">","&#62;");
	str = str.replace("\"","&quot;");
	str = str.replace("'","&#39;");
	str = xreplace(str,"\n\n\n","\n\n");
	str = str.replace(/\r\n|\n/g,"<br>");
	str = xreplace(str,"<br><br><br>","<br><br>");
	return str;
}
