//---------------------------------------------------------------------------------------------------------
//	DHTML JavaScript (ver 3.3)
//---------------------------------------------------------------------------------------------------------

//*******************************************************************************************************
//	Menu positioning stuff from selectedit js
//*******************************************************************************************************
//---------------------------------------------------------------------------------------------------------
//	Browser detection stuff
//  PHP Layers Menu 3.1.1 (C) 2001-2003 Marco Pratesi (marco at telug dot it)
//---------------------------------------------------------------------------------------------------------

DOM = (document.getElementById) ? 1 : 0;
NS4 = (document.layers) ? 1 : 0;
// We need to explicitly detect Konqueror
// because Konqueror 3 sets IE = 1 ... AAAAAAAAAARGHHH!!!
Konqueror = (navigator.userAgent.indexOf("Konqueror") > -1) ? 1 : 0;
// We need to detect Konqueror 2.2 as it does not handle the window.onresize event
Konqueror22 = (navigator.userAgent.indexOf("Konqueror 2.2") > -1 || navigator.userAgent.indexOf("Konqueror/2.2") > -1) ? 1 : 0;
Opera = (navigator.userAgent.indexOf("Opera") > -1) ? 1 : 0;
Opera5 = (navigator.userAgent.indexOf("Opera 5") > -1 || navigator.userAgent.indexOf("Opera/5") > -1) ? 1 : 0;
Opera6 = (navigator.userAgent.indexOf("Opera 6") > -1 || navigator.userAgent.indexOf("Opera/6") > -1) ? 1 : 0;
Opera56 = Opera5 || Opera6;
IE = (navigator.userAgent.indexOf("MSIE") > -1) ? 1 : 0;
IE = IE && !Opera;
IE5 = IE && DOM;
IE4 = (document.all) ? 1 : 0;
IE4 = IE4 && IE && !DOM;


//*******************************************************************************************************
//	uber menu functions
//*******************************************************************************************************
//-------------------------------------------------------------------------------------------------------
//	Show/ Hide menus
//-------------------------------------------------------------------------------------------------------
function show(group,item,imgId,imgBase,topnavid)
{
	if( !document.getElementById )
	{
		return;
	}

	menuCount	= eval("m_" + group);
	
	mainMenu	= document.getElementById("m" + group + "0");
	subMenu		= document.getElementById("m" + group + item);

	//	Does object exist?
	if( !subMenu )
	{
		//	No, don't process
		return false;
	}
	
	if( imgId != 'NULL' )
	{
		imgObj	= document.getElementById( imgId );
		imgObj.setAttribute( 'base', imgBase );
		imgObj.setAttribute( 'src', imgBase );
	}
	
	mainMenu.style.visibility	= "visible";
	
	//	Position the menu based on the top nav'd position
	if ( topnavid )
	{
		//	Menus right
		if( menu_positioning == 1 )
		{
			subMenu.style.left = ( getOffsetLeft( topnavid ) + getOffsetWidth( topnavid )) + menubar_offset_left +  'px';
			subMenu.style.top  = getOffsetTop( topnavid ) + menubar_offset_top + 'px';
		}
		//	Menus below (default)
		else
		{
			subMenu.style.left = getOffsetLeft( topnavid ) + menubar_offset_left +  'px';
			subMenu.style.top  = ( getOffsetTop( topnavid ) + getOffsetHeight( topnavid )) + menubar_offset_top + 'px';
		}
	}

	if ((mainMenu != subMenu) && (item != 0))
	{
		subMenu.style.visibility	= "visible";
		for (i = 1; i <= menuCount; i++)
		{
			if (i != item)
			{
				document.getElementById("m" + group + i).style.visibility	= "hidden";
			}
		}
	}
}

