| Summary of Significant Accounting Policies - Goodwill and Intangible Assets (Details) - USD ($) $ in Thousands | 12 Months Ended | ||||
|---|---|---|---|---|---|
| Dec. 31, 2015 | Dec. 31, 2014 | Dec. 31, 2013 | Jun. 30, 2013 | Feb. 28, 2013 | |
| Goodwill [Line Items] | |||||
| Impairment of goodwill | $ 0 | $ 0 | |||
| Goodwill recorded for acquisitions | $ 59,085 | 60,479 | $ 53,074 | ||
| Minimum | |||||
| Goodwill [Line Items] | |||||
| Intangible assets amortization period | 1 year | ||||
| Maximum | |||||
| Goodwill [Line Items] | |||||
| Intangible assets amortization period | 15 years | ||||
| ESP | |||||
| Goodwill [Line Items] | |||||
| Security deposit with third-party escrow agent | $ 778 | ||||
| Goodwill recorded for acquisitions | $ 3,682 | 2,632 | |||
| Ennovate | |||||
| Goodwill [Line Items] | |||||
| Security deposit with third-party escrow agent | $ 1,200 | ||||
| Goodwill recorded for acquisitions | $ 1,050 | ||||
| X | ||||||||||
| 
- Definition Business Acquisition, Cost of Acquired Entity, Security Deposit in Escrow No definition available. 
 | 
| X | ||||||||||
| 
- Definition Useful life of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days. No definition available. 
 | 
| X | ||||||||||
| 
- Definition Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized. Reference 1: http://www.xbrl.org/2003/role/presentationRef 
 | 
| X | ||||||||||
| 
- Definition Amount of loss from the write-down of an asset representing the future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized. Reference 1: http://www.xbrl.org/2003/role/presentationRef 
 | 
| X | ||||||||||
| 
- Definition Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table. No definition available. 
 | 
| X | ||||||||||
| 
- Details 
 | 
| X | ||||||||||
| 
- Details 
 | 
| X | ||||||||||
| 
- Details 
 | 
| X | ||||||||||
| 
- Details 
 |