
function trim(strIn)
{
  blnBeginning = true;
  blnInSpace = false;
  strOut = "";
  strSpace = "";
  
  for(iPos = 0; iPos < strIn.length; iPos++)
  {
    chr = strIn.charAt(iPos);
    
    if(chr == ' ' || chr == '\t' || chr == '\n') {
    	if(!blnBeginning) {
            blnInSpace = true;
    	    strSpace += chr;
    	}
    }
    else {
    	if(blnBeginning) {
    	    blnBeginning = false;
        }
	else if(blnInSpace) {
	    blnInSpace = false;
	    strOut += strSpace;
	    strSpace = "";
	}
	
	strOut += chr;
    }
  }
  
  return strOut;
}


function checkTextNotEmpty(strIn)
{
  strTrimmed = trim(strIn);

  if(strTrimmed.length == 0) {
    return false;
  }
  else {
    return true;
  }
}


function checkNumber(strIn)
{
//@FG-01/10/2001 - begin
//	var intValue = parseInt(strIn);
//	return !(isNaN(intValue));
//@FG-01/10/2001 - end
	return !(isNaN(strIn));
}

function checkNumberPositive(strIn)
{
	var intValue = parseInt(strIn);
	if (checkNumber(intValue))
	{
		return (intValue >= 0);
	}
	else
	{	return false;
    }
}


function checkNIF(strNIF)
{
	var nif, temp, number, letter, position;
	var character = "TRWAGMYFPDXBNJZSQVHLCKE";

	if(trim(strNIF).length < 4 || trim(strNIF).length > 9)
	{	
		return 	false;
	}
	firstLetter = trim(strNIF).substring(0,1).toUpperCase();
	if (firstLetter=="K" || firstLetter=="L" || firstLetter=="M")
		 return checkNIF(trim(strNIF).substring(1,trim(strNIF).length));
	
	nif = trim(strNIF).toUpperCase();
	temp = trim(nif).substring(0,1);
	//Se eliminan los ceros de la izda.
	if (temp == "0")
	{
		while (temp == "0")
		{
			nif = trim(nif).substring(1, trim(nif).length);
			temp = trim(nif).substring(0,1);
		}
	}
	if (trim(nif).length < 4 || trim(nif).length > 9)
	{
		return false;
	}
	
	number = trim(nif).substring(0, trim(nif).length - 1);
	if (!checkNumber(number)) 
		return false;
		
	letter = trim(nif).substring(trim(nif).length - 1, trim(nif).length);
	if (!IsAlphaAnd(letter, false, ""))
		return false;

	position = number % 23;
	if (letter != character.substring(position, position + 1))
		return false;
		
	return true;

}

function checkNIE(strNIE)
{
	var firstLetter, nif;

	firstLetter = trim(strNIE).substring(0,1).toUpperCase();
	if (firstLetter != "X" && firstLetter != "Y" && firstLetter != "Z")
		return false;
		
	nif = trim(strNIE).substring(1, trim(strNIE).length);
	while (nif.length < 8)
		nif = "0"+nif;
	if (firstLetter == "Y")		
	   return checkNIF('1'+nif);;
	if (firstLetter == "Z")		
	   return checkNIF('2'+nif);;
		
	return checkNIF(nif);
}

function checkCIF(strCIF)
{
	var number, firstLetter;
	var character = "ABCDEFGHPQSRJUVWT";
	
	firstLetter = trim(strCIF).substring(0,1).toUpperCase();
	if (character.indexOf(firstLetter) == -1)
		return false;

	number = trim(strCIF).substring(1).toUpperCase();
	if (trim(number).length <=8 && trim(number).length > 1 && checkNumber(trim(number)))
		return true;
	
	return false;
}

function checkBankCode(strBankCode)
{
	if (checkNumber(trim(strBankCode)) && trim(strBankCode).length == 4)
		return true;
	
	return false;
}

function checkOfficeCode(strOfficeCode)
{
	if (checkNumber(trim(strOfficeCode)) && trim(strOfficeCode).length == 4)
		return true;
	
	return false;
}

function checkControlDigit(strControlDigit)
{
	if (checkNumber(trim(strControlDigit)) && trim(strControlDigit).length == 2)
		return true;
	
	return false;
}

function checkAccountNumber(strAccountNumber)
{
	if (checkNumber(trim(strAccountNumber)) && trim(strAccountNumber).length == 10)
		return true;
	
	return false;
}

function isValidAccount(bankCode, officeCode, controlDigit, accountNumber)
{
	if (!checkBankCode(bankCode) || !checkOfficeCode(officeCode) || !checkControlDigit(controlDigit) || !checkAccountNumber(accountNumber))
		return false;
	if (controlDigit == calculateControlDigit(bankCode + officeCode, accountNumber))
		return true;
	return false;
}

function calculateControlDigit(bank, account)
{
      pesos = new Array(6,3,7,9,10,5,8,4,2,1);
      var result = "";
      var i = 0;
      
      for (var j = 0; j <= 7; j++)
      {
         i = i + bank.substr(7 - j, 1) * pesos[j];
      }
      
      result = 11 - i % 11;
      if (result > 9)
      {
        result=1-result % 10;
      }
      
      i = 0;
      for (var j = 0; j <= 9; j++)
      {
         i = i + account.substr(9 - j, 1) * pesos[j];
      }
      
      i = 11 - (i % 11);
      if (i > 9)
      {
       i = 1 - (i % 10);
      }
      
      result = result * 10 + i;
      
      return result;
 }


function IsAlphaAnd(chaine, numeric, specialChars, blank)
{
	var i = 0;
	var validate = true;
	
	var character_authorized="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÑñ";
	
	// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! arreglar !!!!!!!!!!!!!!!!!!!!
	// Error en ejecución ??
	// character_authorized += "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞøßàáâãäåæçèéêëìíîïðñòóôõöùúûüýþ";
	
	character_authorized += specialChars;

	if (blank) 
		character_authorized += " ";

	if (numeric) 
		character_authorized += "0123456789";
				
	chaine = trim(chaine);
	
	if (chaine.length != 0) 
	{
		while (validate && (i <= (chaine.length - 1)))	
		{					
			if (character_authorized.indexOf(chaine.charAt(i))== -1) 
			{	
				validate = false;
			}
			i = i + 1;
		}
	}
	else
	{	
		validate = false;
	}	
		
	return validate;
}

function containNumeric(chaine)
{
    var i = 0;
	var contain = false;
	var character_NoAuthorized = "0123456789";
	
    if (chaine.length != 0) 
	{
		while (!contain && (i <= (chaine.length - 1)))	
		{					
			if (character_NoAuthorized.indexOf(chaine.charAt(i))> -1 ) 
			{	
				contain = true;
			}
			i = i + 1;
		}
	}
	else
	{	
		contain = false;
	}	
		
	return contain;    
}
