/* bacis functions */
function confMsg(msg)
{
	if (!confirm(msg))
	{
		return false;
	}
}

function valEmpty(elem, msg)
{
	if (elem.value.length == 0)
	{
		alert(msg)
	    elem.focus();
	    return false;
	}
	return true;
}

function valOption(elem, msg)
{
	if (elem.options[elem.options.selectedIndex].value == 0)
	{
        alert (msg);
        elem.focus();
        return false;
    }
	return true;
}

function valNumber(elem, msg)
{
	if (isNaN(parseInt(elem.value)))
	{
        alert (msg);
        elem.focus();
        return false;
	}
	return true;
}

function valExpression(elem, msg, expr)
{
	var re = expr;
	
	if (elem.value.search(re)==-1)
	{
        alert (msg);
        elem.focus();
        return false;
	}
	return true;
}

/* specific functions */
function valCharacter(elem, msg)
{
	if(!valEmpty(elem, msg)) return false;

	var re=/^[\w]+$/;
	if(!valExpression(elem, msg, re)) return false;
	
	return true;
}

function valLetter(elem, msg)
{
	if(!valEmpty(elem, msg)) return false;
	
	var re=/^[a-zA-Z]+[\w\s]*$/;
	if(!valExpression(elem, msg, re)) return false;
	
	return true;
}

function valEmail(elem, msg)
{
	if(!valEmpty(elem, msg)) return false;
	
	var re=/^[\w\.\_\+-]*@[\w\_\+-]+(\.[\w\_\+-]+)*\.[\w\+-]+$/;
	if(!valExpression(elem, msg, re)) return false;
	
	return true;
}
