// ----------------------------------------------------------------------------------------------------------- // set up bonfire objects // ----------------------------------------------------------------------------------------------------------- dojo.addOnLoad( function(){ var menuidx = 0 ; var noteidx = 0 ; var pencilstats = { lastx:-100, lasty:-100, lastoffset : 0 }; dojo.query('div[bftype="textfield"]').forEach( bf.textField ); dojo.query('div[bftype="dropdownfield"]').forEach( bf.dropDownField ); dojo.query('div[bftype="checkboxfield"]').forEach( bf.checkBoxField ); dojo.query('div[bftype="textareafield"]').forEach( bf.textAreaField ); dojo.query('div[bftype="comments"]').forEach( bf.setupComments ); dojo.query('div[bftype="h1"]').addClass( 'form2h1' ); dojo.query('div[bftype="h2"]').addClass( 'form2h2' ); dojo.query('div[bftype="h3"]').addClass( 'form2h3' ); dojo.query('div[bftype="break"]').addClass( 'form2break' ); dojo.query('div.form2').style('display','block'); dojo.query('div[bftype="menu"]').forEach( function(obj) { bfmenu(obj,menuidx++); }); dojo.query('div[bftype="edithtml"]').forEach( function(obj) { bfedithtml(obj,pencilstats); } ); dojo.query('div[bftype="note"]').forEach( function(obj) { bfnote(obj,noteidx++); fillNoteTooltip(noteidx); } ); dojo.query('div[bftype="box"]').forEach( function(obj) { bfbox(obj); } ); } ); var bf = bf ? bf : { attr : function( obj, item, def ) { return obj.getAttribute(item) ? obj.getAttribute(item) : def.toString(); }, pxAttr : function( obj, item, def ) { return parseInt(bf.attr(obj,item,def).replace('px','')); }, labelAttr : function( obj, lbl ) { return (bf.attr(obj,lbl?lbl:'label','') == '') ? '' : bf.attr(obj,lbl?lbl:'label','')+' '; }, formatField: function(obj,ctrl) { var leftmargin = bf.pxAttr( obj, 'leftmargin', '0' ); var width = bf.pxAttr( obj, 'width', '80' ); var rightmargin = bf.pxAttr( obj, 'rightmargin', '5' ); var lbl = bf.labelAttr(obj); obj.className = 'form2Container'; if(lbl=='') { obj.style.width = (width + rightmargin) + 'px'; obj.style.marginLeft = leftmargin + 'px'; } else { obj.style.width = (leftmargin + width + rightmargin) + 'px'; var ldiv = obj.appendChild( document.createElement("DIV") ); ldiv.style.width = leftmargin + 'px'; ldiv.innerHTML = lbl; ldiv.className = 'form2LeftLabel'; } var div = obj.appendChild( document.createElement("DIV") ); div.className = 'form2InnerContainer'; if (obj.getAttribute('toplabel')) { p = div.appendChild( document.createElement("P") ); p.innerHTML = bf.attr(obj,'toplabel',''); p.className = 'form2TopLabel'; } div.appendChild( ctrl ); if (obj.getAttribute('bottomlabel')) { p = div.appendChild( document.createElement("P") ); p.innerHTML = bf.attr(obj,'bottomlabel',''); p.className = 'form2BottomLabel'; } obj.style.display = 'inline'; }, dropDownField : function(obj) { var sel = obj.getElementsByTagName("SELECT")[0]; sel.parentNode.removeChild( sel ); if (obj.getAttribute('width')) sel.style.width = bf.pxAttr(obj,'width',80) + 'px'; sel.name = bf.attr(obj,'name',''); obj.name = '_' + sel.name; sel.value = obj.getAttribute('value'); sel.className = 'form2Select'; bf.formatField( obj, sel ); }, checkBoxField : function(obj) { var width = bf.pxAttr( obj, 'width', '80' ); var lbl = document.createElement("LABEL"); var inp = document.createElement("INPUT"); inp.setAttribute('type','checkbox'); lbl.appendChild( inp ); inp.name = bf.attr(obj,'name',''); obj.name = '_' + inp.name; inp.value = 'Y'; inp.checked = obj.getAttribute('value')=='Y'; inp.className = 'form2Checkbox'; lbl.appendChild( document.createTextNode( bf.attr(obj,'rightlabel','') ) ); bf.formatField( obj, lbl ); }, textField: function (obj) { var width = bf.pxAttr( obj, 'width', '80' ); var inp = document.createElement("INPUT"); inp.style.width = width + 'px'; inp.name = bf.attr(obj,'name',''); obj.name = '_' + inp.name; inp.type = 'text'; inp.value = obj.getAttribute('value'); inp.className = 'form2Textbox'; if(obj.getAttribute('initialvalue')!='') { var newAttr = document.createAttribute("bfinitialvalue"); newAttr.nodeValue = obj.getAttribute('initialvalue'); inp.setAttributeNode(newAttr); } bf.formatField( obj, inp ); }, OLDcheckBoxField : function(obj) { var leftmargin = bf.pxAttr( obj, 'leftmargin', '0' ); var width = bf.pxAttr( obj, 'width', '80' ); var lbl = bf.labelAttr(obj); obj.className = 'form2Container'; obj.style.width = (leftmargin+width) + 'px'; var lbl = obj.appendChild( document.createElement("LABEL") ); var inp = document.createElement("INPUT"); inp.setAttribute('type','checkbox'); lbl.appendChild( inp ); inp.name = bf.attr(obj,'name',''); obj.name = '_' + inp.name; inp.value = 'Y'; inp.style.marginLeft = leftmargin + 'px'; inp.checked = obj.getAttribute('value')=='Y'; inp.className = 'form2Checkbox'; lbl.appendChild( document.createTextNode( bf.attr(obj,'label','') ) ); }, textAreaField : function(obj) { var ta = document.createElement("TEXTAREA"); ta.appendChild( document.createTextNode( obj.getAttribute('value') ? obj.getAttribute('value') : obj.innerHTML ) ); obj.innerHTML = ''; ta.style.height= bf.pxAttr(obj,'height',80) + 'px'; ta.style.width= bf.pxAttr(obj,'width',300) + 'px'; ta.name = bf.attr(obj,'name',''); obj.name = '_' + ta.name; ta.className = 'form2Textarea'; bf.formatField( obj, ta ); }, nodesWithNameStartingWith: function(prefix,obj,attr) { attr = attr ? attr : 'name'; var divs = dojo.query('*[' + attr + ']"]',obj); for( var i = divs.length-1; i>=0; i-- ) if( divs[i].getAttribute(attr).indexOf(prefix)!=0) divs.splice(i,1); return divs; }, divWithName: function(prefix,obj) { var divs = dojo.query('div[name]"]',obj); for( var i = divs.length-1; i>=0; i-- ) if( divs[i].getAttribute('name')==prefix) return divs[i]; return null; }, iterate: function(button,afterfunc) { var prefix = button.getAttribute('prefix') ? button.getAttribute('prefix') : alert('no prefix specified for button'); var lastdiv = bf.nodesWithNameStartingWith( prefix ).pop(); var rexp = new RegExp ( "\\[(.*?)\\]", "g"); var matches = rexp.exec( lastdiv.getAttribute('name').substr( prefix.length) ); var lastidx = matches[1]; var lastprefix = prefix + '[' + lastidx + ']'; var newprefix = prefix + '[' + (parseInt(lastidx)+1) + ']'; lastdiv = bf.divWithName( lastprefix ); var newdiv = lastdiv.parentNode.insertBefore( lastdiv.cloneNode(true), lastdiv.nextSibling ); newdiv.setAttribute('name',newprefix); bf.nodesWithNameStartingWith( lastprefix, newdiv ).forEach( function(obj){ obj.setAttribute( 'name', newprefix + obj.getAttribute('name').substr(lastprefix.length) ); }); bf.nodesWithNameStartingWith( lastprefix, newdiv, 'prefix' ).forEach( function(obj){ obj.setAttribute( 'prefix', newprefix + obj.getAttribute('prefix').substr(lastprefix.length) ); }); dojo.query('input[type="text"]',newdiv).attr('value',''); dojo.query('input[type="checkbox"]',newdiv).attr('checked',false); dojo.query('textarea',newdiv).attr('innerHTML',''); if (afterfunc) afterfunc(newdiv); return; }, enableComment: function(id,state) { var frm = dojo.query('#'+id+' form')[0]; var ta = frm.elements['comment']; ta.value = state ? '' : 'Write a comment...'; ta.className = state ? 'bfcomments_enabled' : 'bfcomments_disabled'; if (state) dojo.connect(ta,"onclick", function(){}); else dojo.connect(ta,"onclick", function(){bf.enableComment(id,true)}); frm.elements['bfcommentbutton'].style.display = state ? '' : 'none'; }, setupComments: function(obj) { dojo.xhrGet({ preventCache: true, url: '/comments.asp?id=' + obj.id, handleAs: "text", load: function(data) { dojo.byId(obj.id).innerHTML = data; bf.enableComment(obj.id,false); }, error: function(error) { dojo.byId(obj.id).innerHTML = 'error retrieving comments'; } }); }, comment: function(id,action,idx) { var frm = dojo.query('#'+id+' form')[0]; frm.elements['action'].value = action frm.elements['idx'].value = idx dojo.xhrPost({ form: frm, url: '/comments.asp', handleAs: "text", load: function(data) { dojo.byId(id).innerHTML = data; bf.enableComment(id,false); }, error: function(error) { dojo.byId(id).innerHTML = 'error retrieving comments'; } }); return false; } } // ----------------------------------------------------------------------------------------------------------- // set up notes // ----------------------------------------------------------------------------------------------------------- function bfnote(div, idx) { dojo.require("dijit.dijit"); dojo.require("dojo.parser"); dojo.require("dijit.Dialog"); dojo.require("dijit.form.Button"); div.id = 'bfnote.' + idx; var baseid = div.id; var pnd = div.parentNode; dojo.connect(div,"onclick", function(){ fillTooltip(); dijit.popup.open({popup: dijit.byId(baseid + '.Dlg'), orient:{'BR':'TR', 'TR':'BR'}, around: dojo.byId(baseid)}); }); var divDlg = document.createElement("DIV"); divDlg.id = baseid + '.Dlg'; divDlg.dojoType = 'dijit.TooltipDialog'; divDlg.style.display = 'none'; pnd.insertBefore( divDlg, div ); var DlgFrm = document.createElement("FORM"); DlgFrm.name = baseid + '.DlgForm'; DlgFrm.id = baseid + '.DlgForm'; divDlg.appendChild( DlgFrm ); var hiddenAction = document.createElement("INPUT"); hiddenAction.type = 'hidden'; hiddenAction.name = 'action'; hiddenAction.id = baseid + '.DlgForm.action'; DlgFrm.appendChild( hiddenAction ); var hiddenKey = document.createElement("INPUT"); hiddenKey.type = 'hidden'; hiddenKey.name = 'key'; hiddenKey.id = baseid + '.DlgForm.key'; hiddenKey.value = ''; DlgFrm.appendChild( hiddenKey ); var DlgFrmHdr = document.createElement("H2"); DlgFrmHdr.innerHTML = 'Notes'; DlgFrm.appendChild( DlgFrmHdr ); var DlgNotes = document.createElement("TEXTAREA"); DlgNotes.name = 'notes'; DlgNotes.id = baseid + '.DlgForm.notes'; DlgNotes.innerHTML = 'Notes'; DlgNotes.style.width = "560px"; DlgNotes.style.height = "300px"; DlgNotes.style.width = "560px"; //DlgNotes.style.background-color = "#ccffff"; DlgFrm.appendChild( DlgNotes ); DlgFrm.appendChild( document.createElement("BR") ); var DlgButtons = document.createElement("CENTER"); DlgFrm.appendChild( DlgButtons ); var DlgReportDiv = document.createElement("DIV"); DlgReportDiv.style.cssFloat = "left"; if (DlgReportDiv.style.styleFloat) DlgReportDiv.style.styleFloat = "left"; DlgButtons.appendChild( DlgReportDiv ); var DlgReport = document.createElement("BUTTON"); DlgReport.dojoType ="dijit.form.Button"; if(dojo.isIE) { dojo.connect(div,"onclick", function(){ window.location.href = 'profile_notes_list.asp'; }); } else { div.setAttribute( "onclick","window.location.href = 'profile_notes_list.asp';", 0 ); } DlgReport.innerHTML = 'Report'; DlgReportDiv.appendChild( DlgReport ); var DlgSave = document.createElement("BUTTON"); DlgSave.dojoType ="dijit.form.Button"; if(dojo.isIE) { dojo.connect(div,"onclick", function(){ saveTooltip(); }); } else { div.setAttribute( "onclick","saveTooltip();", 0 ); } DlgSave.innerHTML = 'Save'; DlgButtons.appendChild( DlgSave ); var DlgClose = document.createElement("BUTTON"); DlgClose.dojoType ="dijit.form.Button"; //if(dojo.isIE) { dojo.connect(div,"onclick", function(){ dijit.popup.close(dijit.byId( baseid + '.Dlg')); }); //} //else // div.setAttribute( "onclick","dijit.popup.close(dijit.byId( baseid + '.Dlg'));", 0 ); DlgClose.innerHTML = 'Cancel'; DlgButtons.appendChild( DlgClose ); } function saveNoteTooltip(baseid) { document.forms[baseid + '.DlgForm'].elements['action'].value = 'Save'; dojo.xhrPost( { url: '/profile_notes_ajax.asp', handleAs: 'text', form: baseid + '.DlgForm', load: function(data) { data = data.replace(/\t/g, "   "); loadNoteTooltipData(baseid, data); } } ); dijit.popup.close(dijit.byId('notestooltipDlg')); return true; } function loadNoteTooltipData(baseid, data) { dojo.query(baseid)[0].innerHTML = ((data!="") ? '' : ''); a = dojo.query("#" + baseid + ".DlgForm.notes")[0] a.innerHTML = data; a.value = data; } function fillNoteTooltip(baseid) { var GetOut = dojo.xhrGet({ load: function(data){ data = data.replace(/\t/g, "   "); loadNoteTooltipData(baseid, data); }, preventCache: true, url: '/profile_notes_ajax.asp?key=', handleAs: 'text' }); } // ----------------------------------------------------------------------------------------------------------- // set up widget menu // ----------------------------------------------------------------------------------------------------------- function bfmenu(div,idx) { var menustyle = div.getAttribute('menustyle') ? div.getAttribute('menustyle') : 'default'; var orientation = div.getAttribute('orientation') ? div.getAttribute('orientation') : 'v'; div.id = 'bfmenu.' + idx++; //nlsmenu cannot tolerate underscores in ID's var divname = div.id; dojo.query('ul',div)[0].id = div.id + '.main'; // add auto generated separators dojo.query('ul[menuseparators="Y"] > li',div).forEach( function(li) { if (dojo.query('~ li',li)[0]) { var sep = document.createElement("LI"); sep.innerHTML = '-'; li.parentNode.insertBefore( sep, li.nextSibling ); } } ); // If any top-level li's on a horizontal menu contain an image, they they must all have one if (orientation=='h' && dojo.query('> ul > li img',div)[0] ) { dojo.query('> ul > li > a',div).forEach( function(a) { if (!dojo.query('img',a)[0]) { var p = dojo.query('> span',a)[0] ? dojo.query('> span',a)[0] : a; var img = document.createElement("IMG"); img.src = '/images/spacer.gif'; img.height = 18; img.width = 1; a.insertBefore( img, a.firstChild ); } } ); } // make sure all images are surronded by spans dojo.query('li > a > img',div).forEach( function(img) { var a = img.parentNode; var span = document.createElement('SPAN'); while( a.childNodes.length > 0 ) span.appendChild( a.removeChild(a.childNodes[0]) ); a.appendChild(span); } ); // apply image styles dojo.query('li > a > span > img',div).style('verticalAlign','middle'); // put spans around separators dojo.query('li',div).forEach( function(li) { if (li.innerHTML.match(/^\s*-\s*$/)) //IE puts a space at the end of the innerHTML li.innerHTML = '-'; } ); // fix up hrefs dojo.query('a',div).forEach( function(a) { if (a.href!='javascript:;') if (!a.href.match(/:\/\//)) a.href = '/' + a.href; } ); var subidx = 0; dojo.query('ul ul',div).forEach(function(ul){ ul.id = divname + '.' + subidx++; }); var menustyle = menustyle; var substyle = div.getAttribute('submenustyle') ? div.getAttribute('submenustyle') : menustyle; var menuMgr = new NlsMenuManager("MyMenu."+div.id); menuMgr.defaultEffect="fade"; menuMgr.loadMenuFromHTML(div.id, true, false); var menuBar = menuMgr.menubar; menuBar.orient = orientation.toUpperCase(); menuBar.stlprf = menustyle + '_1_'; // nlsmenu format header needs _ dojo.query('ul ul',div).forEach( function(ul){menuMgr.getMenu(ul.id).stlprf = substyle + '_2_';} ); // nlsmenu format header needs _ menuMgr.renderMenubar(div.id); } // ----------------------------------------------------------------------------------------------------------- // set up EditHTML areas // ----------------------------------------------------------------------------------------------------------- function bfedithtml(div, stats) { dojo.connect(div,"onmouseover", function(){ this.style.borderColor='black'; }); dojo.connect(div,"onmouseout", function(){ this.style.borderColor='white'; }); div.style.display = 'block'; div.style.border = 'white 1px dashed'; div.style.padding = '0px'; div.style.margin = '0px'; var edithtmlid = div.getAttribute('edithtmlid') ? div.getAttribute('edithtmlid') : ''; var div2 = document.createElement("DIV"); div2.style.position = 'relative'; var contdiv = div.firstChild; div.insertBefore( div2, contdiv ); var div3 = document.createElement("DIV"); div3.style.display = 'inline'; div3.style.position = 'absolute'; div2.insertBefore( div3, div2.firstChild ); bfpencil(div3, stats); var nobr = document.createElement("NOBR"); div3.insertBefore( nobr, div3.firstChild ); var a = document.createElement("a"); a.href = 'javascript:;'; //a.onclick = 'window.open(\'/EditHTML/edithtml.asp?edithtmlid=' + edithtmlid + '\', \'_blank\', \'scrollbar=yes,resizable=yes\'); '; nobr.insertBefore( a, nobr.firstChild ); dojo.connect(a,"onclick", function(){ window.open('/EditHTML/edithtml.asp?edithtmlid=' + edithtmlid , '_blank', 'scrollbar=yes,resizable=yes,height=600,width=800'); }); var img = document.createElement("img"); img.title = 'Edit the block below'; img.src = '/EditHTML/images/pencil.gif'; img.alt = 'edit'; img.border = '0'; a.insertBefore( img, a.firstChild ); } // adjust pencil locations function bfpencil(div,stats) { var c = dojo.coords(div); if ( Math.abs(c.x - stats.lastx) > 10 || Math.abs(c.y - stats.lasty) > 10 ) { stats.lastoffset = 0; } else { stats.lastoffset += 12; div.style.left = stats.lastoffset + 'px'; } stats.lastx = c.x; stats.lasty = c.y; } // ----------------------------------------------------------------------------------------------------------- // draw boxes with rounded corners // ----------------------------------------------------------------------------------------------------------- function bfbox(div) { var bname = div.className ? div.className : 'default'; dojo.query('div.' + bname + ' > h1').addClass( bname + '-header' ); dojo.query('div.' + bname + ' > div').addClass( bname + '-body' ); Nifty('h1.' + bname + '-header','top big'); } // ----------------------------------------------------------------------------------------------------------- // "Please wait..." functions // ----------------------------------------------------------------------------------------------------------- dojo.addOnLoad(function() {dojo.doc.createElement("img").src = '/images/loading.gif';}); //function bfDisableEverything() {dojo.query("input, button, textarea, select", dojo.query('body')[0] ).attr("disabled", true);} function bfWait(msg) { var span = dojo.doc.createElement("div"); msg = msg ? (msg=='' ? '' : ' '+msg) : ' Please wait...'; span.innerHTML = '' + msg + ''; dojo.body().appendChild(span); var thisdialog = new dijit.Dialog({ title: "", content: span }); dojo.body().appendChild(thisdialog.domNode); thisdialog.titleBar.style.display='none'; thisdialog.startup(); thisdialog.show(); } function dialogAlert(txtContent, txtTitle) { var thisdialog = new dijit.Dialog({ title: txtTitle, content: txtContent }); dojo.body().appendChild(thisdialog.domNode); thisdialog.startup(); thisdialog.show(); }