function process_project($window, $id, $ctrl)
{
    global $wb;
    switch ($id) {
        case IDC_ISTABPAGE:
            $val = wb_get_value($ctrl);
            wb_set_enabled(wb_get_control($wb->winproject, IDC_TABNUMBER), $val);
            wb_set_enabled(wb_get_control($wb->winproject, IDC_TABNUMBERSPINNER), $val);
            break;
        case IDC_CTRLVAR:
            $hastext = wb_get_text($ctrl) !== '';
            wb_set_enabled(wb_get_control($wb->winproject, IDC_STARTCTRLVAL), $hastext);
            break;
        case IDC_LOCALIZE:
            wb_set_enabled(wb_get_control($wb->winproject, IDC_LOCPREFIX), wb_get_value($ctrl));
            break;
        case IDOK:
            // 	Set various settings
            foreach ($wb->project_array as $var) {
                $var = strtolower($var);
                $ctrl = wb_get_control($wb->winproject, constant("IDC_" . strtoupper($var)));
                if (wb_get_class($ctrl) != RadioButton && wb_get_class($ctrl) != CheckBox) {
                    $wb->form[$wb->currentform]->{$var} = wb_get_text($ctrl);
                } else {
                    $wb->form[$wb->currentform]->{$var} = wb_get_value($ctrl);
                }
            }
            // Fall-through
        // Fall-through
        case IDCANCEL:
            set_default_accel();
            wb_destroy_window($window);
            break;
    }
}
function process_options($window, $id, $ctrl)
{
    global $wb;
    switch ($id) {
        case IDC_WIREFRAME:
        case IDC_GRID:
            wb_set_value(wb_get_control($wb->mainwin, $id), wb_get_value($ctrl));
            break;
        case IDC_BROWSE:
            $current = wb_get_text(wb_get_control($window, IDC_FILEPATH));
            $path = wb_sys_dlg_path($window, 'Select default path for project files:', $current);
            if ($path) {
                wb_set_text(wb_get_control($window, IDC_FILEPATH), $path);
            }
            break;
        case IDOK:
            // 	Set various settings
            foreach ($wb->options_array as $var) {
                $var = strtolower($var);
                $ctrl = wb_get_control($wb->winoptions, constant("IDC_" . strtoupper($var)));
                if (wb_get_class($ctrl) == CheckBox) {
                    $wb->{$var} = wb_get_value($ctrl);
                } else {
                    $wb->{$var} = wb_get_text($ctrl);
                }
            }
            // Fall-through
        // Fall-through
        case IDCANCEL:
            set_default_accel();
            wb_destroy_window($window);
            break;
    }
}
function dummy_callback($window, $id)
{
    switch ($id) {
        case ID_RESETHANDLER:
            wb_set_text(wb_get_control($window, IDC_EDIT6002), "Resetting window handler...");
            wb_set_handler($window, "process_main");
            break;
    }
}
function reset_company_view()
{
    global $wb;
    // Empty listview
    wb_delete_items(wb_get_control($wb->right_control, IDC_COMPANY_LIST), null);
    $keyword = $wb->keyword;
    $where_is = " where 1 ";
    if ($keyword) {
        $where_is .= " AND name LIKE '%{$keyword}%' ";
    }
    $max_row = 22;
    $table_name = $wb->setting["Settings"]["company_table"];
    $start_num = ($wb->current_page - 1) * $max_row;
    $sql = " SELECT COUNT(*) AS num FROM {$table_name} {$where_is} ";
    $wb->db->query($sql);
    $wb->db->next_record();
    $total_num = $wb->db->f("num");
    $wb->total_page = ceil($total_num / $max_row);
    include PATH_CONFIG . "common.php";
    $sql = " SELECT * FROM {$table_name} {$where_is} ORDER BY id DESC LIMIT {$start_num}," . $max_row;
    $wb->db->query($sql);
    $data = array();
    while ($wb->db->next_record()) {
        $row = array();
        $row[] = $wb->db->f("id");
        $row[] = $wb->db->f("name");
        $row[] = $wb->db->f("link_man");
        $row[] = $wb->db->f("phone");
        $row[] = $wb->db->f("email");
        $row[] = $wb->db->f("addrees");
        $data[] = $row;
    }
    // Create listview items
    wb_create_items(wb_get_control($wb->right_control, IDC_COMPANY_LIST), $data);
    //	navigator
    wb_set_text(wb_get_control($wb->right_control, IDC_NAV_BAR), $wb->vars["Lang"]["lang_total"] . " " . $total_num . " " . $wb->vars["Lang"]["lang_records"] . " " . $wb->vars["Lang"]["lang_current"] . $wb->current_page . "/" . $wb->total_page . " " . $wb->vars["Lang"]["lang_page"]);
    wb_set_enabled(wb_get_control($wb->right_control, IDC_NAV_PRE), true);
    wb_set_enabled(wb_get_control($wb->right_control, IDC_NAV_FIRST), true);
    wb_set_enabled(wb_get_control($wb->right_control, IDC_NAV_NEXT), true);
    wb_set_enabled(wb_get_control($wb->right_control, IDC_NAV_LAST), true);
    if ($wb->current_page == $wb->total_page) {
        wb_set_enabled(wb_get_control($wb->right_control, IDC_NAV_NEXT), false);
        wb_set_enabled(wb_get_control($wb->right_control, IDC_NAV_LAST), false);
    }
    if ($wb->current_page == 1) {
        wb_set_enabled(wb_get_control($wb->right_control, IDC_NAV_PRE), false);
        wb_set_enabled(wb_get_control($wb->right_control, IDC_NAV_FIRST), false);
    }
}
function update_item($window)
{
    global $id_edit;
    $name = wb_get_text(wb_get_control($window, ID_NAME));
    $descr = wb_get_text(wb_get_control($window, ID_DESCRIPTION));
    // Fetch the id from table 'cat'
    $id_cat = (int) db_get_id("cat", wb_get_selected(wb_get_control($window, ID_CATLIST)));
    $id_prior = (int) db_get_id("priority", wb_get_selected(wb_get_control($window, ID_PRIORLIST)));
    $id_sever = (int) db_get_id("severity", wb_get_selected(wb_get_control($window, ID_SEVERLIST)));
    $res = db_edit_record("item", $id_edit, "name\ndescription\ncat\npriority\nseverity", array($name, $descr, $id_cat, $id_prior, $id_sever));
    if (!$res) {
        wb_message_box($window, "Problem editing this record.", null, WBC_WARNING);
    }
    return $res;
}
function process_test_lists($window, $id, $ctrl = 0, $lparam = 0)
{
    //	$ctrl = wb_get_control($window, $id);
    switch ($id) {
        case IDC_LISTLINE:
            $n = wb_get_value($ctrl);
            $text = wb_get_text(wb_get_control($window, IDC_LISTVIEW2027), $n);
            if (is_array($text)) {
                $elem = $text[1];
                $text = implode(" ", $text);
            }
            wb_set_text(wb_get_control($window, IDC_EDIT2064), "{$n} [{$text}]\r\n{$elem}");
            return true;
        case IDC_LISTVIEW2027:
        case IDC_LISTVIEW2067:
            if ($lparam == WBC_DBLCLICK) {
                wb_set_text(wb_get_control($window, IDC_EDIT2064), "Double-clicked.");
            } else {
                $val = wb_get_value($ctrl);
                if ($val && is_array($val)) {
                    $val = implode(", ", $val);
                }
                $sel = wb_get_selected($ctrl);
                if ($sel && is_array($sel)) {
                    $sel = implode(", ", $sel);
                }
                $text = wb_get_text($ctrl);
                if (@is_array($text[0])) {
                    $all = $text;
                    $text = "";
                    foreach ($all as $arr) {
                        $text .= "(" . implode(", ", $arr) . ") ";
                    }
                } elseif (is_array($text)) {
                    $text = implode(", ", $text);
                }
                wb_set_text(wb_get_control($window, IDC_EDIT2064), "Selected rows: {$sel}\nValues: [{$val}]\nText: {$text}");
            }
            return true;
        case IDC_LISTBOX2018:
        case IDC_COMBOBOX2010:
            $val = wb_get_value($ctrl);
            $text = wb_get_text($ctrl);
            wb_set_text(wb_get_control($window, IDC_EDIT2064), "[{$text}] [val: {$val}]");
            return true;
    }
    return false;
}
function process_test_static($window, $id, $ctrl = 0, $lparam = 0)
{
    switch ($id) {
        case IDC_BUTTON5068:
            $ctrl = wb_get_control($window, IDC_STATIC5062);
            wb_set_image($ctrl, PATH_RES . "hyper.ico");
            wb_set_style($ctrl, 0, 2);
            //			wb_set_style($ctrl, 0x00020000, true);
            $ctrl = wb_get_control($window, IDC_STATIC5063);
            wb_set_image($ctrl, PATH_RES . "up_arrow.bmp", 0, GREEN);
            wb_set_style($ctrl, 0);
            //			wb_set_style($ctrl, 0x00000000, true);
            return true;
    }
    return false;
}
function process_contact_category_search($window, $id, $ctrl)
{
    global $wb;
    switch ($id) {
        case IDC_SEARCH_SUBMIT:
            $wb->current_page = 1;
            $wb->keyword = wb_get_text(wb_get_control($window, IDC_KEYWORD));
            reset_contact_category_view();
            wb_destroy_window($window);
            break;
        case IDCLOSE:
            // IDCLOSE is predefined
        // IDCLOSE is predefined
        case IDCANCEL:
            wb_destroy_window($window);
            break;
    }
}
function process_agreement_edit($window, $id, $ctrl)
{
    global $wb;
    switch ($id) {
        case IDC_UPDATE:
            $wb->current_action = 'update';
            wb_set_enabled(wb_get_control($window, IDC_SAVE), true);
            wb_set_enabled(wb_get_control($window, IDC_UPDATE), false);
            break;
        case IDC_SAVE:
            inser_update_agreement($window);
            wb_destroy_window($window);
            break;
        case IDCANCEL:
            wb_destroy_window($window);
            break;
    }
}
function process_classes($window, $id, $ctrl, $lparam1 = 0, $lparam2 = 0)
{
    global $wb, $mainwin, $classes_table;
    switch ($id) {
        case IDCLOSE:
            $nclasses = count($wb->classes);
            for ($i = 0; $i < $nclasses; $i++) {
                $const = "IDC_" . strtoupper($wb->classes[$i][1]);
                $c = wb_get_control($wb->classdlg, constant($const));
            }
            wb_destroy_window($window);
            wb_set_selected($wb->mainmenu, ID_TOOLBOX, false);
            $wb->classdlg = null;
            break;
        default:
            process_main($window, $id, $ctrl, $lparam1, $lparam2);
            break;
    }
}
function process_refundment_edit($window, $id, $ctrl)
{
    global $wb;
    switch ($id) {
        case IDC_UPDATE:
            $wb->current_action = 'update';
            wb_set_enabled(wb_get_control($window, IDC_SAVE), true);
            wb_set_enabled(wb_get_control($window, IDC_UPDATE), false);
            break;
        case IDC_SAVE:
            if (!wb_get_text(wb_get_control($window, IDC_REFUNDMENT_COMPANY))) {
                empty_message_box($window, $wb->vars["Lang"]["lang_please_fillup"] . $wb->vars["Lang"]["lang_company"]);
                wb_set_focus(wb_get_control($window, IDC_REFUNDMENT_COMPANY));
            } else {
                inser_update_refundment($window);
                wb_destroy_window($window);
            }
            break;
        case IDCANCEL:
            wb_destroy_window($window);
            break;
    }
}
function process_setting($window, $id, $ctrl)
{
    global $wb;
    switch ($id) {
        case IDOK:
            $wb->setting["Settings"]["db_host"] = wb_get_text(wb_get_control($window, IDC_DB_HOST));
            $wb->setting["Settings"]["db_username"] = wb_get_text(wb_get_control($window, IDC_DB_USERNAME));
            $wb->setting["Settings"]["db_password"] = wb_get_text(wb_get_control($window, IDC_DB_PASSWORD));
            $wb->setting["Settings"]["db_dbname"] = wb_get_text(wb_get_control($window, IDC_DB_NAME));
            $current_lang = wb_get_text(wb_get_control($window, IDC_LANGUAGE));
            include PATH_CONFIG . "common.php";
            $lang_value = array_search($current_lang, $LangOption);
            //			switch ($current_lang)
            //			{
            //				case 'english':
            //					$lang_value='en';
            //					break;
            //				case 'chinese':
            //					$lang_value='zh-cn';
            //					break;
            //
            //			}
            $wb->setting["Settings"]["lang_set"] = $lang_value;
            //			include('include/wb_generic.inc.php');
            //			$contents = generate_ini($wb->setting, "; Store Setting INI file\r\n");
            $contents = generates_ini($wb->setting, "; Store Setting INI file\r\n");
            file_put_contents(PATH_INI . SEETING_DAT, $contents);
            wb_destroy_window($window);
            break;
        case IDCLOSE:
            // IDCLOSE is predefined
        // IDCLOSE is predefined
        case IDCANCEL:
            wb_destroy_window($window);
            break;
    }
}
function update_prior_controls($window)
{
    global $mainwin, $prior_table;
    $itemlist = wb_get_control($window, ID_PRIORITYLIST);
    $id = db_get_id($prior_table, wb_get_selected($itemlist));
    wb_set_text(wb_get_control($window, ID_NAME), db_get_data($prior_table, $id, "name"));
    $sel = wb_get_selected($itemlist);
    wb_set_enabled(wb_get_control($window, ID_SETITEM), $sel != -1);
    wb_set_enabled(wb_get_control($window, ID_DELETEITEM), $sel != -1);
}
function read_settings()
{
    global $wb;
    // Read data from INI file
    $wb->settings = parse_ini(file_get_contents(SYS_INIFILE));
    if (!isset($wb->settings['Settings'])) {
        $wb->settings = parse_ini("[Settings]\nmain_geom = \"100 100 730 575\"\nfilepath = \"\"\n wireframe = 0\n grid = 1\n ghost = 1\n showhex = 1\n autophp = 1\n constructionlines = 1\n showgrid = 1\n autopath = 1");
    }
    // 	Read various settings
    foreach ($wb->options_array as $var) {
        $ctrl = @wb_get_control($wb->mainwin, constant("IDC_" . strtoupper($var)));
        if ($ctrl) {
            $var = strtolower($var);
            $wb->{$var} = $wb->settings["Settings"][$var];
            if ($wb->{$var} !== '' && preg_match("/[\\d\\.\\,]+/", $wb->{$var})) {
                wb_set_value($ctrl, $wb->{$var});
            } else {
                wb_set_text($ctrl, $wb->{$var});
            }
        }
    }
    read_window_geom($wb->mainwin, "main", true);
}
function process_main($window, $id, $ctrl)
{
    global $statusbar, $fmod, $mainwin;
    switch ($id) {
        case ID_INFOTIMER:
            $status = "´ÅÅÌ: " . $fmod->fmod_GetOutputName() . " ";
            $status .= "¸èÇú³¤¶È: " . $fmod->fmod_GetLenght(true) . " ·ÖÖÓ ";
            $status .= "ÒѲ¥·Å: " . $fmod->fmod_Msec2Time($fmod->fmod_GetTime(true)) . " sec ";
            if ($song_name = $fmod->fmodStreamUrl) {
                $status .= "Ãû³Æ: {$song_name} ";
            }
            wb_set_text($statusbar, $status);
            //		play position
            if ($fmod->fmod_GetLenght(false)) {
                wb_set_value(wb_get_control($mainwin, ID_PLAY_POS), round($fmod->fmod_GetTime(false) / $fmod->fmod_GetLenght(false), 2) * 100);
            }
            if ($fmod->fmod_GetTime(false) == $fmod->fmod_GetLenght(false)) {
                $fmod->fmod_StreamOpen($fmod->fmodStreamUrl);
                $fmod->fmod_StreamPlay();
            }
            break;
        case ID_OPEN:
            $filename = wb_sys_dlg_open();
            if ($filename) {
                if ($fmod->fmod_StreamOpen($filename)) {
                    $fmod->fmod_StreamPlay();
                    // returns true, then play
                } else {
                    wb_message_box($window, "Error opening Audiostream!\n" . $fmod->lasterror, APPNAME, WBC_INFO);
                }
            }
            break;
        case ID_CLOSE:
            $fmod->fmod_StreamStop();
            break;
        case ID_PLAY:
            $fmod->fmod_StreamPlay();
            break;
        case ID_STOP:
            $fmod->fmod_StreamStop();
            break;
        case ID_PAUSE:
            if ($fmod->fmodStreamState == 1) {
                switch ($fmod->fmodIsPaused) {
                    case 0:
                        $fmod->fmod_SoundPause(true);
                        wb_set_text($ctrl, "¼ÌÐø..");
                        break;
                    case 1:
                        $fmod->fmod_SoundPause(false);
                        wb_set_text($ctrl, "ÔÝÍ£");
                        break;
                }
            }
            break;
        case ID_MUTE:
            if ($fmod->fmodStreamState == 1) {
                switch ($fmod->fmodIsMuted) {
                    case 0:
                        $fmod->fmod_SoundMute(true);
                        wb_set_text($ctrl, "·ÅÒô");
                        break;
                    case 1:
                        $fmod->fmod_SoundMute(false);
                        wb_set_text($ctrl, "¾²Òô");
                        break;
                }
            }
            break;
        case ID_SURROUND:
            switch ($fmod->fmodSurroundEnabled) {
                case 0:
                    $fmod->fmod_SetSurround(true);
                    wb_set_text($ctrl, "Ñ­»·");
                    break;
                case 1:
                    $fmod->fmod_SetSurround(false);
                    wb_set_text($ctrl, "²»Ñ­»·");
                    break;
            }
            break;
        case ID_VOLUMEN:
            $fmod->fmod_SetVolumen(wb_get_value($ctrl));
            wb_set_text($statusbar, "ÒôÁ¿: " . $fmod->fmod_GetVolumen());
            break;
        case ID_BALANCE:
            $fmod->fmod_SetPanning(wb_get_value($ctrl));
            break;
        case ID_BALCENTER:
            $fmod->fmod_SetPanning(127);
            wb_set_value(wb_get_control($window, ID_BALANCE), 127);
            break;
        case IDCLOSE:
            $fmod->fmod_SoundClose();
            wb_release_library($fmod->fmodlib);
            wb_destroy_window($window);
            break;
    }
}
 /**
  * bind_status
  * no desc
  */
 function bind_status($wb_status, $source = 'id')
 {
     if ($source == 'id') {
         $wb_status = wb_get_control($this->wb_parent_window, $wb_status);
     }
     $this->wb_status_active = true;
     $this->wb_status_field = $wb_status;
 }
