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

📄 ajaxtags.js

📁 这是linux下ssl vpn的实现程序
💻 JS
📖 第 1 页 / 共 3 页
字号:
      setCookie("AjaxJspTag.Portlet."+this.options.source,

        AJAX_PORTLET_CLOSE,

        this.options.expireDate);

    }

  },



  togglePortlet: function(e) {

    Element.toggle(this.options.target);

    if (this.options.isMaximized) {

      $(this.options.toggle).src = this.options.imageMaximize;

      this.stopAutoRefresh();

    } else {

      $(this.options.toggle).src = this.options.imageMinimize;

      this.startAutoRefresh();

    }

    this.options.isMaximized = !this.options.isMaximized;

    // Save state in cookie

    if (this.preserveState) {

      setCookie("AjaxJspTag.Portlet."+this.options.source,

        (this.options.isMaximized == true ? AJAX_PORTLET_MAX : AJAX_PORTLET_MIN),

        this.options.expireDate);

    }

  }



});





/**

 * AUTOCOMPLETE TAG

 */

Ajax.XmlToHtmlAutocompleter = Class.create();

Object.extend(Object.extend(Ajax.XmlToHtmlAutocompleter.prototype, Autocompleter.Base.prototype), {

  initialize: function(element, update, url, options) {

	  this.baseInitialize(element, update, options);

    this.options.asynchronous  = true;

    this.options.onComplete    = this.onComplete.bind(this);

    this.options.defaultParams = this.options.parameters || null;

    this.url                   = url;

  },



  getUpdatedChoices: function() {

    entry = encodeURIComponent(this.options.paramName) + '=' + 

      encodeURIComponent(this.getToken());



    this.options.parameters = this.options.callback ?

      this.options.callback(this.element, entry) : entry;



    // parse parameters and do replacements

    var params = buildParameterString(this.options.defaultParams);

    if (!isEmpty(params) || (isString(params) && params.length > 0)) {

      this.options.parameters += '&' + params;

    }



    new Ajax.Request(this.url, this.options);

  },



  onComplete: function(request) {

    var parser = new ResponseXmlToHtmlListParser();

    parser.load(request);

    this.updateChoices(parser.content);

  }



});





AjaxJspTag.Autocomplete = Class.create();

AjaxJspTag.Autocomplete.prototype = Object.extend(new AjaxJspTag.Base(), {



  initialize: function(url, options) {

    this.url = url;

    this.setOptions(options);

    $(this.options.source).setAttribute("autocomplete", "off");



    // create DIV

    new Insertion.After(this.options.source, '<div id="' + this.options.divElement + '" class="' + this.options.className + '"></div>');



    this.execute();

  },



  setOptions: function(options) {

    this.options = Object.extend({

      divElement: "ajaxAuto_" + options.source,

      indicator: options.indicator || '',

      parameters: options.parameters || '',

      parser: options.parser ? options.parser : new ResponseHtmlParser(),

      handler: options.handler ? options.handler : this.handler

    }, options || {});

  },



  execute: function(e) {

    if (this.options.preFunction != null) this.options.preFunction();



    var obj = this; // required because 'this' conflict with Ajax.Request

    var aj = new Ajax.XmlToHtmlAutocompleter(

                     this.options.source,

                     this.options.divElement,

                     this.url, {minChars: obj.options.minimumCharacters,

                                tokens: obj.options.appendSeparator,

                                indicator: obj.options.indicator,

                                parameters: obj.options.parameters,

                                evalScripts: true,

                                afterUpdateElement: function(inputField, selectedItem) {

                                  obj.options.handler(null, {

                                    selectedItem: selectedItem,

                                    tokens: obj.options.appendSeparator,

                                    target: obj.options.target,

                                    inputField: inputField,

                                    postFunction: obj.options.postFunction

                                    }

                                  );

                                }

                               }

             );

  },



  handler: function(request, options) {

    if (options.target) {

      if (options.tokens) {

        if ($(options.target).value.length > 0) {

          $(options.target).value += options.tokens;

        }

        $(options.target).value += options.selectedItem.id;

      } else {

        $(options.target).value = options.selectedItem.id;

      }

    }



    if (options.postFunction != null) {

      //Disable onupdate event handler of input field

      //because, postFunction can change the content of

      //input field and get into eternal loop.

      var onupdateHandler = $(options.inputField).onupdate;

      $(options.inputField).onupdate = '';

      options.postFunction(request);

      //Enable onupdate event handler of input field

      $(options.inputField).onupdate = onupdateHandler;

    }

  }



});





