XML 33 R89.htm IDEA: XBRL DOCUMENT v2.4.1.9
Stock-based compensation - Options by exercise price range (Details) (Share option plan, CAD)
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Number of options outstanding 1,765,920us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions  
Options outstanding, weighted average remaining life 6 years 1 month 6 years 11 months
Options outstanding, weighted average exercise price 5.87us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1  
Number of options exercisable 824,720us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions 892,700us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
Options exercisable, weighted average remaining life 4 years 6 months  
Options exercisable, weighted average exercise price 8.41us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1 8.00us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
$2.75
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 2.75noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TwoPointSeventyFiveMember
 
Number of options outstanding 373,760us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TwoPointSeventyFiveMember
 
Options outstanding, weighted average remaining life 7 years 6 months  
Options outstanding, weighted average exercise price 2.75us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TwoPointSeventyFiveMember
 
Number of options exercisable 109,760us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TwoPointSeventyFiveMember
 
Options exercisable, weighted average remaining life 7 years 5 months 18 days  
Options exercisable, weighted average exercise price 2.75us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TwoPointSeventyFiveMember
 
$2.79
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 2.79noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TwoPointSeventyNineMember
 
Number of options outstanding 450,000us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TwoPointSeventyNineMember
 
Options outstanding, weighted average remaining life 7 years 6 months 12 days  
Options outstanding, weighted average exercise price 2.79us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TwoPointSeventyNineMember
 
Number of options exercisable 0us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TwoPointSeventyNineMember
 
Options exercisable, weighted average exercise price 0.00us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TwoPointSeventyNineMember
 
$3.69
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 3.69noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThreePointSixtyNineMember
 
Number of options outstanding 38,900us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThreePointSixtyNineMember
 
Options outstanding, weighted average remaining life 3 years 10 months 24 days  
Options outstanding, weighted average exercise price 3.69us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThreePointSixtyNineMember
 
Number of options exercisable 38,900us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThreePointSixtyNineMember
 
Options exercisable, weighted average remaining life 3 years 11 months  
Options exercisable, weighted average exercise price 3.69us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThreePointSixtyNineMember
 
$4.90
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 4.90noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FourPointNinetyMember
 
Number of options outstanding 40,000us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FourPointNinetyMember
 
Options outstanding, weighted average remaining life 7 years 3 months  
Options outstanding, weighted average exercise price 4.90us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FourPointNinetyMember
 
Number of options exercisable 16,000us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FourPointNinetyMember
 
Options exercisable, weighted average remaining life 7 years 3 months  
Options exercisable, weighted average exercise price 4.90us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FourPointNinetyMember
 
$5.00
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 5.00noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FivePointZeroMember
 
Number of options outstanding 142,760us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FivePointZeroMember
 
Options outstanding, weighted average remaining life 1 year 3 months 18 days  
Options outstanding, weighted average exercise price 5.00us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FivePointZeroMember
 
Number of options exercisable 142,760us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FivePointZeroMember
 
Options exercisable, weighted average remaining life 1 year 3 months  
Options exercisable, weighted average exercise price 5.00us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FivePointZeroMember
 
$5.91
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 5.91noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FivePointNinetyOneMember
 
Number of options outstanding 166,600us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FivePointNinetyOneMember
 
Options outstanding, weighted average remaining life 9 years  
Options outstanding, weighted average exercise price 5.91us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FivePointNinetyOneMember
 
Number of options exercisable 33,320us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FivePointNinetyOneMember
 
Options exercisable, weighted average remaining life 9 years  
Options exercisable, weighted average exercise price 5.91us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_FivePointNinetyOneMember
 
$6.56
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 6.56noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixPointFiveSixMember
 
Number of options outstanding 94,560us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixPointFiveSixMember
 
Options outstanding, weighted average remaining life 6 years 11 months  
Options outstanding, weighted average exercise price 6.56us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixPointFiveSixMember
 
Number of options exercisable 55,120us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixPointFiveSixMember
 
Options exercisable, weighted average remaining life 6 years 11 months  
Options exercisable, weighted average exercise price 6.56us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixPointFiveSixMember
 
$8.28
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 8.28noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_EightPointTwentyEightMember
 
Number of options outstanding 60,000us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_EightPointTwentyEightMember
 
