{"version":3,"file":"icheck.min.js","sources":["icheck.js"],"sourcesContent":["/* eslint-disable */\r\n/*!\r\n * iCheck v2.0.0 rc1, http://git.io/arlzeA\r\n * =======================================\r\n * Cross-platform checkboxes and radio buttons customization\r\n *\r\n * (c) Damir Sultanov - http://fronteed.com\r\n * MIT Licensed\r\n */\r\n/*!\r\n * Alecta version modifierad f�r bak�tkompabilitet med version 1.0.2:\r\n * 1. Plugin namn �ndrat fr�n icheck till iCheck\r\n * 2. Metod namn �ndrat fr�n checked/unchecked till check/uncheck\r\n * 3, Rad 952: Fix f�r radioknappar: \r\n * https://github.com/fronteed/icheck/pull/345/commits/10452dbf00e8d8451bb52be1a9eef30d778f45e8\r\n */\r\n\r\n(function(win, doc, $) {\r\n\r\n // prevent multiple includes\r\n if (!win.ichecked) {\r\n win.ichecked = function() {\r\n $ = win.jQuery || win.Zepto;\r\n\r\n // default options\r\n var defaults = {\r\n\r\n // auto init on domready\r\n autoInit: true,\r\n\r\n // auto handle ajax loaded inputs\r\n autoAjax: false,\r\n\r\n // remove 300ms click delay on touch devices\r\n tap: true,\r\n\r\n // customization class names\r\n checkboxClass: 'icheckbox',\r\n radioClass: 'iradio',\r\n\r\n checkedClass: 'checked',\r\n disabledClass: 'disabled',\r\n indeterminateClass: 'indeterminate',\r\n\r\n hoverClass: 'hover',\r\n focusClass: 'focus',\r\n // activeClass: 'active',\r\n\r\n // default callbacks\r\n callbacks: {\r\n ifCreated: false\r\n },\r\n\r\n // appended class names\r\n classes: {\r\n base: 'icheck',\r\n div: '#-item', // {base}-item\r\n area: '#-area-', // {base}-area-{value}\r\n input: '#-input', // {base}-input\r\n label: '#-label' // {base}-label\r\n }\r\n };\r\n\r\n // extend default options\r\n win.iCheck = $.extend(defaults, win.iCheck);\r\n\r\n // useragent sniffing\r\n var ua = win.navigator.userAgent;\r\n var ie = /MSIE [5-8]/.test(ua) || doc.documentMode < 9;\r\n var operaMini = /Opera Mini/.test(ua);\r\n\r\n // classes cache\r\n var baseClass = defaults.classes.base;\r\n var divClass = defaults.classes.div.replace('#', baseClass);\r\n var areaClass = defaults.classes.area.replace('#', baseClass);\r\n var nodeClass = defaults.classes.input.replace('#', baseClass);\r\n var labelClass = defaults.classes.label.replace('#', baseClass);\r\n\r\n // unset init classes\r\n delete defaults.classes;\r\n\r\n // default filter\r\n var filter = 'input[type=checkbox],input[type=radio]';\r\n\r\n // clickable areas container\r\n var areas = {};\r\n\r\n // hashes container\r\n var hashes = {};\r\n\r\n // hash recognizer\r\n var recognizer = new RegExp(baseClass + '\\\\[(.*?)\\\\]');\r\n\r\n // hash extractor\r\n var extract = function(className, matches, value) {\r\n if (!!className) {\r\n matches = recognizer.exec(className);\r\n\r\n if (matches && hashes[matches[1]]) {\r\n value = matches[1];\r\n }\r\n }\r\n\r\n return value;\r\n };\r\n\r\n // detect computed style support\r\n var computed = win.getComputedStyle;\r\n\r\n // detect pointer events support\r\n var isPointer = win.PointerEvent || win.MSPointerEvent;\r\n\r\n // detect touch events support\r\n var isTouch = 'ontouchend' in win;\r\n\r\n // detect mobile users\r\n var isMobile = /mobile|tablet|phone|ip(ad|od)|android|silk|webos/i.test(ua);\r\n\r\n // setup events\r\n var mouse = ['mouse', 'down', 'up', 'over', 'out']; // bubbling hover\r\n var pointer = win.PointerEvent ? ['pointer', mouse[1], mouse[2], mouse[3], mouse[4]] : ['MSPointer', 'Down', 'Up', 'Over', 'Out'];\r\n var touch = ['touch', 'start', 'end'];\r\n var noMouse = (isTouch && isMobile) || isPointer;\r\n\r\n // choose events\r\n var hoverStart = noMouse ? (isTouch ? touch[0] + touch[1] : pointer[0] + pointer[3]) : mouse[0] + mouse[3];\r\n var hoverEnd = noMouse ? (isTouch ? touch[0] + touch[2] : pointer[0] + pointer[4]) : mouse[0] + mouse[4];\r\n var tapStart = noMouse ? (isTouch ? false : pointer[0] + pointer[1]) : mouse[0] + mouse[1];\r\n var tapEnd = noMouse ? (isTouch ? false : pointer[0] + pointer[2]) : mouse[0] + mouse[2];\r\n var hover = !operaMini ? hoverStart + '.i ' + hoverEnd + '.i ' : '';\r\n var tap = !operaMini && tapStart ? tapStart + '.i ' + tapEnd + '.i' : '';\r\n\r\n // styles options\r\n var styleTag;\r\n var styleList;\r\n var styleArea = defaults.areaStyle !== false ? 'position:absolute;display:block;content:\"\";top:#;bottom:#;left:#;right:#;' : 0;\r\n var styleInput = 'position:absolute!;display:block!;outline:none!;' + (defaults.debug ? '' : 'opacity:0!;z-index:-99!;clip:rect(0 0 0 0)!;');\r\n\r\n // styles addition\r\n var style = function(rules, selector, area) {\r\n if (!styleTag) {\r\n\r\n // create container\r\n styleTag = doc.createElement('style');\r\n\r\n // append to header\r\n (doc.head || doc.getElementsByTagName('head')[0]).appendChild(styleTag);\r\n\r\n // webkit hack\r\n if (!win.createPopup) {\r\n styleTag.appendChild(doc.createTextNode(''));\r\n }\r\n\r\n styleList = styleTag.sheet || styleTag.styleSheet;\r\n }\r\n\r\n // choose selector\r\n if (!selector) {\r\n selector = 'div.' + (area ? areaClass + area + ':after' : divClass + ' input.' + nodeClass);\r\n }\r\n\r\n // replace shorthand rules\r\n rules = rules.replace(/!/g, ' !important');\r\n\r\n // append styles\r\n if (styleList.addRule) {\r\n styleList.addRule(selector, rules, 0);\r\n } else {\r\n styleList.insertRule(selector + '{' + rules + '}', 0);\r\n }\r\n };\r\n\r\n // append input's styles\r\n style(styleInput);\r\n\r\n // append styler's styles\r\n if ((isTouch && isMobile) || operaMini) {\r\n\r\n // force custor:pointer for mobile devices\r\n style('cursor:pointer!;', 'label.' + labelClass + ',div.' + divClass);\r\n }\r\n\r\n // append iframe's styles\r\n style('display:none!', 'iframe.icheck-frame'); // used to handle ajax-loaded inputs\r\n\r\n // class toggler\r\n var toggle = function(node, className, status, currentClass, updatedClass, addClass, removeClass) {\r\n currentClass = node.className;\r\n\r\n if (!!currentClass) {\r\n updatedClass = ' ' + currentClass + ' ';\r\n\r\n // add class\r\n if (status === 1) {\r\n addClass = className;\r\n\r\n // remove class\r\n } else if (status === 0) {\r\n removeClass = className;\r\n\r\n // add and remove class\r\n } else {\r\n addClass = className[0];\r\n removeClass = className[1];\r\n }\r\n\r\n // add class\r\n if (!!addClass && updatedClass.indexOf(' ' + addClass + ' ') < 0) {\r\n updatedClass += addClass + ' ';\r\n }\r\n\r\n // remove class\r\n if (!!removeClass && ~updatedClass.indexOf(' ' + removeClass + ' ')) {\r\n updatedClass = updatedClass.replace(' ' + removeClass + ' ', ' ');\r\n }\r\n\r\n // trim class\r\n updatedClass = updatedClass.replace(/^\\s+|\\s+$/g, '');\r\n\r\n // update class\r\n if (updatedClass !== currentClass) {\r\n node.className = updatedClass;\r\n }\r\n\r\n // return updated class\r\n return updatedClass;\r\n }\r\n };\r\n\r\n // traces remover\r\n var tidy = function(node, key, trigger, settings, className, parent) {\r\n if (hashes[key]) {\r\n settings = hashes[key];\r\n className = settings.className;\r\n parent = $(closest(node, 'div', className));\r\n\r\n // prevent overlapping\r\n if (parent.length) {\r\n\r\n // input\r\n $(node).removeClass(nodeClass + ' ' + className).attr('style', settings.style);\r\n\r\n // label\r\n $('label.' + settings.esc).removeClass(labelClass + ' ' + className);\r\n\r\n // parent\r\n $(parent).replaceWith($(node));\r\n\r\n // callback\r\n if (trigger) {\r\n callback(node, key, trigger);\r\n }\r\n }\r\n\r\n // unset current key\r\n hashes[key] = false;\r\n }\r\n };\r\n\r\n // nodes inspector\r\n var inspect = function(object, node, stack, direct, indirect) {\r\n stack = [];\r\n direct = object.length;\r\n\r\n // inspect object\r\n while (direct--) {\r\n node = object[direct];\r\n\r\n // direct input\r\n if (node.type) {\r\n\r\n // checkbox or radio button\r\n if (~filter.indexOf(node.type)) {\r\n stack.push(node);\r\n }\r\n\r\n // indirect input\r\n } else {\r\n node = $(node).find(filter);\r\n indirect = node.length;\r\n\r\n while (indirect--) {\r\n stack.push(node[indirect]);\r\n }\r\n }\r\n }\r\n\r\n return stack;\r\n };\r\n\r\n // parent searcher\r\n var closest = function(node, tag, className, parent) {\r\n while (node && node.nodeType !== 9) {\r\n node = node.parentNode;\r\n\r\n if (node && node.tagName == tag.toUpperCase() && ~node.className.indexOf(className)) {\r\n parent = node;\r\n break;\r\n }\r\n }\r\n\r\n return parent;\r\n };\r\n\r\n // callbacks farm\r\n var callback = function(node, key, name) {\r\n name = 'if' + name;\r\n\r\n // callbacks are allowed\r\n if (!!hashes[key].callbacks) {\r\n\r\n // indirect callback\r\n if (hashes[key].callbacks[name] !== false) {\r\n $(node).trigger(name);\r\n\r\n // direct callback\r\n if (typeof hashes[key].callbacks[name] == 'function') {\r\n hashes[key].callbacks[name](node, hashes[key]);\r\n }\r\n }\r\n }\r\n };\r\n\r\n // selection processor\r\n var process = function(data, options, ajax, silent) {\r\n\r\n // get inputs\r\n var elements = inspect(data);\r\n var element = elements.length;\r\n\r\n // loop through inputs\r\n while (element--) {\r\n var node = elements[element];\r\n var nodeAttr = node.attributes;\r\n var nodeAttrCache = {};\r\n var nodeAttrLength = nodeAttr.length;\r\n var nodeAttrName;\r\n var nodeAttrValue;\r\n var nodeData = {};\r\n var nodeDataCache = {}; // merged data\r\n var nodeDataProperty;\r\n var nodeId = node.id;\r\n var nodeInherit;\r\n var nodeInheritItem;\r\n var nodeInheritLength;\r\n var nodeString = node.className;\r\n var nodeStyle;\r\n var nodeType = node.type;\r\n var queryData = $.cache ? $.cache[node[$.expando]] : 0; // cached data\r\n var settings;\r\n var key = extract(nodeString);\r\n var keyClass;\r\n var handle;\r\n var styler;\r\n var stylerClass = '';\r\n var stylerStyle;\r\n var area = false;\r\n var label;\r\n var labelDirect;\r\n var labelIndirect;\r\n var labelKey;\r\n var labelString;\r\n var labels = [];\r\n var labelsLength;\r\n var fastClass = win.FastClick ? ' needsclick' : '';\r\n\r\n // parse options from HTML attributes\r\n while (nodeAttrLength--) {\r\n nodeAttrName = nodeAttr[nodeAttrLength].name;\r\n nodeAttrValue = nodeAttr[nodeAttrLength].value;\r\n\r\n if (~nodeAttrName.indexOf('data-')) {\r\n nodeData[nodeAttrName.substr(5)] = nodeAttrValue;\r\n }\r\n\r\n if (nodeAttrName == 'style') {\r\n nodeStyle = nodeAttrValue;\r\n }\r\n\r\n nodeAttrCache[nodeAttrName] = nodeAttrValue;\r\n }\r\n\r\n // parse options from jQuery or Zepto cache\r\n if (queryData && queryData.data) {\r\n nodeData = $.extend(nodeData, queryData.data);\r\n }\r\n\r\n // parse merged options\r\n for (nodeDataProperty in nodeData) {\r\n nodeAttrValue = nodeData[nodeDataProperty];\r\n\r\n if (nodeAttrValue == 'true' || nodeAttrValue == 'false') {\r\n nodeAttrValue = nodeAttrValue == 'true';\r\n }\r\n\r\n nodeDataCache[nodeDataProperty.replace(/checkbox|radio|class|id|label/g, function(string, position) {\r\n return position === 0 ? string : string.charAt(0).toUpperCase() + string.slice(1);\r\n })] = nodeAttrValue;\r\n }\r\n\r\n // merge options\r\n settings = $.extend({}, defaults, win.iCheck, nodeDataCache, options);\r\n\r\n // input type filter\r\n handle = settings.handle;\r\n\r\n if (handle !== 'checkbox' && handle !== 'radio') {\r\n handle = filter;\r\n }\r\n\r\n // prevent unwanted init\r\n if (settings.init !== false && ~handle.indexOf(nodeType)) {\r\n\r\n // tidy before processing\r\n if (key) {\r\n tidy(node, key);\r\n }\r\n\r\n // generate random key\r\n while(!hashes[key]) {\r\n key = Math.random().toString(36).substr(2, 5); // 5 symbols\r\n\r\n if (!hashes[key]) {\r\n keyClass = baseClass + '[' + key + ']';\r\n break;\r\n }\r\n }\r\n\r\n // prevent unwanted duplicates\r\n delete settings.autoInit;\r\n delete settings.autoAjax;\r\n\r\n // save settings\r\n settings.style = nodeStyle || '';\r\n settings.className = keyClass;\r\n settings.esc = keyClass.replace(/(\\[|\\])/g, '\\\\$1');\r\n hashes[key] = settings;\r\n\r\n // find direct label\r\n labelDirect = closest(node, 'label', '');\r\n\r\n if (labelDirect) {\r\n\r\n // normalize \"for\" attribute\r\n if (!!!labelDirect.htmlFor && !!nodeId) {\r\n labelDirect.htmlFor = nodeId;\r\n }\r\n\r\n labels.push(labelDirect);\r\n }\r\n\r\n // find indirect label\r\n if (!!nodeId) {\r\n labelIndirect = $('label[for=\"' + nodeId + '\"]');\r\n\r\n // merge labels\r\n while (labelIndirect.length--) {\r\n label = labelIndirect[labelIndirect.length];\r\n\r\n if (label !== labelDirect) {\r\n labels.push(label);\r\n }\r\n }\r\n }\r\n\r\n // loop through labels\r\n labelsLength = labels.length;\r\n\r\n while (labelsLength--) {\r\n label = labels[labelsLength];\r\n labelString = label.className;\r\n labelKey = extract(labelString);\r\n\r\n // remove previous key\r\n if (labelKey) {\r\n labelString = toggle(label, baseClass + '[' + labelKey + ']', 0);\r\n } else {\r\n labelString = (!!labelString ? labelString + ' ' : '') + labelClass;\r\n }\r\n\r\n // update label's class\r\n label.className = labelString + ' ' + keyClass + fastClass;\r\n }\r\n\r\n // prepare styler\r\n styler = doc.createElement('div');\r\n\r\n // parse inherited options\r\n if (!!settings.inherit) {\r\n nodeInherit = settings.inherit.split(/\\s*,\\s*/);\r\n nodeInheritLength = nodeInherit.length;\r\n\r\n while (nodeInheritLength--) {\r\n nodeInheritItem = nodeInherit[nodeInheritLength];\r\n\r\n if (nodeAttrCache[nodeInheritItem] !== undefined) {\r\n if (nodeInheritItem == 'class') {\r\n stylerClass += nodeAttrCache[nodeInheritItem] + ' ';\r\n } else {\r\n styler.setAttribute(nodeInheritItem, nodeInheritItem == 'id' ? baseClass + '-' + nodeAttrCache[nodeInheritItem] : nodeAttrCache[nodeInheritItem]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // set input's type class\r\n stylerClass += settings[nodeType + 'Class'];\r\n\r\n // set styler's key\r\n stylerClass += ' ' + divClass + ' ' + keyClass;\r\n\r\n // append area styles\r\n if (settings.area && styleArea) {\r\n area = ('' + settings.area).replace(/%|px|em|\\+|-/g, '') | 0;\r\n\r\n if (area) {\r\n\r\n // append area's styles\r\n if (!areas[area]) {\r\n style(styleArea.replace(/#/g, '-' + area + '%'), false, area);\r\n areas[area] = true;\r\n }\r\n\r\n stylerClass += ' ' + areaClass + area;\r\n }\r\n }\r\n\r\n // update styler's class\r\n styler.className = stylerClass + fastClass;\r\n\r\n // update node's class\r\n node.className = (!!nodeString ? nodeString + ' ' : '') + nodeClass + ' ' + keyClass;\r\n\r\n // replace node\r\n node.parentNode.replaceChild(styler, node);\r\n\r\n // append node\r\n styler.appendChild(node);\r\n\r\n // append additions\r\n if (!!settings.insert) {\r\n $(styler).append(settings.insert);\r\n }\r\n\r\n // set relative position\r\n if (area) {\r\n\r\n // get styler's position\r\n if (computed) {\r\n stylerStyle = computed(styler, null).getPropertyValue('position');\r\n } else {\r\n stylerStyle = styler.currentStyle.position;\r\n }\r\n\r\n // update styler's position\r\n if (stylerStyle == 'static') {\r\n styler.style.position = 'relative';\r\n }\r\n }\r\n\r\n // operate\r\n operate(node, styler, key, 'updated', true, false, ajax);\r\n hashes[key].done = true;\r\n\r\n // ifCreated callback\r\n if (!silent) {\r\n callback(node, key, 'Created');\r\n }\r\n }\r\n }\r\n };\r\n\r\n // operations center\r\n var operate = function(node, parent, key, method, silent, before, ajax) {\r\n var settings = hashes[key];\r\n var states = {};\r\n var changes = {};\r\n\r\n // current states\r\n states.checked = [node.checked, 'Checked', 'Unchecked'];\r\n\r\n if ((!before || ajax) && method !== 'click') {\r\n states.disabled = [node.disabled, 'Disabled', 'Enabled'];\r\n states.indeterminate = [node.getAttribute('indeterminate') == 'true' || !!node.indeterminate, 'Indeterminate', 'Determinate'];\r\n }\r\n\r\n // methods\r\n if (method == 'updated' || method == 'click') {\r\n changes.checked = before ? !states.checked[0] : states.checked[0];\r\n\r\n if ((!before || ajax) && method !== 'click') {\r\n changes.disabled = states.disabled[0];\r\n changes.indeterminate = states.indeterminate[0];\r\n }\r\n\r\n } else if (method == 'check' || method == 'uncheck') {\r\n changes.checked = method == 'check';\r\n\r\n } else if (method == 'disabled' || method == 'enabled') {\r\n changes.disabled = method == 'disabled';\r\n\r\n } else if (method == 'indeterminate' || method == 'determinate') {\r\n changes.indeterminate = method !== 'determinate';\r\n\r\n // \"toggle\" method\r\n } else {\r\n changes.checked = !states.checked[0];\r\n }\r\n\r\n // apply changes\r\n change(node, parent, states, changes, key, settings, method, silent, before, ajax);\r\n };\r\n\r\n // state changer\r\n var change = function(node, parent, states, changes, key, settings, method, silent, before, ajax, loop) {\r\n var type = node.type;\r\n var typeCapital = type == 'radio' ? 'Radio' : 'Checkbox';\r\n var property;\r\n var value;\r\n var classes;\r\n var inputClass;\r\n var label;\r\n var labelClass = 'LabelClass';\r\n var form;\r\n var radios;\r\n var radiosLength;\r\n var radio;\r\n var radioKey;\r\n var radioStates;\r\n var radioChanges;\r\n var changed;\r\n var toggled;\r\n\r\n // check parent\r\n if (!parent) {\r\n parent = closest(node, 'div', settings.className);\r\n }\r\n\r\n // continue if parent exists\r\n if (parent) {\r\n\r\n // detect changes\r\n for (property in changes) {\r\n value = changes[property];\r\n\r\n // update node's property\r\n if (states[property][0] !== value && method !== 'updated' && method !== 'click') {\r\n node[property] = value;\r\n }\r\n\r\n // update ajax attributes\r\n if (ajax) {\r\n if (value) {\r\n node.setAttribute(property, property);\r\n } else {\r\n node.removeAttribute(property);\r\n }\r\n }\r\n\r\n // update key's property\r\n if (settings[property] !== value) {\r\n settings[property] = value;\r\n changed = true;\r\n\r\n if (property == 'checked') {\r\n toggled = true;\r\n\r\n // find assigned radios\r\n if (!loop && value && (!!hashes[key].done || ajax) && type == 'radio' && !!node.name) {\r\n form = closest(node, 'form', '');\r\n radios = 'input[name=\"' + node.name + '\"]';\r\n radios = form && !ajax ? $(form).find(radios) : $(radios);\r\n radiosLength = radios.length;\r\n\r\n while (radiosLength--) {\r\n radio = radios[radiosLength];\r\n radioKey = extract(radio.className);\r\n\r\n // toggle radios\r\n if (node !== radio && hashes[radioKey] && hashes[radioKey].checked) {\r\n radioStates = {checked: [true, 'Checked', 'Unchecked']};\r\n radioChanges = {checked: false};\r\n\r\n change(radio, false, radioStates, radioChanges, radioKey, hashes[radioKey], 'updated', silent, before, ajax, true);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // cache classes\r\n classes = [\r\n settings[property + 'Class'], // 0, example: checkedClass\r\n settings[property + typeCapital + 'Class'], // 1, example: checkedCheckboxClass\r\n settings[states[property][1] + 'Class'], // 2, example: uncheckedClass\r\n settings[states[property][1] + typeCapital + 'Class'], // 3, example: uncheckedCheckboxClass\r\n settings[property + labelClass] // 4, example: checkedLabelClass\r\n ];\r\n\r\n // value == false\r\n inputClass = [classes[3] || classes[2], classes[1] || classes[0]];\r\n\r\n // value == true\r\n if (value) {\r\n inputClass.reverse();\r\n }\r\n\r\n // update parent's class\r\n toggle(parent, inputClass);\r\n\r\n // update labels's class\r\n if (!!settings.mirror && !!classes[4]) {\r\n label = $('label.' + settings.esc);\r\n\r\n while (label.length--) {\r\n toggle(label[label.length], classes[4], value ? 1 : 0);\r\n }\r\n }\r\n\r\n // callback\r\n if (!silent || loop) {\r\n callback(node, key, states[property][value ? 1 : 2]); // ifChecked or ifUnchecked\r\n }\r\n }\r\n }\r\n\r\n // additional callbacks\r\n if (!silent || loop) {\r\n if (changed) {\r\n callback(node, key, 'Changed'); // ifChanged\r\n }\r\n\r\n if (toggled) {\r\n callback(node, key, 'Toggled'); // ifToggled\r\n }\r\n }\r\n\r\n // cursor addition\r\n if (!!settings.cursor && !isMobile) {\r\n\r\n // 'pointer' for enabled\r\n if (!settings.disabled && !settings.pointer) {\r\n parent.style.cursor = 'pointer';\r\n settings.pointer = true;\r\n\r\n // 'default' for disabled\r\n } else if (settings.disabled && settings.pointer) {\r\n parent.style.cursor = 'default';\r\n settings.pointer = false;\r\n }\r\n }\r\n\r\n // update settings\r\n hashes[key] = settings;\r\n }\r\n };\r\n\r\n // plugin definition\r\n $.fn.iCheck = function(options, fire) {\r\n\r\n // detect methods\r\n if (/^(check|uncheck|indeterminate|determinate|disabled|enabled|updated|toggle|destroy|data|styler)$/.test(options)) {\r\n var items = inspect(this);\r\n var itemsLength = items.length;\r\n\r\n // loop through inputs\r\n while (itemsLength--) {\r\n var item = items[itemsLength];\r\n var key = extract(item.className);\r\n\r\n if (key) {\r\n\r\n // 'data' method\r\n if (options == 'data') {\r\n return hashes[key];\r\n\r\n // 'styler' method\r\n } else if (options == 'styler') {\r\n return closest(item, 'div', hashes[key].className);\r\n\r\n } else {\r\n if (options == 'destroy') {\r\n tidy(item, key, 'Destroyed');\r\n } else {\r\n operate(item, false, key, options);\r\n }\r\n\r\n // callback\r\n if (typeof fire == 'function') {\r\n fire(item);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // basic setup\r\n } else if (typeof options == 'object' || !options) {\r\n process(this, options || {});\r\n }\r\n\r\n // chain\r\n return this;\r\n };\r\n\r\n // cached last key\r\n var lastKey;\r\n\r\n // bind label and styler\r\n $(doc).on('click.i ' + hover + tap, 'label.' + labelClass + ',div.' + divClass, function(event) {\r\n var self = this;\r\n var key = extract(self.className);\r\n\r\n if (key) {\r\n var emitter = event.type;\r\n var settings = hashes[key];\r\n var className = settings.esc; // escaped class name\r\n var div = self.tagName == 'DIV';\r\n var input;\r\n var target;\r\n var partner;\r\n var activate;\r\n var states = [\r\n ['label', settings.activeLabelClass, settings.hoverLabelClass],\r\n ['div', settings.activeClass, settings.hoverClass]\r\n ];\r\n\r\n // reverse array\r\n if (div) {\r\n states.reverse();\r\n }\r\n\r\n // active state\r\n if (emitter == tapStart || emitter == tapEnd) {\r\n\r\n // toggle self's active class\r\n if (!!states[0][1]) {\r\n toggle(self, states[0][1], emitter == tapStart ? 1 : 0);\r\n }\r\n\r\n // toggle partner's active class\r\n if (!!settings.mirror && !!states[1][1]) {\r\n partner = $(states[1][0] + '.' + className);\r\n\r\n while (partner.length--) {\r\n toggle(partner[partner.length], states[1][1], emitter == tapStart ? 1 : 0);\r\n }\r\n }\r\n\r\n // fast click\r\n if (div && emitter == tapEnd && !!settings.tap && isMobile && isPointer && !operaMini) {\r\n activate = true;\r\n }\r\n\r\n // hover state\r\n } else if (emitter == hoverStart || emitter == hoverEnd) {\r\n\r\n // toggle self's hover class\r\n if (!!states[0][2]) {\r\n toggle(self, states[0][2], emitter == hoverStart ? 1 : 0);\r\n }\r\n\r\n // toggle partner's hover class\r\n if (!!settings.mirror && !!states[1][2]) {\r\n partner = $(states[1][0] + '.' + className);\r\n\r\n while (partner.length--) {\r\n toggle(partner[partner.length], states[1][2], emitter == hoverStart ? 1 : 0);\r\n }\r\n }\r\n\r\n // fast click\r\n if (div && emitter == hoverEnd && !!settings.tap && isMobile && isTouch && !operaMini) {\r\n activate = true;\r\n }\r\n\r\n // click\r\n } else if (div) {\r\n if (!(isMobile && (isTouch || isPointer)) || !!!settings.tap || operaMini) {\r\n activate = true;\r\n }\r\n }\r\n\r\n // trigger input's click\r\n if (activate) {\r\n\r\n // currentTarget hack\r\n setTimeout(function() {\r\n target = event.currentTarget || {};\r\n\r\n if (target.tagName !== 'LABEL') {\r\n if (!settings.change || (+new Date() - settings.change > 100)) {\r\n input = $(self).find('input.' + className).click();\r\n\r\n if (ie || operaMini) {\r\n input.change();\r\n }\r\n }\r\n }\r\n }, 2);\r\n }\r\n }\r\n\r\n // bind input\r\n }).on('click.i change.i focusin.i focusout.i keyup.i keydown.i', 'input.' + nodeClass, function(event) {\r\n var self = this;\r\n var key = extract(self.className);\r\n\r\n if (key) {\r\n var emitter = event.type;\r\n var settings = hashes[key];\r\n var className = settings.esc; // escaped class name\r\n var parent = emitter == 'click' ? false : closest(self, 'div', settings.className);\r\n var label;\r\n var states;\r\n\r\n // click\r\n if (emitter == 'click') {\r\n hashes[key].change = +new Date();\r\n\r\n // prevent event bubbling to parent\r\n event.stopPropagation();\r\n\r\n // change\r\n } else if (emitter == 'change') {\r\n\r\n if (parent && !self.disabled) {\r\n operate(self, parent, key, 'click'); // 'click' method\r\n }\r\n\r\n // focus state\r\n } else if (~emitter.indexOf('focus')) {\r\n states = [settings.focusClass, settings.focusLabelClass];\r\n\r\n // toggle parent's focus class\r\n if (!!states[0] && parent) {\r\n toggle(parent, states[0], emitter == 'focusin' ? 1 : 0);\r\n }\r\n\r\n // toggle label's focus class\r\n if (!!settings.mirror && !!states[1]) {\r\n label = $('label.' + className);\r\n\r\n while (label.length--) {\r\n toggle(label[label.length], states[1], emitter == 'focusin' ? 1 : 0);\r\n }\r\n }\r\n\r\n // keyup or keydown (event fired before state is changed, except Opera 9-12)\r\n } else if (parent && !self.disabled) {\r\n\r\n // keyup\r\n if (emitter == 'keyup') {\r\n\r\n // spacebar or arrow\r\n //if (self.type == 'checkbox' && event.keyCode == 32 && settings.keydown || self.type == 'radio' && !self.checked) {\r\n if ((self.type == 'checkbox' || self.type == 'radio') && event.keyCode == 32 && settings.keydown && !self.checked) {\r\n operate(self, parent, key, 'click', false, true); // 'toggle' method\r\n }\r\n\r\n hashes[key].keydown = false;\r\n hashes[lastKey] && (hashes[lastKey].keydown = false);\r\n\r\n // keydown\r\n } else {\r\n lastKey = key;\r\n hashes[key].keydown = true;\r\n }\r\n }\r\n }\r\n\r\n // domready\r\n }).ready(function() {\r\n\r\n // auto init\r\n if (win.iCheck.autoInit) {\r\n $('.' + baseClass).iCheck();\r\n }\r\n\r\n // auto ajax\r\n if (win.jQuery) {\r\n\r\n // body selector cache\r\n var body = doc.body || doc.getElementsByTagName('body')[0];\r\n\r\n // apply converter\r\n $.ajaxSetup({\r\n converters: {\r\n 'text html': function(data) {\r\n if (win.iCheck.autoAjax && body) {\r\n var frame = doc.createElement('iframe'); // create container\r\n var frameData;\r\n\r\n // set attributes\r\n if (!ie) {\r\n frame.style = 'display:none';\r\n }\r\n\r\n frame.className = 'iframe.icheck-frame';\r\n frame.src ='about:blank';\r\n\r\n // append container to document\r\n body.appendChild(frame);\r\n\r\n // save container's content\r\n frameData = frame.contentDocument ? frame.contentDocument : frame.contentWindow.document;\r\n\r\n // append data to content\r\n frameData.open();\r\n frameData.write(data);\r\n frameData.close();\r\n\r\n // remove container from document\r\n body.removeChild(frame);\r\n\r\n // setup object\r\n frameData = $(frameData);\r\n\r\n // customize inputs\r\n process(frameData.find('.' + baseClass), {}, true);\r\n\r\n // extract HTML\r\n frameData = frameData[0];\r\n data = (frameData.body || frameData.getElementsByTagName('body')[0]).innerHTML;\r\n frameData = null; // prevent memory leaks\r\n }\r\n\r\n return data;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n // expose iCheck as an AMD module\r\n if (typeof define == 'function' && define.amd) {\r\n define('iCheck', [win.jQuery ? 'jquery' : 'zepto'], win.ichecked);\r\n } else {\r\n win.ichecked();\r\n }\r\n }\r\n}(window, document));\r\n"],"names":["win","doc","$","ichecked","jQuery","Zepto","style","rules","selector","area","styleTag","createElement","head","getElementsByTagName","appendChild","createPopup","createTextNode","styleList","sheet","styleSheet","areaClass","divClass","nodeClass","replace","addRule","insertRule","tidy","node","key","trigger","settings","className","parent","hashes","closest","length","removeClass","attr","esc","labelClass","replaceWith","callback","inspect","object","stack","direct","indirect","type","filter","indexOf","push","find","process","data","options","ajax","silent","elements","element","nodeAttrName","nodeAttrValue","nodeDataProperty","nodeInherit","nodeInheritItem","nodeInheritLength","nodeStyle","keyClass","handle","styler","label","labelDirect","labelIndirect","labelKey","labelString","labelsLength","nodeAttr","attributes","nodeAttrCache","nodeAttrLength","nodeData","nodeDataCache","nodeId","id","nodeString","nodeType","queryData","cache","expando","extract","stylerClass","labels","fastClass","FastClick","name","value","substr","extend","string","position","charAt","toUpperCase","slice","defaults","iCheck","init","Math","random","toString","baseClass","autoInit","autoAjax","htmlFor","toggle","inherit","split","undefined","setAttribute","styleArea","areas","parentNode","replaceChild","insert","append","computed","getPropertyValue","currentStyle","operate","done","method","before","states","changes","checked","disabled","indeterminate","getAttribute","change","lastKey","tap","checkboxClass","radioClass","checkedClass","disabledClass","indeterminateClass","hoverClass","focusClass","callbacks","ifCreated","classes","base","div","input","ua","navigator","userAgent","ie","test","documentMode","operaMini","recognizer","RegExp","matches","exec","getComputedStyle","isPointer","PointerEvent","MSPointerEvent","isTouch","isMobile","mouse","pointer","touch","noMouse","hoverStart","hoverEnd","tapStart","tapEnd","hover","areaStyle","styleInput","debug","status","currentClass","updatedClass","addClass","tag","tagName","loop","property","form","radios","radiosLength","radioKey","radioStates","radioChanges","changed","toggled","typeCapital","removeAttribute","radio","inputClass","reverse","mirror","cursor","fn","fire","items","this","itemsLength","item","on","event","self","partner","activate","emitter","activeLabelClass","hoverLabelClass","activeClass","setTimeout","currentTarget","Date","click","stopPropagation","focusLabelClass","keyCode","keydown","ready","body","ajaxSetup","converters","text html","frame","frameData","src","contentDocument","contentWindow","document","open","write","close","removeChild","innerHTML","define","amd","window"],"mappings":"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"}