XML 49 R8.htm IDEA: XBRL DOCUMENT v2.4.1.9
Consolidated Statements of Changes in Shareholders' Equity (USD $)
In Thousands, except Share data
Total
Common Stock
Capital in Excess of Par Value
Retained Earnings
Treasury Stock
Stock Trusts
Accumulated Other Comprehensive Income (loss)
Other
Balance at Dec. 31, 2011 $ 88,805us-gaap_StockholdersEquity $ 270us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
$ 115,895us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
$ 83,479us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
$ (47,320)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
$ (55,083)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= ctg_StockTrustsMember
$ (8,230)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
$ (206)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= ctg_OtherReserveMember
Balance, shares at Dec. 31, 2011   27,018,000us-gaap_CommonStockSharesIssued
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
    8,541,000us-gaap_CommonStockSharesIssued
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
3,363,000us-gaap_CommonStockSharesIssued
/ us-gaap_StatementEquityComponentsAxis
= ctg_StockTrustsMember
   
Employee Stock Purchase Plan share issuance 294us-gaap_StockIssuedDuringPeriodValueEmployeeStockPurchasePlan   181us-gaap_StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
  113us-gaap_StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Employee Stock Purchase Plan share issuance, shares         (19,000)us-gaap_StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Stock Option Plan share issuance, net 223us-gaap_StockIssuedDuringPeriodValueStockOptionsExercisedNetOfTaxBenefitExpense   (1,310)us-gaap_StockIssuedDuringPeriodValueStockOptionsExercisedNetOfTaxBenefitExpense
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
  1,533us-gaap_StockIssuedDuringPeriodValueStockOptionsExercisedNetOfTaxBenefitExpense
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Stock Option Plan share issuance, shares         (476,000)us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Excess tax benefits from equity-based compensation 2,615us-gaap_AdjustmentToAdditionalPaidInCapitalIncomeTaxEffectFromShareBasedCompensationNet   2,615us-gaap_AdjustmentToAdditionalPaidInCapitalIncomeTaxEffectFromShareBasedCompensationNet
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
         
Restricted stock plan share issuance/forfeiture (824)us-gaap_StockIssuedDuringPeriodValueRestrictedStockAwardForfeitures   (660)us-gaap_StockIssuedDuringPeriodValueRestrictedStockAwardForfeitures
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
  (164)us-gaap_StockIssuedDuringPeriodValueRestrictedStockAwardForfeitures
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Restricted stock plan share issuance/forfeiture, shares         (70,000)us-gaap_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeited
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Deferred compensation plan share issuance 308us-gaap_StockIssuedDuringPeriodValueEmployeeBenefitPlan   226us-gaap_StockIssuedDuringPeriodValueEmployeeBenefitPlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
  127us-gaap_StockIssuedDuringPeriodValueEmployeeBenefitPlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
    45us-gaap_StockIssuedDuringPeriodValueEmployeeBenefitPlan
/ us-gaap_StatementEquityComponentsAxis
= ctg_OtherReserveMember
Deferred compensation plan share issuance, shares         (26,000)us-gaap_StockIssuedDuringPeriodSharesEmployeeBenefitPlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Purchase of stock (4,591)us-gaap_StockRedeemedOrCalledDuringPeriodValue       (4,591)us-gaap_StockRedeemedOrCalledDuringPeriodValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Purchase of stock, shares         326,000us-gaap_StockRedeemedOrCalledDuringPeriodShares
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Equity-based compensation 2,236us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation   2,236us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
         
Net Income 16,165us-gaap_NetIncomeLoss     16,165us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
       
Foreign currency adjustment 370us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax           370us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
 
Pension loss adjustment, net of tax (2,820)us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansAdjustmentNetOfTax           (2,820)us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
 
Balance at Dec. 31, 2012 102,781us-gaap_StockholdersEquity 270us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
119,183us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
99,644us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
(50,302)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
(55,083)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= ctg_StockTrustsMember
(10,680)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
(251)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= ctg_OtherReserveMember
Balance, shares at Dec. 31, 2012   27,018,000us-gaap_CommonStockSharesIssued
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
    8,276,000us-gaap_CommonStockSharesIssued
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
3,363,000us-gaap_CommonStockSharesIssued
/ us-gaap_StatementEquityComponentsAxis
= ctg_StockTrustsMember
   
Employee Stock Purchase Plan share issuance 368us-gaap_StockIssuedDuringPeriodValueEmployeeStockPurchasePlan   248us-gaap_StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
  120us-gaap_StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Employee Stock Purchase Plan share issuance, shares         (19,000)us-gaap_StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Stock Option Plan share issuance, net 504us-gaap_StockIssuedDuringPeriodValueStockOptionsExercisedNetOfTaxBenefitExpense   (183)us-gaap_StockIssuedDuringPeriodValueStockOptionsExercisedNetOfTaxBenefitExpense
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
  687us-gaap_StockIssuedDuringPeriodValueStockOptionsExercisedNetOfTaxBenefitExpense
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Stock Option Plan share issuance, shares         (110,000)us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Excess tax benefits from equity-based compensation 1,119us-gaap_AdjustmentToAdditionalPaidInCapitalIncomeTaxEffectFromShareBasedCompensationNet   1,119us-gaap_AdjustmentToAdditionalPaidInCapitalIncomeTaxEffectFromShareBasedCompensationNet
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
         
