function tab_effect($) {
    this.config = $;
    this.$(this.config.current_label).style.display = "";
    this.$(this.config.current_label).className = this.config.current;
    for (var _ = 0; _ < this.config.label.length; _++) if (this.config.label[_] == this.config.current_label) {
        this.config.current_content = this.config.content[_];
        break
    }
}
tab_effect.prototype.init = function (_) {
    var A = this;
    for (var $ = 0; $ < A.config.label.length; $++) {
        if (A.config.label[$] != A.config.current_label) {
            A.$(A.config.content[$]).style.display = "none";
            A.$(A.config.label[$]).className = A.config.normal
        }
        if (_ == "Hits") A.$(A.config.label[$]).onclick = function () {
            A.$(A.config.current_content).style.display = "none";
            A.$(A.config.current_label).className = A.config.normal;
            A.config.current_label = this.id;
            for (var $ = 0; $ < A.config.label.length; $++) if (A.config.label[$] == this.id) break;
            A.config.current_content = A.config.content[$];
            A.$(A.config.current_content).style.display = "";
            A.$(A.config.current_label).className = A.config.current
        };
        else A.$(A.config.label[$]).onmouseover = function () {
            A.$(A.config.current_content).style.display = "none";
            A.$(A.config.current_label).className = A.config.normal;
            A.config.current_label = this.id;
            for (var $ = 0; $ < A.config.label.length; $++) if (A.config.label[$] == this.id) break;
            A.config.current_content = A.config.content[$];
            A.$(A.config.current_content).style.display = "";
            A.$(A.config.current_label).className = A.config.current
        }
    }
};
tab_effect.prototype.$ = function ($) {
    return document.getElementById($)
};
function isGiven(_) {
    var $ = false;
    if (md == 1) if ((job == 3 && _ == 2) || (job != 3 && _ == 0)) $ = true;
    return $
}
function setNum() {
    var A = talent_str.split("");
    for (var B = 0; B < total; B++) {
        num[B] = parseInt(A[B]);
        if (isGiven(B) && num[B] == 0) num[B] = 1;
        $("lv" + B).innerHTML = num[B];
        $("img" + B).className = num[B] > 0 ? "img1" : "img2"
    }
    for (B = 0; B < total; B++) if (num[B] > 0) if (!isGiven(B)) usedPoint += num[B] * skillData[B][1];
    else usedPoint += (num[B] - 1) * skillData[B][1];
    roleLv = parseInt($("roleLv").value);
    if (md == 1) totalPoint = (roleLv - 1) * 20;
    else if (Math.floor(b / 10) == 1) totalPoint = (roleLv - 1) * 20 + 10;
    else totalPoint = (roleLv - 1) * 20 + 15;
    remainPoint = totalPoint - usedPoint;
    $("totalPoint").innerHTML = totalPoint;
    $("usedPoint").innerHTML = usedPoint;
    $("remainPoint").innerHTML = remainPoint;
    $("lv").innerHTML = roleLv;
    var _ = "";
    for (B = 0; B < total; B++) _ += num[B];
    $("str").innerHTML = _;
    canplus()
}
function setRoleLv() {
    var B = 100,
    A = /^\d+$/;
    if (!A.test($("roleLv").value)) {
        alert("Please input a corrent Level value!");
        $("roleLv").value = "1"
    }
    if ($("roleLv").value < 1) {
        alert("The Character Level should be at least Lv1");
        $("roleLv").value = "1"
    }
    if ($("roleLv").value > B) {
        alert("The Max Level Now is " + B + "!");
        $("roleLv").value = B
    }
    var _ = (parseInt($("roleLv").value) - md) * 20 - usedPoint;
    if (_ < 0) {
        alert("The Rest Points should be above 0!");
        $("roleLv").value = roleLv;
        return false
    }
    roleLv = parseInt($("roleLv").value);
    if (md == 1) totalPoint = (roleLv - 1) * 20;
    else if (Math.floor(b / 10) == 1) totalPoint = (roleLv - 1) * 20 + 10;
    else totalPoint = (roleLv - 1) * 20 + 15;
    remainPoint = totalPoint - usedPoint;
    $("lv").innerHTML = roleLv;
    $("totalPoint").innerHTML = totalPoint;
    $("remainPoint").innerHTML = remainPoint;
    canplus()
}
function getRoleLv(A, $) {
    var _ = skillData[A][0];
    for (var B = 0; B < lvData.length; B++) if (lvData[B][0] == _ && lvData[B][1] == $ + 1) return lvData[B][2]
}
function getTidByName($) {
    for (var _ = 0; _ < skillData.length; _++) if (skillData[_][0] == $) return _
}
function show(D, C) {
    var A = 0,
    B = window.event ? window.event : C;
    if (checkPreSkills(D)) A = 1;
    var $ = roleLv + "/" + remainPoint + "/" + A,
    _ = "b=" + b + "&tid=" + D + "&lv=" + num[D] + "&chr=" + $;
    Face_MouseOver(_, C)
}
function checkPreSkills(C) {
    var A = skillData[C][2];
    if (A.length > 0) {
        var B = A.split("\uff0c");
        for (var D = 0; D < B.length; D++) {
            var $ = B[D].split("Lv"),
            _ = getTidByName($[0]);
            if (num[_] < $[1]) return false
        }
    }
    return true
}
function count(_, $) {
    if (num[_] < skillData[_][3] && getRoleLv(_, num[_]) <= roleLv && checkPreSkills(_)) if (skillData[_][1] <= remainPoint) {
        num[_] += 1;
        usedPoint += skillData[_][1];
        remainPoint = totalPoint - usedPoint
    } else {
        alert("You don't have enough points left!");
        return false
    }
    set(_, $)
}
function subtract(B) {
    var _ = true;
    for (var D = 0; D < skillData.length; D++) {
        var A = skillData[D][2].split("\uff0c");
        for (var C = 0; C < A.length; C++) if (skillData[D][2].indexOf(skillData[B][0]) > -1) {
            var $ = A[C].split("Lv");
            if (num[D] > 0 && num[B] <= $[1]) _ = false
        }
    }
    return _
}
function reduce(A, $) {
    var _ = true;
    if (isGiven(A) && num[A] <= 1) _ = false;
    if (subtract(A) && num[A] > 0 && _) {
        num[A] -= 1;
        usedPoint -= skillData[A][1];
        remainPoint = totalPoint - usedPoint
    }
    set(A, $);
    return false
}
function canplus() {
    for (var A = 0; A < total; A++) {
        if (num[A] < skillData[A][3] && getRoleLv(A, num[A]) <= roleLv && checkPreSkills(A)) {
            $("img" + A).className = "img1";
            for (var _ = 0; _ <= 2; _++) if ($("limg_" + A + "_" + _) != null) $("limg_" + A + "_" + _).style.visibility = "visible"
        } else {
            $("img" + A).className = "img2";
            for (_ = 0; _ <= 2; _++) if ($("limg_" + A + "_" + _) != null) $("limg_" + A + "_" + _).style.visibility = "hidden"
        }
        if (num[A] > 0) {
            $("img" + A).className = "img1";
            $("outerdiv" + A).className = "libj";
            for (_ = 0; _ <= 2; _++) if ($("limg_" + A + "_" + _) != null) $("limg_" + A + "_" + _).style.visibility = "visible"
        }
    }
}
function set(B, _) {
    $("lv" + B).innerHTML = num[B];
    $("usedPoint").innerHTML = usedPoint;
    $("remainPoint").innerHTML = remainPoint;
    $("img" + B).className = num[B] > 0 ? "img1" : "img2";
    $("outerdiv" + B).className = num[B] > 0 ? "libj" : "anbj";
    canplus();
    $("lv").innerHTML = roleLv;
    var A = "";
    for (var C = 0; C < total; C++) A += num[C];
    $("str").innerHTML = A;
    show(B, _)
}
function resetAll() {
    for (var A = 0; A < total; A++) {
        if (isGiven(A)) num[A] = 1;
        else num[A] = 0;
        $("lv" + A).innerHTML = num[A];
        $("img" + A).className = num[A] > 0 ? "img1" : "img2";
        $("outerdiv" + A).className = num[A] > 0 ? "libj" : "anbj"
    }
    var _ = "";
    for (A = 0; A < total; A++) _ += num[A];
    $("str").innerHTML = _;
    roleLv = 1;
    if (md == 1) totalPoint = (roleLv - 1) * 20;
    else if (Math.floor(b / 10) == 1) totalPoint = (roleLv - 1) * 20 + 10;
    else totalPoint = (roleLv - 1) * 20 + 15;
    usedPoint = 0;
    remainPoint = totalPoint - usedPoint;
    $("lv").innerHTML = roleLv;
    $("roleLv").value = roleLv;
    $("usedPoint").innerHTML = usedPoint;
    $("totalPoint").innerHTML = totalPoint;
    $("remainPoint").innerHTML = remainPoint;
    canplus()
}
function copyurl() {
    var _ = $("copyurl").innerText ? $("copyurl").innerText : $("copyurl").textContent;
    copyToClipboard(_)
}
var copyToClipboard = function ($) {
    try {
        if (window.clipboardData) {
            window.clipboardData.setData("Text", $);
//            alert("Copied Successfully! You now can paste it!")
        } else {
            var A = document.getElementById("flashCopier");
            if (!A) {
                A = document.createElement("div");
                A.id = "flashCopier";
                A.style.width = "0px";
                A.style.height = "0px";
                A.style.visibility = "hidden";
                document.body.appendChild(A)
            }
            A.innerHTML = "";
            var _ = [];
            _.push("<embed type=\"application/x-shockwave-flash\" width=\"0\" height=\"0\"");
            _.push("src=\"swf/clipboard.swf\" FlashVars=\"clipboard=");
            _.push(encodeURIComponent($));
            _.push("\"></embed>");
            A.innerHTML = _.join("");
//            alert("Copied Successfully! You now can paste it!")
        }
    } catch(B) {}
};
function printTalent() {
    var B = "md=" + md + "&b=" + b + "&lv=" + roleLv + "&str=" + $("str").innerHTML + "&usedPoint=" + usedPoint,
    A = getTalent(B),
    _ = window.open("", "", "toolbar=no,menubar=yes,status=yes,scrollbars=yes,resizable=yes");
    _.document.open();
    _.document.write(A);
    _.document.close()
}
var tcache = "",
cache = new Array();
function $($) {
    return document.getElementById($)
}
document.write("<div id=\"divReview\" style=\"left:344px;background-color:#000; visibility: hidden; position: absolute; top: 210px; z-index:1000;  filter:alpha(opacity=90); opacity:0.90;\"></div>");
function Face_MouseOver(F, D) {
    var E = 30,
    B = D.clientX,
    C = D.clientY,
    D = window.event ? window.event : D,
    _ = getScrollHeight(),
    A = 0,
    G = $("divReview").clientHeight;
    if (C + 5 + G >= document.documentElement.clientHeight) A = -G;
    $("divReview").style.top = _ + C + E + A + "px";
    $("divReview").style.left = B + 20 + "px";
    $("divReview").style.visibility = "visible";
    showInfo(F)
}
function Face_MouseOut() {
    $("divReview").style.visibility = "hidden"
}
function getScrollHeight() {
    var $;
    if (typeof window.pageYOffset != "undefined") $ = window.pageYOffset;
    else if (typeof document.compatMode != "undefined" && document.compatMode != "BackCompat") $ = document.documentElement.scrollTop;
    else if (typeof document.body != "undefined") $ = document.body.scrollTop;
    return $
}
function getSkillData($) {
    var A = GetXmlHttpObject();
    if (A == null) {
        alert("Browser does not support HTTP Request");
        return
    }
    var _ = "/calc_files/getSkillData.php";
    _ = _ + "?b=" + $;
    A.open("GET", _, false);
    A.send(null);
    return A.responseText
}

