/**********************************************************************************************
 * webviewer.js                                                                               *
 *                                                                                            *
 * Function library for Tekla WebViewer                                                       *
 * Uses dhtmlAPI library                                                                      * 
 **********************************************************************************************/


function WVSetStatus(message)
{
	top.footer.document.all("status_div").innerHTML = message;
	
	window.status = "";
}


function WVUpdateLocationBox()
{
	locationObj = top.footer.locations;
	wvObj = top.main.WebViewer;

	/* First index is description text
	for(i = 1; i < locationObj.length; i++)
		locationObj.options[i].remove()*/	
	
	for(i = 0; i < wvObj.GetNamedLocationCount(); i++)
		locationObj.options[i + 1] = new Option(wvObj.GetNamedLocationByIndex(i))
}

function WVAddLocation(id)
{
	locationObj = top.footer.locations;
	wvObj = top.main.WebViewer;

	locationObj.options[locationObj.length] = new Option(wvObj.GetNamedLocationByIndex(wvObj.GetNamedLocationCount() - 1));
	locationObj.selectedIndex = locationObj.length - 1;
	WVChangeLocation();
}

function WVChangeLocation()
{
	locationObj = top.footer.locations;
	wvObj = top.main.WebViewer;

	if (locationObj.selectedIndex > 0)
	{
		/* Notice that every frame has its own instance of prevLocation */
		top.prevLocation = locationObj.selectedIndex; 
		wvObj.SetNamedLocation(locationObj.options[locationObj.selectedIndex].text);
		WVSetStatus("Location " + locationObj.options[top.prevLocation].text + " is now set");
		locationObj.selectedIndex = top.prevLocation;
	}
}


function WVGoHome()
{
	/*locationObj = top.footer.locations;
	wvObj = top.main.WebViewer;
	
	if (top.prevLocation)
	{
		wvObj.SetNamedLocation(locationObj.options[top.prevLocation].text);
		locationObj.selectedIndex = top.prevLocation;
	}
	else	
		wvObj.SetNamedLocation(locationObj.options[1].text);*/

	top.main.WebViewer.moveCameraToHome();
}


/* With next three functions document must have div element called "tooltip" */
function WVShowToolTip(message)
{
	showObj("tooltip");
	printHTML("tooltip", "&nbsp;" + message + "&nbsp;");
	shiftTo("tooltip", getMouseLeft() + 20, getMouseTop() + 5);
	window.status = "";
}


function WVShowToolTipAt(message, x, y)
{
	showObj("tooltip");
	printHTML("tooltip", "&nbsp;" + message + "&nbsp;");
	shiftTo("tooltip", x, y);
	window.status = "";
}


function WVHideToolTip()
{
	hideObj("tooltip");
	window.status = "";
}


var hlLink;

function WVSetLinkHL(linkname)
{
	if (hlLink)
		hlLink.style.color = "#003893";
	
	hlLink = top.footer.document.all(linkname);
	hlLink.style.color = "#FF3333";
}


/****************************************************************************
 * Color setting functions                                                  *
 ****************************************************************************/


function WVSetBackground()
{
	colorsObj = top.contents.backcolors	

	if (colorsObj.selectedIndex == 0)
	{
		WVSetDefaultColors();
		WVSetStatus('Black background set');
	}
	else if (colorsObj.selectedIndex == 1)
	{
		WVSetBlueColors();
		WVSetStatus('Blue background set');
	}
	else if (colorsObj.selectedIndex == 2)
	{
		WVSetLightColors();
		WVSetStatus('White background set');
	}
}


