public static function attribute_equal( $value1, $value2, $type1, $type2, &$namespaces, &$types = null )
	{
		$qname1 = qname( $value1, $namespaces );
		$qname2 = qname( $value2, $namespaces );

		if ( ! is_null( $qname1 ) && ! is_null( $qname1 ) )
		{
			// The qnames should be equivalent
			if ( ! $qname1->equals( $qname2 ) ) return false;

			$value1 = $qname1->localName;
			$value2 = $qname1->localName;
		}
		else if ( is_null( $qname1 ) || is_null( $qname1 ) )
		{
			return false;
		}

		return XBRL_Equality::xequal( $value1, $value2, $type1, $type2, $types );
	}