function getkey(e)
{
if (window.event)
   return window.event.keyCode;
else if (e)
   return e.which;
else
   return null;
}

function goodchars(e, goods)
{
var key, keychar;
key = getkey(e);
if (key == null) return true;

// get character
keychar = String.fromCharCode(key);
keychar = keychar.toLowerCase();
goods = goods.toLowerCase();

// check goodkeys
if (goods.indexOf(keychar) != -1)
	return true;

// control keys
if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;

// else return false
return false;
}

function makeText(id, text) {
  showBox = document.getElementById(id);
  showBox.innerHTML = text;
  showBox = null;
}

function addImageForm() {
  showBox = document.getElementById("ZFILEA");
  showBox.innerHTML = "<INPUT NAME=image1 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image2 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image3 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image4 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image5 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image6 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image7 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image8 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image9 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image10 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image11 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image12 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image13 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image14 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image15 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image16 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image17 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image18 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image19 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image20 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image21 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image22 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image23 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image24 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image25 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image26 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image27 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image28 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image29 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image30 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image31 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image32 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image33 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image34 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image35 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image36 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image37 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image38 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image39 accept=\"image/*\" TYPE=\"file\"> <INPUT NAME=image40 accept=\"image/*\" TYPE=\"file\"> ";

  // Make sure that Javascript cleans up...
  showBox = null;
}


function showPP(y) {
   var e = document.getElementById('PREVPOST');
   if (e == null) return; 
   e.style.display = "block";
   for(var i=0; i<=y; i++)
     unshowNP(i);
}
function unshowPP() {
   var e = document.getElementById('PREVPOST');
   if (e == null) return; 
   e.style.display = "none";
}
function showNP(x, y) {
  unshowPP(); 
  for(var i=0; i<=y; i++)
    if (i!=x)
      unshowNP(i); 
    else
      {
	var e = document.getElementById('NEXTPOST'+x);
	e.style.display = "block";
      }
}
function unshowNP(x) {
  var e = document.getElementById('NEXTPOST'+x);
  e.style.display = "none";
}


function showName(x) {
   var element = document.getElementById(x);
   element.style.display = "block";
}

function unshowName(x) {
   var element = document.getElementById(x);
   element.style.display = "none"; 
}

function setDisplay(x) {
   var element = document.getElementById('fs');
   var element2 = document.getElementById('fs2');
   if ((x=='1') || (x=='11') || (x=='3') || (x=='4') )
     { element.style.display = "block"; 
       element2.style.display = "block"; }
   else
     { element.style.display = "none"; 
       element2.style.display = "none"; }
}

function setDisplayP(x,y) {
   var element = document.getElementById('fsp'+y);
   if ((x=='1') || (x=='3') || (x=='4') )
     { element.style.display = "block"; }
   else
     { element.style.display = "none"; }
}
/*
var req;
function loadXMLDoc(url) {
  var req = new XMLHttpRequest();
  req.onreadystatechange = processReqChange;
  req.open("GET", url, true);
  req.send("");
}
*/
function getHTTPObject() { 
  if (typeof XMLHttpRequest != 'undefined') 
    { return new XMLHttpRequest(); } 
  try { return new ActiveXObject("Msxml2.XMLHTTP"); } 
  catch (e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } 
    catch (e) {} } return false; 
}

/*
function setLV(membernr) {
  var http = getHTTPObject();
  http.open("GET", "add_visit.do?mnr="+membernr, true);
  http.onreadystatechange = function() { 
    if (http.readyState == 4) { 
      var el = document.getElementById('LASTVISITORS');
      el.innerHTML=http.responseText; 
      el = null;
    } 
  } 
  http.send(null);
  return true; 
}
*/
//Not used: 
function encode_utf8( s )
{
  return unescape( encodeURIComponent( s ) );
}
function decode_utf8( s )
{
  return decodeURIComponent( escape( s ) );
}

//url ; unameavail.do?uname=
//myvar ; this.value  (The indata to be used)
//elementid ; UNAMEOKP (Where the result should come)
function ajaxfunc(url, myvar,elementid) {
  var http = getHTTPObject();
  http.open("GET", url+encodeURIComponent(myvar), true);
  http.onreadystatechange = function() { 
    if (http.readyState == 4) { 
      var el = document.getElementById(elementid);
      el.innerHTML=http.responseText; 
      // Make sure that Javascript cleans up...
      el = null;
    } 
  } 
  http.send(null);
  return true; 
}

