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

中间件编程

开发平台:

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 YAHOO == "undefined"){
  8.     throw "Unable to load Ext, core YUI utilities (yahoo, dom, event) not found.";
  9. }
  10. (function(){
  11.     var E = YAHOO.util.Event,
  12.         D = YAHOO.util.Dom,
  13.         CN = YAHOO.util.Connect,
  14.         ES = YAHOO.util.Easing,
  15.         A = YAHOO.util.Anim,
  16.         libFlyweight,
  17.         version = YAHOO.env.getVersion('yahoo').version.split('.'),
  18.         mouseEnterSupported = parseInt(version[0]) >= 3,
  19.         mouseCache = {},
  20.         isXUL = Ext.isGecko ? function(node){
  21.             return Object.prototype.toString.call(node) == '[object XULElement]';
  22.         } : function(){
  23.         }, isTextNode = Ext.isGecko ? function(node){
  24.             try{
  25.                 return node.nodeType == 3;
  26.             }catch (e){
  27.                 return false;
  28.             }
  29.         } : function(node){
  30.             return node.nodeType == 3;
  31.         }, elContains = function(parent, child){
  32.             if(parent && parent.firstChild){
  33.                 while(child){
  34.                     if(child === parent){
  35.                         return true;
  36.                     }
  37.                     try{
  38.                         child = child.parentNode;
  39.                     }catch (e){
  40.                         return false;
  41.                     }
  42.                     if(child && (child.nodeType != 1)){
  43.                         child = null;
  44.                     }
  45.                 }
  46.             }
  47.             return false;
  48.         }, checkRelatedTarget = function(e){
  49.             var related = Ext.lib.Event.getRelatedTarget(e);
  50.             return !(isXUL(related) || elContains(e.currentTarget, related));
  51.         };
  52. Ext.lib.Dom = {
  53.     getViewWidth : function(full){
  54.         return full ? D.getDocumentWidth() : D.getViewportWidth();
  55.     },
  56.     getViewHeight : function(full){
  57.         return full ? D.getDocumentHeight() : D.getViewportHeight();
  58.     },
  59.     isAncestor : function(haystack, needle){
  60.         return D.isAncestor(haystack, needle);
  61.     },
  62.     getRegion : function(el){
  63.         return D.getRegion(el);
  64.     },
  65.     getY : function(el){
  66.         return this.getXY(el)[1];
  67.     },
  68.     getX : function(el){
  69.         return this.getXY(el)[0];
  70.     },
  71.     // original version based on YahooUI getXY
  72.     // this version fixes several issues in Safari and FF
  73.     // and boosts performance by removing the batch overhead, repetitive dom lookups and array index calls
  74.     getXY : function(el){
  75.         var p, pe, b, scroll, bd = (document.body || document.documentElement);
  76.         el = Ext.getDom(el);
  77.         if(el == bd){
  78.             return [0, 0];
  79.         }
  80.         if (el.getBoundingClientRect) {
  81.             b = el.getBoundingClientRect();
  82.             scroll = fly(document).getScroll();
  83.             return [Math.round(b.left + scroll.left), Math.round(b.top + scroll.top)];
  84.         }
  85.         var x = 0, y = 0;
  86.         p = el;
  87.         var hasAbsolute = fly(el).getStyle("position") == "absolute";
  88.         while (p) {
  89.             x += p.offsetLeft;
  90.             y += p.offsetTop;
  91.             if (!hasAbsolute && fly(p).getStyle("position") == "absolute") {
  92.                 hasAbsolute = true;
  93.             }
  94.             if (Ext.isGecko) {
  95.                 pe = fly(p);
  96.                 var bt = parseInt(pe.getStyle("borderTopWidth"), 10) || 0;
  97.                 var bl = parseInt(pe.getStyle("borderLeftWidth"), 10) || 0;
  98.                 x += bl;
  99.                 y += bt;
  100.                 if (p != el && pe.getStyle('overflow') != 'visible') {
  101.                     x += bl;
  102.                     y += bt;
  103.                 }
  104.             }
  105.             p = p.offsetParent;
  106.         }
  107.         if (Ext.isSafari && hasAbsolute) {
  108.             x -= bd.offsetLeft;
  109.             y -= bd.offsetTop;
  110.         }
  111.         if (Ext.isGecko && !hasAbsolute) {
  112.             var dbd = fly(bd);
  113.             x += parseInt(dbd.getStyle("borderLeftWidth"), 10) || 0;
  114.             y += parseInt(dbd.getStyle("borderTopWidth"), 10) || 0;
  115.         }
  116.         p = el.parentNode;
  117.         while (p && p != bd) {
  118.             if (!Ext.isOpera || (p.tagName != 'TR' && fly(p).getStyle("display") != "inline")) {
  119.                 x -= p.scrollLeft;
  120.                 y -= p.scrollTop;
  121.             }
  122.             p = p.parentNode;
  123.         }
  124.         return [x, y];
  125.     },
  126.     setXY : function(el, xy){
  127.         el = Ext.fly(el, '_setXY');
  128.         el.position();
  129.         var pts = el.translatePoints(xy);
  130.         if(xy[0] !== false){
  131.             el.dom.style.left = pts.left + "px";
  132.         }
  133.         if(xy[1] !== false){
  134.             el.dom.style.top = pts.top + "px";
  135.         }
  136.     },
  137.     setX : function(el, x){
  138.         this.setXY(el, [x, false]);
  139.     },
  140.     setY : function(el, y){
  141.         this.setXY(el, [false, y]);
  142.     }
  143. };
  144. Ext.lib.Event = {
  145.     getPageX : function(e){
  146.         return E.getPageX(e.browserEvent || e);
  147.     },
  148.     getPageY : function(e){
  149.         return E.getPageY(e.browserEvent || e);
  150.     },
  151.     getXY : function(e){
  152.         return E.getXY(e.browserEvent || e);
  153.     },
  154.     getTarget : function(e){
  155.         return E.getTarget(e.browserEvent || e);
  156.     },
  157.     getRelatedTarget : function(e){
  158.         return E.getRelatedTarget(e.browserEvent || e);
  159.     },
  160.     on : function(el, eventName, fn, scope, override){
  161.         if((eventName == 'mouseenter' || eventName == 'mouseleave') && !mouseEnterSupported){
  162.             var item = mouseCache[el.id] || (mouseCache[el.id] = {});
  163.             item[eventName] = fn;
  164.             fn = fn.createInterceptor(checkRelatedTarget);
  165.             eventName = (eventName == 'mouseenter') ? 'mouseover' : 'mouseout';
  166.         }
  167.         E.on(el, eventName, fn, scope, override);
  168.     },
  169.     un : function(el, eventName, fn){
  170.         if((eventName == 'mouseenter' || eventName == 'mouseleave') && !mouseEnterSupported){
  171.             var item = mouseCache[el.id], 
  172.                 ev = item && item[eventName];
  173.             if(ev){
  174.                 fn = ev.fn;
  175.                 delete item[eventName];
  176.                 eventName = (eventName == 'mouseenter') ? 'mouseover' : 'mouseout';
  177.             }
  178.         }
  179.         E.removeListener(el, eventName, fn);;
  180.     },
  181.     purgeElement : function(el){
  182.         E.purgeElement(el);
  183.     },
  184.     preventDefault : function(e){
  185.         E.preventDefault(e.browserEvent || e);
  186.     },
  187.     stopPropagation : function(e){
  188.         E.stopPropagation(e.browserEvent || e);
  189.     },
  190.     stopEvent : function(e){
  191.         E.stopEvent(e.browserEvent || e);
  192.     },
  193.     onAvailable : function(el, fn, scope, override){
  194.         return E.onAvailable(el, fn, scope, override);
  195.     }
  196. };
  197. Ext.lib.Ajax = {
  198.     request : function(method, uri, cb, data, options){
  199.         if(options){
  200.             var hs = options.headers;
  201.             if(hs){
  202.                 for(var h in hs){
  203.                     if(hs.hasOwnProperty(h)){
  204.                         CN.initHeader(h, hs[h], false);
  205.                     }
  206.                 }
  207.             }
  208.             if(options.xmlData){
  209.                 if (!hs || !hs['Content-Type']){
  210.                     CN.initHeader('Content-Type', 'text/xml', false);
  211.                 }
  212.                 method = (method ? method : (options.method ? options.method : 'POST'));
  213.                 data = options.xmlData;
  214.             }else if(options.jsonData){
  215.                 if (!hs || !hs['Content-Type']){
  216.                     CN.initHeader('Content-Type', 'application/json', false);
  217.                 }
  218.                 method = (method ? method : (options.method ? options.method : 'POST'));
  219.                 data = typeof options.jsonData == 'object' ? Ext.encode(options.jsonData) : options.jsonData;
  220.             }
  221.         }
  222.         return CN.asyncRequest(method, uri, cb, data);
  223.     },
  224.     formRequest : function(form, uri, cb, data, isUpload, sslUri){
  225.         CN.setForm(form, isUpload, sslUri);
  226.         return CN.asyncRequest(Ext.getDom(form).method ||'POST', uri, cb, data);
  227.     },
  228.     isCallInProgress : function(trans){
  229.         return CN.isCallInProgress(trans);
  230.     },
  231.     abort : function(trans){
  232.         return CN.abort(trans);
  233.     },
  234.     serializeForm : function(form){
  235.         var d = CN.setForm(form.dom || form);
  236.         CN.resetFormState();
  237.         return d;
  238.     }
  239. };
  240. Ext.lib.Region = YAHOO.util.Region;
  241. Ext.lib.Point = YAHOO.util.Point;
  242. Ext.lib.Anim = {
  243.     scroll : function(el, args, duration, easing, cb, scope){
  244.         this.run(el, args, duration, easing, cb, scope, YAHOO.util.Scroll);
  245.     },
  246.     motion : function(el, args, duration, easing, cb, scope){
  247.         this.run(el, args, duration, easing, cb, scope, YAHOO.util.Motion);
  248.     },
  249.     color : function(el, args, duration, easing, cb, scope){
  250.         this.run(el, args, duration, easing, cb, scope, YAHOO.util.ColorAnim);
  251.     },
  252.     run : function(el, args, duration, easing, cb, scope, type){
  253.         type = type || YAHOO.util.Anim;
  254.         if(typeof easing == "string"){
  255.             easing = YAHOO.util.Easing[easing];
  256.         }
  257.         var anim = new type(el, args, duration, easing);
  258.         anim.animateX(function(){
  259.             Ext.callback(cb, scope);
  260.         });
  261.         return anim;
  262.     }
  263. };
  264. // all lib flyweight calls use their own flyweight to prevent collisions with developer flyweights
  265. function fly(el){
  266.     if(!libFlyweight){
  267.         libFlyweight = new Ext.Element.Flyweight();
  268.     }
  269.     libFlyweight.dom = el;
  270.     return libFlyweight;
  271. }
  272. // prevent IE leaks
  273. if(Ext.isIE) {
  274.     function fnCleanUp() {
  275.         var p = Function.prototype;
  276.         delete p.createSequence;
  277.         delete p.defer;
  278.         delete p.createDelegate;
  279.         delete p.createCallback;
  280.         delete p.createInterceptor;
  281.         window.detachEvent("onunload", fnCleanUp);
  282.     }
  283.     window.attachEvent("onunload", fnCleanUp);
  284. }
  285. // various overrides
  286. // add ability for callbacks with animations
  287. if(YAHOO.util.Anim){
  288.     YAHOO.util.Anim.prototype.animateX = function(callback, scope){
  289.         var f = function(){
  290.             this.onComplete.unsubscribe(f);
  291.             if(typeof callback == "function"){
  292.                 callback.call(scope || this, this);
  293.             }
  294.         };
  295.         this.onComplete.subscribe(f, this, true);
  296.         this.animate();
  297.     };
  298. }
  299. if(YAHOO.util.DragDrop && Ext.dd.DragDrop){
  300.     YAHOO.util.DragDrop.defaultPadding = Ext.dd.DragDrop.defaultPadding;
  301.     YAHOO.util.DragDrop.constrainTo = Ext.dd.DragDrop.constrainTo;
  302. }
  303. YAHOO.util.Dom.getXY = function(el) {
  304.     var f = function(el) {
  305.         return Ext.lib.Dom.getXY(el);
  306.     };
  307.     return YAHOO.util.Dom.batch(el, f, YAHOO.util.Dom, true);
  308. };
  309. // workaround for Safari anim duration speed problems
  310. if(YAHOO.util.AnimMgr){
  311.     YAHOO.util.AnimMgr.fps = 1000;
  312. }
  313. YAHOO.util.Region.prototype.adjust = function(t, l, b, r){
  314.     this.top += t;
  315.     this.left += l;
  316.     this.right += r;
  317.     this.bottom += b;
  318.     return this;
  319. };
  320.     
  321. YAHOO.util.Region.prototype.constrainTo = function(r) {
  322.     this.top = this.top.constrain(r.top, r.bottom);
  323.     this.bottom = this.bottom.constrain(r.top, r.bottom);
  324.     this.left = this.left.constrain(r.left, r.right);
  325.     this.right = this.right.constrain(r.left, r.right);
  326.     return this;
  327. };
  328. })();