function cw_user_update_address($customer_id, $address_id, $address)
{
    global $tables;
    cw_load('profile_fields');
    $address['customer_id'] = $customer_id;
    if ($address_id) {
        $count = cw_query_first_cell("select count(*) from {$tables['customers_addresses']} where customer_id='{$customer_id}' and address_id='{$address_id}'");
        if ($count) {
            $address['address_id'] = $address_id;
        }
    }
    if (is_numeric($address['address_id']) && $address['address_id'] > 0) {
        cw_array2update('customers_addresses', $address, "address_id='{$address['address_id']}'");
    } else {
        if (in_array($address['address_id'], array('main', 'current'), TRUE)) {
            $address[$address['address_id']] = 1;
        }
        $address_id = cw_array2insert('customers_addresses', $address, TRUE);
    }
    if (is_array($address['custom_fields']) && !empty($address['custom_fields'])) {
        cw_profile_fields_update_type($customer_id, $address_id, 'A', $address['custom_fields']);
    }
    return $address_id;
}
function cw_doc_update_user_information($doc_type, $doc_info_id, $userinfo, $is_create_user = false)
{
    global $customer_id, $config;
    $address_fields = array('company', 'title', 'firstname', 'lastname', 'address', 'address_2', 'city', 'county', 'state', 'country', 'zipcode', 'phone', 'fax', 'region');
    foreach (array('main_address', 'current_address') as $address_type) {
        $address = $userinfo[$address_type];
        cw_array2update('customers_addresses', cw_addslashes($address), "address_id='{$address['address_id']}'", $address_fields);
        if (is_array($address['custom_fields']) && !empty($address['custom_fields'])) {
            cw_profile_fields_update_type(0, $address['address_id'], 'A', $address['custom_fields']);
        }
    }
    if (!$userinfo['customer_id'] && $is_create_user) {
        $userinfo['customer_id'] = cw_user_create_profile(array('usertype' => $userinfo['usertype']));
        $userinfo['additional_info'] = $userinfo;
        cw_user_update(cw_addslashes($userinfo), $userinfo['customer_id'], $customer_id);
    }
    $userinfo_fields = array('customer_id', 'membership_id', 'company', 'email', 'tax_number', 'tax_exempt', 'ssn', 'company_type', 'usertype');
    // Real e-mail for anonymous buyer that will be placed in order
    $userinfo['email'] = cw_real_mail_address($userinfo['email']);
    # kornev, 'company_id' ?
    cw_array2update('docs_user_info', cw_addslashes($userinfo), "doc_info_id='{$doc_info_id}'", $userinfo_fields);
}