// Cheating global vars
var xmlDoc = "";
var itemHTTP = "";
var resultHTTP = "";
var selectedItemID = 0;
var selectedZone = 0;
var selectedDiv = "";
var basepath = "/chaoss/wishlists/";
var loadingHTML = '<img src="/chaoss/wishlists/loading.gif />';

// Send Ajax request.  Destination: bossLoot div
function ajaxRequestBossloot(request, params) {

  itemHTTP = getHTTPObject(ajaxBosslootStateChanged);
  itemHTTP.open("GET", basepath + 'wishlistService.php?request=' + request + '&' + params, true);
  itemHTTP.send("");

}

// Hander for when we get the http data
function ajaxBosslootStateChanged() {

  if (itemHTTP.readyState == 4 || itemHTTP.readyState == 'complete') {
    document.getElementById("bossLoot").innerHTML = itemHTTP.responseText;
  } else {
    document.getElementById("bossLoot").innerHTML = loadingHTML;
  }
  
}

// Ajax call for the confirm give item to player box
function confirmGiveItem(eid, uid) {

  ajaxRequestResults('itemGiveConfirm', 'id=' + eid);
  showSummaryUserList(uid);

}

// Ajax call to give an item to a player
function giveItem(eid, uid) {

  ajaxRequestResults('itemGive', 'id=' + eid);
  showSummaryUserList(uid);

}

// Ajax call to give an item to a player (Convert to heroic)
function giveItemHeroic(eid, uid) {

  ajaxRequestResults('itemGive', 'id=' + eid + '&heroic=1');
  showSummaryUserList(uid);

}

// Send Ajax request.  Destination: results div
function ajaxRequestResults(request, params) {

  resultHTTP = getHTTPObject(ajaxResultsStateChanged);
  resultHTTP.open("GET", basepath + 'wishlistService.php?request=' + request + '&' + params, true);
  resultHTTP.send("");

}

// Handler for the loot tracker ajax
function ajaxRequestLoottrack(request, params) {

  resultHTTP = getHTTPObject(ajaxResultsStateChanged);
  resultHTTP.open("GET", basepath + 'loottrackService.php?request=' + request + '&' + params, true);
  resultHTTP.send("");

}

// Handler for when we get the http data
function ajaxResultsStateChanged() {

  if (resultHTTP.readyState == 4 || resultHTTP.readyState == 'complete') {
    document.getElementById("results").innerHTML = resultHTTP.responseText;
  } else {
    document.getElementById("results").innerHTML = loadingHTML;
  }

}

// Get a new HTTP ajax object
function getHTTPObject (handler) {

  var oHTTP = false;

  if (window.XMLHttpRequest) {

    oHTTP = new XMLHttpRequest();

  } else {

    oHTTP = new ActiveXObject("Microsoft.XMLHTTP");

  }

  oHTTP.onreadystatechange = handler;
  return oHTTP;

}

// Ajax XML call to load boss loot xml
function loadBossLoot() {

    var xml_http = false;
    var htmlOut = "";

    if (window.XMLHttpRequest) {

      xml_http = new XMLHttpRequest();

    } else {

      xml_http = new ActiveXObject("Microsoft.XMLHTTP");

    }

    xml_http.open("GET", basepath + "bossloot.xml", false);
    xml_http.send("");
    xmlDoc = xml_http.responseXML;

}

// DHTML gen for the loot list of the clicked boss
function showList(boss, zone) {

  if (!xmlDoc) {

    loadBossLoot();

  }

  // Generate the loot list
  var htmlOut = '';
  var zoneList = xmlDoc.getElementsByTagName("zone");

  for (var iZone = 0; iZone < zoneList.length; iZone++) {

    var zoneName = zoneList[iZone].getAttribute("name");
    var zoneID = zoneList[iZone].getAttribute("id");

    if (zone == zoneID) {

      for (var iBoss = 0; iBoss < zoneList[iZone].childNodes.length; iBoss++) {

        if (zoneList[iZone].childNodes[iBoss].nodeType == 1) {

          var bossName = zoneList[iZone].childNodes[iBoss].getAttribute("name");
          var bossID = zoneList[iZone].childNodes[iBoss].getAttribute("id");

	  if (boss == bossID) {

            htmlOut = '<div class="wishlistHeader">' + bossName + '<hr /></div>';

            for (var iItem = 0; iItem < zoneList[iZone].childNodes[iBoss].childNodes.length; iItem++) {

              if (zoneList[iZone].childNodes[iBoss].childNodes[iItem].nodeType == 1) {

                var itemName = zoneList[iZone].childNodes[iBoss].childNodes[iItem].getAttribute("name");
                var itemIcon = zoneList[iZone].childNodes[iBoss].childNodes[iItem].getAttribute("icon");
                var itemRarity = zoneList[iZone].childNodes[iBoss].childNodes[iItem].getAttribute("rarity");
                var itemID = zoneList[iZone].childNodes[iBoss].childNodes[iItem].getAttribute("id");
                htmlOut += '<div onmousedown="javascript:setItem(\'' + itemID + '\', \'' + zoneID + 
                         '\', this);" class="unselectedItem"><img src="' + basepath + 'icons/' + itemIcon 
                         + '.png" width="32" height="32" class="lootIcon" /> <a href="http://www.wowhead.com/?item=' 
                         + itemID + '" class="q' + itemRarity + '" target="_new">' + itemName + '</a></div>';

              }

            }

          }

        }

      }

    }

  }

  document.getElementById("bossLoot").innerHTML = htmlOut;
  clearItem();

}

