function trim(string){
	
	string = string.replace(/&nbsp;/g, ' ');
	return string.replace(/(^\s+)|(\s+$)/g, '');
};

function validate(fld)	
{
	fld.value = trim(fld.value);
	
	if (!fld.value.length)
	{
		alert('Please fill all required fields!');
		return false;
	}
	return true;
};

function _validate(fld, regexp, oblig, message)
{
	if (oblig==1)
	{
		if (!validate(fld))
		{
			fld.focus();
			return false;
		}
	}
	
	if (fld.value.length == 0)
	{
		return true;
	}
	else
		if (!fld.value.match(regexp))
		{
			alert(message);
			if (oblig == 1)
			{
				fld.focus();
			}
			return false;
		}
	return true;
};

function validateEmpty(fld, oblig)
{
	if(oblig==undefined) oblig = true;
	
	if (oblig)
	{
		if (!validate(fld))
		{
			fld.focus();
			return false;
		}
	}
	
	return true;
};

function validateEmail(fld,oblig)
{
	return _validate(fld, /^[\w\.-]+@[\w\.-]+\.[\w\.]{2,6}$/ ,oblig,"Wrong e-mail format!");
};

function validateImage(fld,oblig)
{
	return _validate(fld, /(jpg|jpeg|png|gif|bmp)$/i ,oblig,"Wrong image format!");		
};

function validateNumber(fld, oblig)
{
	return _validate(fld, /^[\-]{0,1}[0-9]*$/ ,oblig, "Wrong number format!");	
};

function validateFloatNumber(fld, oblig)
{
        return _validate(fld, /^[0-9]*(\.[0-9]*)?$/ ,oblig,"Wrong float number format !");
};

function validateCount(fld, oblig, allowZero)
{
	if (allowZero>0)
		return _validate(fld, /^(([1-9]{1}[0-9]{0,5})|0)$/ ,oblig,"Wrong count format!");	
	else
		return _validate(fld, /^[1-9]{1}[0-9]{0,5}$/ ,oblig,"Wrong count format!");		
};

function validateMoney(fld, oblig)
{
	return _validate(fld, /^\$?[0-9]*\.?[0-9]{0,2}$/ ,oblig,"Wrong money format!");	
};

function validateName(fld,oblig)
{
	var reg =/^[\w\s]*(new|view|alter|varchar|integer|create|select|date|time|select|all|begin|catalog|class|cluster|column|comment|convert|object)([\s]|$)/i;
	
	if (fld.value.match(reg))
	{
	 alert("Value '"+fld.value+"' cannot be accepted!");
	 return false;
	}
	return _validate(fld, /^[a-zA-Z]+[a-zA-Z0-9_]{0,50}$/,oblig, "Error: Name contains invalid characters or is too long.\nMust start with lower case letter and contain only lower case letters, digits, or underscore.\nLength must not exceed 50 characters");
};

function validateFileName(fld,oblig)
{
	var reg =/^[\w\s]*(new|view|alter|varchar|integer|create|select|date|time|select|all|begin|catalog|class|cluster|column|comment|convert|object)([\s]|$)/i;
	
	if (fld.value.match(reg))
	{
	 alert("Value '"+fld.value+"' cannot be accepted!");
	 return false;
	}
	return _validate(fld, /^[a-zA-Z0-9_]+[a-zA-Z0-9_\s]{0,50}[\.]{1}[a-zA-Z0-9]{1,4}$/,oblig, "Error: File name contains invalid characters or is too long.\nMust start with letter or digit and contain only letters, digits, underscore, dash, dot and space.\nAlso - make sure that the file has a proper extension, ie. name.txt, name.gif, etc.\nLength must not exceed 50 characters");
};

function isValidName( ctl, value, fieldName )
{
	var keywordsregx = /^[\w\s]*(new|view|alter|varchar|integer|create|select|date|time|select|all|begin|catalog|class|cluster|column|comment|convert|object)([\s]|$)/i;
	if( value.match( keywordsregx ) )
	{
		return 'Value \'' + value + '\' cannot be accepted'; 
	}
	if( !value.match( /^[a-zA-Z]+[a-zA-Z0-9_\-\.:, ]{1,50}$/ ) )
	{
		return fieldName + ' contains invalid characters or is too long.\nMust start with letter and contain only letters, digits, underscore, dash and dot.\nLength must not exceed 50 characters';
	}
	return true;
};

function validateRealName(fld,oblig)
{
	return _validate(fld, /^[a-zA-Z]+[a-zA-Z\. ]{0,50}$/,oblig, "Wrong name!");
};

function validateBookName(fld,oblig)
{
	return _validate(fld, /^[a-zA-Z]+[a-zA-Z0-9_ ]{0,100}$/,oblig, "Wrong name!");
};

function validatePassword(fld,oblig)
{
	return _validate(fld, /^[^\'\"\` ]{6,20}$/,oblig, "Wrong password! Must contain at least 6 characters.");
};

function validateTime(fld, oblig)
{
	return _validate(fld, /^(\d{1,2}\:+\d{1,2})(\:+\d{1,2})?$/, oblig,"Wrong time format!\n\nShould be HH:mm:ss.");
};

function validateDate( fld, oblig )
{
	return _validate( fld, /^\d{1,2}\/+\d{1,2}\/+(\d{2}|\d{4})$/, oblig, "Wrong date format!\n\nShould be MM/DD/YYYY." );
};

function validateDateTime( fld, oblig )
{
	return _validate( fld, /^\d{1,2}\/+\d{1,2}\/+(\d{2}|\d{4})( \d{1,2}(\:+\d{1,2})?(\:+\d{1,2})?)?$/, oblig, "Wrong datetime format!\n\nShould be MM/DD/YYYY HH:mm:ss." );
};
