

// Extended Tooltip Javascript

// copyright 9th August 2002, 3rd July 2005

// by Stephen Chapman, Felgall Pty Ltd

var sFULL_PATH = 'http://musicayamigos.com/';

// permission is granted to use this javascript provided that the below code is not altered

var DH = 0;var an = 0;var al = 0;var ai = 0;if (document.getElementById) {ai = 1; DH = 1;}else {if (document.all) {al = 1; DH = 1;} else { browserVersion = parseInt(navigator.appVersion); if ((navigator.appName.indexOf('Netscape') != -1) && (browserVersion == 4)) {an = 1; DH = 1;}}} function fd(oi, wS) {if (ai) return wS ? document.getElementById(oi).style:document.getElementById(oi); if (al) return wS ? document.all[oi].style: document.all[oi]; if (an) return document.layers[oi];}

function pw() {return window.innerWidth != null? window.innerWidth: document.body.clientWidth != null? document.body.clientWidth:null;}

function mouseX(evt) {if (evt.pageX) return evt.pageX; else if (evt.clientX)return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft); else return null;}

function mouseY(evt) {if (evt.pageY) return evt.pageY; else if (evt.clientY)return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); else return null;}

function popUp(evt,oi) {
  ///alert('popUp');
  
  if (DH) {var wp = pw(); ds = fd(oi,1); dm = fd(oi,0); st = ds.visibility; if (dm.offsetWidth) ew = dm.offsetWidth; else if (dm.clip.width) ew = dm.clip.width; if (st == "visible" || st == "show") { ds.visibility = "hidden"; } else {tv = mouseY(evt) + 20; lv = mouseX(evt) - (ew/4); if (lv < 2) lv = 2; else if (lv + ew > wp) lv -= ew/2; if (!an) {lv += 'px';tv += 'px';} ds.left = lv; ds.top = tv; ds.visibility = "visible";}}}


///-----------------------------------------------------------------------

///flag que sirve para saber si la vista actual es en 2 columnas o nó (para sacar o poner el link a "ver en 2 cols")
var GlobalStateVistaDosCols = false;
var GlobalStateVistaOneCol = true;
///flag que sirve para saber si la vista actual es la tradicional o la de impresion
var GlobalStateVistaImpresion = false;
///flag que sirve para saber si la vista actual es la tradicional o la vista de Scroll
var GlobalStateVistaScroll = false;
///
var GlobalStateVistaPortada = true;

	function funcSplitTwoCols(){
		///alert ('function funcSplitTwoCols()');		

		/// modifico el tamaño del texto de la canción.
			///return  '<a href="javascript:void(0)" onclick="ViewForPrint(false);">volver a la vista normal</a>' ;	

		///sólo divido en columnas si no se está viendo en scroll, o si no se está ya en 2 cols
		if ((!GlobalStateVistaDosCols)&&(!GlobalStateVistaScroll)){

			var cont = document.getElementById('can_div_song').innerHTML;
			
			///alert ('el contenido es' + 	cont);		
			///var b = 'I am a JavaScript hacker.'
			var pattern = '<i></i>';
			///increiblemente, el explorer convierte a mayúsculas todos los tags. Hay que buscarlos como mayúsculas
			if (navigator.userAgent.indexOf('MSIE') !=-1)
			{
				var pattern = '<I></I>';
			}
	
			var temp = new Array();
			temp = cont.split(pattern);
			
			///alert ('el split 0 es ' + 	temp[0]);		
			///alert ('el split 1 es ' + 	temp[1]);	
			
			var newcont = '<table><tr><td>' + temp[0] + '</td>';
			newcont += '<td>' + temp[1] + '</td></tt></table>';		
			
			document.getElementById('can_div_song').innerHTML = newcont;		
				
			///ahora, borro la opción "ver 2 columnas del div auxiliar"	
	
			///div donde pongo un link para volver a la vista normal.
			///var divDynamicExtra = document.getElementById('xxx_div_dynamic_extra');	
			///divDynamicExtra.innerHTML =  funcGenerateViewForPrint(true, false);
		}

		
		GlobalStateVistaDosCols = true;
	}			


///------------------------------------------------------------------------------------
/// Este es el javascript para manejar las vistas de impresión...
///------------------------------------------------------------------------------------

	function ViewForPrint(aParam){ 
		var divPpal = document.getElementById('xxx_div_ppal');
		///var divArtistsAndSongs = document.getElementById('xxx_div_artists_and_songs');	 
		///div donde pongo un link para volver a la vista normal.
		var divDynamicExtra = document.getElementById('xxx_div_dynamic_extra');	 		
		///div que está en "canciones", y que tiene un link a "ver para imprimir"
		///var divViewForPrint = document.getElementById('can_div_view_for_print');	 		
	  	
		///alert ('ViewForPrint');
		if (aParam==true) {
			if (!GlobalStateVistaImpresion) {

				///escondo el div que tiene todos los controles de búsqueda
				
				///new Effect.SlideUp(divPpal);
				
				///divPpal.style.display='none';
				///divPpal.style.visibility = 'hidden';
			  	///alert('se ocultó el divPPal' + divPpal);


				
				///escondo también el div que dice "ver para imprimir"
				///new Effect.SlideUp(divViewForPrint);	NOTA; ya no existe más este div, no lo escondo más.
				GlobalStateVistaImpresion = true;			
				///divDynamicExtra.innerHTML =  '<a href="javascript:void(0)" onclick="ViewForPrint(false);">volver a la vista normal</a>' ;
				divDynamicExtra.innerHTML =  funcGenerateViewForPrint(true, true);
			}
			return false;
		}else{
			///alert ('muestro el principal y escondo el extra');
			GlobalStateVistaImpresion = false;			
			divDynamicExtra.innerHTML =  '';
			///Muestro el div que tiene todos los controles de búsqueda
			
			///new Effect.SlideDown(divPpal);

			divPpal.style.display='';
			
			
			///Muestro también el div que dice "ver para imprimir"
			////new Effect.SlideDown(divViewForPrint);	
			///borro el contenido del div extra que se creó para mostrar "volver a vista normal."
			///divViewForPrint.innerHTML =  '<a href="javascript:void(0)" onclick="ViewForPrint(true);">Ver para imprimir</a>' ;			
			return false;		  
		}
	}///ViewForPrint 
	
	
	function funcGenerateViewForPrint(aViewSize, aViewTwoCols){
		/// creo el HTML que se verá dentro del div "Volver a vista normal."
			var sRet = '<a href="javascript:void(0)" onclick="ViewForPrint(false);">volver a la vista normal</a>' ;	
			sRet += ' - ';						



			return  sRet;
	} 



	function ActualizarVistaImpresion(){
	  	///cuando se pide trasponer, pero ya se está en la vista para impresión, hay que volver a poner el link a "ver dos columnas"
	  
		var divDynamicExtra = document.getElementById('xxx_div_dynamic_extra');	 	  
		divDynamicExtra.innerHTML =  funcGenerateViewForPrint(true, true);	  
	  
	}