// DHTML gen for the loot list of the clicked boss
function showSummaryList(boss, zone) {

  if (!xmlDoc) {

    loadBossLoot();

  }

  // Generate the loot list
  var htmlOut = '';
  var zoneList = xmlDoc.getElementsByTagName("zone");

  for (var iZone = 0; iZone < zoneList.length; iZone++) {

    var zoneName = zoneList[iZone].getAttribute("name");
    var zoneID = zoneList[iZone].getAttribute("id");

    if (zone == zoneID) {

      for (var iBoss = 0; iBoss < zoneList[iZone].childNodes.length; iBoss++) {

        if (zoneList[iZone].childNodes[iBoss].nodeType == 1) {

          var bossName = zoneList[iZone].childNodes[iBoss].getAttribute("name");
          var bossID = zoneList[iZone].childNodes[iBoss].getAttribute("id");

	  if (boss == bossID) {

            htmlOut = bossName + ':<ul class="bossListUL"><li><a href="javascript:ajaxRequestResults(\'itemSummaryFull\',\'id=' + bossID + '&zone='
                               + zoneID + '\')">Show all wishlisted items</a></li></ul><br /><hr />Loot Table:<ul class="bossListUL">';

            for (var iItem = 0; iItem < zoneList[iZone].childNodes[iBoss].childNodes.length; iItem++) {

              if (zoneList[iZone].childNodes[iBoss].childNodes[iItem].nodeType == 1) {

                var itemName = zoneList[iZone].childNodes[iBoss].childNodes[iItem].getAttribute("name");
                var itemID = zoneList[iZone].childNodes[iBoss].childNodes[iItem].getAttribute("id");
                htmlOut += '<li><a href="javascript:ajaxRequestResults(\'itemSummary\', \'id=' + itemID + '\')">' + itemName + '</a></li>';

              }

            }

            htmlOut += '</ul>';

          }

        }

      }

    }

  }

  document.getElementById("bossLoot").innerHTML = htmlOut;
  clearItem();

}

// Select an item from the list
function setItem(item, zone, obj) {

  if (selectedDiv) {

    selectedDiv.className='unselectedItem';

  }
    
  selectedDiv = obj;
  selectedItemID = item;
  selectedZone = zone;
  selectedDiv.className='selectedItem';

}

// Drop the item on to a wishlist slot
function dropItem(obj) {

  var wishlistID = obj.id;
  var wishlistForm = document.getElementById("wishlistForm");

  if (selectedItemID) {

    var itemList = xmlDoc.getElementsByTagName("item");
    var itemIcon = "inv_empty.png";
    var itemRarity = "4";
    var itemID = 0;

    // Check to see if we can drop this item in this zoneID
    if (wishlistID.search("Item" + selectedZone + "_") > 0) {

      for (var iItem = 0; iItem < itemList.length; iItem++) {

        if (itemList[iItem].getAttribute("id") == selectedItemID) {

          itemName = itemList[iItem].getAttribute("name");
          itemIcon = itemList[iItem].getAttribute("icon");
          itemID = itemList[iItem].getAttribute("id");
          itemRarity = itemList[iItem].getAttribute("rarity");

        }

      }

      var htmlOut = '<img src="' + basepath + 'icons/' + itemIcon + '.png" height="32" width="32" class="lootIcon" /> <a href="http://www.wowhead.com/?item=' 
                  + itemID + '" class="q' + itemRarity + '" target="_new">' + itemName + '</a>';
      obj.innerHTML = htmlOut;
      obj.className = 'unselectedItem';
      wishlistForm.elements[wishlistID].value = itemID;
      clearItem();

    }

  } else {

    if (obj.className == 'selectedItemDelete') {

      obj.className = 'unselectedItem';
      obj.innerHTML = '<img src="' + basepath + 'icons/inv_empty.png" height="32" width="32" class="lootIcon" /> Empty';
      wishlistForm.elements[wishlistID].value = -1;

    } else {

      obj.className = 'selectedItemDelete';

    }

  }

}

// Clear the selected item
function clearItem() {

  selectedDiv.className='unselectedItem';
  selectedItemID = 0;
  selectedZone = 0;

}

// Hide/Show the user namelink panels depending on the filter box
function filterUsers(obj) {

  var docDivs = document.getElementsByTagName('div');
  var filter = obj.value;

  for (var iDivs = 0; iDivs < docDivs.length; iDivs++) {

    var divID = docDivs[iDivs].id;

    if (divID.search(/^editNamelink-/i) >= 0) {

      var patt = "^editNamelink-.*" + filter;
      var re = new RegExp(patt, "i");

      if (divID.search(re) >= 0) {

        docDivs[iDivs].style.display = 'block';

      } else {

        docDivs[iDivs].style.display = 'none';

      }

    }

  }

}


// Show specific panel
function showPanel(charname) {

  var docDivs = document.getElementsByTagName('div');

  for (var iDivs = 0; iDivs < docDivs.length; iDivs++) {

    var divID = docDivs[iDivs].id;

    if (divID.search(/^editPanel-/i) >= 0) {

      var patt = "^editPanel-" + charname;
      var re = new RegExp(patt, "i");

      if (divID.search(re) >= 0) {

        docDivs[iDivs].style.display = 'block';

      } else {

        docDivs[iDivs].style.display = 'none';

      }

    }

  }

}


