String.prototype.trim = function() 
{ 
	return this.replace(/^\s+|\s+$/g, ''); 
};
// Función que busca los objetos en el formulario
function MM_findObj(n, d) 
{ 	
	var p,i,x;  
	if(!d) 
		d=document; 
	if((p=n.indexOf("?"))>0&&parent.frames.length) 
	{
    	d=parent.frames[n.substring(p+1)].document; 
		n=n.substring(0,p);
	}
  	if(!(x=d[n])&&d.all) 
		x=d.all[n]; 
	for (i=0;!x&&i<d.forms.length;i++) 
		x=d.forms[i][n];
  	for(i=0;!x&&d.layers&&i<d.layers.length;i++) 
		x=MM_findObj(n,d.layers[i].document);
  	if(!x && d.getElementById) 
		x=d.getElementById(n); 
	return x;
}
/**
 * La idea de esta función es ir concatenando las palabras o frases que se escriben en el txtPalabraClave
 * usando como token el caracater "#", ejemplo: mi frase1#palabra1#mi frase2# e ir mostrándolas en la lis-
 * ta "lstPalabrasClaves".
 * @author Cristopher Castillo
 * @param txtPalabraClave es el campo de texto donde se inserta la palabra clave
 * @param lstPalabrasClaves es la lista donde se irán cargando las palabras clave
 * @param count campo oculto del formulario que nos servirá para contar cuantas frases o palabras se tienen
 * @param palabrasClave campo oculto donde se irán concatenando las palabras clave
 */
function move(txtPalabraClave,lstPalabrasClaves,count,palabrasClave)
{
	//busco los objetos de formulario que estoy recibiendo y los almaceno en variables
	textPalabraClave = MM_findObj(txtPalabraClave);
	listaPalabras = MM_findObj(lstPalabrasClaves);
	contador = MM_findObj(count);
	palabrasConcatenadas = MM_findObj(palabrasClave);
		
	var lleno = false; //bandera para indicar si hay algo escrito en el campo de texto  "textPalabraClave"

	if(textPalabraClave.value == "") //si no hay nada escrito en "textPalabraClave"
	{
		lleno = true;
	    alert("Debe ingresar la palabra clave") ;
	}	
	
    if(lleno == true)
	{
		return false;
	}	
	
	if(textPalabraClave.value != "") //si hay algo escrito en "textPalabraClave"
	{
		var no = new Option();//creo un nuevo obejto opcion para trabajar con la lista "listaPalabras"
		repetida = true; //bandera que sirvirá para saber si una palabra ya se encuentra en la lista
		count = contador.value; //asigno el valor de contador a una variable
		valor = textPalabraClave.value; //tomo el contenido del "textPalabraClave"
		no.value = valor; //asigno el valor al objeto
		no.text = valor;
		textPalabraClave.value = ""; //limpio el campo de texto "textPalabraClave"
		count++;
		contador.value=count;
		//concateno la palabra con el token "#"
		for (i = 0;i < listaPalabras.options.length; i++)
		{
			if(listaPalabras.options[i].value==valor)//si la palabra ya está en la lista seteo repedida a "false"
			{
				repetida = false;				
			}
		}
		if(repetida == true)
		{
			listaPalabras.options[listaPalabras.options.length] = no; //asigno el objeto a la lista "listaPalabras"
			if (palabrasConcatenadas.value == "")
			{
				palabrasConcatenadas.value = valor+"#";
			}
			else
			{
				palabrasConcatenadas.value = palabrasConcatenadas.value+valor+"#";				
			}
		}
		else
		{
			alert("\""+valor+"\" ya está en la lista");
		}
   }    
}  

/**
 * La idea de esta función es ir desconcatenando las palabras o frases que se seleccionan en la lista
 * "lstPalabrasClaves" además de eliminarlas de la misma
 * @author Cristopher Castillo
 * @param lstPalabrasClaves es la lista donde se irán cargando las palabras clave
 * @param count campo oculto del formulario que nos servirá para contar cuantas frases o palabras se tienen
 * @param palabrasClave campo oculto donde se irán concatenando las palabras clave
 */
function remove(lstPalabrasClaves,count,palabrasClave) 
{	
	//busco los objetos de formulario que estoy recibiendo y los almaceno en varibles
	listaPalabras = MM_findObj(lstPalabrasClaves);
	contador = MM_findObj(count);
	palabrasConcatenadas = MM_findObj(palabrasClave);
	
	var lleno=false;	//bandera para indicar si se seleccionó una palabra de la lista "listaPalabras"
	
	if(listaPalabras.value == "") //si no hay nada seleccionado en "listaPalabras"
	{
		lleno = true;
		alert("Debe seleccionar una palabra de la lista");
	}	
	
	if(lleno==true)
	{
		return false;
	}	
	
	if(listaPalabras.value != "") //si hay algo seleccionado en "listaPalabras"
	{
		count = contador.value;
		valor = listaPalabras.value;
		var palabras = palabrasConcatenadas.value;
		var arregloPalabrasDesconcatenadas = palabras.split("#"); //desconcateno el estring almacenado
		var resultado = "";
		
		for(var i = 0;i<arregloPalabrasDesconcatenadas.length-1;i++)
		{
			var cadena = arregloPalabrasDesconcatenadas[i]; 
			//reasigno las palabras sin la que se eliminó
			if(cadena != listaPalabras.options[listaPalabras.selectedIndex].value)
			{
				if(resultado == "")
				{
					resultado = cadena+"#";
				}
				else
				{
					resultado = resultado+cadena+"#";
				}				
			}			
		}
		
		listaPalabras.options[listaPalabras.selectedIndex] = null;
		listaPalabras.value = "";		
		count--;
		contador.value=count;
		palabrasConcatenadas.value = resultado;	
	}		 
}