function getLvData($) {
    var A = GetXmlHttpObject();
    if (A == null) {
        alert("Browser does not support HTTP Request");
        return
    }
    var _ = "/calc_files/getLvData.php";
    _ = _ + "?b=" + $;
    A.open("GET", _, false);
    A.send(null);
    return A.responseText
}
function showInfo(B) {
    var _ = GetXmlHttpObject();
    if (_ == null) {
        alert("Browser does not support HTTP Request");
        return
    }
    var A = "/calc_files/showInfo.php?" + B;
    tcache = TraversalCache(B);
    if (tcache.length) $("divReview").innerHTML = tcache;
    else {
        _.open("GET", A, true);
        _.onreadystatechange = function () {
            $("divReview").innerHTML = "<span style=\"font-size:13px; color:#999999;\">Loading...</span>";
            if (_.readyState == 4 && _.status == 200) {
                $("divReview").innerHTML = _.responseText;
                cache.push(new Array(B, _.responseText))
            }
        };
        _.send(null)
    }
}

function getTalent(A) {
    var $ = GetXmlHttpObject();
    if ($ == null) {
        alert("Browser does not support HTTP Request");
        return
    }
    var _ = "/calc_files/getTalent.php?" + A;
    $.open("GET", _, false);
    $.send(null);
    return $.responseText
}
function GetXmlHttpObject() {
    var _ = null;
    if (window.ActiveXObject) {
        try {
            _ = new ActiveXObject("Msxml2.XMLHTTP")
        } catch($) {
            try {
                _ = new ActiveXObject("Microsoft.XMLHTTP")
            } catch($) {
                alert("Browser does not support HTTP Request")
            }
        }
    } else if (window.XMLHttpRequest) _ = new XMLHttpRequest();
    else alert("Browser does not support HTTP Request");
    return _
}
function TraversalCache($) {
    for (var _ = 0; _ < cache.length; _++) if (cache[_][0] == $) return cache[_][1];
    return false
}
