<?xml version="1.0" encoding="utf-8"?>
<FilingSummary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Version>1.0.0.3</Version>
  <ReportType />
  <MyReports>
    <Report>
      <IsDefault>true</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000010 - Document - Document Information</LongName>
      <ShortName>Document Information</ShortName>
      <XmlFileName>R1.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000020 - Document - Entity Information</LongName>
      <ShortName>Entity Information</ShortName>
      <XmlFileName>R2.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000030 - Statement - Consolidated Balance Sheets</LongName>
      <ShortName>Consolidated Balance Sheets</ShortName>
      <XmlFileName>R3.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000035 - Statement - Consolidated Balance Sheets Parentheticals</LongName>
      <ShortName>Consolidated Balance Sheets Parentheticals</ShortName>
      <XmlFileName>R4.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000040 - Statement - Consolidated Statements of Income</LongName>
      <ShortName>Consolidated Statements of Income</ShortName>
      <XmlFileName>R5.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000045 - Statement - Consolidated Statement of Stockholders' Equity</LongName>
      <ShortName>Consolidated Statement of Stockholders' Equity</ShortName>
      <XmlFileName>R6.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000050 - Statement - Consolidated Statements of Cash Flows</LongName>
      <ShortName>Consolidated Statements of Cash Flows</ShortName>
      <XmlFileName>R7.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000100 - Disclosure - Nature of Business and Significant Accounting Policies</LongName>
      <ShortName>Nature of Business and Significant Accounting Policies</ShortName>
      <XmlFileName>R8.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000110 - Disclosure - Property and Equipment</LongName>
      <ShortName>Property and Equipment</ShortName>
      <XmlFileName>R9.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000120 - Disclosure - Line of Credit</LongName>
      <ShortName>Line of Credit</ShortName>
      <XmlFileName>R10.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000130 - Disclosure - Operating Leases</LongName>
      <ShortName>Operating Leases</ShortName>
      <XmlFileName>R11.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000140 - Disclosure - Income Taxes</LongName>
      <ShortName>Income Taxes</ShortName>
      <XmlFileName>R12.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000150 - Disclosure - Other Employee Benefits</LongName>
      <ShortName>Other Employee Benefits</ShortName>
      <XmlFileName>R13.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000160 - Disclosure - Stockholders' Equity</LongName>
      <ShortName>Stockholders' Equity</ShortName>
      <XmlFileName>R14.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000170 - Disclosure - Warrant and Public Offerings</LongName>
      <ShortName>Warrant and Public Offerings</ShortName>
      <XmlFileName>R15.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000180 - Disclosure - Contingencies</LongName>
      <ShortName>Contingencies</ShortName>
      <XmlFileName>R16.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000190 - Disclosure - Concentration</LongName>
      <ShortName>Concentration</ShortName>
      <XmlFileName>R17.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000200 - Disclosure - Segment Information</LongName>
      <ShortName>Segment Information</ShortName>
      <XmlFileName>R18.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>000210 - Disclosure - Subsequent Events</LongName>
      <ShortName>Subsequent Events</ShortName>
      <XmlFileName>R19.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Sheet</ReportType>
      <LongName>010000 - Disclosure - Financial Statement, Schedule II - Valuation and Qualifying Accounts</LongName>
      <ShortName>Financial Statement, Schedule II - Valuation and Qualifying Accounts</ShortName>
      <XmlFileName>R20.xml</XmlFileName>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <ReportType>Book</ReportType>
      <LongName>All Reports</LongName>
      <ShortName>All Reports</ShortName>
      <XmlFileName />
    </Report>
  </MyReports>
  <EntityCount>1</EntityCount>
  <ContextCount>35</ContextCount>
  <SegmentCount>5</SegmentCount>
  <ScenarioCount>0</ScenarioCount>
  <UnitCount>3</UnitCount>
  <ElementCount>119</ElementCount>
  <FootnotesReported>true</FootnotesReported>
  <TuplesReported>false</TuplesReported>
  <ContextSummary>
    <ContextSummary>
      <ContextName>DEI_20090630</ContextName>
      <ElementCount>1</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_12mos_20071231</ContextName>
      <ElementCount>45</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_12mos_20081231</ContextName>
      <ElementCount>44</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Cur_12mos_20091231_CommonStockMember</ContextName>
      <ElementCount>6</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Cur_12mos_20091231_TreasuryStockMember</ContextName>
      <ElementCount>2</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Cur_20091231</ContextName>
      <ElementCount>32</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_12mos_20071231_RetainedEarningsMember</ContextName>
      <ElementCount>2</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20081231_AdditionalPaidInCapitalMember</ContextName>
      <ElementCount>1</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_12mos_20081231_AdditionalPaidInCapitalMember</ContextName>
      <ElementCount>5</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Cur_20091231_AdditionalPaidInCapitalMember</ContextName>
      <ElementCount>1</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Cur_12mos_20091231_RetainedEarningsMember</ContextName>
      <ElementCount>1</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20061231_CommonStockMember</ContextName>
      <ElementCount>2</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20081231_CommonStockMember</ContextName>
      <ElementCount>2</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Cur_12mos_20091231</ContextName>
      <ElementCount>66</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20071231</ContextName>
      <ElementCount>2</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_12mos_20071231_CommonStockMember</ContextName>
      <ElementCount>7</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_12mos_20071231_CommonClassAMember</ContextName>
      <ElementCount>2</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20061231</ContextName>
      <ElementCount>2</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20071231_CommonStockMember</ContextName>
      <ElementCount>2</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Cur_12mos_20091231_AdditionalPaidInCapitalMember</ContextName>
      <ElementCount>5</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20081231_TreasuryStockMember</ContextName>
      <ElementCount>2</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20081231</ContextName>
      <ElementCount>33</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20071231_AdditionalPaidInCapitalMember</ContextName>
      <ElementCount>1</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20071231_RetainedEarningsMember</ContextName>
      <ElementCount>1</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_12mos_20081231_RetainedEarningsMember</ContextName>
      <ElementCount>1</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_12mos_20071231_AdditionalPaidInCapitalMember</ContextName>
      <ElementCount>5</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>DEI_20100219</ContextName>
      <ElementCount>1</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Cur_20091231_RetainedEarningsMember</ContextName>
      <ElementCount>1</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20061231_CommonClassAMember</ContextName>
      <ElementCount>2</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_12mos_20081231_TreasuryStockMember</ContextName>
      <ElementCount>2</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_12mos_20081231_CommonStockMember</ContextName>
      <ElementCount>4</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20061231_AdditionalPaidInCapitalMember</ContextName>
      <ElementCount>1</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20081231_RetainedEarningsMember</ContextName>
      <ElementCount>1</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Pri_20061231_RetainedEarningsMember</ContextName>
      <ElementCount>1</ElementCount>
    </ContextSummary>
    <ContextSummary>
      <ContextName>Cur_20091231_CommonStockMember</ContextName>
      <ElementCount>2</ElementCount>
    </ContextSummary>
  </ContextSummary>
  <BaseTaxonomies />
  <HasPresentationLinkbase>true</HasPresentationLinkbase>
  <HasCalculationLinkbase>true</HasCalculationLinkbase>
</FilingSummary>