function ajaxfunc2(url, myvar,elementid) {
  var http = getHTTPObject();
  http.open("GET", url+encodeURIComponent(myvar), true);
  http.onreadystatechange = function() { 
    if (http.readyState == 4) { 
      var el = document.getElementById(elementid);
      el.value=http.responseText; 
      // Make sure that Javascript cleans up...
      el = null;
    } 
  } 
  http.send(null);
  return true; 
}

//FIXME: Use texts[]! 

//String returners: m: membernr, fid: ID to the GBMESSAGEREPLYBOX
function gbform(member,mnr,uname, fid, commentto) {
 var el = document.getElementById(fid);
 el.innerHTML=
"<DIV CLASS=MESSAGEFORM><a name=\"MESSAGEFORM\"></a><div id=\""+fid+"x\"><table><tr><td><a onClick=\"showImageBox(\'"+fid+"x\', \'"+fid+"y\');\"> <SPAN CLASS=\"BALTBUTTONTEXT2\">&nbsp;Use&nbsp;emotions&nbsp;</SPAN></a></td><td><a href=\"wiki.html?name=my%20emotions%202\" target=\"_blank\"> <SPAN CLASS=\"BALTBUTTONTEXT2\">&nbsp;Your&nbsp;own&nbsp;emotions&nbsp;</SPAN></a></td></tr></table></div><FORM method=\"post\" action=\"gbsend_message.do\"><p>Comment on this text in <a href=\"member.html?membernr="+uname+"\">"+uname+"</a>\'s guestbook.<br><INPUT TYPE=\"hidden\" name=\"commentto\" VALUE=\""+commentto+"\"><div id=\""+fid+"ypv\" ></div><a onClick=\"var ra=document.getElementById('"+fid+"y');ajaxfunc(\'htmlify.do?s=\', ra.value, \'"+fid+"ypv\');ra.focus();\"><span CLASS=\"BALTBUTTONTEXT2\">&nbsp;Preview&nbsp;</span> </a><br><textarea id=\""+fid+"y\" NAME=newmessage onFocus=\"this.rows=10;\" rows=2 cols=80></textarea><p><INPUT TYPE=\"hidden\" name=\"to\" VALUE=\""+mnr+"\"><DIV CLASS=MESSAGEFORMBUTTON><table><tr><td><INPUT TYPE=\"submit\" CLASS=\"BALTBUTTON1\" value=\"Submit\"></td><td><INPUT TYPE=\"submit\" CLASS=\"BALTBUTTON1\" value=\"Send as a private message\" name=\"private\"></td><td><INPUT TYPE=\"submit\" CLASS=\"BALTBUTTON1\" value=\"Place the comment in your diary\" name=\"diarycomment\"></td></tr></table></DIV></FORM> </DIV></DIV>";
}

function gbformp(member,mnr,uname, fid, commentto) {
 var el = document.getElementById(fid);
 el.innerHTML=
"<DIV CLASS=MESSAGEFORM><a name=\"MESSAGEFORM\"></a><div id=\""+fid+"x\"><table><tr><td><a onClick=\"showImageBox(\'"+fid+"x\', \'"+fid+"y\');\"> <SPAN CLASS=\"BALTBUTTONTEXT2\">&nbsp;Use&nbsp;emotions&nbsp;</SPAN></a></td><td><a href=\"wiki.html?name=my%20emotions%202\" target=\"_blank\"> <SPAN CLASS=\"BALTBUTTONTEXT2\">&nbsp;Your&nbsp;own&nbsp;emotions&nbsp;</SPAN></a></td></tr></table></div><FORM method=\"post\" action=\"gbsend_message.do\"><p>Comment on this text in <a href=\"member.html?membernr="+uname+"\">"+uname+"</a>\'s private messagebox.<br><INPUT TYPE=\"hidden\" name=\"commentto\" VALUE=\""+commentto+"\"><div id=\""+fid+"ypv\" ></div><a onClick=\"var ra=document.getElementById('"+fid+"y');ajaxfunc(\'htmlify.do?s=\', ra.value, \'"+fid+"ypv\');ra.focus();\"><span CLASS=\"BALTBUTTONTEXT2\">&nbsp;Preview&nbsp;</span> </a><br><textarea id=\""+fid+"y\" NAME=newmessage onFocus=\"this.rows=10;\" rows=2 cols=80></textarea><p><INPUT TYPE=\"hidden\" name=\"to\" VALUE=\""+mnr+"\"><DIV CLASS=MESSAGEFORMBUTTON><INPUT TYPE=\"submit\" CLASS=\"BALTBUTTON1\" value=\"Send as a private message\" name=\"private\"></DIV></FORM> </DIV></DIV>";

}
function getEvent(e) {
  if(window.event)
    return window.event;
  else
    return e;
}

