
// MYFOCUS
// Librería de funciones JAVASCRIPT para Search en Forms
// =========================================================================================

function newVar( a_name, a_value )
{
  this.name = a_name;
  this.value = a_value;
  this.added = false;
}

function getVars()
{
  var result = new Array();
  var pos = String(window.location.href).indexOf('?');
  var cArguments = (pos >= 0) ? String(window.location.href).substr(pos + 1) : String('');
  if( cArguments.charAt(cArguments.length - 1) != '&' )  { cArguments = cArguments.concat('&'); }

  while( true ) {
    pos = cArguments.indexOf('&');  // Busca el final de la variable.
    if( pos < 0 )  { break; }

    var currentVar = cArguments.substring(0, pos);   // Guardamos la variable encontrada junto con su valor.
    cArguments = cArguments.substr(pos + 1);        // Eliminamos la variable actual para no volver a encontrarla.

    pos = currentVar.indexOf('=');  if( pos < 0 )  { continue; }
	
		if( currentVar.substring(0, pos) != 'gridPage' )
		{
			result[ result.length ] = new newVar( currentVar.substring(0, pos), currentVar.substr(pos + 1) );
		}
  }

  return result;
}

function getFormVars( a_frm )
{
  var result = new Array();

  for( var n = 0; n < a_frm.length; n++ ) {
    
		// alert( a_frm[n].name + ' = ' + a_frm[n].type );
		switch( a_frm[n].type )
		{
			case 'checkbox':
			{
				// En este caso no comprobamos el .value, sino el .checked
				// Transformamos True y False en 1 y 0 respectivamente
				if( a_frm[n].checked == true ) {
					result[ result.length ] = new newVar( a_frm[n].name, 1 );
				}
				else {
					result[ result.length ] = new newVar( a_frm[n].name, 0 );
				}
				break;
			}

			case 'submit':
			{
				// No hacemos nada
				break;
			}
			
			default:
			{
				result[ result.length ] = new newVar( a_frm[n].name, a_frm[n].value );
				break;
			}
		}
  }

  return result;
}

function getPage()
{
  var pos = String(window.location.href).indexOf('?');
  var result = (pos >= 0) ? String(window.location.href).substr(0, pos) : String(window.location.href);
  return result;
}

function submitSearchForm( a_frm )
{

  var currentPage = getPage();
  var currentArgs = getVars();
  var newArgs     = getFormVars( a_frm );
  var resultArgs  = String('');
  var n = 0;
  var m = 0;
	
  // Añadimos los parámetros antiguos.
  for( n = 0; n < currentArgs.length; n++ ) {
    var arg = currentArgs[ n ];

    for( m = 0; m < newArgs.length; m++ ) {
      
			if( arg.name == newArgs[ m ].name ) {
        // La variable ha sido encontrada dentro del formulario. Sustituimos el valor original.
				arg.value = newArgs[ m ].value;
        newArgs[ m ].added = true;
        break;
      }
    }

    resultArgs += '&' + arg.name + '=' + arg.value;
  }

  // Añadimos los parámetros nuevos.
  for( m = 0; m < newArgs.length; m++ ) {
    var arg = newArgs[ m ];

    if( arg.added == false ) {
      // Aún no ha sido encontrada. La añadimos como parámetro.
      resultArgs += '&' + arg.name + '=' + arg.value;
      newArgs[ m ].added = true;
    }
  }

  // Eliminamos el primer '&' y lo cambiamos por '?'.
  if( resultArgs.length > 0 )  { resultArgs = '?' + resultArgs.substr(1); }
	
  // Saltamos a la página calculada.
  // MUY IMPORTANTE: No se ejecuta el 'submit' del formulario sino que saltamos directamente a la página con la URL calculada.
  //a_frm.action = currentPage + resultArgs;
  window.location.href = currentPage + resultArgs;
  return false;
}

// GUSTAVO

function submitSearchFormDirect( a_frm, Check, Url, Operator )
{
  var newArgs = getFormVars( a_frm );
  var m = 0;
  var resultArgs  = String('');

	// Comprobamos que el término a buscar es correcto si ha sido indicado
	if( Check == true ) {
		if( LibSearchCheck(a_frm.Search.value, '', a_frm.name) == false ) {
			return false;
		}
	}

  // Añadimos los parámetros nuevos.
  for( m = 0; m < newArgs.length; m++ )
  {
    var arg = newArgs[ m ];
    resultArgs += '&' + arg.name + '=' + arg.value;
  }

  // Eliminamos el primer '&' y lo cambiamos por el Operator indicado
  if( resultArgs.length > 0 )  { resultArgs = Operator + resultArgs.substr(1); }

  // Saltamos a la página calculada.
  window.location.href = Url + resultArgs;
  return false;
}

/* EXTERN */

// Comprueba el tamaño del término a buscar
function LibSearchCheckLength (SearchTerm, length)
{
	if (SearchTerm.length < length) {
		return false;
	}
}

// Comprueba si el texto a buscar es correcto
function LibSearchCheck (SearchTerm, StopWord, formname)
{
	// Quitamos espacios y retornos de carro
	SearchTerm = Trim (SearchTerm);

	if ( LibSearchCheckLength(SearchTerm, 3) == false )
	{
		alert ("Por favor introduzca al menos 3 caracteres.");
		return false;
	}
	
	return true;
}

// Quita espacios y retornos de carro
function Trim(s) {
	while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r')) {
	  s = s.substring(1,s.length);
	}

	while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r')) {
   	s = s.substring(0,s.length-1);
	}
	return s;
}
