

// -----------------------------------------------------------------------------------------------------------
// 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('img[bftype="folderitem"]').forEach( bf.folderitem );
		dojo.query('div[bftype="checkboxfield"]').forEach( bf.checkBoxField );
		dojo.query('div[bftype="fblikebutton"]').forEach( bf.fbLikeButton );
		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_setup(obj,pencilstats); 	} );
        dojo.query('div[bftype="edithtmlajax"]').forEach( function(obj) { bfedithtmlajax_setup(obj,pencilstats); 	} );
		dojo.query('div[bftype="article"]').forEach(  function(obj) { bf.article(obj); 	} );
		dojo.query('div[bftype="articleList"]').forEach(  function(obj) { bf.articleList(obj,pencilstats); 	} );
        dojo.query('div[bftype="note"]').forEach( function(obj) { bfnote(obj,noteidx++); fillNoteTooltip(noteidx); 	} );
    }
);


var bf = bf ? bf : {

	rootURL: '/',


	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','')+'&nbsp;'; },


	articleList : function(div, stats)
    {
		var listid = div.getAttribute('listid') ? div.getAttribute('listid') : '';
		var more = div.getAttribute('more') ? div.getAttribute('more') : '';
		dojo.xhrGet({
			preventCache: true,
			url: '//EditHTML/articleList.asp?more=' + more + '&id=' + listid,
			handleAs: "text",
			load: function(data) {
				while (div.hasChildNodes()) { div.removeChild(div.lastChild); }
				div.innerHTML = data;
				dojo.query('div',div).forEach(  function(obj) {
					var bftype = obj.getAttribute('bftype') ? obj.getAttribute('bftype') : '';
					if (bftype=='articleHeader')
						bf.articleHeader(obj,stats); 	
					else if (bftype=='edithtml')
						bfedithtml_setup(obj,stats);
				});
			},
			error: function(error) { div.innerHTML = 'error retrieving list'; }
		});
	},
	articleHeader : function(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 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 );

		var handle = dojo.connect(a,"onclick", function(){ 
			articleHeaderFunc(a, div, "Edit", "", "", stats);
		});

		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 );
    },

	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 );	
    },

	fbLikeButton : function(obj)
    {

        var iframe = document.createElement("IFRAME");
		iframe.setAttribute('src','http://www.facebook.com/plugins/like.php?'
			+ 'href=' + (escape( window.location.href )) //.replace( /\//gi, "%2f" )
			+ '&layout=' + obj.getAttribute('layout')
			+ '&show_faces=' + obj.getAttribute('show_faces')
			+ '&width=' + obj.getAttribute('width')
			+ '&action=' + obj.getAttribute('action')
			+ '&font=' + escape( obj.getAttribute('font') )
			+ '&colorscheme=' + obj.getAttribute('colorscheme')
			+ '&height=' + obj.getAttribute('height'));
		iframe.setAttribute('scrolling','no');
		iframe.setAttribute('frameborder','0');
        iframe.style.border = 'none';
        iframe.style.overflow = 'hidden';
        iframe.style.width = obj.getAttribute('width') + 'px';
        iframe.style.height = obj.getAttribute('height') + 'px';
		iframe.setAttribute('allowTransparency','true');
		
        obj.appendChild( iframe );
      
        //bf.formatField( obj, iframe );	
    },



	folderItem : function(obj)
    {
		var file = obj.getAttribute('file');
		var scaleFactor = obj.getAttribute('scaled');
    	obj.setAttribute('src','/photo.asp?file=' + encodeURI( file ) + '&scaled=' + scaleFactor);    
        //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 div = dojo.byId(id);
		var frm = dojo.query('form',div)[0];
		var prompt = div.getAttribute('prompt') ? div.getAttribute('prompt') : 'Write a comment...';
		var ta = frm.elements['comment'];
		
		ta.value = state ? '' : prompt;
		ta.className = state ? 'bfcomments_enabled' : 'bfcomments_disabled';
		if (!state)
		{
			var handle = dojo.connect(ta,"onclick", function(){
				dojo.disconnect(handle);
				bf.enableComment(id,true);
			});
		}
		frm.elements['bfcommentbutton'].style.display = state ? '' : 'none';
	},

	setupComments: function(obj)
    {

		var prompt = obj.getAttribute('prompt') ? obj.getAttribute('prompt') : '';
		var button = obj.getAttribute('button') ? obj.getAttribute('button') : '';
        dojo.xhrGet({
            preventCache: true,
            url: '/comments.asp?id=' + obj.id + '&prompt=' + prompt + '&button=' + button,
            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 div = dojo.byId(id);
		var frm = dojo.query('form',div)[0];
		var prompt = div.getAttribute('prompt') ? div.getAttribute('prompt') : '';
		var button = div.getAttribute('button') ? div.getAttribute('button') : '';
		frm.elements['action'].value = action
		frm.elements['idx'].value = idx
		dojo.xhrPost({
			form: frm,
			url: '/comments.asp?id=' + div.id + '&prompt=' + prompt + '&button=' + button,
			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, "&nbsp;&nbsp;&nbsp;");
                loadNoteTooltipData(baseid, data);
            }
        }
    );
    dijit.popup.close(dijit.byId('notestooltipDlg'));
    return true;
}

function loadNoteTooltipData(baseid, data)
{
    dojo.query(baseid)[0].innerHTML = ((data!="") ? '<img src="images/postit_green.gif">' : '<img src="images/postit_yellow.gif">');
    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, "&nbsp;&nbsp;&nbsp;");
        loadNoteTooltipData(baseid, data);
        
        },
        preventCache: true,
        url: '/profile_notes_ajax.asp?key=', handleAs: 'text' });
}



// -----------------------------------------------------------------------------------------------------------
// get article header
// -----------------------------------------------------------------------------------------------------------
function articleHeaderFunc(a, div, action, title, subtitle, pencilstats)
{
    while (div.hasChildNodes()) { div.removeChild(div.lastChild); }    
	var articleID = div.getAttribute('articleID') ? div.getAttribute('articleID') : '';
	var url = 'http://www.princeton92.com/EditHTML/articleHeader.asp?id=' 
		+ articleID + '&action=' + action + '&title=' + title + '&subtitle=' + subtitle;
		
	dojo.xhrGet({
		preventCache: true,
		url: url,
		handleAs: "text",
		load: function(data) {
			div.innerHTML = data;
			dojo.query('input[bttype="savebutton"]').forEach( function(obj) {
				dojo.connect(obj,"onclick", function(obj) {
					var titleboxes = dojo.query('input[inpname="title"]',div);
					var subtitleboxes = dojo.query('input[inpname="subtitle"]',div);
					if ((titleboxes.length > 0) && (subtitleboxes.length > 0))
						articleHeaderFunc(a, div, "Save", titleboxes[0].value, subtitleboxes[0].value, pencilstats);
					bf.articleHeader(div,pencilstats);
				});
			});
			dojo.query('input[bttype="addbutton"]').forEach( function(obj) {
				dojo.connect(obj,"onclick", function(obj) {
					articleHeaderFunc(a, div, "Add", "", "", pencilstats);
					bf.articleList(div.parentNode.parentNode,pencilstats);
				});
			});
			dojo.query('input[bttype="deletebutton"]').forEach( function(obj) {
				dojo.connect(obj,"onclick", function(obj) {
					articleHeaderFunc(a, div, "Delete", "", "", pencilstats);
					bf.articleList(div.parentNode.parentNode,pencilstats);
				});
			});
			dojo.query('input[bttype="cancelbutton"]').forEach( function(obj) {
				dojo.connect(obj,"onclick", function(obj) {
					articleHeaderFunc(a, div, "", "", "", pencilstats);
					bf.articleHeader(div,pencilstats);
				});
			});
		},
		error: function(error) { div.innerHTML = 'error retrieving list'; }
	});
}


// -----------------------------------------------------------------------------------------------------------
// 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 = '<span>-</span>';
        }
    );

    // 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 bfedithtmlajax_setup(div, stats)
{	
    dojo.connect(div,"onmouseover", function(){ this.style.border ='1px dashed #990000'; });
    dojo.connect(div,"onmouseout", function(){ this.style.border ='1px dashed white'; });
    
    div.style.display = 'block';
    div.style.border = 'white 1px dashed';
    div.style.padding = '0px';
    div.style.margin = '0px';

    var contdiv = div.firstChild;
    var edithtmlid = div.getAttribute('edithtmlid') ? div.getAttribute('edithtmlid') : '';
    var hide = div.getAttribute('hide') == 'true';
    var admin = div.getAttribute('admin') == 'true';

	if (!contdiv)
	{
		contdiv = document.createElement("DIV");
		div.insertBefore( contdiv, div.firstChild );
	}
    if (hide)
        contdiv.innerHTML = '';
    else {
        dojo.xhrGet({
            preventCache: true,
            url: '/EditHTML/edithtmlajax.asp?id=' + edithtmlid,
            handleAs: "text",
            load: function(data) {
                while (contdiv.hasChildNodes()) { contdiv.removeChild(contdiv.lastChild); }
                contdiv.innerHTML = data;
               //dojo.parser.parse(contdiv);
            },
            error: function(error) { contdiv.innerHTML = 'error retrieving page'; }
        });    
    }
	
    if (admin) {
        var save = div.getAttribute('save') ? div.getAttribute('save') : '';
        var div2 = document.createElement("DIV");
        div2.style.position = 'relative';
        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 );
    }
	
}


function bfedithtml_setup(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;
}

function bfedithtml(id,defaultpage)
{
	if (defaultpage)
		window.open('/EditHTML/edithtml.asp?edithtmlid=' + id + '&def=' + defaultpage, '_blank', 'scrollbar=yes,resizable=yes');
	else
		window.open('/EditHTML/edithtml.asp?edithtmlid=' + id, '_blank', 'scrollbar=yes,resizable=yes');
}






// -----------------------------------------------------------------------------------------------------------
// "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)
{
	if (!dijit.byId('bfWaitDlg')) {
        var span = dojo.doc.createElement("div"); 
        msg = msg ? (msg=='' ? '' : '&nbsp;'+msg) : '&nbsp;Please wait...';
        span.innerHTML = '<img src="/images/loading.gif" align="absmiddle" /><span style="font-size:8pt">' + msg + '</span>';
        dojo.body().appendChild(span);
    
        bfWaitDialog = new dijit.Dialog({ id: "bfWaitDlg", title: "", content: span });
        dojo.body().appendChild(bfWaitDialog.domNode);
        bfWaitDialog.titleBar.style.display='none';
        bfWaitDialog.startup();
        bfWaitDialog.show();
	}
}

function bfWaitDone()
{
	if (dijit.byId('bfWaitDlg'))
	{
	    bfWaitDialog.hide();
    	bfWaitDialog.destroy();
	}
}


// -----------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------------


function dialogAlert(txtContent, txtTitle)
{
    var thisdialog = new dijit.Dialog({ title: txtTitle ? txtTitle : '', content: txtContent });
    dojo.body().appendChild(thisdialog.domNode);
    thisdialog.startup();
    thisdialog.show();
}


function bfToaster( msg, type, duration)
{
    if (!dojo.byId('bfToasterWidget')) {
	    dojo.require("dojox.widget.Toaster");
		dojo.addOnLoad(function(){
        	new dojox.widget.Toaster({id: "bfToasterWidget",positionDirection: "br-up"});
            dijit.byId('bfToasterWidget').setContent(msg ? msg : '', type ? type : 'message', duration ? duration : 5000 );
            dijit.byId('bfToasterWidget').show();
		});
	}
	else {
        dijit.byId('bfToasterWidget').setContent(msg ? msg : '', type ? type : 'message', duration ? duration : 5000 );
        dijit.byId('bfToasterWidget').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');
}



