function initWikiMedia(el)
{
	var re, idx, media_id;
	if (re = el.id.match(/media_(\d+)_([a-z0-9]+)/)) {
		idx = re[1];
		media_id=re[2]
		if ($('media_proxy_' + idx + '_' + media_id)) {
			getMediaData(media_id, idx);
		}
	}
	
}

function getMediaData(media_id, idx)
{
	if (media_cache[media_id]) {
		return;
		activatePlugIn(idx, media.media_id);
	}
	
	var url = '/shared/mediadb/getMediaDetail?media_id=' + media_id + '&wiki_num=' + idx;
	new Ajax.Request(url, {onSuccess: parseMediaData});
	
}

function parseMediaData(req)
{
    var xml = req.responseXML;
	var xml_media = xml.getElementsByTagName('media');
	        
	for (var i=0; i<xml_media.length; i++) {
		var media = processXMLNode(xml_media[i]);
		media_cache[media.media_id] = media;
		activatePlugIn(media.wiki_num, media.media_id);
	}
}

function activatePlugIn(idx, media_id)
{
	if (!$('media_' + idx + '_' + media_id)) {
		return false;
	}

	var div_id = 'media_' + idx + '_' + media_id;
	var base_url = '/shared/media/';

			
	var media = media_cache[media_id];
		
	var divs = [ $('media_' + idx + '_' + media_id), $('media_proxy_' + idx + '_' + media_id) ];
	var FO = false;
	var re;

	for (var i=0; i<divs.length; i++) {
		if (divs[i].hasClassName('media')) {
			if (re = divs[i].className.match(/img_wiki(\d+)/)) {
				image_gallery_width = image_gallery_height = re[1];
			} 
			
			var box = constrainBox(media.media_data.media_width, media.media_data.media_height, image_gallery_width, image_gallery_height);

			var FO =  { 
				movie:"/shared/mediaplayer.swf",
				width:box.width,
				height:box.height,
				majorversion:"7",
				build:"0",
				scale:"showall",
				wmode:"opaque",
				allowfullscreen:"false",
				flashvars:"overstretch=true"
			};

			switch (media.mediafile_object)
			{
				case 'mediadb_swffile':
					FO.movie = base_url + media_id + "/orig.swf";
					FO.flashvars = "";
					break;
				case 'mediadb_videofile':
					FO.movie="/shared/mediaplayer.swf";
					FO.flashvars += "&file=" + base_url + media_id + "/video_h264/detail.m4v";
					break;
				case 'mediadb_audiofile':
					FO.movie="/shared/mp3player.swf";
					FO.flashvars += "&file=" + base_url + media_id + "/origmp3/detail.mp3";
					break;

				case 'mediadb_pdffile':
					FO = false;
					divs[i].hide();
					break;

				default:
					FO = false;
					divs[i].hide();
			}

			
			if (FO) {
				divs[i].show();
				divs[i].innerHTML='';
			}

		}
		
		if (divs[i].hasClassName('media_proxy')) {
			switch (media.mediafile_object)
			{
				case 'mediadb_swffile':
				case 'mediadb_videofile':
				case 'mediadb_audiofile':
					divs[i].hide();
					break;

				case 'mediadb_pdffile':
					divs[i].show();
					break;

				default:
					divs[i].hide();
					break;
			}
			
			var imgs = divs[i].getElementsByTagName('img');
			if (imgs[0]) {
				var proxy_url = imgs[0].src;
			}
			break;
		}
		
	}

	if (FO) {
		if (proxy_url) {
			FO.flashvars+='&image=' + proxy_url
		}
		UFO.create(	FO, div_id);
	}

}

function constrainBox(width, height, boxWidth, boxHeight)
{
	width = parseInt(width);
	if (isNaN(width)) width = 0;
	height = parseInt(height);
	if (isNaN(height)) height = 0;
	boxWidth = parseInt(boxWidth);
	if (isNaN(boxWidth)) boxWidth = 0;
	boxHeight = parseInt(boxHeight);
	if (isNaN(boxHeight)) boxHeight = 0;
	
	var ret = { width: boxWidth, height: boxHeight };
	if (height<1 || width<1 || boxWidth<1 || boxHeight<1) return ret;

	var aspect = width / height;
	var boxAspect = boxWidth / boxHeight;
	
	if (aspect>=boxAspect) {
		ret.height = Math.floor(ret.width / aspect);
	} else {
		ret.width = Math.floor(ret.height * aspect);
	}

	return ret;
}

function initWikiContent()
{
	$$('.media').each(initWikiMedia);
}

var media_cache = [];

DAAP.require('/shared/scripts/ufo.js');
DAAP.onDOMReady(initWikiContent);
