32$(document).ready(
function (){
33 Menu =
function(id,htmlSupport,menuTitleTab_,menuEventTab_,menuIconClassAttributesTab_,menuShareEvent_,parameters) {
36 var menuEventTab = menuEventTab_;
37 var numOfEvents = menuEventTab.length;
38 var menuShareEvent = menuShareEvent_;
39 var eventSelectedTab=
new Array();
41 this.getId =
function() {
45 this.getEventSelectedTab =
function(){
47 return eventSelectedTab;
50 this.getMenuIconClassAttributesTab =
function(){
52 return menuIconClassAttributesTab_;
55 this.getMenuShareEvent =
function(){
57 return menuShareEvent;
60 this.setMenuShareEvent =
function(option_, menuShareEvent_){
62 menuShareEvent[option_] = menuShareEvent_;
66 if(typeof parameters ==
'undefined'){
72 position :
"absolute",
79 margin :
"0px 0px 0px 0px",
81 backgroundColor:
"rgba(0, 0, 0, 0.0)",
92 var position_= parameters.position;
93 var top_=parameters.top;
94 var left_=parameters.left;
95 var visible = parameters.visible;
96 var class_ =parameters.classN;
97 var height_=parameters.height;
98 var width_=parameters.width;
99 var src_unselect =
"unselectdefault100";
100 var backgroundColor_ = parameters.backgroundColor;
101 var borderStyle_ = parameters.borderStyle;
102 var borderWidth_ = parameters.borderWidth;
103 var borderColor_ = parameters.borderColor;
104 var orientation_ = parameters.orientation;
105 var margin_ = parameters.margin;
106 var rightMargin_ = parameters.rightMargin;
107 var zIndex_ = parameters.zIndex;
109 if (typeof parameters.menubox !=
'undefined') {
110 menubox_ = parameters.menubox;
112 var touchspeed = configBehaviour.touchSpeed;
114 if (orientation_ ==
"V") {
122 this.buildHtmlMenu =
function(){
124 htmlSupport.append(
'<div id=menu'+
id+
' class='+class_+
'menu></div>');
126 var HandleDecalTop=0;
127 var HandleDecalLeft=0;
129 HandleDecalTop=Math.max(parseInt(height_/2),90);
130 HandleDecalLeft=Math.max(parseInt(width_/2),70);
133 var myMenu=$(
"#menu"+
id);
135 position : position_,
138 height : (V*numOfEvents+1*H)*height_+V*HandleDecalTop,
139 width : (H*numOfEvents+1*V)*(width_+rightMargin_)+H*HandleDecalLeft,
141 visibility : visible,
146 for(optionNumber=0;optionNumber<numOfEvents;optionNumber++) {
147 eventSelectedTab.push(
false);
148 myMenu.append(
'<div id='+
id+
'option'+optionNumber+
' class=optionfrom'+
id+
' title="'+menuTitleTab_[optionNumber]+
'" ></div>');
149 var Option=$(
'#'+
id+
'option'+optionNumber);
151 Option.addClass(menuIconClassAttributesTab_[optionNumber]).addClass(myMenu.attr(
"class")+
"Button");
154 position :
'absolute',
155 top : optionNumber*height_*V+HandleDecalTop*V,
156 left : (optionNumber)*(width_+rightMargin_)*H+HandleDecalLeft*H,
161 backgroundColor: backgroundColor_,
169 Option.on(
'mouseover',
function() {
170 if (configBehaviour.tooltip) {
171 $(
this).append(
'<div id=tooltip class="tooltipfrom'+
id
172 +
' fg-tooltip ui-widget ui-widget-content ui-corner-all" style="font-size: 40px"></div>');
173 var tooltip=$(
'#tooltip');
174 tooltip.html($(
this).attr(
"title"));
175 $(
this).attr(
"title",
"");
176 if (orientation_ ==
"V") {
177 tooltip.append(
'<div class="fg-tooltip-pointer-down ui-widget-content"><div class="fg-tooltip-pointer-down-inner"></div></div></div>');
178 tooltip.css(
"top",
"-180px");
180 tooltip.append(
'<div class="fg-tooltip-pointer-up ui-widget-content"><div class="fg-tooltip-pointer-down-inner"></div></div></div>');
181 tooltip.css(
"top",
"240px");
183 tooltip.fadeIn(
'500');
184 tooltip.fadeTo(
'10',10);
187 $(
'#'+this.
id).css(
'-webkit-transform',
'scale(1.5)').css(
'-moz-transform',
'scale(1.5)');
189 }).on(
'mouseout',
function() {
190 if (configBehaviour.tooltip) {
191 $(
this).attr(
"title",$(
this).children(
'div#tooltip').text());
192 $(
this).children(
'div#tooltip').remove();
195 $(
'#'+this.
id).css(
'-webkit-transform',
'scale(1)').css(
'-moz-transform',
'scale(1)');
199 $(
'#'+
id+
'option'+optionNumber).on({
218 var optionNumber = parseInt(this.
id.replace(this.parentNode.id.replace(
"menu",
"")+
'option',
''));
219 var
id = this.className.match(/optionfrom\w+/g)[0].replace(
'optionfrom',
'');
222 if (menuShareEvent[optionNumber] && ! $(
'#'+
id+
'option'+optionNumber).hasClass(
"NotSharedAgain") && my_user !=
"Anonymous" ) {
223 cdata={
"room":my_session,
"Menu":id,
"optionNumber":optionNumber,
"optionButton":menuIconClassAttributesTab_[optionNumber]};
224 socket.emit(
"click_Menu", cdata, callback=
function(sdata){
225 console.log(
"socket send Menu ", cdata);
229 if(eventSelectedTab[optionNumber]==
false) {
230 if ( this.className.match(/disable/) ==
null ) {
232 if(only_one_option==
true) {
235 for(p=0;p<eventSelectedTab.length;p++) {
236 if(p!=optionNumber && eventSelectedTab[p]==
true) {
237 eventSelectedTab[p]=
false;
238 menuEventTab[p](eventSelectedTab[p],id,p);
242 eventSelectedTab[optionNumber]=
true;
245 menuEventTab[optionNumber](eventSelectedTab[optionNumber],id,optionNumber);
255 eventSelectedTab[optionNumber]=
false;
256 menuEventTab[optionNumber](eventSelectedTab[optionNumber],id,optionNumber);
269 var classes = myMenu.attr(
'class');
270 classes =
'ui-draggable ' +classes;
271 myMenu.attr(
'class', classes);
275 myMenu.append(
'<div id=MenuBox'+
id+
'></div>');
276 var MenuBox=$(
'#MenuBox'+
id);
277 MenuBox.append(
'<div id=handleMenu'+
id+
' class=menu-handle-off ></div>');
278 if (orientation_ ==
"V") {
279 var MenuBoxWidth=width_;
280 var MenuBoxHeight=HandleDecalTop;
282 var MenuBoxWidth=HandleDecalLeft;
283 var MenuBoxHeight=height_;
287 position :
'absolute',
290 height : MenuBoxHeight,
291 width : MenuBoxWidth,
299 var HandleMenu=$(
'#handleMenu'+
id);
300 var HandleMenuDraggable=
false;
303 position :
'absolute',
306 height : HandleDecalTop,
307 width : HandleDecalLeft,
312 var draggingMenu =
new Map();
313 touchstartMenuHandle =
function (ev) {
314 for (var i = 0; i < ev.changedTouches.length; i++) {
315 var touch = ev.changedTouches[i];
316 var targetid=touch.target.id;
317 if (targetid.replace(
"handleMenu",
"") ==
id ) {
319 top: parseInt(myMenu.css(
'top').replace(
'px',
'')),
320 left: parseInt(myMenu.css(
'left').replace(
'px',
'')),
322 HandleMenu.removeClass(
"menu-handle-off").addClass(
"menu-handle-on");
323 draggingMenu.set(touch.identifier, {
324 target: touch.target,
332 $(
'#'+targetid).css(
'-webkit-transform',
'scale(2)').css(
'-moz-transform',
'scale(2)');
336 ev.stopPropagation();
339 touchmoveMenuHandle =
function (ev) {
340 for (var i = 0; i < ev.changedTouches.length; i++) {
341 var touch = ev.changedTouches[i];
342 var targetid=touch.target.id;
343 var dragstate = draggingMenu.get(touch.identifier);
344 if (targetid.replace(
"handleMenu",
"") ==
id && dragstate) {
345 HandleMenu.removeClass(
"menu-handle-on").addClass(
"menu-handle-dragging");
346 dragstate.left = parseInt(dragstate.left)+touchspeed*(touch.pageX - dragstate.prevX);
347 dragstate.top = parseInt(dragstate.top)+touchspeed*(touch.pageY - dragstate.prevY);
348 myMenu.css({left: dragstate.left+
'px',
349 top: dragstate.top+
'px'});
350 dragstate.prevX = touch.pageX;
351 dragstate.prevY = touch.pageY;
355 ev.stopPropagation();
358 touchendMenuHandle =
function (ev) {
359 for (var i = 0; i < ev.changedTouches.length; i++) {
360 var touch = ev.changedTouches[i];
361 var targetid=touch.target.id;
362 if (targetid.replace(
"handleMenu",
"") ==
id ) {
363 draggingMenu.delete(touch.identifier);
364 HandleMenu.removeClass(
"menu-handle-on").removeClass(
"menu-handle-dragging").addClass(
"menu-handle-off");
365 $(
'#'+targetid).css(
'-webkit-transform',
'scale(1)').css(
'-moz-transform',
'scale(1)');
371 touchstart: touchstartMenuHandle,
372 touchmove: touchmoveMenuHandle,
373 touchend: touchendMenuHandle,
378 var HandleLeave =
function(e){
379 HandleMenu.removeClass(
"menu-handle-on").removeClass(
"menu-handle-dragging").addClass(
"menu-handle-off");
382 var HandleEnter =
function(e){
383 HandleMenu.removeClass(
"menu-handle-off").addClass(
"menu-handle-on");
390 mouseleave : HandleLeave,
392 mouseenter : HandleEnter,
395 if (HandleMenuDraggable) {
396 HandleMenuDraggable=
false;
397 myMenu.draggable(
"destroy");
398 HandleMenu.on(
"mouseenter",HandleEnter);
399 HandleMenu.on(
"mouseleave",HandleLeave);
401 HandleMenu.removeClass(
"menu-handle-on").addClass(
"menu-handle-dragging");
403 HandleMenu.off(
"mouseenter");
404 HandleMenu.off(
"mouseleave");
405 HandleMenuDraggable=
true;
410 MenuBox.append(
'<div id=dropdown ></div>');
411 var DropDown=$(
'#MenuBox'+
id+
'>#dropdown');
412 if (orientation_==
'V') {
413 DropDown.addClass(
"drop-down-menu");
415 position :
'absolute',
417 width : width_-HandleDecalLeft,
418 left : HandleDecalLeft,
419 height : HandleDecalTop,
423 DropDown.addClass(
"drop-right-menu");
425 position :
'absolute',
426 top : HandleDecalTop,
427 width : HandleDecalLeft,
429 height : height_-HandleDecalTop,
433 var DropDownState=
true;
438 for(optionNumber=0;optionNumber<numOfEvents;optionNumber++) {
439 var Option=$(
'#'+
id+
'option'+optionNumber);
443 if (orientation_==
'V') {
444 DropDown.removeClass(
"drop-down-menu").addClass(
"drop-left-menu");
446 DropDown.removeClass(
"drop-right-menu").addClass(
"drop-down-menu");
449 for(optionNumber=0;optionNumber<numOfEvents;optionNumber++) {
450 var Option=$(
'#'+
id+
'option'+optionNumber);
454 if (orientation_==
'V') {
455 DropDown.removeClass(
"drop-left-menu").addClass(
"drop-down-menu");
457 DropDown.removeClass(
"drop-down-menu").addClass(
"drop-right-menu");
468 mouseleave :
function(e){
476 mouseenter :
function(e){
483 dblclick :
function(e){
497 this.buildHtmlMenu();
500 this.getHtmlMenuSelector =
function(){
505 this.closeAllOptions =
function(){
506 var myMenu=$(
"#menu"+
id);
507 for(optionNumber=0;optionNumber<numOfEvents;optionNumber++) {
508 var thisoption=$(
'#'+
id+
'option'+optionNumber);
509 var tmp_class = thisoption.attr(
"class").match(/\w+ButtonIcon/g)[0];
510 var isNotClosed = tmp_class.match(
"close");
512 thisoption.addClass(
"NotSharedAgain");
514 thisoption.removeClass(
"NotSharedAgain");