XML 28 R52.htm IDEA: XBRL DOCUMENT v2.4.1.9
Stock Based Compensation (Details) (USD $)
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Dec. 31, 2012
Dec. 31, 2011
Stock based compensation:        
Employee Service Share-based Compensation, Tax Benefit from Compensation Expense $ 395,000us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense $ 409,000us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense $ 163,000us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense  
Options, additional disclosures:        
Options, exercisable, weighted average remaining contractual term 1 year      
2006 Plan        
Stock based compensation:        
Number of shares authorized for grant 3,000,000us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized
/ us-gaap_PlanNameAxis
= cmt_TwoThousandSixPlanMember
     
Employee Stock Option [Member]        
Stock based compensation:        
Proceeds from exercise of stock options 328,000us-gaap_ProceedsFromStockOptionsExercised
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
410,000us-gaap_ProceedsFromStockOptionsExercised
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
81,000us-gaap_ProceedsFromStockOptionsExercised
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Intrinsic value of options exercised in period 915,000us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
825,000us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
144,000us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Tax benefit received as a result of disqualified dispositions 311,000cmt_EmployeeServiceShareBasedCompensationTaxBenefitRealizedFromExerciseOfStockOptionsDisqualifyingDispositions
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
300,000cmt_EmployeeServiceShareBasedCompensationTaxBenefitRealizedFromExerciseOfStockOptionsDisqualifyingDispositions
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
52,000cmt_EmployeeServiceShareBasedCompensationTaxBenefitRealizedFromExerciseOfStockOptionsDisqualifyingDispositions
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Excess tax benefit related to disqualified dispositions recorded as a credit to income tax expense 84,000cmt_Excesstaxbenefitrelatedtodisqualifieddispositionsrecordedasacredittoincometaxexpense
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
     
Excess tax benefit related to disqualified dispositions recorded as a credit to APIC 227,000cmt_ExcesstaxbenefitrelatedtodisqualifieddispositionsrecordedasacredittoAPIC
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
     
Options, outstanding:        
Options, outstanding, beginning of year (in shares) 227,750us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
374,875us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
400,650us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options, outstanding, grants in period (in shares) 0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options, outstanding, exercises in period (in shares) (224,750)us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
(132,725)us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
(25,775)us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options, outstanding, forfeitures in period (in shares) 0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
(14,400)us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options outstanding, end of year (in shares) 3,000us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
227,750us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
374,875us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options, weighted average exercise price:        
Options, outstanding, weighted average exercise price, beginning of year (USD per share) $ 3.57us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
$ 3.37us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
$ 3.35us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options, grants in period, weighted average exercise price (USD per share) $ 0.00us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
$ 0.00us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
$ 0.00us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options, exercises in period, weighted average exercise price (USD per share) $ 3.53us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
$ 3.09us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
$ 3.14us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options, forfeitures in period, weighted average exercise price (USD per share) $ 0.00us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
$ 2.75us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
$ 0.00us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options, outstanding, weighted average exercise price, end of year (USD per share)   $ 3.57us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
$ 3.37us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options, additional disclosures:        
Options, exercisable (in shares) 3,000us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
227,750us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
360,475us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options, exercisable, weighted average exercise price (USD per share)   $ 3.57us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
$ 3.39us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options, vested and expected to vest (in shares) 3,000us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
227,750us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
374,875us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options, vested and expected to vest, weighted average exercise price (USD per share) $ 6.40us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
$ 3.57us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
$ 3.37us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
 
Options, exercisable, aggregate intrinsic value 42,000us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
     
Restricted stock, weighted average grant date fair value:        
Range of Exercise Prices $ 6.40us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
     
Number of Options 3,000us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
     
Wtd. Avg. Contractual Life in Years 10 months 2 days      
Employee Stock Option [Member] | 2006 Plan        
Stock based compensation:        
Share-based Compensation Arrangement by Share-based Payment Award, Award Term Until Expiration 10 years      
Employee Stock Option [Member] | Vesting Period 1 [Member] | 2006 Plan        
Stock based compensation:        
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period 5 years      
Employee Stock Option [Member] | Vesting Period 2 [Member] | 2006 Plan        
Stock based compensation:        
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period 9 years 6 months      
Employee Stock Option [Member] | Selling, general and administrative expenses        
Stock based compensation:        
Stock based compensation expense 0us-gaap_AllocatedShareBasedCompensationExpense
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_SellingGeneralAndAdministrativeExpensesMember
5,000us-gaap_AllocatedShareBasedCompensationExpense
/ us-gaap_AwardTypeAxis
= us-gaap_EmployeeStockOptionMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_SellingGeneralAndAdministrativeExpensesMember
   
