Why is my validate function not receiving the value of my form element?
In the description for the "#name" attribute is reported the following text:


  INTERNAL, except for buttons. All button and submit elements on a form should have the same name, which is set to 'op' by default in Drupal. This does not apply to image buttons. For non-button elements, Drupal sets the name by using 'foo' in $form['foo'] as well as any parents of the element.


You should not set that attribute, which is considered internal.