function OpenTextModeSong(aWithChords){
  	///alert('OpenTextModeSong');
  	///menubar
 	///myWindow = window.open("text/html", "Song For Print", 'toolbar=1, menubar=1, scrollbars=1, width=800,height=600');
	
	if (GlobalStateVistaScroll){
		var LdivSong = document.getElementById('can_hidden_song');	  
	}else{
		var LdivSong = document.getElementById('can_div_song');	  
	}





	var LdivChords = document.getElementById('can_div_img_chords');	
	var LdivTitle = document.getElementById('can_div_titulo_y_artista');
	
	myWindow = window.open();
	myWindow.document.open('text/html');	

	if (myWindow){myWindow.document.write('');}	
	
	///alert(divSongParsed.innerHTML);
	var sPage = '';
	
	sPage += '<html><head>';	
	///full path cause mod_rewrite
	sPage += '<link rel="stylesheet" type="text/css" href="http://musicayamigos.com/css/css_karaoke.css"><title>Musica y Amigos</title>';
	///sPage += '</head><body>';	


	sPage += '<div id="can_div_titulo_y_artista">';		
	sPage += LdivTitle.innerHTML;	
	sPage += '</div>';		

	if (aWithChords){
		sPage += '<div id="can_div_img_chords">';		
		sPage += LdivChords.innerHTML;	
		sPage += '</div>';		
	}
	
	
	
	
	sPage += '<div id="can_div_song">';		
	sPage += LdivSong.innerHTML;
	sPage += '</div>';		
	
	///sPage += 'contenido contenido contenido contenido contenido contenido contenido contenido contenido ';		
	sPage += '</body></html>';		

	myWindow.document.write(sPage);
	
	if (window.focus) {myWindow.focus()}
	
	
	
	myWindow.document.close();
	
	
	return false;
	
	///alert('fin');
	
	///myWindow.document.write('<div>asfhalskdfhla </div><div>ksdfh </div><div>laksjdhf </div>laksjdhf laksjdhf <div>laksjdfh kl</div>');
	///myWindow.document.bgColor="lightblue";
	
	///return false;
	///myWindow.document.close();
}




	function funcModSizeSong(aParam){

		///alert ('funcModSizeSong: '+ aParam);		

		/// modifico el tamaño del texto de la canción.
		///return  '<a href="javascript:void(0)" onclick="ViewForPrint(false);">volver a la vista normal</a>' ;	
		///size = document.getElementById('can_div_song').style.fontSize;

		///de acuerdo a si se está en una vista u otra, elijo el div a modificar
		if (!GlobalStateVistaScroll){
			var div =document.getElementById('can_div_song');
			///alert ('funcModSizeSong ' + div.innerHTML);	
			size = document.getElementById('can_div_song').style.fontSize;
		}else{
			var div =document.getElementById('js_div_scroll');
			size = document.getElementById('js_div_scroll').style.fontSize;		  
		}


		///la primera vez, no reconoce la lectura, no sé por qué
		if (size==''){size='14px';}
		

		
		size = size.substr(0,size.length-2)-0;

		if (aParam == '+'){
			if (size < 40){
				size = size+2;  
			}   
		}else{
			if (size > 10){
				size = size-2;		  
			}   
		}	

		size = size + "px";
		///document.getElementById('can_div_song').style.fontSize=size;
		
		div.style.fontSize=size;
		
		///alert ('funcModSizeSong desp de llamar a increase ');	
		return false;
		
		
	}
	

	function funcViewInOneCol(){

		///sólo junto en una sola columna, si se está en 2 columnas y NO se está en scroll view
		if ((GlobalStateVistaDosCols)&&(!GlobalStateVistaScroll)){
			var divcontent=document.getElementById('can_hidden_song').innerHTML;
			document.getElementById('can_div_song').innerHTML = divcontent;	
			GlobalStateVistaOneCol = true;
			GlobalStateVistaDosCols = false;
		}		
	}






	function Trasponer(){
		///alert ('xxx Trasponer()');

		///elijo del SELECT que se crea en canciones.php, el valor actual, (que es el link ya armado) y llamo a la función ParseSongmakeRequest
		///var param = document.form_traspose.select_traspose.options[document.form_traspose.select_traspose.selectedIndex].value;

		///alert ('Antes de leer el valor del control');
		///este select, NO tiene un form asociado
		///var param = document.select_traspose.options[document.select_traspose.selectedIndex].value;

		/// Lo tengo que recuperar así...
		///falla en FF
		///var param = document.getElementById('select_traspose').options[document.getElementById('select_traspose').selectedIndex].value;
		
		
		try {
			///var d = $(divSongParsed);
			///alert('divSongParsed=' + d.innerHTML);
			///param = $F('select_traspose');
			var param = document.getElementById('select_traspose').value;
		} catch (e) {
			alert("Oops! Something bad just happened. Calling SF('select_traspose');" + e);
		}
		
		///alert('desde prototype='+  $F('select_traspose')  );
		///var param = document.getElementById('select_traspose');
		
		///alert (' se vá a llamar a  '+ param);

		location.href=param;
	}





 ////usado para hacer scroll en el div canción
 
var zxcTO;
var iDelay = 0;
var	bActualizar = true;


function Scroll(id,dis,pos,aTimeout,aIdDebug){
	///alert('scroll');
	if (iDelay<aTimeout){
		iDelay++; 
		bActualizar = false;
	}else{
		bActualizar = true;
	  	iDelay=0;
	}

	var obj=document.getElementById(id);
	
	
	var divdebug=document.getElementById(aIdDebug);
	
	///divdebug.innerHTML = ' '+id+','+dis+','+pos+','+aTimeout+','+aIdDebug+'<br>';/// + divdebug.innerHTML;
	
	if (bActualizar){
	 	obj.scrollTop=obj.scrollTop+dis;
		///divdebug.innerHTML = ' '+id+','+dis+','+pos+','+aTimeout+','+aIdDebug+'<br>';/// + divdebug.innerHTML;	 	
		///divdebug.innerHTML += 'ACTUALIZA<br>';/// + divdebug.innerHTML;	 		  
	}else{
		///divdebug.innerHTML += 'no actualiza<br>';/// + divdebug.innerHTML;	 		  
	}
	
	if (pos){
   		obj.scrollTop=pos; 
	} ///else {zxcTO=setTimeout( function(){ Scroll(id,dis); },10); }
	 else {
	   
	  ///zxcTO=setTimeout( function(){ Scroll(id,dis); }, aTimeout); 
	  zxcTO=setTimeout( function(){ Scroll(id,dis,pos,aTimeout,aIdDebug); }, aTimeout); 

	}
}
 
 

function funcCrearVistaScroll( aIdDest){
  

	if ((GlobalStateVistaScroll == true)||(GlobalStateVistaDosCols)){
		alert('ya se está viendo el scroll o está dividido en 2 cols');
		return false; 
	}


	GlobalStateVistaScroll = true;

	

  	///con esto muestro el div que tiene los controles del scroll
	///var divScrollControl=document.getElementById('can_div_scroll_control');
	///divScrollControl.style.display = 'block';

	///oculto el contenido del div que tenía el texto normal de la canción
  	var divSongAnterior = document.getElementById('can_div_song');
	///divScrollControl.style.display = 'none';

	///el aIdDest está generado mediante canciones.php vía AJAX
	///alert('el aIdDest es:' + aIdDest);

	var divScrollView=document.getElementById(aIdDest);
	///echo '<div id="js_div_scroll" style="clear:both; position:relative;overflow:auto;width:100%;height:200px;border:solid black 1px;" >';	
  
  	///var divHiddenSource = document.getElementById(aIdSourceSong);

	///alert('hasta acá');


	///alert('el contenido de la canción es:' + divHiddenSource.innerHTML);
	///position:relative;


	var sStr = '';

	///alert('hasta acá333');
	///clear:both;

	///creo el control de scroll
	sStr += '<div id="can_div_scroll_control" style="display:block;">';
	sStr += '<img src="images/1.gif" "onmouseover="Scroll(\'js_div_scroll\',1,  0, 6,\'div_debug_song\');" onmouseout="clearTimeout(zxcTO);" >';

	sStr += '<input type="button" name="" value="+++" onmouseover="Scroll(\'js_div_scroll\',1,  0, 6,\'div_debug_song\');" onmouseout="clearTimeout(zxcTO);" >';
	sStr += '<input type="button" name="" value="++++" onmouseover="Scroll(\'js_div_scroll\',1,  0, 3,\'div_debug_song\');" onmouseout="clearTimeout(zxcTO);" >';
	sStr += '<input type="button" name="" value="+++++" onmouseover="Scroll(\'js_div_scroll\',1,  0, 1,\'div_debug_song\');" onmouseout="clearTimeout(zxcTO);" >';
	sStr += '<input type="button" name="" value="++++++" onmouseover="Scroll(\'js_div_scroll\',2,  0, 1,\'div_debug_song\');" onmouseout="clearTimeout(zxcTO);" >';
	sStr += '<input type="button" name="" value="+++++++" onmouseover="Scroll(\'js_div_scroll\',3,  0, 1,\'div_debug_song\');" onmouseout="clearTimeout(zxcTO);" >';
	sStr += '</div>';



	///los estilos hay que darselos acá.
 
	sStr += '<div id="js_div_scroll" style="font-family: \'courier new\';overflow:auto;width:70%;height:200px;border:solid black 1px;">';

	///sStr += divHiddenSource.innerHTML;

	///alert('la cancion que está en divSongAnterior es :' + divSongAnterior.innerHTML); 

	sStr += divSongAnterior.innerHTML;

	///alert('2');	
	sStr += '</div>';	
  
	///divdebug.innerHTML = ' '+id+','+dis+','+pos+','+aTimeout+','+aIdDebug+'<br>';/// + divdebug.innerHTML;	 	
	///divdebug.innerHTML += 'ACTUALIZA<br>';/// + divdebug.innerHTML;	   


	///alert('Estoy por llenar el div scroll con:' + sStr); 

	divScrollView.innerHTML = sStr;		

	///borro el contenido del div que tenía el texto normal de la canción
	divSongAnterior.innerHTML = '';	

	///alert('el contenido de divSongParsed.innerHTML es:' + divSongParsed.innerHTML	); 
	
}

 


	
/*
function funcTest(aId ){


  	var divHiddenSource = document.getElementById(aId);


	 sStr = '<div id="xsdflkañs" style="position:relative; clear:both; overflow:auto;width:100%;height:200px;border:solid red 1px;">';

	sStr +="<input type=\"button\" name=\"\" value=\"+++\" onmouseover=\"Scroll('PRUEBA',1,  0, 6,'DEBUGPRUEBA');\" onmouseout=\"clearTimeout(zxcTO);\" >";
	sStr +="<input type=\"button\" name=\"\" value=\"+++\" onmouseover=\"Scroll('PRUEBA',1,  0, 6,'DEBUGPRUEBA');\" onmouseout=\"clearTimeout(zxcTO);\" >";
	sStr += '</div>';

	sStr += '<div id="PRUEBA" style=" position:relative; clear:both; overflow:auto;width:100%;height:200px;border:solid black 2px;">';
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';	
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';	
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';	
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';	
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';	
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';	
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';					
	sStr += '</div>';	


	divHiddenSource.innerHTML = sStr;

}
	
<div id="div_xxxxxxx">test</div>
<div id="DEBUGPRUEBA">test</div>

<a href="#" onclick="funcTest('div_xxxxxxx');">test</a>
*/	

/*	
function toggle(){
 
	var div1 = document.getElementById('can_div_scroll_control');
	if (div1.style.display == 'none') {
		div1.style.display = 'block'
	} else {
		div1.style.display = 'none'
	}
}	
<div>
<a href="#" onclick="toggle();">test</a>
</div>


*/


///------------------------------------------------------------------------------	
///creo la barra de velocidad de scroll
///------------------------------------------------------------------------------
	
function funcCrearBarraScroll(aIdDest){
  

	///alert('funcCrearBarraScroll. el aIdDest es:' + aIdDest);


	if ((GlobalStateVistaScroll == true)||(GlobalStateVistaDosCols)){
		///alert('ya se está viendo el scroll o está dividido en 2 cols');
		return false; 
	}


	GlobalStateVistaScroll = true;

  	///con esto muestro el div que tiene los controles del scroll
	///var divScrollControl=document.getElementById('can_div_scroll_control');
	///divScrollControl.style.display = 'block';

	///oculto el contenido del div que tenía el texto normal de la canción
  	var divSongAnterior = document.getElementById('can_div_song');
	///divScrollControl.style.display = 'none';

	///el aIdDest está generado mediante canciones.php vía AJAX


	var divScrollView=document.getElementById(aIdDest);
	///echo '<div id="js_div_scroll" style="clear:both; position:relative;overflow:auto;width:100%;height:200px;border:solid black 1px;" >';	
  
  	///var divHiddenSource = document.getElementById(aIdSourceSong);

	///alert('hasta acá');
	///alert('el contenido de la canción es:' + divHiddenSource.innerHTML);
	///position:relative;

	var sStr = '';

	///alert('hasta acá333');
	///clear:both;

	///creo el control de scroll
	sStr += '<div id="can_div_scroll_control" style="display:block;">';
	sStr += '<a href="javascript:void(0)" onclick="Scroll(\'js_div_scroll\',1,  1, 0,\'can_div_debug_song\');"><img id="js_img_scroll_top" src="'+ sFULL_PATH +'images/scroll_top_1.jpg" title="top"></a>';
	sStr += '<img id="js_img_scroll_1" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',1,  0, 6,\'can_div_debug_song\'); ActualizarScroll(1, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(1, false);" >';
	sStr += '<img id="js_img_scroll_2" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',1,  0, 4,\'can_div_debug_song\'); ActualizarScroll(2, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(2, false);" >';
	sStr += '<img id="js_img_scroll_3" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',1,  0, 3,\'can_div_debug_song\');ActualizarScroll(3, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(3, false);" >';
	sStr += '<img id="js_img_scroll_4" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',1,  0, 2,\'can_div_debug_song\');ActualizarScroll(4, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(4, false);" >';


	sStr += '<img id="js_img_scroll_5" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',1,  0, 1,\'can_div_debug_song\'); ActualizarScroll(5, true, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(5, false);" >';
	sStr += '<img id="js_img_scroll_6" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',2,  0, 1,\'can_div_debug_song\'); ActualizarScroll(6, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(6, false);" >';
	sStr += '<img id="js_img_scroll_7" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',3,  0, 1,\'can_div_debug_song\'); ActualizarScroll(7, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(7, false);" >';
	
	sStr += '</div>';

	///los estilos hay que darselos acá.
 
 	///acá creo el div que vá a tener la canción propiamente dicha
	///width:70%
	sStr += '<div id="js_div_scroll" style="font-family: \'courier new\';overflow:auto;height:400px;border:solid black 1px;">';

	///sStr += divHiddenSource.innerHTML;
	///alert('la cancion que está en divSongAnterior es :' + divSongAnterior.innerHTML); 
	
	sStr += '--- --- --- --- ---<br>--- --- --- --- ---   <br>--- --- --- --- --- <br><br>';	
	sStr += divSongAnterior.innerHTML;

	sStr += '</div>';	
  
	///divdebug.innerHTML = ' '+id+','+dis+','+pos+','+aTimeout+','+aIdDebug+'<br>';/// + divdebug.innerHTML;	 	
	///divdebug.innerHTML += 'ACTUALIZA<br>';/// + divdebug.innerHTML;	   

	///alert('Estoy por llenar el div scroll con:' + sStr); 

	divScrollView.innerHTML = sStr;		

	///borro el contenido del div que tenía el texto normal de la canción
	divSongAnterior.innerHTML = '';	

	///alert('el contenido de divSongParsed.innerHTML es:' + divSongParsed.innerHTML	); 
	
}	






///1035	alert('gracias01');








function ActualizarScroll(aIdNum, aState){

	///alert('ActualizarScroll:' + aIdNum + ', '+aState); 	



	///var divdebug=document.getElementById('can_div_debug_song');
	///divdebug.innerHTML = ' '+aIdNum+','+aState;

	
	

	if (aState){

		///divdebug.innerHTML += 'se busca el id= ' + 'js_img_scroll_'+aIdNum;

		for(i=1;i<=aIdNum;i++){
			///divdebug.innerHTML += '<br>se busca el '+i;
			var imgName = 'js_img_scroll_' + i;	
			document.images[imgName].src = sFULL_PATH + "images/scroll_on.jpg"		  
		}

	}else{

		///divdebug.innerHTML += 'se busca el id= ' + 'js_img_scroll_'+aIdNum;		  
		///var imgName = 'js_img_scroll_' + aIdNum;	
		///document.images[imgName].src = "images/scroll_off.jpg"
		
		for(i=1;i<=aIdNum;i++){
			///divdebug.innerHTML += '<br>se busca el '+i;

			var imgName = 'js_img_scroll_' + i;	
			document.images[imgName].src =  sFULL_PATH +"images/scroll_off.jpg"		  
		}		
		
		
	  
	}
}





function votar_hover(id, index)
{
  
  ///	alert ('votar_hover(id, index) ' + id + ' - '+ index);
	var i;
	for (z=1; z<=10; z++) {
		/// en i queda la imágen 
		i = document.getElementById(id + "_" + z);
		if (z <= index) {
			///usei = "http://www.ajaxian.com/wp-content/plugins/votio/starvs.gif";
			///si el índice es más alto , la estrella debe estar "encendida"
			usei = sFULL_PATH + "images/star_on.gif";			
		} else {
			///usei = "http://www.ajaxian.com/wp-content/plugins/votio/starv.gif";
			///si el índice es más bajo , la estrella debe estar "apagada"
			///la dirección es relativa al html, nó a donde está el javascript
			usei = sFULL_PATH + "images/star_off.gif";			
		}
		i.setAttribute("src", usei);
	}
}




