亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? prototype.js

?? 在線網絡測速在線網絡測速在線網絡測速在線網絡測速
?? JS
?? 第 1 頁 / 共 4 頁
字號:

/*--------------------------------------------------------------------------*/

var $F = Form.Element.getValue;

/*--------------------------------------------------------------------------*/

Abstract.TimedObserver = function() {}
Abstract.TimedObserver.prototype = {
  initialize: function(element, frequency, callback) {
    this.frequency = frequency;
    this.element   = $(element);
    this.callback  = callback;

    this.lastValue = this.getValue();
    this.registerCallback();
  },

  registerCallback: function() {
    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
  },

  onTimerEvent: function() {
    var value = this.getValue();
    if (this.lastValue != value) {
      this.callback(this.element, value);
      this.lastValue = value;
    }
  }
}

Form.Element.Observer = Class.create();
Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
  getValue: function() {
    return Form.Element.getValue(this.element);
  }
});

Form.Observer = Class.create();
Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
  getValue: function() {
    return Form.serialize(this.element);
  }
});

/*--------------------------------------------------------------------------*/

Abstract.EventObserver = function() {}
Abstract.EventObserver.prototype = {
  initialize: function(element, callback) {
    this.element  = $(element);
    this.callback = callback;

    this.lastValue = this.getValue();
    if (this.element.tagName.toLowerCase() == 'form')
      this.registerFormCallbacks();
    else
      this.registerCallback(this.element);
  },

  onElementEvent: function() {
    var value = this.getValue();
    if (this.lastValue != value) {
      this.callback(this.element, value);
      this.lastValue = value;
    }
  },

  registerFormCallbacks: function() {
    var elements = Form.getElements(this.element);
    for (var i = 0; i < elements.length; i++)
      this.registerCallback(elements[i]);
  },

  registerCallback: function(element) {
    if (element.type) {
      switch (element.type.toLowerCase()) {
        case 'checkbox':
        case 'radio':
          Event.observe(element, 'click', this.onElementEvent.bind(this));
          break;
        case 'password':
        case 'text':
        case 'textarea':
        case 'select-one':
        case 'select-multiple':
          Event.observe(element, 'change', this.onElementEvent.bind(this));
          break;
      }
    }
  }
}

Form.Element.EventObserver = Class.create();
Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
  getValue: function() {
    return Form.Element.getValue(this.element);
  }
});

Form.EventObserver = Class.create();
Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
  getValue: function() {
    return Form.serialize(this.element);
  }
});
if (!window.Event) {
  var Event = new Object();
}

Object.extend(Event, {
  KEY_BACKSPACE: 8,
  KEY_TAB:       9,
  KEY_RETURN:   13,
  KEY_ESC:      27,
  KEY_LEFT:     37,
  KEY_UP:       38,
  KEY_RIGHT:    39,
  KEY_DOWN:     40,
  KEY_DELETE:   46,

  element: function(event) {
    return event.target || event.srcElement;
  },

  isLeftClick: function(event) {
    return (((event.which) && (event.which == 1)) ||
            ((event.button) && (event.button == 1)));
  },

  pointerX: function(event) {
    return event.pageX || (event.clientX +
      (document.documentElement.scrollLeft || document.body.scrollLeft));
  },

  pointerY: function(event) {
    return event.pageY || (event.clientY +
      (document.documentElement.scrollTop || document.body.scrollTop));
  },

  stop: function(event) {
    if (event.preventDefault) {
      event.preventDefault();
      event.stopPropagation();
    } else {
      event.returnValue = false;
      event.cancelBubble = true;
    }
  },

  // find the first node with the given tagName, starting from the
  // node the event was triggered on; traverses the DOM upwards
  findElement: function(event, tagName) {
    var element = Event.element(event);
    while (element.parentNode && (!element.tagName ||
        (element.tagName.toUpperCase() != tagName.toUpperCase())))
      element = element.parentNode;
    return element;
  },

  observers: false,

  _observeAndCache: function(element, name, observer, useCapture) {
    if (!this.observers) this.observers = [];
    if (element.addEventListener) {
      this.observers.push([element, name, observer, useCapture]);
      element.addEventListener(name, observer, useCapture);
    } else if (element.attachEvent) {
      this.observers.push([element, name, observer, useCapture]);
      element.attachEvent('on' + name, observer);
    }
  },

  unloadCache: function() {
    if (!Event.observers) return;
    for (var i = 0; i < Event.observers.length; i++) {
      Event.stopObserving.apply(this, Event.observers[i]);
      Event.observers[i][0] = null;
    }
    Event.observers = false;
  },

  observe: function(element, name, observer, useCapture) {
    var element = $(element);
    useCapture = useCapture || false;

    if (name == 'keypress' &&
        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
        || element.attachEvent))
      name = 'keydown';

    this._observeAndCache(element, name, observer, useCapture);
  },

  stopObserving: function(element, name, observer, useCapture) {
    var element = $(element);
    useCapture = useCapture || false;

    if (name == 'keypress' &&
        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
        || element.detachEvent))
      name = 'keydown';

    if (element.removeEventListener) {
      element.removeEventListener(name, observer, useCapture);
    } else if (element.detachEvent) {
      element.detachEvent('on' + name, observer);
    }
  }
});

