XML 16 R48.htm IDEA: XBRL DOCUMENT v2.4.1.9
QUARTERLY INFORMATION (Unaudited) (Details) (USD $)
In Thousands, except Per Share data, unless otherwise specified
3 Months Ended 12 Months Ended
Jan. 31, 2015
Oct. 31, 2014
Jul. 31, 2014
Apr. 30, 2014
Jan. 31, 2014
Oct. 31, 2013
Jul. 31, 2013
Apr. 30, 2013
Jan. 31, 2015
Jan. 31, 2014
Jan. 31, 2013
Class of Stock [Line Items]                      
Total revenue $ 79,562us-gaap_SalesRevenueNet $ 74,004us-gaap_SalesRevenueNet $ 73,050us-gaap_SalesRevenueNet $ 68,485us-gaap_SalesRevenueNet $ 73,530us-gaap_SalesRevenueNet $ 65,660us-gaap_SalesRevenueNet $ 65,194us-gaap_SalesRevenueNet $ 61,927us-gaap_SalesRevenueNet $ 295,101us-gaap_SalesRevenueNet $ 266,311us-gaap_SalesRevenueNet $ 252,172us-gaap_SalesRevenueNet
Total costs and expenses 71,828us-gaap_CostsAndExpenses 68,115us-gaap_CostsAndExpenses 70,986us-gaap_CostsAndExpenses 68,187us-gaap_CostsAndExpenses 67,697us-gaap_CostsAndExpenses 61,859us-gaap_CostsAndExpenses 63,704us-gaap_CostsAndExpenses 63,648us-gaap_CostsAndExpenses      
Gross margin 45,653us-gaap_GrossProfit 40,933us-gaap_GrossProfit 39,831us-gaap_GrossProfit 37,054us-gaap_GrossProfit 42,831us-gaap_GrossProfit 36,755us-gaap_GrossProfit 36,417us-gaap_GrossProfit 33,302us-gaap_GrossProfit 163,471us-gaap_GrossProfit 149,305us-gaap_GrossProfit 144,579us-gaap_GrossProfit
Operating (loss) income 7,734us-gaap_OperatingIncomeLoss 5,889us-gaap_OperatingIncomeLoss 2,064us-gaap_OperatingIncomeLoss 298us-gaap_OperatingIncomeLoss 5,833us-gaap_OperatingIncomeLoss 3,801us-gaap_OperatingIncomeLoss 1,490us-gaap_OperatingIncomeLoss (1,721)us-gaap_OperatingIncomeLoss 15,985us-gaap_OperatingIncomeLoss 9,403us-gaap_OperatingIncomeLoss 11,808us-gaap_OperatingIncomeLoss
Net ( loss) income 6,947us-gaap_NetIncomeLoss 5,090us-gaap_NetIncomeLoss 985us-gaap_NetIncomeLoss (76)us-gaap_NetIncomeLoss 4,346us-gaap_NetIncomeLoss 2,049us-gaap_NetIncomeLoss 1,254us-gaap_NetIncomeLoss (1,263)us-gaap_NetIncomeLoss 12,946us-gaap_NetIncomeLoss 6,386us-gaap_NetIncomeLoss 6,639us-gaap_NetIncomeLoss
Common Class A [Member]                      
Class of Stock [Line Items]                      
Net ( loss) income                 10,729us-gaap_NetIncomeLoss
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
5,282us-gaap_NetIncomeLoss
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
5,483us-gaap_NetIncomeLoss
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
Basic net ( loss) income per share (in dollars per share) $ 0.44us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.33us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.06us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ (0.01)us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.29us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.14us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.08us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ (0.08)us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.84us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.42us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.44us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
Diluted net (loss) income per share (in dollars per share) $ 0.42us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.31us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.06us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ (0.01)us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.27us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.13us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.08us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ (0.08)us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.79us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.41us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
$ 0.42us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassAMember
Common Class B [Member]                      
Class of Stock [Line Items]                      
Net ( loss) income                 $ 2,217us-gaap_NetIncomeLoss
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 1,104us-gaap_NetIncomeLoss
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 1,156us-gaap_NetIncomeLoss
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
Basic net ( loss) income per share (in dollars per share) $ 0.37us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.27us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.05us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.24us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.11us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.07us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ (0.07)us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.70us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.35us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.37us-gaap_EarningsPerShareBasic
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
Diluted net (loss) income per share (in dollars per share) $ 0.36us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.27us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.05us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.23us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.11us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.07us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ (0.07)us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.68us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.34us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember
$ 0.35us-gaap_EarningsPerShareDiluted
/ us-gaap_StatementClassOfStockAxis
= us-gaap_CommonClassBMember