var filterName    = /^([a-zA-Z0-9_\.\- ])+$/;
var filterEmail   = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
var filterSearch  = /^([a-zA-Z0-9_\.\-\" ])+$/;
var filterPhone   = /^([a-zA-Z0-9\.\-\(\) ])+$/;
var filterStreet  = /^([a-zA-Z0-9\.\-\#\,\' ])+$/;
var filterCity    = /^([a-zA-Z0-9\.\- ])+$/;
var filterState   = /^([a-zA-Z\.\- ])+$/;
var filterZipcode = /^([a-zA-Z0-9\.\-\(\) ])+$/;
var filterCountry = /^([a-zA-Z0-9\.\- ])+$/;

var messageEmptyName      = "Please complete all required fields in the form.";
var messageInvalidName    = "Form contains invalid characters.";
var messageEmptySearch    = "Please enter a search string.";
var messageInvalidSearch  = "Search contains invalid characters.";
var messageEmptyEmail     = "Please complete all required fields in the form.";
var messageInvalidEmail   = "Please enter a valid email address [yourname@server.com].";
var messageEmptyPhone     = "Please complete all required fields in the form.";
var messageInvalidPhone   = "Please enter a valid phone number.";
var messageEmptyStreet    = "Please complete all required fields in the form.";
var messageInvalidStreet  = "Please enter a valid street address.";
var messageEmptyCity      = "Please complete all required fields in the form.";
var messageInvalidCity    = "Please enter a valid city name.";
var messageEmptyState     = "Please complete all required fields in the form.";
var messageInvalidState   = "Please enter a valid state name.";
var messageEmptyZipcode   = "Please complete all required fields in the form.";
var messageInvalidZipcode = "Please enter a valid zip code.";
var messageEmptyCountry   = "Please complete all required fields in the form.";
var messageInvalidCountry = "Please enter a valid country name.";
var messageEmptyLoginName     = "Please enter a name.";
var messageEmptyLoginPassword = "Please enter a password.";

function bps_validate( o)
{
	return BPS_Validate( o );
}

function BPS_Validate( o ){
  for(var i=0; i<o.length; i++ ){
    element = o.elements[i];
    if( element!=null && element.name.indexOf('CLASS_') != 0 ){
      strClassName = "undefined";
      oClass = o.elements["CLASS_" + element.name];
      if( oClass ) strClassName = oClass.value.split('_')[0];

      if( strClassName == 'name' ){
        if( element.value == '' ){
          alert( messageEmptyName );
          element.focus();
          element.select();
          return false;
        }
        if( !filterName.test( element.value ) ){
          alert( messageInvalidName );
          element.focus();
          element.select();
          return false;
        }
      }
      if( strClassName == 'email' ){
        if( element.value == '' ){
          alert( messageEmptyEmail );
          element.focus();
          element.select();
          return false;
        }
        if( !filterEmail.test( element.value ) ){
          alert( messageInvalidEmail );
          element.focus();
          element.select();
          return false;
        }
      }
      if( strClassName == 'search' ){
        if( element.value == '' ){
          alert( messageEmptySearch );
          element.focus();
          element.select();
          return false;
        }
        if( !filterSearch.test( element.value ) ){
          alert( messageInvalidSearch );
          element.focus();
          element.select();
          return false;
        }
      }
      if( strClassName == 'phone' ){
        if( element.value == '' ){
          alert( messageEmptyPhone );
          element.focus();
          element.select();
          return false;
        }
        if( !filterPhone.test( element.value ) ){
          alert( messageInvalidPhone );
          element.focus();
          element.select();
          return false;
        }
      }
      if( strClassName == 'street' ){
        if( element.value == '' ){
          alert( messageEmptyStreet );
          element.focus();
          element.select();
          return false;
        }
        if( !filterStreet.test( element.value ) ){
          alert( messageInvalidStreet );
          element.focus();
          element.select();
          return false;
        }
      }
      if( strClassName == 'city' ){
        if( element.value == '' ){
          alert( messageEmptyCity );
          element.focus();
          element.select();
          return false;
        }
        if( !filterCity.test( element.value ) ){
          alert( messageInvalidCity );
          element.focus();
          element.select();
          return false;
        }
      }
      if( strClassName == 'state' ){
        if( element.value == '' ){
          alert( messageEmptyState );
          element.focus();
          element.select();
          return false;
        }
        if( !filterState.test( element.value ) ){
          alert( messageInvalidState );
          element.focus();
          element.select();
          return false;
        }
      }
      if( strClassName == 'zipcode' ){
        if( element.value == '' ){
          alert( messageEmptyZipcode );
          element.focus();
          element.select();
          return false;
        }
        if( !filterZipcode.test( element.value ) ){
          alert( messageInvalidZipcode );
          element.focus();
          element.select();
          return false;
        }
      }
      if( strClassName == 'country' ){
        if( element.value == '' ){
          alert( messageEmptyCountry );
          element.focus();
          element.select();
          return false;
        }
        if( !filterCountry.test( element.value ) ){
          alert( messageInvalidCountry );
          element.focus();
          element.select();
          return false;
        }
      }
      if( strClassName == 'login-name' ){
        if( element.value == '' ){
          alert( messageEmptyLoginName );
          element.focus();
          element.select();
          return false;
        }
      }
      if( strClassName == 'login-password' ){
        if( element.value == '' ){
          alert( messageEmptyLoginPassword );
          element.focus();
          element.select();
          return false;
        }
      }
    }
  }

  return true;
}

function BPS_Clear( o ){
  for( i=0; i<o.length; i++ ){
    element = o.elements[i];
    element.value = '';
  }
}