<!--
Copyright (c) 2000-2002 Microsoft Corp. All rights reserved.
Version 1.0.2.226
-->

<public:component tagname="Toolbar" literalcontent="true">
<public:method name="createLabelAt" internalname="f_PublicCreateLabelAt" />
<public:method name="createButtonAt" internalname="f_PublicCreateButtonAt" />
<public:method name="createCheckButtonAt" internalname="f_PublicCreateCheckButtonAt" />
<public:method name="createSeparatorAt" internalname="f_PublicCreateSeparatorAt" />
<public:method name="createGripperAt" internalname="f_PublicCreateGripperAt" />
<public:method name="createTextBoxAt" internalname="f_PublicCreateTextBoxAt" />
<public:method name="createDropDownListAt" internalname="f_PublicCreateDropDownListAt" />
<public:method name="createCheckGroupAt" internalname="f_PublicCreateCheckGroupAt" />
<public:method name="getItem" internalname="f_PublicGetItem" />
<public:property name="numItems" get="f_PublicGetCount" />
<public:property name="defaultStyle" id="prDefaultStyle" get="get_defaultStyle" put="set_defaultStyle" />
<public:property name="hoverStyle" id="prHoverStyle" get="get_hoverStyle" put="set_hoverStyle" />
<public:property name="selectedStyle" id="prSelectedStyle" get="get_selectedStyle" put="set_selectedStyle" />
<public:property name="movement" id="prMovement" get="get_movement" put="set_movement" />
<public:property name="orientation" id="prOrientation" get="get_orientation" put="set_orientation" />
<public:property name="turnVerticalContent" id="prTurnVerticalContent" get="get_turnVerticalContent" put="set_turnVerticalContent" />
<public:event name="onwcready" id="evWCReady" />
<public:event name="onbuttonclick" id="evButtonClick" />
<public:event name="oncheckchange" id="evCheckChange" />
<public:defaults
tabStop="true"
contentEditable="false"
canHaveHTML="true"
viewInheritStyle="true"
viewMasterTab="true"
viewLinkContent="false"
style="display:none;overflow:visible;cursor:default;padding:1px;background-color:buttonface;border-top:solid 1px buttonhighlight;border-top:solid 1px buttonhighlight;border-left:solid 1px buttonhighlight;border-right:solid 1px buttonshadow;border-bottom:solid 1px buttonshadow"
/>
<public:attach event="oncontentready" onevent="f_CreateToolbar()" />
<public:attach event="onpropertychange" onevent="f_OnPropertyChange()" />
<public:attach event="ondocumentready" onevent="f_OnDocReady()" />
<script language="JScript">
var _oTable;
var _oInteractNode;
var _OnStopCount = 0;
var _Ready = false;
var _bDragging = false;
var _bDocked = false;
var _szDockedLocation = "";
var _nLastClientX;
var _nLastClientY;
var _nLastScreenX;
var _nLastScreenY;
var _tbDefaultStyle = "";
var _tbHoverStyle = "";
var _tbSelectedStyle = "";
var _Orientation = "horizontal";
var _TurnVerticalContent = false;
var _Movement = "";
var _KeyboardClick = false;
var _PreDockOrientation = "";
var _IsSubmitting = false;
var _BuiltInDefaultStyle = "color:buttontext;padding:2px;border:solid 1px buttonface";
var _BuiltInHoverStyle = "border-top-color:buttonhighlight;border-left-color:buttonhighlight;border-bottom-color:buttonshadow;border-right-color:buttonshadow";
var _BuiltInSelectedStyle = "border-top-color:buttonshadow;border-left-color:buttonshadow;border-bottom-color:buttonhighlight;border-right-color:buttonhighlight;padding-top:3px;padding-left:3px;padding-bottom:1px;padding-right:1px";
var _szSeparatorHorizStyle = "border-left-width:1px;border-left-style:solid;border-left-color:buttonshadow;border-right-width:1px;border-right-style:solid;border-right-color:buttonhighlight;margin-left:2px;margin-right:2px;width:2px;overflow:hidden;";
var _szSeparatorVertStyle = "border-top-width:1px;border-top-style:solid;border-top-color:buttonshadow;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:buttonhighlight;margin-top:2px;margin-bottom:2px;margin-left:3px;margin-right:3px;height:2px;overflow:hidden;";
var _szGripperHorizStyle = "cursor:move;margin-left:2px;margin-right:2px;border-top:buttonhighlight;border-bottom:buttonshadow;border-right:buttonshadow;border-left:buttonhighlight;border-style:solid;border-width:1px;width:3px;overflow:hidden;";
var _szGripperVertStyle = "cursor:move;margin-top:2px;margin-bottom:2px;margin-left:3px;margin-right:3px;border-top:buttonhighlight;border-bottom:buttonshadow;border-right:buttonshadow;border-left:buttonhighlight;border-style:solid;border-width:1px;height:3px;overflow:hidden;";
function f_GetParent()
{
if (_oTable.children[0] == null)
{
return;
}
if (orientation == "vertical")
{
return _oTable.children[0];
}
else
{
if (_oTable.children[0].children.length > 0)
return _oTable.children[0].children[0];
}
}
function get_orientation()
{
return _Orientation;
}
function set_orientation(value)
{
var szOrig = _Orientation;
if (typeof value == "string")
{
var lVal = value.toLowerCase();
switch (lVal)
{
case "horizontal":
case "vertical":
_Orientation = lVal;
break;
}
}
if (_Ready && (szOrig != _Orientation))
{
if (_Orientation == "horizontal")
f_RearrangeHorizontal();
else
f_RearrangeVertical();
prOrientation.fireChange();
}
}
function f_RearrangeHorizontal()
{
var root = _oTable.children[0];
if (root.children.length == 0)
{
root.appendChild(element.document.createElement("TR"));
return;
}
var topRow = root.children[0];
if (topRow.children.length > 0)
{
var item = topRow.children[0];
f_AdjustContents(item);
f_AdjustSeps(item);
}
while (root.children.length > 1)
{
var item = topRow.appendChild(root.children[1].children[0]);
f_AdjustContents(item);
f_AdjustSeps(item);
root.children[1].removeNode(true);
}
f_ApplyStylesToChildren();
}
function f_RearrangeVertical()
{
var root = _oTable.children[0];
if (root.children.length == 0)
return;
var oldRow = root.children[0];
if (oldRow.children.length == 0)
{
oldRow.removeNode(true);
return;
}
if (oldRow.children.length > 0)
{
var item = oldRow.children[0];
f_AdjustContents(item);
f_AdjustSeps(item);
}
while (oldRow.children.length > 1)
{
var row = element.document.createElement("TR");
if (item._type == "emptygroup")
row.style.display = "none";
root.appendChild(row);
var item = row.appendChild(oldRow.children[1]);
f_AdjustContents(item);
f_AdjustSeps(item);
}
f_ApplyStylesToChildren();
}
function f_AdjustSeps(item)
{
if ((item._type != "separator") && (item._type != "gripper"))
return;
var builtIn;
if ((element.style.writingMode != null) && (element.style.writingMode == "tb-rl"))
{
if (item._type == "separator")
builtIn = (orientation == "vertical") ? _szSeparatorHorizStyle : _szSeparatorVertStyle;
else
builtIn = (orientation == "vertical") ? _szGripperHorizStyle : _szGripperVertStyle;
}
else
{
if (item._type == "separator")
builtIn = (orientation == "vertical") ? _szSeparatorVertStyle : _szSeparatorHorizStyle;
else
builtIn = (orientation == "vertical") ? _szGripperVertStyle : _szGripperHorizStyle;
}
item.children[0].style.cssText = builtIn + ";" + item.children[0]._origStyle;
}
function get_turnVerticalContent()
{
return _TurnVerticalContent;
}
function set_turnVerticalContent(value)
{
var bOrig = _TurnVerticalContent;
if (typeof value == "boolean")
{
_TurnVerticalContent = value;
}
else if (typeof value == "string")
{
var lVal = value.toLowerCase();
_TurnVerticalContent = (lVal != "false") && (lVal != "no") && (lVal != "0");
}
if (_Ready && (bOrig != _TurnVerticalContent))
{
if (_Orientation == "vertical")
f_RearrangeVerticalContent();
prTurnVerticalContent.fireChange();
}
}
function f_RearrangeVerticalContent()
{
var root = _oTable.children[0];
if (root.children.length == 0)
return;
for (var row = 0; row < root.children.length; row++)
{
f_AdjustContents(root.children[row].children[0]);
}
f_ApplyStylesToChildren();
}
function get_defaultStyle()
{
return _tbDefaultStyle;
}
function set_defaultStyle(value)
{
var orig = _tbDefaultStyle;
if (typeof value == "string")
{
_tbDefaultStyle = value;
if (_Ready)
f_ApplyStylesToChildren();
}
if (_Ready && (orig != _tbDefaultStyle))
{
prDefaultStyle.fireChange();
}
}
function get_hoverStyle()
{
return _tbHoverStyle;
}
function set_hoverStyle(value)
{
var orig = _tbHoverStyle;
if (typeof value == "string")
{
_tbHoverStyle = value;
if (_Ready)
f_ApplyStylesToChildren();
}
if (_Ready && (orig != _tbHoverStyle))
{
prHoverStyle.fireChange();
}
}
function get_selectedStyle()
{
return _tbSelectedStyle;
}
function set_selectedStyle(value)
{
var orig = _tbSelectedStyle;
if (typeof value == "string")
{
_tbSelectedStyle = value;
if (_Ready)
f_ApplyStylesToChildren();
}
if (_Ready && (orig != _tbSelectedStyle))
{
prSelectedStyle.fireChange();
}
}
function get_movement()
{
return _Movement;
}
function set_movement(value)
{
var szOrig = _Movement;
if (typeof value == "string")
{
var lVal = value.toLowerCase();
switch (lVal)
{
case "move":
case "move-dock":
case "":
_Movement = lVal;
break;
case "none":
_Movement = "";
break;
}
}
if (_Ready && (szOrig != _Movement))
{
if (f_IsMoveable())
{
defaults.style.position = "absolute";
defaults.style.zIndex = "1";
defaults.style.overflow = "hidden";
}
else
{
defaults.style.position = "static";
defaults.style.zIndex = "";
defaults.style.overflow = "visible";
}
prMovement.fireChange();
}
}
function f_IsMoveable()
{
switch (_Movement)
{
case "move":
case "move-dock":
return true;
}
return false;
}
function f_IsDockable()
{
return (_Movement == "move-dock");
}
function f_PublicCreateLabelAt(index)
{
return f_AddItemAt(index, "<ie:ToolbarLabel />");
}
function f_PublicCreateButtonAt(index)
{
return f_AddItemAt(index, "<ie:ToolbarButton />");
}
function f_PublicCreateCheckButtonAt(index)
{
return f_AddItemAt(index, "<ie:ToolbarCheckButton />");
}
function f_PublicCreateSeparatorAt(index)
{
return f_AddItemAt(index, "<ie:ToolbarSeparator />");
}
function f_PublicCreateGripperAt(index)
{
return f_AddItemAt(index, "<ie:ToolbarGripper />");
}
function f_PublicCreateDropDownListAt(index)
{
return f_AddItemAt(index, "<ie:ToolbarDropDownList />");
}
function f_PublicCreateTextBoxAt(index)
{
return f_AddItemAt(index, "<ie:ToolbarTextBox />");
}
function f_PublicCreateCheckGroupAt(index)
{
return f_AddItemAt(index, "<ie:ToolbarCheckGroup />");
}
function f_AddItemAt(index, html)
{
var numItems = f_NumItems();
var realIndex = f_PublicToRealIndex(index);
if ((realIndex < 0) || (realIndex > numItems))
{
realIndex = numItems;
index = f_PublicGetCount();
}
f_AddItemAtRealIndex(realIndex, html);
return f_PublicGetItem(index);
}
function f_AddItemToGroupAt(index, group, publicGroup)
{
var parent = f_GetParent();
if (parent == null)
return null;
var numInGroup = publicGroup.getCount();
if ((index < 0) || (index > numInGroup))
index = numInGroup;
var realIndex = 0;
var cell;
var foundGroup = false;
for (realIndex = 0; realIndex < parent.children.length; realIndex++)
{
cell = parent.children[realIndex];
if ((orientation == "vertical") && (cell.children.length > 0))
cell = cell.children[0];
if (((cell._type == "checkbutton") || (cell._type == "emptygroup")) &&
(cell._group != null))
{
if (group == cell._group)
{
foundGroup = true;
break;
}
}
}
if (!foundGroup)
return null;
var selectItem = false;
if (cell._type == "emptygroup")
{
if (orientation == "vertical")
cell = cell.parentElement;
cell.removeNode(true);
selectItem = group.bForceSel;
}
var newIndex = realIndex + index;
var newItem = f_AddItemAtRealIndex(newIndex, "<ie:ToolbarCheckButton />");
newItem._group = group;
newItem.id = newItem.uniqueID;
var publicNewItem = publicGroup.getItem(index);;
if (selectItem && (publicNewItem != null))
publicNewItem.setAttribute("selected", "true");
return publicNewItem;
}
function f_AddItemAtRealIndex(index, html)
{
var parent = f_GetParent();
if (parent == null)
return null;
var aNodes = f_CreateNodesFromHtml(html);
if ((aNodes == null) || (aNodes.length < 1))
return null;
var cell = aNodes[0];
var retCell = cell;
if (orientation == "vertical")
{
var trRow = element.document.createElement("TR");
if (cell._type == "emptygroup")
trRow.style.display = "none";
trRow.appendChild(cell);
cell = trRow;
}
if (index == f_NumItems())
{
parent.appendChild(cell);
}
else
{
parent.children[index].insertAdjacentElement("beforeBegin", cell);
}
f_ApplyStylesToChildren();
return retCell;
}
function f_PublicToRealIndex(index)
{
var parent = f_GetParent();
if ((parent == null) || (parent.children.length == 0))
return -1;
var curIndex = -1;
var realIndex;
var cell;
var group = null;
for (realIndex = 0; realIndex < parent.children.length; realIndex++)
{
cell = parent.children[realIndex];
if ((orientation == "vertical") && (cell.children.length > 0))
cell = cell.children[0];
if (((cell._type == "checkbutton") || (cell._type == "emptygroup")) &&
(cell._group != null))
{
if (group != cell._group)
{
curIndex++;
group = cell._group;
}
}
else
{
group = null;
curIndex++;
}
if (curIndex == index)
return realIndex;
}
return -1;
}
function f_PublicGetCount()
{
var parent = f_GetParent();
if ((parent == null) || (parent.children.length == 0))
return 0;
var numItems = 0;
var realIndex;
var cell;
var group = null;
for (realIndex = 0; realIndex < parent.children.length; realIndex++)
{
cell = parent.children[realIndex];
if ((orientation == "vertical") && (cell.children.length > 0))
cell = cell.children[0];
if (((cell._type == "checkbutton") || (cell._type == "emptygroup")) &&
(cell._group != null))
{
if (group != cell._group)
{
numItems++;
group = cell._group;
}
}
else
{
group = null;
numItems++;
}
}
return (numItems < 0) ? 0 : numItems;
}
function f_PublicGetItem(index)
{
if ((index < 0) || (index > f_NumItems()))
return null;
var realIndex = f_PublicToRealIndex(index);
var item = f_GetItem(realIndex);
if (item == null)
return null;
if (((item._type == "checkbutton") || (item._type == "emptygroup")) && (item._group != null))
return f_PublicMakeGroupContract(item);
else
return f_PublicMakeContract(item);
}
function f_PublicMakeContract(item)
{
var obj = new Object();
obj.getType = function() { return item._type; };
if ((item._type == "dropdownlist") || (item._type == "textbox"))
{
obj.click = function() { item.children[0].click(); };
obj.focus = function() { item.children[0].focus(); };
obj.blur = function() { item.children[0].blur(); };
}
else
{
obj.click = function() { item.click(); };
obj.focus = function() { item.focus(); };
obj.blur = function() { item.blur(); };
}
obj.remove = function() { f_PublicRemoveItem(item); };
obj.getAttribute = function(name) { return f_PublicGetAttribute(item, name); };
obj.setAttribute = function(name, value) { f_PublicSetAttribute(item, name, value); };
if (item._type == "dropdownlist")
obj.getOptions = function() { return item.children[0].options; };
return obj;
}
function f_PublicMakeGroupContract(item)
{
var obj = new Object();
obj.getType = function() { return "checkgroup"; };
obj.getItem = function(subIndex) { return f_PublicGetGroupItem(subIndex, item._group); };
obj.getSelected = function() { var selItem = _oTable.document.all[item._group.oSelected]; if (selItem != null) return f_PublicMakeContract(selItem); else return null; };
obj.getAttribute = function(name) { return f_PublicGetGroupAttribute(item._group, name); };
obj.setAttribute = function(name, value) { f_PublicSetGroupAttribute(item._group, name, value); };
obj.remove = function() { f_PublicRemoveGroup(item._group); };
obj.getCount = function() { return f_PublicGetGroupCount(item._group); };
obj.createCheckButtonAt = function(subIndex) { return f_AddItemToGroupAt(subIndex, item._group, obj); };
return obj;
}
function f_PublicGetGroupCount(group)
{
var parent = f_GetParent();
if (parent == null)
return 0;
var realIndex = 0;
var count = 0;
var cell;
var foundGroup = false;
for (realIndex = 0; realIndex < parent.children.length; realIndex++)
{
cell = parent.children[realIndex];
if ((orientation == "vertical") && (cell.children.length > 0))
cell = cell.children[0];
if (((cell._type == "checkbutton") || (cell._type == "emptygroup")) &&
(cell._group != null))
{
if (group == cell._group)
{
if (cell._type == "emptygroup")
return 0;
count++;
foundGroup = true;
}
else if (foundGroup)
{
break;
}
}
else if (foundGroup)
{
break;
}
}
return count;
}
function f_PublicRemoveGroup(group)
{
var numItems = f_PublicGetGroupCount(group);
if (numItems == 0)
{
var cell = f_GetGroupItem(0, group);
if (orientation == "vertical")
cell = cell.parentElement;
cell.removeNode(true);
}
else
{
for (var count = 0; count < numItems; count++)
{
var cell = f_GetGroupItem(0, group);
if (orientation == "vertical")
cell = cell.parentElement;
cell.removeNode(true);
}
}
}
function f_PublicGetGroupItem(index, group)
{
var item = f_GetGroupItem(index, group);
if ((item == null) || (item._type == "emptygroup"))
return null;
return f_PublicMakeContract(item);
}
function f_GetGroupItem(index, group)
{
var parent = f_GetParent();
if (parent == null)
return null;
var realIndex = 0;
var vIndex = -1;
var cell;
var foundGroup = false;
for (realIndex = 0; realIndex < parent.children.length; realIndex++)
{
cell = parent.children[realIndex];
if ((orientation == "vertical") && (cell.children.length > 0))
cell = cell.children[0];
if (((cell._type == "checkbutton") || (cell._type == "emptygroup")) &&
(cell._group != null))
{
if (group == cell._group)
{
foundGroup = true;
vIndex++;
}
else if (foundGroup)
{
return null;
}
if (vIndex == index)
{
return cell;
break;
}
}
else if (foundGroup)
{
return null;
}
}
return null;
}
function f_PublicRemoveItem(item)
{
var empty = null;
var group = item._group;
if ((item._type == "checkbutton") && (group != null) &&
(f_PublicGetGroupCount(group) == 1))
{
empty = f_CreateEmptyGroup(group);
}
if (orientation == "vertical")
{
item = item.parentElement;
if (empty != null)
{
var row = element.document.createElement("TR");
row.style.display = "none";
row.appendChild(empty);
empty = row;
}
}
if ((group != null) && (group.oSelected == item.uniqueID))
group.oSelected = null;
if (empty != null)
item.insertAdjacentElement("beforeBegin", empty);
item.removeNode(true);
if ((group != null) && group.bForceSel && (group.oSelected == null) && (empty == null))
{
item = f_PublicGetGroupItem(0, group);
if (item != null)
item.setAttribute("selected", "true");
}
}
function f_PublicGetGroupAttribute(group, name)
{
switch (name.toLowerCase())
{
case "forceselection":
return (group.bForceSel) ? "true" : "false";
case "defaultstyle":
return group.szDefaultStyle;
case "hoverstyle":
return group.szHoverStyle;
case "selectedstyle":
return group.szSelectedStyle;
}
}
function f_PublicSetGroupAttribute(group, name, value)
{
switch (name.toLowerCase())
{
case "forceselection":
group.bForceSel = (value.toLowerCase() == "true");
if (group.bForceSel && (group.oSelected == null))
{
var cell = f_PublicGetGroupItem(0, group);
if (cell != null)
cell.setAttribute("selected", "true");
}
break;
case "defaultstyle":
group.szDefaultStyle = value;
f_ApplyStylesToChildren();
break;
case "hoverstyle":
group.szHoverStyle = value;
f_ApplyStylesToChildren();
break;
case "selectedstyle":
group.szSelectedStyle = value;
f_ApplyStylesToChildren();
break;
}
}
function f_PublicGetAttribute(item, name)
{
var lname = name.toLowerCase();
if ((item._type == "dropdownlist") || (item._type == "textbox"))
{
if ((lname != "defaultstyle") && (lname != "style") && (item.children.length > 0))
item = item.children[0];
}
if ((lname == "style") && (item.children.length == 1))
return item.children[0].style.cssText;
return item.getAttribute(name);
}
function f_PublicSetAttribute(item, name, value)
{
var cachedImage;
var lname = name.toLowerCase();
if ((item._type == "dropdownlist") || (item._type == "textbox"))
{
if ((lname != "defaultstyle") && (lname != "style") && (item.children.length > 0))
item = item.children[0];
}
if ((lname == "tabindex") || (lname == "title"))
{
item = item.children[0];
}
if ((lname != "style") && (lname != "selected") && (lname != "outerhtml") &&
(lname != "innertext") && (lname != "innerhtml"))
item.setAttribute(name, value, 0);
if (!_Ready)
return;
switch (lname)
{
case "defaultstyle":
case "hoverstyle":
case "selectedstyle":
f_ApplyStylesToChildren();
break;
case "text":
case "innertext":
if ((item._type == "label") || (item._type == "button") || (item._type == "checkbutton"))
{
f_DoLabelText(item, value);
}
break;
case "innerhtml":
if ((item._type == "label") || (item._type == "button") || (item._type == "checkbutton"))
{
f_DoLabelHTML(item, value);
}
break;
case "imageurl":
if ((item._type == "label") || (item._type == "button") || (item._type == "checkbutton"))
{
cachedImage = new Image();
cachedImage.src = value;
f_DoLabelImageUrl(item, value);
}
break;
case "style":
if (item.children.length == 1)
{
if ((item._type == "separator") || (item._type == "gripper"))
{
item.children[0]._origStyle += ";" + value;
}
item.children[0].style.cssText += ";" + value;
}
break;
case "selected":
if (item._type == "checkbutton")
{
if (f_IsSelected(item) != (value.toLowerCase() == "true"))
{
_KeyboardClick = true;
item.click();
}
}
break;
case "disabled":
f_ApplyStylesToChildren();
break;
}
}
function f_DoLabelText(item, text)
{
f_RemoveTextNodes(item);
var span = element.document.createElement("SPAN");
span.innerText = text;
item.children[0].appendChild(span);
f_AdjustContents(item);
}
function f_DoLabelHTML(item, html)
{
f_RemoveTextNodes(item);
var span = element.document.createElement("SPAN");
span.innerHTML = html;
item.children[0].appendChild(span);
f_AdjustContents(item);
}
function f_RemoveTextNodes(item)
{
var content = item.children[0];
if (content.hasChildNodes())
{
var index = (content.getAttribute("_imageAdded")) ? 1 : 0;
while (index < content.childNodes.length)
content.childNodes[index].removeNode(true);
}
}
function f_DoLabelImageUrl(item, imageUrl)
{
var content = item.children[0];
var imageAdded = content.getAttribute("_imageAdded");
if (imageAdded && (imageUrl == null))
{
content.children[0].removeNode(true);
content.removeAttribute("_imageAdded", 0);
if (content.childNodes.length == 0)
content.innerHTML = "&nbsp;";
}
else if (imageUrl == null)
{
return;
}
else
{
if (imageAdded)
{
content.children[0].removeNode(true);
}
var cacheImage = new Image();
cacheImage.src = imageUrl;
var img = element.document.createElement("IMG");
img.src = cacheImage.src;
if (content.hasChildNodes())
content.insertBefore(img, content.childNodes[0]);
else
content.insertBefore(img);
content.setAttribute("_imageAdded", "true", 0);
}
f_AdjustContents(item);
}
function f_GetItem(nIndex)
{
var oParent = f_GetParent();
if (oParent != null)
{
if ((nIndex < 0) || (nIndex >= oParent.children.length))
return null;
var oCell = oParent.children[nIndex];
if (orientation == "vertical")
{
if (oCell.children.length > 0)
return oCell.children[0];
}
else
{
return oCell;
}
}
return null;
}
function f_NumItems()
{
var oParent = f_GetParent();
if (oParent != null)
{
return oParent.children.length;
}
return 0;
}
function f_OnPropertyChange()
{
switch (event.propertyName)
{
case "innerHTML":
f_CreateToolbar();
break;
case "_submitting":
_IsSubmitting = (element.getAttribute("_submitting") == "true");
_OnStopCount = 0;
break;
case "style.direction":
_oTable.style.direction = element.style.direction;
break;
case "dir":
_oTable.dir = element.dir;
break;
}
}
function f_CreateToolbar()
{
element.document.releaseCapture();
f_AddStopEvent();
if (f_IsMoveable())
{
defaults.style.position = "absolute";
defaults.style.zIndex = "1";
defaults.style.overflow = "hidden";
}
var oTable = element.document.createElement("TABLE");
var oTBody = element.document.createElement("TBODY");
_oTable = oTable;
oTable.style.fontSize = currentStyle.fontSize;
oTable.style.fontFamily = currentStyle.fontFamily;
oTable.style.fontWeight = currentStyle.fontWeight;
oTable.style.color = currentStyle.color;
oTable.cellSpacing = 0;
oTable.cellPadding = 0;
if (element.currentStyle.direction != element.style.direction)
oTable.style.direction = element.currentStyle.direction;
else
oTable.style.direction = element.style.direction;
oTable.dir = element.dir;
if (orientation != "vertical")
{
var oRow = element.document.createElement("TR");
oTBody.appendChild(oRow);
}
oTable.appendChild(oTBody);
var aNodes = f_CreateNodesFromHtml(element.innerHTML);
for (var nIndex = 0; nIndex < aNodes.length; nIndex++)
{
f_AppendToolbarItem(aNodes[nIndex]);
}
f_ApplyStylesToChildren();
oTable.attachEvent("onclick", f_OnClick);
oTable.attachEvent("ondblclick", f_OnClick);
oTable.attachEvent("onmousedown", f_OnMouseDown);
oTable.attachEvent("onmouseup", f_OnMouseUp);
oTable.attachEvent("onmouseover", f_OnMouseOver);
oTable.attachEvent("onmouseout", f_OnMouseOut);
oTable.attachEvent("onmousemove", f_Drag);
oTable.attachEvent("oncontextmenu", f_CancelInteractEvents);
oTable.attachEvent("onselectstart", f_CancelInteractEvents);
var oBody = element.document.createElement("BODY");
var oHtml = element.document.createElement("HTML");
oBody.appendChild(oTable);
oHtml.appendChild(oBody);
defaults.viewLink = oHtml.document;
_Ready = true;
defaults.style.display = "block";
}
function f_CreateNodesFromHtml(htmlText)
{
var oSpan = element.document.createElement("span");
oSpan.innerHTML = htmlText;
return f_CreateNodes(oSpan.childNodes);
}
function f_CreateNodes(aNodes)
{
var tbNodes = new Array();
var nNumNodes = (aNodes == null) ? 0 : aNodes.length;
for (var nIndex = 0; nIndex < nNumNodes; nIndex++)
{
var node = aNodes[nIndex];
if (node != null)
tbNodes = tbNodes.concat(f_CreateToolbarItems(node));
}
return tbNodes;
}
function f_CreateToolbarItems(oNode)
{
var aNodes;
var szTagName = (oNode.tagName == null) ? "" : oNode.tagName.toLowerCase();
switch (szTagName)
{
case "toolbarbutton":
aNodes = new Array(f_CreateButton(oNode));
break;
case "toolbarcheckbutton":
aNodes = new Array(f_CreateCheckbutton(oNode));
break;
case "toolbarseparator":
aNodes = new Array(f_CreateSeparator(oNode));
break;
case "toolbarcheckgroup":
aNodes = f_CreateCheckGroup(oNode);
break;
case "toolbardropdownlist":
aNodes = new Array(f_CreateDropDownList(oNode));
break;
case "toolbartextbox":
aNodes = new Array(f_CreateTextBox(oNode));
break;
case "toolbarlabel":
aNodes = new Array(f_CreateLabel(oNode));
break;
case "toolbargripper":
aNodes = new Array(f_CreateGripper(oNode));
break;
default:
aNodes = new Array();
break;
}
for (var nIndex = 0; nIndex < aNodes.length; nIndex++)
f_AdjustContents(aNodes[nIndex]);
return aNodes;
}
function f_Interactable(oCell)
{
switch (oCell._type)
{
case "checkbutton":
case "button":
return true;
default:
return false;
}
}
function f_IsSelected(oCell)
{
if (oCell._type != "checkbutton")
return false;
var szSelected = oCell.getAttribute("selected");
return ((szSelected != null) && (String(szSelected).toLowerCase() == "true"));
}
function f_SetSelected(oCell, bSelected)
{
if (oCell._type != "checkbutton")
return;
oCell.setAttribute("selected", bSelected ? "true" : "false", 0);
}
function f_CheckButton(oSelected)
{
if ((oSelected == null) || (oSelected._type != "checkbutton"))
return;
if (oSelected._group != null)
{
var oPrevID = oSelected._group.oSelected;
if (oPrevID != null)
{
var oPrevSel = oSelected.document.all[oPrevID];
if (oPrevSel != null)
{
if (oPrevSel.uniqueID == oSelected.uniqueID)
return;
f_SetSelected(oPrevSel, false);
f_ApplyNeutralStyle(oPrevSel);
oSelected._group.oSelected = null;
f_FireCheckChange(oPrevSel);
}
}
}
f_SetSelected(oSelected, true);
f_ApplyNeutralStyle(oSelected);
if (oSelected._group != null)
oSelected._group.oSelected = oSelected.uniqueID;
f_FireCheckChange(oSelected);
}
function f_AppendToolbarItem(oCell)
{
var oParent = f_GetParent();
if ((oCell == null) || (oParent == null))
return;
if (orientation == "vertical")
{
var trRow = element.document.createElement("TR");
if (oCell._type == "emptygroup")
trRow.style.display = "none";
trRow.appendChild(oCell);
oParent.appendChild(trRow);
}
else
{
oParent.appendChild(oCell);
}
}
function f_AdjustContents(oCell)
{
if (oCell._turnContent == null)
oCell._turnContent = false;
var bTurnContent = false;
if (turnVerticalContent)
{
switch (oCell._type)
{
case "label":
case "button":
case "checkbutton":
bTurnContent = (orientation == "vertical");
break;
default:
return;
}
if (bTurnContent)
{
oCell._turnContent = true;
oCell.style.writingMode = "tb-rl";
}
}
if (oCell._turnContent && !bTurnContent)
{
oCell._turnContent = false;
oCell.style.writingMode = "lr-tb";
}
if (oCell._type == "emptygroup")
return;
var oContent = oCell.children[0];
var len = oContent.children.length;
for (nIndex = 0; nIndex < len; nIndex++)
{
var oObj = oContent.children[nIndex];
if (oObj.tagName == "IMG")
{
oObj.align = (bTurnContent) ? "middle" : "absmiddle";
}
}
}
function f_CreateGripper(oNode)
{
var oCell = element.document.createElement("td");
var oDiv = element.document.createElement("div");
oCell.appendChild(oDiv);
var szStyle = "";
if ((element.style.writingMode != null) && (element.style.writingMode == "tb-rl"))
szStyle = (orientation == "vertical") ? _szGripperHorizStyle : _szGripperVertStyle;
else
szStyle = (orientation == "vertical") ? _szGripperVertStyle : _szGripperHorizStyle;
oDiv._origStyle = oNode.style.cssText;
oDiv.style.cssText = szStyle + ";" + oDiv._origStyle;
oCell.mergeAttributes(oNode);
oCell.id = oNode.getAttribute("id");
oCell._type = "gripper";
return oCell;
}
function f_CreateSeparator(oNode)
{
var oCell = element.document.createElement("TD");
var oDiv = element.document.createElement("DIV");
oCell.appendChild(oDiv);
var szStyle;
if ((element.style.writingMode != null) && (element.style.writingMode == "tb-rl"))
szStyle = (orientation == "vertical") ? _szSeparatorHorizStyle : _szSeparatorVertStyle;
else
szStyle = (orientation == "vertical") ? _szSeparatorVertStyle : _szSeparatorHorizStyle;
oDiv._origStyle = oNode.style.cssText;
oDiv.style.cssText = szStyle + ";" + oDiv._origStyle;
oCell.mergeAttributes(oNode);
oCell.id = oNode.getAttribute("id");
oCell._type = "separator";
return oCell;
}
function f_CreateButton(oNode)
{
var oCell = f_CreateLabel(oNode, true);
if (oCell.children[0].tabIndex == 0)
oCell.children[0].tabIndex = 1;
oCell._type = "button";
oCell.attachEvent("onkeyup", f_OnKeyUp);
return oCell;
}
function f_CreateCheckbutton(oNode)
{
var oCell = f_CreateButton(oNode);
oCell._type = "checkbutton";
if (oCell.getAttribute("selected") == null)
oCell.setAttribute("selected", "false", 0);
return oCell;
}
function f_CreateCheckGroup(oNode)
{
var aTempNodes = f_CreateNodesFromHtml(oNode.innerHTML);
var aNodes = new Array();
var oGroup = new Object();
var forceSel = oNode.getAttribute("forceselection");
oGroup.bForceSel = (forceSel != null) && (String(forceSel).toLowerCase() == "true");
oGroup.oSelected = null;
oGroup.szDefaultStyle = oNode.getAttribute("defaultstyle");
oGroup.szHoverStyle = oNode.getAttribute("hoverstyle");
oGroup.szSelectedStyle = oNode.getAttribute("selectedstyle");
var nFirstCheckBtn = -1;
var bDisabled = oNode.disabled;
for (var nIndex = 0; nIndex < aTempNodes.length; nIndex++)
{
var oCell = aTempNodes[nIndex];
if (oCell._type == "checkbutton")
{
if (nFirstCheckBtn == -1)
nFirstCheckBtn = nIndex;
aNodes = aNodes.concat(new Array(oCell));
if ((oCell.id == null) || (oCell.id == ""))
{
oCell.id = oCell.uniqueID;
}
oCell._group = oGroup;
if (f_IsSelected(oCell))
{
if (oGroup.oSelected == null)
{
oGroup.oSelected = oCell.uniqueID;
}
else
{
f_SetSelected(oCell, false);
}
}
}
oCell.disabled = (bDisabled || oCell.isDisabled);
}
if (oGroup.bForceSel && (oGroup.oSelected == null) && (nFirstCheckBtn != -1))
{
var oCell = aNodes[nFirstCheckBtn];
oGroup.oSelected = oCell.uniqueID;
f_SetSelected(oCell, true);
}
if (aNodes.length == 0)
aNodes = new Array(f_CreateEmptyGroup(oGroup));
return aNodes;
}
function f_CreateEmptyGroup(group)
{
var empty = element.document.createElement("TD");
empty._type = "emptygroup";
empty._group = group;
empty.style.display = "none";
return empty;
}
function f_CreateLabel(oNode, useLink)
{
var oCell = element.document.createElement("TD");
var oContent = element.document.createElement((useLink) ? "A" : "SPAN");
oCell.appendChild(oContent);
var szText = oNode.getAttribute("text");
var szImageUrl = oNode.getAttribute("imageUrl");
if (szText == null)
{
while (oNode.childNodes.length > 0)
oContent.appendChild(oNode.childNodes[0].removeNode(true));
}
else
{
var oText = element.document.createElement("SPAN");
oText.innerText = szText;
oContent.appendChild(oText);
}
if (szImageUrl != null)
{
var cacheImage = new Image();
cacheImage.src = szImageUrl;
var oImg = element.document.createElement("IMG");
oImg.src = cacheImage.src;
if (oContent.hasChildNodes())
oContent.insertBefore(oImg, oContent.childNodes[0]);
else
oContent.insertBefore(oImg);
oContent.setAttribute("_imageAdded", "true", 0);
}
if (oContent.childNodes.length == 0)
oContent.innerHTML = "&nbsp;";
oCell.mergeAttributes(oNode);
if (oCell.tabIndex > 0)
{
oContent.tabIndex = oCell.tabIndex;
oCell.tabIndex = -1;
}
if (oCell.title != "")
{
oContent.title = oCell.title;
oCell.title = "";
}
oCell.id = oNode.getAttribute("id");
oCell.noWrap = "true";
oCell._type = "label";
oContent.style.cssText = oNode.style.cssText;
return oCell;
}
function f_CreateTextBox(oNode)
{
var oCell = element.document.createElement("td");
var szType = oNode.getAttribute("type");
var szValue = oNode.getAttribute("value");
var szSize = oNode.getAttribute("size");
var szMaxLength = oNode.getAttribute("maxlength");
var szReadOnly = oNode.getAttribute("readonly");
if ((szType == null) || (szType.toLowerCase() != "password"))
szType = "text";
var szTabIndex = "1";
if (oNode.tabIndex != 0)
szTabIndex = oNode.getAttribute("tabindex");
oCell.innerHTML = "<input type=\"" + szType + "\">";
var textbox = oCell.children[0];
textbox.mergeAttributes(oNode);
if ((szSize != null) && (szSize != ""))
textbox.size = szSize;
if ((szMaxLength != null) && (szMaxLength != ""))
textbox.maxLength = szMaxLength;
if ((szTabIndex != null) && (szTabIndex != ""))
textbox.tabIndex = szTabIndex;
if ((szValue != null) && (szValue != ""))
textbox.value = szValue;
if ((szReadOnly != null) && (szReadOnly != ""))
textbox.readOnly = szReadOnly;
var changeScript = oNode.getAttribute("onchange");
if (changeScript != null)
textbox.onchange = function() { eval(changeScript) };
oCell.id = oNode.getAttribute("id");
oCell._type = "textbox";
oCell.noWrap = "true";
var szDefaultStyle = oNode.getAttribute("defaultStyle");
var fontStr = f_CreateFontString(oNode);
szDefaultStyle = (szDefaultStyle == null) ? fontStr : fontStr + szDefaultStyle;
if (szDefaultStyle != null)
{
oCell.setAttribute("defaultStyle", szDefaultStyle, 0);
oCell.children[0].removeAttribute("defaultStyle", 0);
}
return oCell;
}
function f_CreateFontString(oNode)
{
var fontStr = "";
if (oNode.style.fontFamily)
fontStr += "font-family:" + oNode.style.fontFamily + ";";
if (oNode.style.fontSize)
fontStr += "font-size:" + oNode.style.fontSize + ";";
if (oNode.style.fontStyle)
fontStr += "font-style:" + oNode.style.fontStyle + ";";
if (oNode.style.fontVariant)
fontStr += "font-variant:" + oNode.style.fontVariant + ";";
if (oNode.style.fontWeight)
fontStr += "font-weight:" + oNode.style.fontWeight + ";";
return fontStr;
}
function f_InheritCellFont(oCell)
{
oCell.children[0].style.fontFamily = oCell.style.fontFamily;
oCell.children[0].style.fontSize = oCell.style.fontSize;
oCell.children[0].style.fontStyle = oCell.style.fontStyle;
oCell.children[0].style.fontVariant = oCell.style.fontVariant;
oCell.children[0].style.fontWeight = oCell.style.fontWeight;
}
function f_CreateDropDownList(oNode)
{
var oCell = element.document.createElement("td");
var szTabIndex = "1";
if (oNode.tabIndex != 0)
szTabIndex = oNode.getAttribute("tabindex");
var szHtml = "<select"
if ((szTabIndex != null) && (szTabIndex != ""))
szHtml += " tabindex=\"" + szTabIndex + "\"";
szHtml += ">";
szHtml += oNode.innerHTML;
szHtml += "</select>";
oCell.innerHTML = szHtml;
oCell.children[0].mergeAttributes(oNode);
oCell.children[0].disabled = oNode.isDisabled || element.isDisabled;
oCell.id = oNode.getAttribute("id");
oCell._type = "dropdownlist";
oCell.noWrap = "true";
var changeScript = oNode.getAttribute("onchange");
if (changeScript != null)
oCell.children[0].onchange = function() { eval(changeScript) };
var szDefaultStyle = oNode.getAttribute("defaultStyle");
var fontStr = f_CreateFontString(oNode);
szDefaultStyle = (szDefaultStyle == null) ? fontStr : fontStr + szDefaultStyle;
if (szDefaultStyle != null)
{
oCell.setAttribute("defaultStyle", szDefaultStyle, 0);
oCell.children[0].removeAttribute("defaultStyle", 0);
}
return oCell;
}
function f_ApplyStylesToChildren()
{
var globalDefault = _BuiltInDefaultStyle + ";" + _tbDefaultStyle + ";";
var globalHover = _BuiltInHoverStyle + ";" + _tbHoverStyle + ";";
var globalSelected = _BuiltInSelectedStyle + ";" + _tbSelectedStyle + ";";
var numItems = f_NumItems();
var index;
for (index = 0; index < numItems; index++)
{
var item = f_GetItem(index);
var isButton = (item._type == "button");
var isCheckButton = (item._type == "checkbutton");
var hasGroup = (isCheckButton && (item._group != null));
var localDefault = item.getAttribute("defaultStyle");
var groupStyle = ";";
if (item._turnContent)
localDefault += ";writing-mode:tb-rl;";
if (isButton || isCheckButton)
{
item._defaultStyle = globalDefault;
if (hasGroup && (item._group.szDefaultStyle != null))
item._defaultStyle += item._group.szDefaultStyle + ";";
item._defaultStyle += localDefault + ";";
item._hoverStyle = item._defaultStyle + globalHover;
if (hasGroup && (item._group.szHoverStyle != null))
item._hoverStyle += item._group.szHoverStyle + ";";
item._hoverStyle += item.getAttribute("hoverStyle") + ";";
item._selectedStyle = item._defaultStyle + globalSelected;
if (hasGroup && (item._group.szSelectedStyle != null))
item._selectedStyle += item._group.szSelectedStyle + ";";
item._selectedStyle += item.getAttribute("selectedStyle") + ";";
f_ApplyNeutralStyle(item);
}
else if (item._type != "emptygroup")
{
item.style.cssText = globalDefault + localDefault;
if ((item._type == "dropdownlist") || (item._type == "textbox"))
f_InheritCellFont(item);
}
}
}
function f_ApplyNeutralStyle(oCell)
{
switch (oCell._type)
{
case "checkbutton":
oCell.style.cssText = (f_IsSelected(oCell)) ? oCell._selectedStyle : oCell._defaultStyle;
break;
case "button":
oCell.style.cssText = oCell._defaultStyle;
break;
}
}
function f_ApplyPressedStyle(oCell)
{
switch (oCell._type)
{
case "checkbutton":
oCell.style.cssText = oCell._selectedStyle;
break;
case "button":
oCell.style.cssText = oCell._selectedStyle;
break;
}
}
function f_ApplyHoverStyle(oCell)
{
switch (oCell._type)
{
case "checkbutton":
oCell.style.cssText = (f_IsSelected(oCell)) ? oCell._selectedStyle : oCell._hoverStyle;
break;
case "button":
oCell.style.cssText = oCell._hoverStyle;
break;
}
}
function f_OnMouseOver()
{
if (_IsSubmitting || !_Ready)
return;
if (_bDragging)
return;
var oCell = f_FindSurroundingCell(event.srcElement);
if ((oCell != null) && !oCell.contains(event.fromElement))
{
if (!f_Interactable(oCell) || oCell.isDisabled)
return;
if (_oInteractNode != null)
{
if (_oInteractNode == oCell)
f_ApplyPressedStyle(oCell);
}
else
{
f_ApplyHoverStyle(oCell);
}
}
}
function f_OnMouseOut()
{
if (_IsSubmitting || !_Ready)
return;
if (_bDragging)
return;
var oCell = f_FindSurroundingCell(event.srcElement);
if ((oCell != null) && !oCell.contains(event.toElement))
{
if (!f_Interactable(oCell) || oCell.isDisabled)
return;
if (_oInteractNode != null)
{
if (_oInteractNode == oCell)
f_ApplyHoverStyle(oCell);
}
else
{
f_ApplyNeutralStyle(oCell);
}
}
}
function f_OnMouseDown()
{
if (_IsSubmitting || !_Ready)
return;
if (event.button != 1)
return;
var oCell = f_FindSurroundingCell(event.srcElement);
if ((oCell != null) && (f_Interactable(oCell)))
{
f_SetCapture();
if (oCell.isDisabled)
return;
f_ApplyPressedStyle(oCell);
_oInteractNode = oCell;
}
else if (f_IsMoveable())
{
if ((oCell == null) ||
(oCell._type == "gripper"))
{
f_SetCapture();
f_StartDrag();
}
}
}
function f_OnMouseUp()
{
if (_IsSubmitting || !_Ready)
return;
if (event.button != 1)
return;
f_ReleaseCapture();
if (_oInteractNode != null)
{
f_ApplyNeutralStyle(_oInteractNode);
_oInteractNode = null;
}
f_StopDrag();
f_OnMouseOver();
}
function f_OnKeyUp()
{
if (_IsSubmitting || !_Ready)
return;
if ((event.srcElement.accessKey != null) && event.altKey &&
(event.srcElement.accessKey.toUpperCase().charCodeAt() == event.keyCode))
{
event.srcElement.click();
}
else
{
switch (event.keyCode)
{
case 13:
case 32:
var oCell = f_FindSurroundingCell(event.srcElement);
if (oCell != null)
{
_KeyboardClick = true;
oCell.click();
}
break;
}
}
}
function f_StartDrag()
{
_nLastScreenX = event.screenX;
_nLastScreenY = event.screenY;
_nLastClientX = event.clientX;
_nLastClientY = event.clientY;
_bDragging = true;
}
function f_StopDrag()
{
_bDragging = false;
}
function f_Least (a, b, c, d)
{
return ((a < b) && (a < c) && (a < d));
}
function f_Drag()
{
if (!_bDragging || (event.button != 1))
{
return;
}
var nNewLeft = offsetLeft + event.screenX - _nLastScreenX;
var nNewTop = offsetTop + event.screenY - _nLastScreenY;
_nLastScreenX = event.screenX;
_nLastScreenY = event.screenY;
var oBody = f_FindSurroundingBody();
if (oBody == null)
return;
var nDeltaLeft = (offsetLeft + event.clientX) - oBody.scrollLeft;
var nDeltaTop = (offsetTop + event.clientY) - oBody.scrollTop;
var nDeltaRight = (oBody.scrollLeft + oBody.clientWidth) - (offsetLeft + event.clientX);
var nDeltaBottom = (oBody.scrollTop + oBody.clientHeight) - (offsetTop + event.clientY);
var nMaxDelta = 10;
if (f_IsDockable() &&
((nDeltaLeft <= nMaxDelta) || (nDeltaTop <= nMaxDelta) || (nDeltaBottom <= nMaxDelta) || (nDeltaRight <= nMaxDelta)))
{
if ((!_bDocked && (nDeltaTop <= nMaxDelta)) ||
(_bDocked && (_szDockedLocation != "top") && f_Least(nDeltaTop, nDeltaBottom, nDeltaLeft, nDeltaRight)))
{
if (!_bDocked)
_PreDockOrientation = orientation;
f_ReleaseCapture();
_oTable.releaseCapture();
orientation = "horizontal";
f_SetCapture();
style.removeExpression("height");
style.height = "";
style.setExpression("left", "scrollLeft-scrollLeft+document.body.scrollLeft", "JavaScript");
style.setExpression("top", "scrollTop-scrollTop+document.body.scrollTop", "JavaScript");
style.setExpression("width", "document.body.clientWidth");
_bDocked = true;
_szDockedLocation = "top";
}
else if ((!_bDocked && (nDeltaLeft <= nMaxDelta)) ||
(_bDocked && (_szDockedLocation != "left") && f_Least(nDeltaLeft, nDeltaTop, nDeltaBottom, nDeltaRight)))
{
if (!_bDocked)
_PreDockOrientation = orientation;
f_ReleaseCapture();
orientation = "vertical";
f_SetCapture();
style.removeExpression("width");
style.width = "";
style.height = oBody.clientHeight;
style.setExpression("left", "scrollLeft-scrollLeft+document.body.scrollLeft", "JavaScript");
style.setExpression("top", "scrollTop-scrollTop+document.body.scrollTop", "JavaScript");
style.setExpression("height", "document.body.clientHeight");
_bDocked = true;
_szDockedLocation = "left";
}
else if ((!_bDocked && (nDeltaBottom <= nMaxDelta)) ||
(_bDocked && (_szDockedLocation != "bottom") && f_Least(nDeltaBottom, nDeltaTop, nDeltaLeft, nDeltaRight)))
{
if (!_bDocked)
_PreDockOrientation = orientation;
f_ReleaseCapture();
orientation = "horizontal";
f_SetCapture();
style.removeExpression("height");
style.height = "";
style.setExpression("left", "scrollLeft-scrollLeft+document.body.scrollLeft", "JavaScript");
style.setExpression("top", "scrollTop-scrollTop+document.body.scrollTop+document.body.clientHeight-offsetHeight", "JavaScript");
style.setExpression("width", "document.body.clientWidth");
_bDocked = true;
_szDockedLocation = "bottom";
}
else if ((!_bDocked && (nDeltaRight <= nMaxDelta)) ||
(_bDocked && (_szDockedLocation != "right") && f_Least(nDeltaRight, nDeltaTop, nDeltaBottom, nDeltaLeft)))
{
if (!_bDocked)
_PreDockOrientation = orientation;
f_ReleaseCapture();
orientation = "vertical";
f_SetCapture();
style.removeExpression("width");
style.width = "";
style.height = oBody.clientHeight;
style.setExpression("left", "scrollLeft-scrollLeft+document.body.scrollLeft+document.body.clientWidth-offsetWidth", "JavaScript");
style.setExpression("top", "scrollTop-scrollTop+document.body.scrollTop", "JavaScript");
style.setExpression("height", "document.body.clientHeight");
_bDocked = true;
_szDockedLocation = "right";
}
}
else if (_bDocked)
{
f_ReleaseCapture();
orientation = _PreDockOrientation;
_PreDockOrientation = "";
f_SetCapture();
style.removeExpression("left");
style.removeExpression("top");
style.removeExpression("width");
style.removeExpression("height");
style.width = "";
style.height = "";
style.left = offsetLeft + (event.clientX - _nLastClientX);
style.top = offsetTop + (event.clientY - _nLastClientY);
_bDocked = false;
}
else if (!_bDocked)
{
style.left = nNewLeft;
style.top = nNewTop;
}
}
function f_SelectItem(oCell)
{
if (!f_Interactable(oCell))
return;
if (oCell._type == "checkbutton")
{
if (!f_IsSelected(oCell))
{
f_CheckButton(oCell);
}
else if ((oCell._group == null) || (!oCell._group.bForceSel))
{
f_SetSelected(oCell, false);
if (oCell._group != null)
{
oCell._group.oSelected = null;
}
f_FireCheckChange(oCell);
}
if (_KeyboardClick)
f_ApplyNeutralStyle(oCell);
else
f_ApplyHoverStyle(oCell);
}
f_FireButtonClick(oCell);
}
function f_OnClick()
{
if (_IsSubmitting || !_Ready)
return;
var oCell = f_FindSurroundingCell(event.srcElement);
if ((oCell != null) && (!oCell.isDisabled))
f_SelectItem(oCell);
_KeyboardClick = false;
}
function f_FindSurroundingCell(oNode)
{
while (oNode != null)
{
if (oNode._type != null)
return oNode;
oNode = oNode.offsetParent;
}
return null;
}
function f_FindSurroundingBody()
{
var oParent = element.offsetParent;
while (oParent.tagName != "BODY")
{
oParent = oParent.offsetParent;
if (oParent == null)
return;
}
return oParent;
}
function f_CancelInteractEvents()
{
var oCell = f_FindSurroundingCell(event.srcElement);
if (oCell == null)
{
event.returnValue = false;
}
else
{
switch (oCell._type)
{
case "button":
case "checkbutton":
case "separator":
case "gripper":
case "label":
event.returnValue = false;
break;
}
}
}
function f_FireCheckChange(oCell)
{
evCheckChange.fire(f_CreateEventObject(oCell));
}
function f_FireButtonClick(oCell)
{
evButtonClick.fire(f_CreateEventObject(oCell));
}
function f_CreateEventObject(oCell)
{
var oEvent= createEventObject();
if (oCell != null)
{
oEvent.srcNode = f_PublicMakeContract(oCell);
var nIndex = f_GetIndexFromCell(oCell);
if (nIndex >= 0)
oEvent.flatIndex = nIndex;
}
return oEvent;
}
function f_GetIndexFromCell(oCell)
{
var parent = f_GetParent();
var item;
var index;
var flatIndex = -1;
var vertical = (orientation == "vertical");
for (index = 0; index < parent.children.length; index++)
{
item = parent.children[index];
if (vertical)
item = item.children[0];
if (item._type != "emptygroup")
flatIndex++;
if (oCell.uniqueID == item.uniqueID)
return flatIndex;
}
return -1;
}
function f_SetCapture()
{
f_ReleaseCapture();
_oTable.setCapture();
}
function f_ReleaseCapture()
{
_oTable.releaseCapture();
}
function f_OnStop()
{
if (!_IsSubmitting || (_OnStopCount > 0))
{
_IsSubmitting = false;
element.removeAttribute("_submitting");
}
_OnStopCount++;
}
function f_CleanupEvents()
{
var eventArray = window.__toolbarAttachedEvents;
if ((eventArray != null) && (eventArray[0]))
{
var newArray = new Array(false);
for (var i = 1; i < eventArray.length; i++)
{
if (element.document.all[eventArray[i][0]] == null)
{
element.document.detachEvent("onstop", eventArray[i][1]);
}
else
{
newArray = newArray.concat(new Array(eventArray[i]));
}
}
window.__toolbarAttachedEvents = newArray;
}
}
function f_AddStopEvent()
{
var eventArray = window.__toolbarAttachedEvents;
if (eventArray == null)
{
eventArray = new Array(false);
}
element.document.attachEvent("onstop", f_OnStop);
eventArray[0] = true;
entry = new Array(element.uniqueID, f_OnStop);
window.__toolbarAttachedEvents = eventArray.concat(new Array(entry));
}
function f_OnDocReady()
{
f_CleanupEvents();
evWCReady.fire(createEventObject());
}
</script>
</public:component>