/***********************************************************************************
Función:     bandera(texto, amp, fase, rap, separ, px, py)
Argumentos:  texto: texto que forma la bandera
			 amp: Amplitud de la ola
			 fase: Picado de la ola
			 rap: rapidez del movimiento
			 separ: separación de las letras del texto
			 px, py: posicion inicial de la primera letra del texto
Descripción: Este es el constructor del objeto bandera.			 
************************************************************************************/
function oBandera(texto, amp, fase, rap, separ, px, py)
{
this.texto = texto;
this.letras = new Array();
this.yini = py;
this.xini = px;
this.separ = separ;
this.incY = 0;
this.veces = 1;
this.amp = amp||10;
this.rap = rap||5;
this.fase = fase||1;

this.creaPalabra = creaPalabra;
this.ondear = ondear;
this.tipo = ponTipo;


this.creaPalabra();
/***********************************************************************************
Función:     creaEtq(letra, x, y)
Argumentos:  Una letra y su posición X, Y
Descripción: Crea un elemento DIV (un bloque) para la letra que se le pasa como argumento
             situándola en el lugar que se le indica con los argumentos X, Y
Devuelve:    Devuelve el objeto DIV creado			 
************************************************************************************/
function creaEtq(letra, x, y)
{
var etq = document.createElement("DIV");
etq.id = "car_"+letra;
etq.style.position = "absolute";
etq.style.top = y+"px";
etq.style.left = x+"px";
etq.style.width = 10;
etq.style.height = 10;
etq.innerHTML = letra;
document.body.appendChild(etq);
return etq;
}
/***********************************************************************************
Función:     creaPalabra()
Arguementos: no
Descripción: Este método se encarga de crear y situar cada letra del texto creando
			 una lista de objetos que se asignan a la propiedad letras de la bandera
             Hace uso del método creaEtiq()
************************************************************************************/
function creaPalabra()
{
var i;
var letras=new Array();
for(i=0; i < this.texto.length; i++)
	letras[i]=creaEtq(this.texto.substr(i,1), i*this.separ+this.xini, this.yini)
this.letras = letras;	
}
/***********************************************************************************
Función:     ondear(nban)
Arguementos: el nombre de la instancia del objeto al que pertenece
Descripción: Este método se encarga de actualizar la posición de todas las letras 
             que forman el texto de la bandera. 			 
************************************************************************************/
function ondear(nban)
{
var lac;
var posY; 
for (lac=0; lac< this.letras.length; lac++)
	{
	posY = this.amp*Math.sin(this.fase*lac*Math.PI/90 + this.veces*Math.PI/90)
	posY = this.yini + Math.round(posY)
	this.letras[lac].style.top = posY+'px';
	this.veces+=1;
	if (this.veces > 180)
		this.veces = 0;
	}
this.tempor = setTimeout(nban+".ondear('"+nban+"')", this.rap);
}
/***********************************************************************************
Función:     tipo(familia, peso, tama, color)
Arguementos: familia nombre de un tipo de letra
			 peso: para poner negrita ('bold')
			 tama: tamaño de las letras
			 color: color de las letras
Descripción: Este método nos permite cambiar el tipo de letra del texto
************************************************************************************/
function ponTipo(familia, peso, tama, color)
{
var i;
for(i=0; i < this.letras.length; i++)
	{
	this.letras[i].style.fontFamily = familia;
	this.letras[i].style.fontWeight = peso;
	this.letras[i].style.fontSize = tama;
	this.letras[i].style.color = color;
	}
}

}

//***********************************
//Fin objeto bandera
//***********************************


