/*
	Arrays, all non-zero in length, each containing 0 or more definition arrays

	metadata_types:		[ [ id, label, is_dublin_core ], ... ]
	metadata_items:		[ [ id, metadata_type_id, value ], ... ]
	media_types:		[ [ id, label, tag ], ... ]
	media_items:		[ [ id, media_type_id, tag ], ... ]
*/

function get_metadata_type_id_by_label(label)
{
	var i;

	for(i=0;i<metadata_types.length;i++)
	{
		m = metadata_types[i];
		if( m[1] == label )
		{
			return m[0];
		}
	}

	return 0;
}

function get_metadata_type_label_by_id(id)
{
	var i;

	for(i=0;i<metadata_types.length;i++)
	{
		m = metadata_types[i];
		if( m[0] == id )
		{
			return m[1];
		}
	}

	return 0;
}

function get_metadata_by_type_id(type_id)
{
	var i;

	for(i=0;i<metadata_items.length;i++)
	{
		m = metadata_items[i];

		if( m[1] == type_id )
		{
			return m[2];
		}
	}

	return "";
}

function get_metadata_by_label(label)
{
	return get_metadata_by_type_id( get_metadata_type_id_by_label(label) );
}

function get_media_type_id_by_tag(tag)
{
	var i;

	for(i=0;i<media_types.length;i++)
	{
		m = media_types[i];

		if( m[2] == tag )
		{
			return m[0];
		}
	}

	return -1;
}

function get_media_by_type_id(type_id)
{
	var ret;
	var i;
	var j;

	ret = [];
	j = 0;
	for(i=0;i<media_items.length;i++)
	{
		m = media_items[i];

		if( m[1] == type_id )
		{
			ret[j] = i;
			j++;
		}
	}

	return ret;
}

function populate_details(div)
{
	var h;
	var p;
	var small;

	h = document.createElement("h4");
	h.innerHTML = "Description";
	div.appendChild(h);

	p = document.createElement("p");
	p.innerHTML = get_metadata_by_label("Description");
	small = document.createElement("small");
	small.appendChild(p);
	div.appendChild(small);
}

function populate_interactive_views(div)
{
	var h;
	var table;
	var tbody;
	var tr;
	var td;
	var img;
	var a;
	var i;
	var type_id_qt_vr;
	var qt_vr_indexes;
	var qt_vr_index;
	var type_id_zoomify;
	var zoomify_indexes;
	var zoomify_index;

	h = document.createElement("h4");
	h.innerHTML = "Interactive Views";
	div.appendChild(h);

	// VR
	type_id_qt_vr = get_media_type_id_by_tag("qt_vr");
	qt_vr_indexes = get_media_by_type_id(type_id_qt_vr);
	for(i=0;i<qt_vr_indexes.length;i++)
	{
		qt_vr_index = qt_vr_indexes[i];

		table = document.createElement("table");
		tbody = document.createElement("tbody");
		tr = document.createElement("tr");
		td = document.createElement("td");
		img = document.createElement("img");
		img.src = "icon_qt_vr.jpg";
		img.alt = "[vr]";
		td.appendChild(img);
		tr.appendChild(td);
		td = document.createElement("td");
		a = document.createElement("a");
		a.href = "javascript:display_qt_vr("+qt_vr_index+")";
		a.appendChild(document.createTextNode("QuickTime VR"));
		td.appendChild(a);
		tr.appendChild(td);
		tbody.appendChild(tr);
		table.appendChild(tbody);
		div.appendChild(table);
	}

	// Zoomify
	type_id_zoomify = get_media_type_id_by_tag("zoomify_dir");
	zoomify_indexes = get_media_by_type_id(type_id_zoomify);
	for(i=0;i<zoomify_indexes.length;i++)
	{
		zoomify_index = zoomify_indexes[i];

		table = document.createElement("table");
		tbody = document.createElement("tbody");
		tr = document.createElement("tr");
		td = document.createElement("td");
		img = document.createElement("img");
		img.src = "icon_zoomify.jpg";
		img.alt = "[zoom]";
		td.appendChild(img);
		tr.appendChild(td);
		td = document.createElement("td");
		a = document.createElement("a");
		a.href = "javascript:display_zoomify("+zoomify_index+")";
		a.innerHTML = "Zoomify";
		td.appendChild(a);
		tr.appendChild(td);
		tbody.appendChild(tr);
		table.appendChild(tbody);
		div.appendChild(table);
	}
}

function populate_stills(div)
{
	var h;
	var img;
	var a;
	var i;
	var type_id_still;
	var still_indexes;

	h = document.createElement("h4");
	h.innerHTML = "Photographs";
	div.appendChild(h);

	// Stills
	type_id_still = get_media_type_id_by_tag("still");
	still_indexes = get_media_by_type_id(type_id_still);
	for(i=0;i<still_indexes.length;i++)
	{
		still_index = still_indexes[i];

		img = document.createElement("img");
		img.src = "resize_jpeg?id="+media_items[still_index][0]+"&mx=50&my=50";
		img.alt = "[still]";
		img.style.border = "1px solid black";
		a = document.createElement("a");
		a.href = "javascript:display_still("+still_index+")";
		a.appendChild(img);
		div.appendChild(a);
	}
}

