// Javascript include file to draw captioned picture link objects
// Copyright (c) 2001 Stark Software

function StarkDisplayBox(strControlId, strCaption, strPicUrl, strPicWidth, strLinkUrl, strDescription)
{
	this.m_strControlId = strControlId;
	this.m_strDropShadowClass = "";
	this.m_strCaption = strCaption;
	this.m_strCaptionColour = "#263997";
	this.m_strCaptionImageUrl = "";
	this.m_strCaptionHeight = "";
	this.m_strPicUrl = strPicUrl;
	this.m_strPicWidth = strPicWidth;
	this.m_strLinkUrl = strLinkUrl;
	this.m_strDescription = strDescription;
}

var g_strCaption = "_Caption";	
var g_strImage = "_Image";	
var g_strDropDesc = "_DropDesc";	
var g_strTextContent = "_TextContent";	
var objStarkDisplayBox=StarkDisplayBox.prototype
objStarkDisplayBox.ShowDescription = ShowDescription;
objStarkDisplayBox.HideDescription = HideDescription;
objStarkDisplayBox.SetPosition = SetPosition;
objStarkDisplayBox.WriteContainerToDocument = WriteContainerToDocument;
objStarkDisplayBox.GetCaptionContainer = GetCaptionContainer;
objStarkDisplayBox.GetImageContainer = GetImageContainer;
objStarkDisplayBox.GetTextContentContainer = GetTextContentContainer;
objStarkDisplayBox.SetTextBoxContent = SetTextBoxContent;
objStarkDisplayBox.AppendTextBoxContent = AppendTextBoxContent;
objStarkDisplayBox.DrawPic = DrawPictureLink;
objStarkDisplayBox.DrawText = DrawStarkTextBox;

function GetDescriptionId(strId)
{
    var nLast = strId.lastIndexOf("_");
    if (nLast >= 0)
        {
        return strId.substr(0, nLast) + g_strDropDesc;
        }
    return "";
}

function ShowDescription()
{
    var objDesc = document.getElementById(GetDescriptionId(this.id));
    if (objDesc)
        objDesc.style.visibility = "visible";
}
	
function HideDescription()
{
    var objDesc = document.getElementById(GetDescriptionId(this.id));
    if (objDesc)
        objDesc.style.visibility = "hidden";
}

function SetPosition(nXPos, nYPos)
{
	var objControl = document.getElementById(this.m_strControlId);
	if (objControl)
	    {
		//objControl.style.position="absolute";
        objControl.style.left = (nXPos) + "px";
        objControl.style.top = (nYPos) + "px";
	    }
}

function AddRoundedTop(objElement, strBackColour, strColour)
{
	var objBTag = document.createElement("b");
	var strClassName = "roundCorner";
	objBTag.className = "roundCornerTop";
	objBTag.style.backgroundColor = strBackColour;
	for (i = 1; i <= 4; i++)
		{
		var objTemp = document.createElement("b");
		objTemp.className = strClassName + i;
		objTemp.style.backgroundColor = strColour;
		objBTag.appendChild(objTemp);
		}
	objElement.insertBefore(objBTag, objElement.firstChild);
}

function AddRoundedBottom(objElement, strBackColour, strColour)
{
	var objBTag = document.createElement("b");
	var strClassName = "roundCorner";
	objBTag.className = "roundCornerBottom";
	objBTag.style.backgroundColor = strBackColour;
	for (i = 4; i > 0; i--)
		{
		var objTemp = document.createElement("b");
		objTemp.className = strClassName + i;
		objTemp.style.backgroundColor = strColour;
		objBTag.appendChild(objTemp);
		}
	objElement.appendChild(objBTag);
}

function WriteContainerToDocument()
{
    var strPicLinkHTML;
	strPicLinkHTML = "<div class='StarkDropShadow";
	if (this.m_strDropShadowClass.length > 0)
		{
		strPicLinkHTML += " ";
		strPicLinkHTML += this.m_strDropShadowClass;
		}
	strPicLinkHTML += "'><div class='StarkDisplayBox' id='";
	strPicLinkHTML += this.m_strControlId;
	strPicLinkHTML += "'></div></div>";
	document.write(strPicLinkHTML);
}

