You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

986 lines
29 KiB

// <script>
/*
=============================================================
WebIntelligence(r) Report Panel
Copyright(c) 2001-2003 Business Objects S.A.
All rights reserved
Use and support of this software is governed by the terms
and conditions of the software license agreement and support
policy of Business Objects S.A. and/or its subsidiaries.
The Business Objects products and technology are protected
by the US patent number 5,555,403 and 6,247,008
File: dialog.js
Dialog boxes
=============================================================
*/
if (window._DHTML_LIB_DIALOG_JS_LOADED==null)
{
_DHTML_LIB_DIALOG_JS_LOADED=true
DialogBoxWidget_modals=new Array;
DialogBoxWidget_instances=new Array
DialogBoxWidget_current=null
_promptDlgInfo=0
_promptDlgWarning=1
_promptDlgCritical=2
_dlgTitleLBorderToTxt=20
_dlgTitleHeight=25
_dlgTitleMarginBottom=4
_dlgTitleRBorderToClose=10
//close button in the title
_dlgTitleCloseBtnImgFile='dialogtitle.gif'
_dlgTitleCloseBtnW=11
_dlgTitleCloseBtnH=10
_dlgTitleCloseBtnDy=26
_dlgTitleCloseBtnHoverDy=37
_dlgBottomMargin=14
}
// ================================================================================
// ================================================================================
//
// OBJECT newDialogBoxWidget (Constructor)
//
// Class for dialog box
//
// ================================================================================
// ================================================================================
function newDialogBoxWidget(id,title,width,height,defaultCB,cancelCB,noCloseButton,isAlert)
// CONSTRUCTOR
// id [String] the id for DHTML processing
// title [String] the caption dialog text
// width [int optional] dialog box width
// height [int optional] dialog box height
// defaultCB [Function optional] callback when enter key is hit
// cancelCB [Function optional] callback when esc key is hit or close button pushed
// noCloseButton [Boolean optional] if true no close (on top right) button is displayed
// isAlert [Boolean optional] if true JAWS will read dialog as an "alert" and read everything
{
var o=newWidget(id)
o.title=title
o.width=width
o.height=height
o.defaultCB=defaultCB
o.cancelCB=cancelCB
o.noCloseButton=noCloseButton?noCloseButton:false
o.isAlert=isAlert
o.closeCB=null
o.resizeable=false
o.oldMouseDown=null
o.oldCurrent=null
o.modal=null
o.hiddenVis=new Array
o.lastLink=null
o.firstLink=null
o.titleLayer = null
o.defaultBtn=null
o.divLayer=null
o.oldInit=o.init
o.oldShow=o.show
o.init=DialogBoxWidget_init
o.setResize=DialogBoxWidget_setResize
o.beginHTML=DialogBoxWidget_beginHTML
o.endHTML=DialogBoxWidget_endHTML
o.show=DialogBoxWidget_Show
o.center=DialogBoxWidget_center
o.focus=DialogBoxWidget_focus
o.setTitle=DialogBoxWidget_setTitle
o.getContainerWidth=DialogBoxWidget_getContainerWidth
o.getContainerHeight=DialogBoxWidget_getContainerHeight
DialogBoxWidget_instances[id]=o
o.modal=newWidget('modal_'+id)
o.placeIframe=DialogBoxWidget_placeIframe
o.oldResize=o.resize
o.resize=DialogBoxWidget_resize
o.attachDefaultButton=DialogBoxWidget_attachDefaultButton
o.unload=DialogBoxWidget_unload
o.close = DialogBoxWidget_close;
o.setCloseCB = DialogBoxWidget_setCloseCB;
o.setNoCloseButton = DialogBoxWidget_setNoCloseButton;
if (!_ie)
{
if (o.width!=null) o.width=Math.max(0,width+4)
if (o.height!=null) o.height=Math.max(0,height+4)
}
return o
}
// ================================================================================
function DialogBoxWidget_setResize(resizeCB,minWidth,minHeight,noResizeW,noResizeH)
// Allow the dialog box to be resized
// resizeCB [Function] callback for resize
// minWidth [int] minimum dialog width
// minHeight [int] minimum dialog height
// noResizeW [boolean] disable vertical resizing
// noResizeH [boolean] disable horizontal resizing
{
var o=this;
o.resizeable=true
o.resizeCB=resizeCB
o.minWidth=minWidth?minWidth:50
o.minHeight=minHeight?minHeight:50
o.noResizeW=noResizeW
o.noResizeH=noResizeH
}
// ================================================================================
function DialogBoxWidget_setTitle(title)
// Change the dialog title
// title [String] the new title
{
var o=this
o.title=title
if (o.titleLayer == null)
o.titleLayer = getLayer('titledialog_'+this.id);
o.titleLayer.innerHTML=convStr(title)
}
// ================================================================================
function DialogBoxWidget_setCloseIcon(lyr,isActive)
// PRIVATE
{
changeOffset(lyr,0,(isActive==1?0:18))
}
// ================================================================================
function DialogBoxWidget_beginHTML()
// Get the widget beginning HTML
// Returns : [String] the HTML
{
with (this) {
var moveableCb = ' onselectstart="return false" ondragstart="return false" onmousedown="' + _codeWinName
+ '.DialogBoxWidget_down(event,\'' + id + '\',this,false);return false;" '
var titleBG = "background-image:url(" + _skin + "dialogtitle.gif)"
var mdl = '<div onselectstart="return false" onmouseup="' + _codeWinName + '.DialogBoxWidget_keepFocus(\'' + this.id
+ '\');" onmousedown="' + _codeWinName + '.eventCancelBubble(event)" border="0" hspace="0" vspace="0" src="' + _skin
+ '../transp.gif" id="modal_' + id + '" style="background-color:#888888;opacity:0.3;filter:alpha(opacity:30);position:absolute;top:0px;left:0px;width:1px;height:1px">'
+ (_ie ? img (_skin + '../transp.gif', '100%', '100%', null) : '') + '</div>'
var btn = '';
if (_dtd4) {
btn = '<td style="padding-right:' + _dlgTitleRBorderToClose + 'px"><div id="dialogClose_' + id
+ '" class="dlgCloseBtn" title="' + _closeDialog + '"></div></td>';
} else {
btn = '<td style="padding-right:'
+ _dlgTitleRBorderToClose
+ 'px">'
+ simpleImgOffset (_skin + _dlgTitleCloseBtnImgFile, _dlgTitleCloseBtnW, _dlgTitleCloseBtnH, 0, _dlgTitleCloseBtnDy,
'dialogClose_' + id, null, _closeDialog) + '</td>';
}
var closeBtn = '<td class="dlgCloseArea" align="left" valign="middle">'
+ '<table border="0" cellspacing="0" cellpadding="0"><tbody><tr style="height:' + _dlgTitleHeight + 'px">' + btn
+ '</tr></tbody></table>' + '</td>';
var dlgtitle = '<table style="height:' + _dlgTitleHeight
+ '" class="dlgTitle" width="100%" border="0" cellspacing="0" cellpadding="0">' + '<tr valign="top" style="height:'
+ _dlgTitleHeight + 'px">' + '<td ' + moveableCb + ' style="cursor:move;padding-left:' + _dlgTitleLBorderToTxt
+ 'px;" width="100%" valign="middle" align="left">' + '<nobr><span id="titledialog_' + id
+ '" tabIndex="0" class="titlezone">' + convStr (title) + '</span></nobr></td>' + closeBtn
+ '</tr></table>';
var s = '';
s = mdl;
var dims = sty ("width", width ? ("" + width + "px") : null)
+ sty ("height", height ? ("" + Math.max (0, height + (_moz ? -2 : 0)) + "px") : null)
s += '<button style="position:absolute;left:-30px;top:-30px; visibility:hidden" id="firstLink_'+this.id+'" onfocus="'+_codeWinName+'.DialogBoxWidget_keepFocus(\''+this.id+'\');return false;" ></button>';
s += '<table border="0" cellspacing="0" cellpadding="0" id="' + id + '" style="display:none;padding:0px;visibility:' + _hide
+ ';position:absolute;top:-2000px;left:-2000px;' + dims + '" ' + (isAlert?'role="alertdialog"':'role="dialog"') + '>';
s += '<tr><td ' + (_moz ? 'style="' + dims + '" ' : "") + 'class="dialogbox" id="td_dialog_' + id + '" onresize="' + _codeWinName
+ '.DialogBoxWidget_resizeIframeCB(\'' + id + '\',this)" valign="top">';
s += '<table class="dlgBox2" width="100%" border="0" cellspacing="0" cellpadding="0"><tbody>'
s += '<tr><td height="' + _dlgTitleHeight +'" valign="top">' + dlgtitle + '</td></tr>';
s += '<tr><td class="dlgBody" valign="top" id="div_dialog_' + id + '">'
return s;
}
}
/*
function DialogBoxWidget_beginHTML()
// Get the widget beginning HTML
// Returns : [String] the HTML
{
with (this)
{
var moveableCb=' onselectstart="return false" ondragstart="return false" onmousedown="'+_codeWinName+'.DialogBoxWidget_down(event,\''+id+'\',this,false);return false;" '
var mdl='<div onselectstart="return false" ondragstart="return false" onmousedown="'+_codeWinName+'.eventCancelBubble(event)" border="0" hspace="0" vspace="0" src="'+_skin+'../transp.gif" id="modal_'+id+'" style="position:absolute;top:0px;left:0px;width:1px;height:1px">'+(_ie?img(_skin+'../transp.gif','100%','100%',null):'')+'</div>'
var titleBG="background-image:url("+_skin+"dialogtitle.gif)"
return mdl+
'<a style="position:absolute;left:-30px;top:-30px; visibility:hidden" id="firstLink_'+this.id+'" href="javascript:void(0)" onfocus="'+_codeWinName+'.DialogBoxWidget_keepFocus(\''+this.id+'\');return false;" ></a>'+
'<table border="0" cellspacing="0" cellpadding="2" id="'+id+'" style="display:none;padding:0px;visibility:'+_hide+';position:absolute;top:-2000px;left:-2000px;'+sty("width",width?(""+width+"px"):null)+sty("height",height?(""+height+"px"):null)+'"><tr><td id="td_dialog_'+id+'" onresize="'+_codeWinName+'.DialogBoxWidget_resizeIframeCB(\''+id+'\',this)" class="dialogbox" valign="top">'+
'<table width="100%" style="margin-bottom:4px" border="0" cellspacing="0" cellpadding="0"><tr valign="top">'+
'<td '+moveableCb+' style="cursor:move;'+titleBG+'" class="titlezone">'+getSpace(5,18)+'</td>'+
'<td '+moveableCb+' style="cursor:move;'+titleBG+'" class="titlezone" width="100%" valign="middle" align="left"><nobr><span id="titledialog_'+id+'" tabIndex="0" class="titlezone">'+convStr(title)+'</span></nobr></td>'+
'<td class="titlezone" style="'+titleBG+'">'+
(noCloseButton?'':'<a href="javascript:void(0)" onclick="'+_codeWinName+'.DialogBoxWidget_close(\''+id+'\');return false;" title="'+ _closeDialog +'">'+imgOffset(_skin+'dialogelements.gif',18,18,0,18,'dialogClose_'+this.id,'onmouseover="'+_codeWinName+'.DialogBoxWidget_setCloseIcon(this,1)" onmouseout="'+_codeWinName+'.DialogBoxWidget_setCloseIcon(this,0)" ',_closeDialog,'cursor:'+_hand)+'</a>')+
'</td>'+
'</tr></table>'
}
}
*/
// ================================================================================
function DialogBoxWidget_endHTML()
// Get the widget end HTML
// Returns : [String] the HTML
{
var s='</td></tr>'
s+='<tr><td style="height:'+_dlgBottomMargin+'px;"></td></tr>';
s+='</tbody></table>';
s+='</td></tr></table>';
s+='<button style="position:absolute;left:-30px;top:-30px; visibility:hidden" id="lastLink_'+this.id+'" onfocus="'+_codeWinName+'.DialogBoxWidget_keepFocus(\''+this.id+'\');return false;" ></button>'
return s;}
// ================================================================================
function DialogBoxWidget_getContainerWidth()
// Get the width of the container
// Returns : [int] the width
{
var o=this
return o.width-(2+2)
}
// ================================================================================
function DialogBoxWidget_getContainerHeight()
// Get the height of the container
// Returns : [int] the height
{
var o=this
return o.height-(2+18+2+2+2)
}
// ================================================================================
function DialogBoxWidget_close(id)
// PRIVATE
{
var o=DialogBoxWidget_instances[id]
if (o)
{
o.show(false)
if(o.cancelCB!=null) o.cancelCB()
}
}
//================================================================================
function DialogBoxWidget_setCloseCB(closeCB)
{
this.closeCB = closeCB;
}
//================================================================================
function DialogBoxWidget_setNoCloseButton(noCloseButton)
{
if (this.noCloseButton !== noCloseButton){
this.noCloseButton = noCloseButton;
if (this.initialized()) {
this.closeButton.style.visibility = this.noCloseButton?_hide:_show;
}
}
}
// ================================================================================
function DialogBoxWidget_resizeIframeCB(id,lyr)
{
DialogBoxWidget_instances[id].placeIframe()
}
// ================================================================================
function DialogBoxWidget_placeIframe()
{
var o=this
if (o.iframe)
{
var lyr=o.td_lyr
if (lyr==null)
{
o.td_lyr=lyr=getLayer("td_dialog_"+o.id)
}
o.iframe.resize(lyr.offsetWidth,lyr.offsetHeight)
o.iframe.move(o.layer.offsetLeft,o.layer.offsetTop)
}
}
// ================================================================================
//use when resize dialogbox by code (exemple: variableEditorDialog.html)
function DialogBoxWidget_resize(w,h)
{
var o=this;
o.oldResize(w,h);
if (o.iframe)
{
o.iframe.resize(w,h);
}
}
// ================================================================================
function DialogBoxWidget_init()
// Init the widget layers
// Return [void]
{
if (this.layer != null)
return
var o = this
o.oldInit ();
o.modal.init ();
o.lastLink = newWidget ("lastLink_" + o.id)
o.firstLink = newWidget ("firstLink_" + o.id)
o.lastLink.init ()
o.firstLink.init ()
if (_saf)
o.webKitFocusElem = getLayer ("webKitFocusElem" + o.id);
o.closeButton = getLayer ('dialogClose_' + o.id)
o.closeButton.style.visibility = o.noCloseButton?_hide:_show;
o.closeButton.onmouseover = DialogBoxWidget_moverCloseBtn;
o.closeButton.onmouseout = DialogBoxWidget_moverCloseBtn;
o.closeButton.onclick = function() {
o.close (o.id);
}
}
function DialogBoxWidget_moverCloseBtn(evt)
{
var evt=getEvent(evt);
var over=(evt && evt.type=="mouseover")?true:false;
if (_dtd4)
this.className=over?'dlgCloseBtnHover':'dlgCloseBtn';
else
changeOffset(this,0, over?_dlgTitleCloseBtnHoverDy:_dlgTitleCloseBtnDy);
}
// ================================================================================
function DialogBoxWidget_attachDefaultButton(btn)
// Attach a default button to the dialogbox
//the callback of this button will be call by Enter action
{
this.defaultBtn=btn;
this.defaultBtn.setDefaultButton();
}
// ================================================================================
_theLYR=null
_dlgResize=null
function DialogBoxWidget_down(e,id,obj,isResize)
// PRIVATE
{
_dlgResize=isResize
var o=DialogBoxWidget_instances[id],lyr=o.layer,mod=o.modal.layer
lyr.onmousemove=mod.onmousemove=eval('_curWin.'+_codeWinName+'.DialogBoxWidget_move')
lyr.onmouseup=mod.onmouseup=eval('_curWin.'+_codeWinName+'.DialogBoxWidget_up')
lyr.dlgStartPosx=mod.dlgStartPosx=parseInt(lyr.style.left)
lyr.dlgStartPosy=mod.dlgStartPosy=parseInt(lyr.style.top)
lyr.dlgStartx=mod.dlgStartx=eventGetX(e)
lyr.dlgStarty=mod.dlgStarty=eventGetY(e)
lyr.dlgStartw=mod.dlgStartw=o.getWidth()
lyr.dlgStarth=mod.dlgStarth=o.getHeight()
lyr._widget=mod._widget=o.widx
_theLYR=lyr
eventCancelBubble(e)
if (lyr.setCapture)
lyr.setCapture(true)
}
// ================================================================================
function DialogBoxWidget_move(e)
// PRIVATE
{
var o=_theLYR,dlg=getWidget(o)
if (_dlgResize)
{
var newW=Math.max(dlg.minWidth,o.dlgStartw+eventGetX(e)-o.dlgStartx)
var newH=Math.max(dlg.minHeight,o.dlgStarth+eventGetY(e)-o.dlgStarty)
dlg.resize(dlg.noResizeW?null:newW,dlg.noResizeH?null:newH)
if (dlg.firstTR)
{
if (!dlg.noResizeW)
dlg.firstTR.style.width=newW-4
if (!dlg.noResizeH)
dlg.secondTR.style.height=newH-44
}
if (dlg.resizeCB)
dlg.resizeCB(newW,newH)
}
else
{
var x=Math.max(0,o.dlgStartPosx-o.dlgStartx+eventGetX(e))
var y=Math.max(0,o.dlgStartPosy-o.dlgStarty+eventGetY(e))
//x = Math.min( Math.max(10,winWidth()-10), x)
//y = Math.min( Math.max(10,winHeight()-18), y)
dlg.iframe.move(x,y)
dlg.move(x,y)
}
eventCancelBubble(e)
return false
}
// ================================================================================
function DialogBoxWidget_up(e)
// PRIVATE
{
var o=getWidget(_theLYR),lyr=o.layer,mod=o.modal.layer;
lyr.onmousemove=mod.onmousemove=null;
lyr.onmouseup=mod.onmouseup=null;
if (lyr.releaseCapture)
lyr.releaseCapture();
_theLYR=null
}
// ================================================================================
function DialogBoxWidget_keypress(e)
// PRIVATE
{
eventCancelBubble(e)
var dlg=DialogBoxWidget_current
if (dlg!=null)
{
switch( eventGetKey(e))
{
case 13://enter
if(dlg.yes && !dlg.no) //old code ???
{
if (dlg.defaultCB) dlg.defaultCB();return false;
}
//Behavior is different from textArea and textField with the Enter action
if(isTextArea(_ie?_curWin.event:e)) return true;
if(dlg.defaultBtn!=null && !dlg.defaultBtn.isDisabled())
{
dlg.defaultBtn.executeCB(); return false;
}
break;
case 27://cancel
if (!dlg.noCloseButton) // accept 'esc' only if there is a close button in the dialog
{
dlg.show(false)
hideBlockWhileWaitWidget()
if (dlg.cancelCB!=null) dlg.cancelCB()
}
return false;
break;
case 8: //back space
return isTextInput(_ie?_curWin.event:e);
break;
}
}
}
// ================================================================================
function DialogBoxWidgetResizeModals(e)
// PRIVATE
{
var isCurrentDlgDisplayed = DialogBoxWidget_current && DialogBoxWidget_current.isDisplayed();
if(isCurrentDlgDisplayed) {
DialogBoxWidget_current.setDisplay(false);
DialogBoxWidget_current.iframe.setDisplay(false);
}
var originalDisplay = [];
for(var i = 0, len = DialogBoxWidget_modals.length; i < len; i++) {
originalDisplay[i] = DialogBoxWidget_modals[i].display;
DialogBoxWidget_modals[i].display = "none";
}
var docWidth = documentWidth() + 'px';
var docHeight = documentHeight() + 'px';
if(isCurrentDlgDisplayed) {
DialogBoxWidget_current.setDisplay(true);
DialogBoxWidget_current.iframe.setDisplay(true);
}
for(var i = 0, len = DialogBoxWidget_modals.length; i < len; i++) {
var m_sty=DialogBoxWidget_modals[i];
m_sty.display = originalDisplay[i];
m_sty.width = docWidth;
m_sty.height = docHeight;
}
}
// ================================================================================
function DialogBoxWidget_center()
{
var o=this;
var defaults = {modalDisplay : o.modal.css.display, layerDisplay : o.css.display};
o.modal.css.display = "none";
o.css.display = "none";
var scrY=getScrollY(),scrX=getScrollX();
o.modal.css.display = defaults.modalDisplay;
o.css.display = "block";
var height = o.layer.offsetHeight, width = o.layer.offsetWidth;
o.css.display = defaults.layerDisplay;
var yOffset = (winHeight()- height)/2;
yOffset = (yOffset < 0) ? 0 : yOffset;
var xOffset = (winWidth()- width)/2;
xOffset = (xOffset < 0) ? 0 : xOffset;
o.move(Math.max(0,scrX + xOffset),Math.max(0,scrY + yOffset));
o.placeIframe()
}
function DialogBoxWidget_Show(sh)
// Show or Hide the dialog
// sh [boolean] if true show
{
with (this)
{
m_sty=modal.css
l_sty=css
if (sh)
{
if (!this.iframe)
{
this.iframe=newWidget(getDynamicBGIFrameLayer().id)
this.iframe.init()
}
oldCurrent=DialogBoxWidget_current
DialogBoxWidget_current=this
if (_ie)
{
layer.onkeydown=eval('_curWin.'+_codeWinName+'.DialogBoxWidget_keypress')
modal.layer.onkeydown=eval('_curWin.'+_codeWinName+'.DialogBoxWidget_keypress')
window.attachEvent("onresize", eval('DialogBoxWidget_onWindowResize'));
}
else
{
_curDoc.addEventListener("keydown", eval('_curWin.'+_codeWinName+'.DialogBoxWidget_keypress'), false)
window.addEventListener("resize", eval('DialogBoxWidget_onWindowResize'), false);
}
oldMouseDown=_curDoc.onmousedown
_curDoc.onmousedown=null
hideBlockWhileWaitWidget()
}
else
{
DialogBoxWidget_current=oldCurrent
oldCurrent=null
if (_ie)
{
layer.onkeydown=null
modal.layer.onkeydown=null
window.detachEvent("onresize", eval('DialogBoxWidget_onWindowResize'));
}
else
{
_curDoc.removeEventListener("keydown", eval('_curWin.'+_codeWinName+'.DialogBoxWidget_keypress'), false)
window.removeEventListener("resize", eval('DialogBoxWidget_onWindowResize'), false);
}
_curDoc.onmousedown=oldMouseDown
}
var sameState=(layer.isShown==sh)
if (sameState)
return
layer.isShown=sh
if (sh)
{
if (_curWin.DialogBoxWidget_zindex==null)
_curWin.DialogBoxWidget_zindex=1000;
this.iframe.css.zIndex=_curWin.DialogBoxWidget_zindex++;
m_sty.zIndex=_curWin.DialogBoxWidget_zindex++;
l_sty.zIndex=_curWin.DialogBoxWidget_zindex++;
DialogBoxWidget_modals[DialogBoxWidget_modals.length]=m_sty
m_sty.display=''
l_sty.display='block'
this.iframe.setDisplay(true)
holdBGIFrame(this.iframe.id);
DialogBoxWidgetResizeModals()
this.height=layer.offsetHeight;
this.width=layer.offsetWidth;
//add scroll bar for small resolution 800*600
//do the resize action before the center
if(_small && height)
{
if(divLayer == null)
divLayer=getLayer("div_dialog_"+id);
if(divLayer)
{
divLayer.style.overflow="auto";
divLayer.style.height = (winHeight()< height)? (winHeight()-40) : getContainerHeight();
divLayer.style.width = (_moz?width+20:getContainerWidth());
}
resize(null,((winHeight()< height)? (winHeight()-10):null));
}
if (isHidden(layer))
{
this.center()
}
if (!_small && this.resizeCB)
this.resizeCB(width,height)
}
else
{
var l=DialogBoxWidget_modals.length=Math.max(0,DialogBoxWidget_modals.length-1)
m_sty.width='1px'
m_sty.height='1px'
m_sty.display='none'
l_sty.display='none'
if (this.iframe != null) {
this.iframe.setDisplay(false)
releaseBGIFrame(this.iframe.id)
}
}
modal.show(sh);
firstLink.show(sh)
lastLink.show(sh)
oldShow(sh);
if (DialogBoxWidget_current!=null && sh==true)
DialogBoxWidget_current.focus();
if (!sh && closeCB!=null) closeCB();
}
}
function DialogBoxWidget_onWindowResize ()
{
DialogBoxWidgetResizeModals();
}
// must be called to release bg iframe
function DialogBoxWidget_unload()
{
if (this.iframe) {
releaseBGIFrame(this.iframe.id)
}
}
// ================================================================================
function DialogBoxWidget_keepFocus(id)
// PRIVATE
{
var o=DialogBoxWidget_instances[id];
if (o) o.focus();
}
// ================================================================================
function DialogBoxWidget_focus()
// apply focus on the dialog box
{
with (this)
{
if (titleLayer == null)
titleLayer = getLayer('titledialog_'+id);
if(_saf && webKitFocusElem && webKitFocusElem.focus)
webKitFocusElem.focus();
else if (titleLayer.focus)
titleLayer.focus();
}
}
// ================================================================================
// ================================================================================
//
// OBJECT newAlertDialog (Constructor)
//
// Class for alert dialog box
//
// ================================================================================
// ================================================================================
/*
function newAlertDialog(id,title,text,okLabel,promptType,yesCB)
// id [String] the id for DHTML processing
// title [String] the caption dialog text
// text [String] the alert text
// okLabel [String] label for the OK button
// promptType [_promptDlgInfo | _promptDlgWarning=1 | _promptDlgCritical]
// yesCB [Function optional] callback when clicking on OK
{
return newPromptDialog(id,title,text,okLabel,null,promptType,yesCB,null,true)
}
*/
// ================================================================================
// ================================================================================
//
// OBJECT newPromptDialog (Constructor)
//
// Class for prompt dialog box
//
// ================================================================================
// ================================================================================
function newPromptDialog(id,title,text,okLabel,cancelLabel,promptType,yesCB,noCB,noCloseButton,isAlert)
// id [String] the id for DHTML processing
// title [String] the caption dialog text
// text [String] the alert text
// okLabel [String] label for the OK button
// cancelLabel [String] label for the Cancel button
// promptType [_promptDlgInfo | _promptDlgWarning=1 | _promptDlgCritical]
// yesCB [String or Function optional] callback when clicking on Yes
// noCB [String or Function optional] callback when clicking on No
// isAlert [Boolean optional] if true JAWS will read dialog as an "alert" and read everything
{
var o=newDialogBoxWidget(id,title,300,null,PromptDialog_defaultCB,PromptDialog_cancelCB,noCloseButton,isAlert)
o.text=text
o.getHTML=PromptDialog_getHTML
o.yes=okLabel?newButtonWidget(id+"_yesBtn",okLabel,'PromptDialog_yesCB(\"'+o.id+'\")',70):null
o.no=cancelLabel?newButtonWidget(id+"_noBtn",cancelLabel,'PromptDialog_noCB(\"'+o.id+'\")',70):null
o.yesCB=yesCB
o.noCB=noCB
o.promptType=promptType
o.txtLayer = null
o.imgLayer = null
o.setPromptType=PromptDialog_setPromptType
o.setText=PromptDialog_setText
//attach default button for prompt dialog
if(o.yes) o.attachDefaultButton(o.yes)
else if(o.no) o.attachDefaultButton(o.no)
return o
}
// ================================================================================
function PromptDialog_getimgPath(promptType)
// PRIVATE
{
var imgPath=_skin
switch(promptType)
{
case _promptDlgInfo: imgPath+='information_icon.gif';break
case _promptDlgWarning: imgPath+='warning_icon.gif';break
default: imgPath+='critical_icon.gif';break
}
return imgPath
}
// ================================================================================
function PromptDialog_getimgAlt(promptType)
// PRIVATE
{
var imgAlt=''
/*
switch(promptType)
{
case _promptDlgInfo: imgAlt=_topfs._labImgInfo;break
case _promptDlgWarning: imgAlt=_topfs._labImgWarning;break
default: imgAlt=_topfs._labImgError;break
}
*/
return imgAlt
}
// ================================================================================
function PromptDialog_setPromptType(promptType)
// Change the prompt icon
// promptType [_promptDlgInfo | _promptDlgWarning=1 | _promptDlgCritical]
{
var o=this
if (o.imgLayer == null)
o.imgLayer = getLayer("dlg_img_"+o.id)
o.imgLayer.src=PromptDialog_getimgPath(promptType)
o.imgLayer.alt=PromptDialog_getimgAlt(promptType)
}
// ================================================================================
function PromptDialog_setText(text)
// Change the prompt text
// text [String] the prompt text
{
var o=this
o.text=text
if (o.txtLayer == null)
o.txtLayer = getLayer("dlg_txt_"+o.id)
o.txtLayer.innerHTML='<div tabindex="0">'+convStr(text,false,true)+'</div>'
}
// ================================================================================
function PromptDialog_getHTML()
// Get the widget HTML
// Returns : [String] the HTML
{
var o=this
var imgPath=PromptDialog_getimgPath(o.promptType)
var imgAlt=PromptDialog_getimgAlt(o.promptType)
return o.beginHTML()+
'<table class="dialogzone" width="290" cellpadding="0" cellspacing="5" border="0">'+
'<tr><td>'+
'<table class="dialogzone" cellpadding="5" cellspacing="0" border="0">'+
'<tr><td align="right" width="32" >'+img(imgPath,32,32,null,'id="dlg_img_'+o.id+'"',imgAlt)+'</td><td></td><td id="dlg_txt_'+o.id+'" align="left" tabindex="0">'+convStr(o.text,false,true)+'</td></tr>'+
'</table>'+
'</td></tr>'+
'<tr><td>'+getSep()+'</td></tr>'+
'<tr><td align="right">'+
'<table cellpadding="5" cellspacing="0" border="0">'+
'<tr>'+
(o.yes?'<td>'+o.yes.getHTML()+'</td>':'')+
(o.no?'<td>'+o.no.getHTML()+'</td>':'')+
'</tr>'+
'</table>'+
'</td></tr>'+
'</table>'+
o.endHTML()
}
// ================================================================================
function PromptDialog_defaultCB()
// PRIVATE
{
var o=this
if (o.yesCB)
{
if (typeof o.yesCB!="string")
o.yesCB()
else
eval(o.yesCB)
}
/*
if (this.yesCB)
this.yesCB()
*/
this.show(false)
}
// ================================================================================
function PromptDialog_cancelCB()
// PRIVATE
{
var o=this
if (o.noCB)
{
if (typeof o.noCB!="string")
o.noCB()
else
eval(o.noCB)
}
/*
if (this.noCB)
this.noCB()
*/
this.show(false)
}
// ================================================================================
function PromptDialog_yesCB(id)
// PRIVATE
{
DialogBoxWidget_instances[id].defaultCB()
}
// ================================================================================
function PromptDialog_noCB(id)
// PRIVATE
{
DialogBoxWidget_instances[id].cancelCB()
}