var dota_heroes;

function getherobyid(heroid) {
    for(var i=0;i<dota_heroes.length;i++){
        if (dota_heroes[i].id == heroid) {
            return dota_heroes[i];
        }
    }
    return null;
}

function loadheroes(){
    var herourl = 'heroes.php';

    var herolist = $("<select />").appendTo("#heroes");
    herolist.addClass("span-14").attr("id","hero_select");

    $.getJSON(herourl, function(data) {
        for (var idx in data) {
            data.sort(function(a,b) {
                return (a.name > b.name) ? 1 : -1
            });

            $("<option />").attr({
                "value":data[idx].id
            }).html(data[idx].name
                + " - " + data[idx].type + " (" + data[idx].affiliation + " / "
                + data[idx].primaryattribute + ")").appendTo(herolist);
        }
    });
}

function renderherodetails(hero_data) {
    var details = $("<div />").css({
        "width":"400px"
    }).attr({
        "id":'hero_dialog_' + hero_data.code
    });
    
    $("<div />").html(hero_data['name'] + " - " + hero_data['type']).appendTo(details);
    $("<div />").html(hero_data['backgroundstory']).appendTo(details);
    $("<div />").html(hero_data['information']).appendTo(details);
    $("<div />").html("Affiliation: "+ hero_data['affiliation']).appendTo(details);
    $("<div />").html("Tavern: "+ hero_data['tavern']).appendTo(details);
    $("<div />").html("Base Damage: " + hero_data['basedamagelower'] + " - " + hero_data['basedamageupper']).appendTo(details);
    $("<div />").html("Starting Damage: " + hero_data['startingdamagelower'] + " - " + hero_data['startingdamageupper']).appendTo(details);
    $("<div />").html("Base Armor: "+ hero_data['basearmor']).appendTo(details);
    $("<div />").html("Starting Armor: "+ hero_data['startingarmor']).appendTo(details);
    $("<div />").html("Primary Attribute: "+ hero_data['primaryattribute']).appendTo(details);
    $("<div />").html("Strength: " + hero_data['strength'] + " per lvl +" + hero_data['strengthperlevel']).appendTo(details);
    $("<div />").html("Agility: " + hero_data['agility'] + " per lvl +" + hero_data['agilityperlevel']).appendTo(details);
    $("<div />").html("Intelligence: " + hero_data['intelligence'] + " per lvl +" + hero_data['intelligenceperlevel']).appendTo(details);
    $("<div />").html("Movespeed: " + hero_data['movespeed']).appendTo(details);
    $("<div />").html("Baseattacktime: " + hero_data['baseattacktime']).appendTo(details);
    $("<div />").html("Attackrange: " + hero_data['attackrange']).appendTo(details);
    $("<div />").html("Missilespeed: " + hero_data['missilespeed']).appendTo(details);
    $("<div />").html("Attackdamage point: " + hero_data['attackdamagepoint']).appendTo(details);
    $("<div />").html("Attackbackswing Point: " + hero_data['attackbackswingpoint']).appendTo(details);
    $("<div />").html("Castdamage point: " + hero_data['castdamagepoint']).appendTo(details);
    $("<div />").html("Castbackswing Point: " + hero_data['castbackswingpoint']).appendTo(details);
    $("<div />").html("Sight day: " + hero_data['sightday']).appendTo(details);
    $("<div />").html("Sight night: " + hero_data['sightnight']).appendTo(details);
    /*
    *'id', 'load_dts', 'status'
    */
   
    if($('#zooms .hero_dialog_' + hero_data.code).length > 0) {
        $('#zooms .hero_dialog_' + hero_data.code).dialog('open');
    } else {
        $("#zooms").append(details);
        details.dialog({
            autoOpen: true,
            title: hero_data.name
        });        
    }
}

function loadherodetails() {
    var herourl = 'heroes.php';

    if (!dota_heroes) {
        $.getJSON(herourl, function(data) {
            dota_heroes = data;
            renderheroeslist();
        })
    } else {
        renderheroeslist();
    }
}

function renderheroeslist() {
    for (var idx in dota_heroes) {
        dota_heroes.sort(function(a,b) {
            return (a.name > b.name) ? 1 : -1
        });

        var hero_icon = $("<div />");

        var hero_details_imagelink = $("<a />").addClass("hero-link").attr({
            "href":"#" + dota_heroes[idx].code
        });
        hero_details_imagelink.append($("<img />").css({
            "border":"0px"
        }).attr({
            "src":"heroes/" + dota_heroes[idx].code + ".gif"
        }));
        hero_details_imagelink.appendTo(hero_icon);

        hero_details_imagelink.data("hero",dota_heroes[idx].id);

        herolist = $("#hero_select");
        hero_details_imagelink.click(function() {
            herolist.val($(this).data("hero"));
        });

        hero_icon.append("<br />");

        var hero_details_link = $("<a />").addClass("hero-link").attr({
            "href":"#" + dota_heroes[idx].code
        });
        hero_details_link.append(dota_heroes[idx].name + "<br />" + dota_heroes[idx].type);
        hero_details_link.appendTo(hero_icon);
        hero_icon.addClass("hero-icon");

        hero_details_link.data("herodata",dota_heroes[idx]);
        hero_details_link.click(function(){
            renderherodetails($(this).data("herodata"));
        });

        if (dota_heroes[idx].affiliation == "Sentinel") {
            hero_icon.appendTo("#sentinel");
        }
        else if (dota_heroes[idx].affiliation == "Scourge") {
            hero_icon.appendTo("#scourge");
        }
    }
}