function populate_right_nav()
{
	var right_nav;		// DIV

	right_nav = document.getElementById("right_nav");

	populate_details( right_nav );
	populate_interactive_views( right_nav );
	populate_stills( right_nav );
}

function setup_view_artifact_page()
{
	populate_right_nav();
	populate_metadata_table();

	/* try zoomify first */

	type_id = get_media_type_id_by_tag("zoomify_dir");
	indexes = get_media_by_type_id(type_id);
	if(indexes.length)
	{
		display_zoomify( indexes[0] );
		return;
	}

	/* no zoomify; try quicktime */

	type_id = get_media_type_id_by_tag("qt_vr");
	indexes = get_media_by_type_id(type_id);
	if(indexes.length)
	{
		display_qt_vr( indexes[0] );
		return;
	}

	/* if all else fails then try a photograph */

	type_id = get_media_type_id_by_tag("still");
	indexes = get_media_by_type_id(type_id);
	if(indexes.length)
	{
		display_still( indexes[0] );
		return;
	}
}

function format6(n)
{
	if( n<1 )  return "000000";
	if( n<10 )  return "00000"+n;
	if( n<100 )  return "0000"+n;
	if( n<1000 )  return "000"+n;
	if( n<10000 )  return "00"+n;
	if( n<100000 )  return "0"+n;

	return "??????";
}

function display_qt_vr(index)
{
	var media_div = document.getElementById("media");
	var media_item = media_items[index];
	var innerHTML;

	media_div.innerHTML = "";

	url = media_item[2];

	// This is awful but it's the only way to get it to work in Internet Explorer 6.
	// DOM calls won't work.
	innerHTML = "<object classid=\"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B\" codebase=\"http://www.apple.com/qtactivex/qtplugin.cab\" width=\"600\" height=\"400\" id=\"qt_vr_object\"><param name=\"src\" value=\""+url+"\" /><param name=\"autoplay\" value=\"true\" /><param name=\"controller\" value=\"true\" /><embed src=\""+url+"\" width=\"600\" height=\"400\" autoplay=\"true\" loop=\"true\" controller=\"true\" playeveryframe=\"false\" pluginspage=\"http://www.apple.com/quicktime/download\" /></object>";
	media_div.innerHTML = innerHTML;
}

function display_zoomify(index)
{
	var media_div = document.getElementById("media");
	var media_item = media_items[index];
	var _object;
	var param;
	var embed;
	var innerHTML;

	media_div.innerHTML = "";

	url = "zoomifyImagePath=media/"+format6(artifact_id)+"/zoomify";

	// This is awful but it's the only way to get it to work in Internet Explorer 6.
	innerHTML = "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0\" width=\"600\" height=\"480\" id=\"zoomify_object\"><param name=\"src\" value=\"zoomifyViewerv2.swf\" /><param name=\"FlashVars\" value=\""+url+"\" /><param name=\"menu\" value=\"false\" /><embed src=\"zoomifyViewerv2.swf\" width=\"600\" height=\"400\" name=\"zoomify_object_embed\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" FlashVars=\""+url+"\" /></object>";
	media_div.innerHTML = innerHTML;
}

function display_still(index)
{
	var media_div = document.getElementById("media");
	var media_item = media_items[index];
	var img;

	media_div.innerHTML = "";
	img = document.createElement("img");
	img.src = "resize_jpeg?id="+media_item[0]+"&mx=600&my=400";
	img.style.border = "1px solid #cccccc";
	media_div.appendChild(img);
}

function populate_metadata_table()
{
	var i;
	var m;
	var t;
	var metadata;
	var a;
	var table;
	var tbody;
	var tr;
	var td;
	var row_colors = [ "#e4e4ff", "#ddddff" ];

	metadata = document.getElementById("metadata");
	metadata.innerHTML = "";

	a = document.createElement("a");
	a.id = "expand_metadata_table_link";
	a.href = "javascript:expand_metadata_table()";
	a.style.fontSize = "8pt";
	a.innerHTML = "Show Metadata";
	metadata.appendChild( a );
	metadata.appendChild( document.createElement("br") );

	table = document.createElement("table");
	table.id = "metadata_table";
	table.setAttribute( "border", "0" );
	table.setAttribute( "cellspacing", "0" );
	table.setAttribute( "cellpadding", "4" );
	table.style.display = "none";
	tbody = document.createElement("tbody");

	for(i=0;i<metadata_items.length;i++)
	{
		tr = document.createElement("tr");
		tr.setAttribute("valign","top");
		tr.style.fontSize = "8pt";
		tr.style.backgroundColor = row_colors[ i % row_colors.length ];

		m = metadata_items[i];
		t = get_metadata_type_label_by_id( m[1] );
		v = m[2];

		td = document.createElement("td");
		td.innerHTML = t;
		td.style.border = "1px solid black";
		tr.appendChild(td);

		td = document.createElement("td");
		td.innerHTML = v;
		td.style.border = "1px solid black";
		td.style.borderLeft = "0";
		td.style.borderCollapse = "collapse";
		tr.appendChild(td);

		tbody.appendChild(tr);
	}

	table.appendChild(tbody);
	metadata.appendChild(table);
}

function expand_metadata_table()
{
	var metadata_table;
	var a;
	
	metadata_table = document.getElementById("metadata_table");
	metadata_table.style.display = "inline";

	a = document.getElementById("expand_metadata_table_link");
	a.style.display = "none";
}