/* prevent memory leaks in IE */
Event.observe(window, 'unload', Event.unloadCache, false);
var Position = {
  // set to true if needed, warning: firefox performance problems
  // NOT neeeded for page scrolling, only if draggable contained in
  // scrollable elements
  includeScrollOffsets: false,

  // must be called before calling withinIncludingScrolloffset, every time the
  // page is scrolled
  prepare: function() {
    this.deltaX =  window.pageXOffset
                || document.documentElement.scrollLeft
                || document.body.scrollLeft
                || 0;
    this.deltaY =  window.pageYOffset
                || document.documentElement.scrollTop
                || document.body.scrollTop
                || 0;
  },

  realOffset: function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.scrollTop  || 0;
      valueL += element.scrollLeft || 0;
      element = element.parentNode;
    } while (element);
    return [valueL, valueT];
  },

  cumulativeOffset: function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;
    } while (element);
    return [valueL, valueT];
  },

  positionedOffset: function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;
      if (element) {
        p = Element.getStyle(element, 'position');
        if (p == 'relative' || p == 'absolute') break;
      }
    } while (element);
    return [valueL, valueT];
  },

  offsetParent: function(element) {
    if (element.offsetParent) return element.offsetParent;
    if (element == document.body) return element;

    while ((element = element.parentNode) && element != document.body)
      if (Element.getStyle(element, 'position') != 'static')
        return element;

    return document.body;
  },

  // caches x/y coordinate pair to use with overlap
  within: function(element, x, y) {
    if (this.includeScrollOffsets)
      return this.withinIncludingScrolloffsets(element, x, y);
    this.xcomp = x;
    this.ycomp = y;
    this.offset = this.cumulativeOffset(element);

    return (y >= this.offset[1] &&
            y <  this.offset[1] + element.offsetHeight &&
            x >= this.offset[0] &&
            x <  this.offset[0] + element.offsetWidth);
  },

  withinIncludingScrolloffsets: function(element, x, y) {
    var offsetcache = this.realOffset(element);

    this.xcomp = x + offsetcache[0] - this.deltaX;
    this.ycomp = y + offsetcache[1] - this.deltaY;
    this.offset = this.cumulativeOffset(element);

    return (this.ycomp >= this.offset[1] &&
            this.ycomp <  this.offset[1] + element.offsetHeight &&
            this.xcomp >= this.offset[0] &&
            this.xcomp <  this.offset[0] + element.offsetWidth);
  },

  // within must be called directly before
  overlap: function(mode, element) {
    if (!mode) return 0;
    if (mode == 'vertical')
      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
        element.offsetHeight;
    if (mode == 'horizontal')
      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
        element.offsetWidth;
  },

  clone: function(source, target) {
    source = $(source);
    target = $(target);
    target.style.position = 'absolute';
    var offsets = this.cumulativeOffset(source);
    target.style.top    = offsets[1] + 'px';
    target.style.left   = offsets[0] + 'px';
    target.style.width  = source.offsetWidth + 'px';
    target.style.height = source.offsetHeight + 'px';
  },

  page: function(forElement) {
    var valueT = 0, valueL = 0;

    var element = forElement;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;

      // Safari fix
      if (element.offsetParent==document.body)
        if (Element.getStyle(element,'position')=='absolute') break;

    } while (element = element.offsetParent);

    element = forElement;
    do {
      valueT -= element.scrollTop  || 0;
      valueL -= element.scrollLeft || 0;
    } while (element = element.parentNode);

    return [valueL, valueT];
  },

  clone: function(source, target) {
    var options = Object.extend({
      setLeft:    true,
      setTop:     true,
      setWidth:   true,
      setHeight:  true,
      offsetTop:  0,
      offsetLeft: 0
    }, arguments[2] || {})

    // find page position of source
    source = $(source);
    var p = Position.page(source);

    // find coordinate system to use
    target = $(target);
    var delta = [0, 0];
    var parent = null;
    // delta [0,0] will do fine with position: fixed elements,
    // position:absolute needs offsetParent deltas
    if (Element.getStyle(target,'position') == 'absolute') {
      parent = Position.offsetParent(target);
      delta = Position.page(parent);
    }

    // correct by body offsets (fixes Safari)
    if (parent == document.body) {
      delta[0] -= document.body.offsetLeft;
      delta[1] -= document.body.offsetTop;
    }

    // set position
    if(options.setLeft)   target.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
    if(options.setTop)    target.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
    if(options.setWidth)  target.style.width = source.offsetWidth + 'px';
    if(options.setHeight) target.style.height = source.offsetHeight + 'px';
  },

  absolutize: function(element) {
    element = $(element);
    if (element.style.position == 'absolute') return;
    Position.prepare();

    var offsets = Position.positionedOffset(element);
    var top     = offsets[1];
    var left    = offsets[0];
    var width   = element.clientWidth;
    var height  = element.clientHeight;

    element._originalLeft   = left - parseFloat(element.style.left  || 0);
    element._originalTop    = top  - parseFloat(element.style.top || 0);
    element._originalWidth  = element.style.width;
    element._originalHeight = element.style.height;

    element.style.position = 'absolute';
    element.style.top    = top + 'px';;
    element.style.left   = left + 'px';;
    element.style.width  = width + 'px';;
    element.style.height = height + 'px';;
  },

  relativize: function(element) {
    element = $(element);
    if (element.style.position == 'relative') return;
    Position.prepare();

    element.style.position = 'relative';
    var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
    var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);

    element.style.top    = top + 'px';
    element.style.left   = left + 'px';
    element.style.height = element._originalHeight;
    element.style.width  = element._originalWidth;
  }
}