function SetDropDescription(objThis, objSet, bWantDropDescription)
{
	if (bWantDropDescription)
		{
		objSet.onmouseover = objThis.ShowDescription;
		objSet.onmouseout = objThis.HideDescription;
		}
}

function GetCaptionContainer(strCaptionWidth, bWantDropDescription)
{
	var objCaptionContainer = document.createElement("div");
	objCaptionContainer.className = "StarkPicLinkCaptionBox";
	objCaptionContainer.style.backgroundColor = this.m_strCaptionColour;
	if (this.m_strLinkUrl.length == 0)
		objCaptionContainer.style.cursor = "auto";	//do not want pointer if no link
	if (this.m_strCaptionHeight.length > 0)
		objCaptionContainer.style.height = this.m_strCaptionHeight + "px";	//do not want pointer if no link
	var objCaption = document.createElement("div");
	objCaption.id = this.m_strControlId + g_strCaption;
	if (this.m_strCaptionImageUrl.length > 0)
		{
		objCaption.className = "imgPicLinkCaption";
		var objImageURL = document.createElement("img");
		objImageURL.src = this.m_strCaptionImageUrl;
		SetDropDescription(this, objImageURL, bWantDropDescription);
		objCaption.appendChild(objImageURL);
		}
	else
		{
		objCaption.className = "textPicLinkCaption";
		objCaption.innerHTML = this.m_strCaption;
		var nFindIndex = this.m_strCaption.indexOf("<br");	//caption on more than one line?
		if (nFindIndex < 0)	//no break found, single line caption
			{
			objCaption.className += " textPicLinkSingleLineCaption";
			}
		}
	SetDropDescription(this, objCaption, bWantDropDescription);
	objCaption.style.width = strCaptionWidth;
	AddRoundedTop(objCaptionContainer, "#FFFFFF", objCaptionContainer.style.backgroundColor);
	objCaptionContainer.appendChild(objCaption);
	return objCaptionContainer;
}

function GetImageContainer(strLinkWidth, bWantDropDescription)
{
	var objLinkImage = document.createElement("div");
	objLinkImage.className = "StarkPicLinkImage";
	objLinkImage.id = this.m_strControlId + g_strImage;
	SetDropDescription(this, objLinkImage, bWantDropDescription);
	var objImageURL = document.createElement("img");
	objImageURL.src = this.m_strPicUrl;
	var objLinkDescBox = document.createElement("div");
	objLinkDescBox.className = "StarkPicLinkDescBox";
	objLinkDescBox.id = this.m_strControlId + g_strDropDesc;
	objLinkDescBox.style.width = strLinkWidth;
	var objLinkDesc = document.createElement("div");
	objLinkDesc.className = "StarkPicLinkDesc";
	objLinkDesc.innerHTML = this.m_strDescription;
	//join elements to make up the control
	objLinkDescBox.appendChild(objLinkDesc);
	objLinkImage.appendChild(objImageURL);
	objLinkImage.appendChild(objLinkDescBox);
	return objLinkImage;
}

function GetTextContentContainer(strLinkWidth)
{
	var objTextContainer = document.createElement("div");
	objTextContainer.className = "StarkTextContainer";
	//objTextContainer.style.width = strLinkWidth;
	objTextContainer.style.borderTop = "solid 1px " + this.m_strCaptionColour;
	var objTextContent = document.createElement("div");
	objTextContent.id = this.m_strControlId + g_strTextContent;
	objTextContainer.appendChild(objTextContent);
	return objTextContainer;
}

function DrawPictureLink(bOpenNewWindow)
{
	//write drop shadow and container to document
	this.WriteContainerToDocument();
	//use DOM to create each element
	var objPicLink = document.getElementById(this.m_strControlId);
	objPicLink.style.width = this.m_strPicWidth + "px";
	var objLinkURL = document.createElement("a");
	objLinkURL.href = this.m_strLinkUrl;
	if (bOpenNewWindow != 0) 
		objLinkURL.target = "_blank";
	
	var objCaptionContainer = this.GetCaptionContainer(objPicLink.style.width, true);
	var objLinkImage = this.GetImageContainer(objPicLink.style.width, true);

	objLinkURL.appendChild(objCaptionContainer);
	objLinkURL.appendChild(objLinkImage);
	objPicLink.appendChild(objLinkURL);
}

