function toPrint(type,who)
{

    if(isForPrint!==true) return;

    var chordElem = who==undefined?'#novos_acordes':('#acorde_novo'+who);

    switch(type)
    {

        case 1: //guitar
        case 3: //cavaco

            if(type==3){
                if($(chordElem+" div.cavaco-bg img").length>0) return;
                
                $(chordElem+" div.ac_grid").addClass("cavaco-bg").prepend("<img src=/images/chords/grd2.gif style='display:none'>");
            }
            else
            {
                if($(chordElem+" div.guitar-bg img").length>0) return;
                
                $(chordElem+" div.ac_grid").addClass("guitar-bg").prepend("<img src=/images/chords/grd.gif style='display:none'>");
            }
            $("span.ac_n1").html("<img src=/images/chords/1.gif>");
            $("span.ac_n2").html("<img src=/images/chords/2.gif>");
            $("span.ac_n3").html("<img src=/images/chords/3.gif>");
            $("span.ac_n4").html("<img src=/images/chords/4.gif>");
            $("span.ac_n5").html("<img src=/images/chords/5.gif>");
            
            $("span.ac_pestana").html("<img src=/images/chords/bar.gif>");
            
            $(".ac_notas span.ac_nao").html("<img src=/images/chords/x.gif>");
            
            $(".ac_notas span.ac_baixo").html("<img src=/images/chords/op.gif>");
            $(".ac_notas span.ac_sim").html("<img src=/images/chords/ov.gif>");
            
            $(".ac_notas span img").hide();
        
        break;
        
        case 2: //piano
            if($(chordElem+" div.piano-bg img").length>0) return;
            
            $(chordElem+" div.ac_grid").addClass("piano-bg").prepend("<img src=/images/chords/piano.png style='display:none'>");
            $(".piano-bg span.ac_baixo").html("<img src=/images/chords/o.gif>");
            $(".piano-bg span.ac_sim").html("<img src=/images/chords/ob.gif>");
        
        break;
    }
}


//Fun��es de impress�o dos acordes
var playa=new Array();
//varia os acordes
function variar_acorde(id, nota, tipo){
  var pos_acorde = retorna_pos_acorde(nota);
  if(tipo == 1)
    var arrAcordes = aC;
  else if(tipo == 2)
    var arrAcordes = aCT;
  else if(tipo == 3)
    var arrAcordes = aCC;
  if(arrPosAcorde[pos_acorde] == undefined)
    arrPosAcorde[pos_acorde] = 1;
  else if(arrPosAcorde[pos_acorde] +1 >= arrAcordes[pos_acorde].length)
    arrPosAcorde[pos_acorde] = 0;
  else
    arrPosAcorde[pos_acorde] ++;
  var cordas = arrAcordes[pos_acorde][arrPosAcorde[pos_acorde]];
  document.getElementById('acorde_novo'+id).innerHTML = mostra_acorde(id, nota, cordas, tipo);
  
  toPrint(tipo,id);
}
//funcoes auxiliares para a impressao do acorde de teclado
var teclas_pretas = new Array(2, 4, 7, 9, 11, 14, 16, 19, 21, 23);
function is_tecla_preta(tecla){
  for(var i = 0; i < teclas_pretas.length; i++){
    if(teclas_pretas[i] == tecla)
      return true;  
  }
  return false;
}

function retorna_left_bola_branca(tecla){
  var left_bola_branca = 9;
  var espacamento_teclas = 14;
  for(var i = 0; i < teclas_pretas.length; i++){
    if(teclas_pretas[i] == tecla)
      break;
    left_bola_branca += (teclas_pretas[i]+3 == teclas_pretas[i+1]? 2*espacamento_teclas: espacamento_teclas);
  }
  return left_bola_branca;
}

