$item_search_cache = array();
 while ($result_pls_gm = mysql_fetch_assoc($doquery_pls_gm)) {
     $item_search_cache[$result_pls_gm["item_id"]] = $result_pls_gm;
     $Items[] = array($result_pls_gm["item_id"], $result_pls_gm["item_name"], $result_pls_gm["item_level"], $result_pls_gm["item_source"], $result_pls_gm["item_relevance"]);
 }
 switchConnection("mangos", REALM_NAME);
 if ($config["locales"]) {
     $ItemsQuery = execute_query("SELECT `entry` FROM `locales_item` WHERE `name_loc" . $config["locales"] . "` LIKE '%" . change_whitespace($SearchQuery) . "%'");
 } else {
     $ItemsQuery = execute_query("SELECT `entry` FROM `item_template` WHERE `name` LIKE '%" . change_whitespace($SearchQuery) . "%'");
 }
 $TotalItems = mysql_num_rows($ItemsQuery);
 if ($TotalItems > $TotalCachedItems) {
     while ($ItemInfo = mysql_fetch_assoc($ItemsQuery)) {
         if (!isset($item_search_cache[$ItemInfo["entry"]])) {
             $item_search_cache[$ItemInfo["entry"]] = cache_item_search($ItemInfo["entry"]);
             $Items[] = array($ItemInfo["entry"], $item_search_cache[$ItemInfo["entry"]]["item_name"], $item_search_cache[$ItemInfo["entry"]]["item_level"], $item_search_cache[$ItemInfo["entry"]]["item_source"], $item_search_cache[$ItemInfo["entry"]]["item_relevance"]);
         }
     }
 }
 unset($item_search_cache);
 if ($TotalItems) {
     $Orders = array("ItemName", "ItemLevel", "Source", "Relevance");
     $OrderOppositeSort = array();
     $OrderSymbol = array();
     $OrderSuffix = array();
     foreach ($Orders as $Val) {
         $OrderOppositeSort[$Val] = "DESC";
         $OrderSymbol[$Val] = "";
         $OrderSuffix[$Val] = "";
     }
function outputTooltip($itemid, $itemguid = 0, $itemlist = array())
{
    global $inventorytype, $ItemFlags, $config, $defines, $lang;
    /* Item Tooltip Output Function */
    /* Get Item Info */
    switchConnection("mangos", REALM_NAME);
    $tooltipText = "";
    $itemtable = "";
    if ($config["locales"]) {
        $itemdata = mysql_fetch_assoc(execute_query("SELECT * FROM `item_template` LEFT JOIN `locales_item` ON `item_template`.`entry` = `locales_item`.`entry` where `item_template`.`entry` = " . $itemid . " LIMIT 1"));
        $nameloc = "name_loc" . $config["locales"];
        $descriptionloc = "description_loc" . $config["locales"];
        if ($itemdata[$nameloc]) {
            $itemdata["name"] = $itemdata[$nameloc];
        }
        if ($itemdata[$descriptionloc]) {
            $itemdata["description"] = $itemdata[$descriptionloc];
        }
    } else {
        $itemdata = mysql_fetch_assoc(execute_query("SELECT * FROM `item_template` WHERE `entry` = " . $itemid . " LIMIT 1"));
    }
    $tooltipText .= "<table class=\"item-tooltip-table\" cellpadding=\"0\">";
    $itemtable .= "<div class=\"myTable\">";
    /* get character item specific information */
    if ($itemguid) {
        switchConnection("characters", REALM_NAME);
        $enchantmentsData = explode(" ", mysql_result(execute_query("SELECT `data` FROM `item_instance` WHERE `guid` = " . $itemguid . " LIMIT 1"), 0));
    }
    /* Random Enchantment PART 1*/
    $ItemRandomName = "";
    if ($itemguid && ($itemdata["RandomProperty"] || $itemdata["RandomSuffix"])) {
        $FirstEnchant = $defines["RANDOM_1"][CLIENT];
        if ($itemdata["RandomProperty"]) {
            $FirstEnchant += 6;
            $RandomEnchantTable = "dbc_itemrandomproperties";
        } else {
            // if($itemdata["RandomSuffix"])
            $RandomEnchantTable = "dbc_itemrandomsuffix";
        }
        switchConnection("armory", REALM_NAME);
        $ItemRandomData = mysql_fetch_assoc(execute_query("SELECT * FROM `" . $RandomEnchantTable . "`\r\n\t\t\tWHERE `ref_spellitemenchantment_1` = " . $enchantmentsData[$FirstEnchant] . " AND `ref_spellitemenchantment_2` = " . $enchantmentsData[$FirstEnchant + 3] . " AND `ref_spellitemenchantment_3` = " . $enchantmentsData[$FirstEnchant + 6] . " LIMIT 1"));
        $ItemRandomName = $ItemRandomData["name"];
    }
    /* Item Quality */
    switch ($itemdata["Quality"]) {
        case 0:
            $itemQuality = "gray";
            break;
        case 1:
            $itemQuality = "white";
            break;
        case 2:
            $itemQuality = "green";
            break;
        case 3:
            $itemQuality = "blue";
            break;
        case 4:
            $itemQuality = "purple";
            break;
        case 5:
            $itemQuality = "orange";
            break;
        case 6:
            $itemQuality = "gold";
            break;
            /* 7 */
        /* 7 */
        default:
            $itemQuality = "red";
    }
    $tooltipText .= tooltip_addsinglerow("<span class=\"item-quality-" . $itemQuality . "\">" . $itemdata["name"] . " " . $ItemRandomName . "</span>", "item-text-name");
    $itemtable .= "<span class=\"my" . ucfirst($itemQuality) . " myBold myItemName\"><span class=\"\">" . $itemdata["name"] . "</span><span class=\"\"> </span></span>";
    /* Item Binding */
    switch ($itemdata["bonding"]) {
        case 1:
            $itemBinding = $lang["binds_when_pickup"];
            break;
        case 2:
            $itemBinding = $lang["binds_when_equipped"];
            break;
        case 3:
            $itemBinding = $lang["binds_when_used"];
            break;
        case 4:
            $itemBinding = $lang["quest_item"];
            break;
        default:
            $itemBinding = "";
    }
    if ($itemBinding) {
        $tooltipText .= tooltip_addsinglerow($itemBinding);
        $itemtable .= "<br />" . $itemBinding;
    }
    /* Unique Status */
    if ($itemdata["Flags"]) {
        $count = 0;
        $UniqueString = "";
        foreach ($ItemFlags as $key => $value) {
            if ($itemdata["Flags"] & $key) {
                $count = 1;
                if ($value) {
                    $UniqueString = $value;
                }
            }
        }
        if ($UniqueString && $count) {
            $tooltipText .= tooltip_addsinglerow($UniqueString);
            $itemtable .= "<br />" . $UniqueString;
        } else {
            if ($config["ShowError"] && !$count) {
                $tooltipText .= tooltip_addsinglerow("<span class=\"error\">" . $lang["error"] . ": " . $lang["unknown"] . " Flags " . $itemdata["Flags"] . ", " . $lang["report_to_gm"] . "</span>");
                $itemtable .= "<br /><span class=\"error\">" . $lang["error"] . ": " . $lang["unknown"] . " Flags " . $itemdata["Flags"] . ", " . $lang["report_to_gm"] . "</span>";
            }
        }
    }
    $greenStats = array();
    /* Item Type */
    if ($itemdata["InventoryType"]) {
        switchConnection("armory", REALM_NAME);
        $itemClassRight = mysql_result(execute_query("SELECT `name` FROM `dbc_itemsubclass` WHERE `ref_itemclass` = " . $itemdata["class"] . " AND `id` = " . $itemdata["subclass"]), 0);
        if ($itemdata["InventoryType"] == 18) {
            $itemClassLeft = $itemdata["ContainerSlots"] . " " . $lang["slot"] . " " . $itemClassRight;
            $tooltipText .= tooltip_addsinglerow($itemClassLeft);
            $itemtable .= "<br />" . $itemClassLeft;
        } else {
            $itemClassLeft = $inventorytype[$itemdata["InventoryType"]];
            $tooltipText .= tooltip_adddoublerow($itemClassLeft, $itemClassRight);
            $itemtable .= "<br /><span class=\"tooltipRight\">" . $itemClassRight . "</span>" . $itemClassLeft;
        }
        /* Damage */
        $itemIsWeapon = 0;
        $minDamage = 0;
        $totalMinDamage = 0;
        $maxDamage = 0;
        $totalMaxDamage = 0;
        /* Loop through item data to check if any of the dmg_min and dmg_max fields are set and handle output as such */
        $dmg_max_index = CLIENT >= 2 ? 2 : 5;
        for ($i = 1; $i <= $dmg_max_index; $i++) {
            if ($itemdata["dmg_min" . $i]) {
                $itemIsWeapon = 1;
                $thisDelay = round($itemdata["delay"] / 1000, 2);
                $minDamage = $itemdata["dmg_min" . $i];
                $totalMinDamage += $minDamage;
                $maxDamage = $itemdata["dmg_max" . $i];
                $totalMaxDamage += $maxDamage;
                $itemDamageType = "&nbsp;";
                switch ($itemdata["dmg_type" . $i]) {
                    case 0:
                        $itemDamageType = "";
                        break;
                    case 1:
                        $itemDamageType .= $lang["holy"];
                        break;
                    case 2:
                        $itemDamageType .= $lang["fire"];
                        break;
                    case 3:
                        $itemDamageType .= $lang["nature"];
                        break;
                    case 4:
                        $itemDamageType .= $lang["frost"];
                        break;
                    case 5:
                        $itemDamageType .= $lang["shadow"];
                        break;
                    case 6:
                        $itemDamageType .= $lang["arcane"];
                        break;
                    default:
                        $itemDamageType .= $lang["unknown"] . ": " . $itemdata["dmg_type" . $i];
                }
                $itemDamageType .= "&nbsp;";
                if ($i == 1) {
                    $tooltipText .= tooltip_addsinglerow($minDamage . "-" . $maxDamage . $itemDamageType . $lang["dmg"]);
                    $itemtable .= "<br /><span class=\"\">" . $minDamage . "-" . $maxDamage . "</span><span class=\"\">" . $itemDamageType . "</span><span class=\"\">" . $lang["dmg"] . "</span>";
                } else {
                    $tooltipText .= tooltip_addsinglerow("+" . $minDamage . "-" . $maxDamage . $itemDamageType . $lang["damage"]);
                    $itemtable .= "<br /><span class=\"\">+" . $minDamage . "-" . $maxDamage . "</span><span class=\"\">" . $itemDamageType . "</span><span class=\"\">" . $lang["damage"] . "</span>";
                }
            }
        }
        if ($itemIsWeapon) {
            /* Convert delay to string to get .0 if it's not there */
            $thisDelayString = explode(".", $thisDelay);
            if (count($thisDelayString) == 1) {
                $thisDelay = $thisDelayString[0] . ".00";
            } else {
                if (count($thisDelayString) == 2 and strlen($thisDelayString[1]) == 1) {
                    $thisDelay . "0";
                }
            }
            /* Calculate DPS */
            $itemAverageDamage = ($totalMinDamage + $totalMaxDamage) / 2;
            $itemDamagePerSecond = round($itemAverageDamage / $thisDelay, 1);
            /* Convert to string to get .0 if it's not there */
            $itemDPSString = explode(".", $itemDamagePerSecond);
            if (count($itemDPSString) == 1) {
                $itemDamagePerSecond .= ".0";
            }
            $tooltipText .= tooltip_adddoublerow("(" . $itemDamagePerSecond . " " . $lang["damage_per_sec"] . ")", $lang["speed"] . " " . $thisDelay);
            $itemtable .= "<br /><span class=\"tooltipRight\">" . $lang["speed"] . " " . $thisDelay . "</span>(<span class=\"\">" . $itemDamagePerSecond . "&nbsp;</span><span class=\"\">" . $lang["damage_per_sec"] . "</span>)";
        }
        /* Armor Value */
        if ($itemdata["armor"]) {
            $tooltipText .= tooltip_addsinglerow($itemdata["armor"] . " " . $lang["armor"]);
            $itemtable .= "<br /><span class=\"\"><span class=\"\">" . $itemdata["armor"] . "</span><span class=\"\"> " . $lang["armor"] . "</span></span>";
        }
        /* Shield Block */
        if ($itemdata["block"]) {
            $tooltipText .= tooltip_addsinglerow($itemdata["block"] . " " . $lang["block"]);
            $itemtable .= "<br /><span class=\"\"><span class=\"\">" . $itemdata["block"] . "</span><span class=\"\"> " . $lang["block"] . "</span></span>";
        }
        /* Statistics */
        $isGreenStat = 0;
        for ($i = 1; $i <= 10; $i++) {
            if ($itemdata["stat_type" . $i]) {
                /* Confirmed stat */
                $statType = $itemdata["stat_type" . $i];
                $statVal = $itemdata["stat_value" . $i];
                $isGreenStat = 0;
                $statInfo = getStatType($statType, $statVal);
                if (strstr($statInfo, "[GREEN]")) {
                    $isGreenStat = 1;
                    $greenStats[] = str_replace("[GREEN]", "", $statInfo);
                } else {
                    $tooltipText .= tooltip_addsinglerow($statInfo);
                    $itemtable .= "<br /><span class=\"\"><span class=\"\">" . $statInfo . "&nbsp;</span></span>";
                }
            } else {
                break;
            }
        }
        /* More on $greenStats after Required Level line */
        /* Resistances */
        $resistances = array("arcane", "fire", "nature", "frost", "shadow");
        foreach ($resistances as $resistance) {
            if ($itemdata[$resistance . "_res"]) {
                $tooltipText .= tooltip_addsinglerow("+" . $itemdata[$resistance . "_res"] . " " . ucfirst($resistance) . " " . $lang["resistance"]);
                $itemtable .= "<br /><span class=\"\"><span class=\"\">+" . $itemdata[$resistance . "_res"] . " " . ucfirst($resistance) . " " . $lang["resistance"] . "</span></span>";
            }
        }
        /* Enchantment */
        if ($itemguid) {
            if ($enchantmentsData[$defines["PERMANENT"][CLIENT]]) {
                $tooltipText .= tooltip_addsinglerow("<span class=\"item-greenstat\">" . GetNameFromDB($enchantmentsData[$defines["PERMANENT"][CLIENT]], "dbc_spellitemenchantment") . "</span>");
            }
        }
        /* Random Enchantment PART 2 */
        if ($itemdata["RandomProperty"] || $itemdata["RandomSuffix"]) {
            if ($itemguid) {
                $RandomEnchantment = "";
                $enchvalueindex = 0;
                for ($i = $FirstEnchant; $i <= $FirstEnchant + 2 * 3; $i += 3) {
                    $enchvalueindex++;
                    if ($enchantmentsData[$i]) {
                        $RandomEnchantment = GetNameFromDB($enchantmentsData[$i], "dbc_spellitemenchantment");
                        if ($itemdata["RandomSuffix"]) {
                            $suffixFactor = GenerateEnchSuffixFactor($itemdata["ItemLevel"], $itemdata["InventoryType"], $itemdata["Quality"]);
                            $enchantvalue = round($suffixFactor * ($ItemRandomData["enchvalue_" . $enchvalueindex] / 10000));
                            $RandomEnchantment = str_replace("\$i", $enchantvalue, $RandomEnchantment);
                        }
                        $tooltipText .= tooltip_addsinglerow($RandomEnchantment);
                    }
                }
            } else {
                $tooltipText .= tooltip_addsinglerow("<span class=\"item-greenstat\">&lt;" . $lang["random_enchantment"] . "&gt;</span>");
            }
            $itemtable .= "<br /><span class=\"bonusGreen\">&lt;" . $lang["random_enchantment"] . "&gt;</span>";
        }
        /* Sockets */
        $prismatic_already = 0;
        for ($i = 1; $i <= 3; $i++) {
            $socketexist = 0;
            if ($itemdata["socketColor_" . $i]) {
                switch ($itemdata["socketColor_" . $i]) {
                    case 1:
                        $sockcol = "Meta";
                        $sockname = $lang["meta"];
                        break;
                    case 2:
                        $sockcol = "Red";
                        $sockname = $lang["red"];
                        break;
                    case 4:
                        $sockcol = "Yellow";
                        $sockname = $lang["yellow"];
                        break;
                    case 8:
                        $sockcol = "Blue";
                        $sockname = $lang["blue"];
                        break;
                    default:
                        $sockcol = "Unk";
                        $sockname = $lang["unk"];
                }
                $socketexist = 1;
            } else {
                if (!$prismatic_already && $itemguid && CLIENT && $enchantmentsData[$defines["PRISMATIC_SOCKET"][CLIENT]]) {
                    //prismatic socket
                    $sockcol = "Prismatic";
                    $sockname = $lang["prismatic"];
                    $prismatic_already = 1;
                    $socketexist = 1;
                }
            }
            if ($socketexist) {
                $socketName = $sockname . " " . $lang["socket"];
                $socketIcon = "shared/global/tooltip/images/icons/Socket_" . $sockcol . ".png";
                $socketColor = "setItemGray";
                if ($itemguid) {
                    $socket_offset = $defines["SOCKET_1"][CLIENT] + ($i - 1) * 3;
                    if ($enchantmentsData[$socket_offset]) {
                        switchConnection("armory", REALM_NAME);
                        $GemInfo = mysql_fetch_assoc(execute_query("SELECT `name`, `gemid` FROM `dbc_spellitemenchantment` WHERE `id` = " . $enchantmentsData[$socket_offset] . " LIMIT 1"));
                        $socketName = $GemInfo["name"];
                        switchConnection("mangos", REALM_NAME);
                        $socketIcon = GetIcon("item", mysql_result(execute_query("SELECT `displayid` FROM `item_template` WHERE `entry` = " . $GemInfo["gemid"] . " LIMIT 1"), 0));
                        $socketColor = "setItemYellow";
                    }
                }
                $tooltipText .= tooltip_addsinglerow("<img class=\"socketImg\" src=\"" . $socketIcon . "\">" . $socketName, $socketColor);
                $itemtable .= "<br /><span class=\"" . $socketColor . "\"><img class=\"socketImg\" src=\"" . $socketIcon . "\">" . $socketName . "</span>";
            }
        }
        //socket Bonus
        if ($itemdata["socketBonus"]) {
            if (!($SocketBonus = GetNameFromDB($itemdata["socketBonus"], "dbc_spellitemenchantment")) && $config["ShowError"]) {
                $tooltipText .= tooltip_addsinglerow("<span class=\"error\">" . $lang["error"] . ": " . $lang["unknown"] . " socketBonus " . $itemdata["socketBonus"] . ", " . $lang["report_to_gm"] . "</span>");
                $itemtable .= "<br /><span class=\"error\">" . $lang["error"] . ": " . $lang["unknown"] . " socketBonus " . $itemdata["socketBonus"] . ", " . $lang["report_to_gm"] . "</span>";
            } else {
                $socketBonusColor = "setItemGray";
                if ($itemguid) {
                    if ($enchantmentsData[$defines["SOCKET_BONUS"][CLIENT]]) {
                        $socketBonusColor = "setItemYellow";
                    }
                }
                $tooltipText .= tooltip_addsinglerow($lang["socket_bonus"] . ":&nbsp;" . $SocketBonus, $socketBonusColor);
                $itemtable .= "<br /><span class=\"" . $socketBonusColor . "\">" . $lang["socket_bonus"] . ":&nbsp;" . $SocketBonus . "</span>";
            }
        }
        /* Durability */
        if ($itemdata["MaxDurability"]) {
            if ($itemguid) {
                $tooltipText .= tooltip_addsinglerow($lang["durability"] . ":&nbsp;" . $enchantmentsData[$defines["DURABILITY"][CLIENT]] . "&nbsp;/&nbsp;" . $enchantmentsData[$defines["MAX_DURABILITY"][CLIENT]]);
            } else {
                $tooltipText .= tooltip_addsinglerow($lang["durability"] . ":&nbsp;" . $itemdata["MaxDurability"] . "&nbsp;/&nbsp;" . $itemdata["MaxDurability"]);
            }
            $itemtable .= "<br />" . $lang["durability"] . ":&nbsp;" . $itemdata["MaxDurability"] . "&nbsp;/&nbsp;" . $itemdata["MaxDurability"];
        }
    }
    //Requires Class
    $allowclass = $itemdata["AllowableClass"];
    if ($allowclass != -1 && ($allowclass & 1535) != 1535) {
        $ClassesString = ShowAllowable($allowclass, "dbc_chrclasses");
        if ($ClassesString) {
            $tooltipText .= tooltip_addsinglerow($lang["classes"] . ":" . $ClassesString);
            $itemtable .= "<br />" . $lang["classes"] . ":" . $ClassesString;
        } else {
            if ($config["ShowError"]) {
                $tooltipText .= tooltip_addsinglerow("<span class=\"error\">" . $lang["error"] . ": " . $lang["unknown"] . " AllowableClass " . $itemdata["AllowableClass"] . ", " . $lang["report_to_gm"] . "</span>");
                $itemtable .= "<br /><span class=\"error\">" . $lang["error"] . ": " . $lang["unknown"] . " AllowableClass " . $itemdata["AllowableClass"] . ", " . $lang["report_to_gm"] . "</span>";
            }
        }
    }
    //Requires Race
    $allowrace = $itemdata["AllowableRace"];
    if ($allowrace != -1 && ($allowrace & 1791) != 1791) {
        $RacesString = ShowAllowable($allowrace, "dbc_chrraces");
        if ($RacesString) {
            $tooltipText .= tooltip_addsinglerow($lang["races"] . ":" . $RacesString);
            $itemtable .= "<br />" . $lang["races"] . ":" . $RacesString;
        } else {
            if ($config["ShowError"]) {
                $tooltipText .= tooltip_addsinglerow("<span class=\"error\">>" . $lang["error"] . ": " . $lang["unknown"] . " AllowableRace " . $itemdata["AllowableRace"] . ", " . $lang["report_to_gm"] . "</span>");
                $itemtable .= "<br /><span class=\"error\">>" . $lang["error"] . ": " . $lang["unknown"] . " AllowableRace " . $itemdata["AllowableRace"] . ", " . $lang["report_to_gm"] . "</span>";
            }
        }
    }
    // Requires Level
    if ($itemdata["RequiredLevel"]) {
        $tooltipText .= tooltip_addsinglerow($lang["requires_level"] . "&nbsp;" . $itemdata["RequiredLevel"]);
        $itemtable .= "<br />" . $lang["requires_level"] . "&nbsp;" . $itemdata["RequiredLevel"];
    }
    /* Required Skill (riding, blacksmithing..) */
    if ($itemdata["RequiredSkill"]) {
        $requiredSkill = GetNameFromDB($itemdata["RequiredSkill"], "dbc_skillline");
        if ($requiredSkill) {
            $tooltipText .= tooltip_addsinglerow($lang["requires"] . "&nbsp;" . $requiredSkill . " " . $itemdata["RequiredSkillRank"]);
            $itemtable .= "<br /><span class=\"\">" . $lang["requires"] . "&nbsp;</span><span class=\"\">" . $requiredSkill . "&nbsp;</span><span class=\"\"></span><span class=\"\">" . $itemdata["RequiredSkillRank"] . "</span><span class=\"\"></span>";
        } else {
            if ($config["ShowError"]) {
                $tooltipText .= tooltip_addsinglerow("<span class=\"error\">" . $lang["error"] . ": " . $lang["unknown"] . " RequiredSkill " . $itemdata["RequiredSkill"] . ", " . $lang["report_to_gm"] . "</span>");
                $itemtable .= "<br /><span class=\"error\">" . $lang["error"] . ": " . $lang["unknown"] . " RequiredSkill " . $itemdata["RequiredSkill"] . ", " . $lang["report_to_gm"] . "</span>";
            }
        }
    }
    // Required Spell
    if ($itemdata["requiredspell"]) {
        $requiredSpell = GetNameFromDB($itemdata["requiredspell"], "dbc_spell");
        if ($requiredSpell) {
            $tooltipText .= tooltip_addsinglerow($lang["requires"] . "&nbsp;" . $requiredSpell);
            $itemtable .= "<br /><span class=\"\">" . $lang["requires"] . "&nbsp;</span><span class=\"\">" . $requiredSpell . "</span><span class=\"\"></span>";
        } else {
            if ($config["ShowError"]) {
                $tooltipText .= tooltip_addsinglerow("<span class=\"error\">" . $lang["error"] . ": " . $lang["unknown"] . " requiredspell " . $itemdata["requiredspell"] . ", " . $lang["report_to_gm"] . "</span>");
                $itemtable .= "<br /><span class=\"error\">" . $lang["error"] . ": " . $lang["unknown"] . " requiredspell " . $itemdata["requiredspell"] . ", " . $lang["report_to_gm"] . "</span>";
            }
        }
    }
    // Green Statistics
    if (count($greenStats)) {
        foreach ($greenStats as $key => $val) {
            $tooltipText .= tooltip_addsinglerow("<span class=\"item-greenstat\">" . $val . "</span>");
            $itemtable .= "<br /><span class=\"bonusGreen\">" . $val . "</span>";
        }
    }
    // Spell Data
    $showspelldata = 1;
    for ($i = 1; $i <= 5; $i++) {
        if ($itemdata["spelltrigger_" . $i] == 6) {
            $showspelldata = 0;
        }
    }
    if ($showspelldata) {
        for ($i = 1; $i <= 5; $i++) {
            if ($itemdata["spellid_" . $i]) {
                switch ($itemdata["spelltrigger_" . $i]) {
                    case 0:
                        $spellTrigger = $lang["use"];
                        break;
                    case 1:
                        $spellTrigger = $lang["equip"];
                        break;
                    case 2:
                        $spellTrigger = $lang["hit_chance"];
                        break;
                    default:
                        $spellTrigger = $lang["unknown_trigger"] . " " . $itemdata["spelltrigger_" . $i];
                }
                switchConnection("armory", REALM_NAME);
                $spellDescription = spell_parsedata(mysql_fetch_assoc(execute_query("SELECT * FROM `dbc_spell` WHERE `id` = " . $itemdata["spellid_" . $i] . " LIMIT 1")));
                if ($spellDescription) {
                    $tooltipText .= tooltip_addsinglerow("<span class=\"item-greenstat\">" . $spellTrigger . ": " . $spellDescription . "</span>");
                    $itemtable .= "<br /><span class=\"bonusGreen\">" . $spellTrigger . ": " . $spellDescription . "</span>";
                }
            }
        }
    }
    /* Item Set Data */
    if ($itemdata["itemset"]) {
        /* Get Set Name */
        switchConnection("armory", REALM_NAME);
        $setData = mysql_fetch_assoc(execute_query("SELECT * FROM `dbc_itemset` WHERE `id` = " . $itemdata["itemset"] . " LIMIT 1"));
        $setName = $setData["name"];
        for ($i = 1; $i <= 8; $i++) {
            $setItemsIds[] = $setData["item_" . $i];
        }
        /* Get Items in set */
        switchConnection("mangos", REALM_NAME);
        $setItemsQuery = "SELECT `entry`, `name` FROM `item_template` WHERE ";
        $nameloc = "name_loc" . $config["locales"];
        if ($config["locales"]) {
            $setItemsQuery = "SELECT item_template.`entry`, `name`, `" . $nameloc . "` FROM `item_template` LEFT JOIN `locales_item` ON `item_template`.`entry` = `locales_item`.`entry` WHERE ";
        } else {
            $setItemsQuery = "SELECT `entry`, `name` FROM `item_template` WHERE ";
        }
        if (in_array($itemid, $setItemsIds)) {
            $setItemsQuery .= "`item_template`.`entry` IN (";
            foreach ($setItemsIds as $value) {
                $setItemsQuery .= $value . ",";
            }
            $setItemsQuery .= "0)";
        } else {
            // Hack for gladiator sets
            $setItemsQuery .= "`itemset` = " . $itemdata["itemset"] . " AND `ItemLevel` = " . $itemdata["ItemLevel"] . " AND `Quality` = " . $itemdata["Quality"];
        }
        $setItemsQueryexecute = execute_query($setItemsQuery);
        $owned_count = 0;
        while ($setItemData = mysql_fetch_assoc($setItemsQueryexecute)) {
            if (!empty($setItemData[$nameloc])) {
                $setItemData["name"] = $setItemData[$nameloc];
            }
            $setItems[$setItemData["entry"]] = $setItemData["name"];
            if (in_array($setItemData["entry"], $itemlist)) {
                $owned_count++;
            }
        }
        $tooltipText .= tooltip_addsinglerow("<br />" . $setName . " (" . $owned_count . "/" . count($setItems) . ")", "item-set-name");
        $itemtable .= "<br /><br /><span class=\"setNameYellow\">" . $setName . " (" . $owned_count . "/" . count($setItems) . ")</span><div class=\"setItemIndent\">";
        /* Output items in set */
        foreach ($setItems as $itemID => $itemName) {
            if (in_array($itemID, $itemlist)) {
                $tooltipText .= tooltip_addsinglerow($itemName, "item-set-item-acquired");
            } else {
                $tooltipText .= tooltip_addsinglerow($itemName, "item-set-item-unacquired");
            }
            // Player does not have this item
            $itemtable .= "<br /><span class=\"setItemGray\">" . $itemName . "</span>";
        }
        $tooltipText .= tooltip_addsinglerow("<br />");
        $itemtable .= "</div><br />";
        for ($i = 1; $i <= 8; $i++) {
            if ($setData["bonus_" . $i]) {
                //How many pieces do we need?
                $requiredSetPieces = $setData["pieces_" . $i];
                //SET BONUSES
                switchConnection("armory", REALM_NAME);
                $setBonus = spell_parsedata(mysql_fetch_assoc(execute_query("SELECT * FROM `dbc_spell` WHERE `id` = " . $setData["bonus_" . $i] . " LIMIT 1")));
                if ($owned_count >= $requiredSetPieces) {
                    $tooltipText .= tooltip_addsinglerow("(" . $requiredSetPieces . ") " . $lang["set"] . ": " . $setBonus, "item-set-item-acquired");
                } else {
                    $tooltipText .= tooltip_addsinglerow("(" . $requiredSetPieces . ") " . $lang["set"] . ": " . $setBonus, "item-set-item-unacquired");
                }
                $itemtable .= "<br /><span class=\"setItemGray\">(" . $requiredSetPieces . ") " . $lang["set"] . ": " . $setBonus . "</span>";
            }
        }
    }
    /* Flavour Text */
    if ($itemdata["description"] != NULL) {
        $tooltipText .= tooltip_addsinglerow("<span class=\"myYellow\">&quot;" . $itemdata["description"] . "&quot;</span>");
        $itemtable .= "<br /><span class=\"myYellow\">&quot;" . $itemdata["description"] . "&quot;</span>";
    }
    /* Item Source */
    if ($config["ShowSource"]) {
        switchConnection("armory", REALM_NAME);
        $SourceQuery = execute_query("SELECT `item_source` FROM `cache_item_search` WHERE `item_id` = " . $itemid . " LIMIT 1");
        if ($row = mysql_fetch_assoc($SourceQuery)) {
            $ItemSource = $row["item_source"];
        } else {
            $item_search_cache = cache_item_search($itemid);
            $ItemSource = $item_search_cache["item_source"];
        }
        $tooltipText .= "<tr><td colspan=\"2\"><br /><span class=\"myYellow\">" . $lang["source"] . ":&nbsp;</span><span class=\"\">" . $ItemSource . "</span></td></tr>";
        $itemtable .= "<br /><br /><span class=\"myYellow\">" . $lang["source"] . ":&nbsp;</span><span class=\"\">" . $ItemSource . "</span>";
    }
    $tooltipText .= "</table>";
    $itemtable .= "</div>";
    return $itemguid ? $tooltipText : array($tooltipText, $itemtable);
}