function DrawStarkTextBox()
{
	//write drop shadow and container to document
	this.WriteContainerToDocument();
	//use DOM to create each element
	var objDisplayBox = document.getElementById(this.m_strControlId);
	objDisplayBox.style.width = this.m_strPicWidth + "px";
	
	var objCaptionContainer = this.GetCaptionContainer(objDisplayBox.style.width, false);
	var objTextContent = this.GetTextContentContainer(objDisplayBox.style.width);

	objDisplayBox.appendChild(objCaptionContainer);
	objDisplayBox.appendChild(objTextContent);
}

function SetTextBoxContent(strContent)
{
	var objTextBox = document.getElementById(this.m_strControlId + g_strTextContent);
	objTextBox.innerHTML = strContent;
}

function AppendTextBoxContent(strContent)
{
	var objTextBox = document.getElementById(this.m_strControlId + g_strTextContent);
	objTextBox.innerHTML += strContent;
}

function DrawPicLink(strControlId, strCaption, bOpenNewWindow, strPicUrl, strPicWidth, strLinkUrl, strDescription)
{
	var myStarkDisplayBox = new StarkDisplayBox(strControlId, strCaption, 
	                                    strPicUrl, strPicWidth, strLinkUrl, strDescription);
	myStarkDisplayBox.DrawPic(bOpenNewWindow);
}

function DrawPicLinkAt(nLeftPosition, nTopPosition, strControlId, strCaption, bOpenNewWindow, strPicUrl, strPicWidth, strLinkUrl, 
                     strDescription)
{
	var myStarkDisplayBox = new StarkDisplayBox(strControlId, strCaption, 
	                                    strPicUrl, strPicWidth, strLinkUrl, strDescription);
	myStarkDisplayBox.DrawPic(bOpenNewWindow);
	myStarkDisplayBox.SetPosition(nLeftPosition, nTopPosition);
}

function DrawPicLinkWithColour(strControlId, strCaption, bOpenNewWindow, strPicUrl, strPicWidth, strLinkUrl, strDescription, strCaptionColour, strDropShadowClass)
{
	var myStarkDisplayBox = new StarkDisplayBox(strControlId, strCaption, 
	                                    strPicUrl, strPicWidth, strLinkUrl, strDescription);
	myStarkDisplayBox.m_strCaptionColour = strCaptionColour;
	myStarkDisplayBox.m_strDropShadowClass = strDropShadowClass;
	myStarkDisplayBox.DrawPic(bOpenNewWindow);
}

function DrawPicLinkWithColourAndGraphic(strControlId, strCaption, bOpenNewWindow, strPicUrl, strPicWidth, strLinkUrl, strDescription, strCaptionColour, strCaptionHeight, strCaptionImageUrl, strDropShadowClass)
{
	var myStarkDisplayBox = new StarkDisplayBox(strControlId, strCaption, 
	                                    strPicUrl, strPicWidth, strLinkUrl, strDescription);
	myStarkDisplayBox.m_strCaptionColour = strCaptionColour;
	myStarkDisplayBox.m_strDropShadowClass = strDropShadowClass;
	myStarkDisplayBox.m_strCaptionHeight = strCaptionHeight;
	myStarkDisplayBox.m_strCaptionImageUrl = strCaptionImageUrl;
	myStarkDisplayBox.DrawPic(bOpenNewWindow);
}

function InitTextBoxWithColour(strControlId, strCaption, bOpenNewWindow, strPicWidth, strLinkUrl, strCaptionColour, strDropShadowClass)
{
	var myStarkDisplayBox = new StarkDisplayBox(strControlId, strCaption, "", strPicWidth, strLinkUrl, "");
	myStarkDisplayBox.m_strCaptionColour = strCaptionColour;
	myStarkDisplayBox.m_strDropShadowClass = strDropShadowClass;
	myStarkDisplayBox.DrawText();
	return myStarkDisplayBox;
}


