function button_on(o) {
  o.style.backgroundImage = 'url("gfx/topbarbg_blue2.gif")';
  o.style.color = "#000000";
}
function button_off(o) {
  o.style.color = "#454545";
  o.style.background = '';
}

function ql_focus() {
  // focus the quick-login form (called first hit of session)
  f = document.forms["qlogin"];
  if (!f) return;
  if (f["uname"].value != "") f["pword"].focus();
  else f["uname"].focus();
}

menuon = false;
curmnu = null;
hm = null;

mnupos = new Array(198, 312);

mnupgs = new Array("snippet", "style", "settings", "users", "messages");

//"useradd", "users_add", "Create users", "access", "keys", "Access control"

mnucont = new Array();
mnucont[0] = new Array("snippet", "123", "XHTML Code", "account", "account", "Quick Link");
mnucont[1] = new Array(
	"layout", 	"-154px -0px", 	"Layout options", 
	"styledefs", 	"-132px -0px", 	"Style presets", 
	"style", 	"-0px -0px", 	"Colours &amp; fonts", 
	"styleadv", 	"-110px -0px", 	"Edit CSS"
	);
mnucont[2] = new Array(
	"settings", 	"-0px -154px", 	"Posting options", 
	"dateopt", 	"-176px -0px", 	"Date options", 
	"smilies", 	"-0px -132px", 	"Smilies", 
	"filtering", 	"-220px -0px", 	"Filtering"
	);
mnucont[3] = new Array(
	"users", 	"-44px -0px", 	"Registered users", 
	"bans", 	"-88px -0px", 	"Blocked users", 
	"userint", 	"-0px -88px", 	"User integration"
	);
mnucont[4] = new Array(
	"posts", 	"-198px -0px", 	"Messages", 
	"postsarc", 	"-0px -44px", 	"Archives", 
	"sticky", 	"-0px -22px", "Sticky message",
	"threads", 	"-22px -22px", "Threads"
	);


function hovmenu (o, mnu, ishov) {
  if (ishov && !menuon) return false;	// don't do anything if menu is invisible and we're hovering
  
  var str = '';
  for (var i = 0; i < mnucont[mnu].length / 3; i++) {
    str += '<a href="admin.php?'+mnucont[mnu][i+i*2]+'" style="display:block; position:relative;"><img src="gfx/dot.gif" width="22" height="22" style="background: url(gfx/icos-1.gif) no-repeat '+mnucont[mnu][i*3+1]+'" class="submenuimg"/> '+mnucont[mnu][i*3+2]+'</a>';
  }
  hm.innerHTML = str;
  
  var lft = 0;
  var obj = o;
  if (obj.offsetParent) {
    lft = obj.offsetLeft;
    while (obj = obj.offsetParent) lft += obj.offsetLeft;
  }  
  hm.style.left = (lft+8)+"px";
  
  curmnu = o;

  if (!ishov) togglemenu();

  return false;		// prevents menu links being followed in browsers which support this
}


function action(e) {
  var t;
  if (!e) var e = window.event;
  if (e.target) t = e.target;
  else if (e.srcElement) t = e.srcElement;
  if (t.nodeType == 3) t = t.parentNode;

  if (!menuon && curmnu != t) return true;	// menu not visible and not clicking menu: allow click to bubble.

  if (curmnu == t) {
    return false;	// if this is the same click that opened the menu, do nothing (stop click from bubbling to anchor)
  }
  togglemenu();	// guaranteed to be toggling OFF
}

function togglemenu () {
  if (!menuon) {
    hm.style.visibility = "visible";
    menuon = 1;
  }
  else {
    hm.style.visibility = "hidden";
    menuon = 0;
  }
}

// Stuff for control panel (but some also needed for pop overlay (which itself may only be used on CP?))
var formwait = null;
var subsavetmr = new Array();

function rcvdformresponse(i) {
  var r = i.substring(2); // root name
  if (subsavetmr[r]) window.clearTimeout(subsavetmr[r]);
  var loc = frames[i].location.href;
  if (loc == "javascript:false" || loc == "about:blank") return false; // first load.
  else if (frames[i].location.href == "javascript:true") setmsg(r, "Timeout. Please try again.", 2);
  else {
    if (frames[i].ld != 1) setmsg(r, "Error. Please try again.", 2);
    if (!frames[i].substaydisabled) document.forms[r][subinfo[r][0]].disabled = false;  // enable again the registered (via subsaving()) submit button, if frame failed to load.
  }

}

function setmsg(n, m, a) {
  x = document.getElementById("m_"+n);
  x.innerHTML = m;
  switch (a) {
    default: x.style.color = "inherit"; break;
    case 1: x.style.color = "green"; break;
    case 2: x.style.color = "red"; break;
  }
}

function setmsgdesc(f, e, a) {
  m = document.getElementById("em_"+f);
  m.innerHTML = "<ul style='padding-left:2em; margin: 0; color: "+((a == 1)?"green":"red")+"'>"+e+"</ul>";
  m.style.color = "red";
  m.style.height = "auto";
  h = m.clientHeight;
  msgdescrsz (m, 0, h);  
}

var eimg = '<img src="gfx/exclaim.gif" style="float: left; margin-right: 4px;">';

function seteimg(f, e) {
  document.getElementById("ei_"+f+"_"+e).innerHTML = eimg;
}


function resetmsgs(f) {
  var m = document.getElementById("m_"+f);
  m.innerHTML = "";
  var e = document.getElementById("em_"+f);
  e.innerHTML = "";
  e.style.height = 0;
  var spn = document.getElementsByTagName("span");
  for (var i = 0; i < spn.length; i++) { 
    if (spn[i].id && spn[i].id.substring(0, 3+f.length) == "ei_"+f) spn[i].innerHTML = "";
  }
}


var msgdescrsztmr = null;

// Would be simpler as a loop if we had a way to set a sleep interval.
function msgdescrsz (x, sh, eh) {
  window.clearTimeout(msgdescrsztmr);
  if (sh >= eh) return false;
  x.style.height = Math.ceil(sh)+"px";
  eh *= 1000;
  sh *= 1000;
  d = eh - sh;
  d = Math.floor(d / 5) + 1000;
  nh = sh+d;
  if (nh > eh || d <= 0) nh = eh;
  msgdescrsztmr = window.setTimeout(abc = function() {msgdescrsz(x, nh/1000, eh/1000)}, 50);
}


var subinfo = new Array();	// the info passed to subsaving to submit the form. So we can resubmit / reset buttons etc.

// i = form name, j = submit button name, t = message.
function subsaving(i, j, t) {
  k = document.forms[i];
  subinfo[i] = new Array();
  subinfo[i][0] = j;
  subinfo[i][1] = t;
  if (k[j].disabled) return false;
  k[j].disabled = true;
  resetmsgs(i);	// not all forms do a chk_ first, and those that don't need their stuff reset.
  setmsg(i, (t)?t:"saving...", 0);
  subsavetmr[i] = window.setTimeout("subsavingfail(\""+i+"\")", 1000 * 10);
  
  return true;
}

// simulates premature "loaded" state so we can end the torture.
function subsavingfail(i) {
  frames["t_"+i].location.href = "javascript:true;";
}

// Only used by helplnk
pops = new Array();
function popwin(id, page, w, h) {
  x = window.open(page, id, 'width='+w+',height='+h+',toolbar=no,status=no,resizable=yes,scrollbars=yes');
  x.focus();
}


