function _getTransitionEndEvent( elem ) {
      if ( !elem ) {
        var msg = 'Element does not have TransitionEnd event. It may be null!';
        throw new Error( msg );
      }

      var transition;
      var transitions = {
        WebkitTransition: 'webkitTransitionEnd',
        MozTransition:    'transitionend',
        OTransition:      'oTransitionEnd otransitionend',
        transition:       'transitionend'
      };

      for ( var t in transitions ) {
        if ( transitions.hasOwnProperty( t ) &&
             typeof elem.style[t] !== 'undefined' ) {
          transition = transitions[t];
          break;
        }
      }
      return transition;
    }
/**
     * @param {HTMLNode} elem
     *   The element to check for support of transition end event.
     * @returns {string} The browser-prefixed transition end event.
     */
@param {HTMLNode} elem
The element to check for support of transition end event.
@returns {string} The browser-prefixed transition end event.
@param { HTMLNode } elem The element to check for support of transition end event . @returns { string } The browser - prefixed transition end event .
function _getTransitionEndEvent( elem ) {
      if ( !elem ) {
        var msg = 'Element does not have TransitionEnd event. It may be null!';
        throw new Error( msg );
      }
      var transition;
      var transitions = {
        WebkitTransition: 'webkitTransitionEnd',
        MozTransition:    'transitionend',
        OTransition:      'oTransitionEnd otransitionend',
        transition:       'transitionend'
      };
      for ( var t in transitions ) {
        if ( transitions.hasOwnProperty( t ) &&
             typeof elem.style[t] !== 'undefined' ) {
          transition = transitions[t];
          break;
        }
      }
      return transition;
    }
function _getTransitionEndEvent ( elem ) { if ( ! elem ) { var msg = 'Element does not have TransitionEnd event. It may be null!' ; throw new Error ( msg ) ; } var transition ; var transitions = { WebkitTransition : 'webkitTransitionEnd' , MozTransition : 'transitionend' , OTransition : 'oTransitionEnd otransitionend' , transition : 'transitionend' } ; for ( var t in transitions ) { if ( transitions . hasOwnProperty ( t ) && typeof elem . style [ t ] !== 'undefined' ) { transition = transitions [ t ] ; break ; } } return transition ; }
@param {HTMLNode} elem
   The element to check for support of transition end event.
@param { HTMLNode } elem The element to check for support of transition end event .