36 var SimpleContextMenu = SimpleContextMenu || {};
38 if (typeof Debug ==
'undefined')
39 alert(
'ERROR: Debug is undefined! Must include Debug.js before SimpleContextMenu.js');
40 if (typeof Globals ==
'undefined')
41 alert(
'ERROR: Globals is undefined! Must include Globals.js before SimpleContextMenu.js');
42 if (typeof DesktopContent ==
'undefined' &&
43 typeof Desktop ==
'undefined')
44 alert(
'ERROR: DesktopContent is undefined! Must include DesktopContent.js before SimpleContextMenu.js');
57 SimpleContextMenu._popUpEl = 0;
58 SimpleContextMenu._menuItemHandlers = [];
59 SimpleContextMenu._primaryColor =
"";
60 SimpleContextMenu._secondaryColor =
"";
65 SimpleContextMenu.createMenu =
function(menuItems,menuItemHandlers,
66 popupID,topLeftX,topLeftY, primaryColor, secondaryColor) {
77 SimpleContextMenu._menuItemHandlers = menuItemHandlers;
78 SimpleContextMenu._primaryColor = primaryColor;
79 SimpleContextMenu._secondaryColor = secondaryColor;
81 var body = document.getElementsByTagName(
"BODY")[0];
82 var el = SimpleContextMenu._popUpEl;
85 Debug.log(
"Can not create SimpleContextMenu if one already exists",
92 el = document.createElement(
"div");
93 el.setAttribute(
"id", popupID);
94 el.style.display =
"none";
95 el.onmousemove =
function(e){e.cancelBubble =
true;};
103 css +=
"#clearDiv {" +
108 css +=
"#" + popupID +
"" +
110 "position:absolute;" +
111 "left:" + topLeftX +
"px;" +
112 "top:" + topLeftY +
"px;" +
113 "z-index: 1000000;" +
114 "background-color: " + primaryColor +
";" +
115 "border: 1px solid " + secondaryColor +
";" +
118 css +=
"#" + popupID +
" div" +
120 "color: " + secondaryColor +
";" +
121 "-webkit-user-select: none;" +
122 "-moz-user-select: none;" +
123 "user-select: none;" +
125 css +=
"#" + popupID +
" div:hover" +
128 "background-color: " + secondaryColor +
";" +
129 "color: " + primaryColor +
";" +
134 var style = document.createElement(
'style');
136 if (style.styleSheet) {
137 style.styleSheet.cssText = css;
139 style.appendChild(document.createTextNode(css));
142 document.getElementsByTagName(
'head')[0].appendChild(style);
148 for(var i=0;i<menuItems.length;++i)
151 "<div class='SimpleContextMenu-menuItem' " +
152 "id='SimpleContextMenu-menuItem-" + i +
"' " +
153 "onmousemove='SimpleContextMenu.handleMouseOverMenuItem(event," + i +
");' " +
158 "onmouseup='SimpleContextMenu.callMenuItemHandler(event," + i +
");' " +
162 str +=
"<div id='clearDiv'></div>";
166 el.style.display =
"block";
168 SimpleContextMenu._popUpEl = el;
176 SimpleContextMenu.createMenuCallAsString =
function(menuItems,menuItemHandlers,
177 popupID, primaryColor, secondaryColor) {
180 str +=
"SimpleContextMenu.createMenu([";
183 for(j=0;j<menuItems.length;++j)
187 str +=
"\"" + menuItems[j] +
"\"";
193 for(j=0;j<menuItemHandlers.length;++j)
197 menuItemHandlers[j] = menuItemHandlers[j].replace(/\\\
"/g, "AAAAA
");
198 menuItemHandlers[j] = menuItemHandlers[j].replace(/"/g,
"\\\"");
199 menuItemHandlers[j] = menuItemHandlers[j].replace(/AAAAA/g,
"\\\\\\\"");
203 str +=
"\"" + menuItemHandlers[j] +
"\"";
204 if(j != menuItemHandlers.length-1)
208 ",\"" + popupID +
"\",event.pageX-1,event.pageY-1, " +
209 "\"" + primaryColor +
210 "\", \"" + secondaryColor +
"\");";
219 SimpleContextMenu.mouseMoveHandler =
function(e) {
222 if(SimpleContextMenu._popUpEl)
224 Debug.log(
"Removing SimpleContextMenu");
225 SimpleContextMenu._popUpEl.parentNode.removeChild(SimpleContextMenu._popUpEl);
226 SimpleContextMenu._popUpEl = 0;
230 if(typeof DesktopContent ==
'undefined')
231 Desktop.mouseMoveSubscriber(SimpleContextMenu.mouseMoveHandler);
233 DesktopContent.mouseMoveSubscriber(SimpleContextMenu.mouseMoveHandler);
237 SimpleContextMenu.callMenuItemHandler =
function(event,index) {
238 var handler = SimpleContextMenu._menuItemHandlers[index];
240 Debug.log(
"Removing SimpleContextMenu");
241 SimpleContextMenu._popUpEl.parentNode.removeChild(SimpleContextMenu._popUpEl);
242 SimpleContextMenu._popUpEl = 0;
244 event.cancelBubble =
true;
245 event.preventDefault();
248 if(handler && (typeof handler) ==
"string")
250 Debug.log(
"evaluateJS = " + handler);
256 handler(event, index);
263 SimpleContextMenu.handleMouseOverMenuItem =
function(event,index) {
264 event.cancelBubble =
true;
270 for(var i=0;i<SimpleContextMenu._menuItemHandlers.length;++i)
272 el = document.getElementById(
"SimpleContextMenu-menuItem-" + i);
275 el.style.backgroundColor = SimpleContextMenu._secondaryColor;
276 el.style.color = SimpleContextMenu._primaryColor;
280 el.style.backgroundColor = SimpleContextMenu._primaryColor;
281 el.style.color = SimpleContextMenu._secondaryColor;