// Safari returns margins on body which is incorrect if the child is absolutely
// positioned.  For performance reasons, redefine Position.cumulativeOffset for
// KHTML/WebKit only.
if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
  Position.cumulativeOffset = function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      if (element.offsetParent == document.body)
        if (Element.getStyle(element, 'position') == 'absolute') break;

      element = element.offsetParent;
    } while (element);

    return [valueL, valueT];
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久这里只精品最新地址| 日日夜夜免费精品| 日韩电影在线一区二区三区| 国产在线精品一区二区三区不卡| 欧美中文字幕一区二区三区| 国产亚洲一区二区三区四区| 天天操天天干天天综合网| 成人v精品蜜桃久久一区| 欧美一级艳片视频免费观看| 亚洲精品国产视频| 波多野结衣91| 中文字幕精品三区| 毛片av一区二区| 在线不卡a资源高清| 亚洲欧美日韩在线不卡| 国产不卡视频一区二区三区| 精品免费国产二区三区| 天天影视色香欲综合网老头| 欧美亚洲一区二区在线观看| 亚洲女人的天堂| 94色蜜桃网一区二区三区| 国产三级一区二区三区| 国产在线播精品第三| 欧美成人乱码一区二区三区| 麻豆国产精品视频| 日韩一区二区电影| 久久精品国产**网站演员| 在线不卡免费av| 婷婷中文字幕综合| 91精品国产免费| 男女激情视频一区| 精品噜噜噜噜久久久久久久久试看| 日韩精品色哟哟| 日韩欧美一级二级| 国产一区高清在线| 2020国产成人综合网| 国产精品中文字幕一区二区三区| 久久无码av三级| 成人激情文学综合网| 中文字幕亚洲视频| 欧美中文字幕亚洲一区二区va在线 | 成人h版在线观看| 国产午夜精品福利| 成人综合在线视频| 国产精品久久久久久福利一牛影视| 风流少妇一区二区| 一区二区高清免费观看影视大全 | www.一区二区| 国产精品乱码人人做人人爱 | 91小视频在线免费看| 亚洲综合精品久久| 3atv在线一区二区三区| 久久99精品国产.久久久久久| 久久综合九色综合97婷婷女人 | 欧美精品第1页| 麻豆一区二区在线| 国产精品久久久久影院亚瑟| 色94色欧美sute亚洲13| 日日夜夜一区二区| 国产日韩精品一区二区三区 | 久久久久久久综合色一本| 成人一区二区在线观看| 一区二区在线看| 欧美mv和日韩mv国产网站| 成人免费视频网站在线观看| 亚洲va国产天堂va久久en| 久久男人中文字幕资源站| 97久久精品人人澡人人爽| 日韩电影在线免费观看| 亚洲国产激情av| 91.麻豆视频| av网站一区二区三区| 美女视频黄 久久| 亚洲视频在线一区| 精品处破学生在线二十三| 91视视频在线直接观看在线看网页在线看| 亚洲福利一区二区| 亚洲国产精华液网站w| 91精品国产欧美日韩| 91啪九色porn原创视频在线观看| 久久精品99国产精品日本| 亚洲女女做受ⅹxx高潮| 久久日一线二线三线suv| 欧美精品v国产精品v日韩精品| 成人一区二区三区视频| 开心九九激情九九欧美日韩精美视频电影 | 国产乱一区二区| 亚洲6080在线| 亚洲免费观看高清在线观看| 久久久久久久性| 91精品一区二区三区久久久久久| 91天堂素人约啪| 成人深夜在线观看| 狠狠久久亚洲欧美| 麻豆视频一区二区| 亚洲成a人v欧美综合天堂下载| 亚洲欧美日韩中文播放 | 国产喂奶挤奶一区二区三区| 欧美麻豆精品久久久久久| 99久久精品久久久久久清纯| 国产精品综合一区二区| 精品一区二区三区不卡 | 99精品视频在线观看| 老司机精品视频导航| 日日欢夜夜爽一区| 性欧美大战久久久久久久久| 亚洲精品国产品国语在线app| 国产精品大尺度| 国产精品成人网| 国产精品久久久99| 国产精品久久久久三级| 日本一区二区成人在线| 国产欧美一区二区精品婷婷 | 成人av电影在线| 成人免费三级在线| 成人污视频在线观看| 粉嫩欧美一区二区三区高清影视| 国产福利精品一区二区| 国产成人免费在线观看不卡| 国产精品一线二线三线精华| 国产精一区二区三区| 成人午夜精品在线| 99视频在线精品| 色婷婷久久综合| 欧美在线短视频| 3d成人动漫网站| 精品国产一区二区三区四区四| 精品福利一区二区三区免费视频| 日韩欧美激情一区| 久久久www成人免费无遮挡大片| 国产亚洲精品精华液| 国产精品国产三级国产aⅴ无密码| 亚洲日本韩国一区| 亚洲高清久久久| 精品一区二区三区在线视频| 成人影视亚洲图片在线| 色狠狠色噜噜噜综合网| 91精品在线免费观看| 国产日韩欧美麻豆| 亚洲一区二区视频在线| 日本色综合中文字幕| 国产a级毛片一区| 欧美色电影在线| 日韩一级完整毛片| 国产精品视频一二三| 亚洲一区二区美女| 国产一区二区视频在线播放| 一本到三区不卡视频| 欧美一区永久视频免费观看| 国产欧美一区二区三区沐欲| 亚洲成av人影院在线观看网| 国产麻豆精品久久一二三| 色噜噜久久综合| 久久久亚洲高清| 亚洲一二三区视频在线观看| 国产精品一二三四区| 欧美日韩午夜在线视频| 欧美激情综合五月色丁香小说| 亚洲18色成人| 99re66热这里只有精品3直播| 337p亚洲精品色噜噜狠狠| 国产精品国产三级国产aⅴ入口| 日本成人在线网站| 91视频免费观看| 久久精品一区四区| 午夜欧美电影在线观看| 成人国产免费视频| 精品日韩av一区二区| 亚洲成a人v欧美综合天堂下载| 成人爽a毛片一区二区免费| 欧美一级日韩不卡播放免费| 亚洲天堂免费看| 岛国精品在线观看| 日韩女优av电影| 性久久久久久久| 色综合久久中文字幕综合网| 国产夜色精品一区二区av| 日本美女视频一区二区| 在线视频欧美精品| 国产精品热久久久久夜色精品三区| 日产国产欧美视频一区精品 | 国产女人aaa级久久久级| 奇米影视在线99精品| 在线观看一区二区精品视频| 国产精品家庭影院| 成人激情小说网站| 国产日韩在线不卡| 国产精品99久久久久久久女警| 日韩女优视频免费观看| 日本午夜精品视频在线观看| 欧美伦理电影网| 亚洲一区影音先锋| 在线视频综合导航| 亚洲精品日韩专区silk | 本田岬高潮一区二区三区| 欧美经典一区二区三区| 国产露脸91国语对白| 精品国产免费一区二区三区四区| 毛片av一区二区| 欧美精品一区二|