var current_mode;
var current_object;
var current_column;

var lastActionType;
var lastActionStatus;
var lastActionCount;
var lastActionMax;
var lastMessages;

var amount_bb     = 0;
var amount_bog    = 0;
var amount_total  = 0;

function compare_toggle_project(uuid,type,object,mode)
{
  if (object.className.indexOf("inactive_add") >= 0) return;  
  
  current_mode = mode;

  if (current_mode == "compare_table")
  {
    current_column = object.getAttribute("column");
  }
  else
  {
    current_object = object;
  }

  compare_request(type,uuid);
}

function compare_get_params()
{
  var params = 'uri=' + obtainURI();
  if(input = document.getElementsByTagName("input"))
  {
    for (i = 0; i < input.length; i++)
    {
      params += "&" + input[i].name + "=" + input[i].value;
    }
  }
  return params;
}

function compare_request(type,uuid)
{
  if(window.XMLHttpRequest || window.ActiveXObject)
  {
    var params = compare_get_params();

    params += "&type=" + type;
    params += "&uuid=" + uuid;

    remoteRequest('frontend-g4/tools/project_compare.php',params,'compare_request_after');
  }
}

function hideCompareColumn() 
{
  var table = (document.all ? document.all.project_compare_table : document.getElementById('project_compare_table'));
  if (table) {
    for (var r = 0; r < table.rows.length; r++)
    table.rows[r].cells[current_column].style.display = 'none';
  } else {
    return false;
  }
}

function setCompareCount(totalElementID, bbElementId, bogElementId)
{
  if (projectsCount = document.getElementById(totalElementID))
    projectsCount.innerHTML = amount_total;
    
  if (typeof bbElementId != "undefined")
  {
    if (projectsCountBb = document.getElementById(bbElementId))
    {
      projectsCountBb.innerHTML = amount_bb;
    }
  }
  
  if (typeof bogElementId != "undefined")
  {
    if (projectsCountBog = document.getElementById(bogElementId))
    {
      projectsCountBog.innerHTML = amount_bog;
    }
  }

  if (lastActionCount == 0)
    document.location.href = document.location.href;
}

function setCompareMessage(elementID)
{
  element = document.getElementById(elementID);
  if (element)
  {
    element.innerHTML = lastMessages;
  }
}

function setText(text)
{
  if (current_object)
  {
    current_object.innerHTML = text;
  }
}

function updateCompareLinks()
{
  if (current_object)
  {
    if (current_object.className.indexOf("active_add") >= 0)
    {
      current_object.className = "compare_link active_remove";
    } else {
      current_object.className = "compare_link active_add";
    }
  }
  
  if (lastActionType == "add" && lastActionCount != lastActionMax) return;
  
  elements = getElementsByClassName(document.body,"a","compare_link");
  if (elements.length > 0)
  {
    for (var i=0; i < elements.length; i++)
    {
      if (lastActionType == "add")
      {
        if (elements[i].className.indexOf("active_add") >= 0)
        {
          elements[i].className = "compare_link inactive_add";
        }
      }
      else
      {
        if (elements[i].className.indexOf("inactive_add") >= 0)
        {
          elements[i].className = "compare_link active_add";
        }
      }
    }
  }
}

function compare_request_after()
{
  if (http_request && http_request.readyState == 4)
  {
    if (http_request.status == 200 && http_request.responseText && http_request.responseText.trim() != '')
    {
      response = http_request.responseText;
      
      objXML = new xml();
      objXML.loadXML(response);
      
      var project = objXML.dom.getElementsByTagName('project');
      for (var i=0; i<project.length; i++)
      {
        projectuuid = objXML.getNodeValue(project[i].getElementsByTagName('uuid')[0]);
        projecttype = objXML.getNodeValue(project[i].getElementsByTagName('type')[0]);
      }

      var action = objXML.dom.getElementsByTagName('action');
      for (var i=0; i<action.length; i++)
      {
        actiontype = objXML.getNodeValue(action[i].getElementsByTagName('type')[0]);
        actionstatus = objXML.getNodeValue(action[i].getElementsByTagName('status')[0]);
        actioncount = objXML.getNodeValue(action[i].getElementsByTagName('count')[0]);
        actionmax = objXML.getNodeValue(action[i].getElementsByTagName('max')[0]);
      }
      
      var amount = objXML.dom.getElementsByTagName('amount');
      for (var i=0; i<amount.length; i++)
      {
        amount_bb    = objXML.getNodeValue(amount[i].getElementsByTagName('bb')[0]);
        amount_bog   = objXML.getNodeValue(amount[i].getElementsByTagName('bog')[0]);
        amount_total = objXML.getNodeValue(amount[i].getElementsByTagName('total')[0]);
      }

      var messages = objXML.dom.getElementsByTagName('messages')[0];
      var msg = "";
      items = messages.getElementsByTagName('item');
      for (var j=0; j<items.length; j++)
      {
        msg += objXML.getNodeValue(items[j]);
      }

      lastActionType = actiontype;
      lastActionStatus = actionstatus;
      lastActionCount = actioncount;
      lastActionMax = actionmax;
      lastMessages = msg;

      switch (actiontype)
      {
        case "remove":
          if (typeof setCompareAfterRemove == "function")
          {
            setCompareAfterRemove(lastActionStatus);
          }
          break;
        case "add":
          if (typeof setCompareAfterAdd == "function")
          {
            setCompareAfterAdd(lastActionStatus);
          }
          break;
      }
    }
  }
}