B
~BD~
Hi - I'm still experimenting with this machine. I found a temp file which contains the information
listed below. Has anyone any idea what effect such a file will have on this PC? (XP Home, SP3 and
all updates).
Thank you in advance for any insight you may be able to provide.
Dave
/*
* ====================== dir.js ========================
* ====== Javascript include for director.hta ===========
* ======================================================
*/
// initialize global variables
var debug = new Boolean // loaded from persist.
var hintsOpen = new Boolean // loaded from persist.
var hintsWidth = 175
var totalWidth = 0
var currentDevice
var windowHeight = 190 // set for current container app. HTA: 190, HTM/IE: 300
var minWindowWidth = 220 // w/o width of <select> and 'settings'
var widthAdjust = -27 /// set for current container app. HTA: 190, HTM/IE: -3
var updateInProgress = new Boolean
//Added by Brent
var doubleClicked = false
var currentButton
window.onload=initialize
function initialize() {
updateInProgress = false
debug = false
initializeDevices()
loadPersist()
setCurrentDevice()
updateLayout()
}
function setCurrentDevice() {
// was app started with a context id
var ctxID = window.external.ContextID
if (ctxID == "")
return
for (var i = 0 i < oDevice.length i++)
{
if (oDevice.devID == ctxID)
{
currentDevice = i
break
}
}
}
function changeDevice(device) {
currentDevice=device
updateLayout()
savePersist()
}
function expandHints() {
if (updateInProgress)
return
updateInProgress = true
hintsOpen = !hintsOpen
updateLayout()
savePersist()
}
function toggleDebug() {
// debug = !debug
// updateLayout()
}
function initializeDevices() {
// populate oDevice data structure from Devices.xml
oDevice = new Array
var xml = new ActiveXObject("msxml")
//Get file path for devices.xml in User's App Data directory
//Start with 'file:///'
var devFilePath = new String("file:\/\/\/")
//Get the path for the file from call to COM code
devFilePath += window.external.GetAppDataPath()
//Replace all '\\' occurrences with '/'
devFilePath = devFilePath.replace(/\\/g,"\/")
//Replace spaces with '%20'
devFilePath = devFilePath.replace(/\s/g,"%20")
//Add the name of the file
devFilePath += "devices.xml"
xml.URL = devFilePath
devicesXML = xml.root.children
for ( var i=0 i<devicesXML.length i++ ) { // could eliminate this intermediate data structure
oDevice = new Object
oDevice.devID = devicesXML.item(i).children.item(0).text
oDevice.id = devicesXML.item(i).children.item(1).text
oDevice.service = new Array
services = devicesXML.item(i).children.item(2).children
for ( var j=0 j<services.length j++ ) {
oDevice.service[j] = new Object
oDevice.service[j].serviceID = services.item(j).children.item(0).text
oDevice.service[j].action = services.item(j).children.item(1).text
oDevice.service[j].status = services.item(j).children.item(2).text
}
if ((devicesXML.item(i).children.length > 3) &&
(devicesXML.item(i).children.item(3).tagname == "STATUS"))
oDevice.statusmon = devicesXML.item(i).children.item(3).children.item(0).text
else
oDevice.statusmon = null
}
if ( debug ) { alert( "found "+ devicesXML.length +" devices")}
}
function externalGetData(name) {
return window.external.GetPersistentData(name)
}
function loadPersist() {
// replace with Persistence code
hintsOpen = true
debug = false
currentDevice = 0
//var persistHints = window.external.GetPersistentData("hintsOpen")
var persistHints = externalGetData("hintsOpen")
if (persistHints != "")
{
hintsOpen = eval(unescape(persistHints))
}
//var persistDevice = window.external.GetPersistentData("currentDevice")
var persistDevice = externalGetData("currentDevice")
if (persistDevice != "")
{
var devID = unescape(persistDevice)
for (var j = 0 j < oDevice.length j++)
{
if (oDevice[j].devID == devID)
{
currentDevice = j
break
}
}
}
window.resizeTo(663,windowHeight) //
}
function externalSaveData(name, value) {
window.external.SavePersistentData(name, value)
}
function savePersist() {
externalSaveData("hintsOpen", escape(hintsOpen))
externalSaveData("currentDevice", escape(oDevice[currentDevice].devID))
}
function updateLayout() {
// debug stuff ===================================
if ( debug ) {
oAllButtons.style.border = "1px solid black"
oIconBackground.style.border = "1px solid cyan"
oHintsTitle.style.border = "1px dashed black"
oHintsText.style.border = "1px dotted black"
oIconBackground.style.backgroundColor = "yellow"
oHintBackground.style.backgroundColor = "red"
oAllButtons.style.visibility = "visible"
// debug stuff ===================================
} else {
oAllButtons.style.visibility = "hidden"
}
// update Select
oSelect.options.length = 0
for ( var i=0 i< devicesXML.length i++ ) {
var oOption = document.createElement("OPTION")
oOption.text=oDevice.id
oSelect.options.add(oOption)
}
// select the current device in the drop down combo box
oSelect.selectedIndex = currentDevice
// assign the access key to 'Select Device'
var selectText = tdcStrings.recordset("dir-label-select").value
var selectAccKeyIndex = selectText.toLowerCase().indexOf("<u>")
if (selectAccKeyIndex >= 0)
{
oSelect.accessKey = selectText.substr(selectAccKeyIndex + 3, 1)
}
// assign the access key to 'Settings' menu item
var settingsText = tdcStrings.recordset("settings-title").value
var settingsAccKeyIndex = settingsText.toLowerCase().indexOf("<u>")
if (settingsAccKeyIndex >= 0)
{
settingstitle.accessKey = settingsText.substr(settingsAccKeyIndex + 3, 1)
}
// assign the access key to 'Status' menu item
var statusText = tdcStrings.recordset("status-title").value
var statusAccKeyIndex = statusText.toLowerCase().indexOf("<u>")
if (statusAccKeyIndex >= 0)
{
statustitle.accessKey = statusText.substr(statusAccKeyIndex + 3, 1)
}
// empty old buttons
oAllButtons.innerHTML=""
// add new button - hidden
for ( var j=0 j<oDevice[currentDevice].service.length j++ ) {
button = oDevice[currentDevice].service[j].serviceID
var buttonText = tdcStrings.recordset("dir-btn-"+button).value
var accKey = null
var accKeyIndex = buttonText.toLowerCase().indexOf("<u>")
if (accKeyIndex >= 0)
{
accKey = buttonText.substr(accKeyIndex + 3, 1)
}
html=""
html+="<span id='oBtn" + button + "' "
html+="class = 'service-button' onMouseOver='showHint(this.id)' "
//Updated by Brent
html+="onClick = 'fnSingleClick(\" " +button+ " \")' "
html+="onDblClick = 'fnDoubleClick(\" " +button+ " \")'> "
html+="<img id='oImg" + button + "' "
html+="style = 'margin-right:0' "
if ( oDevice[currentDevice].service[j].status=="ready" ) {
html+="class = 'rollover' src='img/" + button + ".bmp'></br>"
} else {
html+="src='img/" + button + "_f4.bmp'></br>"
}
html+="<a class='service-button' href=\"#\" accesskey=" + accKey + " style='text-decoration:none'>
"
html+="<label for=\"oImg"+button+"\" datasrc = '#tdcStrings' datafld = 'dir-btn-" + button + "'
"
html+="dataFormatAs = 'HTML'></label></a></span>"
oAllButtons.insertAdjacentHTML("beforeEnd", html)
}
window.setTimeout("finishLayout()" , 500)
}
//Single and Double click handlers added by Brent
function fnSingleClick(button)
{
//Take a little time first
currentButton = button
timer = setTimeout("if (doubleClicked == false){runApp(currentButton)}doubleClicked = false",500)
}
function fnDoubleClick(button)
{
doubleClicked = true
currentButton = button
runApp(currentButton)
}
function finishLayout() {
// evaluate button kerning pairs
var kernWidth=0
var maxWidth=0
var widths = " widths: "
for ( var i=0 i<oDevice[currentDevice].service.length - 1 i++ ) {
button = oDevice[currentDevice].service.serviceID
nextButton = oDevice[currentDevice].service[i+1].serviceID
kernWidth = Math.max(kernWidth, 0.5 * (eval("oBtn" + button + ".offsetWidth") + eval("oBtn" +
nextButton + ".offsetWidth")))
widths += " " + eval("oBtn" + button + ".offsetWidth")
}
if (debug) status = "kern:" + kernWidth + widths
// kern each button (except last) & calculate total space needed to avoid wrap
totalWidth = 0
for ( var i=0 i<oDevice[currentDevice].service.length - 1 i++ ) {
button = oDevice[currentDevice].service.serviceID
thisWidth = eval("oBtn" + button + ".offsetWidth")
nextButton = oDevice[currentDevice].service[i+1].serviceID
nextWidth = eval("oBtn" + nextButton + ".offsetWidth")
current = 0.5 * (thisWidth + nextWidth)
thisButton = eval("oBtn" + button)
thisKern = kernWidth - current
thisButton.style.marginRight = thisKern
totalWidth += thisWidth + thisKern + nextWidth * (i==oDevice[currentDevice].service.length -2)
}
settingstitle.style.width = settingstitle.offsetWidth
statustitle.style.width = statustitle.offsetWidth
// prepare to resize window
widthBySettings = minWindowWidth + settingstitle.offsetWidth + oSelect.offsetWidth +
statustitle.offsetWidth
widthByButtons = totalWidth + 95
widthBump = Math.max(0, widthBySettings - widthByButtons)
windowWidth = Math.max(widthBySettings, widthByButtons)
windowWidth = hintsOpen ? windowWidth + hintsWidth : windowWidth
// resize
window.resizeTo(windowWidth + widthAdjust, windowHeight)
// position elements
rightSideButtons = oBtnhelp.offsetLeft + oBtnhelp.offsetWidth + 20
oIconBackground.style.width = rightSideButtons + widthBump + 10
oMenuMask.style.left = oSelect.offsetWidth + 60
// position drop-down menu
if (document.all.menu1)
document.all.menu1.style.left = oMenuMask.style.left
else
oMenuMask.style.visibility = "hidden"
if (oDevice[currentDevice].statusmon)
{
oMenuStatusMask.style.left = oSelect.offsetWidth + settingstitle.offsetWidth + 80
oMenuStatusMask.style.visibility = "visible"
}
else
oMenuStatusMask.style.visibility = "hidden"
rightSideAnchor = rightSideButtons + widthBump + 10
// hints-specific
if ( hintsOpen ) {
oFilletTR.className="fillet-small-xlight-tr"
oFilletBR.className="fillet-small-xlight-br"
rightSideAnchor += hintsWidth
oHintBackground.style.width = rightSideButtons + widthBump + hintsWidth + 10
oBtnHints.style.visibility = "hidden"
oBtnHintsOut.style.visibility = "visible"
oHintsTitle.style.left = rightSideButtons + widthBump + 25
oHintsText.style.left = rightSideButtons + widthBump + 25
oHintBackground.style.display = ""
oHintsTitle.style.display = ""
oHintsText.style.display = ""
} else {
oFilletTR.className="fillet-small-gray-tr"
oFilletBR.className="fillet-small-gray-br"
oBtnHintsOut.style.visibility = "hidden"
oBtnHints.style.visibility = "visible"
oHintBackground.style.display = "none"
oHintsTitle.style.display = "none"
oHintsText.style.display = "none"
oBtnHints.style.left = rightSideAnchor + 15
}
// oBtnHints.style.left = rightSideAnchor + 15
oBtnHintsOut.style.left = rightSideAnchor + 15
oFilletTR.style.left = rightSideAnchor
oFilletBR.style.left = rightSideAnchor
oHPLogo.style.left = rightSideAnchor - 40
// spread out buttons
if ( widthBump>0 ) {
for ( var i=0 i<oDevice[currentDevice].service.length i++ ) {
button = oDevice[currentDevice].service.serviceID
thisButton = eval("oBtn" + button)
thisButton.style.marginLeft = 0.5 * widthBump/oDevice[currentDevice].service.length
thisButton.style.marginRight = 0.5 * widthBump/oDevice[currentDevice].service.length
}
}
oAll.style.visibility = "visible"
oAllButtons.style.visibility = "visible"
// hide the drop-down list box and menu if no devices are installed
if ((oDevice.length == 1) && (oDevice[0].devID == "unknown"))
{
oSelectLabel.style.visibility = "hidden"
oSelect.style.visibility = "hidden"
oMenuMask.style.visibility = "hidden"
}
updateMenus()
updateInProgress = false
}
function showHint(buttonID) {
service = buttonID.substring(4)
oHintsTitleLabel.dataFld="dir-hint-" + service.toLowerCase() + "-title"
oHintsLabel.dataFld="dir-hint-" + service.toLowerCase()
}
function runApp(buttonID){
//alert("run: "+buttonID + " for device:" + currentDevice)
//var shell = new ActiveXObject("WScript.Shell")
//shell.run(app,1,false)
btnID = buttonID.substring(1, buttonID.length - 1)
for (var i = 0 i < oDevice[currentDevice].service.length i++)
{
if (btnID== oDevice[currentDevice].service.serviceID)
{
window.external.RunApp(btnID,
oDevice[currentDevice].service.action,
oDevice[currentDevice].devID)
break
}
}
}
// Present Settings menu based on currentDevice
function processMenu() {
var menuStr = "show-menu=dev"+currentDevice+"-settings"
ShM=1
popi(menuStr, 'menu1', 0)
window.event.cancelBubble = true
}
function processStatusBtn() {
window.external.RunApp("status", oDevice[currentDevice].statusmon,
oDevice[currentDevice].devID)
}
function processKeyDown() {
//if ((window.event.altKey) && (window.event.keyCode >= 48))
//{
// alert("got key down: code="+window.event.keyCode)
//}
//else if (window.event.keyCode == 13)
//{
// alert("got key down: code=<ENTER>")
//}
//else
// alert("processKeydown")
}
function updateMenus() {
var maxMenuWidth = 0
var menuNum = 1
while(eval("window.menu"+menuNum))
{
maxMenuWidth = 0
var dirMenu=eval("menu"+menuNum)
var menuName = dirMenu[0]
var menuStructIdx = getMenuStructIndex(dirMenu[0])
if (menuStructIdx >= 0)
{
for (var i = 0 i < menuStruct[menuStructIdx].entry.length i++)
{
var entryName = menuStruct[menuStructIdx].entry.name
var elem = eval("document.all('"+entryName+"')")
maxMenuWidth = Math.max(maxMenuWidth, elem.offsetWidth)
}
if (maxMenuWidth > 0)
{
var ancestorElem = eval("document.all('menu"+menuNum+"')")
// add extra pixels for the border and submenu image (arrow bitmap)
maxMenuWidth += (dirMenu[4] * 2) + 8
//if (maxMenuWidth > document.all('menu1').offsetLeft)
// maxMenuWidth = document.all('menu1').offsetLeft
ancestorElem.style.width = maxMenuWidth+"px"
for (var j = 0 j < ancestorElem.children.length j++)
{
var childElem = ancestorElem.children[j]
if ((childElem.children.length > 0) &&
(childElem.children[0].style.width))
childElem.children[0].style.width = maxMenuWidth+"px"
}
}
}
menuNum++
}
sis()
}
listed below. Has anyone any idea what effect such a file will have on this PC? (XP Home, SP3 and
all updates).
Thank you in advance for any insight you may be able to provide.
Dave
/*
* ====================== dir.js ========================
* ====== Javascript include for director.hta ===========
* ======================================================
*/
// initialize global variables
var debug = new Boolean // loaded from persist.
var hintsOpen = new Boolean // loaded from persist.
var hintsWidth = 175
var totalWidth = 0
var currentDevice
var windowHeight = 190 // set for current container app. HTA: 190, HTM/IE: 300
var minWindowWidth = 220 // w/o width of <select> and 'settings'
var widthAdjust = -27 /// set for current container app. HTA: 190, HTM/IE: -3
var updateInProgress = new Boolean
//Added by Brent
var doubleClicked = false
var currentButton
window.onload=initialize
function initialize() {
updateInProgress = false
debug = false
initializeDevices()
loadPersist()
setCurrentDevice()
updateLayout()
}
function setCurrentDevice() {
// was app started with a context id
var ctxID = window.external.ContextID
if (ctxID == "")
return
for (var i = 0 i < oDevice.length i++)
{
if (oDevice.devID == ctxID)
{
currentDevice = i
break
}
}
}
function changeDevice(device) {
currentDevice=device
updateLayout()
savePersist()
}
function expandHints() {
if (updateInProgress)
return
updateInProgress = true
hintsOpen = !hintsOpen
updateLayout()
savePersist()
}
function toggleDebug() {
// debug = !debug
// updateLayout()
}
function initializeDevices() {
// populate oDevice data structure from Devices.xml
oDevice = new Array
var xml = new ActiveXObject("msxml")
//Get file path for devices.xml in User's App Data directory
//Start with 'file:///'
var devFilePath = new String("file:\/\/\/")
//Get the path for the file from call to COM code
devFilePath += window.external.GetAppDataPath()
//Replace all '\\' occurrences with '/'
devFilePath = devFilePath.replace(/\\/g,"\/")
//Replace spaces with '%20'
devFilePath = devFilePath.replace(/\s/g,"%20")
//Add the name of the file
devFilePath += "devices.xml"
xml.URL = devFilePath
devicesXML = xml.root.children
for ( var i=0 i<devicesXML.length i++ ) { // could eliminate this intermediate data structure
oDevice = new Object
oDevice.devID = devicesXML.item(i).children.item(0).text
oDevice.id = devicesXML.item(i).children.item(1).text
oDevice.service = new Array
services = devicesXML.item(i).children.item(2).children
for ( var j=0 j<services.length j++ ) {
oDevice.service[j] = new Object
oDevice.service[j].serviceID = services.item(j).children.item(0).text
oDevice.service[j].action = services.item(j).children.item(1).text
oDevice.service[j].status = services.item(j).children.item(2).text
}
if ((devicesXML.item(i).children.length > 3) &&
(devicesXML.item(i).children.item(3).tagname == "STATUS"))
oDevice.statusmon = devicesXML.item(i).children.item(3).children.item(0).text
else
oDevice.statusmon = null
}
if ( debug ) { alert( "found "+ devicesXML.length +" devices")}
}
function externalGetData(name) {
return window.external.GetPersistentData(name)
}
function loadPersist() {
// replace with Persistence code
hintsOpen = true
debug = false
currentDevice = 0
//var persistHints = window.external.GetPersistentData("hintsOpen")
var persistHints = externalGetData("hintsOpen")
if (persistHints != "")
{
hintsOpen = eval(unescape(persistHints))
}
//var persistDevice = window.external.GetPersistentData("currentDevice")
var persistDevice = externalGetData("currentDevice")
if (persistDevice != "")
{
var devID = unescape(persistDevice)
for (var j = 0 j < oDevice.length j++)
{
if (oDevice[j].devID == devID)
{
currentDevice = j
break
}
}
}
window.resizeTo(663,windowHeight) //
}
function externalSaveData(name, value) {
window.external.SavePersistentData(name, value)
}
function savePersist() {
externalSaveData("hintsOpen", escape(hintsOpen))
externalSaveData("currentDevice", escape(oDevice[currentDevice].devID))
}
function updateLayout() {
// debug stuff ===================================
if ( debug ) {
oAllButtons.style.border = "1px solid black"
oIconBackground.style.border = "1px solid cyan"
oHintsTitle.style.border = "1px dashed black"
oHintsText.style.border = "1px dotted black"
oIconBackground.style.backgroundColor = "yellow"
oHintBackground.style.backgroundColor = "red"
oAllButtons.style.visibility = "visible"
// debug stuff ===================================
} else {
oAllButtons.style.visibility = "hidden"
}
// update Select
oSelect.options.length = 0
for ( var i=0 i< devicesXML.length i++ ) {
var oOption = document.createElement("OPTION")
oOption.text=oDevice.id
oSelect.options.add(oOption)
}
// select the current device in the drop down combo box
oSelect.selectedIndex = currentDevice
// assign the access key to 'Select Device'
var selectText = tdcStrings.recordset("dir-label-select").value
var selectAccKeyIndex = selectText.toLowerCase().indexOf("<u>")
if (selectAccKeyIndex >= 0)
{
oSelect.accessKey = selectText.substr(selectAccKeyIndex + 3, 1)
}
// assign the access key to 'Settings' menu item
var settingsText = tdcStrings.recordset("settings-title").value
var settingsAccKeyIndex = settingsText.toLowerCase().indexOf("<u>")
if (settingsAccKeyIndex >= 0)
{
settingstitle.accessKey = settingsText.substr(settingsAccKeyIndex + 3, 1)
}
// assign the access key to 'Status' menu item
var statusText = tdcStrings.recordset("status-title").value
var statusAccKeyIndex = statusText.toLowerCase().indexOf("<u>")
if (statusAccKeyIndex >= 0)
{
statustitle.accessKey = statusText.substr(statusAccKeyIndex + 3, 1)
}
// empty old buttons
oAllButtons.innerHTML=""
// add new button - hidden
for ( var j=0 j<oDevice[currentDevice].service.length j++ ) {
button = oDevice[currentDevice].service[j].serviceID
var buttonText = tdcStrings.recordset("dir-btn-"+button).value
var accKey = null
var accKeyIndex = buttonText.toLowerCase().indexOf("<u>")
if (accKeyIndex >= 0)
{
accKey = buttonText.substr(accKeyIndex + 3, 1)
}
html=""
html+="<span id='oBtn" + button + "' "
html+="class = 'service-button' onMouseOver='showHint(this.id)' "
//Updated by Brent
html+="onClick = 'fnSingleClick(\" " +button+ " \")' "
html+="onDblClick = 'fnDoubleClick(\" " +button+ " \")'> "
html+="<img id='oImg" + button + "' "
html+="style = 'margin-right:0' "
if ( oDevice[currentDevice].service[j].status=="ready" ) {
html+="class = 'rollover' src='img/" + button + ".bmp'></br>"
} else {
html+="src='img/" + button + "_f4.bmp'></br>"
}
html+="<a class='service-button' href=\"#\" accesskey=" + accKey + " style='text-decoration:none'>
"
html+="<label for=\"oImg"+button+"\" datasrc = '#tdcStrings' datafld = 'dir-btn-" + button + "'
"
html+="dataFormatAs = 'HTML'></label></a></span>"
oAllButtons.insertAdjacentHTML("beforeEnd", html)
}
window.setTimeout("finishLayout()" , 500)
}
//Single and Double click handlers added by Brent
function fnSingleClick(button)
{
//Take a little time first
currentButton = button
timer = setTimeout("if (doubleClicked == false){runApp(currentButton)}doubleClicked = false",500)
}
function fnDoubleClick(button)
{
doubleClicked = true
currentButton = button
runApp(currentButton)
}
function finishLayout() {
// evaluate button kerning pairs
var kernWidth=0
var maxWidth=0
var widths = " widths: "
for ( var i=0 i<oDevice[currentDevice].service.length - 1 i++ ) {
button = oDevice[currentDevice].service.serviceID
nextButton = oDevice[currentDevice].service[i+1].serviceID
kernWidth = Math.max(kernWidth, 0.5 * (eval("oBtn" + button + ".offsetWidth") + eval("oBtn" +
nextButton + ".offsetWidth")))
widths += " " + eval("oBtn" + button + ".offsetWidth")
}
if (debug) status = "kern:" + kernWidth + widths
// kern each button (except last) & calculate total space needed to avoid wrap
totalWidth = 0
for ( var i=0 i<oDevice[currentDevice].service.length - 1 i++ ) {
button = oDevice[currentDevice].service.serviceID
thisWidth = eval("oBtn" + button + ".offsetWidth")
nextButton = oDevice[currentDevice].service[i+1].serviceID
nextWidth = eval("oBtn" + nextButton + ".offsetWidth")
current = 0.5 * (thisWidth + nextWidth)
thisButton = eval("oBtn" + button)
thisKern = kernWidth - current
thisButton.style.marginRight = thisKern
totalWidth += thisWidth + thisKern + nextWidth * (i==oDevice[currentDevice].service.length -2)
}
settingstitle.style.width = settingstitle.offsetWidth
statustitle.style.width = statustitle.offsetWidth
// prepare to resize window
widthBySettings = minWindowWidth + settingstitle.offsetWidth + oSelect.offsetWidth +
statustitle.offsetWidth
widthByButtons = totalWidth + 95
widthBump = Math.max(0, widthBySettings - widthByButtons)
windowWidth = Math.max(widthBySettings, widthByButtons)
windowWidth = hintsOpen ? windowWidth + hintsWidth : windowWidth
// resize
window.resizeTo(windowWidth + widthAdjust, windowHeight)
// position elements
rightSideButtons = oBtnhelp.offsetLeft + oBtnhelp.offsetWidth + 20
oIconBackground.style.width = rightSideButtons + widthBump + 10
oMenuMask.style.left = oSelect.offsetWidth + 60
// position drop-down menu
if (document.all.menu1)
document.all.menu1.style.left = oMenuMask.style.left
else
oMenuMask.style.visibility = "hidden"
if (oDevice[currentDevice].statusmon)
{
oMenuStatusMask.style.left = oSelect.offsetWidth + settingstitle.offsetWidth + 80
oMenuStatusMask.style.visibility = "visible"
}
else
oMenuStatusMask.style.visibility = "hidden"
rightSideAnchor = rightSideButtons + widthBump + 10
// hints-specific
if ( hintsOpen ) {
oFilletTR.className="fillet-small-xlight-tr"
oFilletBR.className="fillet-small-xlight-br"
rightSideAnchor += hintsWidth
oHintBackground.style.width = rightSideButtons + widthBump + hintsWidth + 10
oBtnHints.style.visibility = "hidden"
oBtnHintsOut.style.visibility = "visible"
oHintsTitle.style.left = rightSideButtons + widthBump + 25
oHintsText.style.left = rightSideButtons + widthBump + 25
oHintBackground.style.display = ""
oHintsTitle.style.display = ""
oHintsText.style.display = ""
} else {
oFilletTR.className="fillet-small-gray-tr"
oFilletBR.className="fillet-small-gray-br"
oBtnHintsOut.style.visibility = "hidden"
oBtnHints.style.visibility = "visible"
oHintBackground.style.display = "none"
oHintsTitle.style.display = "none"
oHintsText.style.display = "none"
oBtnHints.style.left = rightSideAnchor + 15
}
// oBtnHints.style.left = rightSideAnchor + 15
oBtnHintsOut.style.left = rightSideAnchor + 15
oFilletTR.style.left = rightSideAnchor
oFilletBR.style.left = rightSideAnchor
oHPLogo.style.left = rightSideAnchor - 40
// spread out buttons
if ( widthBump>0 ) {
for ( var i=0 i<oDevice[currentDevice].service.length i++ ) {
button = oDevice[currentDevice].service.serviceID
thisButton = eval("oBtn" + button)
thisButton.style.marginLeft = 0.5 * widthBump/oDevice[currentDevice].service.length
thisButton.style.marginRight = 0.5 * widthBump/oDevice[currentDevice].service.length
}
}
oAll.style.visibility = "visible"
oAllButtons.style.visibility = "visible"
// hide the drop-down list box and menu if no devices are installed
if ((oDevice.length == 1) && (oDevice[0].devID == "unknown"))
{
oSelectLabel.style.visibility = "hidden"
oSelect.style.visibility = "hidden"
oMenuMask.style.visibility = "hidden"
}
updateMenus()
updateInProgress = false
}
function showHint(buttonID) {
service = buttonID.substring(4)
oHintsTitleLabel.dataFld="dir-hint-" + service.toLowerCase() + "-title"
oHintsLabel.dataFld="dir-hint-" + service.toLowerCase()
}
function runApp(buttonID){
//alert("run: "+buttonID + " for device:" + currentDevice)
//var shell = new ActiveXObject("WScript.Shell")
//shell.run(app,1,false)
btnID = buttonID.substring(1, buttonID.length - 1)
for (var i = 0 i < oDevice[currentDevice].service.length i++)
{
if (btnID== oDevice[currentDevice].service.serviceID)
{
window.external.RunApp(btnID,
oDevice[currentDevice].service.action,
oDevice[currentDevice].devID)
break
}
}
}
// Present Settings menu based on currentDevice
function processMenu() {
var menuStr = "show-menu=dev"+currentDevice+"-settings"
ShM=1
popi(menuStr, 'menu1', 0)
window.event.cancelBubble = true
}
function processStatusBtn() {
window.external.RunApp("status", oDevice[currentDevice].statusmon,
oDevice[currentDevice].devID)
}
function processKeyDown() {
//if ((window.event.altKey) && (window.event.keyCode >= 48))
//{
// alert("got key down: code="+window.event.keyCode)
//}
//else if (window.event.keyCode == 13)
//{
// alert("got key down: code=<ENTER>")
//}
//else
// alert("processKeydown")
}
function updateMenus() {
var maxMenuWidth = 0
var menuNum = 1
while(eval("window.menu"+menuNum))
{
maxMenuWidth = 0
var dirMenu=eval("menu"+menuNum)
var menuName = dirMenu[0]
var menuStructIdx = getMenuStructIndex(dirMenu[0])
if (menuStructIdx >= 0)
{
for (var i = 0 i < menuStruct[menuStructIdx].entry.length i++)
{
var entryName = menuStruct[menuStructIdx].entry.name
var elem = eval("document.all('"+entryName+"')")
maxMenuWidth = Math.max(maxMenuWidth, elem.offsetWidth)
}
if (maxMenuWidth > 0)
{
var ancestorElem = eval("document.all('menu"+menuNum+"')")
// add extra pixels for the border and submenu image (arrow bitmap)
maxMenuWidth += (dirMenu[4] * 2) + 8
//if (maxMenuWidth > document.all('menu1').offsetLeft)
// maxMenuWidth = document.all('menu1').offsetLeft
ancestorElem.style.width = maxMenuWidth+"px"
for (var j = 0 j < ancestorElem.children.length j++)
{
var childElem = ancestorElem.children[j]
if ((childElem.children.length > 0) &&
(childElem.children[0].style.width))
childElem.children[0].style.width = maxMenuWidth+"px"
}
}
}
menuNum++
}
sis()
}