function convertLetters(sIBAN)
{
	var sNewIBAN="";
	for ( i = 0; i < sIBAN.length; i++ )
	{
		var nCharacter = sIBAN.charCodeAt ( i );
		if ( nCharacter < 48 || nCharacter > 57 ) sNewIBAN += String ( nCharacter - 55 );
		else sNewIBAN += String ( nCharacter - 48 );
	}
	return sNewIBAN;
}
function getMod97 ( sIBAN )
{
	// Okay, this is a very long number so we can't simply use parseInt. Instead
	// we'll break it up and deal with it in chunks...
	var sChunk = "";
	var nResult = 0, nProcessed = 0, nInputLength = sIBAN.length, nModChunk;
	var bFirst = true;
	var nAmount = 9;

	while ( nProcessed < nInputLength )
	{
		if ( nProcessed + nAmount > nInputLength )
			nAmount = nInputLength - nProcessed;
		sChunk += sIBAN.substr ( nProcessed, nAmount );
		nModChunk = parseInt ( sChunk ) % 97;
		sChunk = String ( nModChunk );
		nProcessed += nAmount;
		nAmount = 7;
	}
	return nModChunk;
}

function ValidateIBAN(source, arguments) {

    iban = arguments.Value;

    var iban = iban.replace(/ /g, '').toUpperCase();
    var iban = iban.replace(/-/g, '').toUpperCase();
	
	
	if (arguments.Value.length == 0)
	    return true;
		


	var reIBAN = /^[a-zA-Z]{2,2}\d{2,2}[a-zA-Z0-9]{1,30}$/;
	
		arguments.IsValid = reIBAN.test(iban);	
}	


	function IsNumeric(sText)
	{
		var ValidChars = "0123456789";
		var character;
		if (sText == "")
		return false;
			for (i = 0; i < sText.length; i++) 
			{ 
				character = sText.charAt(i); 
				if (ValidChars.indexOf(character) == -1) 
				{
				return false;
				}
			}
		return true;
	}

	function ElevenCheck(accountNumber)
	{
		returnValue = false;
		sum = 0;
		multiplier = 10;
		count = 10 - accountNumber.length;
		for(index=0;index<count;index++)
		{
			accountNumber = '0' + accountNumber;
		}
		for(index=0;index<accountNumber.length;index++)
		{
			tmpInteger = parseInt(accountNumber.charAt(index),10) * multiplier;
			sum = sum + tmpInteger;
			multiplier--;
		}
		result = sum / 11;
		returnValue = (result == Math.floor(result));
		return returnValue;
	}

	function CheckBankNumber(source, arguments) {

	    number = arguments.Value;

	    var number = number.replace(/ /g, '').toUpperCase();
	    var number = number.replace(/-/g, '').toUpperCase()
	
		//remove the non digits
		tmpAccountNumber = FilterSpecialChars(number);
		//if not is a number then is not valid
		if(!IsNumeric(tmpAccountNumber))
		{
			arguments.IsValid = false;
		}
		else
		{
				//it is a belgium account nummer
			stringLength = tmpAccountNumber.length;
			if(stringLength == 12)
			{
				checkNumber = tmpAccountNumber.substring(10,12);
				accountNumber = tmpAccountNumber.substring(0,10);
				checkValue = parseInt(accountNumber,10)%97;
				
				if (checkValue == 0 && parseInt(checkNumber,10) == 97)
				{
					arguments.IsValid = true;
				}
				else if(checkValue == parseInt(checkNumber,10))
				{
					arguments.IsValid = true;
				}
				else
				{
					arguments.IsValid = false;
				}
			}
			else
			{
				arguments.IsValid = false;
			}
		}
	}
	
	function FilterSpecialChars(str) 
	{
      re = /\$|,|@|#|~|`|\%|\*|\^|\&amp;|\(|\)|\+|\=|\[|\-|\_|\]|\[|\}|\{|\;|\:|\'|\"|\&lt;|\&gt;|\?|\||\\|\!|\$|\./g;
      // remove special characters like "$" and "," etc...
		return str.replace(re, "");
   }

