var isInteger_re = /^\s*(\+|-)?\d+\s*$/;
var isReal_re = /^\s*(\+|-)?((\d+(\,\d+)?)|(\,\d+))\s*$/;
var isCurrency_re = /^\s*(\+|-)?((\d+(\,\d+)?)|(\,\d+))\s*$/;
var isEmail_re = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
var isTelephone_re = /^((\+|00)\d{1-3}\w*|0)((\d{2}[\w\-]*\d{7})|(\d{3}[\w\-]*\d{6}))$/;
var addThousandsSeparator_re = /(\d+)(\d{3})/;
var removeThousandsSeparator_re = /(\d+)\.(\d{3})/;

function isCurrency(value) {
	return isCurrency_re.test(value);
}

function isInteger(value) {
	return isInteger_re.test(value);
}

function isReal(value) {
	return isReal_re.test(value);
}

function isEmail(value) {
	return isEmail_re.test(value);
}

function isTelephone(value) {
	return isTelephone_re.test(value);
}

function numberToCurrency(value) {
	value=String(Number(value).toFixed(2));
	segments = value.split(".");
	while (addThousandsSeparator_re.test(segments[0])) {
		segments[0] = segments[0].replace(addThousandsSeparator_re, "$1" + "." + "$2");
	}
	return segments[0] + "," + segments[1];
}

function currencyToNumber(value) {
	value=String(value);
	segments = value.split(",");
  return segments.length>1?Number(String(segments[0]) + "." + String(segments[1])):Number(segments[0])
}

function numberToInteger(value) {
	while (addThousandsSeparator_re.test(value)) {
		value = value.replace(addThousandsSeparator_re, "$1" + "." + "$2");
	}
  return value;
}

function integerToNumber(value) {
	while (removeThousandsSeparator_re.test(value)) {
		value = value.replace(removeThousandsSeparator_re, "$1$2");
	}
  return value;
}

function numberToReal(value) {
	value=String(value);
	segments = value.split(".");
	while (addThousandsSeparator_re.test(segments[0])) {
		segments[0] = segments[0].replace(addThousandsSeparator_re, "$1" + "." + "$2");
	}
	return segments[0] + "," + ((segments.length>1)?segments[1]:"");
}

function realToNumber(value) {
	value=String(value);
	segments = value.split(",");
	return segments.length>1?Number(String(segments[0]) + "." + String(segments[1])):Number(segments[0])
}

function escapeHTML(value)
{
	var div = document.createElement('div');
	var text = document.createTextNode(value);
	div.appendChild(text);
	return div.innerHTML;
}

var form_errorLayer=null;
var form_error_header="";
var form_error_footer="";
var form_error_text="";
var form_result=true;
var form_required=true;

function addError(formfield, errormessage) {
	if (form_errorLayer) {
		if (form_result)
			form_error_text+=form_error_header;
		form_error_text+="<li>" + errormessage + "</li>\n";
	} else
		if (form_result) alert(errormessage);
	addClass(formfield, "error");
	if (form_result)
		if (typeof(formfield)!="object" && !formfield.length)
			switch (formfield.nodeName) {
				default:
					formfield.focus();
					break;
			}
	form_result=false;
}