function retorna_left_bola_preta(tecla){
  var left_bola_preta = 2;
  var espacamento_teclas = 14;
  for(var i = 1; i <= 33; i++){
    if(i == tecla)
      break;
    if(!is_tecla_preta(i))
      left_bola_preta += espacamento_teclas;
  }
  return left_bola_preta;
}
//fim das fun��es auxiliares
//imprime o acorde de teclado
function acorde_teclado(arrAcorde){
  var posArray = 0;
  var notas = '';
  var top_bola_preta = 45;
  var top_bola_branca = 24;
  var tecla = 0;
  for (n = 1; n <= 33; n++){
    tecla ++;
    if(tecla == 13) 
      tecla = 1;
    if(tecla==parseInt(arrAcorde[posArray])){
      if(is_tecla_preta(n)){
        var left_bola_branca = retorna_left_bola_branca(n);
        notas += '<span class="ac_sim" style="top: '+top_bola_branca+'px; left: '+left_bola_branca+'px;">o</span>'; //bolinha branca
      }
      else{
        var left_bola_preta = retorna_left_bola_preta(n);
        notas += '<span class="ac_baixo" style="top: '+top_bola_preta+'px; left: '+left_bola_preta+'px;">o</span>'; //bolinha preta
      }
      posArray ++;
    }
  }
  return notas;
}
//fun��o que imprime o acorde de viol�o ou de cavaco
function acorde_violao_cavaco(arrAcorde, nota, cordas, tipo){
  //seta o n�mero de cordas que tem o diagrama de acordo com o tipo: 1:viol�o, 2:teclado, 3:cavaco
  if(tipo == 3)
    var num_cordas = 4;
  else
    var num_cordas = 6;

  var min = 100;
  var max = 0;
  var toques = 0;
  var bolTonica = true;
  playa[nota] = cordas;
  for (var n = 0; n < arrAcorde.length; n++){
    arrAc = arrAcorde[n];
    if(arrAc != "X"){
      if(arrAc != "0" && parseInt(arrAc) < min)
        min = parseInt(arrAc);
      if(parseInt(arrAc) > max)
        max = parseInt(arrAc);
      if(arrAc.substring(0,1) != "P" && arrAc != "0")
        toques++;
      if(bolTonica){
        tonica = n; 
        bolTonica = false;
      }
    }
  }
  var pCasa = min;
  if (max <= 5) 
    min = 1;

  var casas = '';
  //conteudo do div que mostra o acorde
  var dedo = 1;
  var espacamento_casas = 14;
  var style_top = 6;
  var espacamento_cordas = 11;
  var notas = '';
  //percorre as casas
  for(var casa = min; casa <= min + 4; casa++){
    pestana = false;
    cVazia = true;
    //percorre as cordas
    for(corda = 0; corda <= (num_cordas-1); corda ++){
      posPestana = (arrAcorde[corda]  == "P" + casa);
      if (arrAcorde[corda] == casa || pestana || posPestana){
        cVazia = false;
        //verifica se � uma pestana
        if ((toques > 4 && casa == pCasa) || pestana || posPestana){
          notas += '<span class="ac_pestana" style="top:'+style_top+'px;left:'+(corda*espacamento_cordas)+'px;width:'+((num_cordas-corda) * espacamento_cordas)+'px">-</span>';
          if(!pestana) 
            dedo ++;
          pestana = true;
        }
        else{
          notas += '<span class="ac_n'+dedo+'" style="top:'+style_top+'px;left:'+(corda*espacamento_cordas)+'px">'+dedo+'</span>';
          dedo ++;
        }
      }
    }
    if (cVazia && dedo == 2 && toques < 4) 
      dedo ++;
    if(casa == min && min != 1)
      casas += '<span class="ac_casa" style="top:'+style_top+'px">'+casa+'&deg;</span>';
    style_top += espacamento_casas;
  }
  notas += casas+'</div><div class="ac_notas">';
  
  for(n = 0; n < arrAcorde.length; n++){
    notas += '<span class='+(arrAcorde[n] == 'X'?'ac_nao':(tonica == n?'ac_baixo':'ac_sim'))+'>'+arrAcorde[n]+'</span>';
  }
  return notas;
}
//fun��o principal que imprime o acorde
function mostra_acorde(id, nota, cordas, tipo){
  arrAcorde = cordas.split(' ');
  var notas = '<h3>'+nota+'</h3><div class="ac_grid">';
  
  if(tipo == 2){
    notas += acorde_teclado(arrAcorde);
    var arrPrinc = aCT;
    try{
      var arr_principal = aDT;
    }catch(e){var arr_principal = aD;}
  }
  else{
    notas += acorde_violao_cavaco(arrAcorde, nota, cordas, tipo)
    if(tipo == 1){
      var arrPrinc = aC;
      var arr_principal = aD;
    }
    else{
      var arrPrinc = aCC;
      try{
        var arr_principal = aDC;
      }catch(e){var arr_principal = aD;}
    }
  }
  var pos_acorde = retorna_pos_acorde(nota, arr_principal);
  //listening disabled
  //notas += '</div><div class="ac_botoes">'+(arrPrinc[pos_acorde].length > 1?'<a href="#" onclick="variar_acorde('+id+', \''+nota+'\', '+tipo+'); return false;" class="ac_variar">variar</a>':'')+' '+(tipo != 3?'<a href="#" onclick="play(\''+cordas+'\', '+tipo+'); return false;" class="ac_ouvir">ouvir</a>':'')+'</div>';
  notas += '</div><div class="ac_botoes">'+(arrPrinc[pos_acorde].length > 1?'<a href="javascript:;" onclick="variar_acorde('+id+', \''+nota+'\', '+tipo+');" class="ac_variar">'+_('jsAlternate')+'</a>':'')+'</div>';
  return notas;
}

