Consolidated Statements of Stockholders' Equity - USD ($) $ in Thousands | Total | Common Stock [Member] | Treasury Stock [Member] | Additional Paid-in Capital [Member] | Accumulated Other Comprehensive Income (Loss) [Member] | Retained Earnings [Member] |
Beginning balance at Dec. 31, 2018 | | $ 132,585 | $ 54 | $ (177,905) | $ 307,014 | $ (215) | $ 3,637 |
Beginning balance, shares at Dec. 31, 2018 | | | 54,117,325 | 26,326,280 | | | |
Issuance of common stock from exercise of options | | 23 | | | 23 | | |
Issuance of common stock from exercise of options, shares | | | 10,000 | | | | |
Issuance of common stock from restricted stock awards, shares | | | 112,545 | | | | |
Purchase of common stock through stock buyback | | (3,125) | | $ (3,125) | | | |
Purchase of common stock through stock buyback, shares | | | | 220,297 | | | |
Impact of net settlements | | (868) | | | (868) | | |
Impact of net settlements, shares | | | 6,391 | 6,391 | | | |
Stock-based compensation expense | | 3,179 | | | 3,179 | | |
Comprehensive income: | | | | | | | |
Unrealized gain (loss) on foreign currency exchange | | 41 | | | | 41 | |
Net income | | 3,290 | | | | | 3,290 |
Ending balance at Mar. 31, 2019 | | 135,125 | $ 54 | $ (181,030) | 309,348 | (174) | 6,927 |
Ending balance, shares at Mar. 31, 2019 | | | 54,246,261 | 26,552,968 | | | |
Beginning balance at Dec. 31, 2018 | | 132,585 | $ 54 | $ (177,905) | 307,014 | (215) | 3,637 |
Beginning balance, shares at Dec. 31, 2018 | | | 54,117,325 | 26,326,280 | | | |
Comprehensive income: | | | | | | | |
Net income | | 12,792 | | | | | |
Ending balance at Sep. 30, 2019 | | 147,771 | $ 55 | $ (182,630) | 314,384 | (467) | 16,429 |
Ending balance, shares at Sep. 30, 2019 | | | 54,666,417 | 26,664,930 | | | |
Beginning balance at Mar. 31, 2019 | | 135,125 | $ 54 | $ (181,030) | 309,348 | (174) | 6,927 |
Beginning balance, shares at Mar. 31, 2019 | | | 54,246,261 | 26,552,968 | | | |
Issuance of common stock from exercise of options, shares | | | 56,207 | | | | |
Issuance of common stock from restricted stock awards | | (1,600) | | $ (1,600) | | | |
Issuance of common stock from restricted stock awards, shares | | | | 97,427 | | | |
Purchase of common stock through stock buyback | | 3,762 | | | 3,762 | | |
Comprehensive income: | | | | | | | |
Unrealized gain (loss) on foreign currency exchange | | (58) | | | | (58) | |
Net income | | 4,151 | | | | | 4,151 |
Ending balance at Jun. 30, 2019 | | 141,380 | $ 54 | $ (182,630) | 313,110 | (232) | 11,078 |
Ending balance, shares at Jun. 30, 2019 | | | 54,302,468 | 26,650,395 | | | |
Issuance of common stock from exercise of options | | 96 | $ 1 | | 95 | | |
Issuance of common stock from exercise of options, shares | | | 16,000 | | | | |
Issuance of common stock from restricted stock awards, shares | | | 333,414 | | | | |
Impact of net settlements | | (1,751) | | | (1,751) | | |
Impact of net settlements, shares | | | 14,535 | 14,535 | | | |
Stock-based compensation expense | | 2,930 | | | 2,930 | | |
Comprehensive income: | | | | | | | |
Unrealized gain (loss) on foreign currency exchange | | (235) | | | | (235) | |
Net income | | 5,351 | | | | | 5,351 |
Ending balance at Sep. 30, 2019 | | 147,771 | $ 55 | $ (182,630) | 314,384 | (467) | 16,429 |
Ending balance, shares at Sep. 30, 2019 | | | 54,666,417 | 26,664,930 | | | |
Beginning balance at Dec. 31, 2019 | | 152,951 | $ 55 | $ (184,972) | 317,675 | (319) | 20,512 |
Beginning balance, shares at Dec. 31, 2019 | | | 54,903,824 | 26,761,305 | | | |
Issuance of common stock from restricted stock awards, shares | | | 123,027 | | | | |
Purchase of common stock through stock buyback | | (14,824) | | $ (14,824) | | | |
Purchase of common stock through stock buyback, shares | | | | 736,760 | | | |
Impact of net settlements | | (68) | | | (68) | | |
Impact of net settlements, shares | | | 230 | 230 | | | |
Stock-based compensation expense | [1] | 5,294 | | | 5,294 | | |
Comprehensive income: | | | | | | | |
Unrealized gain (loss) on investments | | (132) | | | | (132) | |
Unrealized gain (loss) on foreign currency exchange | | (53) | | | | (53) | |
Net income | | 2,207 | | | | | 2,207 |
Ending balance at Mar. 31, 2020 | | 145,375 | $ 55 | $ (199,796) | 322,901 | (504) | 22,719 |
Ending balance, shares at Mar. 31, 2020 | | | 55,027,081 | 27,498,295 | | | |
Beginning balance at Dec. 31, 2019 | | $ 152,951 | $ 55 | $ (184,972) | 317,675 | (319) | 20,512 |
Beginning balance, shares at Dec. 31, 2019 | | | 54,903,824 | 26,761,305 | | | |
Issuance of common stock from exercise of options, shares | | 37,500 | | | | | |
Comprehensive income: | | | | | | | |
Unrealized gain (loss) on investments | | $ (36) | | | | | |
Net income | | 13,762 | | | | | |
Ending balance at Sep. 30, 2020 | | 162,256 | $ 56 | $ (199,796) | 327,899 | (177) | 34,274 |
Ending balance, shares at Sep. 30, 2020 | | | 55,608,094 | 27,509,387 | | | |
Beginning balance at Mar. 31, 2020 | | 145,375 | $ 55 | $ (199,796) | 322,901 | (504) | 22,719 |
Beginning balance, shares at Mar. 31, 2020 | | | 55,027,081 | 27,498,295 | | | |
Issuance of common stock from restricted stock awards, shares | | | 8,000 | | | | |
Stock-based compensation expense | | 3,293 | | | 3,293 | | |
Comprehensive income: | | | | | | | |
Unrealized gain (loss) on investments | | 84 | | | | 84 | |
Unrealized gain (loss) on foreign currency exchange | | 21 | | | | 21 | |
Net income | | 4,773 | | | | | 4,773 |
Ending balance at Jun. 30, 2020 | | 153,546 | $ 55 | $ (199,796) | 326,194 | (399) | 27,492 |
Ending balance, shares at Jun. 30, 2020 | | | 55,035,081 | 27,498,295 | | | |
Issuance of common stock from restricted stock awards | | 461 | $ 1 | | 460 | | |
Issuance of common stock from restricted stock awards, shares | | | 561,921 | | | | |
Impact of net settlements | | (3,078) | | | (3,078) | | |
Impact of net settlements, shares | | | 11,092 | 11,092 | | | |
Stock-based compensation expense | | 4,323 | | | 4,323 | | |
Comprehensive income: | | | | | | | |
Unrealized gain (loss) on investments | | 12 | | | | 12 | |
Unrealized gain (loss) on foreign currency exchange | | 210 | | | | 210 | |
Net income | | 6,782 | | | | | 6,782 |
Ending balance at Sep. 30, 2020 | | $ 162,256 | $ 56 | $ (199,796) | $ 327,899 | $ (177) | $ 34,274 |
Ending balance, shares at Sep. 30, 2020 | | | 55,608,094 | 27,509,387 | | | |
| |
[1] | Includes $1.8 million of accrued compensation expense from 2019. | |