function votar_unhover(id, index, puntaje)
{
	var i;

	for (z=1; z<=10; z++) {
		i = document.getElementById(id + "_" + z);
		im = (puntaje >= z) ? "star_on.gif" : "star_off.gif";
		usei = sFULL_PATH + "images/" + im;
		i.setAttribute("src", usei);
	}
}







/*




///	alert('gracias3');
///ya deben estar definidos los div's en el html.

///estos dos primeros, son para debug
var div_extra = document.getElementById('div_extra');
var div_debug = document.getElementById('div_debug');


///var sFULL_PATH = 'http://192.168.1.4/canciones/';
var sFULL_PATH = 'http://musicayamigos.com/';


///div's glbales que serán utilizados para agregar en ellos la info recibida a través de AJAX
var divArtistas = document.getElementById('div_artists');
var divSongs = document.getElementById('div_songs');
var divSongParsed = document.getElementById('xxx_div_song_parsed');

///	alert('gracias16');
var divVerArtists = document.getElementById('div_ver_artists');
var divVerSongs = document.getElementById('div_ver_songs');




///	alert('gracias25');


///GlobalYaEstaEnDosCols








function makeRequest(aParams, aSearch){
	///alert('makeRequest: aParams: '+aParams+ ' aSearch: '+ aSearch);
	if (aSearch==1){
	  	///alert('Se quiere buscar un artista que coincida con : ' + document.form_search.txt_search_artist.value);
		///agrego un argumento aSearch, que ya no pertenece al ClsArgumentos !!!
		///aNewArg = '&aSearch='+document.form_search.txt_search_artist.value;


		///var sSearchText = $F('txt_search_artist');

		var sSearchText = document.getElementById('txt_search_artist').value;

	  	///alert('sSearchText = ' + sSearchText);


		///aNewArg = '&aSearch='+ sSearchText;		
		aNewArg = '&aSearch='+ sSearchText;
		aParams = aParams + aNewArg;
	  	///alert('Nuevo parámetro de búsqueda : ' + aParams);		
	}
	
	///le agrego un parámetro sólo para hacer el link distinto cada vez. Impide el fetch del browser
	///aParams = aParams + '&Rnd='+ Math.random(); 
	aParams = aParams + '&Rnd='+ Math.random(); 
	
	
	
	
	///alert('El nuevo aParams : ' + aParams);			  	
	///cargo los datos

	///var sUrl = "test_get_ajax.php?username=anonymous&userid=0"; 
	///var sUrl = "test_get_ajax.php?"+aParams; 

	///Borro el contenido del div que tiene las canciones, porque se están buscando canciones de otro artista
	divSongs.innerHTML = '<div></div>';  
	
  	///alert('1');	  	
	
	///Borro el contenido del div que tiene la Canción previamente parseada	
	divSongParsed.innerHTML = '<div></div>';  
		
  	///alert('2');	  	

	///pongo momentaneamente un tooltip "espere.."
	divArtistas.innerHTML = '<div id="xxx_TooltipLoading">Buscando Artistas...</div>';  	

  	///alert(aParams);
  	///alert('makeRequest antes de YAHOO.util.Connect.asyncRequest');	  	
	var request = YAHOO.util.Connect.asyncRequest('GET', aParams, callback);
  	///alert('hasta fin de makeRequest ');	
	
}


///YAHOO.util.Event.addListener(window, 'load', pageLoad);



///--------------------------------------------------------------------------------
///esto es para traer canciones por artista o por género.
///--------------------------------------------------------------------------------

function makeSongsRequest(aParams, aSearch){
	///se piden todas las canciones pertenecientes a un artista, a una letra, o a un estilo...
	
	///alert('makeSongsRequest con parámetros aParams:'+ aParams + ' aSearch: ' + aSearch);
	
	if(aSearch==1){
	  	///borro el div que tiene los artistas, porque ahora no se quieren ver los artistas
	  	divArtistas.innerHTML = '<div></div>';  
	  	
	  	///alert('makeSongsRequest: Se quiere buscar una CANCION que coincida con : ' + document.form_search.txt_search_song.value);
		///agrego un argumento aSearch, que ya no pertenece al ClsArgumentos !!!
		///aNewArg = '&aSearch='+document.form_search.txt_search_song.value;
	  	
		///var sSearchText = $F('txt_search_song')
		
		var sSearchText = document.getElementById('txt_search_song').value;
		
		
		
		aNewArg = '&aSearch='+ sSearchText;		
		aParams = aParams + aNewArg;
	  	///alert('Nuevo parámetro de búsqueda  : ' + aParams);		  	

	}
	

	///le agrego un parámetro sólo para hacer el link distinto cada vez. Impide el fetch del browser
	aParams = aParams + '&Rnd='+ Math.random(); 




	///Borro el contenido del div que tiene la Canción previamente parseada	
	divSongParsed.innerHTML = '<div></div>';  

	///pongo momentaneamente un tooltip "espere.."
	divSongs.innerHTML = '<div id="xxx_TooltipLoading">Cargando Canciones...</div>';  	
	var request = YAHOO.util.Connect.asyncRequest('GET', aParams, Songscallback);
}



var SongshandleFailure = function(o){
  	///alert('handleFailure');  
	if(o.responseText !== undefined){
		divSongs.innerHTML = "<li>Transaction id: " + o.tId + "</li>";
		divSongs.innerHTML += "<li>HTTP status: " + o.status + "</li>";
		divSongs.innerHTML += "<li>Status code message: " + o.statusText + "</li>";
	}
}





	function funcParsearCancion(){
		///acá, tengo que ver qué canción está en el select_song, y llamar a ParseSongmakeRequest con el value		  
		try {
			///param = $F('select_song');
			
			var param = document.getElementById('select_song').value;
			
			///alert('select_song=' + param);
			ParseSongmakeRequest(param);	
		} catch (e) {
			alert("Oops! Something bad just happened. Calling SF('select_traspose');" + e);
		}
	}





var SongshandleSuccess = function(o){
  	///Recibo los datos de los títulos de las canciones en formato JSON, por lo que hay que usar eval()
  	///alert('SongshandleSuccess');
  	
	if(o.responseText !== undefined){
	  
	  	///oculto el div de los artistas...
	  	///funcVerArtistas(false);
	  
		///alert ('recibo:' + o.responseText);
		
		/// DEBUG ---------------------------------------------------------------		
		///div_debug.innerHTML =  '<pre> SongshandleSuccess:'+	o.responseText + '</pre>';
		/// DEBUG ---------------------------------------------------------------

		///alert('se va a evaluar: '+ o.responseText);
	
		var retJSON = eval( '(' + o.responseText + ')' );

		var sRes;
		var sItem;		
		
		sRes = '';
		///link para ver el menú canciones
		///sRes = '<a href="#" onClick="new Effect.SlideDown(\''+divSongs.id+'\'); return false;">HEADER 2</a>';				
	

		///si no hay resultados, muestro un cartel que diga que no hay nada
		var iItemsFound =retJSON.itemsfound;
		if (iItemsFound<1){
			///alert("La cantidad de resultados obtenidos es:" + retJSON.itemsfound);
			sRes = '<div>No hay resultados que coincidan con la búsquda. Intente nuevamente</div>';
			divSongs.innerHTML = sRes;
			return false;  
		}







		sRes = '<div>';

		sRes += '<span class="span_label_form">Canciones: ('+iItemsFound+')</span>';
		
		sRes += '<select id="select_song">';	
			


		for(var i=0; i< retJSON.listado.length; i++) {		  
			///sRes += '<li onclick="makeSongsRequest(\'' + retJSON.listado[i].link + '\');"><a href="javascript:void(0)">' + result + "</li>";
			///sRes += '<option value> <a href="javascript:void(0)" onclick="makeSongsRequest(\'' + retJSON.listado[i].link + '\');">' + result + "</a></li>";			
			
			sItem = retJSON.listado[i].titulo;
			
			///si 
			if (retJSON.listado[i].linkartista!=undefined){
				///alert ('el link del artista es:' + retJSON.listado[i].linkartista);	  
			  	///solo si viene el link del artista, lo agrego.
				///sRes += '- [<a href="javascript:void(0)" onclick="makeSongsRequest(\'' + retJSON.listado[i].linkartista + '\');">' + retJSON.listado[i].artista + '</a>]';			  
				sItem += ' - [' + retJSON.listado[i].artista + ']';			  
			}
			
			
			
			
			sRes += '<option value="'+retJSON.listado[i].link+'" >' + sItem + "</option>";						
			///alert('se establece como link: '+ sRes);
		}
		///div.innerHTML = div.innerHTML + "</ul>";
		sRes += '</select>';	
		///sRes += '<br>';
		///sRes += '<a href="javascript:void(0)" onclick="funcParsearCancion();"> Ver Canción</a>';				

		sRes += '<input class="btn_search" type="submit" onClick="funcParsearCancion();" name="btn_ver_cancion" value="ver canción" />';


		sRes += "</div>";

		///para que cierre el div "songs"
		///sRes += '<a href="javascript:void(0)" onClick="new Effect.SlideUp(\''+divSongs.id+'\'); return false;">Close</a>';		
		///sRes += '<a href="javascript:void(0)" onClick="funcVerCanciones(false); return false;">Close</a>';				



		
		///pongo todo el HTML de una.		
		divSongs.innerHTML = sRes;
	}///if
}///SongshandleSuccess

///----------------------------------------------------------------------




var Songscallback =
{
	success:SongshandleSuccess,
	failure:SongshandleFailure
  ///argument: { foo:"foo", bar:"bar" }
};



///----------------------------------------------------------------------------------------
/// a partir de acá, es para cada una de las canciones.
///----------------------------------------------------------------------------------------



function ParseSongmakeRequest(aParams){

	///de acuerdo al valor del combobox select_instrument, agrego un parámetro nuevo que será recibido por el php, para incorporar imágenes de acordes de piano ó guitarra
	///var instrument = document.form_instrument.select_instrument.options[document.form_instrument.select_instrument.selectedIndex].value;
	
	///var instrument = $F('select_instrument');

	var instrument = document.getElementById('select_instrument').value;



	///alert ('document.form_instrument.select_instrument.options[]='+ instrument);
	
	aNewArg = '&aInstrument='+ instrument;
	aParams = aParams + aNewArg;	
	
	///var notacion = $F('select_notacion');
	
	var notacion = document.getElementById('select_notacion').value;
	

	aNewArg = '&aNotacion='+ notacion;
	aParams = aParams + aNewArg;	
	
	
	///le agrego un parámetro sólo para hacer el link distinto cada vez. Impide el fetch del browser
	aParams = aParams + '&Rnd='+ Math.random(); 
	
	
	/// DEBUG ---------------------------------------------------------------
	///div_extra.innerHTML = aParams;  	
	/// DEBUG ---------------------------------------------------------------

	
	/// esto es para borrar el contenido de la portada, cada vez que se pide una canción.
	if (GlobalStateVistaPortada){
		GlobalStateVistaPortada = false;	  
		document.getElementById('portada_ppal').style.display='none';
		document.getElementById('rank_ppal').style.display='none';
	}





	
	///alert('ParseSongmakeRequest con parámetros: '+ aParams);	


	///atencion, acá, de acuerdo al instrumento seleccionado, se asigna un valor a un NUEVO parametro = aInstrument
	///if (instrument==1){
	  	///alert('Se quiere buscar un artista que coincida con : ' + document.form_search.txt_search_artist.value);
		///agrego un argumento aSearch, que ya no pertenece al ClsArgumentos !!!
		///aNewArg = '&aInstrument='+ instrument;
		///aParams = aParams + aNewArg;
	///}
	
	
	///pongo momentaneamente un tooltip "espere.."
	divSongParsed.innerHTML = '<div id="xxx_TooltipLoading">Cargando Canción...</div>';  	
	
  	///alert('ParseSongmakeRequest: llamo a YAHOO.util.Connect.asyncRequest');
	var request = YAHOO.util.Connect.asyncRequest('GET', aParams, ParseSongcallback);
}



var ParseSonghandleFailure = function(o){
  	///alert('ParseSonghandleFailure');  
	if(o.responseText !== undefined){
		divSongParsed.innerHTML = "<li>Transaction id: " + o.tId + "</li>";
		divSongParsed.innerHTML += "<li>HTTP status: " + o.status + "</li>";
		divSongParsed.innerHTML += "<li>Status code message: " + o.statusText + "</li>";
	}
}


var ParseSonghandleSuccess = function(o){
  
  	///oculto el div de las canciones...
 	///funcVerCanciones(false);
  
	///recibo directamente el contenido en HTML, por lo que lo asigno directamente al div

  	///alert('ParseSonghandleSuccess');
  	
	if(o.responseText !== undefined){
		
		///alert ('ParseSonghandleSuccess recibo:' + o.responseText);
		
		///div_debug.innerHTML =  '<pre>'+	o.responseText + '</pre>';
		///explorer tiene ERRORES con imágenes dinámicas!!! :(
		
		///siempre viene en una sola columna
		GlobalStateVistaOneCol = true;
		GlobalStateVistaDosCols = false;
		GlobalStateVistaScroll = false;
		
		divSongParsed.innerHTML =  o.responseText ;
		///divSongParsed.innerHTML =  'NUEVO TEXTO!!!!!!!!!1'+ o.responseText ;
		///document.getElementById('xxx_div_song_parsed').innerHTML = o.responseText ;
		///document.getElementById('xxx_div_song_parsed').innerHTML = 'TEXTO';
		
	}
}


var ParseSongcallback =
{
	success:ParseSonghandleSuccess,
	failure:ParseSonghandleFailure
  ///argument: { foo:"foo", bar:"bar" }
};




///----------------------------------------------------------------------------------------
/// ESTO SE USA DESDE index.php !!!!!
///----------------------------------------------------------------------------------------

	function Trasponer(){
		///alert ('xxx Trasponer()');

		///elijo del SELECT que se crea en canciones.php, el valor actual, (que es el link ya armado) y llamo a la función ParseSongmakeRequest
		///var param = document.form_traspose.select_traspose.options[document.form_traspose.select_traspose.selectedIndex].value;

		///alert ('Antes de leer el valor del control');
		///este select, NO tiene un form asociado
		///var param = document.select_traspose.options[document.select_traspose.selectedIndex].value;

		/// Lo tengo que recuperar así...
		///falla en FF
		///var param = document.getElementById('select_traspose').options[document.getElementById('select_traspose').selectedIndex].value;
		
		
		try {
			///var d = $(divSongParsed);
			///alert('divSongParsed=' + d.innerHTML);
			///param = $F('select_traspose');
			
			var param = document.getElementById('select_traspose').value;
			
			
			
		} catch (e) {
			alert("Oops! Something bad just happened. Calling SF('select_traspose');" + e);
		}
		
		///alert('desde prototype='+  $F('select_traspose')  );
		///var param = document.getElementById('select_traspose');
		
		///alert (' se vá a llamar a ParseSongmakeRequest con: '+ param);

		location.href=param;



		/// DEBUG ---------------------------------------------------------------
		///div_extra.innerHTML = param;  	
		/// DEBUG ---------------------------------------------------------------		
		
		
		///ParseSongmakeRequest(param);
		
	}


	///esto se llama NO desde un SELECT, sino desde un <A>, porque el SELECT no funciona en IE
	///ACTUALMENTE EN DESUSO
	function TrasponerA(aParam){
		///elijo del SELECT que se crea en canciones.php, el valor actual, (que es el link ya armado) y llamo a la función ParseSongmakeRequest
		///var param = document.form_traspose.select_traspose.options[document.form_traspose.select_traspose.selectedIndex].value;
		///alert (' se vá a llamar a ParseSongmakeRequest con: '+ aParam);
		ParseSongmakeRequest(aParam);
	}


///------------------------------------------------------------------------------------
/// Este es el javascript para manejar las vistas de impresión...
///------------------------------------------------------------------------------------

	function ViewForPrint(aParam){ 
		var divPpal = document.getElementById('xxx_div_ppal');
		///var divArtistsAndSongs = document.getElementById('xxx_div_artists_and_songs');	 
		///div donde pongo un link para volver a la vista normal.
		var divDynamicExtra = document.getElementById('xxx_div_dynamic_extra');	 		
		///div que está en "canciones", y que tiene un link a "ver para imprimir"
		///var divViewForPrint = document.getElementById('can_div_view_for_print');	 		
	  	
		///alert ('ViewForPrint');
		if (aParam==true) {
			if (!GlobalStateVistaImpresion) {

				///escondo el div que tiene todos los controles de búsqueda
				
				///new Effect.SlideUp(divPpal);
				
				///divPpal.style.display='none';
				///divPpal.style.visibility = 'hidden';
			  	///alert('se ocultó el divPPal' + divPpal);


				
				///escondo también el div que dice "ver para imprimir"
				///new Effect.SlideUp(divViewForPrint);	NOTA; ya no existe más este div, no lo escondo más.
				GlobalStateVistaImpresion = true;			
				///divDynamicExtra.innerHTML =  '<a href="javascript:void(0)" onclick="ViewForPrint(false);">volver a la vista normal</a>' ;
				divDynamicExtra.innerHTML =  funcGenerateViewForPrint(true, true);
			}
			return false;
		}else{
			///alert ('muestro el principal y escondo el extra');
			GlobalStateVistaImpresion = false;			
			divDynamicExtra.innerHTML =  '';
			///Muestro el div que tiene todos los controles de búsqueda
			
			///new Effect.SlideDown(divPpal);

			divPpal.style.display='';
			
			
			///Muestro también el div que dice "ver para imprimir"
			////new Effect.SlideDown(divViewForPrint);	
			///borro el contenido del div extra que se creó para mostrar "volver a vista normal."
			///divViewForPrint.innerHTML =  '<a href="javascript:void(0)" onclick="ViewForPrint(true);">Ver para imprimir</a>' ;			
			return false;		  
		}
	}///ViewForPrint 
	
	
	function funcGenerateViewForPrint(aViewSize, aViewTwoCols){
		/// creo el HTML que se verá dentro del div "Volver a vista normal."
			var sRet = '<a href="javascript:void(0)" onclick="ViewForPrint(false);">volver a la vista normal</a>' ;	
			sRet += ' - ';						



			return  sRet;
	} 



	function ActualizarVistaImpresion(){
	  	///cuando se pide trasponer, pero ya se está en la vista para impresión, hay que volver a poner el link a "ver dos columnas"
	  
		var divDynamicExtra = document.getElementById('xxx_div_dynamic_extra');	 	  
		divDynamicExtra.innerHTML =  funcGenerateViewForPrint(true, true);	  
	  
	}




	function funcModSizeSong(aParam){

		///alert ('funcModSizeSong: '+ aParam);		

		/// modifico el tamaño del texto de la canción.
		///return  '<a href="javascript:void(0)" onclick="ViewForPrint(false);">volver a la vista normal</a>' ;	
		///size = document.getElementById('can_div_song').style.fontSize;

		///de acuerdo a si se está en una vista u otra, elijo el div a modificar
		if (!GlobalStateVistaScroll){
			var div =document.getElementById('can_div_song');
			///alert ('funcModSizeSong ' + div.innerHTML);	
			size = document.getElementById('can_div_song').style.fontSize;
		}else{
			var div =document.getElementById('js_div_scroll');
			size = document.getElementById('js_div_scroll').style.fontSize;		  
		}


		///la primera vez, no reconoce la lectura, no sé por qué
		if (size==''){size='14px';}
		

		
		size = size.substr(0,size.length-2)-0;

		if (aParam == '+'){
			if (size < 40){
				size = size+2;  
			}   
		}else{
			if (size > 10){
				size = size-2;		  
			}   
		}	

		size = size + "px";
		///document.getElementById('can_div_song').style.fontSize=size;
		
		div.style.fontSize=size;
		
		///alert ('funcModSizeSong desp de llamar a increase ');	
		return false;
		
		
	}
	
	function funcSplitTwoCols(){
		///alert ('function funcSplitTwoCols()');		

		/// modifico el tamaño del texto de la canción.
			///return  '<a href="javascript:void(0)" onclick="ViewForPrint(false);">volver a la vista normal</a>' ;	

		///sólo divido en columnas si no se está viendo en scroll, o si no se está ya en 2 cols
		if ((!GlobalStateVistaDosCols)&&(!GlobalStateVistaScroll)){

			var cont = document.getElementById('can_div_song').innerHTML;
			
			///alert ('el contenido es' + 	cont);		
			///var b = 'I am a JavaScript hacker.'
			var pattern = '<i></i>';
			///increiblemente, el explorer convierte a mayúsculas todos los tags. Hay que buscarlos como mayúsculas
			if (navigator.userAgent.indexOf('MSIE') !=-1)
			{
				var pattern = '<I></I>';
			}
	
			var temp = new Array();
			temp = cont.split(pattern);
			
			///alert ('el split 0 es ' + 	temp[0]);		
			///alert ('el split 1 es ' + 	temp[1]);	
			
			var newcont = '<table><tr><td>' + temp[0] + '</td>';
			newcont += '<td>' + temp[1] + '</td></tt></table>';		
			
			document.getElementById('can_div_song').innerHTML = newcont;		
				
			///ahora, borro la opción "ver 2 columnas del div auxiliar"	
	
			///div donde pongo un link para volver a la vista normal.
			///var divDynamicExtra = document.getElementById('xxx_div_dynamic_extra');	
			///divDynamicExtra.innerHTML =  funcGenerateViewForPrint(true, false);
		}

		
		GlobalStateVistaDosCols = true;
	}			
			
			


	function funcViewInOneCol(){

		///sólo junto en una sola columna, si se está en 2 columnas y NO se está en scroll view
		if ((GlobalStateVistaDosCols)&&(!GlobalStateVistaScroll)){
			var divcontent=document.getElementById('can_hidden_song').innerHTML;
			document.getElementById('can_div_song').innerHTML = divcontent;	
			GlobalStateVistaOneCol = true;
			GlobalStateVistaDosCols = false;
				
		}		
	}




function increaseFont() {
	var size;
			///alert ('increaseFont ');	
	
	///xxx_div_ppal
	

	
}

			

			


///------------------------------------------------------------------------------------
/// EStos son los handlers para los textboxes de búsqueda, que permiten que si 
///se presiona "ENTER", se accione el botón de búsqueda correspondiente
///------------------------------------------------------------------------------------

	var o_txt_search_artist = document.getElementById("txt_search_artist"); 
	var o_txt_search_song = document.getElementById("txt_search_song"); 	

	function fnCallbackSearchArtist(e) { 
	
			/// check for return key press
		if (YAHOO.util.Event.getCharCode(e) == 13) {
			YAHOO.util.Event.stopEvent(e);///no quiero que siga para no disparar otras búsquedas
			///alert("ENTER EN CUADRO DE TEXTO fnCallbackSearchArtist"); 
			document.form_search.btn_search_artist.click(); 
		}
	} 

	YAHOO.util.Event.addListener(o_txt_search_artist, "keypress", fnCallbackSearchArtist); 

	function fnCallbackSearchSong(e) { 
		/// check for return key press
		if (YAHOO.util.Event.getCharCode(e) == 13) {
			YAHOO.util.Event.stopEvent(e);///no quiero que siga para no disparar otras búsquedas
			///alert("ENTER EN CUADRO DE TEXTO fnCallbackSearchSong"); 
			document.form_search.btn_search_song.click(); 
		}
	} 

	
	///esto se ejecuta directamente, no está dentro de una función...
	YAHOO.util.Event.addListener(o_txt_search_song, "keypress", fnCallbackSearchSong); 



	

 ////usado para hacer scroll en el div canción
 
var zxcTO;
var iDelay = 0;
var	bActualizar = true;


function Scroll(id,dis,pos,aTimeout,aIdDebug){
	///alert('scroll');
	if (iDelay<aTimeout){
		iDelay++; 
		bActualizar = false;
	}else{
		bActualizar = true;
	  	iDelay=0;
	}

	var obj=document.getElementById(id);
	
	
	var divdebug=document.getElementById(aIdDebug);
	
	///divdebug.innerHTML = ' '+id+','+dis+','+pos+','+aTimeout+','+aIdDebug+'<br>';/// + divdebug.innerHTML;
	
	if (bActualizar){
	 	obj.scrollTop=obj.scrollTop+dis;
		///divdebug.innerHTML = ' '+id+','+dis+','+pos+','+aTimeout+','+aIdDebug+'<br>';/// + divdebug.innerHTML;	 	
		///divdebug.innerHTML += 'ACTUALIZA<br>';/// + divdebug.innerHTML;	 		  
	}else{
		///divdebug.innerHTML += 'no actualiza<br>';/// + divdebug.innerHTML;	 		  
	}
	
	if (pos){
   		obj.scrollTop=pos; 
	} ///else {zxcTO=setTimeout( function(){ Scroll(id,dis); },10); }
	 else {
	   
	  ///zxcTO=setTimeout( function(){ Scroll(id,dis); }, aTimeout); 
	  zxcTO=setTimeout( function(){ Scroll(id,dis,pos,aTimeout,aIdDebug); }, aTimeout); 

	}
}
 
 
/*	
function funcCrearVistaScroll( aIdDest){
  

	if ((GlobalStateVistaScroll == true)||(GlobalStateVistaDosCols)){
		alert('ya se está viendo el scroll o está dividido en 2 cols');
		return false; 
	}


	GlobalStateVistaScroll = true;

	

  	///con esto muestro el div que tiene los controles del scroll
	///var divScrollControl=document.getElementById('can_div_scroll_control');
	///divScrollControl.style.display = 'block';

	///oculto el contenido del div que tenía el texto normal de la canción
  	var divSongAnterior = document.getElementById('can_div_song');
	///divScrollControl.style.display = 'none';

	///el aIdDest está generado mediante canciones.php vía AJAX
	///alert('el aIdDest es:' + aIdDest);

	var divScrollView=document.getElementById(aIdDest);
	///echo '<div id="js_div_scroll" style="clear:both; position:relative;overflow:auto;width:100%;height:200px;border:solid black 1px;" >';	
  
  	///var divHiddenSource = document.getElementById(aIdSourceSong);

	///alert('hasta acá');


	///alert('el contenido de la canción es:' + divHiddenSource.innerHTML);
	///position:relative;


	var sStr = '';

	///alert('hasta acá333');
	///clear:both;

	///creo el control de scroll
	sStr += '<div id="can_div_scroll_control" style="display:block;">';
	sStr += '<img src="images/1.gif" "onmouseover="Scroll(\'js_div_scroll\',1,  0, 6,\'div_debug_song\');" onmouseout="clearTimeout(zxcTO);" >';

	sStr += '<input type="button" name="" value="+++" onmouseover="Scroll(\'js_div_scroll\',1,  0, 6,\'div_debug_song\');" onmouseout="clearTimeout(zxcTO);" >';
	sStr += '<input type="button" name="" value="++++" onmouseover="Scroll(\'js_div_scroll\',1,  0, 3,\'div_debug_song\');" onmouseout="clearTimeout(zxcTO);" >';
	sStr += '<input type="button" name="" value="+++++" onmouseover="Scroll(\'js_div_scroll\',1,  0, 1,\'div_debug_song\');" onmouseout="clearTimeout(zxcTO);" >';
	sStr += '<input type="button" name="" value="++++++" onmouseover="Scroll(\'js_div_scroll\',2,  0, 1,\'div_debug_song\');" onmouseout="clearTimeout(zxcTO);" >';
	sStr += '<input type="button" name="" value="+++++++" onmouseover="Scroll(\'js_div_scroll\',3,  0, 1,\'div_debug_song\');" onmouseout="clearTimeout(zxcTO);" >';
	sStr += '</div>';



	///los estilos hay que darselos acá.
 
	sStr += '<div id="js_div_scroll" style="font-family: \'courier new\';overflow:auto;width:70%;height:200px;border:solid black 1px;">';

	///sStr += divHiddenSource.innerHTML;

	///alert('la cancion que está en divSongAnterior es :' + divSongAnterior.innerHTML); 

	sStr += divSongAnterior.innerHTML;

	///alert('2');	
	sStr += '</div>';	
  
	///divdebug.innerHTML = ' '+id+','+dis+','+pos+','+aTimeout+','+aIdDebug+'<br>';/// + divdebug.innerHTML;	 	
	///divdebug.innerHTML += 'ACTUALIZA<br>';/// + divdebug.innerHTML;	   


	///alert('Estoy por llenar el div scroll con:' + sStr); 

	divScrollView.innerHTML = sStr;		

	///borro el contenido del div que tenía el texto normal de la canción
	divSongAnterior.innerHTML = '';	

	///alert('el contenido de divSongParsed.innerHTML es:' + divSongParsed.innerHTML	); 
	
}

*/


	
/*
function funcTest(aId ){


  	var divHiddenSource = document.getElementById(aId);


	 sStr = '<div id="xsdflkañs" style="position:relative; clear:both; overflow:auto;width:100%;height:200px;border:solid red 1px;">';

	sStr +="<input type=\"button\" name=\"\" value=\"+++\" onmouseover=\"Scroll('PRUEBA',1,  0, 6,'DEBUGPRUEBA');\" onmouseout=\"clearTimeout(zxcTO);\" >";
	sStr +="<input type=\"button\" name=\"\" value=\"+++\" onmouseover=\"Scroll('PRUEBA',1,  0, 6,'DEBUGPRUEBA');\" onmouseout=\"clearTimeout(zxcTO);\" >";
	sStr += '</div>';

	sStr += '<div id="PRUEBA" style=" position:relative; clear:both; overflow:auto;width:100%;height:200px;border:solid black 2px;">';
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';	
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';	
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';	
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';	
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';	
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';	
	sStr += 'ESTE ES EL NUEVO CONTENIDO<br>';					
	sStr += '</div>';	


	divHiddenSource.innerHTML = sStr;

}
	
<div id="div_xxxxxxx">test</div>
<div id="DEBUGPRUEBA">test</div>

<a href="#" onclick="funcTest('div_xxxxxxx');">test</a>
*/	