function retorna_pos_acorde(nota, arrAcordes){
  if(arrAcordes == undefined)
    arrAcordes = aD;
  for(var i = 0; i < arrAcordes.length; i++)
    if(arrAcordes[i] == nota)
      return i;
  return false;
}

function atualiza_link_imprimir(tipo){
}

function acordes(id_div, tipo){
  var num_acordes = aD.length;
  altera_menu(tipo);
  //nao usar link
  //atualiza_link_imprimir(tipo);
  if(tipo == 1){
    var arrAcordes = aC;
    var acorde_principal = aD;
  }
  else if(tipo == 2){
    var arrAcordes = aCT;
    try{
      var acorde_principal = aDT;
    }catch(e){var acorde_principal = aD;}
  }
  else if(tipo == 3){
    var arrAcordes = aCC;
    try{
      var acorde_principal = aDC;
    }catch(e){var acorde_principal = aD;}
  }
  document.getElementById(id_div).innerHTML = '';
  for(var i = 0; i < num_acordes; i++){
    try{
      var pos_acorde = retorna_pos_acorde(aD[i], acorde_principal);
      if(pos_acorde !== false)
        document.getElementById(id_div).innerHTML += '<div class="ac_acorde'+(tipo==2?' ac_teclado':(tipo == 3?' ac_cavaco':''))+'" id="acorde_novo'+(i+1)+'">' + mostra_acorde((i+1), aD[i], arrAcordes[i][0], tipo) + '</div>';
    }
    catch(e){
      break;
    }
  }
  altera_altura(id_div, tipo);
  toPrint(tipo);
}

function altera_altura(id_div, tipo){
  //nao alterar altura
  return;
  if(tipo == 1){
    var num_por_linha = 7;
    var altura = 144;
  }
  else if(tipo == 2){
    var num_por_linha = 3;
    var altura = 120;
  }
  else{
    var num_por_linha = 8;
    var altura = 144;
  }
  if(!IE){
    var hdiv = (Math.ceil(aD.length/num_por_linha) * altura);
    if(hdiv == 0)
      hdiv = altura;
    document.getElementById(id_div).style.height = hdiv + 'px';
  }
}

