//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);
}
//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+'º</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);
	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>';
	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 acordes(id_div, tipo){
	var num_acordes = aD.length;
	altera_menu(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);
}

function altera_altura(id_div, tipo){
	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 = 'acordes para violão <img src="../cifras/imc/inc_violao.gif"/> · <a href="#" onclick="acordes(\'novos_acordes\', 2); return false;">acordes para teclado <img src="../cifras/imc/inc_piano.gif"/></a> · <a href="#" onclick="acordes(\'novos_acordes\', 3); return false;">acordes para cavaco <img src="../cifras/imc/inc_cavaco.gif"/></a>';
	else{
		menu = '<a href="#" onclick="acordes(\'novos_acordes\', 1); return false;">acordes para violão <img src="../cifras/imc/inc_violao.gif"/></a> · ';
		if(tipo == 2)
			menu += 'acordes para teclado <img src="../cifras/imc/inc_piano.gif"/> · <a href="#" onclick="acordes(\'novos_acordes\', 3); return false;">acordes para cavaco <img src="../cifras/imc/inc_cavaco.gif"/></a>';
		else
			menu += '<a href="#" onclick="acordes(\'novos_acordes\', 2); return false;">acordes para teclado <img src="../cifras/imc/inc_piano.gif"/></a> · acordes para cavaco <img src="../cifras/imc/inc_cavaco.gif"/>';
	}
	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="../cifras/imc/drag2.gif"/><map name="Map'+num_fixos+'"><area title="Fechar" onClick="some_acorde(\'fixo'+num_fixos+'\'); return false" href="#" 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+'\');" 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='<img src="/imc/exchange.gif" align=left hspace=3><strong>Utilitários para mudança de acordes:</strong><br><strong>Interação: </strong><a onClick="AlteraTom('+tp+',-2);return false;"href="#">-1 tom</a> | <a onClick="AlteraTom('+tp+',-1);return false;"href="#">-1/2 tom</a> | <a onClick="AlteraTom('+tp+',1);return false;"href="#">+1/2 tom</a> | <a onClick="AlteraTom('+tp+',2);return false;"href="#">+1 tom</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 = document.getElementsByTagName("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() {
	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;