public static function convert($json, $return = 'document')
 {
     self::$dom = new DOMDocument('1.0', 'utf-8');
     self::$dom->formatOutput = TRUE;
     // remove callback functions from JSONP
     if (preg_match('/(\\{|\\[).*(\\}|\\])/s', $json, $matches)) {
         $json = $matches[0];
     } else {
         throw new Exception('JSON not formatted correctly');
     }
     $data = json_decode($json);
     $data_element = self::_process($data, self::$dom->createElement('data'));
     self::$dom->appendChild($data_element);
     switch ($return) {
         case 'fragment':
             return self::$dom->saveXML($data_element);
         case 'object':
             return self::$dom;
         default:
             return self::$dom->saveXML();
     }
 }