| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431 | 
							- /*!
 
-  * ZeroClipboard
 
-  * The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.
 
-  * Copyright (c) 2014 Jon Rohan, James M. Greene
 
-  * Licensed MIT
 
-  * http://zeroclipboard.org/
 
-  * v2.0.0-beta.5
 
-  */
 
- ;(function (window) {
 
-   'use strict'
 
-   var _currentElement
 
-   var _flashState = {
 
-     bridge: null,
 
-     version: '0.0.0',
 
-     pluginType: 'unknown',
 
-     disabled: null,
 
-     outdated: null,
 
-     unavailable: null,
 
-     deactivated: null,
 
-     overdue: null,
 
-     ready: null
 
-   }
 
-   var _clipData = {}
 
-   var _clipDataFormatMap = null
 
-   var _clientIdCounter = 0
 
-   var _clientMeta = {}
 
-   var _elementIdCounter = 0
 
-   var _elementMeta = {}
 
-   var _swfPath = (function () {
 
-     var i,
 
-       jsDir,
 
-       tmpJsPath,
 
-       jsPath,
 
-       swfPath = 'ZeroClipboard.swf'
 
-     if (!(document.currentScript && (jsPath = document.currentScript.src))) {
 
-       var scripts = document.getElementsByTagName('script')
 
-       if ('readyState' in scripts[0]) {
 
-         for (i = scripts.length; i--; ) {
 
-           if (scripts[i].readyState === 'interactive' && (jsPath = scripts[i].src)) {
 
-             break
 
-           }
 
-         }
 
-       } else if (document.readyState === 'loading') {
 
-         jsPath = scripts[scripts.length - 1].src
 
-       } else {
 
-         for (i = scripts.length; i--; ) {
 
-           tmpJsPath = scripts[i].src
 
-           if (!tmpJsPath) {
 
-             jsDir = null
 
-             break
 
-           }
 
-           tmpJsPath = tmpJsPath.split('#')[0].split('?')[0]
 
-           tmpJsPath = tmpJsPath.slice(0, tmpJsPath.lastIndexOf('/') + 1)
 
-           if (jsDir == null) {
 
-             jsDir = tmpJsPath
 
-           } else if (jsDir !== tmpJsPath) {
 
-             jsDir = null
 
-             break
 
-           }
 
-         }
 
-         if (jsDir !== null) {
 
-           jsPath = jsDir
 
-         }
 
-       }
 
-     }
 
-     if (jsPath) {
 
-       jsPath = jsPath.split('#')[0].split('?')[0]
 
-       swfPath = jsPath.slice(0, jsPath.lastIndexOf('/') + 1) + swfPath
 
-     }
 
-     return swfPath
 
-   })()
 
-   var _camelizeCssPropName = (function () {
 
-     var matcherRegex = /\-([a-z])/g,
 
-       replacerFn = function (match, group) {
 
-         return group.toUpperCase()
 
-       }
 
-     return function (prop) {
 
-       return prop.replace(matcherRegex, replacerFn)
 
-     }
 
-   })()
 
-   var _getStyle = function (el, prop) {
 
-     var value, camelProp, tagName
 
-     if (window.getComputedStyle) {
 
-       value = window.getComputedStyle(el, null).getPropertyValue(prop)
 
-     } else {
 
-       camelProp = _camelizeCssPropName(prop)
 
-       if (el.currentStyle) {
 
-         value = el.currentStyle[camelProp]
 
-       } else {
 
-         value = el.style[camelProp]
 
-       }
 
-     }
 
-     if (prop === 'cursor') {
 
-       if (!value || value === 'auto') {
 
-         tagName = el.tagName.toLowerCase()
 
-         if (tagName === 'a') {
 
-           return 'pointer'
 
-         }
 
-       }
 
-     }
 
-     return value
 
-   }
 
-   var _elementMouseOver = function (event) {
 
-     if (!event) {
 
-       event = window.event
 
-     }
 
-     var target
 
-     if (this !== window) {
 
-       target = this
 
-     } else if (event.target) {
 
-       target = event.target
 
-     } else if (event.srcElement) {
 
-       target = event.srcElement
 
-     }
 
-     ZeroClipboard.activate(target)
 
-   }
 
-   var _addEventHandler = function (element, method, func) {
 
-     if (!element || element.nodeType !== 1) {
 
-       return
 
-     }
 
-     if (element.addEventListener) {
 
-       element.addEventListener(method, func, false)
 
-     } else if (element.attachEvent) {
 
-       element.attachEvent('on' + method, func)
 
-     }
 
-   }
 
-   var _removeEventHandler = function (element, method, func) {
 
-     if (!element || element.nodeType !== 1) {
 
-       return
 
-     }
 
-     if (element && element.removeEventListener) {
 
-       element.removeEventListener(method, func, false)
 
-     } else if (element.detachEvent) {
 
-       element.detachEvent('on' + method, func)
 
-     }
 
-   }
 
-   var _addClass = function (element, value) {
 
-     if (!element || element.nodeType !== 1) {
 
-       return element
 
-     }
 
-     if (element.classList) {
 
-       if (!element.classList.contains(value)) {
 
-         element.classList.add(value)
 
-       }
 
-       return element
 
-     }
 
-     if (value && typeof value === 'string') {
 
-       var classNames = (value || '').split(/\s+/)
 
-       if (element.nodeType === 1) {
 
-         if (!element.className) {
 
-           element.className = value
 
-         } else {
 
-           var className = ' ' + element.className + ' ',
 
-             setClass = element.className
 
-           for (var c = 0, cl = classNames.length; c < cl; c++) {
 
-             if (className.indexOf(' ' + classNames[c] + ' ') < 0) {
 
-               setClass += ' ' + classNames[c]
 
-             }
 
-           }
 
-           element.className = setClass.replace(/^\s+|\s+$/g, '')
 
-         }
 
-       }
 
-     }
 
-     return element
 
-   }
 
-   var _removeClass = function (element, value) {
 
-     if (!element || element.nodeType !== 1) {
 
-       return element
 
-     }
 
-     if (element.classList) {
 
-       if (element.classList.contains(value)) {
 
-         element.classList.remove(value)
 
-       }
 
-       return element
 
-     }
 
-     if ((value && typeof value === 'string') || value === undefined) {
 
-       var classNames = (value || '').split(/\s+/)
 
-       if (element.nodeType === 1 && element.className) {
 
-         if (value) {
 
-           var className = (' ' + element.className + ' ').replace(/[\n\t]/g, ' ')
 
-           for (var c = 0, cl = classNames.length; c < cl; c++) {
 
-             className = className.replace(' ' + classNames[c] + ' ', ' ')
 
-           }
 
-           element.className = className.replace(/^\s+|\s+$/g, '')
 
-         } else {
 
-           element.className = ''
 
-         }
 
-       }
 
-     }
 
-     return element
 
-   }
 
-   var _getZoomFactor = function () {
 
-     var rect,
 
-       physicalWidth,
 
-       logicalWidth,
 
-       zoomFactor = 1
 
-     if (typeof document.body.getBoundingClientRect === 'function') {
 
-       rect = document.body.getBoundingClientRect()
 
-       physicalWidth = rect.right - rect.left
 
-       logicalWidth = document.body.offsetWidth
 
-       zoomFactor = Math.round((physicalWidth / logicalWidth) * 100) / 100
 
-     }
 
-     return zoomFactor
 
-   }
 
-   var _getDOMObjectPosition = function (obj, defaultZIndex) {
 
-     var info = {
 
-       left: 0,
 
-       top: 0,
 
-       width: 0,
 
-       height: 0,
 
-       zIndex: _getSafeZIndex(defaultZIndex) - 1
 
-     }
 
-     if (obj.getBoundingClientRect) {
 
-       var rect = obj.getBoundingClientRect()
 
-       var pageXOffset, pageYOffset, zoomFactor
 
-       if ('pageXOffset' in window && 'pageYOffset' in window) {
 
-         pageXOffset = window.pageXOffset
 
-         pageYOffset = window.pageYOffset
 
-       } else {
 
-         zoomFactor = _getZoomFactor()
 
-         pageXOffset = Math.round(document.documentElement.scrollLeft / zoomFactor)
 
-         pageYOffset = Math.round(document.documentElement.scrollTop / zoomFactor)
 
-       }
 
-       var leftBorderWidth = document.documentElement.clientLeft || 0
 
-       var topBorderWidth = document.documentElement.clientTop || 0
 
-       info.left = rect.left + pageXOffset - leftBorderWidth
 
-       info.top = rect.top + pageYOffset - topBorderWidth
 
-       info.width = 'width' in rect ? rect.width : rect.right - rect.left
 
-       info.height = 'height' in rect ? rect.height : rect.bottom - rect.top
 
-     }
 
-     return info
 
-   }
 
-   var _cacheBust = function (path, options) {
 
-     var cacheBust = options == null || (options && options.cacheBust === true)
 
-     if (cacheBust) {
 
-       return (path.indexOf('?') === -1 ? '?' : '&') + 'noCache=' + new Date().getTime()
 
-     } else {
 
-       return ''
 
-     }
 
-   }
 
-   var _vars = function (options) {
 
-     var i,
 
-       len,
 
-       domain,
 
-       domains,
 
-       str = '',
 
-       trustedOriginsExpanded = []
 
-     if (options.trustedDomains) {
 
-       if (typeof options.trustedDomains === 'string') {
 
-         domains = [options.trustedDomains]
 
-       } else if (typeof options.trustedDomains === 'object' && 'length' in options.trustedDomains) {
 
-         domains = options.trustedDomains
 
-       }
 
-     }
 
-     if (domains && domains.length) {
 
-       for (i = 0, len = domains.length; i < len; i++) {
 
-         if (domains.hasOwnProperty(i) && domains[i] && typeof domains[i] === 'string') {
 
-           domain = _extractDomain(domains[i])
 
-           if (!domain) {
 
-             continue
 
-           }
 
-           if (domain === '*') {
 
-             trustedOriginsExpanded = [domain]
 
-             break
 
-           }
 
-           trustedOriginsExpanded.push.apply(trustedOriginsExpanded, [
 
-             domain,
 
-             '//' + domain,
 
-             window.location.protocol + '//' + domain
 
-           ])
 
-         }
 
-       }
 
-     }
 
-     if (trustedOriginsExpanded.length) {
 
-       str += 'trustedOrigins=' + encodeURIComponent(trustedOriginsExpanded.join(','))
 
-     }
 
-     if (options.forceEnhancedClipboard === true) {
 
-       str += (str ? '&' : '') + 'forceEnhancedClipboard=true'
 
-     }
 
-     return str
 
-   }
 
-   var _inArray = function (elem, array, fromIndex) {
 
-     if (typeof array.indexOf === 'function') {
 
-       return array.indexOf(elem, fromIndex)
 
-     }
 
-     var i,
 
-       len = array.length
 
-     if (typeof fromIndex === 'undefined') {
 
-       fromIndex = 0
 
-     } else if (fromIndex < 0) {
 
-       fromIndex = len + fromIndex
 
-     }
 
-     for (i = fromIndex; i < len; i++) {
 
-       if (array.hasOwnProperty(i) && array[i] === elem) {
 
-         return i
 
-       }
 
-     }
 
-     return -1
 
-   }
 
-   var _prepClip = function (elements) {
 
-     if (typeof elements === 'string') {
 
-       throw new TypeError("ZeroClipboard doesn't accept query strings.")
 
-     }
 
-     return typeof elements.length !== 'number' ? [elements] : elements
 
-   }
 
-   var _dispatchCallback = function (func, context, args, async) {
 
-     if (async) {
 
-       window.setTimeout(function () {
 
-         func.apply(context, args)
 
-       }, 0)
 
-     } else {
 
-       func.apply(context, args)
 
-     }
 
-   }
 
-   var _getSafeZIndex = function (val) {
 
-     var zIndex, tmp
 
-     if (val) {
 
-       if (typeof val === 'number' && val > 0) {
 
-         zIndex = val
 
-       } else if (typeof val === 'string' && (tmp = parseInt(val, 10)) && !isNaN(tmp) && tmp > 0) {
 
-         zIndex = tmp
 
-       }
 
-     }
 
-     if (!zIndex) {
 
-       if (typeof _globalConfig.zIndex === 'number' && _globalConfig.zIndex > 0) {
 
-         zIndex = _globalConfig.zIndex
 
-       } else if (
 
-         typeof _globalConfig.zIndex === 'string' &&
 
-         (tmp = parseInt(_globalConfig.zIndex, 10)) &&
 
-         !isNaN(tmp) &&
 
-         tmp > 0
 
-       ) {
 
-         zIndex = tmp
 
-       }
 
-     }
 
-     return zIndex || 0
 
-   }
 
-   var _extend = function () {
 
-     var i,
 
-       len,
 
-       arg,
 
-       prop,
 
-       src,
 
-       copy,
 
-       target = arguments[0] || {}
 
-     for (i = 1, len = arguments.length; i < len; i++) {
 
-       if ((arg = arguments[i]) != null) {
 
-         for (prop in arg) {
 
-           if (arg.hasOwnProperty(prop)) {
 
-             src = target[prop]
 
-             copy = arg[prop]
 
-             if (target === copy) {
 
-               continue
 
-             }
 
-             if (copy !== undefined) {
 
-               target[prop] = copy
 
-             }
 
-           }
 
-         }
 
-       }
 
-     }
 
-     return target
 
-   }
 
-   var _extractDomain = function (originOrUrl) {
 
-     if (originOrUrl == null || originOrUrl === '') {
 
-       return null
 
-     }
 
-     originOrUrl = originOrUrl.replace(/^\s+|\s+$/g, '')
 
-     if (originOrUrl === '') {
 
-       return null
 
-     }
 
-     var protocolIndex = originOrUrl.indexOf('//')
 
-     originOrUrl = protocolIndex === -1 ? originOrUrl : originOrUrl.slice(protocolIndex + 2)
 
-     var pathIndex = originOrUrl.indexOf('/')
 
-     originOrUrl =
 
-       pathIndex === -1
 
-         ? originOrUrl
 
-         : protocolIndex === -1 || pathIndex === 0
 
-         ? null
 
-         : originOrUrl.slice(0, pathIndex)
 
-     if (originOrUrl && originOrUrl.slice(-4).toLowerCase() === '.swf') {
 
-       return null
 
-     }
 
-     return originOrUrl || null
 
-   }
 
-   var _determineScriptAccess = (function () {
 
-     var _extractAllDomains = function (origins, resultsArray) {
 
-       var i, len, tmp
 
-       if (origins == null || resultsArray[0] === '*') {
 
-         return
 
-       }
 
-       if (typeof origins === 'string') {
 
-         origins = [origins]
 
-       }
 
-       if (!(typeof origins === 'object' && typeof origins.length === 'number')) {
 
-         return
 
-       }
 
-       for (i = 0, len = origins.length; i < len; i++) {
 
-         if (origins.hasOwnProperty(i) && (tmp = _extractDomain(origins[i]))) {
 
-           if (tmp === '*') {
 
-             resultsArray.length = 0
 
-             resultsArray.push('*')
 
-             break
 
-           }
 
-           if (_inArray(tmp, resultsArray) === -1) {
 
-             resultsArray.push(tmp)
 
-           }
 
-         }
 
-       }
 
-     }
 
-     return function (currentDomain, configOptions) {
 
-       var swfDomain = _extractDomain(configOptions.swfPath)
 
-       if (swfDomain === null) {
 
-         swfDomain = currentDomain
 
-       }
 
-       var trustedDomains = []
 
-       _extractAllDomains(configOptions.trustedOrigins, trustedDomains)
 
-       _extractAllDomains(configOptions.trustedDomains, trustedDomains)
 
-       var len = trustedDomains.length
 
-       if (len > 0) {
 
-         if (len === 1 && trustedDomains[0] === '*') {
 
-           return 'always'
 
-         }
 
-         if (_inArray(currentDomain, trustedDomains) !== -1) {
 
-           if (len === 1 && currentDomain === swfDomain) {
 
-             return 'sameDomain'
 
-           }
 
-           return 'always'
 
-         }
 
-       }
 
-       return 'never'
 
-     }
 
-   })()
 
-   var _objectKeys = function (obj) {
 
-     if (obj == null) {
 
-       return []
 
-     }
 
-     if (Object.keys) {
 
-       return Object.keys(obj)
 
-     }
 
-     var keys = []
 
-     for (var prop in obj) {
 
-       if (obj.hasOwnProperty(prop)) {
 
-         keys.push(prop)
 
-       }
 
-     }
 
-     return keys
 
-   }
 
-   var _deleteOwnProperties = function (obj) {
 
-     if (obj) {
 
-       for (var prop in obj) {
 
-         if (obj.hasOwnProperty(prop)) {
 
-           delete obj[prop]
 
-         }
 
-       }
 
-     }
 
-     return obj
 
-   }
 
-   var _safeActiveElement = function () {
 
-     try {
 
-       return document.activeElement
 
-     } catch (err) {}
 
-     return null
 
-   }
 
-   var _pick = function (obj, keys) {
 
-     var newObj = {}
 
-     for (var i = 0, len = keys.length; i < len; i++) {
 
-       if (keys[i] in obj) {
 
-         newObj[keys[i]] = obj[keys[i]]
 
-       }
 
-     }
 
-     return newObj
 
-   }
 
-   var _omit = function (obj, keys) {
 
-     var newObj = {}
 
-     for (var prop in obj) {
 
-       if (_inArray(prop, keys) === -1) {
 
-         newObj[prop] = obj[prop]
 
-       }
 
-     }
 
-     return newObj
 
-   }
 
-   var _mapClipDataToFlash = function (clipData) {
 
-     var newClipData = {},
 
-       formatMap = {}
 
-     if (!(typeof clipData === 'object' && clipData)) {
 
-       return
 
-     }
 
-     for (var dataFormat in clipData) {
 
-       if (
 
-         dataFormat &&
 
-         clipData.hasOwnProperty(dataFormat) &&
 
-         typeof clipData[dataFormat] === 'string' &&
 
-         clipData[dataFormat]
 
-       ) {
 
-         switch (dataFormat.toLowerCase()) {
 
-           case 'text/plain':
 
-           case 'text':
 
-           case 'air:text':
 
-           case 'flash:text':
 
-             newClipData.text = clipData[dataFormat]
 
-             formatMap.text = dataFormat
 
-             break
 
-           case 'text/html':
 
-           case 'html':
 
-           case 'air:html':
 
-           case 'flash:html':
 
-             newClipData.html = clipData[dataFormat]
 
-             formatMap.html = dataFormat
 
-             break
 
-           case 'application/rtf':
 
-           case 'text/rtf':
 
-           case 'rtf':
 
-           case 'richtext':
 
-           case 'air:rtf':
 
-           case 'flash:rtf':
 
-             newClipData.rtf = clipData[dataFormat]
 
-             formatMap.rtf = dataFormat
 
-             break
 
-           default:
 
-             break
 
-         }
 
-       }
 
-     }
 
-     return {
 
-       data: newClipData,
 
-       formatMap: formatMap
 
-     }
 
-   }
 
-   var _mapClipResultsFromFlash = function (clipResults, formatMap) {
 
-     if (
 
-       !(
 
-         typeof clipResults === 'object' &&
 
-         clipResults &&
 
-         typeof formatMap === 'object' &&
 
-         formatMap
 
-       )
 
-     ) {
 
-       return clipResults
 
-     }
 
-     var newResults = {}
 
-     for (var prop in clipResults) {
 
-       if (clipResults.hasOwnProperty(prop)) {
 
-         if (prop !== 'success' && prop !== 'data') {
 
-           newResults[prop] = clipResults[prop]
 
-           continue
 
-         }
 
-         newResults[prop] = {}
 
-         var tmpHash = clipResults[prop]
 
-         for (var dataFormat in tmpHash) {
 
-           if (
 
-             dataFormat &&
 
-             tmpHash.hasOwnProperty(dataFormat) &&
 
-             formatMap.hasOwnProperty(dataFormat)
 
-           ) {
 
-             newResults[prop][formatMap[dataFormat]] = tmpHash[dataFormat]
 
-           }
 
-         }
 
-       }
 
-     }
 
-     return newResults
 
-   }
 
-   var _args = (function (arraySlice) {
 
-     return function (args) {
 
-       return arraySlice.call(args, 0)
 
-     }
 
-   })(window.Array.prototype.slice)
 
-   var _detectFlashSupport = function () {
 
-     var plugin,
 
-       ax,
 
-       mimeType,
 
-       hasFlash = false,
 
-       isActiveX = false,
 
-       isPPAPI = false,
 
-       flashVersion = ''
 
-     function parseFlashVersion(desc) {
 
-       var matches = desc.match(/[\d]+/g)
 
-       matches.length = 3
 
-       return matches.join('.')
 
-     }
 
-     function isPepperFlash(flashPlayerFileName) {
 
-       return (
 
-         !!flashPlayerFileName &&
 
-         (flashPlayerFileName = flashPlayerFileName.toLowerCase()) &&
 
-         (/^(pepflashplayer\.dll|libpepflashplayer\.so|pepperflashplayer\.plugin)$/.test(
 
-           flashPlayerFileName
 
-         ) ||
 
-           flashPlayerFileName.slice(-13) === 'chrome.plugin')
 
-       )
 
-     }
 
-     function inspectPlugin(plugin) {
 
-       if (plugin) {
 
-         hasFlash = true
 
-         if (plugin.version) {
 
-           flashVersion = parseFlashVersion(plugin.version)
 
-         }
 
-         if (!flashVersion && plugin.description) {
 
-           flashVersion = parseFlashVersion(plugin.description)
 
-         }
 
-         if (plugin.filename) {
 
-           isPPAPI = isPepperFlash(plugin.filename)
 
-         }
 
-       }
 
-     }
 
-     if (navigator.plugins && navigator.plugins.length) {
 
-       plugin = navigator.plugins['Shockwave Flash']
 
-       inspectPlugin(plugin)
 
-       if (navigator.plugins['Shockwave Flash 2.0']) {
 
-         hasFlash = true
 
-         flashVersion = '2.0.0.11'
 
-       }
 
-     } else if (navigator.mimeTypes && navigator.mimeTypes.length) {
 
-       mimeType = navigator.mimeTypes['application/x-shockwave-flash']
 
-       plugin = mimeType && mimeType.enabledPlugin
 
-       inspectPlugin(plugin)
 
-     } else if (typeof ActiveXObject !== 'undefined') {
 
-       isActiveX = true
 
-       try {
 
-         ax = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.7')
 
-         hasFlash = true
 
-         flashVersion = parseFlashVersion(ax.GetVariable('$version'))
 
-       } catch (e1) {
 
-         try {
 
-           ax = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6')
 
-           hasFlash = true
 
-           flashVersion = '6.0.21'
 
-         } catch (e2) {
 
-           try {
 
-             ax = new ActiveXObject('ShockwaveFlash.ShockwaveFlash')
 
-             hasFlash = true
 
-             flashVersion = parseFlashVersion(ax.GetVariable('$version'))
 
-           } catch (e3) {
 
-             isActiveX = false
 
-           }
 
-         }
 
-       }
 
-     }
 
-     _flashState.disabled = hasFlash !== true
 
-     _flashState.outdated = flashVersion && parseFloat(flashVersion) < 11
 
-     _flashState.version = flashVersion || '0.0.0'
 
-     _flashState.pluginType = isPPAPI
 
-       ? 'pepper'
 
-       : isActiveX
 
-       ? 'activex'
 
-       : hasFlash
 
-       ? 'netscape'
 
-       : 'unknown'
 
-   }
 
-   _detectFlashSupport()
 
-   var ZeroClipboard = function (elements) {
 
-     if (!(this instanceof ZeroClipboard)) {
 
-       return new ZeroClipboard(elements)
 
-     }
 
-     this.id = '' + _clientIdCounter++
 
-     _clientMeta[this.id] = {
 
-       instance: this,
 
-       elements: [],
 
-       handlers: {}
 
-     }
 
-     if (elements) {
 
-       this.clip(elements)
 
-     }
 
-     if (typeof _flashState.ready !== 'boolean') {
 
-       _flashState.ready = false
 
-     }
 
-     if (!ZeroClipboard.isFlashUnusable() && _flashState.bridge === null) {
 
-       var _client = this
 
-       var maxWait = _globalConfig.flashLoadTimeout
 
-       if (typeof maxWait === 'number' && maxWait >= 0) {
 
-         setTimeout(function () {
 
-           if (typeof _flashState.deactivated !== 'boolean') {
 
-             _flashState.deactivated = true
 
-           }
 
-           if (_flashState.deactivated === true) {
 
-             ZeroClipboard.emit({
 
-               type: 'error',
 
-               name: 'flash-deactivated',
 
-               client: _client
 
-             })
 
-           }
 
-         }, maxWait)
 
-       }
 
-       _flashState.overdue = false
 
-       _bridge()
 
-     }
 
-   }
 
-   ZeroClipboard.prototype.setText = function (text) {
 
-     ZeroClipboard.setData('text/plain', text)
 
-     return this
 
-   }
 
-   ZeroClipboard.prototype.setHtml = function (html) {
 
-     ZeroClipboard.setData('text/html', html)
 
-     return this
 
-   }
 
-   ZeroClipboard.prototype.setRichText = function (richText) {
 
-     ZeroClipboard.setData('application/rtf', richText)
 
-     return this
 
-   }
 
-   ZeroClipboard.prototype.setData = function () {
 
-     ZeroClipboard.setData.apply(ZeroClipboard, _args(arguments))
 
-     return this
 
-   }
 
-   ZeroClipboard.prototype.clearData = function () {
 
-     ZeroClipboard.clearData.apply(ZeroClipboard, _args(arguments))
 
-     return this
 
-   }
 
-   ZeroClipboard.prototype.setSize = function (width, height) {
 
-     _setSize(width, height)
 
-     return this
 
-   }
 
-   var _setHandCursor = function (enabled) {
 
-     if (
 
-       _flashState.ready === true &&
 
-       _flashState.bridge &&
 
-       typeof _flashState.bridge.setHandCursor === 'function'
 
-     ) {
 
-       _flashState.bridge.setHandCursor(enabled)
 
-     } else {
 
-       _flashState.ready = false
 
-     }
 
-   }
 
-   ZeroClipboard.prototype.destroy = function () {
 
-     this.unclip()
 
-     this.off()
 
-     delete _clientMeta[this.id]
 
-   }
 
-   var _getAllClients = function () {
 
-     var i,
 
-       len,
 
-       client,
 
-       clients = [],
 
-       clientIds = _objectKeys(_clientMeta)
 
-     for (i = 0, len = clientIds.length; i < len; i++) {
 
-       client = _clientMeta[clientIds[i]].instance
 
-       if (client && client instanceof ZeroClipboard) {
 
-         clients.push(client)
 
-       }
 
-     }
 
-     return clients
 
-   }
 
-   ZeroClipboard.version = '2.0.0-beta.5'
 
-   var _globalConfig = {
 
-     swfPath: _swfPath,
 
-     trustedDomains: window.location.host ? [window.location.host] : [],
 
-     cacheBust: true,
 
-     forceHandCursor: false,
 
-     forceEnhancedClipboard: false,
 
-     zIndex: 999999999,
 
-     debug: false,
 
-     title: null,
 
-     autoActivate: true,
 
-     flashLoadTimeout: 3e4
 
-   }
 
-   ZeroClipboard.isFlashUnusable = function () {
 
-     return !!(
 
-       _flashState.disabled ||
 
-       _flashState.outdated ||
 
-       _flashState.unavailable ||
 
-       _flashState.deactivated
 
-     )
 
-   }
 
-   ZeroClipboard.config = function (options) {
 
-     if (typeof options === 'object' && options !== null) {
 
-       _extend(_globalConfig, options)
 
-     }
 
-     if (typeof options === 'string' && options) {
 
-       if (_globalConfig.hasOwnProperty(options)) {
 
-         return _globalConfig[options]
 
-       }
 
-       return
 
-     }
 
-     var copy = {}
 
-     for (var prop in _globalConfig) {
 
-       if (_globalConfig.hasOwnProperty(prop)) {
 
-         if (typeof _globalConfig[prop] === 'object' && _globalConfig[prop] !== null) {
 
-           if ('length' in _globalConfig[prop]) {
 
-             copy[prop] = _globalConfig[prop].slice(0)
 
-           } else {
 
-             copy[prop] = _extend({}, _globalConfig[prop])
 
-           }
 
-         } else {
 
-           copy[prop] = _globalConfig[prop]
 
-         }
 
-       }
 
-     }
 
-     return copy
 
-   }
 
-   ZeroClipboard.destroy = function () {
 
-     ZeroClipboard.deactivate()
 
-     for (var clientId in _clientMeta) {
 
-       if (_clientMeta.hasOwnProperty(clientId) && _clientMeta[clientId]) {
 
-         var client = _clientMeta[clientId].instance
 
-         if (client && typeof client.destroy === 'function') {
 
-           client.destroy()
 
-         }
 
-       }
 
-     }
 
-     var flashBridge = _flashState.bridge
 
-     if (flashBridge) {
 
-       var htmlBridge = _getHtmlBridge(flashBridge)
 
-       if (htmlBridge) {
 
-         if (_flashState.pluginType === 'activex' && 'readyState' in flashBridge) {
 
-           flashBridge.style.display = 'none'
 
-           ;(function removeSwfFromIE() {
 
-             if (flashBridge.readyState === 4) {
 
-               for (var prop in flashBridge) {
 
-                 if (typeof flashBridge[prop] === 'function') {
 
-                   flashBridge[prop] = null
 
-                 }
 
-               }
 
-               flashBridge.parentNode.removeChild(flashBridge)
 
-               if (htmlBridge.parentNode) {
 
-                 htmlBridge.parentNode.removeChild(htmlBridge)
 
-               }
 
-             } else {
 
-               setTimeout(removeSwfFromIE, 10)
 
-             }
 
-           })()
 
-         } else {
 
-           flashBridge.parentNode.removeChild(flashBridge)
 
-           if (htmlBridge.parentNode) {
 
-             htmlBridge.parentNode.removeChild(htmlBridge)
 
-           }
 
-         }
 
-       }
 
-       _flashState.ready = null
 
-       _flashState.bridge = null
 
-       _flashState.deactivated = null
 
-     }
 
-     ZeroClipboard.clearData()
 
-   }
 
-   ZeroClipboard.activate = function (element) {
 
-     if (_currentElement) {
 
-       _removeClass(_currentElement, _globalConfig.hoverClass)
 
-       _removeClass(_currentElement, _globalConfig.activeClass)
 
-     }
 
-     _currentElement = element
 
-     _addClass(element, _globalConfig.hoverClass)
 
-     _reposition()
 
-     var newTitle = _globalConfig.title || element.getAttribute('title')
 
-     if (newTitle) {
 
-       var htmlBridge = _getHtmlBridge(_flashState.bridge)
 
-       if (htmlBridge) {
 
-         htmlBridge.setAttribute('title', newTitle)
 
-       }
 
-     }
 
-     var useHandCursor =
 
-       _globalConfig.forceHandCursor === true || _getStyle(element, 'cursor') === 'pointer'
 
-     _setHandCursor(useHandCursor)
 
-   }
 
-   ZeroClipboard.deactivate = function () {
 
-     var htmlBridge = _getHtmlBridge(_flashState.bridge)
 
-     if (htmlBridge) {
 
-       htmlBridge.removeAttribute('title')
 
-       htmlBridge.style.left = '0px'
 
-       htmlBridge.style.top = '-9999px'
 
-       _setSize(1, 1)
 
-     }
 
-     if (_currentElement) {
 
-       _removeClass(_currentElement, _globalConfig.hoverClass)
 
-       _removeClass(_currentElement, _globalConfig.activeClass)
 
-       _currentElement = null
 
-     }
 
-   }
 
-   ZeroClipboard.state = function () {
 
-     return {
 
-       browser: _pick(window.navigator, ['userAgent', 'platform', 'appName']),
 
-       flash: _omit(_flashState, ['bridge']),
 
-       zeroclipboard: {
 
-         version: ZeroClipboard.version,
 
-         config: ZeroClipboard.config()
 
-       }
 
-     }
 
-   }
 
-   ZeroClipboard.setData = function (format, data) {
 
-     var dataObj
 
-     if (typeof format === 'object' && format && typeof data === 'undefined') {
 
-       dataObj = format
 
-       ZeroClipboard.clearData()
 
-     } else if (typeof format === 'string' && format) {
 
-       dataObj = {}
 
-       dataObj[format] = data
 
-     } else {
 
-       return
 
-     }
 
-     for (var dataFormat in dataObj) {
 
-       if (
 
-         dataFormat &&
 
-         dataObj.hasOwnProperty(dataFormat) &&
 
-         typeof dataObj[dataFormat] === 'string' &&
 
-         dataObj[dataFormat]
 
-       ) {
 
-         _clipData[dataFormat] = dataObj[dataFormat]
 
-       }
 
-     }
 
-   }
 
-   ZeroClipboard.clearData = function (format) {
 
-     if (typeof format === 'undefined') {
 
-       _deleteOwnProperties(_clipData)
 
-       _clipDataFormatMap = null
 
-     } else if (typeof format === 'string' && _clipData.hasOwnProperty(format)) {
 
-       delete _clipData[format]
 
-     }
 
-   }
 
-   var _bridge = function () {
 
-     var flashBridge, len
 
-     var container = document.getElementById('global-zeroclipboard-html-bridge')
 
-     if (!container) {
 
-       var allowScriptAccess = _determineScriptAccess(window.location.host, _globalConfig)
 
-       var allowNetworking = allowScriptAccess === 'never' ? 'none' : 'all'
 
-       var flashvars = _vars(_globalConfig)
 
-       var swfUrl = _globalConfig.swfPath + _cacheBust(_globalConfig.swfPath, _globalConfig)
 
-       container = _createHtmlBridge()
 
-       var divToBeReplaced = document.createElement('div')
 
-       container.appendChild(divToBeReplaced)
 
-       document.body.appendChild(container)
 
-       var tmpDiv = document.createElement('div')
 
-       var oldIE = _flashState.pluginType === 'activex'
 
-       tmpDiv.innerHTML =
 
-         '<object id="global-zeroclipboard-flash-bridge" name="global-zeroclipboard-flash-bridge" ' +
 
-         'width="100%" height="100%" ' +
 
-         (oldIE
 
-           ? 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"'
 
-           : 'type="application/x-shockwave-flash" data="' + swfUrl + '"') +
 
-         '>' +
 
-         (oldIE ? '<param name="movie" value="' + swfUrl + '"/>' : '') +
 
-         '<param name="allowScriptAccess" value="' +
 
-         allowScriptAccess +
 
-         '"/>' +
 
-         '<param name="allowNetworking" value="' +
 
-         allowNetworking +
 
-         '"/>' +
 
-         '<param name="menu" value="false"/>' +
 
-         '<param name="wmode" value="transparent"/>' +
 
-         '<param name="flashvars" value="' +
 
-         flashvars +
 
-         '"/>' +
 
-         '</object>'
 
-       flashBridge = tmpDiv.firstChild
 
-       tmpDiv = null
 
-       flashBridge.ZeroClipboard = ZeroClipboard
 
-       container.replaceChild(flashBridge, divToBeReplaced)
 
-     }
 
-     if (!flashBridge) {
 
-       flashBridge = document['global-zeroclipboard-flash-bridge']
 
-       if (flashBridge && (len = flashBridge.length)) {
 
-         flashBridge = flashBridge[len - 1]
 
-       }
 
-       if (!flashBridge) {
 
-         flashBridge = container.firstChild
 
-       }
 
-     }
 
-     _flashState.bridge = flashBridge || null
 
-   }
 
-   var _createHtmlBridge = function () {
 
-     var container = document.createElement('div')
 
-     container.id = 'global-zeroclipboard-html-bridge'
 
-     container.className = 'global-zeroclipboard-container'
 
-     container.style.position = 'absolute'
 
-     container.style.left = '0px'
 
-     container.style.top = '-9999px'
 
-     container.style.width = '1px'
 
-     container.style.height = '1px'
 
-     container.style.zIndex = '' + _getSafeZIndex(_globalConfig.zIndex)
 
-     return container
 
-   }
 
-   var _getHtmlBridge = function (flashBridge) {
 
-     var htmlBridge = flashBridge && flashBridge.parentNode
 
-     while (htmlBridge && htmlBridge.nodeName === 'OBJECT' && htmlBridge.parentNode) {
 
-       htmlBridge = htmlBridge.parentNode
 
-     }
 
-     return htmlBridge || null
 
-   }
 
-   var _reposition = function () {
 
-     if (_currentElement) {
 
-       var pos = _getDOMObjectPosition(_currentElement, _globalConfig.zIndex)
 
-       var htmlBridge = _getHtmlBridge(_flashState.bridge)
 
-       if (htmlBridge) {
 
-         htmlBridge.style.top = pos.top + 'px'
 
-         htmlBridge.style.left = pos.left + 'px'
 
-         htmlBridge.style.width = pos.width + 'px'
 
-         htmlBridge.style.height = pos.height + 'px'
 
-         htmlBridge.style.zIndex = pos.zIndex + 1
 
-       }
 
-       _setSize(pos.width, pos.height)
 
-     }
 
-   }
 
-   var _setSize = function (width, height) {
 
-     var htmlBridge = _getHtmlBridge(_flashState.bridge)
 
-     if (htmlBridge) {
 
-       htmlBridge.style.width = width + 'px'
 
-       htmlBridge.style.height = height + 'px'
 
-     }
 
-   }
 
-   ZeroClipboard.emit = function (event) {
 
-     var eventType, eventObj, performCallbackAsync, clients, i, len, eventCopy, returnVal, tmp
 
-     if (typeof event === 'string' && event) {
 
-       eventType = event
 
-     }
 
-     if (typeof event === 'object' && event && typeof event.type === 'string' && event.type) {
 
-       eventType = event.type
 
-       eventObj = event
 
-     }
 
-     if (!eventType) {
 
-       return
 
-     }
 
-     event = _createEvent(eventType, eventObj)
 
-     _preprocessEvent(event)
 
-     if (event.type === 'ready' && _flashState.overdue === true) {
 
-       return ZeroClipboard.emit({
 
-         type: 'error',
 
-         name: 'flash-overdue'
 
-       })
 
-     }
 
-     performCallbackAsync = !/^(before)?copy$/.test(event.type)
 
-     if (event.client) {
 
-       _dispatchClientCallbacks.call(event.client, event, performCallbackAsync)
 
-     } else {
 
-       clients =
 
-         event.target && event.target !== window && _globalConfig.autoActivate === true
 
-           ? _getAllClientsClippedToElement(event.target)
 
-           : _getAllClients()
 
-       for (i = 0, len = clients.length; i < len; i++) {
 
-         eventCopy = _extend({}, event, {
 
-           client: clients[i]
 
-         })
 
-         _dispatchClientCallbacks.call(clients[i], eventCopy, performCallbackAsync)
 
-       }
 
-     }
 
-     if (event.type === 'copy') {
 
-       tmp = _mapClipDataToFlash(_clipData)
 
-       returnVal = tmp.data
 
-       _clipDataFormatMap = tmp.formatMap
 
-     }
 
-     return returnVal
 
-   }
 
-   var _dispatchClientCallbacks = function (event, async) {
 
-     var handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers[event.type]
 
-     if (handlers && handlers.length) {
 
-       var i,
 
-         len,
 
-         func,
 
-         context,
 
-         originalContext = this
 
-       for (i = 0, len = handlers.length; i < len; i++) {
 
-         func = handlers[i]
 
-         context = originalContext
 
-         if (typeof func === 'string' && typeof window[func] === 'function') {
 
-           func = window[func]
 
-         }
 
-         if (typeof func === 'object' && func && typeof func.handleEvent === 'function') {
 
-           context = func
 
-           func = func.handleEvent
 
-         }
 
-         if (typeof func === 'function') {
 
-           _dispatchCallback(func, context, [event], async)
 
-         }
 
-       }
 
-     }
 
-     return this
 
-   }
 
-   var _eventMessages = {
 
-     ready: 'Flash communication is established',
 
-     error: {
 
-       'flash-disabled': 'Flash is disabled or not installed',
 
-       'flash-outdated': 'Flash is too outdated to support ZeroClipboard',
 
-       'flash-unavailable': 'Flash is unable to communicate bidirectionally with JavaScript',
 
-       'flash-deactivated':
 
-         'Flash is too outdated for your browser and/or is configured as click-to-activate',
 
-       'flash-overdue':
 
-         'Flash communication was established but NOT within the acceptable time limit'
 
-     }
 
-   }
 
-   var _createEvent = function (eventType, event) {
 
-     if (!(eventType || (event && event.type))) {
 
-       return
 
-     }
 
-     event = event || {}
 
-     eventType = (eventType || event.type).toLowerCase()
 
-     _extend(event, {
 
-       type: eventType,
 
-       target: event.target || _currentElement || null,
 
-       relatedTarget: event.relatedTarget || null,
 
-       currentTarget: (_flashState && _flashState.bridge) || null
 
-     })
 
-     var msg = _eventMessages[event.type]
 
-     if (event.type === 'error' && event.name && msg) {
 
-       msg = msg[event.name]
 
-     }
 
-     if (msg) {
 
-       event.message = msg
 
-     }
 
-     if (event.type === 'ready') {
 
-       _extend(event, {
 
-         target: null,
 
-         version: _flashState.version
 
-       })
 
-     }
 
-     if (event.type === 'error') {
 
-       event.target = null
 
-       if (/^flash-(outdated|unavailable|deactivated|overdue)$/.test(event.name)) {
 
-         _extend(event, {
 
-           version: _flashState.version,
 
-           minimumVersion: '11.0.0'
 
-         })
 
-       }
 
-     }
 
-     if (event.type === 'copy') {
 
-       event.clipboardData = {
 
-         setData: ZeroClipboard.setData,
 
-         clearData: ZeroClipboard.clearData
 
-       }
 
-     }
 
-     if (event.type === 'aftercopy') {
 
-       event = _mapClipResultsFromFlash(event, _clipDataFormatMap)
 
-     }
 
-     if (event.target && !event.relatedTarget) {
 
-       event.relatedTarget = _getRelatedTarget(event.target)
 
-     }
 
-     return event
 
-   }
 
-   var _getRelatedTarget = function (targetEl) {
 
-     var relatedTargetId =
 
-       targetEl && targetEl.getAttribute && targetEl.getAttribute('data-clipboard-target')
 
-     return relatedTargetId ? document.getElementById(relatedTargetId) : null
 
-   }
 
-   var _preprocessEvent = function (event) {
 
-     var element = event.target || _currentElement
 
-     switch (event.type) {
 
-       case 'error':
 
-         if (
 
-           _inArray(event.name, [
 
-             'flash-disabled',
 
-             'flash-outdated',
 
-             'flash-deactivated',
 
-             'flash-overdue'
 
-           ])
 
-         ) {
 
-           _extend(_flashState, {
 
-             disabled: event.name === 'flash-disabled',
 
-             outdated: event.name === 'flash-outdated',
 
-             unavailable: event.name === 'flash-unavailable',
 
-             deactivated: event.name === 'flash-deactivated',
 
-             overdue: event.name === 'flash-overdue',
 
-             ready: false
 
-           })
 
-         }
 
-         break
 
-       case 'ready':
 
-         var wasDeactivated = _flashState.deactivated === true
 
-         _extend(_flashState, {
 
-           disabled: false,
 
-           outdated: false,
 
-           unavailable: false,
 
-           deactivated: false,
 
-           overdue: wasDeactivated,
 
-           ready: !wasDeactivated
 
-         })
 
-         break
 
-       case 'copy':
 
-         var textContent,
 
-           htmlContent,
 
-           targetEl = event.relatedTarget
 
-         if (
 
-           !(_clipData['text/html'] || _clipData['text/plain']) &&
 
-           targetEl &&
 
-           (htmlContent = targetEl.value || targetEl.outerHTML || targetEl.innerHTML) &&
 
-           (textContent = targetEl.value || targetEl.textContent || targetEl.innerText)
 
-         ) {
 
-           event.clipboardData.clearData()
 
-           event.clipboardData.setData('text/plain', textContent)
 
-           if (htmlContent !== textContent) {
 
-             event.clipboardData.setData('text/html', htmlContent)
 
-           }
 
-         } else if (
 
-           !_clipData['text/plain'] &&
 
-           event.target &&
 
-           (textContent = event.target.getAttribute('data-clipboard-text'))
 
-         ) {
 
-           event.clipboardData.clearData()
 
-           event.clipboardData.setData('text/plain', textContent)
 
-         }
 
-         break
 
-       case 'aftercopy':
 
-         ZeroClipboard.clearData()
 
-         if (element && element !== _safeActiveElement() && element.focus) {
 
-           element.focus()
 
-         }
 
-         break
 
-       case 'mouseover':
 
-         _addClass(element, _globalConfig.hoverClass)
 
-         break
 
-       case 'mouseout':
 
-         if (_globalConfig.autoActivate === true) {
 
-           ZeroClipboard.deactivate()
 
-         }
 
-         break
 
-       case 'mousedown':
 
-         _addClass(element, _globalConfig.activeClass)
 
-         break
 
-       case 'mouseup':
 
-         _removeClass(element, _globalConfig.activeClass)
 
-         break
 
-     }
 
-   }
 
-   ZeroClipboard.prototype.on = function (eventName, func) {
 
-     var i,
 
-       len,
 
-       events,
 
-       added = {},
 
-       handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers
 
-     if (typeof eventName === 'string' && eventName) {
 
-       events = eventName.toLowerCase().split(/\s+/)
 
-     } else if (typeof eventName === 'object' && eventName && typeof func === 'undefined') {
 
-       for (i in eventName) {
 
-         if (
 
-           eventName.hasOwnProperty(i) &&
 
-           typeof i === 'string' &&
 
-           i &&
 
-           typeof eventName[i] === 'function'
 
-         ) {
 
-           this.on(i, eventName[i])
 
-         }
 
-       }
 
-     }
 
-     if (events && events.length) {
 
-       for (i = 0, len = events.length; i < len; i++) {
 
-         eventName = events[i].replace(/^on/, '')
 
-         added[eventName] = true
 
-         if (!handlers[eventName]) {
 
-           handlers[eventName] = []
 
-         }
 
-         handlers[eventName].push(func)
 
-       }
 
-       if (added.ready && _flashState.ready) {
 
-         ZeroClipboard.emit({
 
-           type: 'ready',
 
-           client: this
 
-         })
 
-       }
 
-       if (added.error) {
 
-         var errorTypes = ['disabled', 'outdated', 'unavailable', 'deactivated', 'overdue']
 
-         for (i = 0, len = errorTypes.length; i < len; i++) {
 
-           if (_flashState[errorTypes[i]]) {
 
-             ZeroClipboard.emit({
 
-               type: 'error',
 
-               name: 'flash-' + errorTypes[i],
 
-               client: this
 
-             })
 
-             break
 
-           }
 
-         }
 
-       }
 
-     }
 
-     return this
 
-   }
 
-   ZeroClipboard.prototype.off = function (eventName, func) {
 
-     var i,
 
-       len,
 
-       foundIndex,
 
-       events,
 
-       perEventHandlers,
 
-       handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers
 
-     if (arguments.length === 0) {
 
-       events = _objectKeys(handlers)
 
-     } else if (typeof eventName === 'string' && eventName) {
 
-       events = eventName.split(/\s+/)
 
-     } else if (typeof eventName === 'object' && eventName && typeof func === 'undefined') {
 
-       for (i in eventName) {
 
-         if (
 
-           eventName.hasOwnProperty(i) &&
 
-           typeof i === 'string' &&
 
-           i &&
 
-           typeof eventName[i] === 'function'
 
-         ) {
 
-           this.off(i, eventName[i])
 
-         }
 
-       }
 
-     }
 
-     if (events && events.length) {
 
-       for (i = 0, len = events.length; i < len; i++) {
 
-         eventName = events[i].toLowerCase().replace(/^on/, '')
 
-         perEventHandlers = handlers[eventName]
 
-         if (perEventHandlers && perEventHandlers.length) {
 
-           if (func) {
 
-             foundIndex = _inArray(func, perEventHandlers)
 
-             while (foundIndex !== -1) {
 
-               perEventHandlers.splice(foundIndex, 1)
 
-               foundIndex = _inArray(func, perEventHandlers, foundIndex)
 
-             }
 
-           } else {
 
-             handlers[eventName].length = 0
 
-           }
 
-         }
 
-       }
 
-     }
 
-     return this
 
-   }
 
-   ZeroClipboard.prototype.handlers = function (eventName) {
 
-     var prop,
 
-       copy = null,
 
-       handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers
 
-     if (handlers) {
 
-       if (typeof eventName === 'string' && eventName) {
 
-         return handlers[eventName] ? handlers[eventName].slice(0) : null
 
-       }
 
-       copy = {}
 
-       for (prop in handlers) {
 
-         if (handlers.hasOwnProperty(prop) && handlers[prop]) {
 
-           copy[prop] = handlers[prop].slice(0)
 
-         }
 
-       }
 
-     }
 
-     return copy
 
-   }
 
-   ZeroClipboard.prototype.clip = function (elements) {
 
-     elements = _prepClip(elements)
 
-     for (var i = 0; i < elements.length; i++) {
 
-       if (elements.hasOwnProperty(i) && elements[i] && elements[i].nodeType === 1) {
 
-         if (!elements[i].zcClippingId) {
 
-           elements[i].zcClippingId = 'zcClippingId_' + _elementIdCounter++
 
-           _elementMeta[elements[i].zcClippingId] = [this.id]
 
-           if (_globalConfig.autoActivate === true) {
 
-             _addEventHandler(elements[i], 'mouseover', _elementMouseOver)
 
-           }
 
-         } else if (_inArray(this.id, _elementMeta[elements[i].zcClippingId]) === -1) {
 
-           _elementMeta[elements[i].zcClippingId].push(this.id)
 
-         }
 
-         var clippedElements = _clientMeta[this.id].elements
 
-         if (_inArray(elements[i], clippedElements) === -1) {
 
-           clippedElements.push(elements[i])
 
-         }
 
-       }
 
-     }
 
-     return this
 
-   }
 
-   ZeroClipboard.prototype.unclip = function (elements) {
 
-     var meta = _clientMeta[this.id]
 
-     if (!meta) {
 
-       return this
 
-     }
 
-     var clippedElements = meta.elements
 
-     var arrayIndex
 
-     if (typeof elements === 'undefined') {
 
-       elements = clippedElements.slice(0)
 
-     } else {
 
-       elements = _prepClip(elements)
 
-     }
 
-     for (var i = elements.length; i--; ) {
 
-       if (elements.hasOwnProperty(i) && elements[i] && elements[i].nodeType === 1) {
 
-         arrayIndex = 0
 
-         while ((arrayIndex = _inArray(elements[i], clippedElements, arrayIndex)) !== -1) {
 
-           clippedElements.splice(arrayIndex, 1)
 
-         }
 
-         var clientIds = _elementMeta[elements[i].zcClippingId]
 
-         if (clientIds) {
 
-           arrayIndex = 0
 
-           while ((arrayIndex = _inArray(this.id, clientIds, arrayIndex)) !== -1) {
 
-             clientIds.splice(arrayIndex, 1)
 
-           }
 
-           if (clientIds.length === 0) {
 
-             if (_globalConfig.autoActivate === true) {
 
-               _removeEventHandler(elements[i], 'mouseover', _elementMouseOver)
 
-             }
 
-             delete elements[i].zcClippingId
 
-           }
 
-         }
 
-       }
 
-     }
 
-     return this
 
-   }
 
-   ZeroClipboard.prototype.elements = function () {
 
-     var meta = _clientMeta[this.id]
 
-     return meta && meta.elements ? meta.elements.slice(0) : []
 
-   }
 
-   var _getAllClientsClippedToElement = function (element) {
 
-     var elementMetaId,
 
-       clientIds,
 
-       i,
 
-       len,
 
-       client,
 
-       clients = []
 
-     if (
 
-       element &&
 
-       element.nodeType === 1 &&
 
-       (elementMetaId = element.zcClippingId) &&
 
-       _elementMeta.hasOwnProperty(elementMetaId)
 
-     ) {
 
-       clientIds = _elementMeta[elementMetaId]
 
-       if (clientIds && clientIds.length) {
 
-         for (i = 0, len = clientIds.length; i < len; i++) {
 
-           client = _clientMeta[clientIds[i]].instance
 
-           if (client && client instanceof ZeroClipboard) {
 
-             clients.push(client)
 
-           }
 
-         }
 
-       }
 
-     }
 
-     return clients
 
-   }
 
-   _globalConfig.hoverClass = 'zeroclipboard-is-hover'
 
-   _globalConfig.activeClass = 'zeroclipboard-is-active'
 
-   if (typeof define === 'function' && define.amd) {
 
-     define(function () {
 
-       return ZeroClipboard
 
-     })
 
-   } else if (
 
-     typeof module === 'object' &&
 
-     module &&
 
-     typeof module.exports === 'object' &&
 
-     module.exports
 
-   ) {
 
-     module.exports = ZeroClipboard
 
-   } else {
 
-     window.ZeroClipboard = ZeroClipboard
 
-   }
 
- })(
 
-   (function () {
 
-     return this
 
-   })()
 
- )
 
 
  |