jquery-bridge.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:16k
源码类别:

中间件编程

开发平台:

JavaScript

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