var err_prepend = '';

function money(m) {
	if (typeof(m) == 'number') {
		var s = '', sign = false;
		if (m < 0) {
			m = -m;
			sign = true;
		}
		var i = Math.floor(m), f = Math.round((m - i) * 100);
		if (f == 100) {
			i++;
			f = 0;
		}
		s += '' + i;
		if (s.length > 3) {
			var t = '';
			for (var j = 1; j <= Math.floor(s.length / 3); j++) {
				if (t != '') t = ',' + t;
				t = s.substr(s.length - j * 3, 3) + t;
			}
			if (t != '' && s.length % 3 != 0) t = ',' + t;
			s = s.substr(0, s.length % 3) + t;
		}
		s += '.';
		if (f < 10) s += '0'
		s += f;
		if (s != '0.00' && sign) s = '-' + s;
		return s;
	} else
		return m;
}

function validNumber(s, min, max, integer) {
	if (typeof(s) == 'string') {
		s = s.replace(/,/g, '');
		s = parseFloat(s);
		if (integer) s = Math.round(s);
	}

	if (typeof(s) != 'number' || isNaN(s)) return 'number ' + (max == null ? 'equal to or greater than ' + min : 'in range ' + min + '..' + max) + ' is expected';
	if (s < min) return 'value is too small, ' + (max == null ? 'it must be equal to or grater than ' + min : 'valid range is ' + min + '..' + max);
	if (max != null && s > max) return 'value is too big, valid range is ' + min + '..' + max;

	return s;
}

var error = false;

function el(id) {
	return document.getElementById(id);
}

function validField(id, min, max, integer) {
	var f = el(id), e = el(id + '_err'), n = validNumber(f.value, min, max, integer);
	if (typeof(n) == 'string') {
		e.innerHTML = err_prepend + n;
		if (!error) {
			f.focus();
			error = true;
		}
		return null;
	} else {
		//f.value = n;
		e.innerHTML = '&nbsp;';
		return n;
	}
}

function validField2(id, min, max, integer) {
	var f = el(id), n = validNumber(f.value, min, max, integer);
	if (typeof(n) == 'string') {
		if (!error) {
			f.focus();
			error = true;
		}
		return n;
	} else
		return n;
}
