function createMediaObject ($pagename, $fname, $attribs=false) {
		if (trim($fname) == '')
			return false; 

		$type = MediaObjectFactory::type($fname);
		$ext = strtolower(file_extension($fname));
		// special case: RealAudio/-Video
		switch ($ext) {
			case 'smi' :
			case 'smil':
			case 'rm':
				if ($attribs->attribs['media'] == 'audio')
					return new RealAudioObject($pagename, $fname, $attribs);
				else
					return new RealVideoObject($pagename, $fname, $attribs);
			case 'htm' :
			case 'html':
				return new IFrameObject($pagename, $fname, $attribs);
		}

		switch ($type) {
			case 'image' : return MediaObjectFactory::createImageObject($pagename, $fname, $attribs);
			case 'audio' : return MediaObjectFactory::createAudioObject($pagename, $fname, $attribs);
			case 'video' : return MediaObjectFactory::createVideoObject($pagename, $fname, $attribs);
		}
		// try to create a ScriptObject
		if ($so = ScriptObjectFactory::createScriptObjectFromFilename($pagename, $fname, $attribs))
			return $so;

		if (is_object($attribs)) {
			$attr = $attribs->getAttribs();
			if (isset($attr['url']))
				return new IFrameObject($pagename, $fname, $attribs);
		}

		$co = new CodeObject($pagename, $fname, $attribs);
		return $co->isBinary() ? false : $co;
	}