Condensed Consolidated Statements of Changes in Stockholders' Equity (Unaudited) - USD ($) $ in Thousands |
Share Repurchase Program [Member]
Common Stock Outstanding [Member]
|
Share Repurchase Program [Member]
Additional Paid-in Capital [Member]
|
Share Repurchase Program [Member]
Treasury Stock, Common [Member]
|
Share Repurchase Program [Member]
AOCI Attributable to Parent [Member]
|
Share Repurchase Program [Member]
Retained Earnings [Member]
|
Share Repurchase Program [Member] |
Stock-based Program [Member]
Common Stock Outstanding [Member]
|
Stock-based Program [Member]
Additional Paid-in Capital [Member]
|
Stock-based Program [Member]
Treasury Stock, Common [Member]
|
Stock-based Program [Member]
AOCI Attributable to Parent [Member]
|
Stock-based Program [Member]
Retained Earnings [Member]
|
Stock-based Program [Member] |
Common Stock Outstanding [Member] |
Additional Paid-in Capital [Member] |
Treasury Stock, Common [Member] |
AOCI Attributable to Parent [Member] |
Retained Earnings [Member] |
Total |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Balance (in shares) at Oct. 31, 2024 | 53,273,644 | |||||||||||||||||
| Balance at Oct. 31, 2024 | $ 6 | $ 386,313 | $ (25,881) | $ (483) | $ (38,240) | $ 321,715 | ||||||||||||
| Stock-based compensation expense | $ 0 | 905 | 0 | 0 | 0 | 905 | ||||||||||||
| Shares issued under stock-based program (in shares) | 416,546 | |||||||||||||||||
| Shares issued under stock-based program | $ 0 | 1,519 | 0 | 0 | 0 | $ 1,519 | ||||||||||||
| Treasury shares purchased (in shares) | (1,311,386) | (246,121) | (1,311,000) | |||||||||||||||
| Treasury shares purchased | $ 0 | $ 0 | $ (7,925) | $ 0 | $ 0 | $ (7,925) | $ 0 | $ 0 | $ (2,166) | $ 0 | $ 0 | $ (2,166) | ||||||
| Net income (loss) | 0 | 0 | 0 | 0 | (2,643) | $ (2,643) | ||||||||||||
| Foreign currency translation adjustment | $ 0 | 0 | 0 | 3,572 | 0 | 3,572 | ||||||||||||
| Shares issued under stock-based program (in shares) | 416,546 | |||||||||||||||||
| Balance (in shares) at Apr. 30, 2025 | 52,132,683 | |||||||||||||||||
| Balance at Apr. 30, 2025 | $ 6 | 388,737 | (35,972) | 3,089 | (94,015) | 261,845 | ||||||||||||
| Dividend | (53,132) | (53,132) | ||||||||||||||||
| Balance (in shares) at Jan. 31, 2025 | 53,146,589 | |||||||||||||||||
| Balance at Jan. 31, 2025 | $ 6 | 388,199 | (29,981) | (3,478) | (94,011) | 260,735 | ||||||||||||
| Stock-based compensation expense | $ 0 | 538 | 0 | 0 | 0 | 538 | ||||||||||||
| Shares issued under stock-based program (in shares) | 1,213 | |||||||||||||||||
| Shares issued under stock-based program | $ 0 | 0 | 0 | 0 | 0 | $ 0 | ||||||||||||
| Treasury shares purchased (in shares) | (1,015,119) | (1,015,000) | ||||||||||||||||
| Treasury shares purchased | $ 0 | 0 | (5,991) | 0 | 0 | (5,991) | ||||||||||||
| Net income (loss) | 0 | 0 | 0 | 0 | (4) | $ (4) | ||||||||||||
| Foreign currency translation adjustment | $ 0 | 0 | 0 | 6,567 | 0 | 6,567 | ||||||||||||
| Shares issued under stock-based program (in shares) | 1,213 | |||||||||||||||||
| Balance (in shares) at Apr. 30, 2025 | 52,132,683 | |||||||||||||||||
| Balance at Apr. 30, 2025 | $ 6 | 388,737 | (35,972) | 3,089 | (94,015) | 261,845 | ||||||||||||
| Balance (in shares) at Oct. 31, 2025 | 51,272,503 | |||||||||||||||||
| Balance at Oct. 31, 2025 | $ 6 | 389,880 | (41,687) | 1,589 | (84,999) | 264,789 | ||||||||||||
| Stock-based compensation expense | $ 0 | 1,640 | 0 | 0 | 0 | 1,640 | ||||||||||||
| Shares issued under stock-based program (in shares) | 242,740 | |||||||||||||||||
| Shares issued under stock-based program | $ 0 | 0 | 0 | 0 | 0 | $ 0 | ||||||||||||
| Treasury shares purchased (in shares) | (1,042,115) | (80,448) | (1,042,000) | |||||||||||||||
| Treasury shares purchased | $ 0 | 0 | (6,699) | 0 | 0 | (6,699) | $ 0 | $ 0 | $ (520) | $ 0 | $ 0 | $ (520) | ||||||
| Net income (loss) | 0 | 0 | 0 | 0 | 106 | $ 106 | ||||||||||||
| Foreign currency translation adjustment | $ 0 | 0 | 0 | 3,323 | 0 | 3,323 | ||||||||||||
| Shares issued under stock-based program (in shares) | 242,740 | |||||||||||||||||
| Balance (in shares) at Apr. 30, 2026 | 50,392,680 | |||||||||||||||||
| Balance at Apr. 30, 2026 | $ 6 | 391,520 | (48,906) | 4,912 | (84,893) | 262,639 | ||||||||||||
| Balance (in shares) at Jan. 31, 2026 | 50,779,137 | |||||||||||||||||
| Balance at Jan. 31, 2026 | $ 6 | 390,498 | (46,289) | 5,875 | (87,441) | 262,649 | ||||||||||||
| Stock-based compensation expense | $ 0 | 1,022 | 0 | 0 | 0 | 1,022 | ||||||||||||
| Shares issued under stock-based program (in shares) | 5,061 | |||||||||||||||||
| Shares issued under stock-based program | $ 0 | 0 | 0 | 0 | 0 | $ 0 | ||||||||||||
| Treasury shares purchased (in shares) | (391,518) | (392,000) | ||||||||||||||||
| Treasury shares purchased | $ 0 | $ 0 | $ (2,617) | $ 0 | $ 0 | $ (2,617) | ||||||||||||
| Net income (loss) | 0 | 0 | 0 | 0 | 2,548 | $ 2,548 | ||||||||||||
| Foreign currency translation adjustment | $ 0 | 0 | 0 | (963) | 0 | (963) | ||||||||||||
| Shares issued under stock-based program (in shares) | 5,061 | |||||||||||||||||
| Balance (in shares) at Apr. 30, 2026 | 50,392,680 | |||||||||||||||||
| Balance at Apr. 30, 2026 | $ 6 | $ 391,520 | $ (48,906) | $ 4,912 | $ (84,893) | $ 262,639 |