function process_test_values($window, $id, $ctrl = 0, $lparam1 = 0, $lparam2 = 0)
{
    global $statusbar;
    if ($lparam1 == WBC_GETFOCUS) {
        wb_set_text($statusbar, "Focus to control {$id}");
        return false;
    }
    switch ($id) {
        case IDC_EDIT4069:
        case IDC_EDIT4071:
            if ($lparam1 == WBC_KEYDOWN) {
                wb_set_text($statusbar, "Char {$lparam2}: " . chr($lparam2));
            }
            break;
        case IDC_EDIT4057:
            if ($lparam1 == WBC_KEYDOWN) {
                wb_set_text($statusbar, "Char {$lparam2}: " . chr($lparam2));
                //				wb_set_text(wb_get_control($window, IDC_STATIC4048), $lparam2 . "\n" . chr($lparam2));
                break;
            }
            $text = wb_get_text(wb_get_control($window, IDC_EDIT4057));
            wb_set_text(wb_get_control($window, IDC_EDIT4058), $text);
            wb_set_text(wb_get_control($window, IDC_EDIT4059), $text);
            wb_set_text(wb_get_control($window, IDC_EDIT4065), implode(" ", array_fill(0, 20, $text)));
            break;
        case IDC_LISTBOX4053:
            if ($lparam1 & WBC_DBLCLICK) {
                wb_set_text(wb_get_control($window, IDC_STATIC4048), "Double-click");
            } else {
                wb_set_text(wb_get_control($window, IDC_STATIC4048), "Single click");
            }
            break;
        case IDC_HSCROLL4056:
        case IDC_SLIDER4011:
            $value = wb_get_value(wb_get_control($window, $id));
            wb_set_value(wb_get_control($window, IDC_PROGRESSBAR4007), $value);
            wb_set_text(wb_get_control($window, IDC_STATIC4019), $value);
            wb_set_value(wb_get_control($window, IDC_HSCROLL4026), $value);
            wb_set_value(wb_get_control($window, IDC_VSCROLL4051), $value);
            wb_set_value(wb_get_control($window, IDC_UPDOWN4028), $value);
            $value = wb_get_value(wb_get_control($window, $id));
            wb_set_text(wb_get_control($window, IDC_STATIC4048), "Control #{$id}: value [{$value}]\n");
            wb_set_value(wb_get_control($window, IDC_EDIT4052), $value);
            break;
        case IDC_RADIOBUTTON4014:
        case IDC_RADIOBUTTON4015:
        case IDC_RADIOBUTTON4016:
            $value = $id - IDC_RADIOBUTTON4014;
            wb_set_value(wb_get_control($window, IDC_LISTBOX4053), $value);
            wb_set_value(wb_get_control($window, IDC_COMBOBOX4054), $value);
            wb_set_value(wb_get_control($window, IDC_LISTBOX4055), $value);
            break;
        case IDC_CHECKBOX4034:
            wb_set_selected(wb_get_control($window, IDC_CHECKBOX4049), wb_get_selected($ctrl));
            $value = wb_get_value(wb_get_control($window, $id));
            wb_set_text(wb_get_control($window, IDC_STATIC4048), "Control #{$id}: value [{$value}]\n");
            break;
        case IDC_UPDOWN4028:
        case IDC_CHECKBOX4049:
            $value = wb_get_value(wb_get_control($window, $id));
            wb_set_text(wb_get_control($window, IDC_STATIC4048), "Control #{$id}: value [{$value}]\n");
            break;
    }
}
function get_selected_tree_item_index($window)
{
    global $cat_table, $it_list;
    // Below: get id of selected treeview element. See comment in update_items()
    $it_list = wb_get_control($window, ID_TREE);
    $sel_text = wb_get_text($it_list);
    $cat_data = db_get_data("cat", null, "name");
    $sel_index = (int) array_search($sel_text, $cat_data);
    return $sel_index;
}
function process_review_edit($window, $id, $ctrl)
{
    global $wb;
    switch ($id) {
        //		case IDC_REVIEW_CAL_SELECT:
        //			wb_set_visible (wb_get_control($window, IDC_REVIEW_CALENDAR), true);
        //			break;
        //		case IDC_REVIEW_CALENDAR:
        //			$date = strftime("%Y-%m-%d %H:%M%:%S", wb_get_value($ctrl));
        //			wb_set_text(wb_get_control($window, IDC_REVIEW_REVIEWDATE), $date);
        ////			wb_set_visible (wb_get_control($window, IDC_REVIEW_CALENDAR), false);
        //			break;
        case IDC_UPDATE:
            $wb->current_action = 'update';
            wb_set_enabled(wb_get_control($window, IDC_SAVE), true);
            wb_set_enabled(wb_get_control($window, IDC_UPDATE), false);
            break;
        case IDC_SAVE:
            if (!wb_get_text(wb_get_control($window, IDC_REVIEW_COMPANY))) {
                empty_message_box($window, $wb->vars["Lang"]["lang_please_fillup"] . $wb->vars["Lang"]["lang_company"]);
                wb_set_focus(wb_get_control($window, IDC_REVIEW_COMPANY));
            } else {
                inser_update_review($window);
                wb_destroy_window($window);
            }
            break;
        case IDCANCEL:
            wb_destroy_window($window);
            break;
    }
}