Options outstanding, weighted average remaining life 4 years 6 months  
Options outstanding, weighted average exercise price 8.28us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_EightPointTwentyEightMember
 
Number of options exercisable 60,000us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_EightPointTwentyEightMember
 
Options exercisable, weighted average remaining life 4 years 6 months  
Options exercisable, weighted average exercise price 8.28us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_EightPointTwentyEightMember
 
$8.58
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 8.58noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_EightPointFiftyEightMember
 
Number of options outstanding 30,000us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_EightPointFiftyEightMember
 
Options outstanding, weighted average remaining life 5 years 8 months  
Options outstanding, weighted average exercise price 8.58us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_EightPointFiftyEightMember
 
Number of options exercisable 24,000us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_EightPointFiftyEightMember
 
Options exercisable, weighted average remaining life 5 years 8 months  
Options exercisable, weighted average exercise price 8.58us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_EightPointFiftyEightMember
 
$9.33
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 9.33noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_NinePointThrirtyThreeMember
 
Number of options outstanding 71,580us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_NinePointThrirtyThreeMember
 
Options outstanding, weighted average remaining life 5 years 1 month  
Options outstanding, weighted average exercise price 9.33us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_NinePointThrirtyThreeMember
 
Number of options exercisable 59,840us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_NinePointThrirtyThreeMember
 
Options exercisable, weighted average remaining life 5 years 1 month  
Options exercisable, weighted average exercise price 9.33us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_NinePointThrirtyThreeMember
 
$10.21
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 10.13noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TenPointTwentyOneMember
 
Number of options outstanding 68,860us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TenPointTwentyOneMember
 
Options outstanding, weighted average remaining life 6 years  
Options outstanding, weighted average exercise price 10.13us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TenPointTwentyOneMember
 
Number of options exercisable 56,120us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TenPointTwentyOneMember
 
Options exercisable, weighted average remaining life 6 years  
Options exercisable, weighted average exercise price 10.13us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_TenPointTwentyOneMember
 
$13.21
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 13.21noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThirteenPointTwentyOneMember
 
Number of options outstanding 75,000us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThirteenPointTwentyOneMember
 
Options outstanding, weighted average remaining life 3 years  
Options outstanding, weighted average exercise price 13.21us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThirteenPointTwentyOneMember
 
Number of options exercisable 75,000us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThirteenPointTwentyOneMember
 
Options exercisable, weighted average remaining life 3 years  
Options exercisable, weighted average exercise price 13.21us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThirteenPointTwentyOneMember
 
$13.50
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 13.50noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThirteenPointFiftyMember
 
Number of options outstanding 76,140us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThirteenPointFiftyMember
 
Options outstanding, weighted average remaining life 2 years 11 months  
Options outstanding, weighted average exercise price 13.50us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThirteenPointFiftyMember
 
Number of options exercisable 76,140us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThirteenPointFiftyMember
 
Options exercisable, weighted average remaining life 2 years 11 months  
Options exercisable, weighted average exercise price 13.50us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_ThirteenPointFiftyMember
 
$16.46
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 16.46noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixteenPointFortySixMember
 
Number of options outstanding 50,000us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixteenPointFortySixMember
 
Options outstanding, weighted average remaining life 3 years 3 months  
Options outstanding, weighted average exercise price 16.46us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixteenPointFortySixMember
 
Number of options exercisable 50,000us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixteenPointFortySixMember
 
Options exercisable, weighted average remaining life 3 years 3 months  
Options exercisable, weighted average exercise price 16.46us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixteenPointFortySixMember
 
$16.75
   
Share-based Compensation, Shares Authorized under Stock Option Plans, Exercise Price Range [Line Items]    
Exercise price (CAD per share) 16.75noa_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePrice
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixteenPointSeventyFiveMember
 
Number of options outstanding 27,760us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixteenPointSeventyFiveMember
 
Options outstanding, weighted average remaining life 1 year 8 months  
Options outstanding, weighted average exercise price 16.75us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixteenPointSeventyFiveMember
 
Number of options exercisable 27,760us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixteenPointSeventyFiveMember
 
Options exercisable, weighted average remaining life 1 year 8 months  
Options exercisable, weighted average exercise price 16.75us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
/ us-gaap_PlanNameAxis
= noa_ShareOptionPlanMember
/ us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis
= noa_SixteenPointSeventyFiveMember