
// Field Input Filter
// Ion - 21-04-2003

// validate time in hh::mm format

function IsValidTime( strTime )
{
   if( strTime == "" || strTime.length != 5 )
   {
      return false;
   }
   
   var strTimePattern = /^(\d{2}):(\d{2})/;

   var arrMatch = strTime.match( strTimePattern );

   if( arrMatch == null )
   {   
      return false;
   }
   
   nHour = arrMatch[ 1 ];
   nMinute = arrMatch[ 2 ];
      
   if( nHour < 0  || nHour > 23 )
   {
      return false;
   }

   if( nMinute < 0 || nMinute > 59 )
   {   
      return false;
   }  
   
   return true;
}

// validate a date in yyyy-mm-dd format

function IsValidDate( strDate )
{
   if( strDate == "" || strDate.length != 10 )
   {
      return false;
   }
   
   var strDatePattern = /^(\d{4})-(\d{2})-(\d{2})/;

   var arrMatch = strDate.match( strDatePattern );

   if( arrMatch == null )
   {   
      return false;
   }
   
   nYear = arrMatch[ 1 ];
   nMonth = arrMatch[ 2 ];
   nDay = arrMatch[ 3 ];
      
   if( nMonth < 1 || nMonth > 12 )
   {   
      return false;
   }  
   
   if( nDay < 1 || nDay > 31 )
   {   
      return false;
   }  
   
   return true;
}

// validate a number 1-365

function IsValidDaysNumber( nNumber )
{
   if( nNumber == "" || nNumber < 1 || nNumber > 365 )
   {
      return false;
   }
   else
   {
      return true;
   }   
}

// validate a number 1-12

function IsValidMonthsNumber( nNumber )
{
   if( nNumber == "" || nNumber < 1 || nNumber > 12 )
   {
      return false;
   }
   else
   {
      return true;
   }   
}


// validate a number 1-52

function IsValidWeeksNumber( nNumber )
{
   if( nNumber == "" || nNumber < 1 || nNumber > 52 )
   {
      return false;
   }
   else
   {
      return true;
   }   
}

// validate a number 1-31

function IsValidDayOfMonth( nNumber )
{
   if( nNumber == "" || nNumber < 1 || nNumber > 31 )
   {
      return false;
   }
   else
   {
      return true;
   }   
}

// validate a email address

function IsValidEmail( strEmail )
{
   if( strEmail == "" )
   {
      return false;
   }
   
   nARond = strEmail.indexOf( '@' );

   if( nARond != -1 )
   {       
      nPeriod = strEmail.indexOf( '.', nARond )

       if( nPeriod != -1 && nPeriod != strEmail.length - 1 )
       {
          return true;
      }
   }
        
   return false;
}

// here starts the input filter

if( document.layers )
{
   document.captureEvents( Event.KEYPRESS );
}

var nFilterStep;

function FilterStrip( strFilterTmp, strFilterMask )
{
   strFilterMask = Replace( strFilterMask, '#', '' );
    
   for( nFilterStep = 0; nFilterStep < strFilterMask.length++; nFilterStep++ )
   {
   	strFilterTmp = Replace( strFilterTmp, strFilterMask.substring( nFilterStep, nFilterStep + 1 ), '' );
   }
	
   return strFilterTmp;
}

function FilterMax( strFilterMask )
{
   strFilterTmp = strFilterMask;

   for( nFilterStep = 0; nFilterStep < ( strFilterMask.length + 1 ); nFilterStep++ )
	{
      if( strFilterMask.charAt( nFilterStep ) != '#' )
      {
		    strFilterTmp = Replace( strFilterTmp, strFilterMask.charAt( nFilterStep ), '' );
      }
   }

   return strFilterTmp.length;
}

function FilterInput( nKey, aTextField, strFilterMask )
{
   if( !document.all )
   {
      return;
   }
   
   strPreFileteredText = FilterStrip( aTextField.value, strFilterMask );
		
   if( nKey == 9 )
   {
      return true;
   }
	else if( nKey == 8 && strPreFileteredText.length !=0 )
   {
      strPreFileteredText = strPreFileteredText.substring( 0, strPreFileteredText.length - 1 );
   }
 	else if( ( ( nKey > 47 && nKey < 58 ) || ( nKey > 95 && nKey < 106 ) ) &&
 	         strPreFileteredText.length < FilterMax( strFilterMask ) )
   {
      strPreFileteredText = strPreFileteredText + String.fromCharCode( nKey );
   }

   var strFileteredText = '';
   
   for( nFilterStep = 0; nFilterStep < strFilterMask.length; nFilterStep++ )
   {
      if( strFilterMask.charAt( nFilterStep ) == '#' )
      {
         if( strPreFileteredText.length != 0 )
         {
			   strFileteredText = strFileteredText + strPreFileteredText.charAt( 0 );
            strPreFileteredText = strPreFileteredText.substring( 1, strPreFileteredText.length );
         }
			else
			{
			   strFileteredText = strFileteredText + "";
         }
      }
		else if( strFilterMask.charAt( nFilterStep ) != '#' )
		{
         strFileteredText = strFileteredText + strFilterMask.charAt( nFilterStep ); 			
      }

//    strFilterTmp = Replace( strFilterTmp, strFilterMask.substring( nFilterStep, nFilterStep + 1 ), '' );
   }

	aTextField.value = strFileteredText;
   return false;
}



function Replace( strSrcText, strText, strReplaceText )
{
   var nStringLength = strSrcText.length;
   var nTextLength = strText.length;
   
   if( nStringLength == 0 || nTextLength == 0 )
   {
      return strSrcText;
   }

   var i = strSrcText.indexOf( strText );
   
   if( ( !i ) && ( strText != strSrcText.substring( 0, nTextLength ) ) )
   {
      return strSrcText;
   }
   
   if( i == -1 )
   {
      return strSrcText;
   }

   var strNewText = strSrcText.substring( 0, i ) + strReplaceText;

   if( i + nTextLength < nStringLength )
   {
      strNewText += Replace( strSrcText.substring( i + nTextLength, nStringLength ), strText, strReplaceText );
   }

   return strNewText;
}
