// ==UserScript==
// @name           WoD-SK-MeineKlasse
// @namespace      http://hd42.de/wod
// @description    Fügt einen Button ein, um Klasse und Volk des Helden direkt auszuwählen
// @include        http*://*.world-of-dungeons.*/wod/spiel/hero/items.php*
// @include        http*://*.world-of-dungeons.*/wod/spiel/trade/trade.php*
// ==/UserScript==

var el = document.getElementsByName("EQ_SEARCH_GIS")[0];
if(!el){ // Markt
	el = document.getElementsByName("sp_notmine")[0];
}
if(el && el.getAttribute('type')!='hidden'){
	var lastRow = el.parentNode.parentNode;
	var button = document.createElement('input');
	button.setAttribute('class', 'button');
	button.setAttribute('type', 'button');
	button.setAttribute('value', 'Meine Klasse/Volk');
	button.addEventListener('click', selectClassAndRace, true);
	var cell = document.createElement('td');
	cell.appendChild(button);
	lastRow.appendChild(cell);
}

function selectClassAndRace(){
	var heroClasses = new Array();
		heroClasses['Aben']=22;
		heroClasses['Barb']=2;
		heroClasses['Bard']=7;
		heroClasses['Gauk']=71;
		heroClasses['Gele']=3;
		heroClasses['Glad']=1;
		heroClasses['Hasa']=17;
		heroClasses['Jäge']=4;
		heroClasses['Magi']=59;
		heroClasses['Pala']=67;
		heroClasses['Prie']=69;
		heroClasses['Quac']=30;
		heroClasses['Ritt']=68;
		heroClasses['Scha']=11;
		heroClasses['Schü']=21;
		heroClasses['Zaub']=23;
	var heroClass = findHeroClass();
	var heroClassCode = heroClasses[heroClass.substring(0,4)];

	var heroRaces = new Array();
		heroRaces['Be']=16;
		heroRaces['Di']=5;
		heroRaces['Gn']=14;
		heroRaces['Gr']=6;
		heroRaces['Ha']=13;
		heroRaces['Hü']=15;
		heroRaces['Ke']=20;
		heroRaces['Ma']=12;
		heroRaces['Ra']=19;
		heroRaces['Ti']=8;
		heroRaces['Wa']=10;
	var heroRace = findHeroRace();
	var heroRaceCode = heroRaces[heroRace.substring(0,2)];

	GM_log('heroClass:'+heroClass+':'+heroClassCode);
	GM_log('heroRace:'+heroRace+':'+heroRaceCode);

	var classSelect = document.getElementsByName("EQ_SEARCH_FK")[0];
	if(!classSelect){//Markt
		classSelect = document.getElementsByName("sp_figur_klasse")[0];
	}
	var raceSelect = document.getElementsByName("EQ_SEARCH_RA")[0];
	if(!raceSelect){//Markt
		raceSelect = document.getElementsByName("sp_rasse")[0];
	}

	classSelect.value=heroClassCode;
	raceSelect.value=heroRaceCode;
}

function findHeroClass(){
  var heroClassImg = findFirstElementByClassName('img', 'font_Hero_Class');
  if(heroClassImg){
    return heroClassImg.alt
  }
  var heroShort = findFirstElementByClassName('table', 'hero_short');
  if(heroShort){
		var spans = heroShort.getElementsByTagName('span');
		return spans[1].firstChild.data;
	}
}

function findHeroRace(){
  var heroRaceImg = findFirstElementByClassName('img', 'font_Hero_Race');
  if(heroRaceImg){
    return heroRaceImg.alt
  }
  var heroShort = findFirstElementByClassName('table', 'hero_short');
  if(heroShort){
		var spans = heroShort.getElementsByTagName('span');
		return spans[2].firstChild.data.split(' ')[0];
	}
}

function findFirstElementByClassName(tagName, myClassName){
	var elements = document.getElementsByTagName(tagName);
	for (var i = 0; (i < elements.length); i++) {
	    if(trim(elements[i].className)==myClassName){
				return elements[i];
		}
	}
}

function trim(string) {
  return string.replace(/^\s+/, '').replace (/\s+$/, '');
}