Unvested stock options        
Options, outstanding:        
Options, outstanding, beginning of year (in shares) 0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
14,400us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
20,100us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
 
Options, outstanding, grants in period (in shares) 0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
 
Options, outstanding, forfeitures in period (in shares) 0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
(14,400)us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
 
Options outstanding, end of year (in shares) 0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
14,400us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
 
Options, weighted average exercise price:        
Options, grants in period, weighted average exercise price (USD per share) $ 0us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
$ 0.00us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
$ 0.00us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
 
Options, forfeitures in period, weighted average exercise price (USD per share) $ 0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
$ 2.75us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
$ 0.00us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
 
Unvested options:        
Options, vested in period (in shares) 0cmt_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedInPeriod
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
0cmt_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedInPeriod
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
(5,700)cmt_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedInPeriod
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
 
Options, nonvested, weighted average exercise price (USD per share) $ 0.00cmt_ShareBasedCompensationArrangementsByShareBasedPaymentAwardsOptionsNonvestedWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
$ 0cmt_ShareBasedCompensationArrangementsByShareBasedPaymentAwardsOptionsNonvestedWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
$ 2.75cmt_ShareBasedCompensationArrangementsByShareBasedPaymentAwardsOptionsNonvestedWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
$ 2.75cmt_ShareBasedCompensationArrangementsByShareBasedPaymentAwardsOptionsNonvestedWeightedAverageExercisePrice
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
Options, vested in period, weighted average grant date fair value (USD per share) $ 0cmt_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsVestedInPeriodWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
$ 0.00cmt_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsVestedInPeriodWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
$ 2.75cmt_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsVestedInPeriodWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= cmt_UnvestedStockOptionsMember
 
Restricted stock        
Stock based compensation:        
Employee Service Shared-based Compensation, Tax Benefit from Compensation Expense, Restricted Stock 84,000cmt_EmployeeServiceSharedbasedCompensationTaxBenefitfromCompensationExpenseRestrictedStock
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
109,000cmt_EmployeeServiceSharedbasedCompensationTaxBenefitfromCompensationExpenseRestrictedStock
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
111,000cmt_EmployeeServiceSharedbasedCompensationTaxBenefitfromCompensationExpenseRestrictedStock
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
 
Restricted stock, nonvested:        
Restricted stock, nonvested, beginning of year (in shares) 98,281us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
139,730us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
173,556us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
 
Restricted stock, grants in period (in shares) 81,763us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
63,876us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
59,070us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
 
Restricted stock, vested in period (in shares) (75,976)us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
(91,573)us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
(88,415)us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
 
Restricted stock, forfeitures in period (in shares) 0us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
(13,752)us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
(4,481)us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
 
Restricted stock, nonvested, end of year (in shares) 104,068us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
98,281us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
139,730us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
 
Restricted stock, weighted average grant date fair value:        
Restricted stock, nonvested, weighted average grant date fair value, beginning of period (USD per share) $ 8.91us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
$ 6.77us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
$ 5.21us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
 
Restricted stock, grants in period, weighted average grant date fair value (USD per share) $ 12.04us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
$ 9.32us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
$ 7.93us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
 
Restricted stock, vested in period, weighted average grant date fair value (USD per share) $ 10.03us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
$ 5.95us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
$ 4.44us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
 
Restricted stock, forfeitures in period, weighted average grant date fair value (USD per share) $ 0.00us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
$ 8.74us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
$ 7.68us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
 
Restricted stock, nonvested, weighted average grant date fair value, end of period (USD per share) $ 10.79us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
$ 8.91us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
$ 6.77us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
 
Total unrecognized compensation expense 775,000us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
571,000us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
   
Weighted average period for recognition of compensation expense 1 year 7 months 6 days      
Restricted stock | 2006 Plan        
Stock based compensation:        
Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period 3 years      
Restricted stock | Selling, general and administrative expenses        
Stock based compensation:        
Stock based compensation expense $ 744,000us-gaap_AllocatedShareBasedCompensationExpense
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_SellingGeneralAndAdministrativeExpensesMember
$ 408,000us-gaap_AllocatedShareBasedCompensationExpense
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_SellingGeneralAndAdministrativeExpensesMember
$ 405,000us-gaap_AllocatedShareBasedCompensationExpense
/ us-gaap_AwardTypeAxis
= us-gaap_RestrictedStockMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_SellingGeneralAndAdministrativeExpensesMember