[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.218.94.236: ~ $
{"version":3,"sources":["admin.js","backbone.stickit.js","admin-bindings.js","tinycolor.js","jquery.colorpickersliders.js","ajax.js","util.js","jquery.fontselect.js"],"names":["factory","define","amd","exports","module","window","FF_Cookie","extend","i","result","arguments","length","attributes","key","init","converter","api","value","path","defaults","expires","Date","setMilliseconds","getMilliseconds","JSON","stringify","test","e","write","encodeURIComponent","String","replace","decodeURIComponent","escape","document","cookie","toUTCString","domain","secure","join","cookies","split","rdecode","parts","name","slice","charAt","read","this","json","parse","get","set","getJSON","apply","call","remove","withConverter","jQuery","$","validateLicense","data","$licenseCont","activated","val","fname","lname","email","subscribe","prop","code","isX","licenseValid","dfd","Deferred","removeClass","hide","addClass","initEmail","initCode","resolve","promise","action","url","post","response","regexTest","laim_localize","ajaxurl","error","item_id","show","trigger","traversePages","pages","res","each","el","t","is","showLoadingView","hideLoadingView","isScrolledIntoView","$elem","elemTop","elemBottom","rule","docViewTop","$win","scrollTop","docViewBottom","height","updateMenuMap","map","$list","find","$t","locationData","term_id","trim","text","loc","isDef","$storageInput","openLocPopup","$item","$locPopup","populatePopup","$def","setTimeout","$body","on","closeLocPopup","closest","force","target","off","location","current","cat","ids","after","id","wrap","ind","cl","scl","bg","cc","hover","parent","append","before","prepend","change","end","options","flag","preventDefault","$form","p","hidden","user","desktop","mobile","resulted","everyone","loggedin","loggedout","yes","no","include","exclude","cposts","cats","taxes","langs","wp_pages","done","file","reader","FileReader","files","onload","er","alert","console","log","confirm","dataType","reload","fail","readAsText","state","$tabs","$subtabs","$or","offset","top","css","width","left","not","animate","file_frame","attachment","$input","parents","eq","open","wp","media","frames","multiple","first","toJSON","html","sizes","full","$popup","$clone","$select","clone","attr","_for","curr","sf_menus","$selected","$curr","require","_","Backbone","Stickit","_handlers","addHandler","handlers","flatten","handler","updateModel","updateView","updateMethod","concat","ViewMixin","_modelBindings","unstickit","model","bindingSelector","isObject","v","selector","models","destroyFns","reject","binding","config","event","fn","push","_destroy","invoke","uniq","cid","$el","stickit","optionalModel","optionalBindingsConfig","bindings","addBinding","stickitWrapped","ret","namespace","isString","observe","isFunction","getConfiguration","modelAttr","view","bindId","uniqueId","stickitChange","setOptions","applyViewFn","destroy","initializeAttributes","initializeVisible","initializeClasses","events","type","eventName","sel","bind","getVal","evaluateBoolean","setAttr","observeModelEvent","m","currentVal","getAttr","updateViewBindEl","initialize","View","prototype","evaluatePath","obj","reduce","memo","reference","isBoolean","last","onSet","isArray","attribute","index","has","retrieveVal","field","sanitizeVal","onGet","update","opts","filter","visible","props","attrConfig","lastClass","observed","updateAttr","updateType","contains","classes","classConfig","updateClass","toggleClass","visibleCb","visibleFn","isVisible","toggle","isInitializing","afterUpdate","checkbox","checkboxVal","checked","some","item","boxval","optList","selectConfig","selectOptions","list","collection","undefined","isMultiple","getList","option","dataVal","label","opt_labels","valuePath","labelPath","disabledPath","addSelectOptions","fieldVal","disabled","optionVal","fillOption","isEqual","context","indexOf","Collection","refreshSelectOptions","removeCollectionListeners","removeAllListeners","once","viewCid","defaultOption","$group","opt","sortBy","comparator","selected","SuperflyView","render","close","tinycolor","color","hasOwnProperty","rgb","inputToRGB","r","g","b","a","roundA","mathRound","format","ok","_tc_id","tinyCounter","alpha","getAlpha","setAlpha","boundAlpha","toHsv","hsv","rgbToHsv","h","s","toHsvString","toHsl","hsl","rgbToHsl","l","toHslString","toHex","allow3Char","rgbToHex","toHexString","toRgb","toRgbString","toPercentageRgb","bound01","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex","secondHex","alphaHex","Math","round","parseFloat","toString","secondAlphaHex","gradientType","pad2","formatSet","formattedString","formatWithAlpha","stringInputToObject","rgbToRgb","substr","convertToPercentage","hsvToRgb","hslToRgb","mathMin","mathMax","max","min","d","hue2rgb","q","math","floor","f","mod","isNaN","n","isOnePointZero","processPercent","isPercentage","parseInt","abs","clamp01","parseHex","c","trimLeft","trimRight","toLowerCase","named","names","match","matchers","exec","rgba","hsla","hex6","hex3","mathRandom","random","fromRatio","newColor","equals","color1","color2","desaturate","amount","saturate","greyscale","lighten","darken","complement","triad","tetrad","splitcomplement","analogous","results","slices","part","monochromatic","modification","readability","brightnessA","brightnessB","colorDiff","brightness","readable","mostReadable","baseColor","colorList","bestColor","bestScore","bestIsReadable","score","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","o","flipped","flip","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","RegExp","ColorPickerSliders","alreadyinitialized","rendermode","detectWhichGradientIsSupported","svgSupported","_initSettings","settings","order","preview","_buildHtml","_initElements","triggerelementisinput","tiny","triggerelement","cielch","rgb2lch","_renderSwatches","_bindEvents","_updateAllElements","updateColor","newcolor","disableinputupdate","updatedcolor","container","showPopup","popuporiginalwidth","viewportwidth","outerWidth","outerHeight","hidePopup","preventtouchkeyboardonshow","swatches","customswatches","connectedinput","flat","disableautopopup","updateinterval","previewontriggerelement","previewcontrasttreshold","previewformat","erroneousciecolormarkers","invalidcolorsopacity","finercierangeedges","titleswatchesadd","titleswatchesremove","titleswatchesreset","labels","onchange","opacity","cie","hslhue","hslsaturation","hsllightness","rgbred","rgbgreen","rgbblue","cielightness","ciechroma","ciehue","sliders","color_picker_html","insertAfter","appendTo","add","elements","actualswatch","swatchescontainer","swatches_add","swatches_remove","swatches_reset","all_sliders","hue","hue_marker","saturation","saturation_marker","lightness","lightness_marker","opacity_marker","red_marker","green_marker","blue_marker","cielightness_marker","ciechroma_marker","ciehue_marker","destroyColorPicker","resetColorPicker","ev","stopPropagation","_addCurrentColorToSwatches","_removeActualColorFromSwatches","_resetSwatches","which","_updateColorsProperty","_updateMarkerPosition","dragTarget","percent","MAXLIGHT","MAXVALIDCHROMA","select","_parseCustomSwatches","localStorage","getItem","err","Array","_findActualColorsSwatch","found","swatchcolor","currentswatch","_storeSwatches","setItem","unshift","splice","property","lch2rgb","isok","slidername","calculateEventPositionPercentage","_updateAllElementsTimer","updateAllElementsTimeout","clearTimeout","now","lastUpdateTime","_renderOpacity","_renderHue","_renderSaturation","_renderLightness","_renderRed","_renderGreen","_renderBlue","_renderCieLightness","_renderCieChroma","_renderCieHue","_renderPreview","_updateConnectedInput","element","$element","setGradient","getScaledGradientStops","_extendCieGradientStops","gradientstops","sort","position","tmparray","steps","extendedgradientstops","rawcolor","j","merge","csscolor","colorstring","renderNoprefix","renderWebkit","renderMs","renderSVG","renderOldwebkit","getEventCoordinates","pageX","originalEvent","pageY","touches","containerElement","xsize","scalableproperty","minvalue","maxvalue","minposition","maxposition","gradientStops","diff","currentstage","modifiedcolor","modifyColor","stagergb","getGradientStopsCSSString","gradientstring","oldwebkit","svgstoppoints","svgcolor","noprefix","svg","base64encode","h1","h2","h3","h4","bits","b64","ac","enc","tmp_arr","charCodeAt","isGoodRgb","lch","CIELab2CIELCH","XYZ2CIELab","rgb2XYZ","XYZ2rgb","CIELab2XYZ","CIELCH2CIELab","tmp","lastbadchroma","lastgoodchroma","loops","$return","tmpcolor","XYZ","pow","x","y","z","CIELab","X","Y","Z","CIELCH","sqrt","atan2","PI","cos","sin","testelement","createElement","style","backgroundImage","createElementNS","createSVGRect","AwesomeAjax","prefix","self","load_model","model_name","callback_success","callback_error","ajax","success_handler","error_handler","publish_model","delete_model","args","security","success","responseArray","wpAjax","parseAjaxResponse","errors","responses","success_error_handler","AwesomeUtil","detect_os","os_name","navigator","appVersion","toObject","arr","rv","find_in_array_of_objects","array","hex_to_rgb","calc_size","raw","endsWith","clean_number","get_keys","find_key_by_value","needle","haystack","find_index_by_value","keys","start_with","regex","replace_all","capitalize","toUpperCase","windowScrollTopView","fontselect","__bind","me","fonts","empty","placeholder","lookahead","Fontselect","original","$original","active","setupHtml","getVisibleFonts","bindEvents","font","updateSelected","addFontLink","$results","selectFont","activateFont","toggleDrop","$arrow","$drop","clearInterval","visibleInterval","moveToSelected","setInterval","$li","currentTarget","deactivateFont","toReadable","font-family","toStyle","class","fontsAsHtml","font-weight","link"],"mappings":"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","file":"admin.min.js","sourcesContent":["/*!\n * JavaScript Cookie v2.0.4\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n(function (factory) {\n\t\"use strict\";\n    if (typeof define === 'function' && define.amd) {\n        define(factory);\n    } else if (typeof exports === 'object') {\n        module.exports = factory();\n    } else {\n        /*var _OldCookies = window.Cookies;\n         var api = window.Cookies = factory();\n         api.noConflict = function () {\n         window.Cookies = _OldCookies;\n         return api;\n         };*/\n        window.FF_Cookie = factory();\n    }\n}(function () {\n\t\"use strict\";\n    function extend () {\n        var i = 0;\n        var result = {};\n        for (; i < arguments.length; i++) {\n            var attributes = arguments[ i ];\n            for (var key in attributes) {\n                result[key] = attributes[key];\n            }\n        }\n        return result;\n    }\n\n    function init (converter) {\n        function api (key, value, attributes) {\n            var result;\n\n            // Write\n\n            if (arguments.length > 1) {\n                attributes = extend({\n                    path: '/'\n                }, api.defaults, attributes);\n\n                if (typeof attributes.expires === 'number') {\n                    var expires = new Date();\n                    expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n                    attributes.expires = expires;\n                }\n\n                try {\n                    result = JSON.stringify(value);\n                    if (/^[\\{\\[]/.test(result)) {\n                        value = result;\n                    }\n                } catch (e) {}\n\n                if (!converter.write) {\n                    value = encodeURIComponent(String(value))\n                        .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n                } else {\n                    value = converter.write(value, key);\n                }\n\n                key = encodeURIComponent(String(key));\n                key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n                key = key.replace(/[\\(\\)]/g, escape);\n\n                return (document.cookie = [\n                    key, '=', value,\n                    attributes.expires && '; expires=' + attributes.expires.toUTCString(), // use expires attribute, max-age is not supported by IE\n                    attributes.path    && '; path=' + attributes.path,\n                    attributes.domain  && '; domain=' + attributes.domain,\n                    attributes.secure ? '; secure' : ''\n                ].join(''));\n            }\n\n            // Read\n\n            if (!key) {\n                result = {};\n            }\n\n            // To prevent the for loop in the first place assign an empty array\n            // in case there are no cookies at all. Also prevents odd result when\n            // calling \"get()\"\n            var cookies = document.cookie ? document.cookie.split('; ') : [];\n            var rdecode = /(%[0-9A-Z]{2})+/g;\n            var i = 0;\n\n            for (; i < cookies.length; i++) {\n                var parts = cookies[i].split('=');\n                var name = parts[0].replace(rdecode, decodeURIComponent);\n                var cookie = parts.slice(1).join('=');\n\n                if (cookie.charAt(0) === '\"') {\n                    cookie = cookie.slice(1, -1);\n                }\n\n                try {\n                    cookie = converter.read ?\n                        converter.read(cookie, name) : converter(cookie, name) ||\n                    cookie.replace(rdecode, decodeURIComponent);\n\n                    if (this.json) {\n                        try {\n                            cookie = JSON.parse(cookie);\n                        } catch (e) {}\n                    }\n\n                    if (key === name) {\n                        result = cookie;\n                        break;\n                    }\n\n                    if (!key) {\n                        result[name] = cookie;\n                    }\n                } catch (e) {}\n            }\n\n            return result;\n        }\n\n        api.get = api.set = api;\n        api.getJSON = function () {\n            return api.apply({\n                json: true\n            }, [].slice.call(arguments));\n        };\n        api.defaults = {};\n\n        api.remove = function (key, attributes) {\n            api(key, '', extend(attributes, {\n                expires: -1\n            }));\n        };\n\n        api.withConverter = init;\n\n        return api;\n    }\n\n    return init(function () {});\n}));\n\njQuery(function ($) {\n    \"use strict\";\n\n    var $win = $(window);\n    var $body = $('body');\n\n    // DOM manipulations\n\n    $('#sf_font').after($('#sf_uppercase_chooser')).after($('#sf_font_weight_chooser')).after($('#sf_alignment_chooser')).after($('#sf_font_size'))\n\n    $('#sf_c_font').after($('#sf_c_trans_chooser')).after($('#sf_c_weight_chooser')).after($('#sf_c_fs'));\n\n    $('#sf_c_fs').after('<span class=\"units\" style=\"top:-16px\">px</span><br>');\n    $('#sf_font_size').after('<span class=\"units\" style=\"top:-16px\">px</span><br>');\n\n    $('.sf_font').find('p:empty').remove();\n    $('.sf_c_font').find('p:empty').remove();\n\n    $('.switcher').each(function () {\n        $(this).after('<div><div></div></div>')\n    })\n\n    $('.postbox select').each(function () {\n        var id = this.id\n        $(this).wrap('<div class=\"select-wrapper\" id=\"' + id + '-wrapper\"></div>')\n    })\n\n    $('[id*=sf_width_panel_]').each(function () {\n        var ind = this.id.replace('sf_width_panel_', '');\n        var cl = $('#sf_color_panel_' + ind);\n        var scl = $('#sf_scolor_panel_' + ind);\n        var bg = $('#sf_bg_color_panel_' + ind);\n        var cc = $('#sf_chapter_' + ind);\n        var hover = $('#sf_hover_panel_' + ind);\n        $(this).parent().append(bg).append(cl).append(scl).append(cc).append(hover);\n        bg.before('<span>Background</span>');\n        cl.before('<span>Text</span>');\n        scl.before('<span>Second line</span>');\n        hover.before('<span>Hover color</span>');\n        cc.before('<span>Section</span>');\n    })\n\n    // adding export / import button\n    var html = '<div class=\"settings-form-row sf_export\"><p class=\"field-title \">EXPORT / IMPORT DESIGN SETTINGS</p><h6>Please notice that import action cannot be reverted. Export doesn\\'t include WP menus or any images, icons from this site</h6><p><a class=\"button-ui\" href=\"/wp-admin/admin-post.php?action=sfm_export_settings&data=admin_only\">Export</a>&nbsp;&nbsp;&nbsp;<a href=\"#\" class=\"button-ui\" id=\"sf-import-btn\">Import</a>&nbsp;&nbsp;&nbsp;<input type=\"file\" id=\"sf_files\" accept=\".json,application/json\"></p></div>';\n\n    $('.sf_css').prepend( $( html ) );\n\n    // SUBSCRIPTION CHECK\n\n    var subCookie = window.FF_Cookie.get('sfm_sub');\n\n    if ( subCookie ) {\n\n    } else {\n        if ( $('#sf_license_subscribe').prop('checked') ) {\n\n            var $licenseCont = $('#sf_license');\n            var fname = $('#sf_license_fname', $licenseCont).val();\n            var lname = $('#sf_license_lname', $licenseCont).val();\n            var email = $('#sf_license_email', $licenseCont).val();\n\n            var data = {\n                action: 'subscribe',\n                email: email,\n                fname: fname,\n                lname: lname\n            }\n\n            var url = 'https://looks-awesome.com/proxy/superfly-mailchimp.php';\n\n            $.post(url, data, function (response) {});\n\n            window.FF_Cookie.set('sfm_sub', 'attempted', { expires: 356 });\n        }\n    }\n\n    // Events\n\n    $('#sf_sidebar_style').change(function () {\n        var val = $(this).val();\n        var $w = $(this).closest('.settings-form-row');\n\n        $w.find('[data-notice]').hide().end().find('[data-notice=' + val + ']').show();\n        if (val === 'static') {\n            $('.sf_iconbar').show()\n        } else {\n            $('.sf_iconbar').hide()\n        }\n\n        if (val === 'full') {\n            $('.sf_fade_content').hide();\n            $('.sf_fade_full').show();\n        } else {\n            $('.sf_fade_content').show();\n            $('.sf_fade_full').hide();\n        }\n    }).change();\n\n    var initEmail = $('#sf_license #sf_license_email').val();\n    var initCode = $('#sf_license #sf_license_code').val();\n\n    function validateLicense() {\n        var $licenseCont = $('#sf_license');\n        var activated = $('#sf_license_valid', $licenseCont).val();\n        var fname = $('#sf_license_fname', $licenseCont).val();\n        var lname = $('#sf_license_lname', $licenseCont).val();\n        var email = $('#sf_license_email', $licenseCont).val();\n        var subscribe = $('#sf_license_subscribe', $licenseCont).prop('checked');\n        var code = $('#sf_license_code', $licenseCont).length > 0 ? $('#sf_license_code', $licenseCont).val() : '';\n        var isX = $('#sf_license_code', $licenseCont).data('x');\n        var licenseValid = true;\n        var dfd = $.Deferred();\n        var data;\n\n        $('#sf_license_email', $licenseCont).removeClass('validation-error');\n        $('#sf_license_code', $licenseCont).removeClass('validation-error');\n        $('.purchase-code .code-error', $licenseCont).hide();\n\n        /*if(fname !== '' || lname !==  ''){\n            licenseValid = false;\n\n            if(email === ''){\n                $('#sf_license_email', $licenseCont).addClass('validation-error');\n            }\n\n            if(code === ''){\n                $('#sf_license_code', $licenseCont).addClass('validation-error');\n            }\n        }*/\n\n\n        if(email == '' && code != '' && !isX){\n            $('#sf_license_email', $licenseCont).addClass('validation-error');\n            licenseValid = false;\n        }\n\n        /*if(email == '' && isX){\n            $('#sf_license_email', $licenseCont).addClass('validation-error');\n            licenseValid = false;\n        }*/\n\n        if (activated && email == initEmail && code == initCode) {\n            dfd.resolve(activated);\n            return dfd.promise();\n        }\n\n        if (email != '') {\n            if (!/^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/.test(email)) {\n                $('#sf_license_email', $licenseCont).addClass('validation-error');\n                licenseValid = false;\n            } else {\n                if($('#sf_license_code', $licenseCont).length === 0){\n\n                }\n                data = {\n                    action: 'always',\n                    email: email,\n                    fname: fname,\n                    lname: lname\n                };\n                var url = 'https://looks-awesome.com/proxy/superfly-mailchimp.php';\n\n                // Subscribe to list (anyway)\n                $.post(url, data, function (response) {});\n                if (subscribe) {\n                    data.action = 'subscribe';\n                    // Subscribe to public list (only if checkbox selected)\n                    $.post(url, data, function (response) {});\n                }\n            }\n        }\n\n        if (code != '') {\n            var regexTest = /^[a-z0-9]+\\-[a-z0-9]+\\-[a-z0-9]+\\-[a-z0-9]+\\-[a-z0-9]+$/.test(code);\n\n            if (!regexTest) {\n                $('#sf_license_code', $licenseCont).addClass('validation-error');\n                licenseValid = regexTest;\n                dfd.resolve(licenseValid);\n                $('#for_sf_license').trigger('click');\n            } else {\n                data = {\n                    action: 'sf_validate_envato_license',\n                    code: code\n                };\n\n                $.post(laim_localize.ajaxurl, data, function (response) {\n                    if (response == -1) {\n                        licenseValid = false;\n                    } else {\n                        if (response.error || response.item_id !== \"8012790\") {\n                            licenseValid = false;\n                            $('#sf_license_code', $licenseCont).addClass('validation-error');\n                            $('.purchase-code .code-error', $licenseCont).show();\n                            $('#for_sf_license').trigger('click');\n                        } else {\n                            $('#sf_license_valid', $licenseCont).val('1');\n                        }\n                    }\n                    dfd.resolve(licenseValid);\n                });\n            }\n        } else {\n            dfd.resolve(licenseValid);\n        }\n\n        return dfd.promise();\n    }\n\n    $('#sf_license_code').on('input', function (e, options) {\n        $('#sf_license_valid').val('');\n        $(this).removeClass('validation-success');\n    });\n\n    $('#sf_license_email').on('input', function (e, options) {\n        //$('#sf_license_valid').val('');\n    });\n\n    $('#sf_license_subscribe').on('change', function (e, options) {\n        //$('#sf_license_valid').val('');\n    });\n\n    $('#sf-options-wrap form').on('submit', function (e, options) {\n        options = options || {};\n\n        if (!options.flag) {\n            e.preventDefault();\n        }\n\n        var $form = $(this);\n        var p = $('.sf_display');\n        var current = p.find('.loc_popup')\n        var hidden = p.find('input:hidden');\n        var user = current.find('select[id*=user_status]').val();\n        var rule = current.find('select[id*=display_rule]').val();\n        var desktop = current.find('select[id*=display_desktop]').val();\n        var mobile = current.find('select[id*=display_mobile]').val();\n        var ids = current.find('[id*=display_ids]').val();\n\n        var resulted = {\n            'user': {\n                'everyone': user === 'everyone' ? 1 : 0,\n                'loggedin': user === 'loggedin' ? 1 : 0,\n                'loggedout': user === 'loggedout' ? 1 : 0\n            },\n            'desktop': {\n                'yes': desktop === 'yes' ? 1 : 0,\n                'no': desktop === 'no' ? 1 : 0\n            },\n            'mobile': {\n                'yes': mobile === 'yes' ? 1 : 0,\n                'no': mobile === 'no' ? 1 : 0\n            },\n\n            'rule': {\n                // 'include': rule === 'include' ? 1 : 0,\n                // 'exclude': rule === 'exclude' ? 1 : 0\n                'include': 0,\n                'exclude': 1\n            },\n            'location': {\n                'pages': traversePages(current.find('input[id*=display_page]')),\n                'cposts': traversePages(current.find('input[id*=display_cpost]')),\n                'cats': traversePages(current.find('input[id*=display_cat]')),\n                'taxes': {},\n                'langs': traversePages(current.find('input[id*=display_lang]')),\n                'wp_pages': traversePages(current.find('input[id*=display_wp_page]')),\n                'ids': ids.split(',')\n            }\n        };\n        hidden.val(JSON.stringify(resulted));\n        showLoadingView();\n\n        if (!options.flag) {\n            validateLicense().done(function (data) {\n                if (data) {\n                    showLoadingView();\n                    $form.trigger('submit', {flag: true});\n                } else {\n                    hideLoadingView();\n                    e.preventDefault();\n                }\n            });\n        }\n    });\n    \n    \n    // import \n    \n    $( '#sf-import-btn' ).on( 'click', function () {\n        var $inp = $( '#sf_files' )\n        $inp.trigger( 'click' );\n    })\n\n    $( '#sf_files' ).on( 'change', function () {\n        var file;\n        var reader = new FileReader();\n\n        if ( !this.files ) {\n            alert( 'Sorry your browser does not support files API' );\n            return;\n        }\n        if ( !this.files[0] ) {\n            alert( 'No file selected' );\n            return;\n        }\n\n        file = this.files[0];\n\n        reader.onload = (function ( file ) {\n            return function (e) {\n                var json;\n\n                try {\n                    json = JSON.parse( e.target.result) ;\n                } catch ( er ) {\n                    alert('ex when trying to parse json = ' + er);\n                }\n\n                console.log( json );\n\n                if ( confirm('Are you sure you want to apply imported settings? This action cannot be reverted')) {\n                    $.post( '/wp-admin/admin-post.php', {\n                        action: 'sfm_import_settings',\n                        data: json,\n                        dataType: 'json'\n                    }).done( function ( data ) {\n                        console.log( data );\n                        location.reload( );\n                    }).fail( function () {\n                        alert( \"request error\" );\n                    })\n                }\n            }\n        })( file );\n\n        reader.readAsText( file );\n\n    })\n\n\n    function traversePages(pages) {\n        var res = {};\n\n        pages.each(function (i, el) {\n            var t = $(el);\n            var val = t.val();\n            if (t.is(':checked')) res[val] = 1;\n        });\n\n        return res\n    }\n\n    function showLoadingView() {\n        $('#fade-overlay').addClass('loading');\n    }\n\n    function hideLoadingView() {\n        $('#fade-overlay').removeClass('loading');\n    }\n\n\n    function isScrolledIntoView($elem, elemTop, elemBottom, rule) {\n        var docViewTop = $win.scrollTop();\n        var docViewBottom = docViewTop + $win.height();\n\n        return rule === 'after' ? docViewBottom > elemBottom + 50 : (elemBottom <= docViewBottom && elemTop >= docViewTop - 25) || (elemBottom > docViewBottom && elemTop < docViewTop - 25);\n    }\n\n    var state = 'in';\n    var $tabs = $('#tabs-copy');\n    var $subtabs = $('#sf_appearance_tabs');\n    var $or = $('#tabs');\n    var $form = $('#sf-options-wrap form')\n\n    $win.on('scroll',function () {\n\n        var elemTop = $tabs.offset().top;\n        var elemBottom = elemTop + $tabs.height();\n        if (isScrolledIntoView($tabs, elemTop, elemBottom, 'in')) {\n            if (state !== 'in') {\n                state = 'in';\n                $or.removeClass('transition-in');\n                //setTimeout(function () {\n                $body.removeClass('fixed-nav');\n                $or.css({'width': '', left: ''});\n                //}, 50)\n            }\n        } else {\n            if (state !== 'out') {\n                state = 'out';\n                $body.addClass('fixed-nav');\n                $or.css({'width': $tabs.width(), left: $form.offset().left});\n                $subtabs.css({'width': $tabs.width(), left: $form.offset().left});\n                //setTimeout(function () {\n                $or.addClass('transition-in');\n                //}, 100)\n            }\n        }\n\n    });\n\n    $win.on('resize',function () {\n        if ($body.is('.fixed-nav')) {\n            $or.css({'width': $tabs.width(), left: $form.offset().left})\n        }\n    })\n\n    $or.find('li').not('#save-tab').on('click',function () {\n        $('html,body').animate({\n            scrollTop: 0\n        }, 300);\n    });\n\n    $subtabs.on('click',function () {\n        $('html,body').animate({\n            scrollTop: 0\n        }, 300);\n    });\n\n    $('#save-tab').on('click',function () {\n        $(this).closest('form').trigger('submit');\n    })\n\n    $('#form-tab').on('click',function () {\n\n    })\n\n    var file_frame, attachment, $input;\n\n    $('.sf-choose-image').on('click',function () {\n        var $t = $(this);\n        $input = $t.parents('.settings-form-row').eq(0).find('input');\n        if (file_frame) {\n            file_frame.open();\n            return;\n        }\n\n        // Create the media frame.\n        file_frame = wp.media.frames.file_frame = wp.media({\n            multiple: false  // Set to true to allow multiple files to be selected\n        });\n\n        // When an image is selected, run a callback.\n        file_frame.on('select', function () {\n            // We set multiple to false so only get one image from the uploader\n\n            attachment = file_frame.state().get('selection').first().toJSON();\n            $('.image-preview').html('<img src=\"' + attachment.url + '\"/>');\n            if (!$('.sf-remove-image').length) $t.parent().after(\"<div><span class='sf-remove-image'>Remove Image</span></div>\");\n            $input.val(attachment.sizes.full.url);\n            $input.closest('form').trigger('submit')\n//      $currBtn = null;\n        });\n\n        // Finally, open the modal\n        file_frame.open();\n    })\n\n    $(document).on('click', '.sf-remove-image', function () {\n        var $t = $(this);\n        $input = $t.parents('.settings-form-row').eq(0).find('input');\n        $input.val('');\n        $(this).closest('form').trigger('submit')\n    })\n\n\n    // multiple menus\n\n    var $select = $('#sf-menu__select-wrapper ');\n    var $popup, $locPopup, $clone, $def;\n    var $storageInput = $('.sf_active_menu input');\n    var $list = $('.sf-menu__list');\n\n    // dom\n    $select.wrap('<div class=\"sf-menu__select_popup\"></div>');\n    $popup = $('.sf-menu__select_popup');\n    $popup.append('<span class=\"sf-menu__btn sf-menu__btn__ok\"><i class=\"flaticon-plus\"></i></span><span class=\"sf-menu__btn sf-menu__btn__close\"><i class=\"flaticon-cross\"></i></span>');\n\n    $clone = $('.loc_popup > div').clone();\n\n    $clone.find('.rule_lang').remove();\n\n    $clone.find('[id]').each(function () {\n        var id = $(this).attr('id');\n        $(this).attr('id', id + '_popup')\n    });\n    $clone.find('[for]').each(function () {\n        var _for = $(this).attr('for');\n        $(this).attr('for', _for + '_popup')\n    });\n\n    $clone.addClass('sf-menu__loc_popup').prepend('\\\n        <div class=\"sf-menu__def_wrapper\"><p>Mark pages of your website to display this menu.</p>\\\n        <p>\\\n            <input class=\"checkbox\" type=\"checkbox\" value=\"yes\" id=\"display_default_menu_popup\" name=\"display_default_menu\">\\\n            <label for=\"display_default_menu_popup\">Display everywhere by default. / General display rules may overwrite this setting</label>\\\n        </p>\\\n        </div>\\\n    ');\n\n    $('.dw_pages_wrap', $clone).prepend('\\\n    <div><span class=\"sf-menu__loc_btn_check_all\">Check All</span> <span class=\"sf-menu__loc_btn_check_none\">Uncheck All</span></div>\\\n    ')\n\n    $clone.addClass('sf-menu__loc_popup').append('<span class=\"sf-menu__loc_btn_save\">Save</span> <span class=\"sf-menu__loc_btn_close\">Close</span>')\n\n    $popup.after($clone);\n\n    $(document).on('click', '.sf-menu__loc_btn_check_all', function () {\n        $('.sf-menu__loc_popup input[type=\"checkbox\"][name!=\"display_default_menu\"]').prop('checked', true);\n    });\n    $(document).on('click', '.sf-menu__loc_btn_check_none', function () {\n        $('.sf-menu__loc_popup input[type=\"checkbox\"][name!=\"display_default_menu\"]').prop('checked', false);\n    });\n    $(document).on('change', '[name=\"display_default_menu\"]', function (e) {\n        $('.sf-menu__loc_popup .dw_pages_wrap').show();\n        if($(this).prop('checked'))\n            $('.sf-menu__loc_popup .dw_pages_wrap').hide();\n    });\n\n\n    $locPopup = $('.sf-menu__loc_popup');\n    $def = $locPopup.find('#display_default_menu_popup');\n\n    //$locPopup.find('#display_ids_popup').parent().hide();\n\n    $list.find('.sf-menu__item').each(function () {\n        var $t = $(this);\n        var id = $t.data('id');\n        var location;\n        var curr = window.sf_menus[id];\n        if (curr) {\n            location = curr['loc'];\n            $t.data('location', location);\n            $t.data('isDef', curr['isDef']);\n        }\n    })\n\n    $('.sf-menu__add').on('click',function () {\n        $(this).closest('.sf_active_menu').addClass('sf_active_menu--selecting');\n    })\n\n    $('.sf-menu__btn__ok').on('click',function () {\n        var val = $select.find('select').val();\n        var $selected = $select.find(':selected');\n\n        var $item;\n        console.log(val);\n\n        // check if added\n        if ($list.find('[data-id=' + val + ']').length) {\n            alert('Already added!');\n            return;\n        }\n\n        $item = $('<li class=\"sf-menu__item\" data-id=\"' + val + '\">' + $selected.text() + '<i class=\"flaticon-cross\"></i></li>');\n        $list.append($item);\n\n\n        updateMenuMap();\n\n        if ($list.find('.sf-menu__item').length === 1) { // single item\n            openLocPopup($item);\n            $locPopup.find(':checkbox').prop('checked', true)\n            $locPopup.find('.sf-menu__loc_btn_save').trigger('click');\n            closeLocPopup({target: null}, true);\n            return;\n        }\n        $(this).closest('form').trigger('submit')\n\n\n    })\n\n    $('.sf-menu__btn__close').on('click',function () {\n        $(this).closest('.sf_active_menu').removeClass('sf_active_menu--selecting');\n    })\n\n    $list.on('click', '.sf-menu__item', function (e) {\n        var $t = $(e.target);\n        var $form = $t.closest('form');\n\n        if ($t.is('.flaticon-cross')) {\n            $t.closest('.sf-menu__item').remove();\n            updateMenuMap();\n            $form.closest('form').trigger('submit');\n            return;\n        }\n\n        console.log('open loc popup');\n        openLocPopup($t.closest('.sf-menu__item'))\n    })\n\n    $locPopup.on('click', '.sf-menu__loc_btn_save', function () {\n        var current = $locPopup;\n        var ids = current.find('[id*=display_ids]').val();\n        var $item = $locPopup.data('currentItem');\n\n        var location = {\n            'pages': traversePages(current.find('input[id*=display_page]')),\n            'cposts': traversePages(current.find('input[id*=display_cpost]')),\n            'cats': traversePages(current.find('input[id*=display_cat]')),\n            'taxes': {},\n            'langs': traversePages(current.find('input[id*=display_lang]')),\n            'wp_pages': traversePages(current.find('input[id*=display_wp_page]')),\n            'ids': ids.split(',')\n        };\n\n        $item.data('location', location);\n        $item.data('isDef', $def.is(':checked'));\n\n        updateMenuMap();\n\n        current.closest('form').trigger('submit')\n\n    });\n\n    $def.on('change', function (e) {\n        var $curr;\n\n        // check if already default is set\n        $list.find('.sf-menu__item').each(function () {\n            var $t = $(this);\n            if ($t.data('isDef')) {\n                $curr = $t;\n            }\n        });\n\n        if ($curr && $curr.data('id') != $locPopup.data('currentItem').data('id')) {\n            $def.attr('checked', false);\n            alert('You already have default menu. Please edit this menu before and uncheck this property.');\n            return false;\n        }\n    })\n\n    $locPopup.on('click', '.sf-menu__loc_btn_close', closeLocPopup)\n\n    function updateMenuMap() {\n        var $items = $list.find('.sf-menu__item');\n        var map = {};\n        $items.each(function () {\n            var $t = $(this);\n            var locationData = $t.data('location') || {};\n\n            map[$t.data('id')] = {\n                term_id: $t.data('id'),\n                name: $.trim($t.text()),\n                loc: locationData,\n                isDef: $t.data('isDef')\n            }\n        })\n        $storageInput.val(JSON.stringify(map));\n    }\n\n    function openLocPopup($item) {\n        // attempt to retrieve date\n        var locationData = $item.data('location');\n        $locPopup.data('currentItem', $item);\n\n        // reset\n        $locPopup.find(':checked').prop('checked', false)\n        $locPopup.find(':text').val('');\n\n        if (locationData) {\n            populatePopup(locationData, $item);\n        }\n\n        $def.prop('checked', $item.data('isDef'))\n        if($item.data('isDef')){\n            $('.dw_pages_wrap', $locPopup).hide();\n        }else{\n            $('.dw_pages_wrap', $locPopup).show();\n        }\n\n        setTimeout(function () {\n            $body.on('click', closeLocPopup)\n        }, 0)\n\n\n        $item.closest('.sf_active_menu').addClass('sf_active_menu--editing')\n    }\n\n    function closeLocPopup(e, force) {\n        var $t = $(e.target);\n        if (!$t.closest($locPopup).length || $t.is('.sf-menu__loc_btn_close') || force) {\n            $('.sf_active_menu').removeClass('sf_active_menu--editing');\n            $body.off('click', closeLocPopup)\n        }\n    }\n\n    function populatePopup(location, current) {\n        var prop, cat;\n\n        for ( prop in location ) {\n            cat = location[ prop ];\n            for ( var name in cat ) {\n                $locPopup.find('#display_' + prop.replace(/s$/, '') + '_' + name + '_popup').prop('checked', location[prop]);\n            }\n        }\n\n        if ( location.ids ) $locPopup.find('#display_ids_popup').val(location.ids.join(','));\n    }\n\n    $body.addClass('page-loaded');\n\n})","// Backbone.Stickit v0.9.2, MIT Licensed\n// Copyright (c) 2012-2015 The New York Times, CMS Group, Matthew DeLambo <delambo@gmail.com>\n\n(function (factory) {\n\n  // Set up Stickit appropriately for the environment. Start with AMD.\n  if (typeof define === 'function' && define.amd)\n    define(['underscore', 'backbone', 'exports'], factory);\n\n  // Next for Node.js or CommonJS.\n  else if (typeof exports === 'object')\n    factory(require('underscore'), require('backbone'), exports);\n\n  // Finally, as a browser global.\n  else\n    factory(_, Backbone, {});\n\n}(function (_, Backbone, Stickit) {\n\n  // Stickit Namespace\n  // --------------------------\n\n  // Export onto Backbone object\n  Backbone.Stickit = Stickit;\n\n  Stickit._handlers = [];\n\n  Stickit.addHandler = function(handlers) {\n    // Fill-in default values.\n    handlers = _.map(_.flatten([handlers]), function(handler) {\n      return _.defaults({}, handler, {\n        updateModel: true,\n        updateView: true,\n        updateMethod: 'text'\n      });\n    });\n    this._handlers = this._handlers.concat(handlers);\n  };\n\n  // Backbone.View Mixins\n  // --------------------\n\n  Stickit.ViewMixin = {\n\n    // Collection of model event bindings.\n    //   [{model,event,fn,config}, ...]\n    _modelBindings: null,\n\n    // Unbind the model and event bindings from `this._modelBindings` and\n    // `this.$el`. If the optional `model` parameter is defined, then only\n    // delete bindings for the given `model` and its corresponding view events.\n    unstickit: function(model, bindingSelector) {\n\n      // Support passing a bindings hash in place of bindingSelector.\n      if (_.isObject(bindingSelector)) {\n        _.each(bindingSelector, function(v, selector) {\n          this.unstickit(model, selector);\n        }, this);\n        return;\n      }\n\n      var models = [], destroyFns = [];\n      this._modelBindings = _.reject(this._modelBindings, function(binding) {\n        if (model && binding.model !== model) return;\n        if (bindingSelector && binding.config.selector != bindingSelector) return;\n\n        binding.model.off(binding.event, binding.fn);\n        destroyFns.push(binding.config._destroy);\n        models.push(binding.model);\n        return true;\n      });\n\n      // Trigger an event for each model that was unbound.\n      _.invoke(_.uniq(models), 'trigger', 'stickit:unstuck', this.cid);\n\n      // Call `_destroy` on a unique list of the binding callbacks.\n      _.each(_.uniq(destroyFns), function(fn) { fn.call(this); }, this);\n\n      this.$el.off('.stickit' + (model ? '.' + model.cid : ''), bindingSelector);\n    },\n\n    // Initilize Stickit bindings for the view. Subsequent binding additions\n    // can either call `stickit` with the new bindings, or add them directly\n    // with `addBinding`. Both arguments to `stickit` are optional.\n    stickit: function(optionalModel, optionalBindingsConfig) {\n      var model = optionalModel || this.model,\n          bindings = optionalBindingsConfig || _.result(this, \"bindings\") || {};\n\n      this._modelBindings || (this._modelBindings = []);\n\n      // Add bindings in bulk using `addBinding`.\n      this.addBinding(model, bindings);\n\n      // Wrap `view.remove` to unbind stickit model and dom events.\n      var remove = this.remove;\n      if (!remove.stickitWrapped) {\n        this.remove = function() {\n          var ret = this;\n          this.unstickit();\n          if (remove) ret = remove.apply(this, arguments);\n          return ret;\n        };\n      }\n      this.remove.stickitWrapped = true;\n      return this;\n    },\n\n    // Add a single Stickit binding or a hash of bindings to the model. If\n    // `optionalModel` is ommitted, will default to the view's `model` property.\n    addBinding: function(optionalModel, selector, binding) {\n      var model = optionalModel || this.model,\n          namespace = '.stickit.' + model.cid;\n\n      binding = binding || {};\n\n      // Support jQuery-style {key: val} event maps.\n      if (_.isObject(selector)) {\n        var bindings = selector;\n        _.each(bindings, function(val, key) {\n          this.addBinding(model, key, val);\n        }, this);\n        return;\n      }\n\n      // Special case the ':el' selector to use the view's this.$el.\n      var $el = selector === ':el' ? this.$el : this.$(selector);\n\n      // Clear any previous matching bindings.\n      this.unstickit(model, selector);\n\n      // Fail fast if the selector didn't match an element.\n      if (!$el.length) return;\n\n      // Allow shorthand setting of model attributes - `'selector':'observe'`.\n      if (_.isString(binding)) binding = {observe: binding};\n\n      // Handle case where `observe` is in the form of a function.\n      if (_.isFunction(binding.observe)) binding.observe = binding.observe.call(this);\n\n      // Find all matching Stickit handlers that could apply to this element\n      // and store in a config object.\n      var config = getConfiguration($el, binding);\n\n      // The attribute we're observing in our config.\n      var modelAttr = config.observe;\n\n      // Store needed properties for later.\n      config.selector = selector;\n      config.view = this;\n\n      // Create the model set options with a unique `bindId` so that we\n      // can avoid double-binding in the `change:attribute` event handler.\n      var bindId = config.bindId = _.uniqueId();\n\n      // Add a reference to the view for handlers of stickitChange events\n      var options = _.extend({stickitChange: config}, config.setOptions);\n\n      // Add a `_destroy` callback to the configuration, in case `destroy`\n      // is a named function and we need a unique function when unsticking.\n      config._destroy = function() {\n        applyViewFn.call(this, config.destroy, $el, model, config);\n      };\n\n      initializeAttributes($el, config, model, modelAttr);\n      initializeVisible($el, config, model, modelAttr);\n      initializeClasses($el, config, model, modelAttr);\n\n      if (modelAttr) {\n        // Setup one-way (input element -> model) bindings.\n        _.each(config.events, function(type) {\n          var eventName = type + namespace;\n          var listener = function(event) {\n            var val = applyViewFn.call(this, config.getVal, $el, event, config, slice.call(arguments, 1));\n\n            // Don't update the model if false is returned from the `updateModel` configuration.\n            var currentVal = evaluateBoolean(config.updateModel, val, event, config);\n            if (currentVal) setAttr(model, modelAttr, val, options, config);\n          };\n          var sel = selector === ':el'? '' : selector;\n          this.$el.on(eventName, sel, _.bind(listener, this));\n        }, this);\n\n        // Setup a `change:modelAttr` observer to keep the view element in sync.\n        // `modelAttr` may be an array of attributes or a single string value.\n        _.each(_.flatten([modelAttr]), function(attr) {\n          observeModelEvent(model, 'change:' + attr, config, function(m, val, options) {\n            var changeId = options && options.stickitChange && options.stickitChange.bindId;\n            if (changeId !== bindId) {\n              var currentVal = getAttr(model, modelAttr, config);\n              updateViewBindEl($el, config, currentVal, model);\n            }\n          });\n        });\n\n        var currentVal = getAttr(model, modelAttr, config);\n        updateViewBindEl($el, config, currentVal, model, true);\n      }\n\n      // After each binding is setup, call the `initialize` callback.\n      applyViewFn.call(this, config.initialize, $el, model, config);\n    }\n  };\n\n  _.extend(Backbone.View.prototype, Stickit.ViewMixin);\n\n  // Helpers\n  // -------\n\n  var slice = [].slice;\n\n  // Evaluates the given `path` (in object/dot-notation) relative to the given\n  // `obj`. If the path is null/undefined, then the given `obj` is returned.\n  var evaluatePath = function(obj, path) {\n    var parts = (path || '').split('.');\n    var result = _.reduce(parts, function(memo, i) { return memo[i]; }, obj);\n    return result == null ? obj : result;\n  };\n\n  // If the given `fn` is a string, then view[fn] is called, otherwise it is\n  // a function that should be executed.\n  var applyViewFn = function(fn) {\n    fn = _.isString(fn) ? evaluatePath(this, fn) : fn;\n    if (fn) return (fn).apply(this, slice.call(arguments, 1));\n  };\n\n  // Given a function, string (view function reference), or a boolean\n  // value, returns the truthy result. Any other types evaluate as false.\n  // The first argument must be `reference` and the last must be `config`, but\n  // middle arguments can be variadic.\n  var evaluateBoolean = function(reference, val, config) {\n    if (_.isBoolean(reference)) {\n      return reference;\n    } else if (_.isFunction(reference) || _.isString(reference)) {\n      var view = _.last(arguments).view;\n      return applyViewFn.apply(view, arguments);\n    }\n    return false;\n  };\n\n  // Setup a model event binding with the given function, and track the event\n  // in the view's _modelBindings.\n  var observeModelEvent = function(model, event, config, fn) {\n    var view = config.view;\n    model.on(event, fn, view);\n    view._modelBindings.push({model:model, event:event, fn:fn, config:config});\n  };\n\n  // Prepares the given `val`ue and sets it into the `model`.\n  var setAttr = function(model, attr, val, options, config) {\n    var value = {}, view = config.view;\n    if (config.onSet) {\n      val = applyViewFn.call(view, config.onSet, val, config);\n    }\n\n    if (config.set) {\n      applyViewFn.call(view, config.set, attr, val, options, config);\n    } else {\n      value[attr] = val;\n      // If `observe` is defined as an array and `onSet` returned\n      // an array, then map attributes to their values.\n      if (_.isArray(attr) && _.isArray(val)) {\n        value = _.reduce(attr, function(memo, attribute, index) {\n          memo[attribute] = _.has(val, index) ? val[index] : null;\n          return memo;\n        }, {});\n      }\n      model.set(value, options);\n    }\n  };\n\n  // Returns the given `attr`'s value from the `model`, escaping and\n  // formatting if necessary. If `attr` is an array, then an array of\n  // respective values will be returned.\n  var getAttr = function(model, attr, config) {\n    var view = config.view;\n    var retrieveVal = function(field) {\n      return model[config.escape ? 'escape' : 'get'](field);\n    };\n    var sanitizeVal = function(val) {\n      return val == null ? '' : val;\n    };\n    var val = _.isArray(attr) ? _.map(attr, retrieveVal) : retrieveVal(attr);\n    if (config.onGet) val = applyViewFn.call(view, config.onGet, val, config);\n    return _.isArray(val) ? _.map(val, sanitizeVal) : sanitizeVal(val);\n  };\n\n  // Find handlers in `Backbone.Stickit._handlers` with selectors that match\n  // `$el` and generate a configuration by mixing them in the order that they\n  // were found with the given `binding`.\n  var getConfiguration = Stickit.getConfiguration = function($el, binding) {\n    var handlers = [{\n      updateModel: false,\n      updateMethod: 'text',\n      update: function($el, val, m, opts) { if ($el[opts.updateMethod]) $el[opts.updateMethod](val); },\n      getVal: function($el, e, opts) { return $el[opts.updateMethod](); }\n    }];\n    handlers = handlers.concat(_.filter(Stickit._handlers, function(handler) {\n      return $el.is(handler.selector);\n    }));\n    handlers.push(binding);\n\n    // Merge handlers into a single config object. Last props in wins.\n    var config = _.extend.apply(_, handlers);\n\n    // `updateView` is defaulted to false for configutrations with\n    // `visible`; otherwise, `updateView` is defaulted to true.\n    if (!_.has(config, 'updateView')) config.updateView = !config.visible;\n    return config;\n  };\n\n  // Setup the attributes configuration - a list that maps an attribute or\n  // property `name`, to an `observe`d model attribute, using an optional\n  // `onGet` formatter.\n  //\n  //     attributes: [{\n  //       name: 'attributeOrPropertyName',\n  //       observe: 'modelAttrName'\n  //       onGet: function(modelAttrVal, modelAttrName) { ... }\n  //     }, ...]\n  //\n  var initializeAttributes = function($el, config, model, modelAttr) {\n    var props = ['autofocus', 'autoplay', 'async', 'checked', 'controls',\n      'defer', 'disabled', 'hidden', 'indeterminate', 'loop', 'multiple',\n      'open', 'readonly', 'required', 'scoped', 'selected'];\n\n    var view = config.view;\n\n    _.each(config.attributes || [], function(attrConfig) {\n      attrConfig = _.clone(attrConfig);\n      attrConfig.view = view;\n\n      var lastClass = '';\n      var observed = attrConfig.observe || (attrConfig.observe = modelAttr);\n      var updateAttr = function() {\n        var updateType = _.contains(props, attrConfig.name) ? 'prop' : 'attr',\n            val = getAttr(model, observed, attrConfig);\n\n        // If it is a class then we need to remove the last value and add the new.\n        if (attrConfig.name === 'class') {\n          $el.removeClass(lastClass).addClass(val);\n          lastClass = val;\n        } else {\n          $el[updateType](attrConfig.name, val);\n        }\n      };\n\n      _.each(_.flatten([observed]), function(attr) {\n        observeModelEvent(model, 'change:' + attr, config, updateAttr);\n      });\n\n      // Initialize the matched element's state.\n      updateAttr();\n    });\n  };\n\n  var initializeClasses = function($el, config, model, modelAttr) {\n    _.each(config.classes || [], function(classConfig, name) {\n      if (_.isString(classConfig)) classConfig = {observe: classConfig};\n      classConfig.view = config.view;\n\n      var observed = classConfig.observe;\n      var updateClass = function() {\n        var val = getAttr(model, observed, classConfig);\n        $el.toggleClass(name, !!val);\n      };\n\n      _.each(_.flatten([observed]), function(attr) {\n        observeModelEvent(model, 'change:' + attr, config, updateClass);\n      });\n      updateClass();\n    });\n  };\n\n  // If `visible` is configured, then the view element will be shown/hidden\n  // based on the truthiness of the modelattr's value or the result of the\n  // given callback. If a `visibleFn` is also supplied, then that callback\n  // will be executed to manually handle showing/hiding the view element.\n  //\n  //     observe: 'isRight',\n  //     visible: true, // or function(val, options) {}\n  //     visibleFn: function($el, isVisible, options) {} // optional handler\n  //\n  var initializeVisible = function($el, config, model, modelAttr) {\n    if (config.visible == null) return;\n    var view = config.view;\n\n    var visibleCb = function() {\n      var visible = config.visible,\n          visibleFn = config.visibleFn,\n          val = getAttr(model, modelAttr, config),\n          isVisible = !!val;\n\n      // If `visible` is a function then it should return a boolean result to show/hide.\n      if (_.isFunction(visible) || _.isString(visible)) {\n        isVisible = !!applyViewFn.call(view, visible, val, config);\n      }\n\n      // Either use the custom `visibleFn`, if provided, or execute the standard show/hide.\n      if (visibleFn) {\n        applyViewFn.call(view, visibleFn, $el, isVisible, config);\n      } else {\n        $el.toggle(isVisible);\n      }\n    };\n\n    _.each(_.flatten([modelAttr]), function(attr) {\n      observeModelEvent(model, 'change:' + attr, config, visibleCb);\n    });\n\n    visibleCb();\n  };\n\n  // Update the value of `$el` using the given configuration and trigger the\n  // `afterUpdate` callback. This action may be blocked by `config.updateView`.\n  //\n  //     update: function($el, val, model, options) {},  // handler for updating\n  //     updateView: true, // defaults to true\n  //     afterUpdate: function($el, val, options) {} // optional callback\n  //\n  var updateViewBindEl = function($el, config, val, model, isInitializing) {\n    var view = config.view;\n    if (!evaluateBoolean(config.updateView, val, config)) return;\n    applyViewFn.call(view, config.update, $el, val, model, config);\n    if (!isInitializing) applyViewFn.call(view, config.afterUpdate, $el, val, config);\n  };\n\n  // Default Handlers\n  // ----------------\n\n  Stickit.addHandler([{\n    selector: '[contenteditable]',\n    updateMethod: 'html',\n    events: ['input', 'change']\n  }, {\n    selector: 'input',\n    events: ['propertychange', 'input', 'change'],\n    update: function($el, val) { $el.val(val); },\n    getVal: function($el) {\n      return $el.val();\n    }\n  }, {\n    selector: 'textarea',\n    events: ['propertychange', 'input', 'change'],\n    update: function($el, val) { $el.val(val); },\n    getVal: function($el) { return $el.val(); }\n  }, {\n    selector: 'input[type=\"radio\"]',\n    events: ['change'],\n    update: function($el, val) {\n      $el.filter('[value=\"'+val+'\"]').prop('checked', true);\n    },\n    getVal: function($el) {\n      return $el.filter(':checked').val();\n    }\n  }, {\n    selector: 'input[type=\"checkbox\"]',\n    events: ['change'],\n    update: function($el, val, model, options) {\n      if ($el.length > 1) {\n        // There are multiple checkboxes so we need to go through them and check\n        // any that have value attributes that match what's in the array of `val`s.\n        val || (val = []);\n        $el.each(function(i, el) {\n          var checkbox = Backbone.$(el);\n          var checkboxVal = checkbox.val();\n          var checked = _.some(val, function(item) { return ''+item === checkboxVal; });\n          checkbox.prop('checked', checked);\n        });\n      } else {\n        var checked = _.isBoolean(val) ? val : ''+val === $el.val();\n        $el.prop('checked', checked);\n      }\n    },\n    getVal: function($el) {\n      var val;\n      if ($el.length > 1) {\n        val = _.reduce($el, function(memo, el) {\n          var checkbox = Backbone.$(el);\n          if (checkbox.prop('checked')) memo.push(checkbox.val());\n          return memo;\n        }, []);\n      } else {\n        val = $el.prop('checked');\n        // If the checkbox has a value attribute defined, then\n        // use that value. Most browsers use \"on\" as a default.\n        var boxval = $el.val();\n        if (boxval !== 'on' && boxval != null) {\n          val = val ? $el.val() : null;\n        }\n      }\n      return val;\n    }\n  }, {\n    selector: 'select',\n    events: ['change'],\n    update: function($el, val, model, options) {\n      var optList,\n        selectConfig = options.selectOptions,\n        list = selectConfig && selectConfig.collection || undefined,\n        isMultiple = $el.prop('multiple');\n\n      // If there are no `selectOptions` then we assume that the `<select>`\n      // is pre-rendered and that we need to generate the collection.\n      if (!selectConfig) {\n        selectConfig = {};\n        var getList = function($el) {\n          return $el.map(function(index, option) {\n            // Retrieve the text and value of the option, preferring \"stickit-bind-val\"\n            // data attribute over value property.\n            var dataVal = Backbone.$(option).data('stickit-bind-val');\n            return {\n              value: dataVal !== undefined ? dataVal : option.value,\n              label: option.text\n            };\n          }).get();\n        };\n        if ($el.find('optgroup').length) {\n          list = {opt_labels:[]};\n          // Search for options without optgroup\n          if ($el.find('> option').length) {\n            list.opt_labels.push(undefined);\n            _.each($el.find('> option'), function(el) {\n              list[undefined] = getList(Backbone.$(el));\n            });\n          }\n          _.each($el.find('optgroup'), function(el) {\n            var label = Backbone.$(el).attr('label');\n            list.opt_labels.push(label);\n            list[label] = getList(Backbone.$(el).find('option'));\n          });\n        } else {\n          list = getList($el.find('option'));\n        }\n      }\n\n      // Fill in default label and path values.\n      selectConfig.valuePath = selectConfig.valuePath || 'value';\n      selectConfig.labelPath = selectConfig.labelPath || 'label';\n      selectConfig.disabledPath = selectConfig.disabledPath || 'disabled';\n\n      var addSelectOptions = function(optList, $el, fieldVal) {\n        _.each(optList, function(obj) {\n          var option = Backbone.$('<option/>'), optionVal = obj;\n\n          var fillOption = function(text, val, disabled) {\n            option.text(text);\n            optionVal = val;\n            // Save the option value as data so that we can reference it later.\n            option.data('stickit-bind-val', optionVal);\n            if (!_.isArray(optionVal) && !_.isObject(optionVal)) option.val(optionVal);\n\n            if (disabled === true) option.prop('disabled', 'disabled');\n          };\n\n          var text, val, disabled;\n          if (obj === '__default__') {\n            text = fieldVal.label,\n            val = fieldVal.value,\n            disabled = fieldVal.disabled;\n          } else {\n            text = evaluatePath(obj, selectConfig.labelPath),\n            val = evaluatePath(obj, selectConfig.valuePath),\n            disabled = evaluatePath(obj, selectConfig.disabledPath);\n          }\n          fillOption(text, val, disabled);\n\n          // Determine if this option is selected.\n          var isSelected = function() {\n            if (!isMultiple && optionVal != null && fieldVal != null && optionVal === fieldVal) {\n              return true;\n            } else if (_.isObject(fieldVal) && _.isEqual(optionVal, fieldVal)) {\n              return true;\n            }\n            return false;\n          };\n\n          if (isSelected()) {\n            option.prop('selected', true);\n          } else if (isMultiple && _.isArray(fieldVal)) {\n            _.each(fieldVal, function(val) {\n              if (_.isObject(val)) val = evaluatePath(val, selectConfig.valuePath);\n              if (val === optionVal || (_.isObject(val) && _.isEqual(optionVal, val)))\n                option.prop('selected', true);\n            });\n          }\n\n          $el.append(option);\n        });\n      };\n\n      $el.find('*').remove();\n\n      // The `list` configuration is a function that returns the options list or a string\n      // which represents the path to the list relative to `window` or the view/`this`.\n      if (_.isString(list)) {\n        var context = window;\n        if (list.indexOf('this.') === 0) context = this;\n        list = list.replace(/^[a-z]*\\.(.+)$/, '$1');\n        optList = evaluatePath(context, list);\n      } else if (_.isFunction(list)) {\n        optList = applyViewFn.call(this, list, $el, options);\n      } else {\n        optList = list;\n      }\n\n      // Support Backbone.Collection and deserialize.\n      if (optList instanceof Backbone.Collection) {\n        var collection = optList;\n        var refreshSelectOptions = function() {\n          var currentVal = getAttr(model, options.observe, options);\n          applyViewFn.call(this, options.update, $el, currentVal, model, options);\n        };\n        // We need to call this function after unstickit and after an update so we don't end up\n        // with multiple listeners doing the same thing\n        var removeCollectionListeners = function() {\n          collection.off('add remove reset sort', refreshSelectOptions);\n        };\n        var removeAllListeners = function() {\n          removeCollectionListeners();\n          collection.off('stickit:selectRefresh');\n          collection.off('stickit:selectRefreshForView');\n          model.off('stickit:selectRefresh');\n        };\n        collection.trigger('stickit:selectRefreshForView', this.cid);\n        // Compare the view cid on the event to this.cid to ensure we don't\n        // remove events from the collection that are tied to other views.\n        collection.once('stickit:selectRefreshForView', function(viewCid) {\n          if(this.cid == viewCid){\n            // Remove previously set event listeners by triggering a custom event\n            collection.trigger('stickit:selectRefresh');\n          }\n        }, this);\n        collection.once('stickit:selectRefresh', removeCollectionListeners, this);\n\n        // Listen to the collection and trigger an update of the select options\n        collection.on('add remove reset sort', refreshSelectOptions, this);\n\n        // Remove the previous model event listener\n        model.trigger('stickit:selectRefresh');\n        model.once('stickit:selectRefresh', function() {\n          model.off('stickit:unstuck', removeAllListeners);\n        });\n        // Remove collection event listeners once this binding is unstuck\n        model.once('stickit:unstuck', removeAllListeners, this);\n        optList = optList.toJSON();\n      }\n\n      if (selectConfig.defaultOption) {\n        var option = _.isFunction(selectConfig.defaultOption) ?\n          selectConfig.defaultOption.call(this, $el, options) :\n          selectConfig.defaultOption;\n        addSelectOptions([\"__default__\"], $el, option);\n      }\n\n      if (_.isArray(optList)) {\n        addSelectOptions(optList, $el, val);\n      } else if (optList.opt_labels) {\n        // To define a select with optgroups, format selectOptions.collection as an object\n        // with an 'opt_labels' property, as in the following:\n        //\n        //     {\n        //       'opt_labels': ['Looney Tunes', 'Three Stooges'],\n        //       'Looney Tunes': [{id: 1, name: 'Bugs Bunny'}, {id: 2, name: 'Donald Duck'}],\n        //       'Three Stooges': [{id: 3, name : 'moe'}, {id: 4, name : 'larry'}, {id: 5, name : 'curly'}]\n        //     }\n        //\n        _.each(optList.opt_labels, function(label) {\n          var $group = Backbone.$('<optgroup/>').attr('label', label);\n          addSelectOptions(optList[label], $group, val);\n          $el.append($group);\n        });\n        // With no 'opt_labels' parameter, the object is assumed to be a simple value-label map.\n        // Pass a selectOptions.comparator to override the default order of alphabetical by label.\n      } else {\n        var opts = [], opt;\n        for (var i in optList) {\n          opt = {};\n          opt[selectConfig.valuePath] = i;\n          opt[selectConfig.labelPath] = optList[i];\n          opts.push(opt);\n        }\n        opts = _.sortBy(opts, selectConfig.comparator || selectConfig.labelPath);\n        addSelectOptions(opts, $el, val);\n      }\n    },\n    getVal: function($el) {\n      var selected = $el.find('option:selected');\n\n      if ($el.prop('multiple')) {\n        return _.map(selected, function(el) {\n          return Backbone.$(el).data('stickit-bind-val');\n        });\n      } else {\n        return selected.data('stickit-bind-val');\n      }\n    }\n  }]);\n\n  return Stickit;\n\n}));\n","(function ($) {\n\t\"use strict\";\n    window.SuperflyView = Backbone.View.extend({\n        bindings: function () { // bindings for input fields\n            var result = {};\n\n            result['[name*=\"sf_options[sf_active_menu]\"]']           = 'sf_active_menu';\n            result['[name*=\"sf_options[sf_alternative_menu]\"]']      = 'sf_alternative_menu';\n            result['[name*=\"sf_options[sf_test_mode]\"]']             = 'sf_test_mode';\n            result['[name*=\"sf_options[sf_display]\"]']               = 'sf_display';\n\n            result['[name*=\"sf_options[sf_sidebar_style]\"]']         = 'sf_sidebar_style';\n            result['[name*=\"sf_options[sf_sidebar_behaviour]\"]']     = 'sf_sidebar_behaviour';\n            result['[name*=\"sf_options[sf_sidebar_pos]\"]']           = 'sf_sidebar_pos';\n            result['[name*=\"sf_options[sf_skew_type]\"]']             = 'sf_skew_type';\n            result['[name*=\"sf_options[sf_fs_layout]\"]']             = 'sf_fs_layout';\n            result['[name*=\"sf_options[sf_opening_type]\"]']          = 'sf_opening_type';\n            result['[name*=\"sf_options[sf_sub_type]\"]']              = 'sf_sub_type';\n            result['[name*=\"sf_options[sf_sub_opening_type]\"]']      = 'sf_sub_opening_type';\n            result['[name*=\"sf_options[sf_fade_content]\"]']          = 'sf_fade_content';\n            result['[name*=\"sf_options[sf_fade_full]\"]']             = 'sf_fade_full';\n            result['[name*=\"sf_options[sf_full_sec]\"]']              = 'sf_full_sec';\n            result['[name*=\"sf_options[sf_full_head]\"]']             = 'sf_full_head';\n            result['[name*=\"sf_options[sf_full_x]\"]']                = 'sf_full_x';\n            result['[name*=\"sf_options[sf_blur_content]\"]']          = 'sf_blur_content';\n            result['[name*=\"sf_options[sf_transparent_panel]\"]']     = 'sf_transparent_panel';\n            result['[name*=\"sf_options[sf_transition]\"]']            = 'sf_transition';\n\n            result['[name*=\"sf_options[sf_width_panel_1]\"]']         = 'sf_width_panel_1';\n            result['[name*=\"sf_options[sf_bg_color_panel_1]\"]']      = 'sf_bg_color_panel_1';\n            result['[name*=\"sf_options[sf_color_panel_1]\"]']         = 'sf_color_panel_1';\n            result['[name*=\"sf_options[sf_scolor_panel_1]\"]']        = 'sf_scolor_panel_1';\n            result['[name*=\"sf_options[sf_hover_panel_1]\"]']         = 'sf_hover_panel_1';\n            result['[name*=\"sf_options[sf_image_bg]\"]']              = 'sf_image_bg';\n            result['[name*=\"sf_options[sf_width_panel_2]\"]']         = 'sf_width_panel_2';\n            result['[name*=\"sf_options[sf_bg_color_panel_2]\"]']      = 'sf_bg_color_panel_2';\n            result['[name*=\"sf_options[sf_color_panel_2]\"]']         = 'sf_color_panel_2';\n            result['[name*=\"sf_options[sf_scolor_panel_2]\"]']        = 'sf_scolor_panel_2';\n            result['[name*=\"sf_options[sf_hover_panel_2]\"]']         = 'sf_hover_panel_2';\n            result['[name*=\"sf_options[sf_width_panel_3]\"]']         = 'sf_width_panel_3';\n            result['[name*=\"sf_options[sf_bg_color_panel_3]\"]']      = 'sf_bg_color_panel_3';\n            result['[name*=\"sf_options[sf_color_panel_3]\"]']         = 'sf_color_panel_3';\n            result['[name*=\"sf_options[sf_scolor_panel_3]\"]']        = 'sf_scolor_panel_3';\n            result['[name*=\"sf_options[sf_hover_panel_3]\"]']         = 'sf_hover_panel_3';\n            result['[name*=\"sf_options[sf_width_panel_4]\"]']         = 'sf_width_panel_4';\n            result['[name*=\"sf_options[sf_bg_color_panel_4]\"]']      = 'sf_bg_color_panel_4';\n            result['[name*=\"sf_options[sf_color_panel_4]\"]']         = 'sf_color_panel_4';\n            result['[name*=\"sf_options[sf_scolor_panel_4]\"]']        = 'sf_scolor_panel_4';\n            result['[name*=\"sf_options[sf_hover_panel_4]\"]']         = 'sf_hover_panel_4';\n            result['[name*=\"sf_options[sf_chapter_1]\"]']             = 'sf_chapter_1';\n            result['[name*=\"sf_options[sf_chapter_2]\"]']             = 'sf_chapter_2';\n            result['[name*=\"sf_options[sf_chapter_3]\"]']             = 'sf_chapter_3';\n            result['[name*=\"sf_options[sf_chapter_4]\"]']             = 'sf_chapter_4';\n\n            result['[name*=\"sf_options[sf_tab_logo]\"]']              = 'sf_tab_logo';\n            result['[name*=\"sf_options[sf_logo_size]\"]']             = 'sf_logo_size';\n            result['[name*=\"sf_options[sf_first_line]\"]']            = 'sf_first_line';\n            result['[name*=\"sf_options[sf_sec_line]\"]']              = 'sf_sec_line';\n\n            result['[name*=\"sf_options[sf_facebook]\"]']              = 'sf_facebook';\n            result['[name*=\"sf_options[sf_dribbble]\"]']              = 'sf_dribbble';\n            result['[name*=\"sf_options[sf_twitter]\"]']               = 'sf_twitter';\n            result['[name*=\"sf_options[sf_youtube]\"]']               = 'sf_youtube';\n            result['[name*=\"sf_options[sf_linkedin]\"]']              = 'sf_linkedin';\n            result['[name*=\"sf_options[sf_vimeo]\"]']                 = 'sf_vimeo';\n            result['[name*=\"sf_options[sf_gplus]\"]']                 = 'sf_gplus';\n            result['[name*=\"sf_options[sf_soundcloud]\"]']            = 'sf_soundcloud';\n            result['[name*=\"sf_options[sf_instagram]\"]']             = 'sf_instagram';\n            result['[name*=\"sf_options[sf_email]\"]']                 = 'sf_email';\n            result['[name*=\"sf_options[sf_pinterest]\"]']             = 'sf_pinterest';\n            result['[name*=\"sf_options[sf_skype]\"]']                 = 'sf_skype';\n            result['[name*=\"sf_options[sf_flickr]\"]']                = 'sf_flickr';\n            result['[name*=\"sf_options[sf_rss]\"]']                   = 'sf_rss';\n\n            result['[name*=\"sf_options[sf_social_style]\"]']          = 'sf_social_style';\n            result['[name*=\"sf_options[sf_social_color]\"]']          = 'sf_social_color';\n            result['[name*=\"sf_options[sf_social_align]\"]']          = 'sf_social_align';\n\n            result['[name*=\"sf_options[sf_search]\"]']                = 'sf_search';\n            result['[name*=\"sf_options[sf_search_bg]\"]']             = 'sf_search_bg';\n            result['[name*=\"sf_options[sf_copy]\"]']                  = 'sf_copy';\n\n            result['[name*=\"sf_options[sf_font]\"]']                  = 'sf_font';\n            result['[name*=\"sf_options[sf_font_size]\"]']             = 'sf_font_size';\n            result['[name*=\"sf_options[sf_font_weight]\"]']           = 'sf_font_weight';\n            result['[name*=\"sf_options[sf_alignment]\"]']             = 'sf_alignment';\n            result['[name*=\"sf_options[sf_uppercase]\"]']             = 'sf_uppercase';\n            result['[name*=\"sf_options[sf_spacing]\"]']               = 'sf_spacing';\n            result['[name*=\"sf_options[sf_c_font]\"]']                = 'sf_c_font';\n            result['[name*=\"sf_options[sf_c_fs]\"]']                  = 'sf_c_fs';\n            result['[name*=\"sf_options[sf_c_weight]\"]']              = 'sf_c_weight';\n            result['[name*=\"sf_options[sf_c_trans]\"]']               = 'sf_c_trans';\n\n            result['[name*=\"sf_options[sf_padding]\"]']               = 'sf_padding';\n            result['[name*=\"sf_options[sf_padding_h]\"]']             = 'sf_padding_h';\n            result['[name*=\"sf_options[sf_icon_size]\"]']             = 'sf_icon_size';\n            result['[name*=\"sf_options[sf_icon_color]\"]']            = 'sf_icon_color';\n            result['[name*=\"sf_options[sf_fs_dynamic]\"]']            = 'sf_fs_dynamic';\n            result['[name*=\"sf_options[sf_ordered]\"]']               = 'sf_ordered';\n            result['[name*=\"sf_options[sf_ind]\"]']                   = 'sf_ind';\n            result['[name*=\"sf_options[sf_ind_st]\"]']                = 'sf_ind_st';\n            result['[name*=\"sf_options[sf_ind_s]\"]']                 = 'sf_ind_s';\n            result['[name*=\"sf_options[sf_separators]\"]']            = 'sf_separators';\n            result['[name*=\"sf_options[sf_separators_color]\"]']      = 'sf_separators_color';\n            result['[name*=\"sf_options[sf_separators_width]\"]']      = 'sf_separators_width';\n            result['[name*=\"sf_options[sf_highlight]\"]']             = 'sf_highlight';\n            result['[name*=\"sf_options[sf_hover_style]\"]']           = 'sf_hover_style';\n            result['[name*=\"sf_options[sf_highlight_active]\"]']      = 'sf_highlight_active';\n\n            result['[name*=\"sf_options[sf_label_vis]\"]']             = 'sf_label_vis';\n            result['[name*=\"sf_options[sf_label_type]\"]']            = 'sf_label_type';\n            result['[name*=\"sf_options[sf_fixed]\"]']                 = 'sf_fixed';\n            result['[name*=\"sf_options[sf_mob_nav]\"]']               = 'sf_mob_nav';\n            result['[name*=\"sf_options[sf_threshold_point]\"]']       = 'sf_threshold_point';\n            result['[name*=\"sf_options[sf_label_top]\"]']             = 'sf_label_top';\n            result['[name*=\"sf_options[sf_label_top_mobile]\"]']      = 'sf_label_top_mobile';\n            result['[name*=\"sf_options[sf_label_shift]\"]']           = 'sf_label_shift';\n\n            result['[name*=\"sf_options[sf_label_icon]\"]']            = 'sf_label_icon';\n            result['[name*=\"sf_options[sf_label_size]\"]']            = 'sf_label_size';\n            result['[name*=\"sf_options[sf_label_style]\"]']           = 'sf_label_style';\n            result['[name*=\"sf_options[sf_label_width]\"]']           = 'sf_label_width';\n            result['[name*=\"sf_options[sf_label_gaps]\"]']            = 'sf_label_gaps';\n            result['[name*=\"sf_options[sf_label_color]\"]']           = 'sf_label_color';\n            result['[name*=\"sf_options[sf_label_icon_color]\"]']      = 'sf_label_icon_color';\n            result['[name*=\"sf_options[sf_label_text]\"]']            = 'sf_label_text';\n            result['[name*=\"sf_options[sf_label_text_color]\"]']      = 'sf_label_text_color';\n\n            result['[name*=\"sf_options[sf_css]\"]']                   = 'sf_css';\n            result['[name*=\"sf_options[sf_submenu_support]\"]']       = 'sf_submenu_support';\n            result['[name*=\"sf_options[sf_submenu_mob]\"]']           = 'sf_submenu_mob';\n            result['[name*=\"sf_options[sf_submenu_classes]\"]']       = 'sf_submenu_classes';\n            result['[name*=\"sf_options[sf_togglers]\"]']              = 'sf_togglers';\n            result['[name*=\"sf_options[sf_dev]\"]']                   = 'sf_dev';\n\n            result['[name*=\"sf_options[sf_license_name]\"]']          = 'sf_license_name';\n            result['[name*=\"sf_options[sf_license_email]\"]']         = 'sf_license_email';\n            result['[name*=\"sf_options[sf_license_code]\"]']          = 'sf_license_code';\n\n            result['[name*=\"display_default_menu\"]']                 = 'display_default_menu';\n\n            result[\n                '.sf_label_type,\\\n                .sf_fixed,\\\n                .sf_mob_nav,\\\n                .sf_threshold_point,\\\n                .sf_label_top,\\\n                .sf_label_top_mobile,\\\n                .sf_label_shift,\\\n                .sf_label_shift_m,\\\n                .sf_label_icon,\\\n                .sf_label_size,\\\n                .sf_label_style,\\\n                .sf_label_width,\\\n                .sf_label_gaps,\\\n                .sf_label_color,\\\n                .sf_label_icon_color,\\\n                .sf_label_text,\\\n                .sf_label_text_color,\\\n                h1#stylings'\n                ] = {\n                observe: 'sf_label_vis',\n                update: function ($el, val, model, options) {\n                    $el.each(function (i, item) {\n                        $(item).hide();\n                    });\n                    if (val == 'yes') {\n                        $el.each(function (i, item) {\n                            $(item).show();\n                        });\n                    }\n                }\n            }\n\n            result['.sf_sidebar_style'] = {\n                observe: 'sf_sidebar_style',\n                update: function ($el, val, model, options) {\n                    if (val == 'toolbar') model.set('sf_sidebar_behaviour', 'always');\n                    else if (val == 'full') {\n                        model.set('sf_sidebar_behaviour', 'slide');\n                    }\n                }\n            };\n\n            result['.skew-disclaimer'] = {\n                observe: 'sf_sidebar_style',\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if (val == 'skew') $el.show();\n                }\n            };\n            result['.fs-disclaimer'] = {\n                observe: 'sf_sidebar_style',\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if (val == 'full') $el.show();\n                }\n            };\n\n            result['.sf_sidebar_behaviour'] = {\n                observe: 'sf_sidebar_style',\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if (val == 'side' || val == 'skew') $el.css('display', 'inline-block');\n                }\n            };\n\n            result['.sf_skew_type'] = {\n                observe: 'sf_sidebar_style',\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if (val == 'skew') $el.css('display', 'inline-block');\n                }\n            };\n\n            result['.sf_fs_layout'] = {\n                observe: 'sf_sidebar_style',\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if (val == 'full') $el.css('display', 'inline-block');\n                }\n            };\n\n            result['.sf_transparent_panel'] = {\n                observe: 'sf_sidebar_style',\n                update: function ($el, val, model, options) {\n                    $el.css('display', 'inline-block');\n                    if (val == 'full') $el.hide();\n                }\n            };\n\n            result['.sf_fade_content'] = {\n                observe: [\n                    'sf_sidebar_behaviour',\n                    'sf_sidebar_style'\n                ],\n                update: function ($el, val, model, options) {\n                    $el.css('display', 'inline-block');\n                    if (\n                        (val[0] == 'always' && val[1] == 'skew') ||\n                        val[1] == 'full'\n                    ) $el.hide();\n                }\n            };\n\n            result['.sf_sub_opening_type'] = {\n                observe: [\n                    'sf_sidebar_style'\n                ],\n                update: function ($el, val, model, options) {\n                    $el.css('display', 'inline-block');\n                    if (val == 'skew') $el.hide();\n                }\n            };\n\n            result['.sf_blur_content'] = {\n                observe: [\n                    'sf_sidebar_behaviour',\n                    'sf_sidebar_style'\n                ],\n                update: function ($el, val, model, options) {\n                    $el.css('display', 'inline-block');\n                    if (\n                        (val[0] == 'always' && val[1] == 'skew') ||\n                        val[1] == 'full'\n                    )$el.hide();\n                }\n            };\n\n            result['.sf_fade_full'] = {\n                observe: 'sf_sidebar_style',\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if (val == 'full') $el.css('display', 'inline-block');\n                }\n            };\n\n            result['.sf_full_sec'] = {\n                observe: 'sf_sidebar_style',\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if (val == 'full') $el.css('display', 'inline-block');\n                }\n            };\n\n            result['.sf_full_head'] = {\n                observe: 'sf_sidebar_style',\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if (val == 'full') $el.css('display', 'inline-block');\n                }\n            };\n\n            result['.sf_full_x'] = {\n                observe: 'sf_sidebar_style',\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if (val == 'full') $el.css('display', 'inline-block');\n                }\n            };\n\n            result['.sf_sub_type'] = {\n                observe: 'sf_sidebar_style',\n                update: function ($el, val, model, options) {\n                    $el.css('display', 'inline-block');\n                    if ( val != 'side' ) $el.hide();\n                }\n            };\n\n            result['.sf_sub_opening_type'] = {\n                observe: 'sf_sub_type',\n                update: function ($el, val, model, options) {\n                    $el.css('display', 'inline-block');\n                    if (val != 'flyout') $el.hide();\n                }\n            };\n\n            result['.sf_opening_type'] = {\n                observe: [\n                    'sf_sidebar_behaviour',\n                    'sf_sidebar_style'\n                ],\n                update: function ($el, val, model, options) {\n                    $el.css('display', 'inline-block');\n                    if ( val[1] == 'toolbar' || val[1] == 'full') {\n                        $el.hide();\n                    }\n                }\n            };\n\n            result['.sf_ind_s'] = {\n                observe: 'sf_ind',\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if(val != '') $el.show();\n                }\n            };\n\n            result['.sf_ind_st'] = {\n                observe: 'sf_ind',\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if(val != '') $el.show();\n                }\n            };\n\n            result['.sf_separators_color'] = {\n                observe: 'sf_separators',\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if(val != '') $el.show();\n                }\n            };\n\n            result['.sf_separators_width'] = {\n                observe: 'sf_separators',\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if(val != '') $el.show();\n                }\n            };\n\n            result['.sf_label_text_field'] = {\n                observe: ['sf_label_text', 'sf_label_vis'],\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if(val[0] == 'yes' && val[1] == 'yes') $el.css('display', 'inline-block');\n                }\n            };\n\n            result['.sf_label_width'] = {\n                observe: ['sf_label_type', 'sf_label_vis'],\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if(val[0] == 'default' && val[1] && val[1] == 'yes') $el.show();\n                }\n            };\n\n            result['.sf_label_gaps'] = {\n                observe: ['sf_label_type', 'sf_label_vis'],\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if(val[0] == 'default' && val[1] && val[1] == 'yes') $el.show();\n                }\n            };\n\n            result['.sf_label_icon'] = {\n                observe: ['sf_label_type', 'sf_label_vis'],\n                update: function ($el, val, model, options) {\n                    $el.hide();\n                    if(val[0] == 'custom' && val[1] && val[1] == 'yes') $el.show();\n                }\n            };\n\n            result['.sf-menu__loc_popup .dw_pages_wrap'] = {\n                observe: ['display_default_menu'],\n                update: function ($el, val, model, options) {\n                    console.log('fire');\n                    $el.show();\n                    if(val)\n                        $el.hide();\n                }\n            };\n\n            return result;\n        },\n        render: function () {\n            this.stickit();\n            return this;\n        },\n        close: function () {\n            this.unstickit();\n        }\n    });\n})(jQuery);","// TinyColor v1.4.2\n// https://github.com/bgrins/TinyColor\n// 2013-08-10, Brian Grinstead, MIT License\n\n(function() {\n\t'use strict';\n\t\n\tvar trimLeft = /^[\\s,#]+/,\n\t\ttrimRight = /\\s+$/,\n\t\ttinyCounter = 0,\n\t\tmath = Math,\n\t\tmathRound = math.round,\n\t\tmathMin = math.min,\n\t\tmathMax = math.max,\n\t\tmathRandom = math.random;\n\t\n\tfunction tinycolor (color, opts) {\n\t\t\n\t\tcolor = (color) ? color : '';\n\t\topts = opts || { };\n\t\t\n\t\t// If input is already a tinycolor, return itself\n\t\tif (typeof color == \"object\" && color.hasOwnProperty(\"_tc_id\")) {\n\t\t\treturn color;\n\t\t}\n\t\t\n\t\tvar rgb = inputToRGB(color);\n\t\tvar r = rgb.r,\n\t\t\tg = rgb.g,\n\t\t\tb = rgb.b,\n\t\t\ta = rgb.a,\n\t\t\troundA = mathRound(100*a) / 100,\n\t\t\tformat = opts.format || rgb.format;\n\t\t\n\t\t// Don't let the range of [0,255] come back in [0,1].\n\t\t// Potentially lose a little bit of precision here, but will fix issues where\n\t\t// .5 gets interpreted as half of the total, instead of half of 1\n\t\t// If it was supposed to be 128, this was already taken care of by `inputToRgb`\n\t\tif (r < 1) { r = mathRound(r); }\n\t\tif (g < 1) { g = mathRound(g); }\n\t\tif (b < 1) { b = mathRound(b); }\n\t\t\n\t\treturn {\n\t\t\tok: rgb.ok,\n\t\t\tformat: format,\n\t\t\t_tc_id: tinyCounter++,\n\t\t\talpha: a,\n\t\t\tgetAlpha: function() {\n\t\t\t\treturn a;\n\t\t\t},\n\t\t\tsetAlpha: function(value) {\n\t\t\t\ta = boundAlpha(value);\n\t\t\t\troundA = mathRound(100*a) / 100;\n\t\t\t},\n\t\t\ttoHsv: function() {\n\t\t\t\tvar hsv = rgbToHsv(r, g, b);\n\t\t\t\treturn { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: a };\n\t\t\t},\n\t\t\ttoHsvString: function() {\n\t\t\t\tvar hsv = rgbToHsv(r, g, b);\n\t\t\t\tvar h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n\t\t\t\treturn (a == 1) ?\n\t\t\t\t\t\"hsv(\"  + h + \", \" + s + \"%, \" + v + \"%)\" :\n\t\t\t\t\t\"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ roundA + \")\";\n\t\t\t},\n\t\t\ttoHsl: function() {\n\t\t\t\tvar hsl = rgbToHsl(r, g, b);\n\t\t\t\treturn { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: a };\n\t\t\t},\n\t\t\ttoHslString: function() {\n\t\t\t\tvar hsl = rgbToHsl(r, g, b);\n\t\t\t\tvar h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n\t\t\t\treturn (a == 1) ?\n\t\t\t\t\t\"hsl(\"  + h + \", \" + s + \"%, \" + l + \"%)\" :\n\t\t\t\t\t\"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ roundA + \")\";\n\t\t\t},\n\t\t\ttoHex: function(allow3Char) {\n\t\t\t\treturn rgbToHex(r, g, b, allow3Char);\n\t\t\t},\n\t\t\ttoHexString: function(allow3Char) {\n\t\t\t\treturn '#' + rgbToHex(r, g, b, allow3Char);\n\t\t\t},\n\t\t\ttoRgb: function() {\n\t\t\t\treturn { r: mathRound(r), g: mathRound(g), b: mathRound(b), a: a };\n\t\t\t},\n\t\t\ttoRgbString: function() {\n\t\t\t\treturn (a == 1) ?\n\t\t\t\t\t\"rgb(\"  + mathRound(r) + \", \" + mathRound(g) + \", \" + mathRound(b) + \")\" :\n\t\t\t\t\t\"rgba(\" + mathRound(r) + \", \" + mathRound(g) + \", \" + mathRound(b) + \", \" + roundA + \")\";\n\t\t\t},\n\t\t\ttoPercentageRgb: function() {\n\t\t\t\treturn { r: mathRound(bound01(r, 255) * 100) + \"%\", g: mathRound(bound01(g, 255) * 100) + \"%\", b: mathRound(bound01(b, 255) * 100) + \"%\", a: a };\n\t\t\t},\n\t\t\ttoPercentageRgbString: function() {\n\t\t\t\treturn (a == 1) ?\n\t\t\t\t\t\"rgb(\"  + mathRound(bound01(r, 255) * 100) + \"%, \" + mathRound(bound01(g, 255) * 100) + \"%, \" + mathRound(bound01(b, 255) * 100) + \"%)\" :\n\t\t\t\t\t\"rgba(\" + mathRound(bound01(r, 255) * 100) + \"%, \" + mathRound(bound01(g, 255) * 100) + \"%, \" + mathRound(bound01(b, 255) * 100) + \"%, \" + roundA + \")\";\n\t\t\t},\n\t\t\ttoName: function() {\n\t\t\t\tif (a === 0) {\n\t\t\t\t\treturn \"transparent\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn hexNames[rgbToHex(r, g, b, true)] || false;\n\t\t\t},\n\t\t\ttoFilter: function(secondColor) {\n\t\t\t\tvar hex = rgbToHex(r, g, b);\n\t\t\t\tvar secondHex = hex;\n\t\t\t\tvar alphaHex = Math.round(parseFloat(a) * 255).toString(16);\n\t\t\t\tvar secondAlphaHex = alphaHex;\n\t\t\t\tvar gradientType = opts && opts.gradientType ? \"GradientType = 1, \" : \"\";\n\t\t\t\t\n\t\t\t\tif (secondColor) {\n\t\t\t\t\tvar s = tinycolor(secondColor);\n\t\t\t\t\tsecondHex = s.toHex();\n\t\t\t\t\tsecondAlphaHex = Math.round(parseFloat(s.alpha) * 255).toString(16);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=#\" + pad2(alphaHex) + hex + \",endColorstr=#\" + pad2(secondAlphaHex) + secondHex + \")\";\n\t\t\t},\n\t\t\ttoString: function(format) {\n\t\t\t\tvar formatSet = !!format;\n\t\t\t\tformat = format || this.format;\n\t\t\t\t\n\t\t\t\tvar formattedString = false;\n\t\t\t\tvar hasAlphaAndFormatNotSet = !formatSet && a < 1 && a > 0;\n\t\t\t\tvar formatWithAlpha = hasAlphaAndFormatNotSet && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"name\");\n\t\t\t\t\n\t\t\t\tif (format === \"rgb\") {\n\t\t\t\t\tformattedString = this.toRgbString();\n\t\t\t\t}\n\t\t\t\tif (format === \"prgb\") {\n\t\t\t\t\tformattedString = this.toPercentageRgbString();\n\t\t\t\t}\n\t\t\t\tif (format === \"hex\" || format === \"hex6\") {\n\t\t\t\t\tformattedString = this.toHexString();\n\t\t\t\t}\n\t\t\t\tif (format === \"hex3\") {\n\t\t\t\t\tformattedString = this.toHexString(true);\n\t\t\t\t}\n\t\t\t\tif (format === \"name\") {\n\t\t\t\t\tformattedString = this.toName();\n\t\t\t\t}\n\t\t\t\tif (format === \"hsl\") {\n\t\t\t\t\tformattedString = this.toHslString();\n\t\t\t\t}\n\t\t\t\tif (format === \"hsv\") {\n\t\t\t\t\tformattedString = this.toHsvString();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (formatWithAlpha) {\n\t\t\t\t\treturn this.toRgbString();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn formattedString || this.toHexString();\n\t\t\t}\n\t\t};\n\t}\n\t\n\t// If input is an object, force 1 into \"1.0\" to handle ratios properly\n\t// String input requires \"1.0\" as input, so 1 will be treated as 1\n\ttinycolor.fromRatio = function(color, opts) {\n\t\tif (typeof color == \"object\") {\n\t\t\tvar newColor = {};\n\t\t\tfor (var i in color) {\n\t\t\t\tif (color.hasOwnProperty(i)) {\n\t\t\t\t\tif (i === \"a\") {\n\t\t\t\t\t\tnewColor[i] = color[i];\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tnewColor[i] = convertToPercentage(color[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcolor = newColor;\n\t\t}\n\t\t\n\t\treturn tinycolor(color, opts);\n\t};\n\t\n\t// Given a string or object, convert that input to RGB\n\t// Possible string inputs:\n\t//\n\t//     \"red\"\n\t//     \"#f00\" or \"f00\"\n\t//     \"#ff0000\" or \"ff0000\"\n\t//     \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n\t//     \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n\t//     \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n\t//     \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n\t//     \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n\t//     \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n\t//     \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n\t//\n\tfunction inputToRGB(color) {\n\t\t\n\t\tvar rgb = { r: 0, g: 0, b: 0 };\n\t\tvar a = 1;\n\t\tvar ok = false;\n\t\tvar format = false;\n\t\t\n\t\tif (typeof color == \"string\") {\n\t\t\tcolor = stringInputToObject(color);\n\t\t}\n\t\t\n\t\tif (typeof color == \"object\") {\n\t\t\tif (color.hasOwnProperty(\"r\") && color.hasOwnProperty(\"g\") && color.hasOwnProperty(\"b\")) {\n\t\t\t\trgb = rgbToRgb(color.r, color.g, color.b);\n\t\t\t\tok = true;\n\t\t\t\tformat = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n\t\t\t}\n\t\t\telse if (color.hasOwnProperty(\"h\") && color.hasOwnProperty(\"s\") && color.hasOwnProperty(\"v\")) {\n\t\t\t\tcolor.s = convertToPercentage(color.s);\n\t\t\t\tcolor.v = convertToPercentage(color.v);\n\t\t\t\trgb = hsvToRgb(color.h, color.s, color.v);\n\t\t\t\tok = true;\n\t\t\t\tformat = \"hsv\";\n\t\t\t}\n\t\t\telse if (color.hasOwnProperty(\"h\") && color.hasOwnProperty(\"s\") && color.hasOwnProperty(\"l\")) {\n\t\t\t\tcolor.s = convertToPercentage(color.s);\n\t\t\t\tcolor.l = convertToPercentage(color.l);\n\t\t\t\trgb = hslToRgb(color.h, color.s, color.l);\n\t\t\t\tok = true;\n\t\t\t\tformat = \"hsl\";\n\t\t\t}\n\t\t\t\n\t\t\tif (color.hasOwnProperty(\"a\")) {\n\t\t\t\ta = color.a;\n\t\t\t}\n\t\t}\n\t\t\n\t\ta = boundAlpha(a);\n\t\t\n\t\treturn {\n\t\t\tok: ok,\n\t\t\tformat: color.format || format,\n\t\t\tr: mathMin(255, mathMax(rgb.r, 0)),\n\t\t\tg: mathMin(255, mathMax(rgb.g, 0)),\n\t\t\tb: mathMin(255, mathMax(rgb.b, 0)),\n\t\t\ta: a\n\t\t};\n\t}\n\t\n\t\n\t// Conversion Functions\n\t// --------------------\n\t\n\t// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n\t// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\t\n\t// `rgbToRgb`\n\t// Handle bounds / percentage checking to conform to CSS color spec\n\t// <http://www.w3.org/TR/css3-color/>\n\t// *Assumes:* r, g, b in [0, 255] or [0, 1]\n\t// *Returns:* { r, g, b } in [0, 255]\n\tfunction rgbToRgb(r, g, b){\n\t\treturn {\n\t\t\tr: bound01(r, 255) * 255,\n\t\t\tg: bound01(g, 255) * 255,\n\t\t\tb: bound01(b, 255) * 255\n\t\t};\n\t}\n\t\n\t// `rgbToHsl`\n\t// Converts an RGB color value to HSL.\n\t// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n\t// *Returns:* { h, s, l } in [0,1]\n\tfunction rgbToHsl(r, g, b) {\n\t\t\n\t\tr = bound01(r, 255);\n\t\tg = bound01(g, 255);\n\t\tb = bound01(b, 255);\n\t\t\n\t\tvar max = mathMax(r, g, b), min = mathMin(r, g, b);\n\t\tvar h, s, l = (max + min) / 2;\n\t\t\n\t\tif(max == min) {\n\t\t\th = s = 0; // achromatic\n\t\t}\n\t\telse {\n\t\t\tvar d = max - min;\n\t\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\t\t\tswitch(max) {\n\t\t\t\tcase r: h = (g - b) / d + (g < b ? 6 : 0); break;\n\t\t\t\tcase g: h = (b - r) / d + 2; break;\n\t\t\t\tcase b: h = (r - g) / d + 4; break;\n\t\t\t}\n\t\t\t\n\t\t\th /= 6;\n\t\t}\n\t\t\n\t\treturn { h: h, s: s, l: l };\n\t}\n\t\n\t// `hslToRgb`\n\t// Converts an HSL color value to RGB.\n\t// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n\t// *Returns:* { r, g, b } in the set [0, 255]\n\tfunction hslToRgb(h, s, l) {\n\t\tvar r, g, b;\n\t\t\n\t\th = bound01(h, 360);\n\t\ts = bound01(s, 100);\n\t\tl = bound01(l, 100);\n\t\t\n\t\tfunction hue2rgb(p, q, t) {\n\t\t\tif(t < 0) t += 1;\n\t\t\tif(t > 1) t -= 1;\n\t\t\tif(t < 1/6) return p + (q - p) * 6 * t;\n\t\t\tif(t < 1/2) return q;\n\t\t\tif(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n\t\t\treturn p;\n\t\t}\n\t\t\n\t\tif(s === 0) {\n\t\t\tr = g = b = l; // achromatic\n\t\t}\n\t\telse {\n\t\t\tvar q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\t\t\tvar p = 2 * l - q;\n\t\t\tr = hue2rgb(p, q, h + 1/3);\n\t\t\tg = hue2rgb(p, q, h);\n\t\t\tb = hue2rgb(p, q, h - 1/3);\n\t\t}\n\t\t\n\t\treturn { r: r * 255, g: g * 255, b: b * 255 };\n\t}\n\t\n\t// `rgbToHsv`\n\t// Converts an RGB color value to HSV\n\t// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n\t// *Returns:* { h, s, v } in [0,1]\n\tfunction rgbToHsv(r, g, b) {\n\t\t\n\t\tr = bound01(r, 255);\n\t\tg = bound01(g, 255);\n\t\tb = bound01(b, 255);\n\t\t\n\t\tvar max = mathMax(r, g, b), min = mathMin(r, g, b);\n\t\tvar h, s, v = max;\n\t\t\n\t\tvar d = max - min;\n\t\ts = max === 0 ? 0 : d / max;\n\t\t\n\t\tif(max == min) {\n\t\t\th = 0; // achromatic\n\t\t}\n\t\telse {\n\t\t\tswitch(max) {\n\t\t\t\tcase r: h = (g - b) / d + (g < b ? 6 : 0); break;\n\t\t\t\tcase g: h = (b - r) / d + 2; break;\n\t\t\t\tcase b: h = (r - g) / d + 4; break;\n\t\t\t}\n\t\t\th /= 6;\n\t\t}\n\t\treturn { h: h, s: s, v: v };\n\t}\n\t\n\t// `hsvToRgb`\n\t// Converts an HSV color value to RGB.\n\t// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n\t// *Returns:* { r, g, b } in the set [0, 255]\n\tfunction hsvToRgb(h, s, v) {\n\t\t\n\t\th = bound01(h, 360) * 6;\n\t\ts = bound01(s, 100);\n\t\tv = bound01(v, 100);\n\t\t\n\t\tvar i = math.floor(h),\n\t\t\tf = h - i,\n\t\t\tp = v * (1 - s),\n\t\t\tq = v * (1 - f * s),\n\t\t\tt = v * (1 - (1 - f) * s),\n\t\t\tmod = i % 6,\n\t\t\tr = [v, q, p, p, t, v][mod],\n\t\t\tg = [t, v, v, q, p, p][mod],\n\t\t\tb = [p, p, t, v, v, q][mod];\n\t\t\n\t\treturn { r: r * 255, g: g * 255, b: b * 255 };\n\t}\n\t\n\t// `rgbToHex`\n\t// Converts an RGB color to hex\n\t// Assumes r, g, and b are contained in the set [0, 255]\n\t// Returns a 3 or 6 character hex\n\tfunction rgbToHex(r, g, b, allow3Char) {\n\t\t\n\t\tvar hex = [\n\t\t\tpad2(mathRound(r).toString(16)),\n\t\t\tpad2(mathRound(g).toString(16)),\n\t\t\tpad2(mathRound(b).toString(16))\n\t\t];\n\t\t\n\t\t// Return a 3 character hex if possible\n\t\tif (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n\t\t\treturn hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n\t\t}\n\t\t\n\t\treturn hex.join(\"\");\n\t}\n\t\n\t// `equals`\n\t// Can be called with any tinycolor input\n\ttinycolor.equals = function (color1, color2) {\n\t\tif (!color1 || !color2) { return false; }\n\t\treturn tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n\t};\n\ttinycolor.random = function() {\n\t\treturn tinycolor.fromRatio({\n\t\t\tr: mathRandom(),\n\t\t\tg: mathRandom(),\n\t\t\tb: mathRandom()\n\t\t});\n\t};\n\t\n\t\n\t// Modification Functions\n\t// ----------------------\n\t// Thalm to less.js for some of the basics here\n\t// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\t\n\ttinycolor.desaturate = function (color, amount) {\n\t\tamount = (amount === 0) ? 0 : (amount || 10);\n\t\tvar hsl = tinycolor(color).toHsl();\n\t\thsl.s -= amount / 100;\n\t\thsl.s = clamp01(hsl.s);\n\t\treturn tinycolor(hsl);\n\t};\n\ttinycolor.saturate = function (color, amount) {\n\t\tamount = (amount === 0) ? 0 : (amount || 10);\n\t\tvar hsl = tinycolor(color).toHsl();\n\t\thsl.s += amount / 100;\n\t\thsl.s = clamp01(hsl.s);\n\t\treturn tinycolor(hsl);\n\t};\n\ttinycolor.greyscale = function(color) {\n\t\treturn tinycolor.desaturate(color, 100);\n\t};\n\ttinycolor.lighten = function(color, amount) {\n\t\tamount = (amount === 0) ? 0 : (amount || 10);\n\t\tvar hsl = tinycolor(color).toHsl();\n\t\thsl.l += amount / 100;\n\t\thsl.l = clamp01(hsl.l);\n\t\treturn tinycolor(hsl);\n\t};\n\ttinycolor.darken = function (color, amount) {\n\t\tamount = (amount === 0) ? 0 : (amount || 10);\n\t\tvar hsl = tinycolor(color).toHsl();\n\t\thsl.l -= amount / 100;\n\t\thsl.l = clamp01(hsl.l);\n\t\treturn tinycolor(hsl);\n\t};\n\ttinycolor.complement = function(color) {\n\t\tvar hsl = tinycolor(color).toHsl();\n\t\thsl.h = (hsl.h + 180) % 360;\n\t\treturn tinycolor(hsl);\n\t};\n\t\n\t\n\t// Combination Functions\n\t// ---------------------\n\t// Thalm to jQuery xColor for some of the ideas behind these\n\t// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\t\n\ttinycolor.triad = function(color) {\n\t\tvar hsl = tinycolor(color).toHsl();\n\t\tvar h = hsl.h;\n\t\treturn [\n\t\t\ttinycolor(color),\n\t\t\ttinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n\t\t\ttinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n\t\t];\n\t};\n\ttinycolor.tetrad = function(color) {\n\t\tvar hsl = tinycolor(color).toHsl();\n\t\tvar h = hsl.h;\n\t\treturn [\n\t\t\ttinycolor(color),\n\t\t\ttinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n\t\t\ttinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n\t\t\ttinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n\t\t];\n\t};\n\ttinycolor.splitcomplement = function(color) {\n\t\tvar hsl = tinycolor(color).toHsl();\n\t\tvar h = hsl.h;\n\t\treturn [\n\t\t\ttinycolor(color),\n\t\t\ttinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n\t\t\ttinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n\t\t];\n\t};\n\ttinycolor.analogous = function(color, results, slices) {\n\t\tresults = results || 6;\n\t\tslices = slices || 30;\n\t\t\n\t\tvar hsl = tinycolor(color).toHsl();\n\t\tvar part = 360 / slices;\n\t\tvar ret = [tinycolor(color)];\n\t\t\n\t\tfor (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n\t\t\thsl.h = (hsl.h + part) % 360;\n\t\t\tret.push(tinycolor(hsl));\n\t\t}\n\t\treturn ret;\n\t};\n\ttinycolor.monochromatic = function(color, results) {\n\t\tresults = results || 6;\n\t\tvar hsv = tinycolor(color).toHsv();\n\t\tvar h = hsv.h, s = hsv.s, v = hsv.v;\n\t\tvar ret = [];\n\t\tvar modification = 1 / results;\n\t\t\n\t\twhile (results--) {\n\t\t\tret.push(tinycolor({ h: h, s: s, v: v}));\n\t\t\tv = (v + modification) % 1;\n\t\t}\n\t\t\n\t\treturn ret;\n\t};\n\t\n\t\n\t// Readability Functions\n\t// ---------------------\n\t// <http://www.w3.org/TR/AERT#color-contrast>\n\t\n\t// `readability`\n\t// Analyze the 2 colors and returns an object with the following properties:\n\t//    `brightness`: difference in brightness between the two colors\n\t//    `color`: difference in color/hue between the two colors\n\ttinycolor.readability = function(color1, color2) {\n\t\tvar a = tinycolor(color1).toRgb();\n\t\tvar b = tinycolor(color2).toRgb();\n\t\tvar brightnessA = (a.r * 299 + a.g * 587 + a.b * 114) / 1000;\n\t\tvar brightnessB = (b.r * 299 + b.g * 587 + b.b * 114) / 1000;\n\t\tvar colorDiff = (\n\t\t\tMath.max(a.r, b.r) - Math.min(a.r, b.r) +\n\t\t\tMath.max(a.g, b.g) - Math.min(a.g, b.g) +\n\t\t\tMath.max(a.b, b.b) - Math.min(a.b, b.b)\n\t\t);\n\t\t\n\t\treturn {\n\t\t\tbrightness: Math.abs(brightnessA - brightnessB),\n\t\t\tcolor: colorDiff\n\t\t};\n\t};\n\t\n\t// `readable`\n\t// http://www.w3.org/TR/AERT#color-contrast\n\t// Ensure that foreground and background color combinations provide sufficient contrast.\n\t// *Example*\n\t//    tinycolor.readable(\"#000\", \"#111\") => false\n\ttinycolor.readable = function(color1, color2) {\n\t\tvar readability = tinycolor.readability(color1, color2);\n\t\treturn readability.brightness > 125 && readability.color > 500;\n\t};\n\t\n\t// `mostReadable`\n\t// Given a base color and a list of possible foreground or background\n\t// colors for that base, returns the most readable color.\n\t// *Example*\n\t//    tinycolor.mostReadable(\"#123\", [\"#fff\", \"#000\"]) => \"#000\"\n\ttinycolor.mostReadable = function(baseColor, colorList) {\n\t\tvar bestColor = null;\n\t\tvar bestScore = 0;\n\t\tvar bestIsReadable = false;\n\t\tfor (var i=0; i < colorList.length; i++) {\n\t\t\t\n\t\t\t// We normalize both around the \"acceptable\" breaking point,\n\t\t\t// but rank brightness constrast higher than hue.\n\t\t\t\n\t\t\tvar readability = tinycolor.readability(baseColor, colorList[i]);\n\t\t\tvar readable = readability.brightness > 125 && readability.color > 500;\n\t\t\tvar score = 3 * (readability.brightness / 125) + (readability.color / 500);\n\t\t\t\n\t\t\tif ((readable && ! bestIsReadable) ||\n\t\t\t\t(readable && bestIsReadable && score > bestScore) ||\n\t\t\t\t((! readable) && (! bestIsReadable) && score > bestScore)) {\n\t\t\t\tbestIsReadable = readable;\n\t\t\t\tbestScore = score;\n\t\t\t\tbestColor = tinycolor(colorList[i]);\n\t\t\t}\n\t\t}\n\t\treturn bestColor;\n\t};\n\t\n\t\n\t// Big List of Colors\n\t// ------------------\n\t// <http://www.w3.org/TR/css3-color/#svg-color>\n\tvar names = tinycolor.names = {\n\t\taliceblue: \"f0f8ff\",\n\t\tantiquewhite: \"faebd7\",\n\t\taqua: \"0ff\",\n\t\taquamarine: \"7fffd4\",\n\t\tazure: \"f0ffff\",\n\t\tbeige: \"f5f5dc\",\n\t\tbisque: \"ffe4c4\",\n\t\tblack: \"000\",\n\t\tblanchedalmond: \"ffebcd\",\n\t\tblue: \"00f\",\n\t\tblueviolet: \"8a2be2\",\n\t\tbrown: \"a52a2a\",\n\t\tburlywood: \"deb887\",\n\t\tburntsienna: \"ea7e5d\",\n\t\tcadetblue: \"5f9ea0\",\n\t\tchartreuse: \"7fff00\",\n\t\tchocolate: \"d2691e\",\n\t\tcoral: \"ff7f50\",\n\t\tcornflowerblue: \"6495ed\",\n\t\tcornsilk: \"fff8dc\",\n\t\tcrimson: \"dc143c\",\n\t\tcyan: \"0ff\",\n\t\tdarkblue: \"00008b\",\n\t\tdarkcyan: \"008b8b\",\n\t\tdarkgoldenrod: \"b8860b\",\n\t\tdarkgray: \"a9a9a9\",\n\t\tdarkgreen: \"006400\",\n\t\tdarkgrey: \"a9a9a9\",\n\t\tdarkkhaki: \"bdb76b\",\n\t\tdarkmagenta: \"8b008b\",\n\t\tdarkolivegreen: \"556b2f\",\n\t\tdarkorange: \"ff8c00\",\n\t\tdarkorchid: \"9932cc\",\n\t\tdarkred: \"8b0000\",\n\t\tdarksalmon: \"e9967a\",\n\t\tdarkseagreen: \"8fbc8f\",\n\t\tdarkslateblue: \"483d8b\",\n\t\tdarkslategray: \"2f4f4f\",\n\t\tdarkslategrey: \"2f4f4f\",\n\t\tdarkturquoise: \"00ced1\",\n\t\tdarkviolet: \"9400d3\",\n\t\tdeeppink: \"ff1493\",\n\t\tdeepskyblue: \"00bfff\",\n\t\tdimgray: \"696969\",\n\t\tdimgrey: \"696969\",\n\t\tdodgerblue: \"1e90ff\",\n\t\tfirebrick: \"b22222\",\n\t\tfloralwhite: \"fffaf0\",\n\t\tforestgreen: \"228b22\",\n\t\tfuchsia: \"f0f\",\n\t\tgainsboro: \"dcdcdc\",\n\t\tghostwhite: \"f8f8ff\",\n\t\tgold: \"ffd700\",\n\t\tgoldenrod: \"daa520\",\n\t\tgray: \"808080\",\n\t\tgreen: \"008000\",\n\t\tgreenyellow: \"adff2f\",\n\t\tgrey: \"808080\",\n\t\thoneydew: \"f0fff0\",\n\t\thotpink: \"ff69b4\",\n\t\tindianred: \"cd5c5c\",\n\t\tindigo: \"4b0082\",\n\t\tivory: \"fffff0\",\n\t\tkhaki: \"f0e68c\",\n\t\tlavender: \"e6e6fa\",\n\t\tlavenderblush: \"fff0f5\",\n\t\tlawngreen: \"7cfc00\",\n\t\tlemonchiffon: \"fffacd\",\n\t\tlightblue: \"add8e6\",\n\t\tlightcoral: \"f08080\",\n\t\tlightcyan: \"e0ffff\",\n\t\tlightgoldenrodyellow: \"fafad2\",\n\t\tlightgray: \"d3d3d3\",\n\t\tlightgreen: \"90ee90\",\n\t\tlightgrey: \"d3d3d3\",\n\t\tlightpink: \"ffb6c1\",\n\t\tlightsalmon: \"ffa07a\",\n\t\tlightseagreen: \"20b2aa\",\n\t\tlightskyblue: \"87cefa\",\n\t\tlightslategray: \"789\",\n\t\tlightslategrey: \"789\",\n\t\tlightsteelblue: \"b0c4de\",\n\t\tlightyellow: \"ffffe0\",\n\t\tlime: \"0f0\",\n\t\tlimegreen: \"32cd32\",\n\t\tlinen: \"faf0e6\",\n\t\tmagenta: \"f0f\",\n\t\tmaroon: \"800000\",\n\t\tmediumaquamarine: \"66cdaa\",\n\t\tmediumblue: \"0000cd\",\n\t\tmediumorchid: \"ba55d3\",\n\t\tmediumpurple: \"9370db\",\n\t\tmediumseagreen: \"3cb371\",\n\t\tmediumslateblue: \"7b68ee\",\n\t\tmediumspringgreen: \"00fa9a\",\n\t\tmediumturquoise: \"48d1cc\",\n\t\tmediumvioletred: \"c71585\",\n\t\tmidnightblue: \"191970\",\n\t\tmintcream: \"f5fffa\",\n\t\tmistyrose: \"ffe4e1\",\n\t\tmoccasin: \"ffe4b5\",\n\t\tnavajowhite: \"ffdead\",\n\t\tnavy: \"000080\",\n\t\toldlace: \"fdf5e6\",\n\t\tolive: \"808000\",\n\t\tolivedrab: \"6b8e23\",\n\t\torange: \"ffa500\",\n\t\torangered: \"ff4500\",\n\t\torchid: \"da70d6\",\n\t\tpalegoldenrod: \"eee8aa\",\n\t\tpalegreen: \"98fb98\",\n\t\tpaleturquoise: \"afeeee\",\n\t\tpalevioletred: \"db7093\",\n\t\tpapayawhip: \"ffefd5\",\n\t\tpeachpuff: \"ffdab9\",\n\t\tperu: \"cd853f\",\n\t\tpink: \"ffc0cb\",\n\t\tplum: \"dda0dd\",\n\t\tpowderblue: \"b0e0e6\",\n\t\tpurple: \"800080\",\n\t\tred: \"f00\",\n\t\trosybrown: \"bc8f8f\",\n\t\troyalblue: \"4169e1\",\n\t\tsaddlebrown: \"8b4513\",\n\t\tsalmon: \"fa8072\",\n\t\tsandybrown: \"f4a460\",\n\t\tseagreen: \"2e8b57\",\n\t\tseashell: \"fff5ee\",\n\t\tsienna: \"a0522d\",\n\t\tsilver: \"c0c0c0\",\n\t\tskyblue: \"87ceeb\",\n\t\tslateblue: \"6a5acd\",\n\t\tslategray: \"708090\",\n\t\tslategrey: \"708090\",\n\t\tsnow: \"fffafa\",\n\t\tspringgreen: \"00ff7f\",\n\t\tsteelblue: \"4682b4\",\n\t\ttan: \"d2b48c\",\n\t\tteal: \"008080\",\n\t\tthistle: \"d8bfd8\",\n\t\ttomato: \"ff6347\",\n\t\tturquoise: \"40e0d0\",\n\t\tviolet: \"ee82ee\",\n\t\twheat: \"f5deb3\",\n\t\twhite: \"fff\",\n\t\twhitesmoke: \"f5f5f5\",\n\t\tyellow: \"ff0\",\n\t\tyellowgreen: \"9acd32\"\n\t};\n\t\n\t// Make it easy to access colors via `hexNames[hex]`\n\tvar hexNames = tinycolor.hexNames = flip(names);\n\t\n\t\n\t// Utilities\n\t// ---------\n\t\n\t// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\n\tfunction flip(o) {\n\t\tvar flipped = { };\n\t\tfor (var i in o) {\n\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\tflipped[o[i]] = i;\n\t\t\t}\n\t\t}\n\t\treturn flipped;\n\t}\n\t\n\t// Return a valid alpha value [0,1] with all invalid values being set to 1\n\tfunction boundAlpha(a) {\n\t\ta = parseFloat(a);\n\t\t\n\t\tif (isNaN(a) || a < 0 || a > 1) {\n\t\t\ta = 1;\n\t\t}\n\t\t\n\t\treturn a;\n\t}\n\t\n\t// Take input from [0, n] and return it as [0, 1]\n\tfunction bound01(n, max) {\n\t\tif (isOnePointZero(n)) { n = \"100%\"; }\n\t\t\n\t\tvar processPercent = isPercentage(n);\n\t\tn = mathMin(max, mathMax(0, parseFloat(n)));\n\t\t\n\t\t// Automatically convert percentage into number\n\t\tif (processPercent) {\n\t\t\tn = parseInt(n * max, 10) / 100;\n\t\t}\n\t\t\n\t\t// Handle floating point rounding errors\n\t\tif ((math.abs(n - max) < 0.000001)) {\n\t\t\treturn 1;\n\t\t}\n\t\t\n\t\t// Convert into [0, 1] range if it isn't already\n\t\treturn (n % max) / parseFloat(max);\n\t}\n\t\n\t// Force a number between 0 and 1\n\tfunction clamp01(val) {\n\t\treturn mathMin(1, mathMax(0, val));\n\t}\n\t\n\t// Parse an integer into hex\n\tfunction parseHex(val) {\n\t\treturn parseInt(val, 16);\n\t}\n\t\n\t// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n\t// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n\tfunction isOnePointZero(n) {\n\t\treturn typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n\t}\n\t\n\t// Check to see if string passed in is a percentage\n\tfunction isPercentage(n) {\n\t\treturn typeof n === \"string\" && n.indexOf('%') != -1;\n\t}\n\t\n\t// Force a hex value to have 2 characters\n\tfunction pad2(c) {\n\t\treturn c.length == 1 ? '0' + c : '' + c;\n\t}\n\t\n\t// Replace a decimal with it's percentage value\n\tfunction convertToPercentage(n) {\n\t\tif (n <= 1) {\n\t\t\tn = (n * 100) + \"%\";\n\t\t}\n\t\t\n\t\treturn n;\n\t}\n\t\n\tvar matchers = (function() {\n\t\t\n\t\t// <http://www.w3.org/TR/css3-values/#integers>\n\t\tvar CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\t\t\n\t\t// <http://www.w3.org/TR/css3-values/#number-value>\n\t\tvar CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\t\t\n\t\t// Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n\t\tvar CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\t\t\n\t\t// Actual matching.\n\t\t// Parentheses and commas are optional, but not required.\n\t\t// Whitespace can take the place of commas or opening paren\n\t\tvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\t\tvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\t\t\n\t\treturn {\n\t\t\trgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n\t\t\trgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n\t\t\thsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n\t\t\thsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n\t\t\thsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n\t\t\thex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n\t\t\thex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n\t\t};\n\t})();\n\t\n\t// `stringInputToObject`\n\t// Permissive string parsing.  Take in a number of formats, and output an object\n\t// based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n\tfunction stringInputToObject(color) {\n\t\t\n\t\tcolor = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n\t\tvar named = false;\n\t\tif (names[color]) {\n\t\t\tcolor = names[color];\n\t\t\tnamed = true;\n\t\t}\n\t\telse if (color == 'transparent') {\n\t\t\treturn { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n\t\t}\n\t\t\n\t\t// Try to match string input using regular expressions.\n\t\t// Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n\t\t// Just return an object and let the conversion functions handle that.\n\t\t// This way the result will be the same whether the tinycolor is initialized with string or object.\n\t\tvar match;\n\t\tif ((match = matchers.rgb.exec(color))) {\n\t\t\treturn { r: match[1], g: match[2], b: match[3] };\n\t\t}\n\t\tif ((match = matchers.rgba.exec(color))) {\n\t\t\treturn { r: match[1], g: match[2], b: match[3], a: match[4] };\n\t\t}\n\t\tif ((match = matchers.hsl.exec(color))) {\n\t\t\treturn { h: match[1], s: match[2], l: match[3] };\n\t\t}\n\t\tif ((match = matchers.hsla.exec(color))) {\n\t\t\treturn { h: match[1], s: match[2], l: match[3], a: match[4] };\n\t\t}\n\t\tif ((match = matchers.hsv.exec(color))) {\n\t\t\treturn { h: match[1], s: match[2], v: match[3] };\n\t\t}\n\t\tif ((match = matchers.hex6.exec(color))) {\n\t\t\treturn {\n\t\t\t\tr: parseHex(match[1]),\n\t\t\t\tg: parseHex(match[2]),\n\t\t\t\tb: parseHex(match[3]),\n\t\t\t\tformat: named ? \"name\" : \"hex\"\n\t\t\t};\n\t\t}\n\t\tif ((match = matchers.hex3.exec(color))) {\n\t\t\treturn {\n\t\t\t\tr: parseHex(match[1] + '' + match[1]),\n\t\t\t\tg: parseHex(match[2] + '' + match[2]),\n\t\t\t\tb: parseHex(match[3] + '' + match[3]),\n\t\t\t\tformat: named ? \"name\" : \"hex\"\n\t\t\t};\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\t// Node: Export function\n\tif (typeof module !== \"undefined\" && module.exports) {\n\t\tmodule.exports = tinycolor;\n\t}\n\t// AMD/requirejs: Define the module\n\telse if (typeof define !== \"undefined\" && define.amd) {\n\t\tdefine(function () {return tinycolor;});\n\t}\n\t// Browser: Expose to window\n\telse {\n\t\twindow.tinycolor = tinycolor;\n\t}\n\t\n})();","/*jshint undef: true, unused:true, browser:true */\n/*global jQuery: true, tinycolor: false */\n\n/*!=========================================================================\n *  jQuery Color Picker Sliders\n *  v4.1.7\n *\n *  An advanced responsive color selector with color swatches and support for\n *  human perceived lightness. Works in all modern browsers and on touch devices.\n *\n *      https://github.com/istvan-ujjmeszaros/jquery-colorpickersliders\n *      http://virtuosoft.eu/code/jquery-colorpickersliders/\n *\n *  Copyright 2013 István Ujj-Mészáros\n *\n *  Thanks for the contributors:\n *      imaguiraga - https://github.com/imaguiraga\n *      balmasich - https://github.com/balmasich\n *\n *  Licensed under the Apache License, Version 2.0 (the \"License\");\n *  you may not use this file except in compliance with the License.\n *  You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n *  Unless required by applicable law or agreed to in writing, software\n *  distributed under the License is distributed on an \"AS IS\" BASIS,\n *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *  See the License for the specific language governing permissions and\n *  limitations under the License.\n *\n *  Requirements:\n *\n *      TinyColor: https://github.com/bgrins/TinyColor\n *\n *  Using color math algorithms from EasyRGB Web site:\n *      http://www.easyrgb.com/index.php?X=MATH\n * ====================================================================== */\n\n(function($) {\n\t\"use strict\";\n\t\n\t$.fn.ColorPickerSliders = function(options) {\n\t\t\n\t\treturn this.each(function() {\n\t\t\t\n\t\t\tvar alreadyinitialized = false,\n\t\t\t\tsettings,\n\t\t\t\ttriggerelement = $(this),\n\t\t\t\ttriggerelementisinput = triggerelement.is(\"input\"),\n\t\t\t\tcontainer,\n\t\t\t\telements,\n\t\t\t\tswatches,\n\t\t\t\trendermode = false,\n\t\t\t\tMAXLIGHT = 101, // 101 needed for bright colors (maybe due to rounding errors)\n\t\t\t\tdragTarget = false,\n\t\t\t\tlastUpdateTime = 0,\n\t\t\t\tcolor = {\n\t\t\t\t\ttiny: null,\n\t\t\t\t\thsla: null,\n\t\t\t\t\trgba: null,\n\t\t\t\t\tcielch: null\n\t\t\t\t},\n\t\t\t\tMAXVALIDCHROMA = 144;   // maximum valid chroma value found convertible to rgb (blue)\n\t\t\t\n\t\t\tinit();\n\t\t\t\n\t\t\tfunction init() {\n\t\t\t\tif (alreadyinitialized) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\talreadyinitialized = true;\n\t\t\t\t\n\t\t\t\trendermode = $.fn.ColorPickerSliders.detectWhichGradientIsSupported();\n\t\t\t\t\n\t\t\t\tif (rendermode === \"filter\") {\n\t\t\t\t\trendermode = false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!rendermode && $.fn.ColorPickerSliders.svgSupported()) {\n\t\t\t\t\trendermode = \"svg\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_initSettings();\n\t\t\t\t\n\t\t\t\t// force preview when browser doesn't support css gradients\n\t\t\t\tif ((!settings.order.hasOwnProperty('preview') || settings.order.preview === false) && !rendermode) {\n\t\t\t\t\tsettings.order.preview = 10;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_buildHtml();\n\t\t\t\t_initElements();\n\t\t\t\t\n\t\t\t\tif (triggerelementisinput) {\n\t\t\t\t\tcolor.tiny = tinycolor(triggerelement.val());\n\t\t\t\t\t\n\t\t\t\t\tif (!color.tiny.format) {\n\t\t\t\t\t\tcolor.tiny = tinycolor(settings.color);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcolor.tiny = tinycolor(settings.color);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcolor.hsla = color.tiny.toHsl();\n\t\t\t\tcolor.rgba = color.tiny.toRgb();\n\t\t\t\tcolor.cielch = $.fn.ColorPickerSliders.rgb2lch(color.rgba);\n\t\t\t\t\n\t\t\t\t_renderSwatches();\n\t\t\t\t_bindEvents();\n\t\t\t\t\n\t\t\t\t_updateAllElements();\n\t\t\t}\n\t\t\t\n\t\t\tfunction updateColor(newcolor, disableinputupdate) {\n\t\t\t\tvar updatedcolor = tinycolor(newcolor);\n\t\t\t\t\n\t\t\t\tif (updatedcolor.format) {\n\t\t\t\t\tcontainer.removeClass(\"cp-unconvertible-cie-color\");\n\t\t\t\t\t\n\t\t\t\t\tcolor.tiny = updatedcolor;\n\t\t\t\t\tcolor.hsla = updatedcolor.toHsl();\n\t\t\t\t\tcolor.rgba = updatedcolor.toRgb();\n\t\t\t\t\tcolor.cielch = $.fn.ColorPickerSliders.rgb2lch(color.rgba);\n\t\t\t\t\t\n\t\t\t\t\t_updateAllElements(disableinputupdate);\n\t\t\t\t\t\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction showPopup() {\n\t\t\t\tcontainer.data(\"justshown\", true);\n\t\t\t\t\n\t\t\t\t$('.cp-container.cp-popup').hide();\n\t\t\t\t\n\t\t\t\tvar viewportwidth = $(window).width(),\n\t\t\t\t\toffset = triggerelement.offset(),\n\t\t\t\t\tpopuporiginalwidth;\n\t\t\t\t\n\t\t\t\tpopuporiginalwidth = container.data('popup-original-width');\n\t\t\t\t\n\t\t\t\tif (typeof popuporiginalwidth === \"undefined\") {\n\t\t\t\t\tpopuporiginalwidth = container.outerWidth();\n\t\t\t\t\tcontainer.data('popup-original-width', popuporiginalwidth);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (offset.left + popuporiginalwidth + 12 <= viewportwidth) {\n\t\t\t\t\tcontainer.css('left', offset.left).width(popuporiginalwidth);\n\t\t\t\t}\n\t\t\t\telse if (popuporiginalwidth <= viewportwidth) {\n\t\t\t\t\tcontainer.css('left', viewportwidth - popuporiginalwidth - 12).width(popuporiginalwidth);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcontainer.css('left', 0).width(viewportwidth - 12);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcontainer.css('top', offset.top + triggerelement.outerHeight()).show();\n\t\t\t}\n\t\t\t\n\t\t\tfunction hidePopup() {\n\t\t\t\tcontainer.hide();\n\t\t\t}\n\t\t\t\n\t\t\tfunction _initSettings() {\n\t\t\t\tsettings = $.extend({\n\t\t\t\t\tcolor: 'hsl(342, 52%, 70%)',\n\t\t\t\t\tpreventtouchkeyboardonshow: true,\n\t\t\t\t\tswatches: ['FFFFFF', 'C0C0C0', '808080', '000000', 'FF0000', '800000', 'FFFF00', '808000', '00FF00', '008000', '00FFFF', '008080', '0000FF', '000080', 'FF00FF', '800080'],\n\t\t\t\t\tcustomswatches: 'colorpickkersliders', // false or a grop name\n\t\t\t\t\tconnectedinput: false, // can be a jquery object or a selector\n\t\t\t\t\tflat: false,\n\t\t\t\t\tdisableautopopup: false,\n\t\t\t\t\tupdateinterval: 30, // update interval of the sliders while in drag (ms)\n\t\t\t\t\tpreviewontriggerelement: true,\n\t\t\t\t\tpreviewcontrasttreshold: 15,\n\t\t\t\t\tpreviewformat: 'rgb', // rgb/hsl/hex\n\t\t\t\t\terroneousciecolormarkers: true,\n\t\t\t\t\tinvalidcolorsopacity: 1, // everything below 1 causes slightly slower responses\n\t\t\t\t\tfinercierangeedges: true, // can be disabled for faster responses\n\t\t\t\t\ttitleswatchesadd: \"Add color to swatches\",\n\t\t\t\t\ttitleswatchesremove: \"Remove color from swatches\",\n\t\t\t\t\ttitleswatchesreset: \"Reset to default swatches\",\n\t\t\t\t\torder: {},\n\t\t\t\t\tlabels: {},\n\t\t\t\t\tonchange: function() {\n\t\t\t\t\t}\n\t\t\t\t}, options);\n\t\t\t\t\n\t\t\t\tif (options.hasOwnProperty('order')) {\n\t\t\t\t\tsettings.order = $.extend({\n\t\t\t\t\t\topacity: false,\n\t\t\t\t\t\thsl: false,\n\t\t\t\t\t\trgb: false,\n\t\t\t\t\t\tcie: false,\n\t\t\t\t\t\tpreview: false\n\t\t\t\t\t}, options.order);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tsettings.order = {\n\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\thsl: 1,\n\t\t\t\t\t\trgb: 2,\n\t\t\t\t\t\tcie: 3, // cie sliders can increase response time of all sliders!\n\t\t\t\t\t\tpreview: 4\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!options.hasOwnProperty('labels')) {\n\t\t\t\t\toptions.labels = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tsettings.labels = $.extend({\n\t\t\t\t\thslhue: 'HSL-Hue',\n\t\t\t\t\thslsaturation: 'HSL-Saturation',\n\t\t\t\t\thsllightness: 'HSL-Lightness',\n\t\t\t\t\trgbred: 'RGB-Red',\n\t\t\t\t\trgbgreen: 'RGB-Green',\n\t\t\t\t\trgbblue: 'RGB-Blue',\n\t\t\t\t\tcielightness: 'CIE-Lightness',\n\t\t\t\t\tciechroma: 'CIE-Chroma',\n\t\t\t\t\tciehue: 'CIE-hue',\n\t\t\t\t\topacity: 'Opacity',\n\t\t\t\t\tpreview: 'Preview'\n\t\t\t\t}, options.labels);\n\t\t\t}\n\t\t\t\n\t\t\tfunction _buildHtml() {\n\t\t\t\tvar sliders = [],\n\t\t\t\t\tcolor_picker_html = '';\n\t\t\t\t\n\t\t\t\tif (settings.order.opacity !== false) {\n\t\t\t\t\tsliders[settings.order.opacity] = '<div class=\"cp-slider cp-opacity cp-transparency\"><span>' + settings.labels.opacity + '</span><div class=\"cp-marker\"></div></div>';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (settings.order.hsl !== false) {\n\t\t\t\t\tsliders[settings.order.hsl] = '<div class=\"cp-slider cp-hslhue cp-transparency\"><span>' + settings.labels.hslhue + '</span><div class=\"cp-marker\"></div></div><div class=\"cp-slider cp-hslsaturation cp-transparency\"><span>' + settings.labels.hslsaturation + '</span><div class=\"cp-marker\"></div></div><div class=\"cp-slider cp-hsllightness cp-transparency\"><span>' + settings.labels.hsllightness + '</span><div class=\"cp-marker\"></div></div>';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (settings.order.rgb !== false) {\n\t\t\t\t\tsliders[settings.order.rgb] = '<div class=\"cp-slider cp-rgbred cp-transparency\"><span>' + settings.labels.rgbred + '</span><div class=\"cp-marker\"></div></div><div class=\"cp-slider cp-rgbgreen cp-transparency\"><span>' + settings.labels.rgbgreen + '</span><div class=\"cp-marker\"></div></div><div class=\"cp-slider cp-rgbblue cp-transparency\"><span>' + settings.labels.rgbblue + '</span><div class=\"cp-marker\"></div></div>';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (settings.order.cie !== false) {\n\t\t\t\t\tsliders[settings.order.cie] = '<div class=\"cp-slider cp-cielightness cp-transparency\"><span>' + settings.labels.cielightness + '</span><div class=\"cp-marker\"></div></div><div class=\"cp-slider cp-ciechroma cp-transparency\"><span>' + settings.labels.ciechroma + '</span><div class=\"cp-marker\"></div></div><div class=\"cp-slider cp-ciehue cp-transparency\"><span>' + settings.labels.ciehue + '</span><div class=\"cp-marker\"></div></div>';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (settings.order.preview !== false) {\n\t\t\t\t\tsliders[settings.order.preview] = '<div class=\"cp-preview cp-transparency\"><input type=\"text\" readonly=\"readonly\"></div>';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcolor_picker_html += '<div class=\"cp-sliders\">';\n\t\t\t\t\n\t\t\t\tfor (var i = 0; i < sliders.length; i++) {\n\t\t\t\t\tif (typeof sliders[i] === \"undefined\") {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcolor_picker_html += sliders[i];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcolor_picker_html += '</div>';\n\t\t\t\t\n\t\t\t\tif (settings.swatches) {\n\t\t\t\t\tcolor_picker_html += '<div class=\"cp-swatches\"><button type=\"button\" class=\"add\" title=\"' + settings.titleswatchesadd + '\"></button><button type=\"button\" class=\"remove\" title=\"' + settings.titleswatchesremove + '\"></button><button type=\"button\" class=\"reset\" title=\"' + settings.titleswatchesreset + '\"></button><ul></ul><div style=\"clear:both\"></div></div>';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (settings.flat) {\n\t\t\t\t\tif (triggerelementisinput) {\n\t\t\t\t\t\tcontainer = $('<div class=\"cp-container\"></div>').insertAfter(triggerelement);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcontainer = $('<div class=\"cp-container\"></div>');\n\t\t\t\t\t\ttriggerelement.append(container);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcontainer = $('<div class=\"cp-container\"></div>').appendTo('body');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcontainer.append(color_picker_html);\n\t\t\t\t\n\t\t\t\tif (settings.connectedinput instanceof jQuery) {\n\t\t\t\t\tsettings.connectedinput.add(triggerelement);\n\t\t\t\t}\n\t\t\t\telse if (settings.connectedinput === false) {\n\t\t\t\t\tsettings.connectedinput = triggerelement;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tsettings.connectedinput = $(settings.connectedinput).add(triggerelement);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!settings.flat) {\n\t\t\t\t\tcontainer.addClass('cp-popup');\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction _initElements() {\n\t\t\t\telements = {\n\t\t\t\t\tconnectedinput: false,\n\t\t\t\t\tactualswatch: false,\n\t\t\t\t\tswatchescontainer: $(\".cp-swatches\", container),\n\t\t\t\t\tswatches: $(\".cp-swatches ul\", container),\n\t\t\t\t\tswatches_add: $(\".cp-swatches button.add\", container),\n\t\t\t\t\tswatches_remove: $(\".cp-swatches button.remove\", container),\n\t\t\t\t\tswatches_reset: $(\".cp-swatches button.reset\", container),\n\t\t\t\t\tall_sliders: $(\".cp-sliders, .cp-preview input\", container),\n\t\t\t\t\tsliders: {\n\t\t\t\t\t\thue: $(\".cp-hslhue span\", container),\n\t\t\t\t\t\thue_marker: $(\".cp-hslhue .cp-marker\", container),\n\t\t\t\t\t\tsaturation: $(\".cp-hslsaturation span\", container),\n\t\t\t\t\t\tsaturation_marker: $(\".cp-hslsaturation .cp-marker\", container),\n\t\t\t\t\t\tlightness: $(\".cp-hsllightness span\", container),\n\t\t\t\t\t\tlightness_marker: $(\".cp-hsllightness .cp-marker\", container),\n\t\t\t\t\t\topacity: $(\".cp-opacity span\", container),\n\t\t\t\t\t\topacity_marker: $(\".cp-opacity .cp-marker\", container),\n\t\t\t\t\t\tred: $(\".cp-rgbred span\", container),\n\t\t\t\t\t\tred_marker: $(\".cp-rgbred .cp-marker\", container),\n\t\t\t\t\t\tgreen: $(\".cp-rgbgreen span\", container),\n\t\t\t\t\t\tgreen_marker: $(\".cp-rgbgreen .cp-marker\", container),\n\t\t\t\t\t\tblue: $(\".cp-rgbblue span\", container),\n\t\t\t\t\t\tblue_marker: $(\".cp-rgbblue .cp-marker\", container),\n\t\t\t\t\t\tcielightness: $(\".cp-cielightness span\", container),\n\t\t\t\t\t\tcielightness_marker: $(\".cp-cielightness .cp-marker\", container),\n\t\t\t\t\t\tciechroma: $(\".cp-ciechroma span\", container),\n\t\t\t\t\t\tciechroma_marker: $(\".cp-ciechroma .cp-marker\", container),\n\t\t\t\t\t\tciehue: $(\".cp-ciehue span\", container),\n\t\t\t\t\t\tciehue_marker: $(\".cp-ciehue .cp-marker\", container),\n\t\t\t\t\t\tpreview: $(\".cp-preview input\", container)\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tif (settings.connectedinput) {\n\t\t\t\t\tif (settings.connectedinput instanceof jQuery) {\n\t\t\t\t\t\telements.connectedinput = settings.connectedinput;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\telements.connectedinput = $(settings.connectedinput);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!settings.customswatches) {\n\t\t\t\t\telements.swatches_add.hide();\n\t\t\t\t\telements.swatches_remove.hide();\n\t\t\t\t\telements.swatches_reset.hide();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction  destroyColorPicker() {\n\t\t\t\tif (container  instanceof jQuery) {\n\t\t\t\t\thidePopup();\n\t\t\t\t\tcontainer.remove();\n\t\t\t\t\talreadyinitialized = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction  resetColorPicker() {\n\t\t\t\tinit();\n\t\t\t}\n\t\t\t\n\t\t\tfunction _bindEvents() {\n\t\t\t\ttriggerelement.on('colorpickersliders.destroy', function() {\n\t\t\t\t\tdestroyColorPicker();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\ttriggerelement.on('colorpickersliders.reset', function() {\n\t\t\t\t\tresetColorPicker();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\ttriggerelement.on('colorpickersliders.updateColor', function(e, newcolor) {\n\t\t\t\t\tupdateColor(newcolor);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\ttriggerelement.on('colorpickersliders.showPopup', function() {\n\t\t\t\t\tshowPopup();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\ttriggerelement.on('colorpickersliders.hidePopup', function() {\n\t\t\t\t\thidePopup();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$(document).on(\"colorpickersliders.changeswatches\", function() {\n\t\t\t\t\t_renderSwatches();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif (!settings.flat && !settings.disableautopopup) {\n\t\t\t\t\t// we need tabindex defined to be focusable\n\t\t\t\t\tif (typeof triggerelement.attr(\"tabindex\") === \"undefined\") {\n\t\t\t\t\t\ttriggerelement.attr(\"tabindex\", -1);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (settings.preventtouchkeyboardonshow) {\n\t\t\t\t\t\t$(triggerelement).prop(\"readonly\", true);\n\t\t\t\t\t\t\n\t\t\t\t\t\t$(triggerelement).on(\"click\", function(ev) {\n\t\t\t\t\t\t\tif (container.data(\"justshown\")) {\n\t\t\t\t\t\t\t\tcontainer.data(\"justshown\", false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t$(triggerelement).prop(\"readonly\", false);\n\t\t\t\t\t\t\t\tev.stopPropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// buttons doesn't get focus in webkit browsers\n\t\t\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=22261\n\t\t\t\t\t// and only input and button are focusable on iPad\n\t\t\t\t\t// so it is safer to register click on any other than inputs\n\t\t\t\t\tif (!triggerelementisinput) {\n\t\t\t\t\t\t$(triggerelement).on(\"click\", function(ev) {\n\t\t\t\t\t\t\tshowPopup();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tev.stopPropagation();\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\t$(document).on(\"click\", function() {\n\t\t\t\t\t\t\thidePopup();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t$(triggerelement).on(\"focus\", function(ev) {\n\t\t\t\t\t\tshowPopup();\n\t\t\t\t\t\t\n\t\t\t\t\t\tev.stopPropagation();\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\t$(triggerelement).on(\"blur\", function(ev) {\n\t\t\t\t\t\thidePopup();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (settings.preventtouchkeyboardonshow) {\n\t\t\t\t\t\t\t$(triggerelement).prop(\"readonly\", true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tev.stopPropagation();\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tcontainer.on(\"touchstart mousedown\", function(ev) {\n\t\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\tev.stopPropagation();\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcontainer.on(\"contextmenu\", function(ev) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.swatches.on(\"click\", \"li span\", function(ev) {\n\t\t\t\t\tvar color = $(this).css(\"background-color\");\n\t\t\t\t\tupdateColor(color);\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.swatches_add.on(\"click\", function(ev) {\n\t\t\t\t\t_addCurrentColorToSwatches();\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.swatches_remove.on(\"click\", function(ev) {\n\t\t\t\t\t_removeActualColorFromSwatches();\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.swatches_reset.on(\"click\", function(ev) {\n\t\t\t\t\t_resetSwatches();\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.sliders.hue.parent().on(\"touchstart mousedown\", function(ev) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\n\t\t\t\t\tif (ev.which > 1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdragTarget = \"hue\";\n\t\t\t\t\t\n\t\t\t\t\tvar percent = _updateMarkerPosition(dragTarget, ev);\n\t\t\t\t\t\n\t\t\t\t\t_updateColorsProperty('hsla', 'h', 3.6 * percent);\n\t\t\t\t\t\n\t\t\t\t\t_updateAllElements();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.sliders.saturation.parent().on(\"touchstart mousedown\", function(ev) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\n\t\t\t\t\tif (ev.which > 1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdragTarget = \"saturation\";\n\t\t\t\t\t\n\t\t\t\t\tvar percent = _updateMarkerPosition(dragTarget, ev);\n\t\t\t\t\t\n\t\t\t\t\t_updateColorsProperty('hsla', 's', percent / 100);\n\t\t\t\t\t\n\t\t\t\t\t_updateAllElements();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.sliders.lightness.parent().on(\"touchstart mousedown\", function(ev) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\n\t\t\t\t\tif (ev.which > 1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdragTarget = \"lightness\";\n\t\t\t\t\t\n\t\t\t\t\tvar percent = _updateMarkerPosition(dragTarget, ev);\n\t\t\t\t\t\n\t\t\t\t\t_updateColorsProperty('hsla', 'l', percent / 100);\n\t\t\t\t\t\n\t\t\t\t\t_updateAllElements();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.sliders.opacity.parent().on(\"touchstart mousedown\", function(ev) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\n\t\t\t\t\tif (ev.which > 1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdragTarget = \"opacity\";\n\t\t\t\t\t\n\t\t\t\t\tvar percent = _updateMarkerPosition(dragTarget, ev);\n\t\t\t\t\t\n\t\t\t\t\t_updateColorsProperty('hsla', 'a', percent / 100);\n\t\t\t\t\t\n\t\t\t\t\t_updateAllElements();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.sliders.red.parent().on(\"touchstart mousedown\", function(ev) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\n\t\t\t\t\tif (ev.which > 1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdragTarget = \"red\";\n\t\t\t\t\t\n\t\t\t\t\tvar percent = _updateMarkerPosition(dragTarget, ev);\n\t\t\t\t\t\n\t\t\t\t\t_updateColorsProperty('rgba', 'r', 2.55 * percent);\n\t\t\t\t\t\n\t\t\t\t\t_updateAllElements();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.sliders.green.parent().on(\"touchstart mousedown\", function(ev) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\n\t\t\t\t\tif (ev.which > 1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdragTarget = \"green\";\n\t\t\t\t\t\n\t\t\t\t\tvar percent = _updateMarkerPosition(dragTarget, ev);\n\t\t\t\t\t\n\t\t\t\t\t_updateColorsProperty('rgba', 'g', 2.55 * percent);\n\t\t\t\t\t\n\t\t\t\t\t_updateAllElements();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.sliders.blue.parent().on(\"touchstart mousedown\", function(ev) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\n\t\t\t\t\tif (ev.which > 1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdragTarget = \"blue\";\n\t\t\t\t\t\n\t\t\t\t\tvar percent = _updateMarkerPosition(dragTarget, ev);\n\t\t\t\t\t\n\t\t\t\t\t_updateColorsProperty('rgba', 'b', 2.55 * percent);\n\t\t\t\t\t\n\t\t\t\t\t_updateAllElements();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.sliders.cielightness.parent().on(\"touchstart mousedown\", function(ev) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\n\t\t\t\t\tif (ev.which > 1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdragTarget = \"cielightness\";\n\t\t\t\t\t\n\t\t\t\t\tvar percent = _updateMarkerPosition(dragTarget, ev);\n\t\t\t\t\t\n\t\t\t\t\t_updateColorsProperty('cielch', 'l', (MAXLIGHT / 100) * percent);\n\t\t\t\t\t\n\t\t\t\t\t_updateAllElements();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.sliders.ciechroma.parent().on(\"touchstart mousedown\", function(ev) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\n\t\t\t\t\tif (ev.which > 1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdragTarget = \"ciechroma\";\n\t\t\t\t\t\n\t\t\t\t\tvar percent = _updateMarkerPosition(dragTarget, ev);\n\t\t\t\t\t\n\t\t\t\t\t_updateColorsProperty('cielch', 'c', (MAXVALIDCHROMA / 100) * percent);\n\t\t\t\t\t\n\t\t\t\t\t_updateAllElements();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.sliders.ciehue.parent().on(\"touchstart mousedown\", function(ev) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t\n\t\t\t\t\tif (ev.which > 1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tdragTarget = \"ciehue\";\n\t\t\t\t\t\n\t\t\t\t\tvar percent = _updateMarkerPosition(dragTarget, ev);\n\t\t\t\t\t\n\t\t\t\t\t_updateColorsProperty('cielch', 'h', 3.6 * percent);\n\t\t\t\t\t\n\t\t\t\t\t_updateAllElements();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\telements.sliders.preview.on(\"click\", function() {\n\t\t\t\t\tthis.select();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$(document).on(\"touchmove mousemove\", function(ev) {\n\t\t\t\t\tif (!dragTarget) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar percent = _updateMarkerPosition(dragTarget, ev);\n\t\t\t\t\t\n\t\t\t\t\tswitch (dragTarget) {\n\t\t\t\t\t\tcase \"hue\":\n\t\t\t\t\t\t\t_updateColorsProperty('hsla', 'h', 3.6 * percent);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"saturation\":\n\t\t\t\t\t\t\t_updateColorsProperty('hsla', 's', percent / 100);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"lightness\":\n\t\t\t\t\t\t\t_updateColorsProperty('hsla', 'l', percent / 100);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"opacity\":\n\t\t\t\t\t\t\t_updateColorsProperty('hsla', 'a', percent / 100);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"red\":\n\t\t\t\t\t\t\t_updateColorsProperty('rgba', 'r', 2.55 * percent);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"green\":\n\t\t\t\t\t\t\t_updateColorsProperty('rgba', 'g', 2.55 * percent);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"blue\":\n\t\t\t\t\t\t\t_updateColorsProperty('rgba', 'b', 2.55 * percent);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"cielightness\":\n\t\t\t\t\t\t\t_updateColorsProperty('cielch', 'l', (MAXLIGHT / 100) * percent);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"ciechroma\":\n\t\t\t\t\t\t\t_updateColorsProperty('cielch', 'c', (MAXVALIDCHROMA / 100) * percent);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"ciehue\":\n\t\t\t\t\t\t\t_updateColorsProperty('cielch', 'h', 3.6 * percent);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t_updateAllElements();\n\t\t\t\t\t\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$(document).on(\"touchend mouseup\", function(ev) {\n\t\t\t\t\tif (ev.which > 1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (dragTarget) {\n\t\t\t\t\t\tdragTarget = false;\n\t\t\t\t\t\tev.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif (elements.connectedinput) {\n\t\t\t\t\telements.connectedinput.on('keyup change', function() {\n\t\t\t\t\t\tvar $input = $(this);\n\t\t\t\t\t\t\n\t\t\t\t\t\tupdateColor($input.val(), true);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tfunction _parseCustomSwatches() {\n\t\t\t\tswatches = [];\n\t\t\t\t\n\t\t\t\tfor (var i = 0; i < settings.swatches.length; i++) {\n\t\t\t\t\tvar color = tinycolor(settings.swatches[i]);\n\t\t\t\t\t\n\t\t\t\t\tif (color.format) {\n\t\t\t\t\t\tswatches.push(color.toRgbString());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction _renderSwatches() {\n\t\t\t\tif (!settings.swatches) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (settings.customswatches) {\n\t\t\t\t\tvar customswatches = false;\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcustomswatches = JSON.parse(localStorage.getItem(\"swatches-\" + settings.customswatches));\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (customswatches) {\n\t\t\t\t\t\tswatches = customswatches;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t_parseCustomSwatches();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t_parseCustomSwatches();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (swatches instanceof Array) {\n\t\t\t\t\telements.swatches.html(\"\");\n\t\t\t\t\tfor (var i = 0; i < swatches.length; i++) {\n\t\t\t\t\t\tvar color = tinycolor(swatches[i]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (color.format) {\n\t\t\t\t\t\t\telements.swatches.append($(\"<li></li>\").append($(\"<span></span>\").css(\"background-color\", color.toRgbString())));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_findActualColorsSwatch();\n\t\t\t}\n\t\t\t\n\t\t\tfunction _findActualColorsSwatch() {\n\t\t\t\tvar found = false;\n\t\t\t\t\n\t\t\t\t$(\"span\", elements.swatches).filter(function() {\n\t\t\t\t\tvar swatchcolor = $(this).css('background-color');\n\t\t\t\t\t\n\t\t\t\t\tswatchcolor = tinycolor(swatchcolor);\n\t\t\t\t\tswatchcolor.alpha = Math.round(swatchcolor.alpha * 100) / 100;\n\t\t\t\t\t\n\t\t\t\t\tif (swatchcolor.toRgbString() === color.tiny.toRgbString()) {\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar currentswatch = $(this).parent();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (!currentswatch.is(elements.actualswatch)) {\n\t\t\t\t\t\t\tif (elements.actualswatch) {\n\t\t\t\t\t\t\t\telements.actualswatch.removeClass(\"actual\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telements.actualswatch = currentswatch;\n\t\t\t\t\t\t\tcurrentswatch.addClass(\"actual\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif (!found) {\n\t\t\t\t\tif (elements.actualswatch) {\n\t\t\t\t\t\telements.actualswatch.removeClass(\"actual\");\n\t\t\t\t\t\telements.actualswatch = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (elements.actualswatch) {\n\t\t\t\t\telements.swatches_add.prop(\"disabled\", true);\n\t\t\t\t\telements.swatches_remove.prop(\"disabled\", false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\telements.swatches_add.prop(\"disabled\", false);\n\t\t\t\t\telements.swatches_remove.prop(\"disabled\", true);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction _storeSwatches() {\n\t\t\t\tlocalStorage.setItem(\"swatches-\" + settings.customswatches, JSON.stringify(swatches));\n\t\t\t}\n\t\t\t\n\t\t\tfunction _addCurrentColorToSwatches() {\n\t\t\t\tswatches.unshift(color.tiny.toRgbString());\n\t\t\t\t_storeSwatches();\n\t\t\t\t\n\t\t\t\t$(document).trigger(\"colorpickersliders.changeswatches\");\n\t\t\t}\n\t\t\t\n\t\t\tfunction _removeActualColorFromSwatches() {\n\t\t\t\tvar index = swatches.indexOf(color.tiny.toRgbString());\n\t\t\t\t\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\tswatches.splice(index, 1);\n\t\t\t\t\t\n\t\t\t\t\t_storeSwatches();\n\t\t\t\t\t$(document).trigger(\"colorpickersliders.changeswatches\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction _resetSwatches() {\n\t\t\t\tif (confirm(\"Do you really want to reset the swatches? All customizations will be lost!\")) {\n\t\t\t\t\t_parseCustomSwatches();\n\t\t\t\t\t\n\t\t\t\t\t_storeSwatches();\n\t\t\t\t\t\n\t\t\t\t\t$(document).trigger(\"colorpickersliders.changeswatches\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction _updateColorsProperty(format, property, value) {\n\t\t\t\tswitch (format) {\n\t\t\t\t\tcase 'hsla':\n\t\t\t\t\t\t\n\t\t\t\t\t\tcolor.hsla[property] = value;\n\t\t\t\t\t\tcolor.tiny = tinycolor({h: color.hsla.h, s: color.hsla.s, l: color.hsla.l, a: color.hsla.a});\n\t\t\t\t\t\tcolor.rgba = color.tiny.toRgb();\n\t\t\t\t\t\tcolor.cielch = $.fn.ColorPickerSliders.rgb2lch(color.rgba);\n\t\t\t\t\t\t\n\t\t\t\t\t\tcontainer.removeClass(\"cp-unconvertible-cie-color\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase 'rgba':\n\t\t\t\t\t\t\n\t\t\t\t\t\tcolor.rgba[property] = value;\n\t\t\t\t\t\tcolor.tiny = tinycolor({r: color.rgba.r, g: color.rgba.g, b: color.rgba.b, a: color.hsla.a});\n\t\t\t\t\t\tcolor.hsla = color.tiny.toHsl();\n\t\t\t\t\t\tcolor.cielch = $.fn.ColorPickerSliders.rgb2lch(color.rgba);\n\t\t\t\t\t\t\n\t\t\t\t\t\tcontainer.removeClass(\"cp-unconvertible-cie-color\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase 'cielch':\n\t\t\t\t\t\t\n\t\t\t\t\t\tcolor.cielch[property] = value;\n\t\t\t\t\t\tcolor.rgba = $.fn.ColorPickerSliders.lch2rgb(color.cielch);\n\t\t\t\t\t\tcolor.tiny = tinycolor(color.rgba);\n\t\t\t\t\t\tcolor.hsla = color.tiny.toHsl();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (settings.erroneousciecolormarkers) {\n\t\t\t\t\t\t\tif (color.rgba.isok) {\n\t\t\t\t\t\t\t\tcontainer.removeClass(\"cp-unconvertible-cie-color\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tcontainer.addClass(\"cp-unconvertible-cie-color\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction _updateMarkerPosition(slidername, ev) {\n\t\t\t\tvar percent = $.fn.ColorPickerSliders.calculateEventPositionPercentage(ev, elements.sliders[slidername]);\n\t\t\t\t\n\t\t\t\telements.sliders[slidername + '_marker'].data(\"position\", percent);\n\t\t\t\t\n\t\t\t\treturn percent;\n\t\t\t}\n\t\t\t\n\t\t\tvar updateAllElementsTimeout;\n\t\t\t\n\t\t\tfunction _updateAllElementsTimer(disableinputupdate) {\n\t\t\t\tupdateAllElementsTimeout = setTimeout(function() {\n\t\t\t\t\t_updateAllElements(disableinputupdate);\n\t\t\t\t}, settings.updateinterval);\n\t\t\t}\n\t\t\t\n\t\t\tfunction _updateAllElements(disableinputupdate) {\n\t\t\t\tclearTimeout(updateAllElementsTimeout);\n\t\t\t\t\n\t\t\t\tDate.now = Date.now || function() { return +new Date; };\n\t\t\t\t\n\t\t\t\tif (Date.now() - lastUpdateTime < settings.updateinterval) {\n\t\t\t\t\t_updateAllElementsTimer(disableinputupdate);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (typeof disableinputupdate === \"undefined\") {\n\t\t\t\t\tdisableinputupdate = false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tlastUpdateTime = Date.now();\n\t\t\t\t\n\t\t\t\tif (settings.order.opacity !== false) {\n\t\t\t\t\t_renderOpacity();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (settings.order.hsl !== false) {\n\t\t\t\t\t_renderHue();\n\t\t\t\t\t_renderSaturation();\n\t\t\t\t\t_renderLightness();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (settings.order.rgb !== false) {\n\t\t\t\t\t_renderRed();\n\t\t\t\t\t_renderGreen();\n\t\t\t\t\t_renderBlue();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (settings.order.cie !== false) {\n\t\t\t\t\t_renderCieLightness();\n\t\t\t\t\t_renderCieChroma();\n\t\t\t\t\t_renderCieHue();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (settings.order.preview !== false) {\n\t\t\t\t\t_renderPreview();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!disableinputupdate) {\n\t\t\t\t\t_updateConnectedInput();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ((100 - color.cielch.l) * color.cielch.a < settings.previewcontrasttreshold) {\n\t\t\t\t\telements.all_sliders.css('color', '#000');\n\t\t\t\t\tif (triggerelementisinput && settings.previewontriggerelement) {\n\t\t\t\t\t\ttriggerelement.css('background', color.tiny.toRgbString()).css('color', '#000');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\telements.all_sliders.css('color', '#fff');\n\t\t\t\t\tif (triggerelementisinput && settings.previewontriggerelement) {\n\t\t\t\t\t\ttriggerelement.css('background', color.tiny.toRgbString()).css('color', '#fff');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t_findActualColorsSwatch();\n\t\t\t\t\n\t\t\t\tsettings.onchange(container, color);\n\t\t\t\t\n\t\t\t\ttriggerelement.data(\"color\", color);\n\t\t\t}\n\t\t\t\n\t\t\tfunction _updateConnectedInput() {\n\t\t\t\tif (elements.connectedinput) {\n\t\t\t\t\telements.connectedinput.each(function(index, element) {\n\t\t\t\t\t\tvar $element = $(element),\n\t\t\t\t\t\t\tformat = $element.data('color-format') || settings.previewformat;\n\t\t\t\t\t\t\n\t\t\t\t\t\tswitch (format) {\n\t\t\t\t\t\t\tcase 'hex':\n\t\t\t\t\t\t\t\t$element.val(color.tiny.toHexString());\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'hsl':\n\t\t\t\t\t\t\t\t$element.val(color.tiny.toHslString());\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'rgb':\n\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t$element.val(color.tiny.toRgbString());\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction _renderHue() {\n\t\t\t\tsetGradient(elements.sliders.hue, $.fn.ColorPickerSliders.getScaledGradientStops(color.hsla, \"h\", 0, 360, 7));\n\t\t\t\t\n\t\t\t\telements.sliders.hue_marker.css(\"left\", color.hsla.h / 360 * 100 + \"%\");\n\t\t\t}\n\t\t\t\n\t\t\tfunction _renderSaturation() {\n\t\t\t\tsetGradient(elements.sliders.saturation, $.fn.ColorPickerSliders.getScaledGradientStops(color.hsla, \"s\", 0, 1, 2));\n\t\t\t\t\n\t\t\t\telements.sliders.saturation_marker.css(\"left\", color.hsla.s * 100 + \"%\");\n\t\t\t}\n\t\t\t\n\t\t\tfunction _renderLightness() {\n\t\t\t\tsetGradient(elements.sliders.lightness, $.fn.ColorPickerSliders.getScaledGradientStops(color.hsla, \"l\", 0, 1, 3));\n\t\t\t\t\n\t\t\t\telements.sliders.lightness_marker.css(\"left\", color.hsla.l * 100 + \"%\");\n\t\t\t}\n\t\t\t\n\t\t\tfunction _renderOpacity() {\n\t\t\t\tsetGradient(elements.sliders.opacity, $.fn.ColorPickerSliders.getScaledGradientStops(color.hsla, \"a\", 0, 1, 2));\n\t\t\t\t\n\t\t\t\telements.sliders.opacity_marker.css(\"left\", color.hsla.a * 100 + \"%\");\n\t\t\t}\n\t\t\t\n\t\t\tfunction _renderRed() {\n\t\t\t\tsetGradient(elements.sliders.red, $.fn.ColorPickerSliders.getScaledGradientStops(color.rgba, \"r\", 0, 255, 2));\n\t\t\t\t\n\t\t\t\telements.sliders.red_marker.css(\"left\", color.rgba.r / 255 * 100 + \"%\");\n\t\t\t}\n\t\t\t\n\t\t\tfunction _renderGreen() {\n\t\t\t\tsetGradient(elements.sliders.green, $.fn.ColorPickerSliders.getScaledGradientStops(color.rgba, \"g\", 0, 255, 2));\n\t\t\t\t\n\t\t\t\telements.sliders.green_marker.css(\"left\", color.rgba.g / 255 * 100 + \"%\");\n\t\t\t}\n\t\t\t\n\t\t\tfunction _renderBlue() {\n\t\t\t\tsetGradient(elements.sliders.blue, $.fn.ColorPickerSliders.getScaledGradientStops(color.rgba, \"b\", 0, 255, 2));\n\t\t\t\t\n\t\t\t\telements.sliders.blue_marker.css(\"left\", color.rgba.b / 255 * 100 + \"%\");\n\t\t\t}\n\t\t\t\n\t\t\tfunction _extendCieGradientStops(gradientstops, property) {\n\t\t\t\tif (settings.invalidcolorsopacity === 1 || !settings.finercierangeedges) {\n\t\t\t\t\treturn gradientstops;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tgradientstops.sort(function(a, b) {\n\t\t\t\t\treturn a.position - b.position;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tvar tmparray = [];\n\t\t\t\t\n\t\t\t\tfor (var i = 1; i < gradientstops.length; i++) {\n\t\t\t\t\tif (gradientstops[i].isok !== gradientstops[i - 1].isok) {\n\t\t\t\t\t\tvar steps = Math.round(gradientstops[i].position) - Math.round(gradientstops[i - 1].position),\n\t\t\t\t\t\t\textendedgradientstops = $.fn.ColorPickerSliders.getScaledGradientStops(gradientstops[i].rawcolor, property, gradientstops[i - 1].rawcolor[property], gradientstops[i].rawcolor[property], steps, settings.invalidcolorsopacity, gradientstops[i - 1].position, gradientstops[i].position);\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (var j = 0; j < extendedgradientstops.length; j++) {\n\t\t\t\t\t\t\tif (extendedgradientstops[j].isok !== gradientstops[i - 1].isok) {\n\t\t\t\t\t\t\t\ttmparray.push(extendedgradientstops[j]);\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (j > 0) {\n\t\t\t\t\t\t\t\t\ttmparray.push(extendedgradientstops[j - 1]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn $.merge(tmparray, gradientstops);\n\t\t\t}\n\t\t\t\n\t\t\tfunction _renderCieLightness() {\n\t\t\t\tvar gradientstops = $.fn.ColorPickerSliders.getScaledGradientStops(color.cielch, \"l\", 0, 100, 10, settings.invalidcolorsopacity);\n\t\t\t\t\n\t\t\t\tgradientstops = _extendCieGradientStops(gradientstops, \"l\");\n\t\t\t\t\n\t\t\t\tsetGradient(elements.sliders.cielightness, gradientstops);\n\t\t\t\t\n\t\t\t\telements.sliders.cielightness_marker.css(\"left\", color.cielch.l / MAXLIGHT * 100 + \"%\");\n\t\t\t}\n\t\t\t\n\t\t\tfunction _renderCieChroma() {\n\t\t\t\tvar gradientstops = $.fn.ColorPickerSliders.getScaledGradientStops(color.cielch, \"c\", 0, MAXVALIDCHROMA, 5, settings.invalidcolorsopacity);\n\t\t\t\t\n\t\t\t\tgradientstops = _extendCieGradientStops(gradientstops, \"c\");\n\t\t\t\t\n\t\t\t\tsetGradient(elements.sliders.ciechroma, gradientstops);\n\t\t\t\t\n\t\t\t\telements.sliders.ciechroma_marker.css(\"left\", color.cielch.c / MAXVALIDCHROMA * 100 + \"%\");\n\t\t\t}\n\t\t\t\n\t\t\tfunction _renderCieHue() {\n\t\t\t\tvar gradientstops = $.fn.ColorPickerSliders.getScaledGradientStops(color.cielch, \"h\", 0, 360, 28, settings.invalidcolorsopacity);\n\t\t\t\t\n\t\t\t\tgradientstops = _extendCieGradientStops(gradientstops, \"h\");\n\t\t\t\t\n\t\t\t\tsetGradient(elements.sliders.ciehue, gradientstops);\n\t\t\t\t\n\t\t\t\telements.sliders.ciehue_marker.css(\"left\", color.cielch.h / 360 * 100 + \"%\");\n\t\t\t}\n\t\t\t\n\t\t\tfunction _renderPreview() {\n\t\t\t\telements.sliders.preview.css(\"background\", $.fn.ColorPickerSliders.csscolor(color.rgba));\n\t\t\t\t\n\t\t\t\tvar colorstring;\n\t\t\t\t\n\t\t\t\tswitch (settings.previewformat) {\n\t\t\t\t\tcase 'hex':\n\t\t\t\t\t\tcolorstring = color.tiny.toHexString();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'hsl':\n\t\t\t\t\t\tcolorstring = color.tiny.toHslString();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'rgb':\n\t\t\t\t\t/* falls through */\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcolorstring = color.tiny.toRgbString();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\telements.sliders.preview.val(colorstring);\n\t\t\t}\n\t\t\t\n\t\t\tfunction setGradient(element, gradientstops) {\n\t\t\t\tgradientstops.sort(function(a, b) {\n\t\t\t\t\treturn a.position - b.position;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tswitch(rendermode) {\n\t\t\t\t\tcase \"noprefix\":\n\t\t\t\t\t\t$.fn.ColorPickerSliders.renderNoprefix(element, gradientstops);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"webkit\":\n\t\t\t\t\t\t$.fn.ColorPickerSliders.renderWebkit(element, gradientstops);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"ms\":\n\t\t\t\t\t\t$.fn.ColorPickerSliders.renderMs(element, gradientstops);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"svg\": // can not repeat, radial can be only a covering ellipse (maybe there is a workaround, need more investigation)\n\t\t\t\t\t\t$.fn.ColorPickerSliders.renderSVG(element, gradientstops);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"oldwebkit\":   // can not repeat, no percent size with radial gradient (and no ellipse)\n\t\t\t\t\t\t$.fn.ColorPickerSliders.renderOldwebkit(element, gradientstops);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t};\n\t\t\t\n\t\t});\n\t\t\n\t};\n\t\n\t$.fn.ColorPickerSliders.getEventCoordinates = function(ev) {\n\t\tif (typeof ev.pageX !== \"undefined\") {\n\t\t\treturn {\n\t\t\t\tpageX: ev.originalEvent.pageX,\n\t\t\t\tpageY: ev.originalEvent.pageY\n\t\t\t};\n\t\t}\n\t\telse if (typeof ev.originalEvent.touches !== \"undefined\") {\n\t\t\treturn {\n\t\t\t\tpageX: ev.originalEvent.touches[0].pageX,\n\t\t\t\tpageY: ev.originalEvent.touches[0].pageY\n\t\t\t};\n\t\t}\n\t};\n\t\n\t$.fn.ColorPickerSliders.calculateEventPositionPercentage = function(ev, containerElement) {\n\t\tvar c = $.fn.ColorPickerSliders.getEventCoordinates(ev);\n\t\t\n\t\tvar xsize = containerElement.width(),\n\t\t\toffsetX = c.pageX - containerElement.offset().left;\n\t\t\n\t\tvar percent = offsetX / xsize * 100;\n\t\t\n\t\tif (percent < 0) {\n\t\t\tpercent = 0;\n\t\t}\n\t\t\n\t\tif (percent > 100) {\n\t\t\tpercent = 100;\n\t\t}\n\t\t\n\t\treturn percent;\n\t};\n\t\n\t$.fn.ColorPickerSliders.getScaledGradientStops = function(color, scalableproperty, minvalue, maxvalue, steps, invalidcolorsopacity, minposition, maxposition) {\n\t\tif (typeof invalidcolorsopacity === \"undefined\") {\n\t\t\tinvalidcolorsopacity = 1;\n\t\t}\n\t\t\n\t\tif (typeof minposition === \"undefined\") {\n\t\t\tminposition = 0;\n\t\t}\n\t\t\n\t\tif (typeof maxposition === \"undefined\") {\n\t\t\tmaxposition = 100;\n\t\t}\n\t\t\n\t\tvar gradientStops = [],\n\t\t\tdiff = maxvalue - minvalue,\n\t\t\tisok = true;\n\t\t\n\t\tfor (var i = 0; i < steps; ++i) {\n\t\t\tvar currentstage = i / (steps - 1),\n\t\t\t\tmodifiedcolor = $.fn.ColorPickerSliders.modifyColor(color, scalableproperty, currentstage * diff + minvalue),\n\t\t\t\tcsscolor;\n\t\t\t\n\t\t\tif (invalidcolorsopacity < 1) {\n\t\t\t\tvar stagergb = $.fn.ColorPickerSliders.lch2rgb(modifiedcolor, invalidcolorsopacity);\n\t\t\t\t\n\t\t\t\tisok = stagergb.isok;\n\t\t\t\tcsscolor = $.fn.ColorPickerSliders.csscolor(stagergb, invalidcolorsopacity);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcsscolor = $.fn.ColorPickerSliders.csscolor(modifiedcolor, invalidcolorsopacity);\n\t\t\t}\n\t\t\t\n\t\t\tgradientStops[i] = {\n\t\t\t\tcolor: tinycolor(csscolor).toRgbString(),\n\t\t\t\tposition: Math.round((currentstage * (maxposition - minposition) + minposition) * 100) / 100,\n\t\t\t\tisok: isok,\n\t\t\t\trawcolor: modifiedcolor\n\t\t\t};\n\t\t}\n\t\t\n\t\treturn gradientStops;\n\t};\n\t\n\t$.fn.ColorPickerSliders.getGradientStopsCSSString = function(gradientstops) {\n\t\tvar gradientstring = \"\",\n\t\t\toldwebkit = \"\",\n\t\t\tsvgstoppoints = \"\";\n\t\t\n\t\tfor (var i = 0; i < gradientstops.length; i++) {\n\t\t\tvar el = gradientstops[i];\n\t\t\t\n\t\t\tgradientstring += \",\" + el.color + \" \" + el.position + \"%\";\n\t\t\toldwebkit += \",color-stop(\" + el.position + \"%,\" + el.color + \")\";\n\t\t\t\n\t\t\tvar svgcolor = tinycolor(el.color);\n\t\t\t\n\t\t\tsvgstoppoints += '<stop ' + 'stop-color=\"' + svgcolor.toHexString() + '\" stop-opacity=\"' + svgcolor.toRgb().a + '\"' + ' offset=\"' + el.position/100 + '\"/>';\n\t\t}\n\t\t\n\t\treturn {\n\t\t\tnoprefix: gradientstring,\n\t\t\toldwebkit: oldwebkit,\n\t\t\tsvg: svgstoppoints\n\t\t};\n\t};\n\t\n\t$.fn.ColorPickerSliders.renderNoprefix = function(element, gradientstops) {\n\t\tvar css = \"linear-gradient(to right\",\n\t\t\tstoppoints = $.fn.ColorPickerSliders.getGradientStopsCSSString(gradientstops).noprefix;\n\t\t\n\t\tcss += stoppoints + \")\";\n\t\t\n\t\telement.css(\"background-image\", css);\n\t};\n\t\n\t$.fn.ColorPickerSliders.renderWebkit = function(element, gradientstops) {\n\t\tvar css = \"-webkit-linear-gradient(left\",\n\t\t\tstoppoints = $.fn.ColorPickerSliders.getGradientStopsCSSString(gradientstops).noprefix;\n\t\t\n\t\tcss += stoppoints + \")\";\n\t\t\n\t\telement.css(\"background-image\", css);\n\t};\n\t\n\t$.fn.ColorPickerSliders.renderOldwebkit = function(element, gradientstops) {\n\t\tvar css = \"-webkit-gradient(linear, 0% 0%, 100% 0%\",\n\t\t\tstoppoints = $.fn.ColorPickerSliders.getGradientStopsCSSString(gradientstops).oldwebkit;\n\t\t\n\t\tcss += stoppoints + \")\";\n\t\t\n\t\telement.css(\"background-image\", css);\n\t};\n\t\n\t$.fn.ColorPickerSliders.renderMs = function(element, gradientstops) {\n\t\tvar css = \"-ms-linear-gradient(to right\",\n\t\t\tstoppoints = $.fn.ColorPickerSliders.getGradientStopsCSSString(gradientstops).noprefix;\n\t\t\n\t\tcss += stoppoints + \")\";\n\t\t\n\t\telement.css(\"background-image\", css);\n\t};\n\t\n\t$.fn.ColorPickerSliders.renderSVG = function(element, gradientstops) {\n\t\tvar svg = \"\",\n\t\t\tsvgstoppoints = $.fn.ColorPickerSliders.getGradientStopsCSSString(gradientstops).svg;\n\t\t\n\t\tsvg = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 1 1\" preserveAspectRatio=\"none\"><linearGradient id=\"vsgg\" gradientUnits=\"userSpaceOnUse\" x1=\"0\" y1=\"0\" x2=\"100%\" y2=\"0\">';\n\t\tsvg += svgstoppoints;\n\t\tsvg += '</linearGradient><rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"url(#vsgg)\" /></svg>';\n\t\tsvg = \"url(data:image/svg+xml;base64,\" + $.fn.ColorPickerSliders.base64encode(svg) + \")\";\n\t\t\n\t\telement.css(\"background-image\", svg);\n\t};\n\t\n\t/* source: http://phpjs.org/functions/base64_encode/ */\n\t$.fn.ColorPickerSliders.base64encode = function(data) {\n\t\tvar b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\t\tvar o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n\t\t\tac = 0,\n\t\t\tenc = \"\",\n\t\t\ttmp_arr = [];\n\t\t\n\t\tif (!data) {\n\t\t\treturn data;\n\t\t}\n\t\t\n\t\tdo {\n\t\t\to1 = data.charCodeAt(i++);\n\t\t\to2 = data.charCodeAt(i++);\n\t\t\to3 = data.charCodeAt(i++);\n\t\t\t\n\t\t\tbits = o1 << 16 | o2 << 8 | o3;\n\t\t\t\n\t\t\th1 = bits >> 18 & 0x3f;\n\t\t\th2 = bits >> 12 & 0x3f;\n\t\t\th3 = bits >> 6 & 0x3f;\n\t\t\th4 = bits & 0x3f;\n\t\t\t\n\t\t\ttmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n\t\t} while (i < data.length);\n\t\t\n\t\tenc = tmp_arr.join('');\n\t\t\n\t\tvar r = data.length % 3;\n\t\t\n\t\treturn (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);\n\t};\n\t\n\t$.fn.ColorPickerSliders.isGoodRgb = function(rgb) {\n\t\t// the default acceptable values are out of 0..255 due to\n\t\t// rounding errors with yellow and blue colors (258, -1)\n\t\tvar maxacceptable = 258;\n\t\tvar minacceptable = -1;\n\t\t\n\t\tif (rgb.r > maxacceptable || rgb.g > maxacceptable || rgb.b > maxacceptable || rgb.r < minacceptable || rgb.g < minacceptable || rgb.b < minacceptable) {\n\t\t\treturn false;\n\t\t}\n\t\telse {\n\t\t\trgb.r = Math.min(255, rgb.r);\n\t\t\trgb.g = Math.min(255, rgb.g);\n\t\t\trgb.b = Math.min(255, rgb.b);\n\t\t\trgb.r = Math.max(0, rgb.r);\n\t\t\trgb.g = Math.max(0, rgb.g);\n\t\t\trgb.b = Math.max(0, rgb.b);\n\t\t\t\n\t\t\treturn true;\n\t\t}\n\t};\n\t\n\t$.fn.ColorPickerSliders.rgb2lch = function(rgb) {\n\t\tvar lch = $.fn.ColorPickerSliders.CIELab2CIELCH($.fn.ColorPickerSliders.XYZ2CIELab($.fn.ColorPickerSliders.rgb2XYZ(rgb)));\n\t\t\n\t\tif (rgb.hasOwnProperty('a')) {\n\t\t\tlch.a = rgb.a;\n\t\t}\n\t\t\n\t\treturn lch;\n\t};\n\t\n\t$.fn.ColorPickerSliders.lch2rgb = function(lch, invalidcolorsopacity) {\n\t\tif (typeof invalidcolorsopacity === \"undefined\") {\n\t\t\tinvalidcolorsopacity = 1;\n\t\t}\n\t\t\n\t\tvar rgb = $.fn.ColorPickerSliders.XYZ2rgb($.fn.ColorPickerSliders.CIELab2XYZ($.fn.ColorPickerSliders.CIELCH2CIELab(lch)));\n\t\t\n\t\tif ($.fn.ColorPickerSliders.isGoodRgb(rgb)) {\n\t\t\tif (lch.hasOwnProperty('a')) {\n\t\t\t\trgb.a = lch.a;\n\t\t\t}\n\t\t\t\n\t\t\trgb.isok = true;\n\t\t\t\n\t\t\treturn rgb;\n\t\t}\n\t\t\n\t\tvar tmp = $.extend({}, lch),\n\t\t\tlastbadchroma = tmp.c,\n\t\t\tlastgoodchroma = -1,\n\t\t\tloops = 0;\n\t\t\n\t\tdo {\n\t\t\t++loops;\n\t\t\t\n\t\t\ttmp.c = lastgoodchroma + ((lastbadchroma - lastgoodchroma) / 2);\n\t\t\t\n\t\t\trgb = $.fn.ColorPickerSliders.XYZ2rgb($.fn.ColorPickerSliders.CIELab2XYZ($.fn.ColorPickerSliders.CIELCH2CIELab(tmp)));\n\t\t\t\n\t\t\tif ($.fn.ColorPickerSliders.isGoodRgb(rgb)) {\n\t\t\t\tlastgoodchroma = tmp.c;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlastbadchroma = tmp.c;\n\t\t\t}\n\t\t} while (Math.abs(lastbadchroma - lastgoodchroma) > 0.9 && loops < 100);\n\t\t\n\t\tif (lch.hasOwnProperty('a')) {\n\t\t\trgb.a = lch.a;\n\t\t}\n\t\t\n\t\trgb.r = Math.max(0, rgb.r);\n\t\trgb.g = Math.max(0, rgb.g);\n\t\trgb.b = Math.max(0, rgb.b);\n\t\t\n\t\trgb.r = Math.min(255, rgb.r);\n\t\trgb.g = Math.min(255, rgb.g);\n\t\trgb.b = Math.min(255, rgb.b);\n\t\t\n\t\tif (invalidcolorsopacity < 1) {\n\t\t\tif (rgb.hasOwnProperty('a')) {\n\t\t\t\trgb.a = rgb.a * invalidcolorsopacity;\n\t\t\t}\n\t\t\telse {\n\t\t\t\trgb.a = invalidcolorsopacity;\n\t\t\t}\n\t\t}\n\t\t\n\t\trgb.isok = false;\n\t\t\n\t\treturn rgb;\n\t};\n\t\n\t$.fn.ColorPickerSliders.modifyColor = function(color, property, value) {\n\t\tvar modifiedcolor = $.extend({}, color);\n\t\t\n\t\tif (!color.hasOwnProperty(property)) {\n\t\t\tthrow(\"Missing color property: \" + property);\n\t\t}\n\t\t\n\t\tmodifiedcolor[property] = value;\n\t\t\n\t\treturn modifiedcolor;\n\t};\n\t\n\t$.fn.ColorPickerSliders.csscolor = function(color, invalidcolorsopacity) {\n\t\tif (typeof invalidcolorsopacity === \"undefined\") {\n\t\t\tinvalidcolorsopacity = 1;\n\t\t}\n\t\t\n\t\tvar $return = false,\n\t\t\ttmpcolor = $.extend({}, color);\n\t\t\n\t\tif (tmpcolor.hasOwnProperty('c')) {\n\t\t\t// CIE-LCh\n\t\t\ttmpcolor = $.fn.ColorPickerSliders.lch2rgb(tmpcolor, invalidcolorsopacity);\n\t\t}\n\t\t\n\t\tif (tmpcolor.hasOwnProperty('h')) {\n\t\t\t// HSL\n\t\t\t$return = \"hsla(\" + tmpcolor.h + \",\" + tmpcolor.s * 100 + \"%,\" + tmpcolor.l * 100 + \"%,\" + tmpcolor.a + \")\";\n\t\t}\n\t\t\n\t\tif (tmpcolor.hasOwnProperty('r')) {\n\t\t\t// RGB\n\t\t\tif (tmpcolor.a < 1) {\n\t\t\t\t$return = \"rgba(\" + Math.round(tmpcolor.r) + \",\" + Math.round(tmpcolor.g) + \",\" + Math.round(tmpcolor.b) + \",\" + tmpcolor.a + \")\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\t$return = \"rgb(\" + Math.round(tmpcolor.r) + \",\" + Math.round(tmpcolor.g) + \",\" + Math.round(tmpcolor.b) + \")\";\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn $return;\n\t};\n\t\n\t$.fn.ColorPickerSliders.rgb2XYZ = function(rgb) {\n\t\tvar XYZ = {};\n\t\t\n\t\tvar r = (rgb.r / 255);\n\t\tvar g = (rgb.g / 255);\n\t\tvar b = (rgb.b / 255);\n\t\t\n\t\tif (r > 0.04045) {\n\t\t\tr = Math.pow(((r + 0.055) / 1.055), 2.4);\n\t\t}\n\t\telse {\n\t\t\tr = r / 12.92;\n\t\t}\n\t\t\n\t\tif (g > 0.04045) {\n\t\t\tg = Math.pow(((g + 0.055) / 1.055), 2.4);\n\t\t}\n\t\telse {\n\t\t\tg = g / 12.92;\n\t\t}\n\t\t\n\t\tif (b > 0.04045) {\n\t\t\tb = Math.pow(((b + 0.055) / 1.055), 2.4);\n\t\t}\n\t\telse {\n\t\t\tb = b / 12.92;\n\t\t}\n\t\t\n\t\tr = r * 100;\n\t\tg = g * 100;\n\t\tb = b * 100;\n\t\t\n\t\t// Observer = 2°, Illuminant = D65\n\t\tXYZ.x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n\t\tXYZ.y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n\t\tXYZ.z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n\t\t\n\t\treturn XYZ;\n\t};\n\t\n\t$.fn.ColorPickerSliders.XYZ2CIELab = function(XYZ) {\n\t\tvar CIELab = {};\n\t\t\n\t\t// Observer = 2°, Illuminant = D65\n\t\tvar X = XYZ.x / 95.047;\n\t\tvar Y = XYZ.y / 100.000;\n\t\tvar Z = XYZ.z / 108.883;\n\t\t\n\t\tif (X > 0.008856) {\n\t\t\tX = Math.pow(X, 0.333333333);\n\t\t}\n\t\telse {\n\t\t\tX = 7.787 * X + 0.137931034;\n\t\t}\n\t\t\n\t\tif (Y > 0.008856) {\n\t\t\tY = Math.pow(Y, 0.333333333);\n\t\t}\n\t\telse {\n\t\t\tY = 7.787 * Y + 0.137931034;\n\t\t}\n\t\t\n\t\tif (Z > 0.008856) {\n\t\t\tZ = Math.pow(Z, 0.333333333);\n\t\t}\n\t\telse {\n\t\t\tZ = 7.787 * Z + 0.137931034;\n\t\t}\n\t\t\n\t\tCIELab.l = (116 * Y) - 16;\n\t\tCIELab.a = 500 * (X - Y);\n\t\tCIELab.b = 200 * (Y - Z);\n\t\t\n\t\treturn CIELab;\n\t};\n\t\n\t$.fn.ColorPickerSliders.CIELab2CIELCH = function(CIELab) {\n\t\tvar CIELCH = {};\n\t\t\n\t\tCIELCH.l = CIELab.l;\n\t\tCIELCH.c = Math.sqrt(Math.pow(CIELab.a, 2) + Math.pow(CIELab.b, 2));\n\t\t\n\t\tCIELCH.h = Math.atan2(CIELab.b, CIELab.a);  //Quadrant by signs\n\t\t\n\t\tif (CIELCH.h > 0) {\n\t\t\tCIELCH.h = (CIELCH.h / Math.PI) * 180;\n\t\t}\n\t\telse {\n\t\t\tCIELCH.h = 360 - (Math.abs(CIELCH.h) / Math.PI) * 180;\n\t\t}\n\t\t\n\t\treturn CIELCH;\n\t};\n\t\n\t$.fn.ColorPickerSliders.CIELCH2CIELab = function(CIELCH) {\n\t\tvar CIELab = {};\n\t\t\n\t\tCIELab.l = CIELCH.l;\n\t\tCIELab.a = Math.cos(CIELCH.h * 0.01745329251) * CIELCH.c;\n\t\tCIELab.b = Math.sin(CIELCH.h * 0.01745329251) * CIELCH.c;\n\t\t\n\t\treturn CIELab;\n\t};\n\t\n\t$.fn.ColorPickerSliders.CIELab2XYZ = function(CIELab) {\n\t\tvar XYZ = {};\n\t\t\n\t\tXYZ.y = (CIELab.l + 16) / 116;\n\t\tXYZ.x = CIELab.a / 500 + XYZ.y;\n\t\tXYZ.z = XYZ.y - CIELab.b / 200;\n\t\t\n\t\tif (Math.pow(XYZ.y, 3) > 0.008856) {\n\t\t\tXYZ.y = Math.pow(XYZ.y, 3);\n\t\t}\n\t\telse {\n\t\t\tXYZ.y = (XYZ.y - 0.137931034) / 7.787;\n\t\t}\n\t\t\n\t\tif (Math.pow(XYZ.x, 3) > 0.008856) {\n\t\t\tXYZ.x = Math.pow(XYZ.x, 3);\n\t\t}\n\t\telse {\n\t\t\tXYZ.x = (XYZ.x - 0.137931034) / 7.787;\n\t\t}\n\t\t\n\t\tif (Math.pow(XYZ.z, 3) > 0.008856) {\n\t\t\tXYZ.z = Math.pow(XYZ.z, 3);\n\t\t}\n\t\telse {\n\t\t\tXYZ.z = (XYZ.z - 0.137931034) / 7.787;\n\t\t}\n\t\t\n\t\t// Observer = 2°, Illuminant = D65\n\t\tXYZ.x = 95.047 * XYZ.x;\n\t\tXYZ.y = 100.000 * XYZ.y;\n\t\tXYZ.z = 108.883 * XYZ.z;\n\t\t\n\t\treturn XYZ;\n\t};\n\t\n\t$.fn.ColorPickerSliders.XYZ2rgb = function(XYZ) {\n\t\tvar rgb = {};\n\t\t\n\t\t// Observer = 2°, Illuminant = D65\n\t\tXYZ.x = XYZ.x / 100;        // X from 0 to 95.047\n\t\tXYZ.y = XYZ.y / 100;        // Y from 0 to 100.000\n\t\tXYZ.z = XYZ.z / 100;        // Z from 0 to 108.883\n\t\t\n\t\trgb.r = XYZ.x * 3.2406 + XYZ.y * -1.5372 + XYZ.z * -0.4986;\n\t\trgb.g = XYZ.x * -0.9689 + XYZ.y * 1.8758 + XYZ.z * 0.0415;\n\t\trgb.b = XYZ.x * 0.0557 + XYZ.y * -0.2040 + XYZ.z * 1.0570;\n\t\t\n\t\tif (rgb.r > 0.0031308) {\n\t\t\trgb.r = 1.055 * (Math.pow(rgb.r, 0.41666667)) - 0.055;\n\t\t}\n\t\telse {\n\t\t\trgb.r = 12.92 * rgb.r;\n\t\t}\n\t\t\n\t\tif (rgb.g > 0.0031308) {\n\t\t\trgb.g = 1.055 * (Math.pow(rgb.g, 0.41666667)) - 0.055;\n\t\t}\n\t\telse {\n\t\t\trgb.g = 12.92 * rgb.g;\n\t\t}\n\t\t\n\t\tif (rgb.b > 0.0031308) {\n\t\t\trgb.b = 1.055 * (Math.pow(rgb.b, 0.41666667)) - 0.055;\n\t\t}\n\t\telse {\n\t\t\trgb.b = 12.92 * rgb.b;\n\t\t}\n\t\t\n\t\trgb.r = Math.round(rgb.r * 255);\n\t\trgb.g = Math.round(rgb.g * 255);\n\t\trgb.b = Math.round(rgb.b * 255);\n\t\t\n\t\treturn rgb;\n\t};\n\t\n\t$.fn.ColorPickerSliders.detectWhichGradientIsSupported = function() {\n\t\tvar testelement = document.createElement('detectGradientSupport').style;\n\t\t\n\t\ttry {\n\t\t\ttestelement.backgroundImage = \"linear-gradient(to top left, #9f9, white)\";\n\t\t\tif (testelement.backgroundImage.indexOf(\"gradient\") !== -1) {\n\t\t\t\treturn \"noprefix\";\n\t\t\t}\n\t\t\t\n\t\t\ttestelement.backgroundImage = \"-webkit-linear-gradient(left top, #9f9, white)\";\n\t\t\tif (testelement.backgroundImage.indexOf(\"gradient\") !== -1) {\n\t\t\t\treturn \"webkit\";\n\t\t\t}\n\t\t\t\n\t\t\ttestelement.backgroundImage = \"-ms-linear-gradient(left top, #9f9, white)\";\n\t\t\tif (testelement.backgroundImage.indexOf(\"gradient\") !== -1) {\n\t\t\t\treturn \"ms\";\n\t\t\t}\n\t\t\t\n\t\t\ttestelement.backgroundImage = \"-webkit-gradient(linear, left top, right bottom, from(#9f9), to(white))\";\n\t\t\tif (testelement.backgroundImage.indexOf(\"gradient\") !== -1) {\n\t\t\t\treturn \"oldwebkit\";\n\t\t\t}\n\t\t}\n\t\tcatch(err) {\n\t\t\ttry {\n\t\t\t\ttestelement.filter = \"progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#000000',GradientType=0)\";\n\t\t\t\tif (testelement.filter.indexOf(\"DXImageTransform\") !== -1) {\n\t\t\t\t\treturn \"filter\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch(err) {}\n\t\t}\n\t\t\n\t\treturn false;\n\t};\n\t\n\t$.fn.ColorPickerSliders.svgSupported = function() {\n\t\treturn !! document.createElementNS && !! document.createElementNS('http://www.w3.org/2000/svg','svg').createSVGRect;\n\t};\n\t\n})(jQuery);","/**\n * Ajax functions, used in Panel\n */\n\n\nvar AwesomeAjax = function(prefix){\n    'use strict';\n\n    var $ = jQuery; // enable jQuery\n    var self = this;\n    var prefix = prefix + '_';\n    self.result = {};\n\n\n\n    // Load model data from WP\n    self.load_model = function(model_name, item_id, callback_success, callback_error){\n        return self.ajax({\n            action: prefix + 'get_' + model_name,\n            data: {\n                'id': item_id\n            },\n            success_handler: callback_success,\n            error_handler: callback_error\n        });\n    };\n\n    self.publish_model = function (id, callback_success, callback_error) {\n        return self.ajax({\n            action: prefix + 'publish_model',\n            data: {\n                'id': id\n            },\n            success_handler: callback_success,\n            error_handler: callback_error\n        });\n    }\n\n    // delete model by ID and model name\n    self.delete_model = function(id, model_name){\n        return self.ajax({\n            action: prefix + 'delete_model',\n            data: {\n                'id': id,\n                'model_name': model_name\n            },\n            success_handler: function (result) {\n                return result;\n            }\n        });\n    };\n\n    // WP AJAX wrapper\n    self.ajax = function (args) {\n        return $.ajax({\n            url: window[prefix + 'localize']['ajaxurl'],\n            type: 'post',\n            data: {\n                action: args.action,\n                security: window[prefix + 'localize']['ajax_nonce'],\n                data: args.data || {}\n            },\n            success: function (data) {\n                var responseArray = wpAjax.parseAjaxResponse(data);\n                if(responseArray.errors){\n                    var errors =  responseArray.responses[0].errors;\n                    args.success_error_handler(errors)\n                }else{\n                    var result = JSON.parse(responseArray.responses[0].data);\n                    args.success_handler(result);\n                }\n            },\n            error: function (data) {\n                args.error_handler(data);\n            }\n        });\n    }\n};","/**\n * System functions\n */\nvar AwesomeUtil = {\n    // detect OS\n    detect_os: function () {\n        var os_name = \"Unknown OS\";\n        if (navigator.appVersion.indexOf(\"Win\") != -1) os_name = \"Windows\";\n        if (navigator.appVersion.indexOf(\"Mac\") != -1) os_name = \"MacOS\";\n        if (navigator.appVersion.indexOf(\"X11\") != -1) os_name = \"UNIX\";\n        if (navigator.appVersion.indexOf(\"Linux\") != -1) os_name = \"Linux\";\n        return os_name;\n    },\n\n    // convert array to object\n    toObject: function (arr) {\n        var rv = {};\n        for (var i = 0; i < arr.length; ++i) {\n            if (typeof arr[i] === 'object') {\n                rv[i] = AwesomeUtil.toObject(arr[i]);\n            } else {\n                rv[i] = arr[i];\n            }\n        }\n        return rv;\n    },\n\n    // helper function to find some value in array of objects\n    find_in_array_of_objects: function (array, key, value){\n        var result = false;\n        jQuery.each(array, function(index, item){\n            if(item.hasOwnProperty(key) && item[key] == value){\n                result = true;\n            }\n        });\n        return result;\n    },\n\n    // convert HEX color to RGB color\n    hex_to_rgb: function (hex){\n        hex = parseInt(hex, 16);\n        var r = hex >> 16;\n        var g = hex >> 8 & 0xFF;\n        var b = hex & 0xFF;\n        return [r,g,b];\n    },\n\n    // calculate size properly\n    calc_size: function (raw){\n        raw = ''+raw;\n        if(raw.endsWith('%') || raw.endsWith('px')){\n            return raw;\n        }\n        var result = raw.replace('/[^0-9]/', '');\n        return result + 'px';\n    },\n\n    // clean number from non-digit characters\n    clean_number: function (raw) {\n        return parseInt(raw.replace(/\\D+/g, ''));\n    },\n\n    get_keys: function (obj){\n        var result = {};\n        var i = 0;\n        _.each(obj, function (value, key, list) {\n            if(typeof value === 'object'){\n                result[i] = AwesomeUtil.get_keys(value);\n            }else{\n                result[i] = key;\n            }\n            i++;\n        });\n        return result;\n    },\n\n    find_key_by_value: function (needle, haystack) {\n        var result;\n        _.find(haystack, function(value, key){\n            if(typeof value === 'object'){\n                result = AwesomeUtil.find_key_by_value(needle, value);\n            }else{\n                if (value === needle) {\n                    result = key;\n                    return true;\n                }else{\n                    return false;\n                }\n            }\n        });\n        return result;\n    },\n\n    find_index_by_value: function (needle, haystack) {\n        var keys = AwesomeUtil.get_keys(haystack);\n        var key = AwesomeUtil.find_key_by_value(needle, haystack);\n        var result = AwesomeUtil.find_key_by_value(key, keys);\n\n        return result;\n    },\n\n    removeClass: function (el, start_with) {\n        jQuery(el).removeClass (function (index, css) {\n            var regex = new RegExp('(^|\\\\s)' + start_with + '\\\\S+', 'g');\n            return (css.match (regex) || []).join(' ');\n        });\n    }\n};\n\n// smart replace for templates\nString.prototype.replace_all = function(find, replace){\n    return this.replace(new RegExp(find, 'g'), replace);\n};\n\n// capitalize\nString.prototype.capitalize = function () {\n    return this.charAt(0).toUpperCase() + this.slice(1);\n};\n\n// check string ends with special characters\nString.prototype.endsWith = function(end){\n    return this.indexOf(end, this.length - end.length) !== -1;\n};\n\n// 10/19 removed due to conflict\n// Array last item\n/*if (!Array.prototype.last){\n    Array.prototype.last = function(){\n        return this[this.length - 1];\n    };\n};*/\n\nvar $ = jQuery;\n// check if element visible on screen\n$.fn.isVisible = function (parent) {\n    var $parent = parent !== 'undefined' ? $(parent) : $(window);\n    var windowScrollTopView = $parent.scrollTop();\n    var elemTop = $(this).height();\n    return (\n        elemTop >= windowScrollTopView\n    );\n};","/*\n * jQuery.fontselect - A font selector for the Google Web Fonts api\n * Tom Moor, http://tommoor.com\n * Copyright (c) 2011 Tom Moor\n * MIT Licensed\n * @version 0.1\n */\n\n(function ($) {\n\n    $.fn.fontselect = function (options) {\n\n        var __bind = function (fn, me) {\n            return function () {\n                return fn.apply(me, arguments);\n            };\n        };\n\n        var settings = {\n            fonts : [\"ABeeZee\",\"Abel\",\"Abril Fatface\",\"Aclonica\",\"Acme\",\"Actor\",\"Adamina\",\"Advent Pro\",\"Aguafina Script\",\"Akronim\",\"Aladin\",\"Aldrich\",\"Alef\",\"Alegreya\",\"Alegreya SC\",\"Alegreya Sans\",\"Alegreya Sans SC\",\"Alex Brush\",\"Alfa Slab One\",\"Alice\",\"Alike\",\"Alike Angular\",\"Allan\",\"Allerta\",\"Allerta Stencil\",\"Allura\",\"Almendra\",\"Almendra Display\",\"Almendra SC\",\"Amarante\",\"Amaranth\",\"Amatic SC\",\"Amethysta\",\"Amiri\",\"Amita\",\"Anaheim\",\"Andada\",\"Andika\",\"Angkor\",\"Annie Use Your Telescope\",\"Anonymous Pro\",\"Antic\",\"Antic Didone\",\"Antic Slab\",\"Anton\",\"Arapey\",\"Arbutus\",\"Arbutus Slab\",\"Architects Daughter\",\"Archivo Black\",\"Archivo Narrow\",\"Arimo\",\"Arizonia\",\"Armata\",\"Artifika\",\"Arvo\",\"Arya\",\"Asap\",\"Asar\",\"Asset\",\"Astloch\",\"Asul\",\"Atomic Age\",\"Aubrey\",\"Audiowide\",\"Autour One\",\"Average\",\"Average Sans\",\"Averia Gruesa Libre\",\"Averia Libre\",\"Averia Sans Libre\",\"Averia Serif Libre\",\"Bad Script\",\"Balthazar\",\"Bangers\",\"Basic\",\"Battambang\",\"Baumans\",\"Bayon\",\"Belgrano\",\"Belleza\",\"BenchNine\",\"Bentham\",\"Berkshire Swash\",\"Bevan\",\"Bigelow Rules\",\"Bigshot One\",\"Bilbo\",\"Bilbo Swash Caps\",\"Biryani\",\"Bitter\",\"Black Ops One\",\"Bokor\",\"Bonbon\",\"Boogaloo\",\"Bowlby One\",\"Bowlby One SC\",\"Brawler\",\"Bree Serif\",\"Bubblegum Sans\",\"Bubbler One\",\"Buda\",\"Buenard\",\"Butcherman\",\"Butterfly Kids\",\"Cabin\",\"Cabin Condensed\",\"Cabin Sketch\",\"Caesar Dressing\",\"Cagliostro\",\"Calligraffitti\",\"Cambay\",\"Cambo\",\"Candal\",\"Cantarell\",\"Cantata One\",\"Cantora One\",\"Capriola\",\"Cardo\",\"Carme\",\"Carrois Gothic\",\"Carrois Gothic SC\",\"Carter One\",\"Catamaran\",\"Caudex\",\"Caveat\",\"Caveat Brush\",\"Cedarville Cursive\",\"Ceviche One\",\"Changa One\",\"Chango\",\"Chau Philomene One\",\"Chela One\",\"Chelsea Market\",\"Chenla\",\"Cherry Cream Soda\",\"Cherry Swash\",\"Chewy\",\"Chicle\",\"Chivo\",\"Chonburi\",\"Cinzel\",\"Cinzel Decorative\",\"Clicker Script\",\"Coda\",\"Coda Caption\",\"Codystar\",\"Combo\",\"Comfortaa\",\"Coming Soon\",\"Concert One\",\"Condiment\",\"Content\",\"Contrail One\",\"Convergence\",\"Cookie\",\"Copse\",\"Corben\",\"Courgette\",\"Cousine\",\"Coustard\",\"Covered By Your Grace\",\"Crafty Girls\",\"Creepster\",\"Crete Round\",\"Crimson Text\",\"Croissant One\",\"Crushed\",\"Cuprum\",\"Cutive\",\"Cutive Mono\",\"Damion\",\"Dancing Script\",\"Dangrek\",\"Dawning of a New Day\",\"Days One\",\"Dekko\",\"Delius\",\"Delius Swash Caps\",\"Delius Unicase\",\"Della Respira\",\"Denk One\",\"Devonshire\",\"Dhurjati\",\"Didact Gothic\",\"Diplomata\",\"Diplomata SC\",\"Domine\",\"Donegal One\",\"Doppio One\",\"Dorsa\",\"Dosis\",\"Dr Sugiyama\",\"Droid Sans\",\"Droid Sans Mono\",\"Droid Serif\",\"Duru Sans\",\"Dynalight\",\"EB Garamond\",\"Eagle Lake\",\"Eater\",\"Economica\",\"Eczar\",\"Ek Mukta\",\"Electrolize\",\"Elsie\",\"Elsie Swash Caps\",\"Emblema One\",\"Emilys Candy\",\"Engagement\",\"Englebert\",\"Enriqueta\",\"Erica One\",\"Esteban\",\"Euphoria Script\",\"Ewert\",\"Exo\",\"Exo 2\",\"Expletus Sans\",\"Fanwood Text\",\"Fascinate\",\"Fascinate Inline\",\"Faster One\",\"Fasthand\",\"Fauna One\",\"Federant\",\"Federo\",\"Felipa\",\"Fenix\",\"Finger Paint\",\"Fira Mono\",\"Fira Sans\",\"Fjalla One\",\"Fjord One\",\"Flamenco\",\"Flavors\",\"Fondamento\",\"Fontdiner Swanky\",\"Forum\",\"Francois One\",\"Freckle Face\",\"Fredericka the Great\",\"Fredoka One\",\"Freehand\",\"Fresca\",\"Frijole\",\"Fruktur\",\"Fugaz One\",\"GFS Didot\",\"GFS Neohellenic\",\"Gabriela\",\"Gafata\",\"Galdeano\",\"Galindo\",\"Gentium Basic\",\"Gentium Book Basic\",\"Geo\",\"Geostar\",\"Geostar Fill\",\"Germania One\",\"Gidugu\",\"Gilda Display\",\"Give You Glory\",\"Glass Antiqua\",\"Glegoo\",\"Gloria Hallelujah\",\"Goblin One\",\"Gochi Hand\",\"Gorditas\",\"Goudy Bookletter 1911\",\"Graduate\",\"Grand Hotel\",\"Gravitas One\",\"Great Vibes\",\"Griffy\",\"Gruppo\",\"Gudea\",\"Gurajada\",\"Habibi\",\"Halant\",\"Hammersmith One\",\"Hanalei\",\"Hanalei Fill\",\"Handlee\",\"Hanuman\",\"Happy Monkey\",\"Headland One\",\"Henny Penny\",\"Herr Von Muellerhoff\",\"Hind\",\"Hind Siliguri\",\"Hind Vadodara\",\"Holtwood One SC\",\"Homemade Apple\",\"Homenaje\",\"IM Fell DW Pica\",\"IM Fell DW Pica SC\",\"IM Fell Double Pica\",\"IM Fell Double Pica SC\",\"IM Fell English\",\"IM Fell English SC\",\"IM Fell French Canon\",\"IM Fell French Canon SC\",\"IM Fell Great Primer\",\"IM Fell Great Primer SC\",\"Iceberg\",\"Iceland\",\"Imprima\",\"Inconsolata\",\"Inder\",\"Indie Flower\",\"Inika\",\"Inknut Antiqua\",\"Irish Grover\",\"Istok Web\",\"Italiana\",\"Italianno\",\"Itim\",\"Jacques Francois\",\"Jacques Francois Shadow\",\"Jaldi\",\"Jim Nightshade\",\"Jockey One\",\"Jolly Lodger\",\"Josefin Sans\",\"Josefin Slab\",\"Joti One\",\"Judson\",\"Julee\",\"Julius Sans One\",\"Junge\",\"Jura\",\"Just Another Hand\",\"Just Me Again Down Here\",\"Kadwa\",\"Kalam\",\"Kameron\",\"Kanit\",\"Kantumruy\",\"Karla\",\"Karma\",\"Kaushan Script\",\"Kavoon\",\"Kdam Thmor\",\"Keania One\",\"Kelly Slab\",\"Kenia\",\"Khand\",\"Khmer\",\"Khula\",\"Kite One\",\"Knewave\",\"Kotta One\",\"Koulen\",\"Kranky\",\"Kreon\",\"Kristi\",\"Krona One\",\"Kurale\",\"La Belle Aurore\",\"Laila\",\"Lakki Reddy\",\"Lancelot\",\"Lateef\",\"Lato\",\"League Script\",\"Leckerli One\",\"Ledger\",\"Lekton\",\"Lemon\",\"Libre Baskerville\",\"Life Savers\",\"Lilita One\",\"Lily Script One\",\"Limelight\",\"Linden Hill\",\"Lobster\",\"Lobster Two\",\"Londrina Outline\",\"Londrina Shadow\",\"Londrina Sketch\",\"Londrina Solid\",\"Lora\",\"Love Ya Like A Sister\",\"Loved by the King\",\"Lovers Quarrel\",\"Luckiest Guy\",\"Lusitana\",\"Lustria\",\"Macondo\",\"Macondo Swash Caps\",\"Magra\",\"Maiden Orange\",\"Mako\",\"Mallanna\",\"Mandali\",\"Marcellus\",\"Marcellus SC\",\"Marck Script\",\"Margarine\",\"Marko One\",\"Marmelad\",\"Martel\",\"Martel Sans\",\"Marvel\",\"Mate\",\"Mate SC\",\"Maven Pro\",\"McLaren\",\"Meddon\",\"MedievalSharp\",\"Medula One\",\"Megrim\",\"Meie Script\",\"Merienda\",\"Merienda One\",\"Merriweather\",\"Merriweather Sans\",\"Metal\",\"Metal Mania\",\"Metamorphous\",\"Metrophobic\",\"Michroma\",\"Milonga\",\"Miltonian\",\"Miltonian Tattoo\",\"Miniver\",\"Miss Fajardose\",\"Modak\",\"Modern Antiqua\",\"Molengo\",\"Molle\",\"Monda\",\"Monofett\",\"Monoton\",\"Monsieur La Doulaise\",\"Montaga\",\"Montez\",\"Montserrat\",\"Montserrat Alternates\",\"Montserrat Subrayada\",\"Moul\",\"Moulpali\",\"Mountains of Christmas\",\"Mouse Memoirs\",\"Mr Bedfort\",\"Mr Dafoe\",\"Mr De Haviland\",\"Mrs Saint Delafield\",\"Mrs Sheppards\",\"Muli\",\"Mystery Quest\",\"NTR\",\"Neucha\",\"Neuton\",\"New Rocker\",\"News Cycle\",\"Niconne\",\"Nixie One\",\"Nobile\",\"Nokora\",\"Norican\",\"Nosifer\",\"Nothing You Could Do\",\"Noticia Text\",\"Noto Sans\",\"Noto Serif\",\"Nova Cut\",\"Nova Flat\",\"Nova Mono\",\"Nova Oval\",\"Nova Round\",\"Nova Script\",\"Nova Slim\",\"Nova Square\",\"Numans\",\"Nunito\",\"Odor Mean Chey\",\"Offside\",\"Old Standard TT\",\"Oldenburg\",\"Oleo Script\",\"Oleo Script Swash Caps\",\"Open Sans\",\"Open Sans Condensed\",\"Oranienbaum\",\"Orbitron\",\"Oregano\",\"Orienta\",\"Original Surfer\",\"Oswald\",\"Over the Rainbow\",\"Overlock\",\"Overlock SC\",\"Ovo\",\"Oxygen\",\"Oxygen Mono\",\"PT Mono\",\"PT Sans\",\"PT Sans Caption\",\"PT Sans Narrow\",\"PT Serif\",\"PT Serif Caption\",\"Pacifico\",\"Palanquin\",\"Palanquin Dark\",\"Paprika\",\"Parisienne\",\"Passero One\",\"Passion One\",\"Pathway Gothic One\",\"Patrick Hand\",\"Patrick Hand SC\",\"Patua One\",\"Paytone One\",\"Peddana\",\"Peralta\",\"Permanent Marker\",\"Petit Formal Script\",\"Petrona\",\"Philosopher\",\"Piedra\",\"Pinyon Script\",\"Pirata One\",\"Plaster\",\"Play\",\"Playball\",\"Playfair Display\",\"Playfair Display SC\",\"Podkova\",\"Poiret One\",\"Poller One\",\"Poly\",\"Pompiere\",\"Pontano Sans\",\"Poppins\",\"Port Lligat Sans\",\"Port Lligat Slab\",\"Pragati Narrow\",\"Prata\",\"Preahvihear\",\"Press Start 2P\",\"Princess Sofia\",\"Prociono\",\"Prosto One\",\"Puritan\",\"Purple Purse\",\"Quando\",\"Quantico\",\"Quattrocento\",\"Quattrocento Sans\",\"Questrial\",\"Quicksand\",\"Quintessential\",\"Qwigley\",\"Racing Sans One\",\"Radley\",\"Rajdhani\",\"Raleway\",\"Raleway Dots\",\"Ramabhadra\",\"Ramaraja\",\"Rambla\",\"Rammetto One\",\"Ranchers\",\"Rancho\",\"Ranga\",\"Rationale\",\"Ravi Prakash\",\"Redressed\",\"Reenie Beanie\",\"Revalia\",\"Rhodium Libre\",\"Ribeye\",\"Ribeye Marrow\",\"Righteous\",\"Risque\",\"Roboto\",\"Roboto Condensed\",\"Roboto Mono\",\"Roboto Slab\",\"Rochester\",\"Rock Salt\",\"Rokkitt\",\"Romanesco\",\"Ropa Sans\",\"Rosario\",\"Rosarivo\",\"Rouge Script\",\"Rozha One\",\"Rubik\",\"Rubik Mono One\",\"Rubik One\",\"Ruda\",\"Rufina\",\"Ruge Boogie\",\"Ruluko\",\"Rum Raisin\",\"Ruslan Display\",\"Russo One\",\"Ruthie\",\"Rye\",\"Sacramento\",\"Sahitya\",\"Sail\",\"Salsa\",\"Sanchez\",\"Sancreek\",\"Sansita One\",\"Sarala\",\"Sarina\",\"Sarpanch\",\"Satisfy\",\"Scada\",\"Scheherazade\",\"Schoolbell\",\"Seaweed Script\",\"Sevillana\",\"Seymour One\",\"Shadows Into Light\",\"Shadows Into Light Two\",\"Shanti\",\"Share\",\"Share Tech\",\"Share Tech Mono\",\"Shojumaru\",\"Short Stack\",\"Siemreap\",\"Sigmar One\",\"Signika\",\"Signika Negative\",\"Simonetta\",\"Sintony\",\"Sirin Stencil\",\"Six Caps\",\"Skranji\",\"Slabo 13px\",\"Slabo 27px\",\"Slackey\",\"Smokum\",\"Smythe\",\"Sniglet\",\"Snippet\",\"Snowburst One\",\"Sofadi One\",\"Sofia\",\"Sonsie One\",\"Sorts Mill Goudy\",\"Source Code Pro\",\"Source Sans Pro\",\"Source Serif Pro\",\"Special Elite\",\"Spicy Rice\",\"Spinnaker\",\"Spirax\",\"Squada One\",\"Sree Krushnadevaraya\",\"Stalemate\",\"Stalinist One\",\"Stardos Stencil\",\"Stint Ultra Condensed\",\"Stint Ultra Expanded\",\"Stoke\",\"Strait\",\"Sue Ellen Francisco\",\"Sumana\",\"Sunshiney\",\"Supermercado One\",\"Sura\",\"Suranna\",\"Suravaram\",\"Suwannaphum\",\"Swanky and Moo Moo\",\"Syncopate\",\"Tangerine\",\"Taprom\",\"Tauri\",\"Teko\",\"Telex\",\"Tenali Ramakrishna\",\"Tenor Sans\",\"Text Me One\",\"The Girl Next Door\",\"Tienne\",\"Tillana\",\"Timmana\",\"Tinos\",\"Titan One\",\"Titillium Web\",\"Trade Winds\",\"Trocchi\",\"Trochut\",\"Trykker\",\"Tulpen One\",\"Ubuntu\",\"Ubuntu Condensed\",\"Ubuntu Mono\",\"Ultra\",\"Uncial Antiqua\",\"Underdog\",\"Unica One\",\"UnifrakturCook\",\"UnifrakturMaguntia\",\"Unkempt\",\"Unlock\",\"Unna\",\"VT323\",\"Vampiro One\",\"Varela\",\"Varela Round\",\"Vast Shadow\",\"Vesper Libre\",\"Vibur\",\"Vidaloka\",\"Viga\",\"Voces\",\"Volkhov\",\"Vollkorn\",\"Voltaire\",\"Waiting for the Sunrise\",\"Wallpoet\",\"Walter Turncoat\",\"Warnes\",\"Wellfleet\",\"Wendy One\",\"Wire One\",\"Work Sans\",\"Yanone Kaffeesatz\",\"Yantramanav\",\"Yellowtail\",\"Yeseva One\",\"Yesteryear\",\"Zeyada\"],\n            empty: 'empty',\n            style: 'font-select',\n            placeholder: 'Select a font',\n            lookahead: 2,\n            api: '//fonts.googleapis.com/css?family='\n        };\n\n        var Fontselect = (function () {\n\n            function Fontselect(original, o) {\n                this.$original = $(original);\n                this.options = o;\n                this.active = false;\n                this.setupHtml();\n                this.getVisibleFonts();\n                this.bindEvents();\n\n                var font = this.$original.val();\n                if (font && font !== this.options.empty) {\n                    this.updateSelected();\n                    this.addFontLink(font);\n                }\n            }\n\t\n\t        Fontselect.prototype.bindEvents = function(){\n\t\t\n\t\t        $('li', this.$results)\n\t\t\t        .on( 'click', __bind(this.selectFont, this))\n                    .on( 'click', __bind(this.selectFont, this))\n                    .on( 'click', __bind(this.activateFont, this))\n                //.on( 'mouseenter', __bind(this.activateFont, this))\n                //.on( 'mouseenter', __bind(this.deactivateFont, this));\n\t\t\n\t\t        $('span', this.$select).on( 'click', __bind(this.toggleDrop, this));\n\t\t        this.$arrow.on( 'click', __bind(this.toggleDrop, this));\n\t        };\n\n            Fontselect.prototype.toggleDrop = function (ev) {\n                if (this.active) {\n                    this.$element.removeClass('font-select-active');\n                    this.$drop.hide();\n                    clearInterval(this.visibleInterval);\n                } else {\n                    this.$element.addClass('font-select-active');\n                    this.$drop.show();\n                    this.moveToSelected();\n                    this.visibleInterval = setInterval(__bind(this.getVisibleFonts, this), 500);\n                }\n\n                this.active = !this.active;\n            };\n\n            Fontselect.prototype.selectFont = function () {\n                var font = $('li.active', this.$results).data('value');\n                this.$original.val(font).change();\n                this.updateSelected();\n                this.toggleDrop();\n            };\n\n            Fontselect.prototype.moveToSelected = function () {\n                var $li, font = this.$original.val();\n\n                if (font) {\n                    $li = $(\"li[data-value='\" + font + \"']\", this.$results);\n                } else {\n                    $li = $(\"li\", this.$results).first();\n                }\n                this.$results.scrollTop(0).scrollTop($li.addClass('active').position().top);\n            };\n\n            Fontselect.prototype.activateFont = function (ev) {\n                $('li.active', this.$results).removeClass('active');\n                $(ev.currentTarget).addClass('active');\n            };\n\n            Fontselect.prototype.deactivateFont = function (ev) {\n\n                $(ev.currentTarget).removeClass('active');\n            };\n\n            Fontselect.prototype.updateSelected = function () {\n                var font = this.$original.val();\n                var val = this.toReadable(font) == this.options.empty ? this.options.placeholder : this.toReadable(font);\n                $('span', this.$element).text(val).css({\n                    'font-family': 'Lato'\n                });\n                if (font !== this.options.empty) {\n                    this.addFontLink(font);\n                    $('span', this.$element).css(this.toStyle(font));\n                }\n            };\n\n            Fontselect.prototype.setupHtml = function () {\n                this.$original.empty().hide();\n                this.$element = $('<div>', {'class': this.options.style});\n                this.$arrow = $('<div><b></b></div>');\n                this.$select = $('<a><span>' + this.options.placeholder + '</span></a>');\n                this.$drop = $('<div>', {'class': 'fs-drop'});\n                this.$results = $('<ul>', {'class': 'fs-results'});\n                this.$original.before(this.$element.append(this.$select.append(this.$arrow)).append(this.$drop));\n                this.$drop.append(this.$results.append(this.fontsAsHtml())).hide();\n            };\n\n            Fontselect.prototype.fontsAsHtml = function () {\n\n                var l = this.options.fonts.length;\n                var r, s, h = '';\n\n                h += '<li data-value=\"' + this.options.empty + '\">' + this.options.placeholder + '</li>';\n                for (var i = 0; i < l; i++) {\n                    r = this.toReadable(this.options.fonts[i]);\n                    //s = this.toStyle(fonts[i]);\n                    //h += '<li data-value=\"' + fonts[i] + '\" style=\"font-family: ' + s['font-family'] + '; font-weight: ' + s['font-weight'] + '\">' + r + '</li>';\n                    h += '<li data-value=\"' + this.options.fonts[i] + '\">' + r + '</li>';\n                }\n\n                return h;\n            };\n\n            Fontselect.prototype.toReadable = function (font) {\n                return font.replace(/[\\+|:]/g, ' ');\n            };\n\n            Fontselect.prototype.toStyle = function (font) {\n                var t = font.split(':');\n                return {'font-family': this.toReadable(t[0]), 'font-weight': (t[1] || 400)};\n            };\n\n            Fontselect.prototype.getVisibleFonts = function () {\n\n                if (this.$results.is(':hidden')) return;\n\n                var fs = this;\n                var top = this.$results.scrollTop();\n                var bottom = top + this.$results.height();\n\n                if (this.options.lookahead) {\n                    var li = $('li', this.$results).first().height();\n                    bottom += li * this.options.lookahead;\n                }\n\n                /*$('li', this.$results).each(function () {\n\n                    var ft = $(this).position().top + top;\n                    var fb = ft + $(this).height();\n\n                    if ((fb >= top) && (ft <= bottom)) {\n                        var font = $(this).data('value');\n                        if (font !== fs.options.empty) {\n                            fs.addFontLink(font);\n                        }\n                    }\n\n                });*/\n            };\n\n            Fontselect.prototype.addFontLink = function (font) {\n                var link = this.options.api + font;\n\n                if ($(\"link[href*='\" + font + \"']\").length === 0) {\n                    $('link:last').after('<link href=\"' + link + '\" rel=\"stylesheet\" type=\"text/css\">');\n                }\n\n                $( document ).trigger( 'google-font-added', [ font, link ])\n            };\n\n            return Fontselect;\n        })();\n\n        return this.each(function () {\n            // If options exist, lets merge them\n            if (options) $.extend(settings, options);\n            return new Fontselect(this, settings);\n        });\n\n    };\n})(jQuery);"]}

Filemanager

Name Type Size Permission Actions
admin.min.js File 81.43 KB 0644
admin.min.js.map File 271.74 KB 0644
admin_menu.min.js File 19.11 KB 0644
admin_menu.min.js.map File 53.93 KB 0644
customizer-preview.js File 25.72 KB 0644
customizer.js File 30.99 KB 0644
customizer.min.js File 33.71 KB 0644
customizer.min.js.map File 88.07 KB 0644
public.min.js File 85.57 KB 0644
public.min.js.map File 231.03 KB 0644
superfly-menu.js File 136.81 KB 0644