﻿var regEmail = new RegExp( "^(([^<>()\\[\\]\\\\,;:@\"\\x00-\\x20\\x7F]|\\\\.)+)@(([a-z0-9-]|#\\d+?)*([a-z0-9]|#\\d+?)\\.)+([a-z]{2,4})$" );
var regPhone = new RegExp( /^\+?\d+[-\s\d]*\d+$/ );

function Validator(){};

Validator.ValidateNotEmpty = function( fields, placename, alertText )
{
    var isValid = true;	
	var currField = null;
	var arrayLength = fields.length;	
	
    for( var i=0; i < arrayLength && isValid; i++ )
	{
		currField = document.getElementById( placename + fields[ i ] );
		if( currField && ( currField.value == "" || currField.value <= 0 ) )
		{
			isValid = false;
			Validator.CreateAlert( currField, alertText );		
		}	
	}
    return isValid;
}

Validator.ValidateNumeric = function( fields, placename, alertText )
{
    var isValid = true;	
	var currField = null;
	var arrayLength = fields.length;
    
    for( var i=0; i < arrayLength && isValid; i++ )
	{
		currField = document.getElementById( placename + fields[ i ] );
		if( currField && !Utilities.IsNumeric( currField.value ) )
		{
			isValid = false;
			Validator.CreateAlert( currField, alertText );		
		}	
	}
    return isValid;    
}
    
Validator.ValidateEmail = function( fields, placename, alertText )
{
    var isValid = true;	
	var currField = null;
	var arrayLength = fields.length;
    
    for( var i=0; i < arrayLength && isValid; i++ )
	{
		currField = document.getElementById( placename + fields[ i ] );
		if( currField && !Validator.IsValidEmail( currField.value ) )
		{
			isValid = false;
			Validator.CreateAlert( currField, alertText );		
		}	
	}
    return isValid;
}
    
Validator.ValidatePhone = function( fields, placename, alertText )
{
    var isValid = true;	
	var currField = null;
	var arrayLength = fields.length;
    
    for( var i=0; i < arrayLength && isValid; i++ )
	{
		currField = document.getElementById( placename + fields[ i ] );
		if( currField && !Validator.IsValidPhone( currField.value ) )
		{
			isValid = false;
			Validator.CreateAlert( currField, alertText );		
		}	
	}
    return isValid;
}

// --------------------------------------------------------------------------------
// Generic functions
// --------------------------------------------------------------------------------

Validator.IsValidEmail = function( email )
{
	return regEmail.test( email );
}

Validator.IsValidPhone = function( phone )
{
    return regPhone.test( phone );
}

Validator.CreateAlert = function( elem, alertText )
{
    elem.select();
    Validator.Alerting( elem, alertText );
}

Validator.CreateNoSelectAlert = function( elem )
{
    Validator.Alerting( elem );
}

Validator.Alerting = function( elem, alertText )
{
    elem.style.backgroundColor = "orange";
    elem.onkeydown = function(){elem.style.backgroundColor = '';elem.onkeydown = null;}
	elem.onchange = function(){elem.style.backgroundColor = '';elem.onchange = null;}
    alert( alertText );
}
