jquery-bridge.js
上传用户:dawnssy
上传日期:2022-08-06
资源大小:9345k
文件大小:17k
源码类别:

JavaScript

开发平台:

JavaScript

  1. /*!
  2.  * Ext JS Library 3.1.0
  3.  * Copyright(c) 2006-2009 Ext JS, LLC
  4.  * licensing@extjs.com
  5.  * http://www.extjs.com/license
  6.  */
  7. if(typeof jQuery == "undefined"){
  8.     throw "Unable to load Ext, jQuery not found.";
  9. }
  10. (function(){
  11. var libFlyweight;
  12. Ext.lib.Dom = {
  13.     getViewWidth : function(full){
  14.         // jQuery doesn't report full window size on document query, so max both
  15.         return full ? Math.max(jQuery(document).width(),jQuery(window).width()) : jQuery(window).width();
  16.     },
  17.     getViewHeight : function(full){
  18.         // jQuery doesn't report full window size on document query, so max both
  19.         return full ? Math.max(jQuery(document).height(),jQuery(window).height()) : jQuery(window).height();
  20.     },
  21.     isAncestor : function(p, c){
  22.         var ret = false;
  23.             
  24.         p = Ext.getDom(p);
  25.         c = Ext.getDom(c);
  26.         if (p && c) {
  27.             if (p.contains) {
  28.                 return p.contains(c);
  29.             } else if (p.compareDocumentPosition) {
  30.                 return !!(p.compareDocumentPosition(c) & 16);
  31.             } else {
  32.                 while (c = c.parentNode) {
  33.                     ret = c == p || ret;                        
  34.                 }
  35.             }               
  36.         }   
  37.         return ret;
  38.     },
  39.     getRegion : function(el){
  40.         return Ext.lib.Region.getRegion(el);
  41.     },
  42.     //////////////////////////////////////////////////////////////////////////////////////
  43.     // Use of jQuery.offset() removed to promote consistent behavior across libs.
  44.     // JVS 05/23/07
  45.     //////////////////////////////////////////////////////////////////////////////////////
  46.     getY : function(el){
  47.         return this.getXY(el)[1];
  48.     },
  49.     getX : function(el){
  50.         return this.getXY(el)[0];
  51.     },
  52.     getXY : function(el) {
  53.         var p, pe, b, scroll, bd = (document.body || document.documentElement);
  54.         el = Ext.getDom(el);
  55.         if(el == bd){
  56.             return [0, 0];
  57.         }
  58.         if (el.getBoundingClientRect) {
  59.             b = el.getBoundingClientRect();
  60.             scroll = fly(document).getScroll();
  61.             return [Math.round(b.left + scroll.left), Math.round(b.top + scroll.top)];
  62.         }
  63.         var x = 0, y = 0;
  64.         p = el;
  65.         var hasAbsolute = fly(el).getStyle("position") == "absolute";
  66.         while (p) {
  67.             x += p.offsetLeft;
  68.             y += p.offsetTop;
  69.             if (!hasAbsolute && fly(p).getStyle("position") == "absolute") {
  70.                 hasAbsolute = true;
  71.             }
  72.             if (Ext.isGecko) {
  73.                 pe = fly(p);
  74.                 var bt = parseInt(pe.getStyle("borderTopWidth"), 10) || 0;
  75.                 var bl = parseInt(pe.getStyle("borderLeftWidth"), 10) || 0;
  76.                 x += bl;
  77.                 y += bt;
  78.                 if (p != el && pe.getStyle('overflow') != 'visible') {
  79.                     x += bl;
  80.                     y += bt;
  81.                 }
  82.             }
  83.             p = p.offsetParent;
  84.         }
  85.         if (Ext.isSafari && hasAbsolute) {
  86.             x -= bd.offsetLeft;
  87.             y -= bd.offsetTop;
  88.         }
  89.         if (Ext.isGecko && !hasAbsolute) {
  90.             var dbd = fly(bd);
  91.             x += parseInt(dbd.getStyle("borderLeftWidth"), 10) || 0;
  92.             y += parseInt(dbd.getStyle("borderTopWidth"), 10) || 0;
  93.         }
  94.         p = el.parentNode;
  95.         while (p && p != bd) {
  96.             if (!Ext.isOpera || (p.tagName != 'TR' && fly(p).getStyle("display") != "inline")) {
  97.                 x -= p.scrollLeft;
  98.                 y -= p.scrollTop;
  99.             }
  100.             p = p.parentNode;
  101.         }
  102.         return [x, y];
  103.     },
  104.     setXY : function(el, xy){
  105.         el = Ext.fly(el, '_setXY');
  106.         el.position();
  107.         var pts = el.translatePoints(xy);
  108.         if(xy[0] !== false){
  109.             el.dom.style.left = pts.left + "px";
  110.         }
  111.         if(xy[1] !== false){
  112.             el.dom.style.top = pts.top + "px";
  113.         }
  114.     },
  115.     setX : function(el, x){
  116.         this.setXY(el, [x, false]);
  117.     },
  118.     setY : function(el, y){
  119.         this.setXY(el, [false, y]);
  120.     }
  121. };
  122. // all lib flyweight calls use their own flyweight to prevent collisions with developer flyweights
  123. function fly(el){
  124.     if(!libFlyweight){
  125.         libFlyweight = new Ext.Element.Flyweight();
  126.     }
  127.     libFlyweight.dom = el;
  128.     return libFlyweight;
  129. }
  130. Ext.lib.Event = {
  131.     getPageX : function(e){
  132.         e = e.browserEvent || e;
  133.         return e.pageX;
  134.     },
  135.     getPageY : function(e){
  136.         e = e.browserEvent || e;
  137.         return e.pageY;
  138.     },
  139.     getXY : function(e){
  140.         e = e.browserEvent || e;
  141.         return [e.pageX, e.pageY];
  142.     },
  143.     getTarget : function(e){
  144.         return e.target;
  145.     },
  146.     // all Ext events will go through event manager which provides scoping
  147.     on : function(el, eventName, fn, scope, override){
  148.         jQuery(el).bind(eventName, fn);
  149.     },
  150.     un : function(el, eventName, fn){
  151.         jQuery(el).unbind(eventName, fn);
  152.     },
  153.     purgeElement : function(el){
  154.         jQuery(el).unbind();
  155.     },
  156.     preventDefault : function(e){
  157.         e = e.browserEvent || e;
  158.         if(e.preventDefault){
  159.             e.preventDefault();
  160.         }else{
  161.             e.returnValue = false;
  162.         }
  163.     },
  164.     stopPropagation : function(e){
  165.         e = e.browserEvent || e;
  166.         if(e.stopPropagation){
  167.             e.stopPropagation();
  168.         }else{
  169.             e.cancelBubble = true;
  170.         }
  171.     },
  172.     stopEvent : function(e){
  173.         this.preventDefault(e);
  174.         this.stopPropagation(e);
  175.     },
  176.     onAvailable : function(id, fn, scope){
  177.         var start = new Date();
  178.         var f = function(){
  179.             if(start.getElapsed() > 10000){
  180.                 clearInterval(iid);
  181.             }
  182.             var el = document.getElementById(id);
  183.             if(el){
  184.                 clearInterval(iid);
  185.                 fn.call(scope||window, el);
  186.             }
  187.         };
  188.         var iid = setInterval(f, 50);
  189.     },
  190.     resolveTextNode: Ext.isGecko ? function(node){
  191.         if(!node){
  192.             return;
  193.         }
  194.         var s = HTMLElement.prototype.toString.call(node);
  195.         if(s == '[xpconnect wrapped native prototype]' || s == '[object XULElement]'){
  196.             return;
  197.         }
  198.         return node.nodeType == 3 ? node.parentNode : node;
  199.     } : function(node){
  200.         return node && node.nodeType == 3 ? node.parentNode : node;
  201.     },
  202.     getRelatedTarget: function(ev) {
  203.         ev = ev.browserEvent || ev;
  204.         var t = ev.relatedTarget;
  205.         if (!t) {
  206.             if (ev.type == "mouseout") {
  207.                 t = ev.toElement;
  208.             } else if (ev.type == "mouseover") {
  209.                 t = ev.fromElement;
  210.             }
  211.         }
  212.         return this.resolveTextNode(t);
  213.     }
  214. };
  215. Ext.lib.Ajax = function(){
  216.     var createComplete = function(cb){
  217.          return function(xhr, status){
  218.             if((status == 'error' || status == 'timeout') && cb.failure){
  219.                 cb.failure.call(cb.scope||window, createResponse(cb, xhr));
  220.             }else if(cb.success){
  221.                 cb.success.call(cb.scope||window, createResponse(cb, xhr));
  222.             }
  223.          };
  224.     };
  225.     
  226.     var createResponse = function(cb, xhr){
  227.         var headerObj = {},
  228.             headerStr,              
  229.             t,
  230.             s;
  231.         try {
  232.             headerStr = xhr.getAllResponseHeaders();   
  233.             Ext.each(headerStr.replace(/rn/g, 'n').split('n'), function(v){
  234.                 t = v.indexOf(':');
  235.                 if(t >= 0){
  236.                     s = v.substr(0, t).toLowerCase();
  237.                     if(v.charAt(t + 1) == ' '){
  238.                         ++t;
  239.                     }
  240.                     headerObj[s] = v.substr(t + 1);
  241.                 }
  242.             });
  243.         } catch(e) {}
  244.         
  245.         return {
  246.             responseText: xhr.responseText,
  247.             responseXML : xhr.responseXML,
  248.             argument: cb.argument,
  249.             status: xhr.status,
  250.             statusText: xhr.statusText,
  251.             getResponseHeader : function(header){return headerObj[header.toLowerCase()];},
  252.             getAllResponseHeaders : function(){return headerStr}
  253.         };
  254.     };
  255.     return {
  256.         request : function(method, uri, cb, data, options){
  257.             var o = {
  258.                 type: method,
  259.                 url: uri,
  260.                 data: data,
  261.                 timeout: cb.timeout,
  262.                 complete: createComplete(cb)
  263.             };
  264.             if(options){
  265.                 var hs = options.headers;
  266.                 if(options.xmlData){
  267.                     o.data = options.xmlData;
  268.                     o.processData = false;
  269.                     o.type = (method ? method : (options.method ? options.method : 'POST'));
  270.                     if (!hs || !hs['Content-Type']){
  271.                         o.contentType = 'text/xml';
  272.                     }
  273.                 }else if(options.jsonData){
  274.                     o.data = typeof options.jsonData == 'object' ? Ext.encode(options.jsonData) : options.jsonData;
  275.                     o.processData = false;
  276.                     o.type = (method ? method : (options.method ? options.method : 'POST'));
  277.                     if (!hs || !hs['Content-Type']){
  278.                         o.contentType = 'application/json';
  279.                     }
  280.                 }
  281.                 if(hs){
  282.                     o.beforeSend = function(xhr){
  283.                         for(var h in hs){
  284.                             if(hs.hasOwnProperty(h)){
  285.                                 xhr.setRequestHeader(h, hs[h]);
  286.                             }
  287.                         }
  288.                     }
  289.                 }
  290.             }
  291.             jQuery.ajax(o);
  292.         },
  293.         formRequest : function(form, uri, cb, data, isUpload, sslUri){
  294.             jQuery.ajax({
  295.                 type: Ext.getDom(form).method ||'POST',
  296.                 url: uri,
  297.                 data: jQuery(form).serialize()+(data?'&'+data:''),
  298.                 timeout: cb.timeout,
  299.                 complete: createComplete(cb)
  300.             });
  301.         },
  302.         isCallInProgress : function(trans){
  303.             return false;
  304.         },
  305.         abort : function(trans){
  306.             return false;
  307.         },
  308.         serializeForm : function(form){
  309.             return jQuery(form.dom||form).serialize();
  310.         }
  311.     };
  312. }();
  313. Ext.lib.Anim = function(){
  314.     var createAnim = function(cb, scope){
  315.         var animated = true;
  316.         return {
  317.             stop : function(skipToLast){
  318.                 // do nothing
  319.             },
  320.             isAnimated : function(){
  321.                 return animated;
  322.             },
  323.             proxyCallback : function(){
  324.                 animated = false;
  325.                 Ext.callback(cb, scope);
  326.             }
  327.         };
  328.     };
  329.     return {
  330.         scroll : function(el, args, duration, easing, cb, scope){
  331.             // scroll anim not supported so just scroll immediately
  332.             var anim = createAnim(cb, scope);
  333.             el = Ext.getDom(el);
  334.             if(typeof args.scroll.to[0] == 'number'){
  335.                 el.scrollLeft = args.scroll.to[0];
  336.             }
  337.             if(typeof args.scroll.to[1] == 'number'){
  338.                 el.scrollTop = args.scroll.to[1];
  339.             }
  340.             anim.proxyCallback();
  341.             return anim;
  342.         },
  343.         motion : function(el, args, duration, easing, cb, scope){
  344.             return this.run(el, args, duration, easing, cb, scope);
  345.         },
  346.         color : function(el, args, duration, easing, cb, scope){
  347.             // color anim not supported, so execute callback immediately
  348.             var anim = createAnim(cb, scope);
  349.             anim.proxyCallback();
  350.             return anim;
  351.         },
  352.         run : function(el, args, duration, easing, cb, scope, type){
  353.             var anim = createAnim(cb, scope), e = Ext.fly(el, '_animrun');
  354.             var o = {};
  355.             for(var k in args){
  356.                 switch(k){   // jquery doesn't support, so convert
  357.                     case 'points':
  358.                         var by, pts;
  359.                         e.position();
  360.                         if(by = args.points.by){
  361.                             var xy = e.getXY();
  362.                             pts = e.translatePoints([xy[0]+by[0], xy[1]+by[1]]);
  363.                         }else{
  364.                             pts = e.translatePoints(args.points.to);
  365.                         }
  366.                         o.left = pts.left;
  367.                         o.top = pts.top;
  368.                         if(!parseInt(e.getStyle('left'), 10)){ // auto bug
  369.                             e.setLeft(0);
  370.                         }
  371.                         if(!parseInt(e.getStyle('top'), 10)){
  372.                             e.setTop(0);
  373.                         }
  374.                         if(args.points.from){
  375.                             e.setXY(args.points.from);
  376.                         }
  377.                     break;
  378.                     case 'width':
  379.                         o.width = args.width.to;
  380.                         if (args.width.from)
  381.                             e.setWidth(args.width.from);
  382.                     break;
  383.                     case 'height':
  384.                         o.height = args.height.to;
  385.                         if (args.height.from)
  386.                             e.setHeight(args.height.from);
  387.                     break;
  388.                     case 'opacity':
  389.                         o.opacity = args.opacity.to;
  390.                         if (args.opacity.from)
  391.                             e.setOpacity(args.opacity.from);
  392.                     break;
  393.                     case 'left':
  394.                         o.left = args.left.to;
  395.                         if (args.left.from)
  396.                             e.setLeft(args.left.from);
  397.                     break;
  398.                     case 'top':
  399.                         o.top = args.top.to;
  400.                         if (args.top.from)
  401.                             e.setTop(args.top.from);
  402.                     break;
  403.                     case 'callback':
  404.                     case 'scope':
  405.                         // jQuery can't handle callback and scope arguments, so break here
  406.                     break;
  407.                     default:
  408.                         o[k] = args[k].to;
  409.                         if (args[k].from)
  410.                             e.setStyle(k, args[k].from);
  411.                     break;
  412.                 }
  413.             }
  414.             // TODO: find out about easing plug in?
  415.             jQuery(el).animate(o, duration*1000, undefined, anim.proxyCallback);
  416.             return anim;
  417.         }
  418.     };
  419. }();
  420. Ext.lib.Region = function(t, r, b, l) {
  421.     this.top = t;
  422.     this[1] = t;
  423.     this.right = r;
  424.     this.bottom = b;
  425.     this.left = l;
  426.     this[0] = l;
  427. };
  428. Ext.lib.Region.prototype = {
  429.     contains : function(region) {
  430.         return ( region.left   >= this.left   &&
  431.                  region.right  <= this.right  &&
  432.                  region.top    >= this.top    &&
  433.                  region.bottom <= this.bottom    );
  434.     },
  435.     getArea : function() {
  436.         return ( (this.bottom - this.top) * (this.right - this.left) );
  437.     },
  438.     intersect : function(region) {
  439.         var t = Math.max( this.top,    region.top    );
  440.         var r = Math.min( this.right,  region.right  );
  441.         var b = Math.min( this.bottom, region.bottom );
  442.         var l = Math.max( this.left,   region.left   );
  443.         if (b >= t && r >= l) {
  444.             return new Ext.lib.Region(t, r, b, l);
  445.         } else {
  446.             return null;
  447.         }
  448.     },
  449.     union : function(region) {
  450.         var t = Math.min( this.top,    region.top    );
  451.         var r = Math.max( this.right,  region.right  );
  452.         var b = Math.max( this.bottom, region.bottom );
  453.         var l = Math.min( this.left,   region.left   );
  454.         return new Ext.lib.Region(t, r, b, l);
  455.     },
  456.     constrainTo : function(r) {
  457.             this.top = this.top.constrain(r.top, r.bottom);
  458.             this.bottom = this.bottom.constrain(r.top, r.bottom);
  459.             this.left = this.left.constrain(r.left, r.right);
  460.             this.right = this.right.constrain(r.left, r.right);
  461.             return this;
  462.     },
  463.     adjust : function(t, l, b, r){
  464.         this.top += t;
  465.         this.left += l;
  466.         this.right += r;
  467.         this.bottom += b;
  468.         return this;
  469.     }
  470. };
  471. Ext.lib.Region.getRegion = function(el) {
  472.     var p = Ext.lib.Dom.getXY(el);
  473.     var t = p[1];
  474.     var r = p[0] + el.offsetWidth;
  475.     var b = p[1] + el.offsetHeight;
  476.     var l = p[0];
  477.     return new Ext.lib.Region(t, r, b, l);
  478. };
  479. Ext.lib.Point = function(x, y) {
  480.    if (Ext.isArray(x)) {
  481.       y = x[1];
  482.       x = x[0];
  483.    }
  484.     this.x = this.right = this.left = this[0] = x;
  485.     this.y = this.top = this.bottom = this[1] = y;
  486. };
  487. Ext.lib.Point.prototype = new Ext.lib.Region();
  488. // prevent IE leaks
  489. if(Ext.isIE) {
  490.     function fnCleanUp() {
  491.         var p = Function.prototype;
  492.         delete p.createSequence;
  493.         delete p.defer;
  494.         delete p.createDelegate;
  495.         delete p.createCallback;
  496.         delete p.createInterceptor;
  497.         window.detachEvent("onunload", fnCleanUp);
  498.     }
  499.     window.attachEvent("onunload", fnCleanUp);
  500. }
  501. })();