function getSearchForm()
 {
     $entities = func_get_args();
     if (!isset($_REQUEST['page'])) {
         $_REQUEST['page'] = 0;
     }
     switch ($_REQUEST['page']) {
         case 0:
             /* FORM EMISSION - This should be done on a presentation layer! */
             $content = "<div id=\"search\"> <form name=\"search\">\n";
             $content .= "<input type=\"hidden\" name=\"page\" value=\"1\">\n";
             $content .= "<input type=\"hidden\" name=\"action\" value=\"search\">\n";
             $content .= "<table>\n";
             $content .= "<tr>\n";
             $content .= "<td>Free Text &nbsp;</td>\n";
             #$content .= "<td><input type=\"text\" name=\"text\" size=\"30\" onkeyup=\"searchRequest();\"></td>\n";
             $content .= "<td><input type=\"text\" name=\"text\" size=\"30\" ></td>\n";
             $content .= "</tr>\n";
             foreach ($entities as $k => $entity) {
                 if (is_array($entity->searchFields['CHECK'])) {
                     foreach ($entity->searchFields['CHECK'] as $index => $field) {
                         $result[$entity->name][$field] = aux::getResult("SELECT DISTINCT {$field} FROM {$entity->name} WHERE {$field} <> '' ORDER BY {$field}");
                         $label[$field] = $entity->searchFields['CHECKLABEL'][$index];
                     }
                 }
             }
             $finalArray = array();
             $field = "";
             if (is_array($result)) {
                 foreach ($result as $entity => $v1) {
                     foreach ($v1 as $field => $v2) {
                         foreach ($v2 as $v3) {
                             foreach ($v3 as $k => $v) {
                                 if ($k != $field) {
                                     $field = $k;
                                 }
                                 $finalArray[$field] = aux::add_distinct($finalArray[$field], $v);
                             }
                         }
                     }
                 }
             }
             $field = "";
             foreach ($finalArray as $k => $item) {
                 $content .= "<tr>\n";
                 if ($k != $field) {
                     $content .= "<td valign=\"top\">{$label[$k]}</td>\n";
                     $field = $k;
                 } else {
                     $content .= "<td></td>\n";
                 }
                 $content .= "<td>\n";
                 $sorted = $item;
                 asort($sorted);
                 $content .= "\n\n<!-- BEGIN -->\n<table width=\"100%\">\n";
                 $checkcount = 0;
                 foreach ($sorted as $k => $v) {
                     if ($checkcount % 2 == 0) {
                         $content .= "<tr>\n";
                         $content .= "<td width=\"50%\"><input type=\"checkbox\" name=\"{$field}_{$v}\" value=\"{$v}\"> {$v}</td>\n";
                     } else {
                         $content .= "<td width=\"50%\"><input type=\"checkbox\" name=\"{$field}_{$v}\" value=\"{$v}\"> {$v}</td>\n";
                         $content .= "</tr>\n";
                     }
                     $checkcount++;
                 }
                 if ($checkcount % 2 == 0) {
                     $content .= "<td></td>\n";
                     $content .= "</tr>\n";
                 }
                 $content .= "</table>\n\n<!-- END -->\n\n";
                 $content .= "</td>\n";
                 $content .= "</tr>\n";
             }
             foreach ($entities as $k => $entity) {
                 if (is_array($entity->searchRelations)) {
                     foreach ($entity->searchRelations as $index => $relation) {
                         $relations[$relation->name] = $relation;
                         if ($relation->entity_1->name == $entity->name) {
                             $data = $relation->entity_2->getReference();
                         } else {
                             $data = $relation->entity_1->getReference();
                         }
                         $name = $relation->name;
                         $content .= "<tr><td valign=\"top\">{$entity->searchFields['RELATIONLABEL'][$index]}</td><td>\n";
                         $content .= "<table width=\"100%\">\n";
                         $checkcount = 0;
                         foreach ($data as $v) {
                             if ($checkcount % 2 == 0) {
                                 $content .= "<tr>\n";
                                 $content .= "<td width=\"50%\"><input type=\"checkbox\" name=\"{$name}_{$v['value']}\" value=\"{$v['value']}\"> {$v['text']}</td>\n";
                             } else {
                                 $content .= "<td width=\"50%\"><input type=\"checkbox\" name=\"{$name}_{$v['value']}\" value=\"{$v['value']}\"> {$v['text']}</td>\n";
                                 $content .= "</tr>";
                             }
                             $checkcount++;
                         }
                         if ($checkcount % 2 == 0) {
                             $content .= "<td></td>\n";
                             $content .= "</tr>";
                         }
                         $content .= "</table>\n";
                         $content .= "</td></tr>\n";
                     }
                 }
             }
             $content .= "<tr><td></td>\n";
             $content .= "<td><input type=\"submit\" value=\"Show Result\"></td>\n";
             $content .= "</tr>\n</table>\n</form></div>\n\n";
             return $content;
             break;
         case 1:
             // ******************
             foreach ($entities as $entity) {
                 unset($sub_cond);
                 $fields = "{$entity->name}.{$entity->fields[0]['name']} AS {$entity->name}_{$entity->fields[0]['name']}";
                 if (is_array($entity->searchFields['TEXT'])) {
                     foreach ($entity->searchFields['TEXT'] as $field) {
                         $fields .= ", {$entity->name}.{$field} AS {$entity->name}_{$field}";
                     }
                 }
                 if (is_array($entity->searchFields['CHECK'])) {
                     foreach ($entity->searchFields['CHECK'] as $field) {
                         $fields .= ", {$entity->name}.{$field} AS {$entity->name}_{$field}";
                     }
                 }
                 if (is_array($entity->searchFields['TEXT'])) {
                     if ($entity->owner) {
                         $fields .= ", username, creation";
                     }
                 }
                 $query = "SELECT {$fields} FROM {$entity->name} ";
                 $left = "";
                 if (count($entity->searchRelations) > 0) {
                     foreach ($entity->searchRelations as $relation) {
                         $left .= "LEFT JOIN {$relation->name} ON {$relation->name}.id_{$entity->name} = {$entity->name}.{$entity->fields[0]['name']} ";
                     }
                 }
                 if ($_REQUEST['text'] != "") {
                     $condition = "";
                     if (count($entity->searchFields['TEXT']) > 0) {
                         foreach ($entity->searchFields['TEXT'] as $field) {
                             $condition .= aux::first_comma("{$entity->name} cond_1", " OR ") . "{$entity->name}.{$field} LIKE '%{$_REQUEST['text']}%'";
                         }
                     }
                     if ($condition != "") {
                         $sub_cond[] = $condition;
                     }
                 }
                 $condition = "";
                 if (count($entity->searchFields['CHECK']) > 0) {
                     foreach ($entity->searchFields['CHECK'] as $field) {
                         foreach ($_REQUEST as $element => $value) {
                             if (ereg($field, $element)) {
                                 $condition .= aux::first_comma("{$entity->name} cond_2", " OR ") . "{$entity->name}.{$field} = '{$value}'";
                             }
                         }
                     }
                 }
                 if ($condition != "") {
                     $sub_cond[] = $condition;
                 }
                 if (count($entity->searchRelations) > 0) {
                     foreach ($entity->searchRelations as $relation) {
                         $condition = "";
                         foreach ($_REQUEST as $element => $value) {
                             if (ereg($relation->name, $element)) {
                                 $condition .= aux::first_comma($relation->name, " OR ") . "{$relation->name}.id_{$entity->name} = '{$value}'";
                             }
                         }
                         if ($condition != "") {
                             $sub_cond[] = $condition;
                             $query .= $left;
                         }
                     }
                 }
                 if (count($sub_cond) > 0) {
                     $query .= " WHERE ";
                     foreach ($sub_cond as $condition) {
                         $query .= aux::first_comma("{$entity->name} WHERE", " AND ") . "({$condition})";
                     }
                 }
                 return $query;
             }
             break;
     }
 }