<PUBLIC:HTC URN="icon">

<PUBLIC:PROPERTY NAME="file" />
<PUBLIC:PROPERTY NAME="width" />
<PUBLIC:PROPERTY NAME="height" />
<PUBLIC:PROPERTY NAME="selfSelect" />

<PUBLIC:METHOD NAME="SelectIcon" />
<PUBLIC:METHOD NAME="DeselectIcon" />
<PUBLIC:METHOD NAME="IsIconSelected" />

<PUBLIC:EVENT ID="IconSelect" NAME="oniconselect" />
<PUBLIC:EVENT ID="IconDeselect" NAME="onicondeselect" />
<PUBLIC:EVENT ID="IconClick" NAME="oniconclick" />

<PUBLIC:ATTACH EVENT="ondocumentready" HANDLER="DoInit" />

<script language="JavaScript">
var BORDER_WIDTH = 2;
var NORMAL_COLOR =  "#EEEEEE";
var HIGHLIGHT_COLOR = "#000080";

// initialize icon data and display
function DoInit()
{
  SetDefaults();
  BuildIcon();
  //AdjustPosition();
}

function SetDefaults()
{
  if(selfSelect == null)
    selfSelect = "true";
	
  icon_selected = false;
}

function SelectIcon()
{
  icon_selected = true;
  icon_area.style.borderColor = HIGHLIGHT_COLOR;
  IconSelect.fire();
}

function DeselectIcon()
{
  icon_selected = false;
  icon_area.style.borderColor = NORMAL_COLOR;
  IconDeselect.fire();
}

function IsIconSelected()
{
  return icon_selected;
}

function IconClicked()
{
  IconClick.fire();
}

// Note: width and height are hardcoded to be 16
// This matches with iconSize=small.
function BuildIcon()
{
  var html_text =
    '<img id="icon_area_' + uniqueID + '" ' +
	  'src="sds://' + escape(file) +
	  '?width=16?height=16?' +
	  'page=1?icon=only?iconSize=small" ' + 'border="' + BORDER_WIDTH + '" ' +
	  'style="position:absolute; cursor:hand; border-color:' + NORMAL_COLOR + ';" />';
	  
  innerHTML = html_text;
  icon_area = all["icon_area_" + uniqueID];
  
  if(selfSelect == "true")
    icon_area.attachEvent("onclick", SelectIcon);
  else
    icon_area.attachEvent("onclick", IconClicked);

  icon_area.attachEvent("onload", AdjustPosition);
}

// just center the icon
function AdjustPosition()
{
  icon_area.style.pixelTop = (height - icon_area.height) / 2 - BORDER_WIDTH;
  icon_area.style.pixelLeft = (width - icon_area.width) / 2 - BORDER_WIDTH;
}
</script>

</PUBLIC:HTC>
