var reqRequests = null;
var reqRequestsAdmin = null;
var gotoRequests = false;
var hidePopup = false;
var hidePopupAdmin = false;
var showing = false;

function ShowRequestPopup(fileId, admin)
{
   if(!showing)
   {
      showing = true;
      document.requestPopup.requestFile.value = fileId;
      var elemId = 'request_popup'+(admin?'_admin':'');
      document.getElementById(elemId).className="request_popup";
   }
}

function HideRequestPopup(admin)
{
   if(showing)
   {
      var elemId = 'request_popup'+(admin?'_admin':'');
      document.getElementById(elemId).className = "request_popup_hidden";
      if(admin)
      {
         document.requestPopupAdmin.requestFile.value = "";
      }
      else
      {
         document.requestPopup.requestFile.value = "";
      }

      var errorElem = 'request_popup_error' + (admin?"_admin":"");
      var reqError = document.getElementById(errorElem);
      if(reqError != null)
      {
         reqError.innerHTML = "";
      }
      showing = false;
   }
}

function AddRequest(goto, admin)
{

   var extraArgs;
   if(admin)
   {
      extraArgs = "?action=addExisting&request=" + document.requestPopupAdmin.requestDropdown.value;
   }
   else if(document.requestPopup.newRequest.value == "")
   {
      extraArgs = "?action=addExisting&request=" + document.requestPopup.requestDropdown.value;
   }
   else
   {
      extraArgs = "?action=addNew&name=" + escape(document.requestPopup.newRequest.value);
   }

   extraArgs += "&id=" + document.requestPopup.requestFile.value;
   extraArgs += "&lbx=" + document.requestPopup.lbx.value;

   if(admin)
   {
      hidePopupAdmin = true;
   }
   else
   {
      hidePopup = true;
      gotoRequests = goto;
   }
   LoadExistingRequests(extraArgs, true, admin);
}

function requestsCB(admin)
{
   var req = admin?reqRequestsAdmin:reqRequests;
   if (4 == req.readyState)
   {
      if(Handle302(req))
      {
         return;
      }
      if (200 == req.status || null == req.status)
      {
         var msg;
         var error = false;
         if(req.responseText.substring(0, 6) == 'Error:')
         {
            error = true;
            msg = req.responseText.substring(6);
            if(admin)
            {
               hidePopupAdmin = false;
            }
            else
            {
               hidePopup = false;
            }
         }
         else
         {
            msg = req.responseText;
         }
         var elemId = "request_popup" + (admin?"_admin":"");
         document.getElementById(elemId).innerHTML = msg;
         if(hidePopup && !admin)
         {
            hidePopup = false;
            HideRequestPopup(false);
         }
         if(hidePopupAdmin && admin)
         {
            hidePopupAdmin = false;
            HideRequestPopup(true);
         }
         if(gotoRequests && !admin && !error)
         {
            document.requestPopup.submit();
         }
      }
   }
}

function LoadExistingRequests(extraArgs, waitMsg, admin)
{
   if(waitMsg)
   {
      var elemId = "request_popup" + (admin?"_admin":"");
      var requestPopup = document.getElementById(elemId);

      requestPopup.innerHTML =
      "<div class='request_popup_title'>\n"
      + "\tProcessing..."
      + "</div>"
      + "<a href='javascript: HideRequestPopup(" + (admin?"true":"false") + ")' class='request_popup_close'>"
      + "\tX"
      + "</a>";
   }
   else
   {
      var dropdown = document.getElementById("request_popup_dropdown");

      if(dropdown != null)
      {
         dropdown.innerHTML = "Loading...";
      }
   }

   //request new content
   if(admin)
   {
      reqRequestsAdmin = getRequestObject();
      reqRequestsAdmin.onreadystatechange = function() { requestsCB(true); };
   }
   else
   {
      reqRequests = getRequestObject();
      reqRequests.onreadystatechange = function() { requestsCB(false); };
   }
   //reqRequests.onerror = requestsError;
   var url = "asyncAddRequest.php" + extraArgs;
   if(admin)
   {
      if(extraArgs == null || extraArgs == "")
      {
         url += "?admin=Y";
      }
      else
      {
         url += "&admin=Y";
      }
      reqRequestsAdmin.open("POST", url, true);
      reqRequestsAdmin.send("");
   }
   else
   {
      reqRequests.open("POST", url, true);
      reqRequests.send("");
   }
}

var reqAddToLbx = null;
var gotoLbxs = false;
var hideLbxPopup = false;
var showingLbx = false;

function ShowAddToLbxPopup(fileId)
{
   if(!showingLbx)
   {
      showingLbx = true;
      document.addToLbxPopup.addFile.value = fileId;
      document.getElementById('add_to_lbx_popup').className="add_to_lbx_popup";
   }
}

function HideAddToLbxPopup()
{
   if(showingLbx)
   {
      document.getElementById('add_to_lbx_popup').className = "add_to_lbx_popup_hidden";
      document.addToLbxPopup.addFile.value = "";

      var reqError = document.getElementById('add_to_lbx_popup_error');
      if(reqError != null)
      {
         reqError.innerHTML = "";
      }
      showingLbx = false;
   }
}

function AddToLbx(goto)
{

   var extraArgs;
   if(document.addToLbxPopup.newLbx.value == "")
   {
      extraArgs = "?action=add&toLbx=" + document.addToLbxPopup.addToLbxDropdown.value;
   }
   else
   {
      extraArgs = "?action=add&addToNew=true&name=" + escape(document.addToLbxPopup.newLbx.value);
   }

   extraArgs += "&adds=" + document.addToLbxPopup.addFile.value;
   extraArgs += "&lbx=" + document.addToLbxPopup.lbx.value;
   hideLbxPopup = true;
   gotoLbxs = goto;
   LoadExistingLbxs(extraArgs, true);
}

function LoadExistingLbxs(extraArgs, waitMsg)
{
   if(waitMsg)
   {
      var lbxPopup = document.getElementById("add_to_lbx_popup");

      lbxPopup.innerHTML =
      "<div class='add_to_lbx_popup_title'>\n"
      + "\tProcessing..."
      + "</div>"
      + "<a href='javascript: HideAddToLbxPopup()' class='add_to_lbx_popup_close'>"
      + "\tX"
      + "</a>";
   }
   else
   {
      var dropdown = document.getElementById("add_to_lbx_popup_dropdown");

      if(dropdown != null)
      {
         dropdown.innerHTML = "Loading...";
      }
   }

   //add to lbx new content
   reqAddToLbx = getRequestObject();
   reqAddToLbx.onreadystatechange = addToLbxCB;
   //reqRequests.onerror = requestsError;
   var url = "asyncAddToLbx.php" + extraArgs;
   reqAddToLbx.open("POST", url, true);
   reqAddToLbx.send("");
}

function addToLbxCB()
{
   if (4 == reqAddToLbx.readyState)
   {
      if(Handle302(reqAddToLbx))
      {
         return;
      }
      if (200 == reqAddToLbx.status || null == reqAddToLbx.status)
      {
         var msg;
         var error = false;
         if(reqAddToLbx.responseText.substring(0, 6) == 'Error:')
         {
            error = true;
            msg = reqAddToLbx.responseText.substring(6);
            hideLbxPopup = false;
         }
         else
         {
            msg = reqAddToLbx.responseText;
         }
         document.getElementById("add_to_lbx_popup").innerHTML = msg;
         if(hideLbxPopup)
         {
            hideLbxPopup = false;
            HideAddToLbxPopup();
         }
         if(gotoLbxs && !error)
         {
            document.addToLbxPopup.submit();
         }
      }
   }
}
