function trimAllNbsp(s)//с конца строки
{
	s += '';
	return s.replace(/\s+/, ''); 
}

/**
с начала строки удаляем нули
*/
function LZeroTrim(s)
{
	s += '';
	return s.replace(/^0/, ''); 
}
//\\LZeroTrim

/**
удаляем из строки любой не цифровой символ
*/
function trimUnDigitSimbol(s)
{
	
	s += '';
	return s.replace(/[^0-9]+/, '');
}

/**
если указанная сумма одноразрядная
*/
var oneNumberPosition = [	 
  ['0', '']
, ['1', 'один']
, ['2', 'два']
, ['3', 'три']
, ['4', 'четыре']
, ['5', 'пять']
, ['6', 'шесть']
, ['7', 'семь']
, ['8', 'восемь']
, ['9', 'девять']	
];
//\\oneNumberPosition

/**
если указанная сумма двухразрядная и ее значение лежит в интервале от 10 до 19
*/
var twoNumberPositionFrom10To19 = [	  
  ['0', '']
, ['10', 'десять']
, ['11', 'одиннадцать']
, ['12', 'двенадцать']
, ['13', 'тринадцать']
, ['14', 'четырнадцать']
, ['15', 'пятнадцать']
, ['16', 'шестнадцать']
, ['17', 'семнадцать']
, ['18', 'восемнадцать']
, ['19', 'девятнадцать']
];
//\\twoNumberPositionFrom10To19

/**
если указанная сумма двухразрядная и ее значение больше 19 именьше или равно 99 (здесь только десятки)
*/
var twoNumberPositionGT19 = [	  
  ['0', '']
, ['2', 'двадцать']
, ['3', 'тридцать']
, ['4', 'сорок']
, ['5', 'пятьдесят']
, ['6', 'шестьдесят']
, ['7', 'семьдесят']
, ['8', 'восемьдесят']
, ['9', 'девяносто']
];
//\\twoNumberPositionGT19

/**
если указанная сумма трехразрядная (здесь указываем только сотни)
*/
var threeNumberPosition = [	  
  ['0', '']
, ['1', 'сто']
, ['2', 'двести']
, ['3', 'триста']
, ['4', 'четыреста']
, ['5', 'пятьсот']
, ['6', 'шеcтьсот']
, ['7', 'семьсот']
, ['8', 'восемьсот']
, ['9', 'девятьсот']	
];
//\\threeNumberPosition

/**
если указанная сумма четырехразрядная (здесь указываем только тысячи)
*/
var fourNumberPosition = [	  
  ['0', '']
, ['1', 'одну']
, ['2', 'две']
, ['3', 'три']
, ['4', 'четыре']
, ['5', 'пять']
, ['6', 'шеcть']
, ['7', 'семь']
, ['8', 'восемь']
, ['9', 'девять']	
];

//var fourNumberPositionEndAsString = 'тысячу';
//\\threeNumberPosition


/**
ищем указанное число в массиве, и возвращаем его строковое представление
*/
function digitToStrFromArray(value, array)
{
	var string;
	
	for(var i in array)
	{
		if(array.hasOwnProperty(i) && array[i][0] == value)
		{
			string = array[i][1];
		}
	}
	
	return string;
}
//\\digitToStrFromArray
	
/**
переводим (конвертируем) число из трех разрядов в строку
*/
function twoOrOneDigitToString(value, isThousand)
{	
	value = parseInt(value, 10);
	isThousand = (isNaN(isThousand) || isThousand == false) ? false : true;
	
	
	if(value >= 10 && value <= 19)
	{
		value = digitToStrFromArray(value, twoNumberPositionFrom10To19);
	}
	/**
	иначе, если value на полуотрезке (19, 99], то разбиваем число на две составляющие: value[0] = 2му разряду, value[1] = 1ому разряду
	*/
	else if(value > 19 && value <= 99) 
	{	
		value = value.toString().split('');
		
		value = digitToStrFromArray(value[0], twoNumberPositionGT19) + ' ' + digitToStrFromArray(value[1], ( (isThousand) ? fourNumberPosition : oneNumberPosition ) );
	}
	else if(value < 10)
	{			
		value = digitToStrFromArray(value, ( (isThousand) ? fourNumberPosition : oneNumberPosition ));
	}
	
	return value;
}
//\\twoOrOneDigitToString


/**
переводим (конвертируем) число из трех разрядов в строку
*/
function threeDigitToString(value, isThousand)
{
	value = value.split('');
	isThousand = (isNaN(isThousand) || isThousand == false) ? false : true;
	/*
	value[0] - сотни
	value[1] - десятки
	value[2] - единицы
	*/
	
	value = digitToStrFromArray(value[0], threeNumberPosition) + ' ' +  twoOrOneDigitToString(parseInt(value[1]+value[2], 10), isThousand);
	
	return value;
}
//\\threeDigitToString

/**
переводим (конвертируем) число из 4-х разрядов в строку
*/
function fourDigitToString(value)
{
	value = value.split('');			
	/*
	value[0] - тысячи
	value[1] - сотни
	value[2] - десятки
	value[3] - единицы
	*/	
	
	value = digitToStrFromArray(value[0], fourNumberPosition) + ' ' + (value[0] == 1 ? 'тысячу' : ( (value[0] > 1 && value[0] < 5 ) ? 'тысячи' : 'тысяч' ) ) + ' ' + threeDigitToString(value[1]+value[2]+value[3]);
	
	return value;
}
//\\fourDigitToString


