Template:SZU China/Quick view1/Javascript

(function (window) {

   'use strict';

   // class helper functions from bonzo https://github.com/ded/bonzo

   function classReg(className) {
       return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
   }

   // classList support for class management
   // altho to be fair, the api sucks because it won't accept multiple classes at once
   var hasClass, addClass, removeClass;

   if ('classList' in document.documentElement) {
       hasClass = function (elem, c) {
           return elem.classList.contains(c);
       };
       addClass = function (elem, c) {
           elem.classList.add(c);
       };
       removeClass = function (elem, c) {
           elem.classList.remove(c);
       };
   } else {
       hasClass = function (elem, c) {
           return classReg(c).test(elem.className);
       };
       addClass = function (elem, c) {
           if (!hasClass(elem, c)) {
               elem.className = elem.className + ' ' + c;
           }
       };
       removeClass = function (elem, c) {
           elem.className = elem.className.replace(classReg(c), ' ');
       };
   }

   function toggleClass(elem, c) {
       var fn = hasClass(elem, c) ? removeClass : addClass;
       fn(elem, c);
   }

   var classie = {
       // full names
       hasClass: hasClass,
       addClass: addClass,
       removeClass: removeClass,
       toggleClass: toggleClass,
       // short names
       has: hasClass,
       add: addClass,
       remove: removeClass,
       toggle: toggleClass
   };

   // transport
   if (typeof define === 'function' && define.amd) {
       // AMD
       define(classie);
   } else {
       // browser global
       window.classie = classie;
   }

})(window);


var ModalEffects = (function () {

   function init() {

       var overlay = document.querySelector('.md-overlay');

       [].slice.call(document.querySelectorAll('.md-trigger')).forEach(function (el, i) {

           var modal = document.querySelector('#' + el.getAttribute('data-modal')),
               close = modal.querySelector('.md-close');

           function removeModal(hasPerspective) {
               classie.remove(modal, 'md-show');

               if (hasPerspective) {
                   classie.remove(document.documentElement, 'md-perspective');
               }
           }

           function removeModalHandler() {
               removeModal(classie.has(el, 'md-setperspective'));
           }

           el.addEventListener('click', function (ev) {
               classie.add(modal, 'md-show');
               overlay.removeEventListener('click', removeModalHandler);
               overlay.addEventListener('click', removeModalHandler);

               if (classie.has(el, 'md-setperspective')) {
                   setTimeout(function () {
                       classie.add(document.documentElement, 'md-perspective');
                   }, 25);
               }
           });

           close.addEventListener('click', function (ev) {
               ev.stopPropagation();
               removeModalHandler();
           });

       });

   }

   init();

})();