function altera_menu(tipo){
  zera_arrPosAcorde();
  keyb = tipo;
  var div_menu = document.getElementById('aco');
  var menu = '';
  if(tipo == 1)
    menu = _('jsChordsForGuitar')+' &middot; <a href="javascript:;" onclick="acordes(\'novos_acordes\', 2); return false;">'+_('jsChordsForKeyboard')+'</a> &middot; <a href="javascript:;" onclick="acordes(\'novos_acordes\', 3); return false;">'+_('jsChordsForCavaco')+'</a>';
  else{
    menu = '<a href="javascript:;" onclick="acordes(\'novos_acordes\', 1); return false;">'+_('jsChordsForGuitar')+'</a> &middot; ';
    if(tipo == 2)
      menu += _('jsChordsForKeyboard')+' &middot; <a href="javascript:;" onclick="acordes(\'novos_acordes\', 3); return false;">'+_('jsChordsForCavaco')+'</a>';
    else
      menu += '<a href="javascript:;" onclick="acordes(\'novos_acordes\', 2); return false;">'+_('jsChordsForKeyboard')+'</a> &middot; '+_('jsChordsForCavaco');
  }
  div_menu.innerHTML = menu;    
}

function zera_arrPosAcorde(){
  var num_acordes = arrPosAcorde.length;
  for(var i = 0; i < num_acordes; i++)
    arrPosAcorde[i] = 0;
}
//fim das fun��es de impress�o de acordes
var num_fixos = 0;
function fixando(div_id){
  num_fixos++;
  var flutuante = document.getElementById(div_id);
  var fixo = document.createElement('div');
  fixo.id = 'fixo'+num_fixos;
  //caracter�sticas do box fixo
  with(fixo.style){
    display = 'block';
    position = 'absolute';
    top = flutuante.style.top;
    background = flutuante.style.background;
    left = flutuante.style.left;
    width = flutuante.style.width; 
    height = flutuante.style.height; 
    zIndex =  flutuante.style.zIndex;
  }
  //pega o conteudo do div que est� mostrando o acorde para poder coloc�-lo no box fixo
  var conteudo_acordes = '';
  for(var i =0; i < flutuante.childNodes.length; i++){
    if(flutuante.childNodes[i].id != undefined && flutuante.childNodes[i].id.indexOf('conteudo_acordes') != -1){
      var acordes = flutuante.childNodes[i];
      var width_acordes = flutuante.childNodes[i].style.width;
      var height_acordes = flutuante.childNodes[i].style.height;
      for(var j = 0; j < acordes.childNodes.length; j++){
        if(acordes.childNodes[j].id == 'acorde_novo1000'){
          var acorde = acordes.childNodes[j];
          for(var k = 0; k < acorde.childNodes.length; k++){
            if(acorde.childNodes[k].className == 'ac_botoes'){
              acorde.childNodes[k].innerHTML = acorde.childNodes[k].innerHTML.replace('1000', (num_fixos+1000));
            }
          }
          acordes.childNodes[j].id = 'acorde_novo'+(num_fixos+1000);
        }
      }
      conteudo_acordes = acordes;
      break;
    }
  }

  fixo.innerHTML = '<img style="margin-bottom: -1px;" usemap="#Map'+num_fixos+'" src=""/><map name="Map'+num_fixos+'"><area title="'+_('jsClose')+'" onClick="some_acorde(\'fixo'+num_fixos+'\'); return false" href="javascript:;" coords="100,0,110,10" shape="rect"/><area title="Mover" onMouseOver="this.style.cursor=\'move\'" coords="0,0,100,10" shape="rect" style="margin-bottom:-1px" onmousedown="moveon(\'fixo'+num_fixos+'\',\'box_cifra\');" onmouseup="fixando(\'fixo'+num_fixos+'\');" onmouseover="this.style.cursor=\'move\'" title="Mover"/></map>'+
             '<div id="conteudo_acordes'+num_fixos+'" style="border: 1px dotted #333;width:'+width_acordes+';height:'+height_acordes+'">'+
           conteudo_acordes.innerHTML+'</div>';
  document.getElementById('novos_acordes1').appendChild(fixo);
  //alert(document.getElementById('novos_acordes1').innerHTML);
  flutuante.style.display = 'none';
}

