var totcount=11;
var flip=true;

function switchpanels(event, showid, hideid)
{
    var showpanel = getObj(showid);
    var hidepanel = getObj(hideid);

    if(showpanel)
        showpanel.style.visibility="visible";

    if(!showpanel) alert("no show panel " + showid);

    if(hidepanel)
        hidepanel.style.visibility="hidden";

    return true;
}

function toggleLeftPanel()
{
    var p = getObj("rooms");
    if(!p) 
    {
        setCookie("leftp", "rooms");
        window.location.reload(true);
        return false;
    }

    if(p.style.visibility=="hidden")
    {
      setCookie("leftp", "rooms");
      p.style.visibility="visible";
    }
    else
    {
      setCookie("leftp", "none");
      p.style.visibility="hidden";
    }
}

if(document.onsubmit)
    document.onsubmit = myonsubmit;

var ajax = null;

function onenter(func)
{
  if(window.event && window.event.keyCode == 13)
  {
      func();
      return false;
  }
  return true;
}

function get(id, def)
{
 ret = document.getElementById(id);

 if(ret == null) return def;

 ret = ret.value;

 if(ret)
 {
     if(ret == "false") ret = false;
     if(ret == "true") ret = true;
 }

 return ret;
}

function onloginbut()
{
 loginmessage("processing...", true);

 ajax = getAjax();
 if(!ajax) { return false; }

 var uname = get("loginfocus");
 var upass = get("loginpass");

 if(!uname) { loginmessage("Please enter a username"); return false; }
 if(!upass) { loginmessage("Please enter a password"); return false; }

 var parameters = "user=" + encodeURI(uname)+"&pass="+encodeURI(upass);

 ajax.onreadystatechange = login_ret;

 ajax.open("POST", "newlogin.php", true);
 ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 ajax.setRequestHeader("Content-length", parameters.length);
 ajax.setRequestHeader("Connection", "close");

 ajax.send(parameters);
}

function loginmessage(mess, good)
{
 var m = getObj("loginmsg");
 if(m)
 {
  if(good) m.style.backgroundColor = 'transparent';
  else m.style.backgroundColor = '#ff99ff';
  m.innerHTML = mess;
 }
 else
  alert(m);
}

function login_ret()
{
 if(ajax.readyState == 4)
 {
  if(ajax.status == 200)
  {
   var resp = ajax.responseText;
   if(resp == "0") { loginmessage("Login failed"); return; }
   else if(resp == "-1") { loginmessage("An error occured"); return; }
   else if(resp == "1")  { window.location.reload(true); }
   else if(resp == "2")  { window.location.href="login.php?cmd=notactive"; }
   else { loginmessage("Login error " + resp); return; }
  }
  else alert("Failed to fetch data");
 }
}


function loginx()
{
 if (window.event) event.returnValue = false;
 var p = document.getElementById('login');
 if(!p) return false;
 p.style.visibility = 'hidden';
}

function onlogin(e, id)
{
 if (window.event) event.returnValue = false;
 var p = document.getElementById('login');
 if(!p) return false;

 p.style.visibility = 'visible';
 var f = document.getElementById('loginfocus');
 if(f) f.focus();
}

function getAjax()
{
var xmlHttp=null;
try
  {xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
  }
catch (e) // Internet Explorer
  {  
  try{ xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
  catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }
  }
return xmlHttp;
}

var tutAjax=null;

function show(id)
{
 var p = document.getElementById(id);
 if(p) p.style.visibility = 'visible';
}
function hide(id)
{
 var p = document.getElementById(id);
 if(p) p.style.visibility = 'hidden';
}

function setCookie(key, value)
{
 document.cookie = key + "=" + value + ";expires=15/02/2023 00:00:00";
}
function showTut(id, page, forced)
{
 if (window.event) event.returnValue = false;

 var loading = document.getElementById('ddloading');
 if(loading) loading.style.visibility = 'visible';
 var tutpanel = document.getElementById('tut');
 if(tutpanel) tutpanel.style.visibility = 'visible';
 document.cookie = "tut_show=1" + ";expires=15/02/2023 00:00:00";

 tutAjax = getAjax();
 if(!tutAjax)
 {
  setTutText("unable to get Ajax object");
  return false;
 }

 tutAjax.onreadystatechange = getTutsReceived;

 thispage = "" + window.location.href;
 if(thispage)
    thispage = thispage.replace("&", ":");

 var forcedtxt = forced ? "1" : "0";

 tutAjax.open("GET", "tutorial.php?tut=" + id + "&page="+page + "&url=" + thispage + "&forced=" + forcedtxt, true);
 tutAjax.send(null);
   
}

function startTut(tut)
{
 tutid = tut;
 showTut(tut, 0);
}

function tutNext()
{
tutindex++;
showTut(tutid, tutindex, true);
}

function tutPrev(id)
{
tutindex--;
if(tutindex < 0) tutindex = 0;
showTut(tutid, tutindex, true);
}
function setTutText(html)
{
 var tutpanel = document.getElementById("tutbody");
 if(tutpanel) tutpanel.innerHTML = html;
}

function extract(s)
{
    var eq = s.indexOf("=");

    if(eq == -1) return false;

    var ret = s.substr(eq+1);
    return ret;
}

function getTutsReceived()
{
 if(tutAjax.readyState == 4)
 {
  if(tutAjax.status == 200)
  {
   var resp = tutAjax.responseText;
   var arr = resp.indexOf("\n");
   if(arr != -1)
   {
       var dataline = resp.substr(0, arr);
       resp = resp.substr(arr + 1);

       var dataitems = dataline.split(";");
       tutindex = parseInt(extract(dataitems[0]));

       var max = extract(dataitems[1]);
   }

 var loading = document.getElementById('ddloading');
 if(loading) loading.style.visibility = 'hidden';

   setTutText(resp);
   document.cookie = "tut_page=" + tutindex + ";expires=15/02/2023 00:00:00";
   document.cookie = "tut_id="   + tutid + ";expires=15/02/2023 00:00:00";

  }
  else setTutText("Failed to fetch data");
 }
}

function myonsubmit()
{
    if (this.submitted) return false; 

    this.submitted = true; 
    return true;
}

function setBGCol(obj, col)
{
    obj.style.backgroundColor=col;
}

function flashText()
{
    if(totcount <= 0 && !flip) return true;

    var weblink = document.getElementById("weblink");
    var itemtb = document.getElementById("itemtb");

    var col = flip ? '#FFFFFF' : '#A0A0FF';
    if(weblink) setBGCol(weblink, col);
    if(itemtb) setBGCol(itemtb, col);

    totcount--;
    flip = !flip;
}

function onmc(e, chref, item)
{
    var ctrlPressed = e.ctrlKey;

    if(ctrlPressed)
    {
        if(!item)
        {        
            location.href=chref;
            return false;
        }
        else
            e.target.href = chref;
    }

    return true;
}

function onf(tobj)
{
    if (tobj.value == "new link") 
        tobj.value = "";
    else
        tobj.select();

    return true;
}

function onmout(e) // on mouse out
{
    totcount=0;

    var div = document.getElementById("dyntxt");
    div.innerHTML = "";
    return true;
}

function onmo(e, sel, iscont) // on mouse over
{
    if(iscont)
    {
        var div = document.getElementById("dyntxt");
        var s = document.getElementById("message");
        if(div && s)
        {
            div.innerHTML = s.value;
        }
    }
    var cur = document.getElementById("current");
    if(cur && sel)
    {
         if(cur.value == sel)
                  totcount=11;
    }
    return false;
}


function mouseX(evt) 
{
    if (!evt) evt = window.event; 
    if (evt.pageX) return evt.pageX; 
    else if (evt.clientX) return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft); 
    else return 0;
}
function mouseY(evt) 
{
    if(!evt) evt = window.event; 
    if (evt.pageY) return evt.pageY; 
    else if (evt.clientY) return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); 
    else return 0;
}

function findPosX(obj)
{
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
}

function findPosY(obj)
{
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
}

function follow(evt) 
{
    if(document.getElementById) 
    {
        var obj = document.getElementById('grabbed').style; 
        var main = document.getElementById('main');
        var xfield = document.getElementById('xpos');
        var yfield = document.getElementById('ypos');

        var mX = mouseX(evt);
        var mY = mouseY(evt);

        var relx = mX - findPosX(main); 
        var rely = mY - findPosY(main); 

        if(relx > 0 && rely > 0 && relx < 800 && rely < 400)
        {        
            if(xfield) xfield.value = relx;
            if(yfield) yfield.value = rely;
            obj.visibility = 'visible';
        }
        else obj.visibility = 'hidden';


        obj.left = (parseInt(mX) + 1) + 'px';
        obj.top = (parseInt(mY) + 1) + 'px';
    }
}

function setFocus()
{
    var obj = document.getElementById("focusme");
    if(obj) { obj.focus(); }
    
    return true;
}

var ie = false;
var lastNote = '';

if (document.all) { ie = true; }

function getObj(id) 
{
 if (ie) { return document.all[id]; } 
 else    { return document.getElementById(id); }
}

function showNote(name) 
{
 if (name == lastNote) 
 {
  hideNote(name);
  return;
 }

 if (lastNote != '') { hideNote(lastNote); }

 var body = getObj(name + '_body');
 body.style.display = 'inline';
 lastNote = name;
}

function hideNote(name) 
{
 var body = getObj(name + '_body');
 body.style.display = 'none';
 lastNote = '';
}

tutindex = 0;
tutid   = "";

function get_cookie ( cookie_name )
{
  var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );

  if ( results )
    return ( unescape ( results[2] ) );
  else
    return null;
}

addLoadEvent(onstart);

function addLoadEvent(func) {
  if (window.addEventListener)
    window.addEventListener("load",func,false);
  else if (document.addEventListener)
    document.addEventListener("load",func,false);
  else if (window.attachEvent)
    window.attachEvent("onload",func);
  else if (document.attachEvent)
    document.attachEvent("onload",func);
}

function onstart_tut()
{
  var tut=document.getElementById("tut");

 if(tut)
  {
    var tut_posX = get_cookie("tut_posX");
    var tut_posY = get_cookie("tut_posY");
    if(tut_posX < 0) tut_posX = 10;
    if(tut_posY < 0) tut_posY = 10;
    if(tut_posX && tut_posY)
    {
     if(N)   {
      tut.style.top  = tut_posX + "px";
      tut.style.left = tut_posY + "px";
      tut.style.visibility='visible';
     }
     else   {
      tut = tut.style;
      tut.pixelLeft = tut_posX;
      tut.pixelTop = tut_posY;
      tut.visibility='visible';
     }
    } else  tut.style.visibility='visible';

    tutpage = get_cookie("tut_page");
    tutid   = get_cookie("tut_id");

    if(!tutid) tutid = "tutorials";

    showTut(tutid, tutpage);
  }
}

function onstart() {

  var tut_show = get_cookie("tut_show");

  if(tut_show == "1") onstart_tut();
}

function addGenericEvent(source, trigger, func) {
  if (source.addEventListener)
    source.addEventListener(trigger,func,false);
  else if (source.attachEvent)
    source.attachEvent("on"+trigger,func);
}

function tut_hide(id)
{
    if(!id) return false;
    var tut=document.getElementById(id);

    if(tut)
    {
       tut.style.visibility='hidden';
       document.cookie = "tut_show=0" + ";expires=15/02/2023 00:00:00";
       var loading = document.getElementById('ddloading');
       if(loading) loading.style.visibility = 'hidden';
    }

    return false;
}

// -----------
N = (document.all) ? 0 : 1;
lastX = -1;
lastY = -1;

var ddob;
var ddover = false;
var ddtarget = "";

function getDDPanel()
{
   if(!ddtarget) return null;
   return document.getElementById(ddtarget);
}

function MOddarea(e, target)
{
 if(!ddover) { // already dragging so ignore
  ddover=true;
  ddtarget = target;
 }
}

function MD(e) 
{
 if(ddover) {
   if(!(ddob = getDDPanel())) return true;
  if(N) {
   ddX = e.layerX;
   ddY = e.layerY;
   return false;
  }
  else {
   ddob = ddob.style;
   ddX=event.offsetX;
   ddY=event.offsetY;
  }
 }
}

function MM(e) 
{
 if(ddob) {
  if(N)   {
   lastX = (e.pageY-ddY);
   lastY = (e.pageX-ddX);
   ddob.style.top  = lastX + "px";
   ddob.style.left = lastY + "px";
  }
  else 
  {
   lastX = event.clientX-ddX + document.body.scrollLeft;
   lastY = event.clientY-ddY + document.body.scrollTop;
   ddob.pixelLeft = lastX;
   ddob.pixelTop = lastY;
   return false;
  }
 }
}

function MU() 
{ 
    if(ddob && lastX != -1)
    {
        document.cookie = "tut_posX=" + lastX + ";expires=15/02/2023 00:00:00";
        document.cookie = "tut_posY=" + lastY + ";expires=15/02/2023 00:00:00";
    }
ddob = null; 
}

if(N) { document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP); }

document.onmousedown = MD; document.onmousemove = MM; document.onmouseup   = MU;