function getEventSource(e) {
  var target;
  e = getEvent(e);
  target = (e.target ? e.target : e.srcElement);
  return (target.nodeType == 3 ? target.parentNode : target);
}

var cs=0; 
function fkeys(b) {
  var key, keychar;
  // Ignore if something has focus 
  //if (w!=null) return true; 
  var source = getEventSource(b);
  if(source && (source.tagName == "INPUT" || 
		source.tagName == "SELECT" || source.tagName == "TEXTAREA"))
    return true;

  if (b.ctrlKey || b.altKey) return true; 
  key = getkey(b);
  if (key == null) return true;
  // get character
  keychar = String.fromCharCode(key);
  keychar = keychar.toLowerCase();
  
  if (keychar == "n") {
    var e = document.getElementById('NP');
    var e2 = document.getElementById('NP2');
    if (e2 != null) 
      e2.submit();
    else if (e != null) 
      e.submit();
    return true; 
  } 
  else if (keychar == "s") {
    var e = document.getElementById('NTHREAD');
    if (e != null) 
      e.focus();
    return true; 
  }
  else if (keychar == "e") {
    var e = document.getElementById('EPOSTING');
    if (e != null) 
      e.focus();
    return true; 
  }
  else if (keychar == "c") {
    var e = document.getElementById('CPOSTING');
    if (e != null) 
      e.focus();
    return true; 
  }
  else if (keychar == "p") {
    var e = document.getElementById('CoPo');
    if (e != null) 
      window.location=e.href;
    return true; 
  } 
  else if (keychar == "r") {
    var e = document.getElementById('FoRep');
    if (e != null) 
      window.location=e.href;
    return true; 
  } 
  else if (keychar == "m") {
    unshowPP(); 
    for(var i=0; 1; i++) {
      var e = document.getElementById('NEXTPOST'+i);
      if (e==null) break; 
      unshowNP(i); 
    }
    var e = document.getElementById('NEXTPOST'+(cs++));
    if (e==null) {
      cs=0; 
      e=document.getElementById('NEXTPOST'+(cs++));
    }
    if (e==null) return true; 
    e.style.display = "block";
    return true;
  }
  else if (keychar == "h") {
    var e = document.getElementById('FHELP');
    e.innerHTML="<i>Help on short-cuts:</i><br><b>H</b> - Turn this window on and off<br><b>N</b> - Next posting (anywhere)<br><b>P</b> - Previous (commented) posting in thread<br><b>C</b> - Comment on this (focus to comment textarea)<br><b>S</b> - Focus to <i>Start a thread</i><br><b>E</b> - Edit your posting<br><b>M</b> - Mingle in the comments<br><b>R</b> - Go to the first of your Forum replies."; 
    if (e.style.display != "block")
      e.style.display="block"; 
    else
      e.style.display="none";
  }

  return true; 
}
var myPairs = new Array();
// Make the quick element reference
function $(id) { return document.getElementById(id); }

