 | us-gaap:DomesticCountryMember | parent-child | http://fasb.org/us-gaap/role/disclosure/IncomeTaxes |
 | us-gaap:ForeignCountryMember | parent-child | http://fasb.org/us-gaap/role/disclosure/IncomeTaxes |
 | us-gaap:StateAndLocalJurisdictionMember | parent-child | http://fasb.org/us-gaap/role/disclosure/IncomeTaxes |
 | us-gaap:DomesticCountryMember | domain-member | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxContingencyTable |
 | us-gaap:ForeignCountryMember | domain-member | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxContingencyTable |
 | us-gaap:StateAndLocalJurisdictionMember | domain-member | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxContingencyTable |
 | us-gaap:DomesticCountryMember | domain-member | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxExaminationTable |
 | us-gaap:ForeignCountryMember | domain-member | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxExaminationTable |
 | us-gaap:StateAndLocalJurisdictionMember | domain-member | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxExaminationTable |
 | us-gaap:DomesticCountryMember | domain-member | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxHolidayTable |
 | us-gaap:ForeignCountryMember | domain-member | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxHolidayTable |
 | us-gaap:StateAndLocalJurisdictionMember | domain-member | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxHolidayTable |
 | us-gaap:DomesticCountryMember | domain-member | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesOperatingLossCarryforwardsTable |
 | us-gaap:ForeignCountryMember | domain-member | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesOperatingLossCarryforwardsTable |
 | us-gaap:StateAndLocalJurisdictionMember | domain-member | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesOperatingLossCarryforwardsTable |