// -----------------------------------------------------------------------------------------------------------
// 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('*[bffill]').forEach( bf.fill );
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;
},
fillVar: function(obj)
{
var item = obj.getAttribute('item');
dojo.xhrGet({
preventCache: true,
url: '/var.asp?item=' + item,
handleAs: "text",
load: function(data) {
obj.innerHTML = data;
},
error: function(error) { obj.innerHTML = '?????'; }
});
},
fill: function(obj)
{
var item = obj.getAttribute('bffill');
dojo.xhrGet({
preventCache: true,
url: '/var.asp?item=' + item,
handleAs: "text",
load: function(data) {
obj.innerHTML = data;
},
error: function(error) { obj.innerHTML = '?????'; }
});
}
}
// -----------------------------------------------------------------------------------------------------------
// 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(/:\/\//))
if (!a.href.match(/javascript:/))
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.showSubIcon=false;
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 save = div.getAttribute('save') ? div.getAttribute('save') : '';
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:;';
nobr.insertBefore( a, nobr.firstChild );
dojo.connect(a,"onclick", function(){ window.open('/EditHTML/edithtml.asp?edithtmlid=' + edithtmlid + '&save=' + save, '_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);}
var bfWaitDialog;
function bfWait(msg)
{
var span = dojo.doc.createElement("div");
msg = msg ? (msg=='' ? '' : ' '+msg) : ' Please wait...';
span.innerHTML = '
' + msg + '';
dojo.body().appendChild(span);
bfWaitDialog = new dijit.Dialog({ title: "", content: span });
dojo.body().appendChild(bfWaitDialog.domNode);
bfWaitDialog.titleBar.style.display='none';
bfWaitDialog.startup();
bfWaitDialog.show();
}
function bfWaitDone()
{
bfWaitDialog.hide();
bfWaitDialog.destroy();
}
function dialogAlert(txtContent, txtTitle)
{
var thisdialog = new dijit.Dialog({ title: txtTitle, content: txtContent });
dojo.body().appendChild(thisdialog.domNode);
thisdialog.startup();
thisdialog.show();
}
function editHTML(id)
{
window.open('/EditHTML/edithtml.asp?edithtmlid=' + id , '_blank', 'scrollbar=yes,resizable=yes');
}
function editHTMLText(id,def)
{
window.open('/EditHTML/edithtmltext.asp?edithtmlid=' + id + '&def=' + (def?def:''), '_blank', 'width=800,height=600,scrollbar=yes,resizable=yes');
}