function showImageBox(emotionsImgBox, myTextArea) {
  myPairs[emotionsImgBox] = myTextArea;
  // Make the image box visible
  showBox = $(emotionsImgBox);
  showBox.innerHTML = 
    "<img onClick=\"assignImage('&lt;img:stuff/medieval.gif>', this)\" src=\"stuff/medieval.gif\" alt=\"&lt;img:stuff/medieval.gif&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/torch.gif>', this)\" src=\"stuff/torch.gif\" alt=\"&lt;img:stuff/torch.gif&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/bow_arrow.gif>', this)\" src=\"stuff/bow_arrow.gif\" alt=\"&lt;img:stuff/bow_arrow.gif&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/axeman.gif>', this)\" src=\"stuff/axeman.gif\" alt=\"&lt;img:stuff/axeman.gif&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/2handed.gif>', this)\" src=\"stuff/2handed.gif\" alt=\"&lt;img:stuff/2handed.gif&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/happyswordsman.gif>', this)\" src=\"stuff/happyswordsman.gif\" alt=\"&lt;img:stuff/happyswordsman.gif&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/calisword.gif>', this)\" src=\"stuff/calisword.gif\" alt=\"&lt;img:stuff/calisword.gif&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/castle.png>', this)\" src=\"stuff/castle.png\" alt=\"&lt;img:stuff/castle.png&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/flag_happy.png>', this)\" src=\"stuff/flag_happy.png\" alt=\"&lt;img:stuff/flag_happy.png&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/happymedieval.png>', this)\" src=\"stuff/happymedieval.png\" alt=\"&lt;img:stuff/happymedieval.png&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/angrymedieval.png>', this)\" src=\"stuff/angrymedieval.png\" alt=\"&lt;img:stuff/angrymedieval.png&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/inlovemedieval.png>', this)\" src=\"stuff/inlovemedieval.png\" alt=\"&lt;img:stuff/inlovemedieval.png&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/sadmedieval.png>', this)\" src=\"stuff/sadmedieval.png\" alt=\"&lt;img:stuff/sadmedieval.png&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/surprisedmedieval.png>', this)\" src=\"stuff/surprisedmedieval.png\" alt=\"&lt;img:stuff/surprisedmedieval.png&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/joustmedieval.png>', this)\" src=\"stuff/joustmedieval.png\" alt=\"&lt;img:stuff/joustmedieval.png&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/sillymedieval.png>', this)\" src=\"stuff/sillymedieval.png\" alt=\"&lt;img:stuff/sillymedieval.png&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/happy2medieval.png>', this)\" src=\"stuff/happy2medieval.png\" alt=\"&lt;img:stuff/happy2medieval.png&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/ack.jpg>', this)\" src=\"stuff/ack.jpg\" alt=\"&lt;img:stuff/ack.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/bashful.jpg>', this)\" src=\"stuff/bashful.jpg\" alt=\"&lt;img:stuff/bashful.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/deadmon.jpg>', this)\" src=\"stuff/deadmon.jpg\" alt=\"&lt;img:stuff/deadmon.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/depressed.jpg>', this)\" src=\"stuff/depressed.jpg\" alt=\"&lt;img:stuff/depressed.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/ducktape.jpg>', this)\" src=\"stuff/ducktape.jpg\" alt=\"&lt;img:stuff/ducktape.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/hilarious.jpg>', this)\" src=\"stuff/hilarious.jpg\" alt=\"&lt;img:stuff/hilarious.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/invis.jpg>', this)\" src=\"stuff/invis.jpg\" alt=\"&lt;img:stuff/invis.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/lovey1.jpg>', this)\" src=\"stuff/lovey1.jpg\" alt=\"&lt;img:stuff/lovey1.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/lovey2.jpg>', this)\" src=\"stuff/lovey2.jpg\" alt=\"&lt;img:stuff/lovey2.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/rollseyes.jpg>', this)\" src=\"stuff/rollseyes.jpg\" alt=\"&lt;img:stuff/rollseyes.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/sad.jpg>', this)\" src=\"stuff/sad.jpg\" alt=\"&lt;img:stuff/sad.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/sick.jpg>', this)\" src=\"stuff/sick.jpg\" alt=\"&lt;img:stuff/sick.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/skeerd.jpg>', this)\" src=\"stuff/skeerd.jpg\" alt=\"&lt;img:stuff/skeerd.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/sleepn.jpg>', this)\" src=\"stuff/sleepn.jpg\" alt=\"&lt;img:stuff/sleepn.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/sly.jpg>', this)\" src=\"stuff/sly.jpg\" alt=\"&lt;img:stuff/sly.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/smile.jpg>', this)\" src=\"stuff/smile.jpg\" alt=\"&lt;img:stuff/smile.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/stress.jpg>', this)\" src=\"stuff/stress.jpg\" alt=\"&lt;img:stuff/stress.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/tired.jpg>', this)\" src=\"stuff/tired.jpg\" alt=\"&lt;img:stuff/tired.jpg&gt;\"> <img onClick=\"assignImage('&lt;img:stuff/whoop.jpg>', this)\" src=\"stuff/whoop.jpg\" alt=\"&lt;img:stuff/whoop.jpg&gt;\">";
  // Make sure that Javascript cleans up...
  showBox = null;
}

function assignImage(imgSrc, source) {
  var addBox = $(myPairs[source.parentNode.id]);
  addBox.value += imgSrc;
  addBox.focus();
}
