public static function listDropDown( $name = '', $list = '', $other = '', $selected = '', $class = '', $tabindex = null ) {
		$optgroup = false;

		$options = self::option( $other, 'other', $selected === 'other' );

		foreach( explode( "\n", $list ) as $option ){
			$value = trim( $option );
			if( $value == '' ) {
				continue;
			} elseif( substr( $value, 0, 1 ) == '*' && substr( $value, 1, 1 ) != '*' ) {
				// A new group is starting ...
				$value = trim( substr( $value, 1 ) );
				if( $optgroup ) {
					$options .= self::closeElement( 'optgroup' );
				}
				$options .= self::openElement( 'optgroup', array( 'label' => $value ) );
				$optgroup = true;
			} elseif( substr( $value, 0, 2 ) == '**' ) {
				// groupmember
				$value = trim( substr( $value, 2 ) );
				$options .= self::option( $value, $value, $selected === $value );
			} else {
				// groupless reason list
				if( $optgroup ) {
					$options .= self::closeElement( 'optgroup' );
				}
				$options .= self::option( $value, $value, $selected === $value );
				$optgroup = false;
			}
		}

		if( $optgroup ) {
			$options .= self::closeElement( 'optgroup' );
		}

		$attribs = array();

		if( $name ) {
			$attribs['id'] = $name;
			$attribs['name'] = $name;
		}

		if( $class ) {
			$attribs['class'] = $class;
		}

		if( $tabindex ) {
			$attribs['tabindex'] = $tabindex;
		}

		return self::openElement( 'select', $attribs )
			   . "\n"
			   . $options
			   . "\n"
			   . self::closeElement( 'select' );
	}