]> git.sur5r.net Git - bacula/bacula/blob - gui/baculum/framework/Web/Javascripts/source/prado/activecontrols/dragdrop.js
511c2ab9018a919a37d32c5bc1648c545a30384b
[bacula/bacula] / gui / baculum / framework / Web / Javascripts / source / prado / activecontrols / dragdrop.js
1 /**
2  * DropContainer control
3  */
4  
5 Prado.WebUI.DropContainer = Class.create(Prado.WebUI.CallbackControl,
6 {
7         onInit: function(options)
8         {
9                 this.options = options;
10                 Object.extend (this.options, 
11                 {
12                         onDrop: this.onDrop.bind(this)
13                 });
14                 
15                 Droppables.add (options.ID, this.options);
16         },
17         
18         onDrop: function(dragElement, dropElement, event)
19         {
20                 var elementId=dragElement.id.replace(/clone_/,"");
21                 var req = new Prado.CallbackRequest(this.options.EventTarget, this.options);
22                 var curleft = curtop = 0;
23                 var obj = dropElement;
24                 if (obj.offsetParent) {
25                         curleft = obj.offsetLeft
26                         curtop = obj.offsetTop
27                         while (obj = obj.offsetParent) {
28                                 curleft += obj.offsetLeft
29                                 curtop += obj.offsetTop
30                         }
31                 }
32                 var scrOfX = 0, scrOfY = 0;
33                 if( typeof( window.pageYOffset ) == 'number' ) {
34                         //Netscape compliant
35                         scrOfY = window.pageYOffset;
36                         scrOfX = window.pageXOffset;
37                 } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
38                         //DOM compliant
39                         scrOfY = document.body.scrollTop;
40                         scrOfX = document.body.scrollLeft;
41                 } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
42                         //IE6 standards compliant mode
43                         scrOfY = document.documentElement.scrollTop;
44                         scrOfX = document.documentElement.scrollLeft;
45                 }
46                 req.setCallbackParameter({
47                         DragElementID : elementId,
48                         ScreenX : event.screenX,
49                         ScreenY : event.screenY,
50                         OffsetX : event.offsetX || event.clientX - curleft + scrOfX,
51                         OffsetY : event.offsetY || event.clientY - curtop + scrOfY,
52                         ClientX : event.clientX,
53                         ClientY : event.clientY,
54                         AltKey : event.altKey,
55                         CtrlKey : event.ctrlKey,
56                         ShiftKey : event.shiftKey
57                 });
58                 req.dispatch();
59
60         }
61 });