function WVSetDefaultColors()
{
      /* parameters are for WebViewer.setClassColor class, state, r, g, b, a
         normally state = 0, and a = 1.0
         default line colors should be solid-color / 2 instead of white */

	wvObj = top.main.WebViewer
	
	wvObj.setBackgroundColor(0.0, 0.0, 0.0)
	wvObj.setClassColor(SOLIDCOLOR, 1,0, 0.7, 0.7, 0.7,1.0)
	wvObj.setClassColor(LINECOLOR, 1,0, 0.49, 0.49, 0.49,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 2,0, 0.9, 0.0, 0.0,1.0)
	wvObj.setClassColor(LINECOLOR, 2,0, 0.81, 0.0, 0.0,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 3,0, 0.3, 0.9, 0.3,1.0)
	wvObj.setClassColor(LINECOLOR, 3,0, 0.09, 0.81, 0.09,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 4,0, 0.0, 0.3, 0.9,1.0)
	wvObj.setClassColor(LINECOLOR, 4,0, 0.0, 0.09, 0.81,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 5,0, 0.3, 0.9, 0.9,1.0)
	wvObj.setClassColor(LINECOLOR, 5,0, 0.09, 0.81, 0.81,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 6,0, 0.9, 0.9, 0.2,1.0)
	wvObj.setClassColor(LINECOLOR, 6,0, 0.81, 0.81, 0.04,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 7,0, 0.9, 0.0, 0.9,1.0)
	wvObj.setClassColor(LINECOLOR, 7,0, 0.81, 0.0, 0.81,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 8,0, 0.4, 0.4, 0.4,1.0)
	wvObj.setClassColor(LINECOLOR, 8,0, 0.16, 0.16, 0.16,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 9,0, 0.7, 0.2, 0.3,1.0)
	wvObj.setClassColor(LINECOLOR, 9,0, 0.49, 0.04, 0.09,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 10,0, 0.4, 0.7, 0.2,1.0)
	wvObj.setClassColor(LINECOLOR, 10,0, 0.16, 0.49, 0.04,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 11,0, 0.2, 0.6, 0.7,1.0)
	wvObj.setClassColor(LINECOLOR, 11,0, 0.04, 0.36, 0.49,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 12,0, 0.8, 0.4, 0.9,1.0)
	wvObj.setClassColor(LINECOLOR, 12,0, 0.64, 0.16, 0.81,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 13,0, 0.9, 0.4, 0.0,1.0)
	wvObj.setClassColor(LINECOLOR, 13,0, 0.81, 0.16, 0.0,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 14,0, 0.6, 0.3, 0.0,1.0)
	wvObj.setClassColor(LINECOLOR, 14,0, 0.36, 0.09, 0.0,1.0)
}


function WVSetLightColors()
{
      /* parameters are for WebViewer.setClassColor class, state, r, g, b, a
         normally state = 0, and a = 1.0 */

	wvObj = top.main.WebViewer

	wvObj.setBackgroundColor(1.0, 1.0, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 1, 0, 0.7, 0.7, 0.7, 1.0)
	wvObj.setClassColor(LINECOLOR,  1, 0, 0.85, 0.85, 0.85, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 2, 0, 0.9, 0.0, 0.0, 1.0)
	wvObj.setClassColor(LINECOLOR,  2, 0, 0.95, 0.5, 0.5, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 3, 0, 0.3, 0.9, 0.3, 1.0)
	wvObj.setClassColor(LINECOLOR,  3, 0, 0.65, 0.95, 0.65, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 4, 0, 0.0, 0.3, 0.9, 1.0)
	wvObj.setClassColor(LINECOLOR,  4, 0, 0.5, 0.65, 0.95, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 5, 0, 0.3, 0.9, 0.9, 1.0)
	wvObj.setClassColor(LINECOLOR,  5, 0, 0.65, 0.95, 0.95, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 6, 0, 0.9, 0.9, 0.2, 1.0)
	wvObj.setClassColor(LINECOLOR,  6, 0, 0.95, 0.95, 0.6, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 7, 0, 0.9, 0.0, 0.9, 1.0)
	wvObj.setClassColor(LINECOLOR,  7, 0, 0.95, 0.5, 0.95, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 8, 0, 0.4, 0.4, 0.4, 1.0)
	wvObj.setClassColor(LINECOLOR,  8, 0, 0.7, 0.7, 0.7, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 9, 0, 0.7, 0.2, 0.3, 1.0)
	wvObj.setClassColor(LINECOLOR,  9, 0, 0.85, 0.6, 0.65, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 10, 0, 0.4, 0.7, 0.2, 1.0)
	wvObj.setClassColor(LINECOLOR,  10, 0, 0.7, 0.85, 0.6, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 11, 0, 0.2, 0.6, 0.7, 1.0)
	wvObj.setClassColor(LINECOLOR,  11, 0, 0.6, 0.8, 0.85, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 12, 0, 0.8, 0.4, 0.9, 1.0)
	wvObj.setClassColor(LINECOLOR,  12, 0, 0.9, 0.7, 0.95, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 13, 0, 0.9, 0.4, 0.0, 1.0)
	wvObj.setClassColor(LINECOLOR,  13, 0, 0.95, 0.7, 0.5, 1.0)
	wvObj.setClassColor(SOLIDCOLOR, 14, 0, 0.6, 0.3, 0.0, 1.0)
	wvObj.setClassColor(LINECOLOR,  14, 0, 0.8, 0.65, 0.5, 1.0)
}