/**
переводим (конвертируем) число из 5-и разрядов в строку
*/
function fiveDigitToString(value)
{
	value = value.split('');
	
	/*
	value[0] - десятки тысяч
	value[1] - тысячи
	value[2] - сотни
	value[3] - десятки
	value[4] - единицы
	*/			
	var tmpValue = twoOrOneDigitToString(parseInt(value[0]+value[1], 10), true);

	tmpValue += ' ' + (value[1]  == '1' && !(parseInt(value[0]+value[1], 10) > 9 && parseInt(value[0]+value[1], 10) < 20) ? 'тысячу' : ( 
	 parseInt(value[1], 10) > 1 && parseInt(value[1], 10) < 5 && ((parseInt(value[0]+value[1], 10) > 1 && (parseInt(value[0]+value[1], 10) < 5) )	|| parseInt(value[0]+value[1], 10) > 19) ) ? 'тысячи' : 'тысяч' ) ;
	
	if(parseInt(value[2]+value[3]+value[4], 10) > 0)
	{
		tmpValue += ' ' + threeDigitToString(value[2]+value[3]+value[4], false);
	}
	return tmpValue;
}
//\\fiveDigitToString

/**
переводим (конвертируем) число из 6-и разрядов в строку
*/
function sixDigitToString(value)
{
	value = value.split('');			
	/*
	value[0] - сотни тысяч
	value[1] - десятки тысяч
	value[2] - тысячи
	value[3] - сотни
	value[4] - десятки
	value[5] - единицы
	*/		
	value =  digitToStrFromArray(value[0], threeNumberPosition) + ' ' + fiveDigitToString(value[1]+value[2]+value[3]+value[4]+value[5]);
	return value;
}
//\\sixDigitToString

/**
переводим (конвертируем) число в строку
*/
function digitToString(value, srcValueFildId)
{
	//удаляем начальные нули
	value = LZeroTrim(trimAllNbsp(value));
	value = trimUnDigitSimbol(value);
	
	document.getElementById(srcValueFildId).value = value;
	
	//определяем, скольки разрядное число
	var countDigit = value.length;
	if(parseInt(value, 10) > 999999) countDigit = 0;
			
	
	switch(countDigit)
	{
		case 0:
			//alert("ОШИБКА!\nУкажите сумму от 1 до 999999!");
			return;
		break;
		
		case 1:			
		case 2:
			value = twoOrOneDigitToString(value);
		break;			
		
		case 3:
			value = threeDigitToString(value);				
		break;
		
		case 4:								
			value = fourDigitToString(value);
		break;
		
		case 5:								
			value = fiveDigitToString(value, true);
		break;
		
		case 6:
			value = sixDigitToString(value, true);
		break;
	}
	
	
	value = (Trim(value)).replace('  ', ' ');	
	return value;
}
//\\digitToString

function dwnlPostBlank()
{
	var errorMsg = "Ошибка при заполненнии формы!\nВозможные причины:";
	var formValid = true;
	
	if (	 
	!(/^[0-9]+$/).test(GetElementData('postBlankAmountRub').value)	
	|| !(/^[0-9]+$/).test(GetElementData('postBlankAmountKop').value)
	)
	{
		formValid = false;
		errorMsg += "\nСумма платежа не указана, или указана не верно.";
	}
	
	if ( 
	
	!(/^[^0-9a-zA-Z-]{1,}(-[^0-9a-zA-Z]{2,}){0,}$/i).test(GetElementData('postBlankSurname').value)
	|| !(/^[^0-9a-zA-Z-]{1,}(-[^0-9a-zA-Z]{2,}){0,}$/i).test(GetElementData('postBlankName').value)
	|| !(/^[^0-9a-zA-Z-]{1,}(-[^0-9a-zA-Z]{2,}){0,}$/i).test(GetElementData('postBlankPatronymic').value)
	
	)
	{
		formValid = false;
		errorMsg += "\nФИО указано не верно.";
	}
	
	if (GetElementData('postBlankAddress').value.length < 20)
	{
		formValid = false;
		errorMsg += "\nНе указан адрес, или указан не полностью.";
	}
	
	if (!(/^[0-9]{20,20}$/i).test(GetElementData('postBlankClientCode').value))
	{
		formValid = false;
		errorMsg += "\nКод клиента указан не верно.";
	}
	if (!(/^[0-9]{4,4}_[0-9]{3,10}$/i).test(GetElementData('postBlankAccountNumber').value))
	{
		formValid = false;
		errorMsg += "\nНомер договора указан не верно.";
	}
	
	if(!formValid)
	{
		alert(errorMsg);
	}
	else
	{
		GetElementData('postBlankAmountRubAsString').value = digitToString(GetElementData('postBlankAmountRub').value, 'postBlankAmountRub');
		pageTracker._trackPageview('/blank_online.html/getPostBlank');
		return true;
	}
	return false;
}