⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 window.js

📁 能够实现宾馆管理的基本功能。 例如删除
💻 JS
📖 第 1 页 / 共 4 页
字号:
// Copyright (c) 2006 Sébastien Gruhier (http://xilinus.com, http://itseb.com)// // Permission is hereby granted, free of charge, to any person obtaining// a copy of this software and associated documentation files (the// "Software"), to deal in the Software without restriction, including// without limitation the rights to use, copy, modify, merge, publish,// distribute, sublicense, and/or sell copies of the Software, and to// permit persons to whom the Software is furnished to do so, subject to// the following conditions:// // The above copyright notice and this permission notice shall be// included in all copies or substantial portions of the Software.//// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.//// VERSION 1.1var Window = Class.create();Window.keepMultiModalWindow = false;Window.prototype = {  // Constructor  // Available parameters : className, title, minWidth, minHeight, maxWidth, maxHeight, width, height, top, left, bottom, right, resizable, zIndex, opacity, recenterAuto, wiredDrag  //                        hideEffect, showEffect, showEffectOptions, hideEffectOptions, effectOptions, url, draggable, closable, minimizable, maximizable, parent, onload  //                        add all callbacks (if you do not use an observer)  //                        onDestroy onStartResize onStartMove onResize onMove onEndResize onEndMove onFocus onBeforeShow onShow onHide onMinimize onMaximize onClose    initialize: function() {    var id;    var optionIndex = 0;    // For backward compatibility like win= new Window("id", {...}) instead of win = new Window({id: "id", ...})    if (arguments.length > 0) {      if (typeof arguments[0] == "string" ) {        id = arguments[0];        optionIndex = 1;      }      else        id = arguments[0] ? arguments[0].id : null;    }        // Generate unique ID if not specified    if (!id)      id = "window_" + new Date().getTime();          if ($(id))      alert("Window " + id + " is already registered in the DOM! Make sure you use setDestroyOnClose() or destroyOnClose: true in the constructor");    this.hasEffectLib = String.prototype.parseColor != null;    this.options = Object.extend({      className:         "dialog",      minWidth:          100,       minHeight:         20,      resizable:         true,      closable:          true,      minimizable:       true,      maximizable:       true,      draggable:         true,      userData:          null,      showEffect:        (this.hasEffectLib ? Effect.Appear : Element.show),      hideEffect:        (this.hasEffectLib ? Effect.Fade : Element.hide),      showEffectOptions: {},      hideEffectOptions: {},      effectOptions:     null,      parent:            document.body,      title:             "&nbsp;",      url:               null,      onload:            Prototype.emptyFunction,      width:             200,      height:            300,      opacity:           1,      recenterAuto:      true,      wiredDrag:         false,      closeCallback:     null,      destroyOnClose:    false    }, arguments[optionIndex] || {});        if (typeof this.options.top == "undefined" &&  typeof this.options.bottom ==  "undefined")       this.options.top = Math.random()*500;    if (typeof this.options.left == "undefined" &&  typeof this.options.right ==  "undefined")       this.options.left = Math.random()*500;    if (this.options.effectOptions) {      Object.extend(this.options.hideEffectOptions, this.options.effectOptions);      Object.extend(this.options.showEffectOptions, this.options.effectOptions);      if (this.options.showEffect == Element.Appear)        this.options.showEffectOptions.to = this.options.opacity;    }    if (this.hasEffectLib) {      if (this.options.showEffect == Effect.Appear)        this.options.showEffectOptions.to = this.options.opacity;          if (this.options.hideEffect == Effect.Fade)        this.options.hideEffectOptions.from = this.options.opacity;    }    if (this.options.hideEffect == Element.hide)      this.options.hideEffect = function(){ Element.hide(this.element); if (this.options.destroyOnClose) this.destroy(); }.bind(this)        if (this.options.parent != document.body)        this.options.parent = $(this.options.parent);          this.element = this._createWindow(id);        // Bind event listener    this.eventMouseDown = this._initDrag.bindAsEventListener(this);    this.eventMouseUp   = this._endDrag.bindAsEventListener(this);    this.eventMouseMove = this._updateDrag.bindAsEventListener(this);    this.eventOnLoad    = this._getWindowBorderSize.bindAsEventListener(this);    this.eventMouseDownContent = this.toFront.bindAsEventListener(this);    this.eventResize = this._recenter.bindAsEventListener(this);     this.topbar = $(this.element.id + "_top");    this.bottombar = $(this.element.id + "_bottom");    this.content = $(this.element.id + "_content");        Event.observe(this.topbar, "mousedown", this.eventMouseDown);    Event.observe(this.bottombar, "mousedown", this.eventMouseDown);    Event.observe(this.content, "mousedown", this.eventMouseDownContent);    Event.observe(window, "load", this.eventOnLoad);    Event.observe(window, "resize", this.eventResize);    Event.observe(window, "scroll", this.eventResize);        if (this.options.draggable)  {      var that = this;      [this.topbar, this.topbar.up().previous(), this.topbar.up().next()].each(function(element) {        element.observe("mousedown", that.eventMouseDown);        element.addClassName("top_draggable");      });      [this.bottombar.up(), this.bottombar.up().previous(), this.bottombar.up().next()].each(function(element) {        element.observe("mousedown", that.eventMouseDown);        element.addClassName("bottom_draggable");      });          }            if (this.options.resizable) {      this.sizer = $(this.element.id + "_sizer");      Event.observe(this.sizer, "mousedown", this.eventMouseDown);    }          this.useLeft = null;    this.useTop = null;    if (typeof this.options.left != "undefined") {      this.element.setStyle({left: parseFloat(this.options.left) + 'px'});      this.useLeft = true;    }    else {      this.element.setStyle({right: parseFloat(this.options.right) + 'px'});      this.useLeft = false;    }        if (typeof this.options.top != "undefined") {      this.element.setStyle({top: parseFloat(this.options.top) + 'px'});      this.useTop = true;    }    else {      this.element.setStyle({bottom: parseFloat(this.options.bottom) + 'px'});            this.useTop = false;    }          this.storedLocation = null;        this.setOpacity(this.options.opacity);    if (this.options.zIndex)      this.setZIndex(this.options.zIndex)    if (this.options.destroyOnClose)      this.setDestroyOnClose(true);    this._getWindowBorderSize();    this.width = this.options.width;    this.height = this.options.height;    this.visible = false;        this.constraint = false;    this.constraintPad = {top: 0, left:0, bottom:0, right:0};        if (this.width && this.height)      this.setSize(this.options.width, this.options.height);    this.setTitle(this.options.title)    Windows.register(this);        },    // Destructor  destroy: function() {    this._notify("onDestroy");    Event.stopObserving(this.topbar, "mousedown", this.eventMouseDown);    Event.stopObserving(this.bottombar, "mousedown", this.eventMouseDown);    Event.stopObserving(this.content, "mousedown", this.eventMouseDownContent);        Event.stopObserving(window, "load", this.eventOnLoad);    Event.stopObserving(window, "resize", this.eventResize);    Event.stopObserving(window, "scroll", this.eventResize);        Event.stopObserving(this.content, "load", this.options.onload);    if (this._oldParent) {      var content = this.getContent();      var originalContent = null;      for(var i = 0; i < content.childNodes.length; i++) {        originalContent = content.childNodes[i];        if (originalContent.nodeType == 1)           break;        originalContent = null;      }      if (originalContent)        this._oldParent.appendChild(originalContent);      this._oldParent = null;    }    if (this.sizer)        Event.stopObserving(this.sizer, "mousedown", this.eventMouseDown);    if (this.options.url)       this.content.src = null     if(this.iefix)       Element.remove(this.iefix);    Element.remove(this.element);    Windows.unregister(this);        },      // Sets close callback, if it sets, it should return true to be able to close the window.  setCloseCallback: function(callback) {    this.options.closeCallback = callback;  },    // Gets window content  getContent: function () {    return this.content;  },    // Sets the content with an element id  setContent: function(id, autoresize, autoposition) {    var element = $(id);    if (null == element) throw "Unable to find element '" + id + "' in DOM";    this._oldParent = element.parentNode;    var d = null;    var p = null;    if (autoresize)       d = Element.getDimensions(element);    if (autoposition)       p = Position.cumulativeOffset(element);    var content = this.getContent();    // Clear HTML (and even iframe)    this.setHTMLContent("");    content = this.getContent();        content.appendChild(element);    element.show();    if (autoresize)       this.setSize(d.width, d.height);    if (autoposition)       this.setLocation(p[1] - this.heightN, p[0] - this.widthW);      },    setHTMLContent: function(html) {    // It was an url (iframe), recreate a div content instead of iframe content    if (this.options.url) {      this.content.src = null;      this.options.url = null;        	  var content ="<div id=\"" + this.getId() + "_content\" class=\"" + this.options.className + "_content\"> </div>";      $(this.getId() +"_table_content").innerHTML = content;            this.content = $(this.element.id + "_content");    }          this.getContent().innerHTML = html;  },    setAjaxContent: function(url, options, showCentered, showModal) {    this.showFunction = showCentered ? "showCenter" : "show";    this.showModal = showModal || false;      options = options || {};    // Clear HTML (and even iframe)    this.setHTMLContent("");     this.onComplete = options.onComplete;    if (! this._onCompleteHandler)      this._onCompleteHandler = this._setAjaxContent.bind(this);    options.onComplete = this._onCompleteHandler;    new Ajax.Request(url, options);        options.onComplete = this.onComplete;  },    _setAjaxContent: function(originalRequest) {    Element.update(this.getContent(), originalRequest.responseText);    if (this.onComplete)      this.onComplete(originalRequest);    this.onComplete = null;    this[this.showFunction](this.showModal)  },    setURL: function(url) {    // Not an url content, change div to iframe    if (!this.options.url) {  	  this.options.url = url;      var content= "<iframe frameborder=\"0\" name=\"" + this.getId() + "_content\"  id=\"" + this.getId() + "_content\" src=\"" + url + "\"> </iframe>";      $(this.getId() +"_table_content").innerHTML = content;            this.content = $(this.element.id + "_content");    } else {  	  this.options.url = url;	    $(this.element.getAttribute('id') + '_content').src = url;    }  },  getURL: function() {  	return this.options.url ? this.options.url : null;  },  refresh: function() {    if (this.options.url)	    $(this.element.getAttribute('id') + '_content').src = this.options.url;  },    // Stores position/size in a cookie, by default named with window id  setCookie: function(name, expires, path, domain, secure) {    name = name || this.element.id;    this.cookie = [name, expires, path, domain, secure];        // Get cookie    var value = WindowUtilities.getCookie(name)    // If exists    if (value) {      var values = value.split(',');      var x = values[0].split(':');      var y = values[1].split(':');      var w = parseFloat(values[2]), h = parseFloat(values[3]);      var mini = values[4];      var maxi = values[5];      this.setSize(w, h);      if (mini == "true")        this.doMinimize = true; // Minimize will be done at onload window event      else if (maxi == "true")        this.doMaximize = true; // Maximize will be done at onload window event      this.useLeft = x[0] == "l";      this.useTop = y[0] == "t";      this.element.setStyle(this.useLeft ? {left: x[1]} : {right: x[1]});      this.element.setStyle(this.useTop ? {top: y[1]} : {bottom: y[1]});    }  },    // Gets window ID  getId: function() {    return this.element.id;  },    // Detroys itself when closing   setDestroyOnClose: function() {    this.options.destroyOnClose = true;  },    setConstraint: function(bool, padding) {    this.constraint = bool;    this.constraintPad = Object.extend(this.constraintPad, padding || {});    // Reset location to apply constraint    if (this.useTop && this.useLeft)      this.setLocation(parseFloat(this.element.style.top), parseFloat(this.element.style.left));  },    // initDrag event  _initDrag: function(event) {    // No resize on minimized window    if (Event.element(event) == this.sizer && this.isMinimized())      return;    // No move on maximzed window    if (Event.element(event) != this.sizer && this.isMaximized())      return;          if (isIE && this.heightN == 0)      this._getWindowBorderSize();        // Get pointer X,Y    this.pointer = [Event.pointerX(event), Event.pointerY(event)];        if (this.options.wiredDrag)       this.currentDrag = this._createWiredElement();    else      this.currentDrag = this.element;          // Resize    if (Event.element(event) == this.sizer) {      this.doResize = true;      this.widthOrg = this.width;      this.heightOrg = this.height;      this.bottomOrg = parseFloat(this.element.getStyle('bottom'));      this.rightOrg = parseFloat(this.element.getStyle('right'));      this._notify("onStartResize");    }    else {      this.doResize = false;      // Check if click on close button,       var closeButton = $(this.getId() + '_close');      if (closeButton && Position.within(closeButton, this.pointer[0], this.pointer[1])) {        this.currentDrag = null;        return;      }      this.toFront();      if (! this.options.draggable)         return;      this._notify("onStartMove");    }    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -