/*
 * Login form and simple AJAX functions by Daniel McFeeters
 * August, 2009
 * Licensed under the GNU General Public License
 * 
 */

dynamicwins = new Array();


function drawWin(contents)
{
    dc = document.getElementById('dynamic_container');
    win_out = document.createElement('div');
    win_out.setAttribute('class','dynamic_window_out');
    win_out.addEventListener('mousedown', dragWin, true)
    win_out.addEventListener('mousemove', dragWin, true)
    win_out.addEventListener('mouseup', dragWin, true)
    win_out.addEventListener('mouseout', dragWin, true)
    win = contents;
    //document.createElement('div');
    //win.setAttribute('class','dynamic_window');
    //win.innerHTML = "Hi. This is a <a href=\"#\" onclick=\"removeWin(this.parentNode.parentNode)\">"+title+"</a> Test";
    win_out.appendChild(win);
    firstInput = win_out.getElementsByTagName('input')[0];
    dc.appendChild(win_out);
    dynamicwins.push(win_out);
    window.clearTimeout(pingTimeout);
    pingTimeout = false;
    if(firstInput != undefined)
    {
        firstInput.focus();
    }
    return win_out;

}  // function drawWindow



function dragWin(e)
{
    layer = e.currentTarget;
    if(e.type == 'mousedown')
    {
        dragWin.originalX = e.layerX;
        dragWin.originalY = e.layerY;
        dragWin.top = layer.offsetTop * 1;
        dragWin.left = layer.offsetLeft * 1;
        layer.style.top = dragWin.top;
        layer.style.left = dragWin.left;
        dragWin.dragging = true;
    }
    if(e.type == 'mousemove' && dragWin.dragging == true)
    {
        layer = e.currentTarget;
        dragWin.top = dragWin.top + (e.layerY - dragWin.originalY);
        dragWin.left = dragWin.left + (e.layerX - dragWin.originalX);
        layer.style.top = dragWin.top;
        layer.style.left = dragWin.left;

    }
    if(e.type == 'mouseup' || e.type == 'mouseout')
    {
        dragWin.dragging = false;
    }
}

function removeWin(win)
{
    newwins = new Array();
    while(thiswin = dynamicwins.shift())
    {
        if(thiswin == win)
        {
            win.parentNode.removeChild(win);
        }
        else
        {
            newwins.push(thiswin);
        }
    }
    dynamicwins = newwins;
}

function loadWindow(url,method,params)
{
    loadXMLDataset(url,'dynamic_container',method,params);
}

function showLogin()
{
    if(window != window.top)
    {
         return window.top.showLogin();
    }
    else
    {
      if(!static_pages)
      {
        loadWindow('login.php?mode=xml');
        return false;
      }
      return true;
    }
} // function showLogin


function checkUser(form)
{
    if(!static_pages)
    {
        params = 'username='+form.username.value+'&app='+form.app.value;
        removeWin(form.parentNode.parentNode);
        loadWindow('login.php?mode=xml','POST',params);
        return false;
    }
    return true;
}

function checkPassword(form)
{
    if(form.hashpassword.value == 'yes')
    {
      auth_response = hex_sha256(hex_sha256(form.auth_salt.value+form.password.value)+form.auth_challenge.value);
      enc_key = hex_sha256(form.enc_salt.value+form.password.value);
      form.password.value = '';
      form.auth_response.value = auth_response;
      form.enc_key.value = enc_key;
    }
    if(!static_pages)
    {
        params = 'username='+form.username.value+'&auth_response='+auth_response+'&enc_key='+enc_key+'&app='+form.app.value;
        removeWin(form.parentNode.parentNode);
        loadWindow('login.php?mode=xml','POST',params);
        return false;
    }
    return true;
}

function pingServer()
{
    if(window != window.top)
    {
         window.top.pingServer();
    }
    else
    {
      params = 'action=ping';
      loadWindow('login.php?mode=xml','POST',params);
      window.clearTimeout(pingServer.t);
      pingServer.t = window.setTimeout('pingServer();',60000);
    }
}

function logoff()
{
    if(window != window.top)
    {
         window.top.logoff();
    }
    else
    {
        params = 'action=logoff';
        loadWindow('login.php?mode=xml','POST',params);
    }
}

static_pages = false;
pingTimeout = false;

