Вход Регистрация
Файл: wysiwyg/live/scripts/common/spectrum/spectrum.js
Строк: 872
<?php
// Spectrum: The No Hassle Colorpicker
// https://github.com/bgrins/spectrum
// Author: Brian Grinstead
// License: MIT
// Requires: jQuery, spectrum.css

(function(window, $, undefined) {
    var 
defaultOpts = {
        
colorfalse,
        
flatfalse,
        
showInputfalse,
        
showButtonsfalse,
        
changeOnMovetrue,
        
beforeShownoop,
        
movenoop,
        
changenoop,
        
shownoop,
        
hidenoop,
        
showPalletfalse,
        
maxPalletSize12,
        
theme'sp-dark',
        
pallet: ['fff''000']
    },
    
spectrums = [],
    
IE = $.browser.msie,
    
replaceInput = [
        
"<div class='sp-replacer sp-cf'>",
            
"<div class='sp-preview'></div>",
            
"<div class='sp-dd'>&#9660;</div>",
        
"</div>"
    
].join(''),
    
markup = (function() {
        
        
// IE does not support gradients with multiple stops, so we need to simulate            
        //  that for the rainbow slider with 8 divs that each have a single gradient
        
var gradientFix "";
        if (
IE) {
            for (var 
1<= 6i++) {
                
gradientFix += "<div class='sp-" "'></div>";
            }
        }
        
        return [
            
"<div class='sp-container'>",
                
"<div class='sp-top sp-cf'>",
                    
"<div class='sp-fill'></div>",
                    
"<div class='sp-top-inner'>",
                        
"<div class='sp-color'>",
                            
"<div class='sp-sat'>",
                                
"<div class='sp-val'>",
                                    
"<div class='sp-dragger'></div>",
                                
"</div>",
                            
"</div>",
                        
"</div>",
                        
"<div class='sp-hue'>",
                            
"<div class='sp-slider'></div>",
                            
gradientFix,
                        
"</div>",
                    
"</div>",
                
"</div>",
                
"<div class='sp-pallet sp-cf'></div>",
                
"<div class='sp-input-container sp-cf'>",
                    
"<input class='sp-input' type='text' spellcheck='false'  />",
                    
"<div>",
                        
"<button class='sp-cancel sp-hide-small'>Cancel</button>",
                        
"<button class='sp-choose sp-hide-small'>Choose</button>",
                        
"<button class='sp-cancel sp-show-small'>X</button>",
                        
"<button class='sp-choose sp-show-small'>✔</button>",
                    
"</div>",
                
"</div>",
            
"</div>"
        
].join("");
    })(),
    
palletTemplate = function(pactive) {
        var 
html = [];
        for (var 
0p.lengthi++) {
            var 
== active " class='sp-pallet-active' " "";
            
html.push('<span style="background-color:' tinycolor(p[i]).toHexString() + ';"' '></span>');
        }
        return 
html.join('');
    };
    
    function 
hideAll() {
        for (var 
0spectrums.lengthi++) {
            
spectrums[i].hide();
        }
    }
    function 
instanceOptions(ocallbackContext) {
        var 
opts = $.extend({ }, defaultOptso);
        
opts.callbacks = {
            
'move'bind(opts.movecallbackContext),
            
'change'bind(opts.changecallbackContext),
            
'show'bind(opts.showcallbackContext),
            
'hide'bind(opts.hidecallbackContext),
            
'beforeShow'bind(opts.beforeShowcallbackContext)
        };
        
        return 
opts;
    }
    
    function 
spectrum(elemento) {
        
        var 
opts instanceOptions(oelement),
            
flat opts.flat,
            
showPallet opts.showPallet,
            
theme opts.theme,
            
callbacks opts.callbacks,
            
resize throttle(reflow10),
            
visible false,
            
dragWidth 0,
            
dragHeight 0,
            
dragHelperHeight 0,
            
slideHeight 0,
            
slideWidth 0,
            
slideHelperHeight 0,
            
currentHue 0,
            
currentSaturation 0,
            
currentValue 0,
            
pallet opts.pallet.slice(0),
            
draggingClass "sp-dragging",
            
palletLookup = { };
        
        var 
doc element.ownerDocument,
            
body doc.body
            
boundElement = $(element),
            
container = $(markupdoc).addClass(theme),
            
dragger container.find(".sp-color"),
            
dragHelper container.find(".sp-dragger"),
            
slider container.find(".sp-hue"),
            
slideHelper container.find(".sp-slider"),
            
textInput container.find(".sp-input"),
            
palletContainer container.find(".sp-pallet"),
            
cancelButton container.find(".sp-cancel"),
            
chooseButton container.find(".sp-choose"),
            
isInput boundElement.is("input"),
            
changeOnMove = (opts.changeOnMove || flat),
            
shouldReplace isInput && !flat,
            
replacer = (shouldReplace) ? $(replaceInput).addClass(theme) : $([]),
            
offsetElement = (shouldReplace) ? replacer boundElement,
            
previewElement replacer.find(".sp-preview"),
            
initialColor opts.color || (isInput && boundElement.val()),
            
colorOnShow false,
            
isInitialized false;

        function 
initialize() {
            
            if (
IE) {
                
container.find("*:not(input)").attr("unselectable""on");
            }   
            
            
container.toggleClass("sp-flat"flat);
            
container.toggleClass("sp-input-disabled", !opts.showInput);
            
container.toggleClass("sp-buttons-disabled", !opts.showButtons);
            
container.toggleClass("sp-pallet-disabled", !showPallet);
            
            if (
shouldReplace) {
                
boundElement.hide().after(replacer);
            }
            
            if (
flat) {
                
boundElement.after(container).hide();
            }
            else {
                $(
body).append(container.hide());
            }
            
            
offsetElement.bind("click touchstart", function(e) {
                
toggle();
                
                
e.stopPropagation();
                
                if (!$(
e.target).is("input")) {
                    
e.preventDefault();
                }
            });
            
            
// Prevent clicks from bubbling up to document.  This would cause it to be hidden.
            
container.click(stopPropagation);
            
            
// Handle user typed input
            
textInput.change(setFromTextInput);
            
textInput.keydown(function(e) { if (e.keyCode == 13) { setFromTextInput(); } } );

            
cancelButton.bind("click touchstart", function(e) {
                
e.stopPropagation();
                
e.preventDefault();
                
cancel();
                
hide();
            });
            
            
chooseButton.bind("click touchstart", function(e) {
                
e.stopPropagation();
                
e.preventDefault();
                
hide();
            });
            
            
draggable(slider, function(dragXdragY) {
                
currentHue = (dragY slideHeight);
                
move();
            }, 
dragStartdragStop);
            
            
draggable(dragger, function(dragXdragY) {
                
currentSaturation dragX dragWidth;
                
currentValue = (dragHeight dragY) / dragHeight;
                
move();
            }, 
dragStartdragStop);
            
            if (!!
initialColor) {
                
set(initialColor);
                
pallet.push(initialColor);
            }
            
            
setPallet(pallet);
            
            if (
flat) {
                
show();
            }
            
            
palletContainer.delegate("span""click touchstart", function(e) {
                
set($(this).css("background-color"));
                
e.stopPropagation();
            });
            
            
isInitialized true;
        }
        
        function 
setPallet(p) {
            if (
showPallet) {
                var 
unique = [];
                
palletLookup = { };
                for (var 
0p.lengthi++) {
                    var 
hex tinycolor(p[i]).toHexString();    
                    if (!
palletLookup.hasOwnProperty(hex)) {
                        
palletLookup[hex] = unique.push(p[i]) - 1;
                    }
                }
                
pallet unique.slice(0opts.maxPalletSize);
                
drawPallet();
            }
        }
        function 
drawPallet(active) {
            
palletContainer.html(palletTemplate(palletactive));
        }
        function 
dragStart() {
            if (
dragHeight === || dragWidth === || slideHeight === 0) {
                
reflow();   
            }
            
container.addClass(draggingClass);
        }
        function 
dragStop() {
          
container.removeClass(draggingClass);
        }
        function 
setFromTextInput() {
            
set(textInput.val());
        }
        
        function 
toggle() {
            (
visible) ? hide() : show();
        }
        
        function 
show() {
            if (
visible) { return; }
            if (
callbacks.beforeShow(get()) === false) return;
            
            
hideAll();
            
visible true;
            
            $(
doc).bind("click touchstart"hide);
            $(
window).bind("resize"resize);
            
replacer.addClass("sp-active");
            
container.show();
            
            
reflow();
            
updateUI();
            
            
colorOnShow get();
            
callbacks.show(get());
        }
        
        function 
cancel() {
            
set(colorOnShow);
        }
        
        function 
hide() {
            if (!
visible || flat) { return; }
            
visible false;
            
            $(
doc).unbind("click touchstart"hide);
            $(
window).unbind("resize"resize);
            
            
replacer.removeClass("sp-active");
            
container.hide();
            
            var 
realColor get();
            
            
// Update the pallet with the current color
            
pallet.push(realColor.toHexString());
            
setPallet(pallet);
            
            
// Change hasn't been called yet, so call it now that the picker has closed
            
if (!changeOnMove) {
                
updateOriginalInput();
            }
            
            
callbacks.hide(realColor);
        }
        
        function 
set(color) {
            var 
newColor tinycolor(color);
            var 
newHsv newColor.toHsv();
            
            
currentHue newHsv.h;
            
currentSaturation newHsv.s;
            
currentValue newHsv.v;
            
            
updateUI();
            
            
// set can be called from a default value,  don't want to trigger a change in that case
            
if (isInitialized) {
                
updateOriginalInput();
            }
        }
        
        function 
get() {
            return 
tinycolor({ hcurrentHuescurrentSaturationvcurrentValue });
        }
        
        function 
move() {
            
updateUI();
            
            if (
changeOnMove) {
                
updateOriginalInput();
            }
            
            
callbacks.move(get());
        }
        
        function 
updateUI() {
        
            
updateHelperLocations();
            
            
// Update dragger background color (gradients take care of saturation and value).
            
var flatColor tinycolor({ hcurrentHues"1.0"v"1.0"});
            
dragger.css("background-color"flatColor.toHexString());
            
            var 
realColor get(),
                
realHex realColor.toHexString();
            
            
// Update the replaced elements background color (with actual selected color)
            
previewElement.css("background-color"realHex);
            
            
// Update the text entry input as it changes happen
            
if (isInput) {
                
textInput.val(realHex);
            }
            
            if (
showPallet) {
                
drawPallet(palletLookup[realHex]);
            }
        }
        
        function 
updateHelperLocations() {
            var 
currentHue;
            var 
currentSaturation;
            var 
currentValue;
            
            
// Where to show the little circle in that displays your current selected color
            
var dragX dragWidth;
            var 
dragY dragHeight - (dragHeight);
            
dragX Math.max(
                -
dragHelperHeight
                
Math.min(dragWidth dragHelperHeightdragX dragHelperHeight)
            );
            
dragY Math.max(
                -
dragHelperHeight
                
Math.min(dragHeight dragHelperHeightdragY dragHelperHeight)
            );
            
dragHelper.css({
                
"top"dragY,
                
"left"dragX
            
});
            
            
// Where to show the bar that displays your current selected hue
            
var slideY = (currentHue) * slideHeight;
            
slideHelper.css({
                
"top"slideY slideHelperHeight
            
});
        }
        
        function 
updateOriginalInput() {
            var 
color get();
            if (
isInput) {
                
boundElement.val(color.toHexString());
            }
            
            
callbacks.change(color);
        }
        
        function 
reflow() {
            
dragWidth dragger.width();
            
dragHeight dragger.height();
            
dragHelperHeight dragHelper.height();
            
slideWidth slider.width();
            
slideHeight slider.height();
            
slideHelperHelperHeight slideHelper.height();
            
            if (!
flat) {
                
container.offset(getOffset(containeroffsetElement));
            }
            
            
updateHelperLocations();
        }
        
        
initialize();
        
        var 
spect = {
            
showshow,
            
hidehide,
            
setset,
            
getget
        
};
        
        
spect.id spectrums.push(spect) - 1;
        
        return  
spect;
    }
    
    
/**
     * checkOffset - get the offset below/above and left/right element depending on screen position
     * Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js
     */
    
function getOffset(pickerinput) {
        var 
extraY 6;
        var 
dpWidth picker.outerWidth();
        var 
dpHeight picker.outerHeight();
        var 
inputWidth input.outerWidth();
        var 
inputHeight =  input.outerHeight();
        var 
doc picker[0].ownerDocument;
        var 
docElem doc.documentElement;
        var 
viewWidth docElem.clientWidth + $(doc).scrollLeft();
        var 
viewHeight docElem.clientHeight + $(doc).scrollTop();
        var 
offset input.offset();
        
offset.top += inputHeight;
        
        
offset.left -= 
            
Math.min(offset.left, (offset.left dpWidth viewWidth && viewWidth dpWidth) ?
            
Math.abs(offset.left dpWidth viewWidth) : 0);
        
        
offset.top -= 
            
Math.min(offset.top, ((offset.top dpHeight viewHeight && viewHeight dpHeight) ?
            
Math.abs(dpHeight inputHeight extraY) : extraY)  );

        return 
offset;
    }
    
    
/** 
     * noop - do nothing
     */
    
function noop() { 
    
    }
    
    
/**
     * stopPropagation - makes the code only doing this a little easier to read in line
     */
    
function stopPropagation(e) {
        
e.stopPropagation();
    }
    
    
/**
     * Create a function bound to a given object
     * Thanks to underscore.js
     */
    
function bind (funcobj) {
        var 
slice = Array.prototype.slice;
        var 
args slice.call(arguments2);
        return function() {
            return 
func.apply(objargs.concat(slice.call(arguments)));
        }
    }
    
    
/**
     * Lightweight drag helper.  Handles containment within the element, so that
     * when dragging, the x is within [0,element.width] and y is within [0,element.height]
     */
    
function draggable(elementonmoveonstartonstop) {
        
onmove onmove || function() { };
        
onstart onstart || function() { };
        
onstop onstop || function() { };
        var 
doc element.ownerDocument || document;
        var 
dragging false;
        var 
offset = { };
        var 
maxHeight 0;
        var 
maxWidth 0;
        var 
IE = $.browser.msie;
        var 
hasTouch = ('ontouchstart' in window);
        
        var 
duringDragEvents = { };
        
duringDragEvents["selectstart"] = prevent;
        
duringDragEvents["dragstart"] = prevent;
        
duringDragEvents[(hasTouch "touchmove" "mousemove")] = move;
        
duringDragEvents[(hasTouch "touchend" "mouseup")] = stop;

        function 
prevent(e) {
            if (
e.stopPropagation) {
                
e.stopPropagation();
            }
            if (
e.preventDefault) {
                
e.preventDefault();
            }
            
e.returnValue false;
        }
        
        function 
move(e) {
            if (
dragging) {
                
// Mouseup happened outside of window
                
if (IE && !(document.documentMode >= 9) && !e.button) {
                    return 
stop();
                }
                
                var 
touches =  e.originalEvent.touches;
                var 
pageX touches touches[0].pageX e.pageX;
                var 
pageY touches touches[0].pageY e.pageY;
                
                var 
dragX Math.max(0Math.min(pageX offset.leftmaxWidth));
                var 
dragY Math.max(0Math.min(pageY offset.topmaxHeight));
                
                if (
hasTouch) {
                    
// Stop scrolling in iOS
                    
prevent(e);
                }
                
                
onmove.apply(element, [dragXdragY]); 
            } 
        }
        function 
start(e) { 
            var 
rightclick = (e.which) ? (e.which == 3) : (e.button == 2);
            var 
touches =  e.originalEvent.touches;
            
            if (!
rightclick && !dragging) { 
                if (
onstart.apply(elementarguments) !== false) {
                    
dragging true
                    
maxHeight = $(element).height();
                    
maxWidth = $(element).width();
                    
offset = $(element).offset();
                    
                    $(
doc).bind(duringDragEvents);
                    
                    if (!
hasTouch) {
                        
move(e);
                    }
                    else {
                        
prevent(e);
                    }
                }
            }
        }
        function 
stop() { 
            if (
dragging) { 
                $(
doc).unbind(duringDragEvents);
                
onstop.apply(elementarguments); 
            }
            
dragging false
        }
    
        $(
element).bind(hasTouch "touchstart" "mousedown"start);
    }
    
    function 
throttle(funcwaitdebounce) {
        var 
timeout;
        return function() {
          var 
context thisargs arguments;
          var 
throttler = function() {
            
timeout null;
            
func.apply(contextargs);
          };
          if (
debounceclearTimeout(timeout);
          if (
debounce || !timeouttimeout setTimeout(throttlerwait);
        };
    }
    
    
    
/**
     * Define a jQuery plugin
     */
    
var dataID "spectrum.id";
    var 
fnspectrum = $.fn.spectrum = function(optsextra) {
        if (
typeof opts == "string") {
            if (
opts == "get") {
                return 
spectrums[this.eq(0).data(dataID)].get();
            }
            
            return 
this.each(function() {
                var 
spect spectrums[$(this).data(dataID)];
                if (
opts == "show") { spect.show(); }
                if (
opts == "hide") { spect.hide(); }
                if (
opts == "set")  { spect.set(extra); }
            });
        }
        
        
// Initializing a new one
        
return this.each(function() {
            var 
spect spectrum(thisopts);
            $(
this).data(dataIDspect.id);
        }); 
    };
    
    
fnspectrum.load true;
    
fnspectrum.loadOpts = { };
    
fnspectrum.draggable draggable;
    
    $(function() {
        if (
fnspectrum.load) {
            $(
"input[type=spectrum]").spectrum(fnspectrum.loadOpts);
        }
    });
    
})(
thisjQuery);

// TinyColor.js - https://github.com/bgrins/TinyColor - 2011 Brian Grinstead - v0.5
(function(s){function d(b,a){if(typeof b=="object"&&b.hasOwnProperty("_tc_id"))return b;if(typeof b=="object"&&(!a||!a.skipRatio))for(var c in b)b[c]===1&&(b[c]="1.0");c=v(b);var k=c.r,f=c.g,d=c.b,h=n(c.a);k<1&&(k=e(k));f<1&&(f=e(f));d<1&&(d=e(d));return{ok:c.ok,_tc_id:w++,alpha:h,toHsv:function(){return t(k,f,d)},toHsvString:function(){var a=t(k,f,d),b=e(a.h*360),c=e(a.s*100);a=e(a.v*100);return"hsv("+b+", "+c+"%, "+a+"%)"},toHsl:function(){return u(k,f,d)},toHslString:function(){var a=u(k,f,d),
b=e(a.h*360),c=e(a.s*100);a=e(a.l*100);return h==1?"hsl("+b+", "+c+"%, "+a+"%)":"hsla("+b+", "+c+"%, "+a+"%, "+h+")"},toHex:function(){return q(k,f,d)},toHexString:function(){return"#"+q(k,f,d)},toRgb:function(){return{r:e(k),g:e(f),b:e(d)}},toRgbString:function(){return h==1?"rgb("+e(k)+", "+e(f)+", "+e(d)+")":"rgba("+e(k)+", "+e(f)+", "+e(d)+", "+h+")"},toName:function(){return x[q(k,d,f)]||!1},toFilter:function(){var a=q(k,f,d),b=Math.round(n(h)*255).toString(16);return"progid:DXImageTransform.Microsoft.gradient(startColorstr=#"+
b+a+",endColorstr=#"+b+a+")"}}}function v(b){var a={r:255,g:255,b:255},c=1,d=!1;typeof b=="string"&&(b=y(b));if(typeof b=="object"){if(b.hasOwnProperty("r")&&b.hasOwnProperty("g")&&b.hasOwnProperty("b"))a={r:j(b.r,255)*255,g:j(b.g,255)*255,b:j(b.b,255)*255},d=!0;else if(b.hasOwnProperty("h")&&b.hasOwnProperty("s")&&b.hasOwnProperty("v")){var f=b.h,g=b.s;a=b.v;var h,e,o;f=j(f,360);g=j(g,100);a=j(a,100);d=p.floor(f*6);var i=f*6-d;f=a*(1-g);var n=a*(1-i*g);g=a*(1-(1-i)*g);switch(d%6){case 0:h=a;e=g;
o=f;break;case 1:h=n;e=a;o=f;break;case 2:h=f;e=a;o=g;break;case 3:h=f;e=n;o=a;break;case 4:h=g;e=f;o=a;break;case 5:h=a,e=f,o=n}a={r:h*255,g:e*255,b:o*255};d=!0}else b.hasOwnProperty("h")&&b.hasOwnProperty("s")&&b.hasOwnProperty("l")&&(a=z(b.h,b.s,b.l),d=!0);if(b.hasOwnProperty("a"))c=b.a}return{ok:d,r:l(255,m(a.r,0)),g:l(255,m(a.g,0)),b:l(255,m(a.b,0)),a:c}}function u(b,a,c){b=j(b,255);a=j(a,255);c=j(c,255);var d=m(b,a,c),f=l(b,a,c),g,e=(d+f)/2;if(d==f)g=f=0;else{var i=d-f;f=e>0.5?i/(2-d-f):i/(d+
f);switch(d){case b:g=(a-c)/i+(a<c?6:0);break;case a:g=(c-b)/i+2;break;case c:g=(b-a)/i+4}g/=6}return{h:g,s:f,l:e}}function z(b,a,c){function d(a,b,c){c<0&&(c+=1);c>1&&(c-=1);if(c<1/6)return a+(b-a)*6*c;if(c<0.5)return b;if(c<2/3)return a+(b-a)*(2/3-c)*6;return a}b=j(b,360);a=j(a,100);c=j(c,100);if(a==0)c=a=b=c;else{var f=c<0.5?c*(1+a):c+a-c*a,e=2*c-f;c=d(e,f,b+1/3);a=d(e,f,b);b=d(e,f,b-1/3)}return{r:c*255,g:a*255,b:b*255}}function t(b,a,c){b=j(b,255);a=j(a,255);c=j(c,255);var d=m(b,a,c),f=l(b,a,
c),e,h=d-f;if(d==f)e=0;else{switch(d){case b:e=(a-c)/h+(a<c?6:0);break;case a:e=(c-b)/h+2;break;case c:e=(b-a)/h+4}e/=6}return{h:e,s:d==0?0:h/d,v:d}}function q(b,a,c){function d(a){return a.length==1?"0"+a:a}return[d(e(b).toString(16)),d(e(a).toString(16)),d(e(c).toString(16))].join("")}function j(b,a){typeof b=="string"&&b.indexOf(".")!=-1&&n(b)===1&&(b="100%");var c=typeof b==="string"&&b.indexOf("%")!=-1;b=l(a,m(0,n(b)));c&&(b*=a/100);if(p.abs(b-a)<1.0E-6)return 1;else if(b>=1)return b%a/n(a);
return 
b}function y(b){b=b.replace(A,"").replace(B,"").toLowerCase();r[b]&&(b=r[b]);if(b=="transparent")return{r:0,g:0,b:0,a:0};var a;if(a=i.rgb.exec(b))return{r:a[1],g:a[2],b:a[3]};if(a=i.rgba.exec(b))return{r:a[1],g:a[2],b:a[3],a:a[4]};if(a=i.hsl.exec(b))return{h:a[1],s:a[2],l:a[3]};if(a=i.hsla.exec(b))return{h:a[1],s:a[2],l:a[3],a:a[4]};if(a=i.hsv.exec(b))return{h:a[1],s:a[2],v:a[3]};if(a=i.hex6.exec(b))return{r:parseInt(a[1],16),g:parseInt(a[2],16),b:parseInt(a[3],16)};if(a=i.hex3.exec(b))return{r:parseInt(a[1]+
""+a[1],16),g:parseInt(a[2]+""+a[2],16),b:parseInt(a[3]+""+a[3],16)};return!1}var A=/^[s,#]+/,B=/s+$/,w=0,p=Math,e=p.round,l=p.min,m=p.max,n=s.parseFloat;d.equals=function(b,a){return d(b).toHex()==d(a).toHex()};d.desaturate=function(b,a){var c=d(b).toHsl();c.s-=(a||10)/100;c.s=l(1,m(0,c.s));return d(c)};d.saturate=function(b,a){var c=d(b).toHsl();c.s+=(a||10)/100;c.s=l(1,m(0,c.s));return d(c)};d.greyscale=function(b){return d.desaturate(b,100)};d.lighten=function(b,a){var c=d(b).toHsl();c.l+=(a||
10)/100;c.l=l(1,m(0,c.l));return d(c)};d.darken=function(b,a){var c=d(b).toHsl();c.l-=(a||10)/100;c.l=l(1,m(0,c.l));return d(c)};d.complement=function(b){b=d(b).toHsl();b.h=(b.h+0.5)%1;return d(b)};d.triad=function(b){var a=d(b).toHsl(),c=a.h*360;return[d(b),d({h:(c+120)%360,s:a.s,l:a.l}),d({h:(c+240)%360,s:a.s,l:a.l})]};d.tetrad=function(b){var a=d(b).toHsl(),c=a.h*360;return[d(b),d({h:(c+90)%360,s:a.s,l:a.l}),d({h:(c+180)%360,s:a.s,l:a.l}),d({h:(c+270)%360,s:a.s,l:a.l})]};d.splitcomplement=function(b){var a=
d(b).toHsl(),c=a.h*360;return[d(b),d({h:(c+72)%360,s:a.s,l:a.l}),d({h:(c+216)%360,s:a.s,l:a.l})]};d.analogous=function(b,a,c){a=a||6;c=c||30;var e=d(b).toHsl();c=360/c;b=[d(b)];e.h*=360;for(e.h=(e.h-(c*a>>1)+720)%360;--a;)e.h=(e.h+c)%360,b.push(d(e));return b};d.monochromatic=function(b,a){a=a||6;var c=d(b).toHsv(),e=c.h,f=c.s;c=c.v;for(var g=[];a--;)g.push(d({h:e,s:f,v:c})),c=(c+0.2)%1;return g};d.readable=function(b,a){var c=d(b).toRgb(),e=d(a).toRgb();return(e.r-c.r)*(e.r-c.r)+(e.g-c.g)*(e.g-c.g)+
(
e.b-c.b)*(e.b-c.b)>10404};var r=d.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",
darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",
gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",
lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",
olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",
slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},x=function(b){var a={},c;for(c in b)b.hasOwnProperty(c)&&(a[b[c]]=c);return a}(r),i={rgb:RegExp("rgb[\s|\(]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))[,|\s]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))[,|\s]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))\s*\)?"),
rgba:RegExp("rgba[\s|\(]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))[,|\s]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))[,|\s]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))[,|\s]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))\s*\)?"),hsl:RegExp("hsl[\s|\(]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))[,|\s]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))[,|\s]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))\s*\)?"),hsla:RegExp("hsla[\s|\(]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))[,|\s]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))[,|\s]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))[,|\s]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))\s*\)?"),
hsv:RegExp("hsv[\s|\(]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))[,|\s]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))[,|\s]+((?:[-\+]?\d*\.\d+%?)|(?:[-\+]?\d+%?))\s*\)?"),hex3:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};s.tinycolor=d})(this);
?>
Онлайн: 0
Реклама