| Stock-Based Compensation (Tables)
 | 12 Months Ended | 
| Dec. 31, 2018 | 
|---|
| Disclosure of Compensation Related Costs, Share-based Payments [Abstract] |  | 
| Schedule of Stock-Based Compensation Expense | 
Stock-based compensation expense consisted of the following:  
|  |  
|  |  |  |  |  |  |  |  |  |  |  |  |  |  
|   |   | Year Ended December 31, |  
| (in thousands) |   | 2018 |   | 2017 |   | 2016 |  
| Cost of sales |   | $ | 250 | 
 |   | $ | 243 | 
 |   | $ | 233 | 
 |  
| SG&A expense |   | 14,041 | 
 |   | 11,043 | 
 |   | 10,753 | 
 |  
| Pre-tax stock-based compensation expense |   | 14,291 | 
 |   | 11,286 | 
 |   | 10,986 | 
 |  
| Income tax benefits |   | (3,218 | ) |   | (1,778 | ) |   | (3,969 | ) |  
| Total stock-based compensation expense, net of tax |   | $ | 11,073 | 
 |   | $ | 9,508 | 
 |   | $ | 7,017 | 
 |  | 
| Schedule of Weighted Average Assumptions | 
The following table presents the weighted average assumptions for stock options granted in the years ended December 31: 
|  |  
|  |  |  |  |  |  |  |  
|   |   | 2018 |   | 2017 |   | 2016 |  
| Expected option term |   | 4.50 years |   | 4.54 years |   | 4.63 years |  
| Expected stock price volatility |   | 28.39% |   | 28.91% |   | 29.79% |  
| Risk-free interest rate |   | 2.47% |   | 1.73% |   | 1.17% |  
| Expected annual dividend yield |   | 1.15% |   | 1.29% |   | 1.20% |  
| Weighted average grant date fair value |   | $18.86 |   | $13.11 |   | $13.38 | 
 | 
| Summary of Stock Option Activity | 
The following table summarizes stock option activity under the Plan: 
|  |  
|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  
|   |   | Number of Shares
 |   |  Weighted Average
 Exercise
 Price
 |   | Weighted Average Remaining Contractual Life |   | 
Aggregate Intrinsic Value (in thousands)
 |  
| Options outstanding at January 1, 2016 |   | 2,288,870 | 
 |   | $ | 32.69 | 
 |   | 6.50 |   | $ | 38,209 | 
 |  
| Granted |   | 430,544 | 
 |   | 56.63 | 
 |   |   |   |   |  
| Cancelled |   | (117,699 | ) |   | 47.33 | 
 |   |   |   |   |  
| Exercised |   | (450,173 | ) |   | 29.25 | 
 |   |   |   |   |  
| Options outstanding at December 31, 2016 |   | 2,151,542 | 
 |   | 37.40 | 
 |   | 6.39 |   | 45,253 | 
 |  
| Granted |   | 540,537 | 
 |   | 55.90 | 
 |   |   |   |   |  
| Cancelled |   | (246,450 | ) |   | 50.62 | 
 |   |   |   |   |  
| Exercised |   | (675,742 | ) |   | 29.52 | 
 |   |   |   |   |  
| Options outstanding at December 31, 2017 |   | 1,769,887 | 
 |   | 44.22 | 
 |   | 6.69 |   | 48,962 | 
 |  
| Granted |   | 402,010 | 
 |   | 76.48 | 
 |   |   |   |   |  
| Cancelled |   | (67,440 | ) |   | 60.75 | 
 |   |   |   |   |  
| Exercised |   | (499,836 | ) |   | 36.98 | 
 |   |   |   |   |  
| Options outstanding at December 31, 2018 |   | 1,604,621 | 
 |   | $ | 53.86 | 
 |   | 6.95 |   | $ | 48,703 | 
 |  
| Options vested and expected to vest at December 31, 2018 |   | 1,542,039 | 
 |   | $ | 53.31 | 
 |   | 6.88 |   | $ | 47,647 | 
 |  
| Options exercisable at December 31, 2018 |   | 703,049 | 
 |   | $ | 40.39 | 
 |   | 5.16 |   | $ | 30,727 | 
 |  | 
| Schedule Of Weighted Average Assumptions for Restricted Stock Units | 
The following table presents the weighted average assumptions for restricted stock units granted in the years ended December 31: 
|  |  
|  |  |  |  |  |  |  |  
|   |   | 2018 |   | 2017 |   | 2016 |  
| Vesting period |   | 3.77 years |   | 3.87 years |   | 3.57 years |  
| Expected annual dividend yield |   | 1.15% |   | 1.30% |   | 1.08% |  
| Estimated average grant date fair value per restricted stock unit granted |   | $73.74 |   | $52.45 |   | $55.93 |  | 
| Summary of Restricted Stock Unit Activity | 
The following table summarizes the restricted stock unit activity under the Plan: 
|  |  
|  |  |  |  |  |  |  |  |  
|   |   | 
Number of  Shares
 |   | 
Weighted Average  Grant Date Fair Value Per Share
 |  
| Restricted stock units outstanding at January 1, 2016 |   | 553,289 | 
 |   | $ | 38.85 | 
 |  
| Granted |   | 205,734 | 
 |   | 55.93 | 
 |  
| Vested |   | (235,059 | ) |   | 33.98 | 
 |  
| Forfeited |   | (57,489 | ) |   | 46.35 | 
 |  
| Restricted stock units outstanding at December 31, 2016 |   | 466,475 | 
 |   | 47.23 | 
 |  
| Granted |   | 270,169 | 
 |   | 52.45 | 
 |  
| Vested |   | (176,654 | ) |   | 42.32 | 
 |  
| Forfeited |   | (110,515 | ) |   | 48.13 | 
 |  
| Restricted stock units outstanding at December 31, 2017 |   | 449,475 | 
 |   | 52.07 | 
 |  
| Granted |   | 197,299 | 
 |   | 73.74 | 
 |  
| Vested |   | (155,847 | ) |   | 50.97 | 
 |  
| Forfeited |   | (66,926 | ) |   | 53.19 | 
 |  
| Restricted stock units outstanding at December 31, 2018 |   | 424,001 | 
 |   | $ | 62.38 | 
 |  |