nexus site path corrected
[portal.git] / ecomp-portal-FE / client / bower_components / jquery.event.drag-new / fire / jquery.fire.js
1 ;(function( $, window ){
2
3 /*
4         http://www.w3.org/TR/DOM-Level-3-Events/#event-type-wheel
5 */
6
7 // jQuery method
8 $.fn.fire = function( type, opts ){
9         opts = opts || {};
10         // translate pageX to clientX
11         if ( opts.pageX && !opts.clientX )      
12                 opts.clientX = opts.pageX - $( window ).scrollLeft();
13         // translate pageY to clientY
14         if ( opts.pageY && !opts.clientY )      
15                 opts.clientY = opts.pageY - $( window ).scrollTop();
16         // iterate the jquery collection        
17         return this.each(function(){
18                 // clone options uniquely for each instance
19                 opts = $.extend( {}, $.fire.defaults, opts );
20                 // instanitate a new event
21                 new $.fire( this, type, opts );
22         });
23 };                 
24
25 // Constructor
26 $.fire = function( element, type, opts ){
27         this.element = element;
28         this.type = type;
29         this.event = this.create( opts );
30         this.dispatch();
31 };
32
33 // Defaults 
34 $.fire.defaults = {
35         bubbles: true, 
36         cancelable: true, 
37         view: window, 
38         detail: 0,
39         screenX: 0, 
40         screenY: 0, 
41         clientX: 0, 
42         clientY: 0,
43         ctrlKey: false, 
44         altKey: false, 
45         shiftKey: false, 
46         metaKey: false,
47         button: 0
48 };
49
50 // Methods
51 $.fire.prototype = {
52         create: function( opts ){
53                 switch ( this.type ){
54                         case "mousemove":
55                                 opts.cancelable = false;
56                         case "mousedown":
57                         case "mouseup":
58                         case "mouseover":
59                         case "mouseout":
60                         case "click":
61                         case "dblclick":
62                         case "touchstart":
63                         case "touchmove":
64                         case "touchend":
65                                 return this.mouse( opts );
66                         case "keyup":
67                         case "keypress":
68                         case "keydown":
69                                 return this.key( opts );
70                         default:
71                                 return this.event( opts );
72                 }
73         },
74         event: function( opts ){
75                 var event;
76                 if ( document.createEvent ){
77                         event = document.createEvent("HTMLEvents");
78                         event.initEvent(
79                                 this.type, 
80                                 opts.bubbles, 
81                                 opts.cancelable
82                         );
83                         $.extend( event, { 
84                                 view: opts.view,
85                                 detail: opts.detail,
86                                 screenX: opts.screenX, 
87                                 screenY: opts.screenY, 
88                                 clientX: opts.clientX, 
89                                 clientY: opts.clientY,
90                                 ctrlKey: opts.ctrlKey, 
91                                 altKey: opts.altKey, 
92                                 shiftKey: opts.shiftKey, 
93                                 metaKey: opts.metaKey,
94                                 keyCode: opts.keyCode, 
95                                 charCode: opts.charCode,
96                                 button: opts.button
97                         });
98                 } 
99                 else if ( document.createEventObject ) {
100                         event = $.extend( document.createEventObject(), opts );
101                 }
102                 return event;                   
103         },
104         mouse: function( opts ){
105                 var event;
106                 if ( document.createEvent ){
107                         event = document.createEvent("MouseEvents");
108                         event.initMouseEvent(
109                                 this.type, 
110                                 opts.bubbles, 
111                                 opts.cancelable, 
112                                 opts.view, 
113                                 opts.detail,
114                                 opts.screenX, 
115                                 opts.screenY, 
116                                 opts.clientX, 
117                                 opts.clientY,
118                                 opts.ctrlKey, 
119                                 opts.altKey, 
120                                 opts.shiftKey, 
121                                 opts.metaKey,
122                                 opts.button, 
123                                 $( opts.relatedTarget )[0] || document.body.parentNode 
124                         );
125                 } 
126                 else if ( document.createEventObject ) {
127                         event = this.event();
128                         event.button = { 0:1, 1:4, 2:2 }[ event.button ] || event.button;
129                 }
130                 return event;
131         },
132         key: function( opts ){
133                 var event;
134                 if ( document.createEvent ) {
135                         try {
136                                 event = document.createEvent("KeyEvents");
137                                 event.initKeyEvent(
138                                         this.type, 
139                                         opts.bubbles, 
140                                         opts.cancelable, 
141                                         opts.view,
142                                         opts.ctrlKey, 
143                                         opts.altKey, 
144                                         opts.shiftKey, 
145                                         opts.metaKey,
146                                         opts.keyCode, 
147                                         opts.charCode
148                                 );
149                         } 
150                         catch ( err ){
151                                 event = this.event( opts );
152                         }
153                 } 
154                 else if ( document.createEventObject ){
155                         event = this.event( opts );
156                 }
157                 if ( $.browser.msie || $.browser.opera ){
158                         event.keyCode = opts.charCode > 0 ? opts.charCode : opts.keyCode;
159                         event.charCode = undefined;
160                 }
161                 return event;
162         },
163         dispatch: function(){
164                 if ( this.element.dispatchEvent )
165                         this.element.dispatchEvent( this.event );
166                 else if ( this.element.fireEvent )
167                         this.element.fireEvent( 'on'+this.type, this.event );
168         }
169 };
170
171 })( jQuery, window );