text: /* ========================================================================
   * ZUI: jquery.extensions.js
   * http://zui.sexy
   * ========================================================================
   * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT
   * ======================================================================== */
  
  
  (function($, window, undefined) {
      'use strict';
  
      /* Check jquery */
      if(typeof($) === 'undefined') throw new Error('ZUI requires jQuery');
  
      // ZUI shared object
      if(!$.zui) $.zui = function(obj) {
          if($.isPlainObject(obj)) {
              $.extend($.zui, obj);
          }
      };
  
      var MOUSE_BUTTON_CODES = {
          all: -1,
          left: 0,
          middle: 1,
          right: 2
      };
  
      var lastUuidAmend = 0;
      $.zui({
          uuid: function() {
              return(new Date()).getTime() * 1000 + (lastUuidAmend++) % 1000;
          },
  
          callEvent: function(func, event, proxy) {
              if($.isFunction(func)) {
                  if(proxy !== undefined) {
                      func = $.proxy(func, proxy);
                  }
                  var result = func(event);
                  if(event) event.result = result;
                  return !(result !== undefined && (!result));
              }
              return 1;
          },
  
          clientLang: function() {
              var lang;
              var config = window.config;
              if(typeof(config) != 'undefined' && config.clientLang) {
                  lang = config.clientLang;
              }
              if(!lang) {
                  var hl = $('html').attr('lang');
                  lang = hl ? hl : (navigator.userLanguage || navigator.userLanguage || 'zh_cn');
              }
              return lang.replace('-', '_').toLowerCase();
          },
  
          strCode: function(str) {
              var code = 0;
              if(str && str.length) {
                  for(var i = 0; i < str.length; ++i) {
                      code += i * str.charCodeAt(i);
                  }
              }
              return code;
          },
  
          getMouseButtonCode: function(mouseButton) {
              if(typeof mouseButton !== 'number') {
                  mouseButton = MOUSE_BUTTON_CODES[mouseButton];
              }
              if(mouseButton === undefined || mouseButton === null) mouseButton = -1;
              return mouseButton;
          }
      });
  
      $.fn.callEvent = function(name, event, model) {
          var $this = $(this);
          var dotIndex = name.indexOf('.zui.');
          var shortName = dotIndex < 0 ? name : name.substring(0, dotIndex);
          var e = $.Event(shortName, event);
  
          if((model === undefined) && dotIndex > 0) {
              model = $this.data(name.substring(dotIndex + 1));
          }
  
          if(model && model.options) {
              var func = model.options[shortName];
              if($.isFunction(func)) {
                  $.zui.callEvent(func, e, model);
              }
          }
          $this.trigger(e);
          return e;
      };
  }(jQuery, window, undefined));
  
  