/**

 * TOGGLE TAG

 */

AjaxJspTag.Toggle = Class.create();

AjaxJspTag.Toggle.prototype = Object.extend(new AjaxJspTag.Base(), {



  initialize: function(url, options) {

    this.url = url;

    this.setOptions(options);



    // create message DIV

    if (this.options.messageClass) {

      this.messageContainer = new Insertion.Top($(this.options.source),

        '<div id="'+ this.options.source +'_message" class="' + this.options.messageClass +'"></div>');

    }



    this.setListeners();

  },



  setOptions: function(options) {

    this.options = Object.extend({

      parameters: options.parameters || 'rating={ajaxParameter}',

      parser: options.parser ? options.parser : new ResponseTextParser(),

      handler: options.handler ? options.handler : this.handler

    }, options || {});

    this.ratingParameter = AJAX_DEFAULT_PARAMETER;

  },



  setListeners: function() {

    // attach events to anchors

    var elements = $(this.options.source).getElementsByTagName('a');

    for (var j=0; j<elements.length; j++) {

      elements[j].onmouseover = this.raterMouseOver.bindAsEventListener(this);

      elements[j].onmouseout = this.raterMouseOut.bindAsEventListener(this);

      elements[j].onclick = this.raterClick.bindAsEventListener(this);

    }

  },



  getCurrentRating: function(list) {

    var selectedIndex = -1;

    for (var i=0; i<list.length; i++) {

      if (Element.hasClassName(list[i], this.options.selectedClass)) {

        selectedIndex = i;

      }

    }

    return selectedIndex;

  },



  getCurrentIndex: function(list, elem) {

    var currentIndex = 0;

    for (var i=0; i<list.length; i++) {

      if (elem == list[i]) {

        currentIndex = i;

      }

    }

    return currentIndex;

  },



  raterMouseOver: function (e) {

    // get containing div

    var container = Event.findElement(e, 'div');



    // get list of all anchors

    var elements = container.getElementsByTagName('a');



    // find the current rating

    var selectedIndex = this.getCurrentRating(elements);



    // find the index of the 'hovered' element

    var currentIndex = this.getCurrentIndex(elements, Event.element(e));



    // set message

    if (this.options.messageClass) {

      $(container.id+'_message').innerHTML = Event.element(e).title;

    }



    // iterate over each anchor and apply styles

    for (var i=0; i<elements.length; i++) {

      if (selectedIndex > -1) {

        if (i <= selectedIndex && i <= currentIndex)

          Element.addClassName(elements[i], this.options.selectedOverClass);

        else if (i <= selectedIndex && i > currentIndex)

          Element.addClassName(elements[i], this.options.selectedLessClass);

        else if (i > selectedIndex && i <= currentIndex)

          Element.addClassName(elements[i], this.options.overClass);

      } else {

        if (i <= currentIndex) Element.addClassName(elements[i], this.options.overClass);

      }

    }

  },



  raterMouseOut: function (e) {

    // get containing div

    var container = Event.findElement(e, 'div');



    // get list of all anchors

    var elements = container.getElementsByTagName('a');



    // clear message

    if (this.options.messageClass) {

      $(container.id+'_message').innerHTML = '';

    }



    // iterate over each anchor and apply styles

    for (var i=0; i<elements.length; i++) {

      Element.removeClassName(elements[i], this.options.selectedOverClass);

      Element.removeClassName(elements[i], this.options.selectedLessClass);

      Element.removeClassName(elements[i], this.options.overClass);

    }

  },



  raterClick: function (e) {

    // get containing div

    var container = Event.findElement(e, 'div');



    // get list of all anchors

    var elements = container.getElementsByTagName('a');



    // find the index of the 'hovered' element

    var currentIndex = this.getCurrentIndex(elements, Event.element(e));



    // update styles

    for (var i=0; i<elements.length; i++) {

      Element.removeClassName(elements[i], this.options.selectedOverClass);

      Element.removeClassName(elements[i], this.options.selectedLessClass);

      Element.removeClassName(elements[i], this.options.overClass);

      if (i <= currentIndex) {

        if (Element.hasClassName(container, 'onoff')

              && Element.hasClassName(elements[i], this.options.selectedClass)) {

          Element.removeClassName(elements[i], this.options.selectedClass);

        } else {

          Element.addClassName(elements[i], this.options.selectedClass);

        }

      } else if (i > currentIndex) {

        Element.removeClassName(elements[i], this.options.selectedClass);

      }

    }



    // send AJAX

    var ratingToSend = elements[currentIndex].title;

    if (Element.hasClassName(container, 'onoff')) {

      // send opposite of what was selected

      var ratings = this.options.ratings.split(',');

      if (ratings[0] == ratingToSend) ratingToSend = ratings[1];

      else ratingToSend = ratings[0];

    }

    this.execute(ratingToSend);



    // set field (if defined)

    if (this.options.state) {

      $(this.options.state).value = ratingToSend;

    }

  },



  execute: function(ratingValue) {

    if (this.options.preFunction != null) this.options.preFunction();



    // parse parameters and do replacements

    var ajaxParameters = this.options.parameters || '';

    var re = new RegExp("(\\{"+this.ratingParameter+"\\})", 'g');

    ajaxParameters = ajaxParameters.replace(re, ratingValue);

    var params = buildParameterString(ajaxParameters);



    var obj = this; // required because 'this' conflict with Ajax.Request

    var toggleStateFunc = this.getToggleStateValue;

    var aj = new Ajax.Request(this.url, {

      asynchronous: true,

      method: 'get',

      evalScripts: true,

      parameters: params,

      onSuccess: function(request) {

        obj.options.parser.load(request);

        var results = obj.options.parser.itemList;

        obj.options.handler(request, {items: results});

      },

      onFailure: function(request) {

        if (obj.options.errorFunction != null) obj.options.errorFunction(request);

      },

      onComplete: function(request) {

        if (obj.options.postFunction != null) obj.options.postFunction(request);

      }

    });

  },



  handler: function(request, options) {

    // TODO: anything?

  },



  getToggleStateValue: function(name, results) {

    for (var i=0; i<results.length; i++) {

      if (results[i][0] == name) return results[i][1];

    }

    return "";

  }



});