//-------------------------------------------------------------------------------------------------------
//	Hide menu
//-------------------------------------------------------------------------------------------------------
function hide(group,item,imgId,imgBase)
{
	if( !document.getElementById )
	{
		return;
	}

	menuCount	= eval("m_" + group);

	//	Does object exist?
	if( !document.getElementById( "m" + group + menuCount ))
	{
		//	No, don't process
		return false;
	}
	
	if( imgId != 'NULL' )
	{
		imgObj	= document.getElementById( imgId );
		imgObj.setAttribute( 'base', imgBase );
		imgObj.setAttribute( 'src', imgBase );
	}
	
	if (item == 0)
	{
		startFrom	= 0;
	}
	else
	{
		startFrom	= 1;
	}
	for (i = startFrom; i <= menuCount; i++)
	{
		document.getElementById("m" + group + i).style.visibility	= "hidden";
	}
}

//-------------------------------------------------------------------------------------------------------
//	Image swap
//-------------------------------------------------------------------------------------------------------
function swapImg(id,img)
{
	if( document.getElementById)
	{
		obj	= document.getElementById(id);
		obj.setAttribute( 'src', img );
	}
}

//-------------------------------------------------------------------------------------------------------
//	Client_text Selector
//-------------------------------------------------------------------------------------------------------
//	track what Client_text is highlighted in the sponsor a Client_text selector
currentClient_text	= 0;

function showClient_text(what)
{
	Client_textId			= "Client_text" + what;
	
	if(document.getElementById)
	{
		if ( !document.getElementById(Client_textId) )
		{
			return;
		}

		document.getElementById(Client_textId).style.visibility	= "visible";
		if (currentClient_text != what)
		{
			previousClient_textId		= "Client_text" + currentClient_text;
			document.getElementById(previousClient_textId).style.visibility	= "hidden";
		}
	}

	currentClient_text	= what;
}

//-------------------------------------------------------------------------------------------------------
//	Client_image Selector
//-------------------------------------------------------------------------------------------------------
//	track what Client_image is highlighted in the sponsor a Client_image selector
currentClient_image	= 0;

function showClient_image(what)
{
	Client_imageId			= "Client_image" + what;
	
	if(document.getElementById)
	{
		if ( !document.getElementById(Client_imageId) )
		{
			return;
		}

		document.getElementById(Client_imageId).style.visibility	= "visible";
		if (currentClient_image != what)
		{
			previousClient_imageId		= "Client_image" + currentClient_image;
			document.getElementById(previousClient_imageId).style.visibility	= "hidden";
		}
	}

	currentClient_image	= what;
}

//-------------------------------------------------------------------------------------------------------
//	Redirect
//-------------------------------------------------------------------------------------------------------
function redirectTo( nav )
{
	//	Selected a url?
	dropdown	= nav.options;
	value		= dropdown[dropdown.selectedIndex].value;

	if ( value )
	{
		window.location.href = value;	
	}
}

//-------------------------------------------------------------------------------------------------------
//	Gallery functionality
//-------------------------------------------------------------------------------------------------------
function gallerySwap(id)
{
	detailsImage	= document.getElementById('detailsgraphic');
	detailsImage.setAttribute( 'src', gallery[id] );
	
	textElement		= document.getElementById('detailstitle');
	textElement.innerHTML	= gallerytitle[id];
	
	textElement		= document.getElementById('detailstext');
	textElement.innerHTML	= gallerytext[id];
}

//*********************************************************************************************************
//	Positioning Tools
//*********************************************************************************************************
var positionShown  = false;

//-------------------------------------------------------------------------------------------------------
//	Turn position reporting On/Off
//-------------------------------------------------------------------------------------------------------
function togglePositionReporting()
{
	//	What ctrl key combination was hit
	if ( event.ctrlKey && (event.keyCode == 71) )
	{
		if (!document.getElementById('grid') || !document.getElementById('poslabel'))
		{
			return;
		}
		
		//	Get the tool objects
		gridObj  = document.getElementById('grid');
		labelObj = document.getElementById('poslabel');
		
		//	Turn the monitoring off
		if (positionShown)
		{
			//	Hide the grid
			gridObj.style.display = 'none';
			
			//	Show the position label
			labelObj.style.display = 'none';
			
			//	Stop monitoring
			document.onmousemove = '';
		}

		//	Turn the monitoring on
		else
		{
			//	Show the label
			labelObj.style.display = 'block';
			
			//	Show the grid
			gridObj.style.display	= 'block';
			gridObj.style.height	= document.body.clientHeight + 'px';

			//	Start monitoring
			document.onmousemove = showMousePosition;
		}

		//	Reset the state
		positionShown = positionShown ? false : true;
	}
}

