//Antonin Foller, 2004-2005

window.onload = do_pisnicky
var baseSize = 25
var radekHeight = baseSize * 1.6
var radekPadding = baseSize * 0.6
var accordY = baseSize * 1.0
//window.onresize = do_pisnicky 

//projede pisnicky v dokumentu, posune akordy.
function do_pisnicky(){
//alert(document.body.style.fontSize)

 //document.body.style.fontSize = ''+baseSize+'px'
 
 
 
 //var divs = document.all.tags('DIV');
 var divs = document.getElementsByTagName('DIV');
//alert(divs)

 //najit vsechny pisnicky v dokumentu
 for (var d = 0; d < divs.length; d++) {
   var pisnicka = divs[d];
   
   if (pisnicka.className == 'pisnicka') {
   
    //v pisnicce najit akordy, pokud jsou
    
  	var takordy = getAkordy(pisnicka);
  	
  
  	if (takordy) {
  	  var akordy = takordy.innerHTML;
  	  
  	  ZmenAkordy(pisnicka, akordy);
  	};//if (takordy)
   };//if (pisnicka.className == 'pisnicka') {
 };
 Transpose(document.getElementById('kuku'),1)
};

function zobraznoty() {
  var notykam = document.getElementById('notykam');
  if (notykam) {
    var zaklad = notykam.innerHTML;
    
  }
}
//projede vsechny akordy v pisnicce a nastrka tam akordy uvedene v poli.
function ZmenAkordy(pisnicka, akordy) {

  var aakordy = akordy.split(",")
  //span jsou akordy.
  var divs = pisnicka.getElementsByTagName('SPAN');
  //var divs = pisnicka.all.tags('SPAN');
  for (var d = 0; d < divs.length; d++) {
   var ac = divs[d];
   
    //novy akord ze seznamu
    var takord = aakordy[d];
    takord = takord.trim();
    ac.title = takord;
    takord = formatAkord (takord);
    
    ac.innerHTML = takord;
    //posadit akord nad text
    var mtop = ac.offsetTop
    ac.style.position = 'absolute';
    ac.style.top = (mtop-accordY)//+'px'
    ac.style.left = ac.offsetLeft+3;
  }
  /*
  var divs = pisnicka.getElementsByTagName('SPAN');
  //var divs = pisnicka.all.tags('DIV');
  for (var d = 0; d < divs.length; d++) {
   var ac = divs[d];
    if (ac.className.indexOf('radek')>=0) {
     var mtop = ac.offsetTop
     ac.style.height = ''+radekHeight+'px';
     ac.style.paddingTop = ''+radekPadding+'px';
  
     ac.style.top = mtop
    };
  }
  */
};

function formatAkord(akord) {
  var takord = akord;
  takord = takord.substring(0,1) + '<font class="index">' + takord.substring(1) + '</font>';
  //if (takord.indexOf('7')>=0) takord=takord.replace('7','<font class="index">7</font>');
  return takord;
}
 
function getAkordy(divs) {
  var divs = divs.getElementsByTagName('DIV');
  //alert(divs);
  //var divs = divs.all.tags('DIV');
  for (var d = 0; d < divs.length; d++) {
   var ac = divs[d];
   //alert(ac.className);
   if (ac.className=='akordy') return ac;
  }; 
};






//vola Transpose, teto funkci staci kterykoliv element z pisnicky.
function TransposePart(el,nahoru){

 while (el.tagName!='BODY'){
  
   if(el.className=='pisnicka') {
   
     return Transpose(el,nahoru?1:-1)
   }
   el = el.parentNode;
 }
}

//projede vsechny akordy a posune je o pulton nahoru.
//Ty akordy, co nepozna, oznaci ?
function Transpose(pisnicka,kam){
  var divs = pisnicka.getElementsByTagName('SPAN');
  //var divs = pisnicka.all.tags('SPAN');
  for (var d = 0; d < divs.length; d++) {
   var ac = divs[d];
    var akord = ac.title;
    
    var baseakord = akord.substring(0,1);
    var zbytekakord = akord.substring(1);

    if ('#'==zbytekakord.substring(0,1)) {//je to s krizkem.
      baseakord += '#';
      zbytekakord =  zbytekakord.substring(1);
    } else {
    }

    var mol = true;
    if (baseakord<='Z') mol = false;
    baseakord = baseakord.toUpperCase(); 
    
    
    var akordy = 'C,C#,D,D#,E,F,F#,G,G#,A,B,H'.split(',');
    var pozice = akordy.findIndex(baseakord);
    
    var novapozice = (akordy.length + pozice + kam) % akordy.length;
    
    
    var novyakord = akordy[novapozice];
    if (mol) novyakord = novyakord.toLowerCase();
    novyakord += zbytekakord;
    
    ac.title = novyakord;
    ac.innerHTML = formatAkord(novyakord);
  }
}

//proc to delat jednoduse, kdyz to jde slozite....
function Transpose1(pisnicka,nahoru){
  //akordy jsou v tagu SPAN
  
  var divs = pisnicka.all.tags('SPAN');
  for (var d = 0; d < divs.length; d++) {
   var ac = divs[d];
    var akord = ac.innerHTML;
    //.split(separator
    var akordy=',C,C#,D,D#,E,F,F#,G,G#,A,B,H,C,c,c#,d,d#,e,f,f#,g,g#,a,b,h,c,Cm,C#m,Dm,D#m,Em,Fm,F#m,Gm,G#m,Am,Bm,Hm,Cm,C7,C#7,D7,D#7,E7,F7,F#7,G7,G#7,A7,B7,H7,C7,c7,c#7,d7,d#7,e7,f7,f#7,g7,g#7,a7,b7,h7,c7,'
    //alert(akord)
    //var pos = nahoru?akordy.indexOf(','+akord+','):akordy.lastIndexOf(','+akord+',')
    var pos = akordy.indexOf(','+akord+',')
    
    if (pos>=0) { 
      //nasel se akord. Najit carku, ktera ho ukoncuje. Za ni je dalsi akord.
      
      pos = nahoru?akordy.indexOf(',', pos+1):pos;
    
      if (pos>=0){
        // a ted vyriznout ten novy akord.
        var pos1 = nahoru?akordy.indexOf(",", pos+1):akordy.lastIndexOf(',', pos-1)
        akord = nahoru?akordy.substring(pos+1,pos1):akordy.substring(pos1+1,pos)
      } 
    } else {//kdyz se nenajde akord.
      akord += '?'
    };//if (pos>=0)
    ac.innerHTML = akord
  }
};

Array.prototype.findIndex = function(value){ for (var i=0; i < this.length; i++) { if (this[i] == value) { return i; } } return null; };
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,"");}

