/**
 * nv_fix_fam_order()
 *
 * @param integer $parentid
 * @param integer $order
 * @param integer $lev
 * @return
 */
function nv_fix_fam_order($parentid = 0, $order = 0, $lev = 0)
{
    global $db, $module_data;
    $sql = 'SELECT fid, parentid FROM ' . NV_PREFIXLANG . '_' . $module_data . '_family WHERE parentid=' . $parentid . ' ORDER BY weight ASC';
    $result = $db->query($sql);
    $array_fam_order = array();
    while ($row = $result->fetch()) {
        $array_fam_order[] = $row['fid'];
    }
    $result->closeCursor();
    $weight = 0;
    if ($parentid > 0) {
        ++$lev;
    } else {
        $lev = 0;
    }
    foreach ($array_fam_order as $fid_i) {
        ++$order;
        ++$weight;
        $sql = 'UPDATE ' . NV_PREFIXLANG . '_' . $module_data . '_family SET weight=' . $weight . ', sort=' . $order . ', lev=' . $lev . ' WHERE fid=' . intval($fid_i);
        $db->query($sql);
        $order = nv_fix_fam_order($fid_i, $order, $lev);
    }
    $numsubfam = $weight;
    if ($parentid > 0) {
        $sql = 'UPDATE ' . NV_PREFIXLANG . '_' . $module_data . '_family SET numsubfam=' . $numsubfam;
        if ($numsubfam == 0) {
            $sql .= ",subfid='', viewfam='viewfam_page_new'";
        } else {
            $sql .= ",subfid='" . implode(',', $array_fam_order) . "'";
        }
        $sql .= ' WHERE fid=' . intval($parentid);
        $db->query($sql);
    }
    return $order;
}
if ($fid > 0) {
    if ($mod == 'weight' and $new_vid > 0 and (defined('NV_IS_ADMIN_MODULE') or $parentid > 0 and isset($array_fam_admin[$admin_id][$parentid]) and $array_fam_admin[$admin_id][$parentid]['admin'] == 1)) {
        $sql = 'SELECT fid FROM ' . NV_PREFIXLANG . '_' . $module_data . '_family WHERE fid!=' . $fid . ' AND parentid=' . $parentid . ' ORDER BY weight ASC';
        $result = $db->query($sql);
        $weight = 0;
        while ($row = $result->fetch()) {
            ++$weight;
            if ($weight == $new_vid) {
                ++$weight;
            }
            $sql = 'UPDATE ' . NV_PREFIXLANG . '_' . $module_data . '_family SET weight=' . $weight . ' WHERE fid=' . $row['fid'];
            $db->query($sql);
        }
        $sql = 'UPDATE ' . NV_PREFIXLANG . '_' . $module_data . '_family SET weight=' . $new_vid . ' WHERE fid=' . $fid;
        $db->query($sql);
        nv_fix_fam_order();
        $content = 'OK_' . $parentid;
    } elseif (defined('NV_IS_ADMIN_MODULE') or isset($array_fam_admin[$admin_id][$fid]) and $array_fam_admin[$admin_id][$fid]['add_content'] == 1) {
        if ($mod == 'inhome' and ($new_vid == 0 or $new_vid == 1)) {
            $sql = 'UPDATE ' . NV_PREFIXLANG . '_' . $module_data . '_family SET inhome=' . $new_vid . ' WHERE fid=' . $fid;
            $db->query($sql);
            $content = 'OK_' . $parentid;
        } elseif ($mod == 'numlinks' and $new_vid >= 0 and $new_vid <= 20) {
            $sql = 'UPDATE ' . NV_PREFIXLANG . '_' . $module_data . '_family SET numlinks=' . $new_vid . ' WHERE fid=' . $fid;
            $db->query($sql);
            $content = 'OK_' . $parentid;
        } elseif ($mod == 'newday' and $new_vid >= 0 and $new_vid <= 10) {
            $sql = 'UPDATE ' . NV_PREFIXLANG . '_' . $module_data . '_family SET newday=' . $new_vid . ' WHERE fid=' . $fid;
            $db->query($sql);
            $content = 'OK_' . $parentid;
        } elseif ($mod == 'viewfam' and $nv_Request->isset_request('new_vid', 'post')) {