function some_acorde(elemento){
  var toremove = document.getElementById(elemento);
  toremove.parentNode.removeChild(toremove);
  return true;
}

// mostra os acordes inline
function showtools(tp) {
  document.getElementById('newtools').innerHTML='<a onClick="AlteraTom('+tp+',-2);return false;"href="javascript:;">-1 '+_('jsTone')+'</a> | <a onClick="AlteraTom('+tp+',-1);return false;"href="javascript:;">-1/2 '+_('jsTone')+'</a> | <a onClick="AlteraTom('+tp+',1);return false;" href="javascript:;">+1/2 '+_('jsTone')+'</a> | <a onClick="AlteraTom('+tp+',2);return false;" href="javascript:;">+1 '+_('jsTone')+'</a>';
}

var playon=0;
// Pegar eventos de mouse
var mousex=0;
var mousey=0;
var IE = document.all?true:false;
if (!IE) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = getMouseXY;

function getMouseXY(e) {
  if(IE){
    mousex = event.clientX + document.body.scrollLeft;
    mousey = event.clientY + document.documentElement.scrollTop;
  } else {
    mousex = e.pageX;
    mousey = e.pageY;
  }
  // x and y are now the mouse X and Y
  return true;
}

function superbold(){
  var els = $("b");
  for (var i = 0; i < els.length; i++) {
    els[i].onmouseover = fnlFunction;
    els[i].onmouseout = sai;
  }
}

function fnlLoad(){
  fnlAttachAllHandlers();
}

var mostra = 0;

function fnlFunction() {
  document.onmousemove = getMouseXY;
  ovr(this);
  ovr(this);
}
function ovr(elm) {
  
  impressao=1;
  mostra = 3;
  var spanIn = document.getElementById("box_cifra");
  var div_acordes = document.getElementById('conteudo_acordes');
  acorde=elm.innerHTML;
  if(keyb == 1)
    var arr_principal = aD;
  else if(keyb == 2){
    try{
      var arr_principal = aDT;
    }catch(e){var arr_principal = aD;}
  }
  else if(keyb == 3){
    try{
      var arr_principal = aDC;
    }catch(e){
      var arr_principal = aD;}
  }
  var n = retorna_pos_acorde(acorde, arr_principal);
  if (n !== false && n < arr_principal.length){
    spanIn.style.top = mousey + 10 + 'px';
    //spanIn.style.top = IE ? elm.offsetTop+360 : elm.offsetTop+15+'px';
    spanIn.style.left = mousex+'px';
    spanIn.style.display='block';
    if (keyb==2) {
      var arrPrinc = aCT;
      spanIn.style.width = div_acordes.style.width = '246px'; 
      spanIn.style.height = '132px';
      div_acordes.style.height = '120px';
    } else if (keyb==3) {
      var arrPrinc = aCC;
      spanIn.style.width = div_acordes.style.width = '108px';
      spanIn.style.height = '131px';
      div_acordes.style.height = '120px';
    }
    else{
      var arrPrinc = aC;
      spanIn.style.width = div_acordes.style.width = '108px';
      spanIn.style.height = '150px'; 
      div_acordes.style.height = '138px';
    }
    totalAcordes = arrPrinc[n].length;
    document.getElementById('conteudo_acordes').innerHTML = '<div class="ac_acorde'+(keyb==2?' ac_teclado"':(keyb == 3?' ac_cavaco" style="margin-left:5px;*margin-left:3px;"':'"'))+' id="acorde_novo1000">' + mostra_acorde(1000, arr_principal[n], arrPrinc[n][0], keyb) + '</div>';
    impressao=0;
  }
}

function sai(){
  mostra = 1;
}
function out() {
  document.getElementById('box_cifra').style.display='none';
}

function contador_regressivo(){
  if(mostra == 0){
    out();
  }
  else if((mostra > 0) && (mostra != 3))
    mostra--;
   setTimeout("contador_regressivo()", 500);
}
window.onload = contador_regressivo;