function WVSetBlueColors() 
{
      /* parameters are for WebViewer.setClassColor class, state, r, g, b, a
         normally state = 0, and a = 1.0
         default line colors should be solid-color / 2 instead of white */

	wvObj = top.main.WebViewer

	wvObj.setBackgroundColor(0.2, 0.2, 0.5)
	wvObj.setClassColor(SOLIDCOLOR, 1,0, 0.7, 0.7, 0.7,1.0)
	wvObj.setClassColor(LINECOLOR, 1,0, 0.45, 0.45, 0.75,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 2,0, 0.9, 0.0, 0.0,1.0)
	wvObj.setClassColor(LINECOLOR, 2,0, 0.55, 0.1, 0.4,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 3,0, 0.3, 0.9, 0.3,1.0)
	wvObj.setClassColor(LINECOLOR, 3,0, 0.25, 0.55, 0.55,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 4,0, 0.0, 0.3, 0.9,1.0)
	wvObj.setClassColor(LINECOLOR, 4,0, 0.1, 0.25, 0.85,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 5,0, 0.3, 0.9, 0.9,1.0)
	wvObj.setClassColor(LINECOLOR, 5,0, 0.25, 0.55, 0.85,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 6,0, 0.9, 0.9, 0.2,1.0)
	wvObj.setClassColor(LINECOLOR, 6,0, 0.55, 0.55, 0.5,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 7,0, 0.9, 0.0, 0.9,1.0)
	wvObj.setClassColor(LINECOLOR, 7,0, 0.55, 0.1, 0.85,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 8,0, 0.4, 0.4, 0.4,1.0)
	wvObj.setClassColor(LINECOLOR, 8,0, 0.3, 0.3, 0.6,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 9,0, 0.7, 0.2, 0.3,1.0)
	wvObj.setClassColor(LINECOLOR, 9,0, 0.45, 0.2, 0.55,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 10,0, 0.4, 0.7, 0.2,1.0)
	wvObj.setClassColor(LINECOLOR, 10,0, 0.3, 0.45, 0.5,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 11,0, 0.2, 0.6, 0.7,1.0)
	wvObj.setClassColor(LINECOLOR, 11,0, 0.2, 0.4, 0.75,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 12,0, 0.8, 0.4, 0.9,1.0)
	wvObj.setClassColor(LINECOLOR, 12,0, 0.5, 0.3, 0.85,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 13,0, 0.9, 0.4, 0.0,1.0)
	wvObj.setClassColor(LINECOLOR, 13,0, 0.55, 0.3, 0.4,1.0)
	wvObj.setClassColor(SOLIDCOLOR, 14,0, 0.6, 0.3, 0.0,1.0)
	wvObj.setClassColor(LINECOLOR, 14,0, 0.4, 0.25, 0.4,1.0)
}

