// JavaScript Document
function compare_skills(a, b) {
	if (a.skill_name.toLowerCase() > b.skill_name.toLowerCase()) return 1;
	if (a.skill_name.toLowerCase() < b.skill_name.toLowerCase()) return -1;
	if (a.grade > b.grade) return 1;
	if (a.grade < b.grade) return -1;
	return 0;
}

function skill(info) {
    
	this.level = info[0];
	this.id = info[1];
	this.skill_name = info[2];
	if (this.skill_name == 'Create Item' && document.location.href.indexOf('dwarf') == -1) {
		this.skill_name = 'Create Common Item';
	}
	this.grade = info[3];
	this.type = info[4];
	this.mp = info[5];
	this.hp = info[6];
	this.sp = info[7];
	this.description = info[8].replace(/"/g, '');
}

var skill_class = function (name) {
    
    var instance = {

        test: 'foo',
        name: name.replace('mage', 'mystic').replace('heirophant', 'hierophant').replace('evas', 'eva\'s'),
        skills_sorted: false,
        skills: Array(),
        skills_by_level: Array(),
        first_skill_level: -1,

        add_skill: function (level, id, skill_name, grade, type, mp, hp, sp, description) {
            var info = new Array(level, id, skill_name, grade, type, mp, hp, sp, description);
            var new_skill = new skill(info);
            
            instance.skills.push(new_skill);
        },
        
        output: function (level) {
            if (!instance.skills_sorted) {
                for (var key in instance.skills_by_level) {
                    instance.skills_by_level[key].sort(compare_skills);
                }
                instance.skills_sorted = true;
            }
            if (instance.name != "") {
                output = '<div id="class_title">' + first_to_upper(instance.name) + ' Skills</div>' +
                         '<div id="level_select">' + instance.level_select(level) + '</div>';
                         
                output += '<table id="skill_table" width="510" cellpadding="3" cellspacing="1" border="0" align="center">' +
                       '<tr style="font-weight: bold;">' +
                       '<td class="skill_table_header">&nbsp;</td>' +
                       '<td class="skill_table_header">Level</td>' +
                       '<td class="skill_table_header">Skill&nbsp;Name</td>' +
                       '<td class="skill_table_header">Skill Level</td>' +
                       '<td class="skill_table_header">MP</td>' +
                       '<td class="skill_table_header">HP</td>' +
                       '<td class="skill_table_header">SP&nbsp;Cost</td>' +
                       '<td class="skill_table_header">Description</td>' +
                       '</tr>';
                       
                if (level != -1) {
                    output += instance.generate_skills(level);
                }
                else {
                    for (var key in instance.skills_by_level) {
                        output += instance.generate_skills(key);
                    }
                }
                output += '</table>';
            }
            else { output = '&nbsp;'; }
            
            document.getElementById('skill_table_content').innerHTML = output;
        },
        
        sort_levels: function () {
            
            var tmp_array = Array();
            for (var i = 0; i < instance.skills.length; i++) {
                var level = instance.skills[i].level;
                if (!instance.skills_by_level[level]) {
                    instance.skills_by_level[level] = [];
                    tmp_array.push(level);
                }
                
                instance.skills_by_level[level].push(instance.skills[i]);
                instance.first_skill_level = (instance.first_skill_level == -1 || (level < instance.first_skill_level)) ? level : instance.first_skill_level;
            }
            tmp_array.sort(instance.num_sort);
            
            var tmp_skills = Array();
            for (var i = 0; i < tmp_array.length; i++) {
                var level = tmp_array[i];
                tmp_skills[level] = instance.skills_by_level[level];
            }
            instance.skills_by_level = tmp_skills;
            
        },
        
        level_select: function (level) {
            output = '<p style="margin-right: 20px; text-align: right; margin-top: 3px; margin-bottom: 10px; color: #72B9BC;">' +
                     '<b>Level: </b><select style="font-weight: bold; background: #0B283B; color: #72B9BC;" name="level_selector" onChange="javascript: my_skills.output(this.options[this.selectedIndex].value);">';
            output += '<option value="-1">All</option>';
            for (var key in instance.skills_by_level) {
                output += '<option value="' + key + '"' + ((key == level) ? ' SELECTED' : '') + '>' + key + '</option>';
            }
            output += '</select></p>';
            return output;
        },
        
        generate_skills: function(level) {
            var tmp_output = '';
            for (i = 0; i < instance.skills_by_level[level].length; i++) {
                var img_name = 'skill';
                var id_to_string = new String(instance.skills_by_level[level][i].id);
                
                for (j = id_to_string.length; j < 4; j++) {
                    img_name += '0';
                }
                img_name += id_to_string + '.jpg';
                
                tmp_output += '<tr>' +
                         '<td class="skill_table_cell" align="center" valign="middle"><img src="/images/skill_icons/' + img_name + '" style="border: solid 1px #FFFCB9;"></td>' +
                         '<td class="skill_table_cell" align="center">' + instance.skills_by_level[level][i].level + '</td>' +
                         '<td class="skill_table_cell" align="center">' + instance.skills_by_level[level][i].skill_name + '</td>' +
                         '<td class="skill_table_cell" align="center">' + instance.skills_by_level[level][i].grade + '</td>' +
                         '<td class="skill_table_cell" align="center">' + instance.skills_by_level[level][i].mp + '</td>' +
                         '<td class="skill_table_cell" align="center">' + instance.skills_by_level[level][i].hp + '</td>' +
                         '<td class="skill_table_cell" align="center">' + instance.skills_by_level[level][i].sp + '</td>' +
                         '<td class="skill_table_cell">' + instance.skills_by_level[level][i].description + '</td>' +
                         '</tr>';
            }
            return tmp_output;
        },
        
        num_sort: function(a, b) {
            //var a = new Number(a);
            //var b = new Number(b);
            if (a > b) return 1;
            if (a < b) return -1;
            return 0;
        }
    };
    return instance;
}

function first_to_upper(in_string) {
	var out_string = '';
	for (var i = 0; i < in_string.length; i++) {
		if (i == 0 || in_string.charAt(i-1) == ' ') {
			out_string += in_string.charAt(i).toUpperCase();
		}
        else {
			out_string += in_string.charAt(i);
		}
	}
	return out_string;
}