deleteStd();
        break;
    case 'deleteFac':
        deleteFac();
        break;
    case 'addEmp':
        addEmp();
        break;
    case 'addStudent':
        addStudent();
        break;
    case 'addFaculty':
        addFaculty();
        break;
    case 'editEmp':
        editEmp();
        break;
    case 'editStudent':
        editStudent();
        break;
    case 'editFaculty':
        editFaculty();
        break;
    default:
        // if action is not defined or unknown
        // move to main user page
        header('Location: index.php');
}
function makeComplain()
{
    //echo 'Make Complain...';
function writeEmp($_POST)
{
    $_POST = var_makesafe($_POST);
    global $_FILES;
    extract($_POST);
    if (isset($back)) {
        return editEmp();
    }
    //------------------------------------ Jean -----------------------------------
    $comp_uif += 0;
    $comp_sdl += 0;
    $comp_provident += 0;
    $emp_provident += 0;
    $emp_uif += 0;
    //-----------------------------------------------------------------------------
    $comp_pension += 0;
    $emp_pension += 0;
    $comp_ret += 0;
    $emp_ret += 0;
    $comp_medical += 0;
    $emp_medical += 0;
    # validate input
    require_lib("validate");
    $v = new validate();
    # Limit field lengths as per database settings
    $v->isOk($empnum, "num", 1, 20, "Invalid employee number.");
    $v->isOk($enum, "string", 1, 20, "Invalid emp num");
    $v->isOk($sname, "string", 1, 50, "Invalid surname.");
    $v->isOk($fnames, "string", 1, 50, "Invalid first names.");
    $v->isOk($sex, "string", 1, 1, "Invalid sex.");
    $v->isOk($marital, "string", 0, 10, "Invalid marital status.");
    $v->isOk($designation, "string", 0, 100, "Invalid designation.");
    $v->isOk($resident, "string", 1, 5, "Invalid residential status.");
    $v->isOk($hiredate, "date", 1, 10, "Invalid hire date.");
    $v->isOk($telno, "string", 0, 30, "Invalid telephone no.");
    $v->isOk($email, "email", 0, 50, "Invalid email address.");
    $v->isOk($hpweek, "float", 1, 5, "Invalid hours per week.");
    $v->isOk($novert, "float", 1, 9, "Invalid normal overtime.");
    $v->isOk($hovert, "float", 1, 9, "Invalid holiday overtime.");
    $v->isOk($paytype, "string", 1, 15, "Invalid pay type.");
    $v->isOk($bankname, "string", 0, 50, "Invalid bank name.");
    $v->isOk($bankcode, "string", 0, 8, "Invalid bank code.");
    $v->isOk($bankacctype, "string", 0, 50, "Invalid bank account type.");
    $v->isOk($bankaccno, "num", 0, 50, "Invalid bank account no.");
    $v->isOk($vaclea, "num", 1, 5, "Invalid vacation leave days.");
    $v->isOk($siclea, "num", 1, 5, "Invalid sick leave days.");
    $v->isOk($stdlea, "num", 1, 5, "Invalid study leave days.");
    $v->isOk($res1, "string", 1, 50, "Invalid residential address. (line 1)");
    $v->isOk($res2, "string", 0, 50, "Invalid residential address. (line 2)");
    $v->isOk($res3, "string", 0, 50, "Invalid residential address. (line 3)");
    $v->isOk($res4, "string", 0, 50, "Invalid residential address. (line 4)");
    $v->isOk($pos1, "string", 0, 50, "Invalid postal address. (line 1)");
    $v->isOk($pos2, "string", 0, 50, "Invalid postal address. (line 2)");
    $v->isOk($pcode, "string", 0, 16, "Invalid postal code.");
    $v->isOk($contsname, "string", 0, 50, "Invalid contact surname.");
    $v->isOk($contfnames, "string", 0, 50, "Invalid first names.");
    $v->isOk($contres1, "string", 0, 50, "Invalid contact address. (line 1)");
    $v->isOk($contres2, "string", 0, 50, "Invalid contact address. (line 2)");
    $v->isOk($contres3, "string", 0, 50, "Invalid contact address. (line 3)");
    $v->isOk($conttelno, "string", 0, 30, "Invalid contact telephone no.");
    $v->isOk($idnum . $passportnum, "string", 1, 30, "Invalid id/passport num (VAL).");
    if (!empty($idnum)) {
        $v->isOk($idnum, "string", 6, 30, "Invalid id number.");
    }
    $v->isOk($taxref, "string", 0, 30, "Invalid tax ref no.");
    $v->isOk($department, "string", 0, 50, "Invalid department");
    $v->isOk($occ_cat, "string", 0, 50, "Invalid Occupational Category");
    $v->isOk($occ_level, "string", 0, 50, "Invalid Occupational Level");
    $v->isOk($pos_filled, "string", 0, 50, "Invalid Position Files");
    $v->isOk($temporary, "string", 0, 50, "Invalid Temporary Data");
    $v->isOk($termination_date, "date", 1, 10, "{$termination_date} Invalid termination date.");
    $v->isOk($recruitment_from, "string", 0, 50, "Invalid Recruitment From");
    $v->isOk($employment_reason, "string", 0, 50, "Invalid Employment Reason");
    $v->isOk($union_name, "string", 0, 50, "Invalid Union Name");
    $v->isOk($union_mem_num, "string", 0, 50, "Invalid Union Member Name");
    $v->isOk($union_pos, "string", 0, 50, "Invalid Union Position");
    $v->isOk($race, "string", 0, 50, "Invalid Race");
    $v->isOk($disabled_stat, "string", 0, 50, "Invalid Disabled Status");
    $v->isOk($emp_group, "num", 1, 10, "Invalid Employee Group.");
    $v->isOK($person_nature, "string", 1, 1, "Invalid Nature Of Person Selection.");
    $v->isOK($medical_aid, "num", 1, 4, "Invalid Medical Aid Selected.");
    $v->isOK($medical_aid_number, "string", 0, 25, "Invalid Medical Aid Number.");
    if (strlen($idnum) >= 6) {
        $bd_year = substr($idnum, 0, 2);
        $bd_month = substr($idnum, 2, 2);
        $bd_day = substr($idnum, 4, 2);
        if (!(is_numeric($bd_year) && is_numeric($bd_month) && is_numeric($bd_day) && checkdate($bd_month, $bd_day, $bd_year))) {
            $v->addError("", "Invalid id num (BD).");
        }
    }
    if (isset($allowances)) {
        foreach ($allowances as $key => $value) {
            $v->isOk($allowances[$key], "float", 0, 20, "Invalid allowance amount " . ($key + 1) . ".");
        }
    }
    if (isset($deductid)) {
        foreach ($deductid as $key => $value) {
            $v->isOk($deductid[$key], "num", 1, 20, "Invalid deductions ID.");
        }
    }
    if (isset($deductions)) {
        foreach ($deductions as $key => $value) {
            $v->isOk($deductions[$key], "float", 0, 20, "Invalid deduction amount" . ($key + 1) . ".");
            $v->isOk($comp_deductions[$key], "float", 0, 20, "Invalid deduction employer contribution amount" . ($key + 1) . ".");
        }
    }
    if (isset($allowid)) {
        foreach ($allowid as $key => $value) {
            $v->isOk($allowid[$key], "num", 1, 20, "Invalid allowance ID.");
        }
    }
    if (isset($allowtax)) {
        foreach ($allowtax as $key => $value) {
            $v->isOk($allowtax[$key], "string", 2, 20, "Invalid allowance tax " . ($key + 1) . ".");
        }
    }
    # display errors, if any
    if ($v->isError()) {
        $confirmCust = "";
        $errors = $v->getErrors();
        foreach ($errors as $e) {
            $confirmCust .= "<li class='err'>{$e['msg']}</li>";
        }
        return editEmp($confirmCust);
    }
    db_connect();
    # deal with logo image
    if ($changelogo == "yes") {
        if (empty($_FILES["logo"])) {
            return "<li class='err'> Please select an image to upload from your hard drive.</li>";
        }
        if (is_uploaded_file($_FILES["logo"]["tmp_name"])) {
            # Check file ext
            if (preg_match("/(image\\/jpeg|image\\/png|image\\/gif)/", $_FILES["logo"]["type"], $extension)) {
                $type = $_FILES["logo"]["type"];
                // open file in "read, binary" mode
                $img = "";
                $file = fopen($_FILES['logo']['tmp_name'], "rb");
                while (!feof($file)) {
                    // fread is binary safe
                    $img .= fread($file, 1024);
                }
                fclose($file);
                # base 64 encoding
                $img = base64_encode($img);
                db_connect();
                $Sl = "DELETE FROM eimgs WHERE emp='{$empnum}'";
                $Ry = db_exec($Sl) or errDie("Error removing prev imgs.");
                $Sl = "INSERT INTO eimgs (emp,image, imagetype) VALUES ('{$empnum}','{$img}','{$type}')";
                $Ry = db_exec($Sl) or errDie("Unable to upload company logo Image to DB.", SELF);
                # to show IMG
                //$logoimg = "<br><img src='compinfo/getimg.php' width=230 height=47><br><br>";
                //$logo = "compinfo/getimg.php";
            } else {
                return "<li class='err'>Please note that we only accept images of the types PNG,GIF and JPEG.</li>";
            }
        } else {
            return "<li class='err'>Unable to upload file, Please check file permissions.</li>";
        }
    }
    # if data is ok, write to db
    db_connect();
    //------------------------------------ Jean -----------------------------------
    $comp_sdl += 0;
    $comp_uif += 0;
    $comp_provident += 0;
    $emp_provident += 0;
    $emp_uif += 0;
    //-----------------------------------------------------------------------------
    $comp_pension += 0;
    $emp_pension += 0;
    $comp_ret += 0;
    $emp_ret += 0;
    $comp_medical += 0;
    $emp_medical += 0;
    $sal_bonus += 0;
    $all_travel += 0;
    /* FOR AUDITING PURPOSES THESE VALUES HAVE BEEN HARDCODED */
    $comp_sdl = 1;
    $comp_uif = 1;
    $emp_uif = 1;
    /* DONE */
    $basic_sal = sprint($basic_sal);
    if ($resident == "Yes") {
        $resident = "TRUE";
    } else {
        $resident = "FALSE";
    }
    $sql = "\n\t\tUPDATE employees \n\t\tSET idnum='{$idnum}', passportnum='{$passportnum}', sex='{$sex}', sname='{$sname}', fnames='{$fnames}', marital='{$marital}', \n\t\t\tresident='{$resident}', hiredate='{$hiredate}', telno='{$telno}', email='{$email}', basic_sal='{$basic_sal}', \n\t\t\thpweek='{$hpweek}', novert='{$novert}', hovert='{$hovert}', paytype='{$paytype}', taxref='{$taxref}', enum='{$enum}', \n\t\t\tpayprd_day='{$payprd_day}', bankname='{$bankname}', bankcode='{$bankcode}', bankacctype='{$bankacctype}', \n\t\t\tbankaccno='{$bankaccno}', vaclea='{$vaclea}', siclea='{$siclea}', stdlea='{$stdlea}', res1='{$res1}', res2='{$res2}', \n\t\t\tres3='{$res3}', res4='{$res4}', pos1='{$pos1}', pos2='{$pos2}', pcode='{$pcode}', contsname='{$contsname}', \n\t\t\tcontfnames='{$contfnames}', contres1='{$contres1}', contres2='{$contres2}', contres3='{$contres3}', \n\t\t\tconttelno='{$conttelno}', designation='{$designation}', basic_sal_annum='{$basic_sal_annum}', sal_bonus='{$sal_bonus}', \n\t\t\tsal_bonus_month='{$sal_bonus_month}', all_travel='{$all_travel}', comp_uif='{$comp_uif}', comp_sdl='{$comp_sdl}', \n\t\t\temp_uif='{$emp_uif}', comp_pension='{$comp_pension}', emp_pension='{$emp_pension}', comp_ret='{$comp_ret}', \n\t\t\temp_ret='{$emp_ret}', comp_medical='{$comp_medical}', emp_medical='{$emp_medical}', emp_meddeps='{$emp_meddeps}', \n\t\t\tcomp_provident='{$comp_provident}', emp_provident='{$emp_provident}', comp_other='{$comp_other}', \n\t\t\temp_other='{$emp_other}', payprd='{$payprd}', saltyp='{$saltyp}', department = '{$department}', occ_cat = '{$occ_cat}', \n\t\t\tocc_level = '{$occ_level}', pos_filled = '{$pos_filled}', temporary = '{$temporary}', \n\t\t\ttermination_date = '{$termination_date}', recruitment_from = '{$recruitment_from}', \n\t\t\temployment_reason = '{$employment_reason}', union_name = '{$union_name}', union_mem_num = '{$union_mem_num}', \n\t\t\tunion_pos = '{$union_pos}', race = '{$race}', disabled_stat = '{$disabled_stat}', fringe_car1='{$fringe_car1}', \n\t\t\tfringe_car1_contrib='{$fringe_car1_contrib}', fringe_car1_fuel='{$fringe_car1_fuel}', \n\t\t\tfringe_car1_service='{$fringe_car1_service}', fringe_car2='{$fringe_car2}', \n\t\t\tfringe_car2_contrib='{$fringe_car2_contrib}', fringe_car2_fuel='{$fringe_car2_fuel}', \n\t\t\tfringe_car2_service='{$fringe_car2_service}', flag=NULL,prevemp_remun='{$prevemp_remun}', \n\t\t\tprevemp_tax='{$prevemp_tax}', emp_group='{$emp_group}', person_nature = '{$person_nature}', \n\t\t\tmedical_aid = '{$medical_aid}', medical_aid_number = '{$medical_aid_number}', emp_usescales = '{$emp_usescales}' \n\t\tWHERE empnum = '{$empnum}' AND div = '" . USER_DIV . "'";
    $nwEmpRslt = db_exec($sql) or errDie("Unable to update employee information.");
    //-----------------------------------------------------------------------------
    if (isset($allowid)) {
        # Remove old details
        $sql = "DELETE FROM empallow WHERE empnum = '{$empnum}' AND div = '" . USER_DIV . "'";
        $allowRslt = db_exec($sql);
        # write Allowances to db
        foreach ($allowid as $i => $id) {
            if (empty($allowances[$i]) || $allowances[$i] == 0) {
                continue;
            }
            # Insert new records
            $allowances[$i] += 0;
            $allowances[$i] = sprint($allowances[$i]);
            $sql = "\n\t\t\t\tINSERT INTO empallow (\n\t\t\t\t\tallowid, empnum, type, amount, accid, div\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$id}', '{$empnum}', '{$allowtype[$i]}', '{$allowances[$i]}', '{$allowaccid[$i]}', '" . USER_DIV . "'\n\t\t\t\t)";
            $allowRslt = db_exec($sql) or errDie("Unable to process Employee allowances in database.");
        }
    }
    if (isset($subsname)) {
        $inssub = new dbUpdate("emp_subsistence", "cubit");
        foreach ($subsname as $sid => $sn) {
            $subsamt[$sid] += 0;
            $cols = grp(m("subid", $sid), m("empnum", $empnum), m("amount", $subsamt[$sid]), m("days", $subsdays[$sid]), m("accid", $subsacc[$sid]));
            $inssub->setOpt($cols, wgrp(m("subid", $sid), m("empnum", $empnum)));
            $inssub->run(DB_REPLACE);
        }
    }
    if (isset($deductid)) {
        # Remove old records
        $sql = "DELETE FROM empdeduct WHERE empnum = '{$empnum}' AND div = '" . USER_DIV . "'";
        $deductRslt = db_exec($sql);
        # write Deductions to db
        foreach ($deductid as $i => $id) {
            if (isset($ltsal_checked[$i])) {
                $ltsal = "y";
            } else {
                $ltsal = "n";
            }
            # Insert new records
            if (empty($deductions[$i]) || $deductions[$i] == 0) {
                continue;
            }
            if (empty($comp_deductions[$i])) {
                $comp_deductions[$i] = 0;
            }
            $deductions[$i] += 0;
            $deductions[$i] = sprint($deductions[$i]);
            $comp_deductions[$i] += 0;
            $sql = "\n\t\t\t\tINSERT INTO empdeduct (\n\t\t\t\t\tdedid, empnum, amount, employer_amount, div, type, \n\t\t\t\t\temployer_type, grosdeduct, accid\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$id}', '{$empnum}', '{$deductions[$i]}', '{$comp_deductions[$i]}', '" . USER_DIV . "', '{$deducttype[$i]}', \n\t\t\t\t\t'{$deducttype[$i]}', '{$ltsal}', '{$deductaccid[$i]}'\n\t\t\t\t)";
            $deductRslt = db_exec($sql) or errDie("Unable to process Employee deductions in database.");
        }
    }
    if (isset($fringeid)) {
        $sql = "DELETE FROM empfringe WHERE empnum='{$empnum}' AND div='" . USER_DIV . "'";
        $rslt = db_exec($sql) or errDie("Error updating fringe benefits (DEL).");
        foreach ($fringeid as $i => $id) {
            if (empty($fringebens[$i]) || $fringebens[$i] == 0) {
                continue;
            }
            $fringebens[$i] += 0;
            $sql = "\n\t\t\t\tINSERT INTO empfringe (\n\t\t\t\t\tfringeid, empnum, amount, type, accid, div\n\t\t\t\t) VALUES (\n\t\t\t\t\t'{$id}', '{$empnum}', '{$fringebens[$i]}', '{$fringetype[$i]}', '{$fringeexpacc[$i]}', '" . USER_DIV . "'\n\t\t\t\t)";
            $rslt = db_exec($sql) or errDie("Error updating fringe benefits (INS#{$id}).");
        }
    }
    db_conn('cubit');
    $Sl = "SELECT * FROM costcenters";
    $Ri = db_exec($Sl);
    $i = 0;
    $Sl = "DELETE FROM empc WHERE emp='{$empnum}'";
    $Rl = db_exec($Sl);
    while ($data = pg_fetch_array($Ri)) {
        if ($ct[$data['ccid']] > 0) {
            $Sl = "INSERT INTO empc(cid,emp,amount) VALUES ('{$data['ccid']}','{$empnum}','" . $ct[$data['ccid']] . "')";
            $Rl = db_exec($Sl);
        }
        $i++;
    }
    # Provide some info on status
    $writeEmp = "\n\t\t<table " . TMPL_tblDflts . " width='50%'>\n\t\t\t<tr>\n\t\t\t\t<th>Employee details edited</th>\n\t\t\t</tr>\n\t\t\t<tr class='" . bg_class() . "'>\n\t\t\t\t<td>Employee details for employee number, {$enum}, has been successfully edited.</td>\n\t\t\t</tr>\n\t\t</table>" . mkQuickLinks(ql("../admin-employee-add.php", "Add Employee"));
    return $writeEmp;
}