/**

 * CALLOUT TAG

 */

AjaxJspTag.Callout = Class.create();

AjaxJspTag.Callout.prototype = Object.extend(new AjaxJspTag.Base(), {



  initialize: function(url, options) {

    this.url = url;

    this.setOptions(options);

    this.setListeners();

  },



  setOptions: function(options) {

    this.options = Object.extend({

      parameters: options.parameters || '',

      overlib: options.overlib || AJAX_CALLOUT_OVERLIB_DEFAULT,

      parser: options.parser ? options.parser : new ResponseXmlToHtmlParser(),

      handler: options.handler ? options.handler : this.handler

    }, options || {});

    this.calloutParameter = AJAX_DEFAULT_PARAMETER;

  },



  setListeners: function() {

    if (this.options.sourceClass) {

      var elemList = document.getElementsByClassName(this.options.sourceClass);

      for (var i=0; i<elemList.length; i++) {

        elemList[i].onmouseover = this.calloutMouseover.bindAsEventListener(this);

        elemList[i].onmouseout = this.calloutMouseout.bindAsEventListener(this);

      }

    }

  },



  calloutMouseover: function(e) {

    this.execute(e);

  },



  calloutMouseout: function(e) {

    nd();

  },



  execute: function(e) {

    if (this.options.preFunction != null) this.options.preFunction();



    // parse parameters and do replacements

    var ajaxParameters = this.options.parameters || '';

    var re = new RegExp("(\\{"+this.calloutParameter+"\\})", 'g');

    var elem = Event.element(e);

    if (elem.type) {

      ajaxParameters = ajaxParameters.replace(re, $F(elem));

    } else {

      ajaxParameters = ajaxParameters.replace(re, elem.innerHTML);

    }

    var params = buildParameterString(ajaxParameters);



    var obj = this; // required because 'this' conflict with Ajax.Request

    var aj = new Ajax.Request(this.url, {

      asynchronous: true,

      method: 'get',

      evalScripts: true,

      parameters: params,

      onSuccess: function(request) {

        obj.options.parser.load(request);

        obj.options.handler(obj.options.parser.content, {title: obj.options.title,

                                                         overlib: obj.options.overlib});

      },

      onFailure: function(request) {

        if (obj.options.errorFunction != null) obj.options.errorFunction(request);

      },

      onComplete: function(request) {

        if (obj.options.postFunction != null) obj.options.postFunction(request);

      }

    });

  },



  handler: function(content, options) {

    if (options.overlib) {

      if (options.title) {

        return eval("overlib(content,CAPTION,options.title,"+options.overlib+")");

      } else {

        return eval("overlib(content,"+options.overlib+")");

      }

    } else {

      if (options.title) {

        return overlib(content,CAPTION,options.title);

      } else {

        return overlib(content);

      }

    }

  }



});

⌨️ 快捷键说明

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