function trim( str ) {
  var match = str.match( /\S+(\s+\S+)*/ );
  return match == null ? "" : match[0];
}

function error( id, errClass ) {
  
  if ( !window.document || !window.document.getElementById ) return;
  
  if ( id != "" && errClass != "" ) {
    var el = window.document.getElementById( id );
    if ( el == null ) alert( "Missing html element with id " + id );
    el.className = errClass;
  }

}

function unerror( id, okClass ) {
  
  if ( !window.document || !window.document.getElementById ) return;
 
  if ( id != "" ) {
    var el = window.document.getElementById( id );
    if ( el == null ) alert( "Missing html element with id " + id );
    el.className = okClass;
  }

}



function valid_notempty( form, fieldName, errClass, okClass  ) {

  
  var field = window.document.getElementById( fieldName );
  
  var val = field.value;

  if ( val == null || trim( val ) == "" ) {

    // empty
    error( "e_"+fieldName, errClass );
    return false;

  } else {

    // not empty
    unerror( "e_"+fieldName, okClass );
    return true;

  }

}



function valid_notempty_hide( form, fieldName, errClass  ) {

  
  var field = window.document.getElementById( fieldName );
  
  var val = field.value;

  if ( val == null || trim( val ) == "" ) {

    // empty
    error( "e_"+fieldName, errClass );
    return false;

  } else {

    // not empty
    unerror( "e_"+fieldName, "hide" );
    return true;

  }

}

function valid_radioButtons( form, fieldName, errClass ) {
	var field1 = window.document.getElementById( fieldName+"1" );
	var field2 = window.document.getElementById( fieldName+"2" );
	if (field1.checked || field2.checked){
		unerror( "e_"+fieldName, "" );
		return true;
	}else{
		error( "e_"+fieldName, errClass );
		return false;
	}
	
}


function valid_isChecked( form, fieldName, errClass ) {
  
	var field = window.document.getElementById( fieldName+"1" );
	var checked = field.checked;
	if ( !checked ){
		error( "e_"+fieldName, errClass );
		return false;
	} else {
		unerror( "e_"+fieldName, "" );
		return true;
	}

}

function valid_date( form, fieldName, errClass ) {

  var value;

  /*  
   doh -  
   document.getElementById( fieldName ) returns null in IE and Safari. 
   As does window.document.getElementsByTagName( fieldName ).
   This seems to be the only way of getting the correct element!!!
   It seems as though it cant locate the tag by its name or id. Is this a problem with dodjo
  */
  var tags = window.document.getElementsByTagName( "*" );
   for( var i=0 ; i< tags.length; i++ ) {
     if( tags[ i ].name == fieldName )
       value = tags[i].value;
   }

  var re = /^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/;

  if ( value == null || trim( value ) == "" || !value.match(re)) {
    
    // empty
    error( "e_"+fieldName, errClass  );
    return false;

  } else {

    // not empty
    unerror( "e_"+fieldName, "" );
    return true;

  }

}