//-------------------------------------------------------------------------------------------------------
//	Show the mouse position
//-------------------------------------------------------------------------------------------------------
function showMousePosition()
{
	//	Get the label
	labelObj = document.getElementById('poslabel');
	
	//	Get the scroll position
	if (document.compatMode && document.compatMode != "BackCompat")
	{
		scroll_left = document.documentElement.scrollLeft;
		scroll_top  = document.documentElement.scrollTop;
	}
	else
	{
		scroll_left = document.body.scrollLeft;
		scroll_top  = document.body.scrollTop;
	}

	//	Get the mouse position
	xMousePos	 = window.event.x + scroll_left - 2;
	yMousePos	 = window.event.y + scroll_top  - 3;
	xMousePosMax = document.body.clientWidth +  scroll_left;
	yMousePosMax = document.body.clientHeight + scroll_top;

	//	Reposition the label in the correct position
	labelObj.style.top  = yMousePos + 5;
	labelObj.style.left = xMousePos + 15;
	
	//	Update the label
	labelObj.innerText = xMousePos + ", " + yMousePos;
}





//*******************************************************************************************************
//	Menu positioning stuff from selectedit js
//*******************************************************************************************************

function getOffsetLeft(layer) {
	var value = 0;
	if (DOM) {	// Mozilla, Konqueror >= 2.2, Opera >= 5, IE
		object = document.getElementById(layer);
		value = object.offsetLeft;
//alert (object.tagName + " --- " + object.offsetLeft);
		while (object.tagName != "BODY" && object.offsetParent) {
			object = object.offsetParent;
//alert (object.tagName + " --- " + object.offsetLeft);
			value += object.offsetLeft;
		}
	} else if (NS4) {
		value = document.layers[layer].pageX;
	} else {	// IE4 IS SIMPLY A BASTARD !!!
		if (document.all["IE4" + layer]) {
			layer = "IE4" + layer;
		}
		object = document.all[layer];
		value = object.offsetLeft;
		while (object.tagName != "BODY") {
			object = object.offsetParent;
			value += object.offsetLeft;
		}
	}
	return (value);
}

function setTop(layer,y) {
//layerTop[layer] = y;
	if (DOM && !Opera5) {
		document.getElementById(layer).style.top = y + "px";
	} else if (Opera5) {
		document.getElementById(layer).style.top = y;
	} else if (NS4) {
		document.layers[layer].top = y;
	} else {
		document.all[layer].style.pixelTop = y;
	}
}

function getOffsetTop(layer) {
// IE 5.5 and 6.0 behaviour with this function is really strange:
// in some cases, they return a really too large value...
// ... after all, IE is buggy, nothing new
	var value = 0;
	if (DOM) {
		object = document.getElementById(layer);
		value = object.offsetTop;
		while (object.tagName != "BODY" && object.offsetParent) {
			object = object.offsetParent;
			value += object.offsetTop;
		}
	} else if (NS4) {
		value = document.layers[layer].pageY;
	} else {	// IE4 IS SIMPLY A BASTARD !!!
		if (document.all["IE4" + layer]) {
			layer = "IE4" + layer;
		}
		object = document.all[layer];
		value = object.offsetTop;
		while (object.tagName != "BODY") {
			object = object.offsetParent;
			value += object.offsetTop;
		}
	}
	return (value);
}

function setWidth(layer,w) {
	if (DOM) {
		document.getElementById(layer).style.width = w;
	} else if (NS4) {
//		document.layers[layer].width = w;
	} else {
		document.all[layer].style.pixelWidth = w;
	}
}