/*	
function toggle(){
 
	var div1 = document.getElementById('can_div_scroll_control');
	if (div1.style.display == 'none') {
		div1.style.display = 'block'
	} else {
		div1.style.display = 'none'
	}
}	
<div>
<a href="#" onclick="toggle();">test</a>
</div>


*/

/*	
///------------------------------------------------------------------------------	
///creo la barra de velocidad de scroll
///------------------------------------------------------------------------------
	
function funcCrearBarraScroll(aIdDest){
  

	///alert('funcCrearBarraScroll. el aIdDest es:' + aIdDest);


	if ((GlobalStateVistaScroll == true)||(GlobalStateVistaDosCols)){
		///alert('ya se está viendo el scroll o está dividido en 2 cols');
		return false; 
	}


	GlobalStateVistaScroll = true;

  	///con esto muestro el div que tiene los controles del scroll
	///var divScrollControl=document.getElementById('can_div_scroll_control');
	///divScrollControl.style.display = 'block';

	///oculto el contenido del div que tenía el texto normal de la canción
  	var divSongAnterior = document.getElementById('can_div_song');
	///divScrollControl.style.display = 'none';

	///el aIdDest está generado mediante canciones.php vía AJAX


	var divScrollView=document.getElementById(aIdDest);
	///echo '<div id="js_div_scroll" style="clear:both; position:relative;overflow:auto;width:100%;height:200px;border:solid black 1px;" >';	
  
  	///var divHiddenSource = document.getElementById(aIdSourceSong);

	///alert('hasta acá');
	///alert('el contenido de la canción es:' + divHiddenSource.innerHTML);
	///position:relative;

	var sStr = '';

	///alert('hasta acá333');
	///clear:both;

	///creo el control de scroll
	sStr += '<div id="can_div_scroll_control" style="display:block;">';
	sStr += '<a href="javascript:void(0)" onclick="Scroll(\'js_div_scroll\',1,  1, 0,\'can_div_debug_song\');"><img id="js_img_scroll_top" src="'+ sFULL_PATH +'images/scroll_top_1.jpg" title="top"></a>';
	sStr += '<img id="js_img_scroll_1" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',1,  0, 6,\'can_div_debug_song\'); ActualizarScroll(1, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(1, false);" >';
	sStr += '<img id="js_img_scroll_2" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',1,  0, 4,\'can_div_debug_song\'); ActualizarScroll(2, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(2, false);" >';
	sStr += '<img id="js_img_scroll_3" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',1,  0, 3,\'can_div_debug_song\');ActualizarScroll(3, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(3, false);" >';
	sStr += '<img id="js_img_scroll_4" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',1,  0, 2,\'can_div_debug_song\');ActualizarScroll(4, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(4, false);" >';


	sStr += '<img id="js_img_scroll_5" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',1,  0, 1,\'can_div_debug_song\'); ActualizarScroll(5, true, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(5, false);" >';
	sStr += '<img id="js_img_scroll_6" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',2,  0, 1,\'can_div_debug_song\'); ActualizarScroll(6, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(6, false);" >';
	sStr += '<img id="js_img_scroll_7" src="'+ sFULL_PATH +'images/scroll_off.jpg" onmouseover="Scroll(\'js_div_scroll\',3,  0, 1,\'can_div_debug_song\'); ActualizarScroll(7, true);" onmouseout="clearTimeout(zxcTO); ActualizarScroll(7, false);" >';
	
	sStr += '</div>';

	///los estilos hay que darselos acá.
 
 	///acá creo el div que vá a tener la canción propiamente dicha
	///width:70%
	sStr += '<div id="js_div_scroll" style="font-family: \'courier new\';overflow:auto;height:400px;border:solid black 1px;">';

	///sStr += divHiddenSource.innerHTML;
	///alert('la cancion que está en divSongAnterior es :' + divSongAnterior.innerHTML); 
	
	sStr += '--- --- --- --- ---<br>--- --- --- --- ---   <br>--- --- --- --- --- <br><br>';	
	sStr += divSongAnterior.innerHTML;

	sStr += '</div>';	
  
	///divdebug.innerHTML = ' '+id+','+dis+','+pos+','+aTimeout+','+aIdDebug+'<br>';/// + divdebug.innerHTML;	 	
	///divdebug.innerHTML += 'ACTUALIZA<br>';/// + divdebug.innerHTML;	   

	///alert('Estoy por llenar el div scroll con:' + sStr); 

	divScrollView.innerHTML = sStr;		

	///borro el contenido del div que tenía el texto normal de la canción
	divSongAnterior.innerHTML = '';	

	///alert('el contenido de divSongParsed.innerHTML es:' + divSongParsed.innerHTML	); 
	
}	






///1035	alert('gracias01');








function ActualizarScroll(aIdNum, aState){

	///alert('ActualizarScroll:' + aIdNum + ', '+aState); 	



	///var divdebug=document.getElementById('can_div_debug_song');
	///divdebug.innerHTML = ' '+aIdNum+','+aState;

	
	

	if (aState){

		///divdebug.innerHTML += 'se busca el id= ' + 'js_img_scroll_'+aIdNum;

		for(i=1;i<=aIdNum;i++){
			///divdebug.innerHTML += '<br>se busca el '+i;
			var imgName = 'js_img_scroll_' + i;	
			document.images[imgName].src = sFULL_PATH + "images/scroll_on.jpg"		  
		}

	}else{

		///divdebug.innerHTML += 'se busca el id= ' + 'js_img_scroll_'+aIdNum;		  
		///var imgName = 'js_img_scroll_' + aIdNum;	
		///document.images[imgName].src = "images/scroll_off.jpg"
		
		for(i=1;i<=aIdNum;i++){
			///divdebug.innerHTML += '<br>se busca el '+i;

			var imgName = 'js_img_scroll_' + i;	
			document.images[imgName].src =  sFULL_PATH +"images/scroll_off.jpg"		  
		}		
		
		
	  
	}
}


////esto será llamado desde el html de la portada.
function ListarCancionesDelArtista(aArtista){
  
  
}



function VerPortada(){
  
	/// esto es para borrar el contenido de la portada. Tengo que esconder el contenido de la canción actual (si es que hay una)
	if (!GlobalStateVistaPortada){
		GlobalStateVistaPortada = true;	  
		document.getElementById('portada_ppal').style.display='';
		document.getElementById('rank_ppal').style.display='';	
		///Borro el contenido del div que tiene la Canción previamente parseada	
		divSongParsed.innerHTML = '<div></div>';  
	
	}
 
}



function OpenTextModeSong(aWithChords){
  	///alert('OpenTextModeSong');
  	///menubar
 	///myWindow = window.open("text/html", "Song For Print", 'toolbar=1, menubar=1, scrollbars=1, width=800,height=600');
	
	if (GlobalStateVistaScroll){
		var LdivSong = document.getElementById('can_hidden_song');	  
	}else{
		var LdivSong = document.getElementById('can_div_song');	  
	}





	var LdivChords = document.getElementById('can_div_img_chords');	
	var LdivTitle = document.getElementById('can_div_titulo_y_artista');
	
	myWindow = window.open();
	myWindow.document.open('text/html');	

	if (myWindow){myWindow.document.write('');}	
	
	///alert(divSongParsed.innerHTML);
	var sPage = '';
	
	sPage += '<html><head>';	
	///full path cause mod_rewrite
	sPage += '<link rel="stylesheet" type="text/css" href="http://letrasyacordes.net/css/style.css"><title>LetrasyAcordes.net. Letras y acordes para guitarra y piano </title>';
	///sPage += '</head><body>';	


	sPage += '<div id="can_div_titulo_y_artista">';		
	sPage += LdivTitle.innerHTML;	
	sPage += '</div>';		

	if (aWithChords){
		sPage += '<div id="can_div_img_chords">';		
		sPage += LdivChords.innerHTML;	
		sPage += '</div>';		
	}
	
	
	
	
	sPage += '<div id="can_div_song">';		
	sPage += LdivSong.innerHTML;
	sPage += '</div>';		
	
	///sPage += 'contenido contenido contenido contenido contenido contenido contenido contenido contenido ';		
	sPage += '</body></html>';		

	myWindow.document.write(sPage);
	
	if (window.focus) {myWindow.focus()}
	
	
	
	myWindow.document.close();
	
	
	return false;
	
	///alert('fin');
	
	///myWindow.document.write('<div>asfhalskdfhla </div><div>ksdfh </div><div>laksjdhf </div>laksjdhf laksjdhf <div>laksjdfh kl</div>');
	///myWindow.document.bgColor="lightblue";
	
	///return false;
	///myWindow.document.close();
}


 






function votar_vote(link)
{

  	///alert ('votar_vote(link) ' + link );


	var div = document.getElementById('can_vote');
	div.innerHTML =  '<img src="'+ sFULL_PATH +'images/progress.gif">';			

		///alert ("BuscarAcorde "+ fAcorde);
		var url = link;
		///var params = 'image=' + fAcorde;
		///var params = 'g_image=' + arr_split[0]+'&g_tag='+ escape(arr_split[1]);
		///alert ("params =:" + params); 		  	
	



  	///alert('ParseSongmakeRequest: llamo a YAHOO.util.Connect.asyncRequest');
	var request = YAHOO.util.Connect.asyncRequest('GET', url, VoteCallback);
}



var VotehandleFailure = function(o){
  	///alert('ParseSonghandleFailure');  
	if(o.responseText !== undefined){
		document.getElementById('can_vote').innerHTML = "<li>Transaction id: " + o.tId + "</li>";
		document.getElementById('can_vote').innerHTML += "<li>HTTP status: " + o.status + "</li>";
		document.getElementById('can_vote').innerHTML += "<li>Status code message: " + o.statusText + "</li>";
	}
}


var VotehandleSuccess = function(o){

  
	///recibo directamente el contenido en HTML, por lo que lo asigno directamente al div

  	///alert('VotehandleSuccess');
  	
	if(o.responseText !== undefined){
		
		///alert ('VotehandleSuccess recibo:' + o.responseText);

		
		document.getElementById('can_vote').innerHTML =  o.responseText ;
		
	}
}


var VoteCallback =
{
	success:VotehandleSuccess,
	failure:VotehandleFailure
};





*/


 








