?>
</td>
				<td class="dataTableHeadingContent" align="center"><?php 
echo TEXT_ACTION;
?>
</td>
			</tr>
		<?php 
if (!$criteria) {
    echo '<tr><td colspan="5">' . IE_INFO_NO_CRITERIA . '</td></tr>';
} else {
    foreach ($criteria as $key => $value) {
        echo '<tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)">';
        echo html_hidden_field('cfield_' . $key, $value['cfield']);
        echo html_hidden_field('ctype_' . $key, $value['ctype']);
        echo '<td>' . ie_find_field_name($value['cfield'], $params) . '</td>';
        echo '<td>' . html_pull_down_menu('crit_' . $key, ie_convert_criteria_types($value['ctype']), $value['crit'], $parameters = '') . '</td>';
        echo '<td align="center">' . ($value['ctype'] == 'all_range' ? html_input_field('from_' . $key, $value['from'], $parameters = '') : '&nbsp;') . '</td>';
        echo '<td align="center">' . ($value['ctype'] == 'all_range' ? html_input_field('to_' . $key, $value['to'], $parameters = '') : '&nbsp;') . '</td>';
        echo '<td align="center">' . html_icon('emblems/emblem-unreadable.png', TEXT_DELETE, 'small', 'onclick="if (confirm(\'' . SRV_DELETE_CRITERIA . '\')) submitSeq(' . $key . ', \'remove\')"') . '</td>';
        echo '</tr>';
    }
}
echo '<tr><td colspan="5">&nbsp;</td></tr>';
echo '<tr class="dataTableHeadingRow"><td colspan="5" class="dataTableHeadingContent">' . IE_CRITERIA_FILTER_ADD_FIELD . '</td></tr>';
echo '<tr>';
echo '<td>' . html_pull_down_menu('new_cname', $field_list, '', $parameters = '') . '</td>';
echo '<td>' . html_pull_down_menu('new_crit', $criteria_funcs, '', $parameters = '') . '</td>';
echo '<td>&nbsp</td>';
echo '<td>&nbsp</td>';
echo '<td align="center">' . html_icon('actions/list-add.png', TEXT_ADD, 'medium', 'onclick="submitToDo(\'add\')"') . '</td>';
function ie_export_data($prefs, $params, $criteria, $options)
{
    global $db, $messageStack;
    global $qualifiers, $delimiters, $address_tables;
    if ($prefs['table_name'] == TABLE_CONTACTS) {
        $use_address_book = true;
        switch ($prefs['group_id']) {
            case 'ar':
                $account_type = 'c';
                break;
                // customers
            // customers
            case 'ap':
                $account_type = 'v';
                break;
                // vendors
            // vendors
            case 'hr':
                $account_type = 'e';
                // employees
        }
    } else {
        $use_address_book = false;
    }
    // build the mapping arrays to point field names to proper position in export order
    $data = array();
    $element_processing = array();
    if ($use_address_book) {
        $mail[0] = array();
        for ($i = 0; $i < MAX_NUM_ADDRESSES; $i++) {
            $ship[$i] = array();
            $bill[$i] = array();
        }
    }
    $index = 0;
    foreach ($params as $field) {
        if ($field['show'] && ($field['mode'] == 'e' || $field['mode'] == 'b')) {
            if ($use_address_book && substr($field['field'], 0, 5) == 'mail ') {
                $temp = explode(' ', $field['field']);
                $mail[0][$temp[1]] = $index;
            } elseif ($use_address_book && substr($field['field'], 0, 5) == 'ship ') {
                $temp = explode(' ', $field['field']);
                $ship[$temp[2] - 1][$temp[1]] = $index;
            } elseif ($use_address_book && substr($field['field'], 0, 5) == 'bill ') {
                $temp = explode(' ', $field['field']);
                $bill[$temp[2] - 1][$temp[1]] = $index;
            } else {
                $data[$field['field']] = $index;
            }
            $element_processing[$index] = $field['proc'];
            // needed for processing of each ouput value
            $index++;
        }
    }
    // fetch the delimiters and text qualifiers
    $delimiter = ie_fetch_delimiter($options['delimiter']);
    $qualifier = ie_fetch_qualifier($options['qualifier']);
    // ready to process the export file
    $output = '';
    if ($options['exp_headings']) {
        $output_line = array();
        foreach ($params as $field) {
            if ($field['show']) {
                $output_line[] = $field['name'];
            }
        }
        $output .= ie_implode($output_line, $delimiter, $qualifier) . chr(10);
    }
    // build export criteria
    $criteria_list = array();
    $description_list = array();
    if (is_array($criteria)) {
        foreach ($criteria as $filter) {
            $filter['name'] = ie_find_field_name($filter['cfield'], $params);
            $address_test = substr($filter['cfield'], 0, 5);
            if ($address_test == 'mail ' || $address_test == 'ship ' || $address_test == 'bill ') {
                $temp = explode(' ', $filter['cfield']);
                $filter['cfield'] = 'a.' . $temp[1];
            } else {
                $filter['cfield'] = 'd.' . $filter['cfield'];
            }
            $crit_data = '';
            $crit_desc = '';
            switch ($filter['crit']) {
                // based on the date choice selected
                default:
                case "all":
                case "stock":
                    // TBD field to compare so default to nothing
                // TBD field to compare so default to nothing
                case "assembly":
                    // TBD field to compare so default to nothing
                    break;
                case "date_range":
                    $arrData = array('fieldname' => $filter['cfield']);
                    $arrData['params'] = implode(':', array('b', $filter['from'], $filter['to']));
                    $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']);
                    $crit_data = $temp['sql'];
                    $crit_desc = $temp['description'];
                    break;
                case "date_today":
                    $arrData = array('fieldname' => $filter['cfield']);
                    $arrData['params'] = implode(':', array('c', '', ''));
                    $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']);
                    $crit_data = $temp['sql'];
                    $crit_desc = $temp['description'];
                    break;
                case "date_week":
                    $arrData = array('fieldname' => $filter['cfield']);
                    $arrData['params'] = implode(':', array('d', '', ''));
                    $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']);
                    $crit_data = $temp['sql'];
                    $crit_desc = $temp['description'];
                    break;
                case "date_wtd":
                    $arrData = array('fieldname' => $filter['cfield']);
                    $arrData['params'] = implode(':', array('e', '', ''));
                    $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']);
                    $crit_data = $temp['sql'];
                    $crit_desc = $temp['description'];
                    break;
                case "date_month":
                    $arrData = array('fieldname' => $filter['cfield']);
                    $arrData['params'] = implode(':', array('f', '', ''));
                    $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']);
                    $crit_data = $temp['sql'];
                    $crit_desc = $temp['description'];
                    break;
                case "date_mtd":
                    $arrData = array('fieldname' => $filter['cfield']);
                    $arrData['params'] = implode(':', array('g', '', ''));
                    $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']);
                    $crit_data = $temp['sql'];
                    $crit_desc = $temp['description'];
                    break;
                case "date_qtr":
                    $arrData = array('fieldname' => $filter['cfield']);
                    $arrData['params'] = implode(':', array('h', '', ''));
                    $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']);
                    $crit_data = $temp['sql'];
                    $crit_desc = $temp['description'];
                    break;
                case "date_qtd":
                    $arrData = array('fieldname' => $filter['cfield']);
                    $arrData['params'] = implode(':', array('i', '', ''));
                    $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']);
                    $crit_data = $temp['sql'];
                    $crit_desc = $temp['description'];
                    break;
                case "date_year":
                    $arrData = array('fieldname' => $filter['cfield']);
                    $arrData['params'] = implode(':', array('j', '', ''));
                    $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']);
                    $crit_data = $temp['sql'];
                    $crit_desc = $temp['description'];
                    break;
                case "date_ytd":
                    $arrData = array('fieldname' => $filter['cfield']);
                    $arrData['params'] = implode(':', array('k', '', ''));
                    $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']);
                    $crit_data = $temp['sql'];
                    $crit_desc = $temp['description'];
                    break;
                case "period":
                    $arrData = array('fieldname' => $filter['cfield']);
                    $arrData['params'] = implode(':', array('l', '', ''));
                    $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']);
                    $crit_data = $temp['sql'];
                    $crit_desc = $temp['description'];
                    break;
                case "range":
                    if ($filter['from'] != '') {
                        $crit_data .= $filter['cfield'] . ">='" . $filter['from'] . "'";
                        $crit_desc .= ' ' . TEXT_FROM . ' ' . $filter['from'];
                    }
                    if ($filter['to'] != '') {
                        if (strlen($crit_data) > 0) {
                            $crit_data .= ' and ';
                        }
                        $crit_data .= $filter['cfield'] . "<='" . $filter['to'] . "'";
                        $crit_desc .= ' ' . TEXT_TO . ' ' . $filter['to'];
                    }
                    if ($crit_desc != '') {
                        $crit_desc = $filter['name'] . ': ' . $crit_desc;
                    }
                    break;
                case "yes":
                case "true":
                case "active":
                case "printed":
                    $crit_data .= $value['cfield'] . '=1';
                    $crit_desc .= $filter['name'] . '=' . $value['crit'];
                    break;
                case "no":
                case "false":
                case "inactive":
                case "unprinted":
                    $crit_data .= $value['cfield'] . '=0';
                    $crit_desc .= $filter['name'] . '=' . $value['crit'];
            }
            if ($crit_data != '') {
                $criteria_list[] = $crit_data;
            }
            if ($crit_desc != '') {
                $description_list[] = $crit_desc;
            }
        }
    }
    $crit_string = '';
    if (count($criteria_list) > 0) {
        $crit_string = ' where ' . implode(' and ', $criteria_list);
    }
    // build query
    $fields = array_keys($data);
    if (!in_array('id', $fields)) {
        $fields[] = 'id';
    }
    $field_list = 'd.' . implode(', d.', $fields);
    $sql = "select distinct " . $field_list . " from " . $prefs['table_name'] . " d ";
    if ($use_address_book) {
        $sql .= "left join " . TABLE_ADDRESS_BOOK . " a on d.id = a.ref_id ";
    }
    $sql .= $crit_string;
    $export_rows = $db->Execute($sql);
    if ($export_rows->RecordCount() == 0) {
        $messageStack->add(TEXT_IMP_ERMSG12, 'success');
        return;
    }
    // export data
    while (!$export_rows->EOF) {
        $output_line = array();
        foreach ($data as $field_name => $index) {
            $output_line[$index] = ie_process_the_data($export_rows->fields[$field_name], $element_processing[$index]);
        }
        if ($use_address_book) {
            $address_type = array($account_type . 'm' => $mail, $account_type . 's' => $ship, $account_type . 'b' => $bill);
            foreach ($address_type as $type => $array_name) {
                // fetch the id to use to link addresses to the correct main record
                $sql = "select * from " . TABLE_ADDRESS_BOOK . " \r\n\t\t\t\t\twhere type = '" . $type . "' \r\n\t\t\t\t\tand ref_id = '" . $export_rows->fields['id'] . "' limit " . MAX_NUM_ADDRESSES;
                $addresses = $db->Execute($sql);
                for ($i = 0; $i < count($array_name); $i++) {
                    // each address of type
                    foreach ($array_name[$i] as $field_name => $index) {
                        // each field in address
                        $output_line[$index] = ie_process_the_data($addresses->fields[$field_name], $element_processing[$index]);
                    }
                    $addresses->MoveNext();
                }
            }
        }
        ksort($output_line);
        $output .= ie_implode($output_line, $delimiter, $qualifier) . chr(10);
        $export_rows->MoveNext();
    }
    $FileSize = strlen($output);
    if (substr($options['export_file_name'], strrpos($options['export_file_name'], '.')) == '.csv') {
        header("Content-type: application/csv");
    } else {
        header("Content-type: plain/txt");
    }
    header("Content-disposition: attachment; filename=" . $options['export_file_name'] . "; size=" . $FileSize);
    header('Pragma: cache');
    header('Cache-Control: public, must-revalidate, max-age=0');
    header('Connection: close');
    header('Expires: ' . date('r', time() + 60 * 60));
    header('Last-Modified: ' . date('r', time()));
    print $output;
    exit;
}