function getOffsetWidth(layer) {
	var value = 0;
	if (DOM && !Opera56) {
		value = document.getElementById(layer).offsetWidth;
	} else if (NS4) {
		value = document.layers[layer].document.width;
	} else if (Opera56) {
		value = document.getElementById(layer).style.pixelWidth;
	} else {	// IE4 IS SIMPLY A BASTARD !!!
		if (document.all["IE4" + layer]) {
			layer = "IE4" + layer;
		}
		value = document.all[layer].offsetWidth;
	}
	return (value);
}

function setHeight(layer,h) {	// unused, not tested
	if (DOM) {
		document.getElementById(layer).style.height = h;
	} else if (NS4) {
//		document.layers[layer].height = h;
	} else {
		document.all[layer].style.pixelHeight = h;
	}
}

function getOffsetHeight(layer) {
	var value = 0;
	if (DOM && !Opera56) {
		value = document.getElementById(layer).offsetHeight;
	} else if (NS4) {
		value = document.layers[layer].document.height;
	} else if (Opera56) {
		value = document.getElementById(layer).style.pixelHeight;
	} else {	// IE4 IS SIMPLY A BASTARD !!!
		if (document.all["IE4" + layer]) {
			layer = "IE4" + layer;
		}
		value = document.all[layer].offsetHeight;
	}
	return (value);
}

function getWindowWidth() {
	var value = 0;
	if ((DOM && !IE) || NS4 || Konqueror || Opera) {
		value = top.innerWidth;
//	} else if (NS4) {
//		value = document.width;
	} else {	// IE
		if (document.documentElement && document.documentElement.clientWidth) {
			value = document.documentElement.clientWidth;
		} else if (document.body) {
			value = document.body.clientWidth;
		}
	}
	if (isNaN(value)) {
		value = top.innerWidth;
	}
	return (value);
}

function getWindowXOffset() {
	var value = 0;
	if ((DOM && !IE) || NS4 || Konqueror || Opera) {
		value = window.pageXOffset;
	} else {	// IE
		if (document.documentElement && document.documentElement.scrollLeft) {
			value = document.documentElement.scrollLeft;
		} else if (document.body) {
			value = document.body.scrollLeft;
		}
	}
	return (value);
}

function getWindowHeight() {
	var value = 0;
	if ((DOM && !IE) || NS4 || Konqueror || Opera) {
		value = top.innerHeight;
	} else {	// IE
		if (document.documentElement && document.documentElement.clientHeight) {
			value = document.documentElement.clientHeight;
		} else if (document.body) {
			value = document.body.clientHeight;
		}
	}
	if (isNaN(value)) {
		value = top.innerHeight;
	}
	return (value);
}

function getWindowYOffset() {
	var value = 0;
	if ((DOM && !IE) || NS4 || Konqueror || Opera) {
		value = window.pageYOffset;
	} else {	// IE
		if (document.documentElement && document.documentElement.scrollTop) {
			value = document.documentElement.scrollTop;
		} else if (document.body) {
			value = document.body.scrollTop;
		}
	}
	return (value);
}

//*********************************************************************************************************
//	Function: contentDetails()
//
//*********************************************************************************************************
function showFullImage( id, width )
{
	sizeX = width + 16;
	sizeY = 600;
	
	//	Center the window
	leftpos	= (screen.width)  ? (screen.width-sizeX)/2 : 100;
	toppos	= (screen.height) ? (screen.height-sizeY)/2 : 100;
	
	url     = '/collections/full.php/id/' + id;
	target  = 'full' + id;

	//	Open the window
	fullWin				= window.open(url,target,"menubar=0,statusbar=0,scrollbars=1,toolbar=0,location=0,width=" + sizeX + ",height=" + sizeY + ",left=" + leftpos + ",top=" + toppos + ",resizable=1" );
	fullWin.focus();
}