Consolidated Statements of Stockholders' Equity - USD ($) shares in Thousands, $ in Thousands | Common Stock | Additional Paid-in Capital | Accumulated Deficit | Accumulated Other Comprehensive Income (Loss) | Total |
Balance (in shares) at Dec. 31, 2017 | 32,048 | | | | |
Balance at Dec. 31, 2017 | $ 32 | $ 556,147 | $ (204,745) | $ 2,176 | $ 353,610 |
Increase (Decrease) in Stockholders' Equity | | | | | |
Net income | | | 13,915 | | 13,915 |
Foreign currency translation adjustments | | | | 1,021 | 1,021 |
Change in pension obligation | | | | 30 | 30 |
Exercise of stock options (in shares) | 75 | | | | |
Exercise of stock options | | 446 | | | 446 |
Issuance of restricted common shares (in shares) | 19 | | | | |
Issuance of restricted common shares | | (227) | | | (227) |
Stock-based compensation expense | | 1,132 | | | 1,132 |
Balance (in shares) at Mar. 31, 2018 | 32,142 | | | | |
Balance at Mar. 31, 2018 | $ 32 | 557,498 | (189,230) | 3,227 | 371,527 |
Balance (in shares) at Dec. 31, 2017 | 32,048 | | | | |
Balance at Dec. 31, 2017 | $ 32 | 556,147 | (204,745) | 2,176 | 353,610 |
Increase (Decrease) in Stockholders' Equity | | | | | |
Net income | | | | | 37,422 |
Foreign currency translation adjustments | | | | | (1,584) |
Change in pension obligation | | | | | 90 |
Balance (in shares) at Sep. 30, 2018 | 32,398 | | | | |
Balance at Sep. 30, 2018 | $ 32 | 562,083 | (165,723) | 682 | 397,074 |
Increase (Decrease) in Stockholders' Equity | | | | | |
Adjustment to Retained Earnings upon ASC 606 Adoption | | | 1,600 | | 1,600 |
Balance (in shares) at Mar. 31, 2018 | 32,142 | | | | |
Balance at Mar. 31, 2018 | $ 32 | 557,498 | (189,230) | 3,227 | 371,527 |
Increase (Decrease) in Stockholders' Equity | | | | | |
Net income | | | 14,669 | | 14,669 |
Foreign currency translation adjustments | | | | (2,321) | (2,321) |
Change in pension obligation | | | | 30 | 30 |
Exercise of stock options (in shares) | 46 | | | | |
Exercise of stock options | | 376 | | | 376 |
Issuance of shares under Employee Stock Purchase Plan (in shares) | 26 | | | | |
Issuance of shares under Employee Stock Purchase Plan | | 515 | | | 515 |
Issuance of restricted common shares (in shares) | 117 | | | | |
Issuance of restricted common shares | | (1,161) | | | (1,161) |
Stock-based compensation expense | | 1,979 | | | 1,979 |
Balance (in shares) at Jun. 30, 2018 | 32,331 | | | | |
Balance at Jun. 30, 2018 | $ 32 | 559,207 | (174,561) | 936 | 385,614 |
Increase (Decrease) in Stockholders' Equity | | | | | |
Net income | | | 8,838 | | 8,838 |
Foreign currency translation adjustments | | | | (284) | (284) |
Change in pension obligation | | | | 30 | 30 |
Exercise of stock options (in shares) | 66 | | | | |
Exercise of stock options | | 467 | | | 467 |
Issuance of restricted common shares (in shares) | 1 | | | | |
Issuance of restricted common shares | | (6) | | | (6) |
Stock-based compensation expense | | 2,415 | | | 2,415 |
Balance (in shares) at Sep. 30, 2018 | 32,398 | | | | |
Balance at Sep. 30, 2018 | $ 32 | 562,083 | (165,723) | 682 | 397,074 |
Balance (in shares) at Dec. 31, 2018 | 32,558 | | | | |
Balance at Dec. 31, 2018 | $ 33 | 565,116 | (157,260) | 448 | 408,337 |
Increase (Decrease) in Stockholders' Equity | | | | | |
Net income | | | 6,062 | | 6,062 |
Foreign currency translation adjustments | | | | (495) | (495) |
Change in pension obligation | | | | 30 | 30 |
Exercise of stock options (in shares) | 288 | | | | |
Exercise of stock options | | 1,828 | | | 1,828 |
Issuance of restricted common shares (in shares) | 35 | | | | |
Issuance of restricted common shares | | (281) | | | (281) |
Stock-based compensation expense | | 1,672 | | | 1,672 |
Balance (in shares) at Mar. 31, 2019 | 32,881 | | | | |
Balance at Mar. 31, 2019 | $ 33 | 568,335 | (151,198) | (17) | 417,153 |
Balance (in shares) at Dec. 31, 2018 | 32,558 | | | | |
Balance at Dec. 31, 2018 | $ 33 | 565,116 | (157,260) | 448 | 408,337 |
Increase (Decrease) in Stockholders' Equity | | | | | |
Net income | | | | | 7,322 |
Foreign currency translation adjustments | | | | | (1,847) |
Change in pension obligation | | | | | 89 |
Balance (in shares) at Sep. 30, 2019 | 32,397 | | | | |
Balance at Sep. 30, 2019 | $ 32 | 559,063 | (149,938) | (1,310) | 407,847 |
Balance (in shares) at Mar. 31, 2019 | 32,881 | | | | |
Balance at Mar. 31, 2019 | $ 33 | 568,335 | (151,198) | (17) | 417,153 |
Increase (Decrease) in Stockholders' Equity | | | | | |
Net income | | | 556 | | 556 |
Foreign currency translation adjustments | | | | (219) | (219) |
Change in pension obligation | | | | 29 | 29 |
Exercise of stock options (in shares) | 104 | | | | |
Exercise of stock options | | 567 | | | 567 |
Issuance of shares under Employee Stock Purchase Plan (in shares) | 32 | | | | |
Issuance of shares under Employee Stock Purchase Plan | | 479 | | | 479 |
Issuance of restricted common shares (in shares) | 165 | | | | |
Issuance of restricted common shares | | (1,310) | | | (1,310) |
Stock-based compensation expense | | 2,246 | | | 2,246 |
Repurchase of common stock (in shares) | (885) | | | | |
Repurchase of common stock | $ (1) | (14,034) | | | (14,035) |
Balance (in shares) at Jun. 30, 2019 | 32,297 | | | | |
Balance at Jun. 30, 2019 | $ 32 | 556,283 | (150,642) | (207) | 405,466 |
Increase (Decrease) in Stockholders' Equity | | | | | |
Net income | | | 704 | | 704 |
Foreign currency translation adjustments | | | | (1,132) | (1,132) |
Change in pension obligation | | | | 29 | 29 |
Exercise of stock options (in shares) | 97 | | | | |
Exercise of stock options | | 642 | | | 642 |
Issuance of restricted common shares (in shares) | 3 | | | | |
Issuance of restricted common shares | | (11) | | | (11) |
Stock-based compensation expense | | 2,149 | | | 2,149 |
Balance (in shares) at Sep. 30, 2019 | 32,397 | | | | |
Balance at Sep. 30, 2019 | $ 32 | $ 559,063 | $ (149,938) | $ (1,310) | $ 407,847 |