Restricted stock plan share issuance/forfeiture (931)us-gaap_StockIssuedDuringPeriodValueRestrictedStockAwardForfeitures   (567)us-gaap_StockIssuedDuringPeriodValueRestrictedStockAwardForfeitures
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
  (364)us-gaap_StockIssuedDuringPeriodValueRestrictedStockAwardForfeitures
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Restricted stock plan share issuance/forfeiture, shares         (52,000)us-gaap_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeited
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Deferred compensation plan share issuance 89us-gaap_StockIssuedDuringPeriodValueEmployeeBenefitPlan   84us-gaap_StockIssuedDuringPeriodValueEmployeeBenefitPlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
  39us-gaap_StockIssuedDuringPeriodValueEmployeeBenefitPlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
    (34)us-gaap_StockIssuedDuringPeriodValueEmployeeBenefitPlan
/ us-gaap_StatementEquityComponentsAxis
= ctg_OtherReserveMember
Deferred compensation plan share issuance, shares         (6,000)us-gaap_StockIssuedDuringPeriodSharesEmployeeBenefitPlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Purchase of stock (7,343)us-gaap_StockRedeemedOrCalledDuringPeriodValue       (7,343)us-gaap_StockRedeemedOrCalledDuringPeriodValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Purchase of stock, shares         399,000us-gaap_StockRedeemedOrCalledDuringPeriodShares
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Equity-based compensation 2,647us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation   2,647us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
         
Net Income 15,679us-gaap_NetIncomeLoss     15,679us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
       
Dividends declared (3,046)us-gaap_DividendsCommonStockCash     (3,046)us-gaap_DividendsCommonStockCash
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
       
Foreign currency adjustment 717us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax           717us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
 
Pension loss adjustment, net of tax 1,258us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansAdjustmentNetOfTax           1,258us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
 
Balance at Dec. 31, 2013 113,842us-gaap_StockholdersEquity 270us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
122,531us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
112,277us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
(57,163)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
(55,083)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= ctg_StockTrustsMember
(8,705)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
(285)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= ctg_OtherReserveMember
Balance, shares at Dec. 31, 2013 27,017,824us-gaap_CommonStockSharesIssued 27,018,000us-gaap_CommonStockSharesIssued
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
    8,488,000us-gaap_CommonStockSharesIssued
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
3,363,000us-gaap_CommonStockSharesIssued
/ us-gaap_StatementEquityComponentsAxis
= ctg_StockTrustsMember
   
Employee Stock Purchase Plan share issuance 323us-gaap_StockIssuedDuringPeriodValueEmployeeStockPurchasePlan   145us-gaap_StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
  178us-gaap_StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Employee Stock Purchase Plan share issuance, shares         (24,000)us-gaap_StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Stock Option Plan share issuance, net 974us-gaap_StockIssuedDuringPeriodValueStockOptionsExercisedNetOfTaxBenefitExpense   (2,082)us-gaap_StockIssuedDuringPeriodValueStockOptionsExercisedNetOfTaxBenefitExpense
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
  3,056us-gaap_StockIssuedDuringPeriodValueStockOptionsExercisedNetOfTaxBenefitExpense
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Stock Option Plan share issuance, shares         (513,000)us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Excess tax benefits from equity-based compensation 1,964us-gaap_AdjustmentToAdditionalPaidInCapitalIncomeTaxEffectFromShareBasedCompensationNet   1,964us-gaap_AdjustmentToAdditionalPaidInCapitalIncomeTaxEffectFromShareBasedCompensationNet
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
         
Restricted stock plan share issuance/forfeiture (2,745)us-gaap_StockIssuedDuringPeriodValueRestrictedStockAwardForfeitures   (247)us-gaap_StockIssuedDuringPeriodValueRestrictedStockAwardForfeitures
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
  (2,498)us-gaap_StockIssuedDuringPeriodValueRestrictedStockAwardForfeitures
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Restricted stock plan share issuance/forfeiture, shares         84,000us-gaap_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeited
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Deferred compensation plan share issuance 1,118us-gaap_StockIssuedDuringPeriodValueEmployeeBenefitPlan   485us-gaap_StockIssuedDuringPeriodValueEmployeeBenefitPlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
  348us-gaap_StockIssuedDuringPeriodValueEmployeeBenefitPlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
    285us-gaap_StockIssuedDuringPeriodValueEmployeeBenefitPlan
/ us-gaap_StatementEquityComponentsAxis
= ctg_OtherReserveMember
Deferred compensation plan share issuance, shares         (48,000)us-gaap_StockIssuedDuringPeriodSharesEmployeeBenefitPlan
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Purchase of stock (7,432)us-gaap_StockRedeemedOrCalledDuringPeriodValue       (7,432)us-gaap_StockRedeemedOrCalledDuringPeriodValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Purchase of stock, shares         499,000us-gaap_StockRedeemedOrCalledDuringPeriodShares
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
     
Equity-based compensation 3,088us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation   3,088us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
         
Net Income 10,350us-gaap_NetIncomeLoss     10,350us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
       
Dividends declared (3,628)us-gaap_DividendsCommonStockCash     (3,628)us-gaap_DividendsCommonStockCash
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
       
Foreign currency adjustment (2,274)us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax           (2,274)us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
 
Pension loss adjustment, net of tax (4,614)us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansAdjustmentNetOfTax           (4,614)us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
 
Balance at Dec. 31, 2014 $ 110,966us-gaap_StockholdersEquity $ 270us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
$ 125,884us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
$ 118,999us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
$ (63,511)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
$ (55,083)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= ctg_StockTrustsMember
$ (15,593)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
 
Balance, shares at Dec. 31, 2014 27,017,824us-gaap_CommonStockSharesIssued 27,018,000us-gaap_CommonStockSharesIssued
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
    8,486,000us-gaap_CommonStockSharesIssued
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
3,363,000us-gaap_CommonStockSharesIssued
/ us-gaap_StatementEquityComponentsAxis
= ctg_StockTrustsMember