2 * DropContainer control
5 Prado.WebUI.DropContainer = Class.create(Prado.WebUI.CallbackControl,
7 onInit: function(options)
9 this.options = options;
10 Object.extend (this.options,
12 onDrop: this.onDrop.bind(this)
15 Droppables.add (options.ID, this.options);
18 onDrop: function(dragElement, dropElement, event)
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
32 var scrOfX = 0, scrOfY = 0;
33 if( typeof( window.pageYOffset ) == 'number' ) {
35 scrOfY = window.pageYOffset;
36 scrOfX = window.pageXOffset;
37 } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
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;
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