/Triad.Controls/tfResources/rel_js/edpopup.js
JavaScript | 391 lines | 386 code | 1 blank | 4 comment | 26 complexity | 1e42ed66d9743a9e8df3d7a6c7dc4138 MD5 | raw file
- /*
- tfpopup.js 1.0.8
- handles modal dialog boxes, etc
- */
- var alertTypes={Error:1,Warning:2,Information:3};
- var locTypes={NW:1,N:2,NE:3,E:4,SE:5,S:6,SW:7,W:8,CEN:9};
- var contentTypes={iframe:1,html:2,alert:3,MsgBox:4,csMsgBox:5};
- var msgboxType={ok:1,yes:2,yesno:3,yesnocancel:4};
- var returnFunc={pbContentPage:1,pbPrevDlg:2};
- var gTabbableTags=[];
- var gTabIndexes=[];
- var gIteration=-1;
- var gDefaultPage="about:blank";
- var iTimeoutID;
- var gTabbableTags=["A","BUTTON","TEXTAREA","INPUT","IFRAME"];
- function disableTabIndexes(){if(document.all){var i=0;for(var j=0;j<gTabbableTags.length;j++){var tagElements=document.getElementsByTagName(gTabbableTags[j]);for(var k=0;k<tagElements.length;k++){gTabIndexes[i]=tagElements[k].tabIndex;tagElements[k].tabIndex="-1";i++;}}}}
- function restoreTabIndexes(){if(document.all){var i=0;for(var j=0;j<gTabbableTags.length;j++){var tagElements=document.getElementsByTagName(gTabbableTags[j]);for(var k=0;k<tagElements.length;k++){tagElements[k].tabIndex=gTabIndexes[i];tagElements[k].tabEnabled=true;i++;}}}}
- function getWidth(width){var pWidth;if(width==undefined){width='85%';}if(isNaN(width)){if(width.search(/\%/)!=-1){pWidth=getViewPortWidth()*(width.replace("\%","")/100);}}else{pWidth=width;}return pWidth;}
- function getHeight(height){var pHeight;if(height==undefined){height='90%';}if(isNaN(height)){if(height.search(/\%/)!=-1){pHeight=getViewPortHeight()*(height.replace("\%","")/100);}}else{pHeight=height;}return pHeight;}
- function getScrollTop(){if(top.pageYOffset){return top.pageYOffset;}else if(top.document.documentElement&&top.document.documentElement.scrollTop){return top.document.documentElement.scrollTop;}else if(top.document.body){return top.document.body.scrollTop;}}
- function ModalDlg(options){
- var defaultOptions={
- id:'',
- type:2,
- width:600,
- height:600,
- loc:'CEN',
- title:'Dialog',
- alertText:g_jsErrorTxt,
- alertType:0,
- alertTask:'unknown',
- msgboxType:0,
- msgboxQuestion:'',
- URL:'',
- HTML:'',
- returnFocusID:'',
- returnFunc:'',
- showClose:false,
- autoClose:-1,
- modal:false
- };
- options=options||{};
- for(var name in defaultOptions){
- if(!options.hasOwnProperty(name)){
- options[name]=defaultOptions[name];
- }
- }
- var _me=this;
- gIteration++;
- _me.iter=gIteration;
- _me.id=options.id;
- _me.contentType=options.type;
- _me.width=options.width;
- _me.msgboxQuestion=options.msgboxQuestion;
- _me.msgboxType=options.msgboxType;
- _me.height=options.height;
- _me.loc=options.loc;
- _me.title=options.title;
- _me.blnClose=options.showClose;
- _me.alertText=options.alertText;
- _me.alertType=options.alertType;
- _me.autoClose=options.autoClose;
- _me.setFocusId=options.returnFocusID;
- _me.callBackFunc=options.returnFunc;
- _me.myHTML=options.HTML;
- _me.myURL=options.URL;
- _me.sTask=options.alertTask;
- _me.isModal=options.modal;
- var strType="mdl";
- if(_me.contentType!=contentTypes.iframe){
- strType="alt";
- }
- _me.tBody=document.getElementById(strType+'Dialog'+_me.iter);
- if(_me.tBody==null){
- _me.tBody=document.createElement("div");
- _me.tBody.id=strType+"Dialog"+_me.iter;
- document.body.appendChild(_me.tBody);
- }
- _me.Mask=document.createElement("div");
- _me.Mask.id=strType+"DlgMask_"+_me.iter;
- _me.Mask.className="ModalDlgMask";
- _me.Con=document.createElement("div");
- _me.Con.id=strType+"DlgContainer_"+_me.iter;
- _me.Con.className="ModalDlgContainer";
- _me.MDI=document.createElement("div");
- _me.MDTB=document.createElement("div");
- _me.MDT=document.createElement("div");
- _me.MDC=document.createElement("div");
- _me.HFLD=document.createElement("INPUT");
- _me.Content=null;
- _me.arrTemp=[];
- _me.setTask=function(sTask){_me.sTask=sTask;};
- _me.setType=function(contentType){_me.contentType=contentType;};
- _me.setURL=function(sUrl){_me.myURL=sUrl;};
- _me.setCallBackFunc=function(callBackFunc){_me.callBackFunc=callBackFunc;};
- _me.setFocusOnReturn=function(elId){_me.setFocusId=elId;};
- _me.setHTML=function(newHTML){_me.myHTML=newHTML;};
- _me.setModal=function(sModal){_me.isModal=sModal;};
- _me.setAlertType=function(aType){_me.alertType=aType;};
- _me.setTitle=function(sTitle){_me.title=sTitle;};
- _me.setLocation=function(locType){_me.loc=locType;};
- _me.setAutoClose=function(sSeconds){_me.autoClose=sSeconds*1000;};
- _me.init=function(){
- var arrTemp=[];
- _me.MDI.id="MDI"+_me.iter;
- _me.MDTB.id="MDTB"+_me.iter;
- _me.MDT.id="MDT"+_me.iter;
- _me.MDC.id="MDI"+_me.iter;
- _me.HFLD.id="HFLD"+_me.iter;
- _me.HFLD.setAttribute("type","button");
- var cImg=document.createElement("img");
- cImg.id="popCloseBox_"+_me.iter;
- switch(_me.contentType){
- case contentTypes.MsgBox:case contentTypes.csMsgBox:
- var image=edIs;
- var cs=_me.contentType==contentTypes.csMsgBox?true:false;
- var onClose="javascript:edRaiseEvent('"+_me.id+"','OnClose','~t');";
- var strButtons='';
- if(_me.id==''){_me.id='msgBoxValue';}
- if(_me.callBackFunc==returnFunc.pbContentPage){
- onClose+="top.frames['ifMainContent'].__doPostBack('"+_me.id+"','~t');";
- }
- else if(_me.callBackFunc==returnFunc.pbPrevDlg){
- onClose+="javascript:edRaiseEvent('"+_me.id+"','OnClose','~t');postBackbPrevDlg('"+_me.id+"','~t');";
- }
- _me.returnFunc="";
- onClose+="g_MsgBox.hide("+_me.contentType+");";
- switch(_me.msgboxType){
- case msgboxType.ok:
- image=edIs;
- strButtons+="<td style='width:50%;'></td>";
- strButtons+="<td></td>";
- strButtons+="<td><input id='s1' style='WIDTH: 50px; CURSOR: hand' onclick=\""+onClose.replaceAll("~t","ok")+"\" type=button value=OK name=MessageBoxIDYes1 /></td>";
- strButtons+="<td></td>";
- strButtons+="<td style='width:50%;'> </td>";
- break;
- case msgboxType.yes:
- image=edIs;
- strButtons+="<td style='width:50%;'></td>";
- strButtons+="<td></td>";
- strButtons+="<td><input id='s1' style='WIDTH: 50px; CURSOR: hand' onclick=\""+onClose.replaceAll("~t","yes")+"\" type=button value=OK name=MessageBoxIDYes1 /></td>";
- strButtons+="<td></td>";
- strButtons+="<td style='width:50%;'></td>";
- break;
- case msgboxType.yesno:
- image=edIs;
- strButtons+="<td style='width:50%;'></td>";
- strButtons+="<td><input id='s1' style='WIDTH: 50px; CURSOR: hand' onclick=\""+onClose.replaceAll("~t","yes")+"\" type=button value=Yes name=MessageBoxIDYes1 /></td></td>";
- strButtons+="<td> </td>";
- strButtons+="<td><input id='s2' style='WIDTH: 50px; CURSOR: hand' onclick=\""+onClose.replaceAll("~t","no")+"\" type=button value=No name=MessageBoxIDNo1 /></td></td>";
- strButtons+="<td style='width:50%;'></td>";
- break;
- case msgboxType.yesnocancel:
- image=edIs;
- strButtons+="<td style='width:50%;'></td>";
- strButtons+="<td><input id='s1' style='WIDTH: 50px; CURSOR: hand' onclick=\""+onClose.replaceAll("~t","yes")+"\" type=button value=Yes name=MessageBoxIDYes1 /></td></td>";
- strButtons+="<td><input id='s2' style='WIDTH: 50px; CURSOR: hand' onclick=\""+onClose.replaceAll("~t","no")+"\" type=button value=No name=MessageBoxIDNo1 /></td></td>";
- strButtons+="<td><input id='s3' style='WIDTH: 50px; CURSOR: hand' onclick=\""+onClose.replaceAll("~t","cancel")+"\" type=button value=Cancel name=MessageBoxIDCancel1 /></td></td>";
- strButtons+="<td style='width:50%;'></td>";
- break;
- }
- cImg.setAttribute("src",edXs);
- _me.Content=document.createElement("div");
- _me.MDI.className="NotifyDlgInner";
- _me.MDTB.className="NotifyDlgTitleBar";
- _me.MDT.className="NotifyDlgTitle";
- _me.MDT.innerHTML=_me.title;
- _me.MDC.className="NotifyDlgControls";
- _me.Content.setAttribute("style","overflow:auto;");
- var strHTML="<table style='width: 100%;text-align:center;background-color: lightgrey;'>";
- strHTML+="<tr><td ><img style='border: black 1px solid; height:25px' src='"+image+"' alt='' /></td>";
- strHTML+="<td style='text-align:left;padding:5px;' colspan='4'>"+_me.msgboxQuestion+"</td></tr><tr>";
- strHTML+=strButtons;
- strHTML+="</tr></table></div></div>";
- _me.Content.innerHTML=strHTML;
- _me.setModal(true);
- break;
- case contentTypes.html:
- var image=edIs;
- switch(_me.alertType){
- case alertTypes.Error:
- _me.autoClose=-1;
- top.edNLog.error(g_jsErrorTxt,_me.sTask);
- image=edEs;
- break;
- case alertTypes.Warning:
- top.edNLog.warning(g_jsErrorTxt,_me.sTask);
- image=edWs;
- break;
- case alertTypes.Information:
- top.edNLog.info(g_jsErrorTxt,_me.sTask);
- image=edIs;
- break;
- }
- cImg.setAttribute("src",edXs);
- _me.Content=document.createElement("div");
- _me.MDI.className="NotifyDlgInner";
- _me.MDTB.className="NotifyDlgTitleBar";
- _me.MDT.className="NotifyDlgTitle";
- _me.MDT.innerHTML=_me.title;
- _me.MDC.className="NotifyDlgControls";
- _me.Content.setAttribute("style","overflow:auto;");
- _me.Content.innerHTML="<table style='width:95%'><tr><td align='center'><img src='"+image+"' alt=''></img></td><td>"+_me.errText+"</td></tr></table></div></div>";
- break;
- case contentTypes.alert:
- var image=edIs;
- switch(_me.alertType){
- case alertTypes.Error:
- _me.autoClose=-1;
- top.edNLog.error(g_jsErrorTxt,_me.sTask);
- image=edEs;
- break;
- case alertTypes.Warning:
- top.edNLog.warning(g_jsErrorTxt,_me.sTask);
- image=edWs;
- break;
- case alertTypes.Information:
- top.edNLog.info(g_jsErrorTxt,_me.sTask);
- image=edIs;
- break;
- }
- cImg.setAttribute("src",edXs);
- _me.Content=document.createElement("div");
- _me.MDI.className="NotifyDlgInner";
- _me.MDTB.className="NotifyDlgTitleBar";
- _me.MDT.className="NotifyDlgTitle";
- _me.MDT.innerHTML=_me.title;
- _me.MDC.className="NotifyDlgControls";
- _me.Content.setAttribute("style","overflow:auto;");
- _me.Content.innerHTML="<table style='width:95%'><tr><td align='center'><img src='"+image+"' alt=''></img></td><td>"+_me.alertText+"</td></tr></table></div></div>";
- break;
- case contentTypes.iframe:
- _me.MDI.className="ModalDlgInner";
- _me.MDTB.className="ModalDlgTitleBar";
- _me.MDT.className="ModalDlgTitle";
- _me.MDT.innerHTML="<img src='"+gsfICON+"' alt=''></img> "+_me.title;
- _me.MDC.className="ModalDlgControls";
- cImg.setAttribute("src",edX);
- _me.Content=document.createElement("iframe");
- _me.Content.setAttribute("src",_me.myURL);
- _me.Content.setAttribute("style","width:100%;height:100%;background-color:transparent;");
- _me.Content.setAttribute("scrolling","auto");
- _me.Content.setAttribute("frameborder","0");
- _me.Content.setAttribute("allowtransparency","true");
- _me.Content.className="ModalDlgFrame";
- if(_me.id!=''){
- _me.Content.id=_me.id;
- _me.Content.setAttribute("name",_me.id);
- }
- else{
- _me.Content.id=strType+"DlgFrame_"+_me.iter;
- _me.Content.setAttribute("name",strType+"DlgFrame_"+_me.iter);
- }
- _me.Content.setAttribute("width","100%");
- _me.Content.setAttribute("height","100%");
- break;
- default:break;
- }
- _me.MDC.appendChild(cImg);
- _me.MDTB.appendChild(_me.MDT);
- _me.MDTB.appendChild(_me.MDC);
- _me.MDI.appendChild(_me.MDTB);
- _me.MDI.appendChild(_me.Content);
- _me.Con.appendChild(_me.MDI);
- _me.tBody.appendChild(_me.Mask);
- _me.tBody.appendChild(_me.Con);
- edEnableDrag(_me.Con.id);
- edAddEvent(_me.MDC,"click",function(){_me.hide(_me.contentType);});
- };
- _me.show=function show(){
- var pWidth=getWidth(_me.width);
- var pHeight=getHeight(_me.height)-30;
- _me.init();
- var t=getLocationPoint(pWidth,pHeight,_me.loc);
- _me.Con.style.left=t.x;
- _me.Con.style.top=t.y;
- if(_me.alertType>2){_me.autoClose=4000;}
- if(_me.isModal){
- _me.Mask.style.height=getViewPortHeight();
- _me.Mask.style.width=getViewPortWidth();
- _me.Mask.style.zIndex=800+(_me.iter*3);
- _me.Mask.style.display="block";
- }
- var titleBarHeight=parseInt(_me.MDTB.offsetHeight,10);
- _me.Con.style.width=pWidth+"px";
- _me.Con.style.height=(pHeight+titleBarHeight)+"px";
- _me.Con.style.zIndex=801+(_me.iter*3);
- _me.Con.style.display="block";
- if(_me.autoClose>0){setTimeout(_me.hide,_me.autoClose);}
- };
- _me.destroy=function(){
- edRemoveEvent(_me.MDC,"click",function(){_me.hide(_me.contentType);});
- edEnableDrag(_me.Con.id,'','','',false);
- removeChildSafe(_me.tBody);
- gIteration--;
- if(gIteration==-1)gIteration=0;
- };
- _me.hide=function(iType){
- if(_me!=null){
- if(_me.contentType==iType){
- _me.Con.style.display='none';
- var fn="";
- if(_me.callBackFunc!=null){fn=_me.callBackFunc;}
- if(_me.setFocusId!=null&&_me.setFocusId.length>0){fn+=";setFocus("+_me.setFocusId+");";}
- if(fn.length>0){setTimeout(fn,10);}
- if(_me.isModal){
- if(_me.Mask!=undefined){_me.Mask.style.display='none';}
- }
- setTimeout(_me.destroy,1000);
- }
- }
- };
- }
- function removeChildSafe(el){
- while(el.childNodes.length>0){
- if(el.childNodes[el.childNodes.length-1].nodeName=='IFRAME'){
- el.childNodes[el.childNodes.length-1].src="javascript:false";
- }
- removeChildSafe(el.childNodes[el.childNodes.length-1]);
- }
- el.parentNode.removeChild(el);
- }
- function getLocationPoint(width,height,loc){
- var theBody=document.getElementsByTagName("BODY")[0];
- var scTop=parseInt(getScrollTop(),10);
- var scLeft=parseInt(theBody.scrollLeft,10);
- var titleBarHeight=0;
- var fullHeight=getViewPortHeight();
- var fullWidth=getViewPortWidth();
- var x,y;
- switch(loc){
- case locTypes.NW:
- x="2px";
- y="2px";
- break;
- case locTypes.N:
- x=(scLeft+((fullWidth-width)/2))+(10)+"px";
- y="2px";
- break;
- case locTypes.NE:
- x=(getViewPortWidth()-width)+"px";
- y="2px";
- break;
- case locTypes.E:
- x=(getViewPortWidth()-width)+"px";
- y=(scTop+((fullHeight-(height+titleBarHeight))/2))+(10)+"px"
- break;
- case locTypes.SE:
- break;
- case locTypes.S:
- break;
- case locTypes.SW:
- break;
- case locTypes.W:
- x="2px";
- y=(scTop+((fullHeight-(height+titleBarHeight))/2))+"px"
- break;
- case locTypes.CEN:
- x=(scLeft+((fullWidth-width)/2))+(10)+"px";
- y=(scTop+((fullHeight-(height+titleBarHeight))/2))+"px"
- break;
- default:break;
- }
- return{x:x,y:y};
- };
- function postBackbPrevDlg(eventTarget,eventArg){
- var el=xGetElementById("mdlDlgFrame_"+(gIteration-1));
- if(el!=null){
- top.frames["mdlDlgFrame_"+(gIteration-1)].__doPostBack(eventTarget,eventArg);
- }
- }
- function refreshPrevDlg(dlgId){
- if(dlgId!=null){
- var el=_gE(dlgId);
- }
- else{
- var el=xGetElementById("mdlDlgFrame_"+(gIteration-1));
- }
- el.src=el.src;
- return;
- }
- function getPrevDlg(dlgId){
- if(dlgId!=null){
- var el=top.frames[dlgId].document.parentWindow;
- }
- else{
- var el=top.frames["mdlDlgFrame_"+(gIteration-1)].document.parentWindow;
- }
- return el;
- }