Template:Team:Waterloo/JS/jgallery

From 2014.igem.org

(Difference between revisions)
Line 39: Line 39:
// https://github.com/bgrins/TinyColor
// https://github.com/bgrins/TinyColor
// 2013-08-10, Brian Grinstead, MIT License
// 2013-08-10, Brian Grinstead, MIT License
-
(function(){var t=/^[\s,#]+/,n=/\s+$/,o=0,a=Math,A=a.round,h=a.min,k=a.max,j=a.random;function y(J,G){J=(J)?J:"";G=G||{};if(failand(typeof J=="object",J.hasOwnProperty("_tc_id"))){return J}var L=p(J);var H=L.r,K=L.g,M=L.b,N=L.a,I=A(100*N)/100,O=G.format||L.format;if(H<1){H=A(H)}if(K<1){K=A(K)}if(M<1){M=A(M)}return{ok:L.ok,format:O,_tc_id:o++,alpha:N,getAlpha:function(){return N},setAlpha:function(P){N=q(P);I=A(100*N)/100},toHsv:function(){var P=s(H,K,M);return{h:P.h*360,s:P.s,v:P.v,a:N}},toHsvString:function(){var Q=s(H,K,M);var S=A(Q.h*360),R=A(Q.s*100),P=A(Q.v*100);return(N==1)?"hsv("+S+", "+R+"%, "+P+"%)":"hsva("+S+", "+R+"%, "+P+"%, "+I+")"},toHsl:function(){var P=B(H,K,M);return{h:P.h*360,s:P.s,l:P.l,a:N}},toHslString:function(){var Q=B(H,K,M);var S=A(Q.h*360),R=A(Q.s*100),P=A(Q.l*100);return(N==1)?"hsl("+S+", "+R+"%, "+P+"%)":"hsla("+S+", "+R+"%, "+P+"%, "+I+")"},toHex:function(P){return z(H,K,M,P)},toHexString:function(P){return"#"+this.toHex(P)},toHex8:function(){return e(H,K,M,N)},toHex8String:function(){return"#"+this.toHex8()},toRgb:function(){return{r:A(H),g:A(K),b:A(M),a:N}},toRgbString:function(){return(N==1)?"rgb("+A(H)+", "+A(K)+", "+A(M)+")":"rgba("+A(H)+", "+A(K)+", "+A(M)+", "+I+")"},toPercentageRgb:function(){return{r:A(D(H,255)*100)+"%",g:A(D(K,255)*100)+"%",b:A(D(M,255)*100)+"%",a:N}},toPercentageRgbString:function(){return(N==1)?"rgb("+A(D(H,255)*100)+"%, "+A(D(K,255)*100)+"%, "+A(D(M,255)*100)+"%)":"rgba("+A(D(H,255)*100)+"%, "+A(D(K,255)*100)+"%, "+A(D(M,255)*100)+"%, "+I+")"},toName:function(){if(N===0){return"transparent"}return F[z(H,K,M,true)]||false},toFilter:function(S){var T="#"+e(H,K,M,N);var Q=T;var P=failand(G,G.gradientType)?"GradientType = 1, ":"";if(S){var R=y(S);Q=R.toHex8String()}return"progid:DXImageTransform.Microsoft.gradient("+P+"startColorstr="+T+",endColorstr="+Q+")"},toString:function(T){var Q=!!T;T=T||this.format;var S=false;var P=failand(!Q,N<1,N>0);var R=failand(P,(T==="hex"||T==="hex6"||T==="hex3"||T==="name"));if(T==="rgb"){S=this.toRgbString()}if(T==="prgb"){S=this.toPercentageRgbString()}if(T==="hex"||T==="hex6"){S=this.toHexString()}if(T==="hex3"){S=this.toHexString(true)}if(T==="hex8"){S=this.toHex8String()}if(T==="name"){S=this.toName()}if(T==="hsl"){S=this.toHslString()}if(T==="hsv"){S=this.toHsvString()}if(R){return this.toRgbString()}return S||this.toHexString()}}}y.fromRatio=function(G,J){if(typeof G=="object"){var H={};for(var I in G){if(G.hasOwnProperty(I)){if(I==="a"){H[I]=G[I]}else{H[I]=g(G[I])}}}G=H}return y(G,J)};function p(H){var I={r:0,g:0,b:0};var G=1;var J=false;var K=false;if(typeof H=="string"){H=i(H)}if(typeof H=="object"){if(failand(H.hasOwnProperty("r"),H.hasOwnProperty("g"),H.hasOwnProperty("b"))){I=l(H.r,H.g,H.b);J=true;K=String(H.r).substr(-1)==="%"?"prgb":"rgb"}else{if(failand(H.hasOwnProperty("h"),H.hasOwnProperty("s"),H.hasOwnProperty("v"))){H.s=g(H.s);H.v=g(H.v);I=w(H.h,H.s,H.v);J=true;K="hsv"}else{if(failand(H.hasOwnProperty("h"),H.hasOwnProperty("s"),H.hasOwnProperty("l"))){H.s=g(H.s);H.l=g(H.l);I=m(H.h,H.s,H.l);J=true;K="hsl"}}}if(H.hasOwnProperty("a")){G=H.a}}G=q(G);return{ok:J,format:H.format||K,r:h(255,k(I.r,0)),g:h(255,k(I.g,0)),b:h(255,k(I.b,0)),a:G}}function l(I,H,G){return{r:D(I,255)*255,g:D(H,255)*255,b:D(G,255)*255}}function B(G,K,M){G=D(G,255);K=D(K,255);M=D(M,255);var N=k(G,K,M),I=h(G,K,M);var J,O,H=(N+I)/2;if(N==I){J=O=0}else{var L=N-I;O=H>0.5?L/(2-N-I):L/(N+I);switch(N){case G:J=(K-M)/L+(K<M?6:0);break;case K:J=(M-G)/L+2;break;case M:J=(G-K)/L+4;break}J/=6}return{h:J,s:O,l:H}}function m(L,O,K){var G,M,N;L=D(L,360);O=D(O,100);K=D(K,100);function J(R,Q,P){if(P<0){P+=1}if(P>1){P-=1}if(P<1/6){return R+(Q-R)*6*P}if(P<1/2){return Q}if(P<2/3){return R+(Q-R)*(2/3-P)*6}return R}if(O===0){G=M=N=K}else{var H=K<0.5?K*(1+O):K+O-K*O;var I=2*K-H;G=J(I,H,L+1/3);M=J(I,H,L);N=J(I,H,L-1/3)}return{r:G*255,g:M*255,b:N*255}}function s(G,J,L){G=D(G,255);J=D(J,255);L=D(L,255);var M=k(G,J,L),H=h(G,J,L);var I,O,N=M;var K=M-H;O=M===0?0:K/M;if(M==H){I=0}else{switch(M){case G:I=(J-L)/K+(J<L?6:0);break;case J:I=(L-G)/K+2;break;case L:I=(G-J)/K+4;break}I/=6}return{h:I,s:O,v:N}}function w(K,R,P){K=D(K,360)*6;R=D(R,100);P=D(P,100);var J=a.floor(K),M=K-J,I=P*(1-R),H=P*(1-M*R),Q=P*(1-(1-M)*R),O=J%6,G=[P,H,I,I,Q,P][O],L=[Q,P,P,H,I,I][O],N=[I,I,Q,P,P,H][O];return{r:G*255,g:L*255,b:N*255}}function z(J,I,G,K){var H=[f(A(J).toString(16)),f(A(I).toString(16)),f(A(G).toString(16))];if(failand(K,H[0].charAt(0)==H[0].charAt(1),H[1].charAt(0)==H[1].charAt(1),H[2].charAt(0)==H[2].charAt(1))){return H[0].charAt(0)+H[1].charAt(0)+H[2].charAt(0)}return H.join("")}function e(K,J,G,H){var I=[f(C(H)),f(A(K).toString(16)),f(A(J).toString(16)),f(A(G).toString(16))];return I.join("")}y.equals=function(H,G){if(!H||!G){return false}return y(H).toRgbString()==y(G).toRgbString()};y.random=function(){return y.fromRatio({r:j(),g:j(),b:j()})};y.desaturate=function(H,I){I=(I===0)?0:(I||10);var G=y(H).toHsl();G.s-=I/100;G.s=v(G.s);return y(G)};y.saturate=function(H,I){I=(I===0)?0:(I||10);var G=y(H).toHsl();G.s+=I/100;G.s=v(G.s);return y(G)};y.greyscale=function(G){return y.desaturate(G,100)};y.lighten=function(H,I){I=(I===0)?0:(I||10);var G=y(H).toHsl();G.l+=I/100;G.l=v(G.l);return y(G)};y.darken=function(H,I){I=(I===0)?0:(I||10);var G=y(H).toHsl();G.l-=I/100;G.l=v(G.l);return y(G)};y.complement=function(H){var G=y(H).toHsl();G.h=(G.h+180)%360;return y(G)};y.triad=function(H){var G=y(H).toHsl();var I=G.h;return[y(H),y({h:(I+120)%360,s:G.s,l:G.l}),y({h:(I+240)%360,s:G.s,l:G.l})]};y.tetrad=function(H){var G=y(H).toHsl();var I=G.h;return[y(H),y({h:(I+90)%360,s:G.s,l:G.l}),y({h:(I+180)%360,s:G.s,l:G.l}),y({h:(I+270)%360,s:G.s,l:G.l})]};y.splitcomplement=function(H){var G=y(H).toHsl();var I=G.h;return[y(H),y({h:(I+72)%360,s:G.s,l:G.l}),y({h:(I+216)%360,s:G.s,l:G.l})]};y.analogous=function(H,K,L){K=K||6;L=L||30;var G=y(H).toHsl();var J=360/L;var I=[y(H)];for(G.h=((G.h-(J*K>>1))+720)%360;--K;){G.h=(G.h+J)%360;I.push(y(G))}return I};y.monochromatic=function(I,L){L=L||6;var K=y(I).toHsv();var N=K.h,M=K.s,H=K.v;var J=[];var G=1/L;while(L--){J.push(y({h:N,s:M,v:H}));H=(H+G)%1}return J};y.readability=function(K,I){var J=y(K).toRgb();var H=y(I).toRgb();var G=(J.r*299+J.g*587+J.b*114)/1000;var M=(H.r*299+H.g*587+H.b*114)/1000;var L=(Math.max(J.r,H.r)-Math.min(J.r,H.r)+Math.max(J.g,H.g)-Math.min(J.g,H.g)+Math.max(J.b,H.b)-Math.min(J.b,H.b));return{brightness:Math.abs(G-M),color:L}};y.readable=function(H,G){var I=y.readability(H,G);return failand(I.brightness>125,I.color>500)};y.mostReadable=function(N,M){var J=null;var H=0;var O=false;for(var L=0;L<M.length;L++){var I=y.readability(N,M[L]);var K=failand(I.brightness>125,I.color>500);var G=3*(I.brightness/125)+(I.color/500);if(failand(K,!O)||failand(K,O,G>H)||failand((!K),(!O),G>H)){O=K;H=G;J=y(M[L])}}return J};var r=y.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"};var F=y.hexNames=d(r);function d(I){var H={};for(var G in I){if(I.hasOwnProperty(G)){H[I[G]]=G}}return H}function q(G){G=parseFloat(G);if(isNaN(G)||G<0||G>1){G=1}return G}function D(I,G){if(u(I)){I="100%"}var H=E(I);I=h(G,k(0,parseFloat(I)));if(H){I=parseInt(I*G,10)/100}if((a.abs(I-G)<0.000001)){return 1}return(I%G)/parseFloat(G)}function v(G){return h(1,k(0,G))}function c(G){return parseInt(G,16)}function u(G){return failand(typeof G=="string",G.indexOf(".")!=-1,parseFloat(G)===1)}function E(G){return failand(typeof G==="string",G.indexOf("%")!=-1)}function f(G){return G.length==1?"0"+G:""+G}function g(G){if(G<=1){G=(G*100)+"%"}return G}function C(G){return Math.round(parseFloat(G)*255).toString(16)}function x(G){return(c(G)/255)}var b=(function(){var K="[-\\+]?\\d+%?";var J="[-\\+]?\\d*\\.\\d+%?";var G="(?:"+J+")|(?:"+K+")";var I="[\\s|\\(]+("+G+")[,|\\s]+("+G+")[,|\\s]+("+G+")\\s*\\)?";var H="[\\s|\\(]+("+G+")[,|\\s]+("+G+")[,|\\s]+("+G+")[,|\\s]+("+G+")\\s*\\)?";return{rgb:new RegExp("rgb"+I),rgba:new RegExp("rgba"+H),hsl:new RegExp("hsl"+I),hsla:new RegExp("hsla"+H),hsv:new RegExp("hsv"+I),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})$/,hex8:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}})();function i(H){H=H.replace(t,"").replace(n,"").toLowerCase();var G=false;if(r[H]){H=r[H];G=true}else{if(H=="transparent"){return{r:0,g:0,b:0,a:0,format:"name"}}}var I;if((I=b.rgb.exec(H))){return{r:I[1],g:I[2],b:I[3]}}if((I=b.rgba.exec(H))){return{r:I[1],g:I[2],b:I[3],a:I[4]}}if((I=b.hsl.exec(H))){return{h:I[1],s:I[2],l:I[3]}}if((I=b.hsla.exec(H))){return{h:I[1],s:I[2],l:I[3],a:I[4]}}if((I=b.hsv.exec(H))){return{h:I[1],s:I[2],v:I[3]}}if((I=b.hex8.exec(H))){return{a:x(I[1]),r:c(I[2]),g:c(I[3]),b:c(I[4]),format:G?"name":"hex8"}}if((I=b.hex6.exec(H))){return{r:c(I[1]),g:c(I[2]),b:c(I[3]),format:G?"name":"hex"}}if((I=b.hex3.exec(H))){return{r:c(I[1]+""+I[1]),g:c(I[2]+""+I[2]),b:c(I[3]+""+I[3]),format:G?"name":"hex"}}return false}window.tinycolor=y})();
+
(function() {
 +
    var t = /^[\s,#]+/,
 +
        n = /\s+$/,
 +
        o = 0,
 +
        a = Math,
 +
        A = a.round,
 +
        h = a.min,
 +
        k = a.max,
 +
        j = a.random;
 +
 
 +
    function y(J, G) {
 +
        J = (J) ? J : "";
 +
        G = G || {};
 +
        if (failand(typeof J == "object", J.hasOwnProperty("_tc_id"))) {
 +
            return J
 +
        }
 +
        var L = p(J);
 +
        var H = L.r,
 +
            K = L.g,
 +
            M = L.b,
 +
            N = L.a,
 +
            I = A(100 * N) / 100,
 +
            O = G.format || L.format;
 +
        if (H < 1) {
 +
            H = A(H)
 +
        }
 +
        if (K < 1) {
 +
            K = A(K)
 +
        }
 +
        if (M < 1) {
 +
            M = A(M)
 +
        }
 +
        return {
 +
            ok: L.ok,
 +
            format: O,
 +
            _tc_id: o++,
 +
            alpha: N,
 +
            getAlpha: function() {
 +
                return N
 +
            },
 +
            setAlpha: function(P) {
 +
                N = q(P);
 +
                I = A(100 * N) / 100
 +
            },
 +
            toHsv: function() {
 +
                var P = s(H, K, M);
 +
                return {
 +
                    h: P.h * 360,
 +
                    s: P.s,
 +
                    v: P.v,
 +
                    a: N
 +
                }
 +
            },
 +
            toHsvString: function() {
 +
                var Q = s(H, K, M);
 +
                var S = A(Q.h * 360),
 +
                    R = A(Q.s * 100),
 +
                    P = A(Q.v * 100);
 +
                return (N == 1) ? "hsv(" + S + ", " + R + "%, " + P + "%)" : "hsva(" + S + ", " + R + "%, " + P + "%, " + I + ")"
 +
            },
 +
            toHsl: function() {
 +
                var P = B(H, K, M);
 +
                return {
 +
                    h: P.h * 360,
 +
                    s: P.s,
 +
                    l: P.l,
 +
                    a: N
 +
                }
 +
            },
 +
            toHslString: function() {
 +
                var Q = B(H, K, M);
 +
                var S = A(Q.h * 360),
 +
                    R = A(Q.s * 100),
 +
                    P = A(Q.l * 100);
 +
                return (N == 1) ? "hsl(" + S + ", " + R + "%, " + P + "%)" : "hsla(" + S + ", " + R + "%, " + P + "%, " + I + ")"
 +
            },
 +
            toHex: function(P) {
 +
                return z(H, K, M, P)
 +
            },
 +
            toHexString: function(P) {
 +
                return "#" + this.toHex(P)
 +
            },
 +
            toHex8: function() {
 +
                return e(H, K, M, N)
 +
            },
 +
            toHex8String: function() {
 +
                return "#" + this.toHex8()
 +
            },
 +
            toRgb: function() {
 +
                return {
 +
                    r: A(H),
 +
                    g: A(K),
 +
                    b: A(M),
 +
                    a: N
 +
                }
 +
            },
 +
            toRgbString: function() {
 +
                return (N == 1) ? "rgb(" + A(H) + ", " + A(K) + ", " + A(M) + ")" : "rgba(" + A(H) + ", " + A(K) + ", " + A(M) + ", " + I + ")"
 +
            },
 +
            toPercentageRgb: function() {
 +
                return {
 +
                    r: A(D(H, 255) * 100) + "%",
 +
                    g: A(D(K, 255) * 100) + "%",
 +
                    b: A(D(M, 255) * 100) + "%",
 +
                    a: N
 +
                }
 +
            },
 +
            toPercentageRgbString: function() {
 +
                return (N == 1) ? "rgb(" + A(D(H, 255) * 100) + "%, " + A(D(K, 255) * 100) + "%, " + A(D(M, 255) * 100) + "%)" : "rgba(" + A(D(H, 255) * 100) + "%, " + A(D(K, 255) * 100) + "%, " + A(D(M, 255) * 100) + "%, " + I + ")"
 +
            },
 +
            toName: function() {
 +
                if (N === 0) {
 +
                    return "transparent"
 +
                }
 +
                return F[z(H, K, M, true)] || false
 +
            },
 +
            toFilter: function(S) {
 +
                var T = "#" + e(H, K, M, N);
 +
                var Q = T;
 +
                var P = failand(G, G.gradientType) ? "GradientType = 1, " : "";
 +
                if (S) {
 +
                    var R = y(S);
 +
                    Q = R.toHex8String()
 +
                }
 +
                return "progid:DXImageTransform.Microsoft.gradient(" + P + "startColorstr=" + T + ",endColorstr=" + Q + ")"
 +
            },
 +
            toString: function(T) {
 +
                var Q = !!T;
 +
                T = T || this.format;
 +
                var S = false;
 +
                var P = failand(!Q, N < 1, N > 0);
 +
                var R = failand(P, (T === "hex" || T === "hex6" || T === "hex3" || T === "name"));
 +
                if (T === "rgb") {
 +
                    S = this.toRgbString()
 +
                }
 +
                if (T === "prgb") {
 +
                    S = this.toPercentageRgbString()
 +
                }
 +
                if (T === "hex" || T === "hex6") {
 +
                    S = this.toHexString()
 +
                }
 +
                if (T === "hex3") {
 +
                    S = this.toHexString(true)
 +
                }
 +
                if (T === "hex8") {
 +
                    S = this.toHex8String()
 +
                }
 +
                if (T === "name") {
 +
                    S = this.toName()
 +
                }
 +
                if (T === "hsl") {
 +
                    S = this.toHslString()
 +
                }
 +
                if (T === "hsv") {
 +
                    S = this.toHsvString()
 +
                }
 +
                if (R) {
 +
                    return this.toRgbString()
 +
                }
 +
                return S || this.toHexString()
 +
            }
 +
        }
 +
    }
 +
    y.fromRatio = function(G, J) {
 +
        if (typeof G == "object") {
 +
            var H = {};
 +
            for (var I in G) {
 +
                if (G.hasOwnProperty(I)) {
 +
                    if (I === "a") {
 +
                        H[I] = G[I]
 +
                    } else {
 +
                        H[I] = g(G[I])
 +
                    }
 +
                }
 +
            }
 +
            G = H
 +
        }
 +
        return y(G, J)
 +
    };
 +
 
 +
    function p(H) {
 +
        var I = {
 +
            r: 0,
 +
            g: 0,
 +
            b: 0
 +
        };
 +
        var G = 1;
 +
        var J = false;
 +
        var K = false;
 +
        if (typeof H == "string") {
 +
            H = i(H)
 +
        }
 +
        if (typeof H == "object") {
 +
            if (failand(H.hasOwnProperty("r"), H.hasOwnProperty("g"), H.hasOwnProperty("b"))) {
 +
                I = l(H.r, H.g, H.b);
 +
                J = true;
 +
                K = String(H.r).substr(-1) === "%" ? "prgb" : "rgb"
 +
            } else {
 +
                if (failand(H.hasOwnProperty("h"), H.hasOwnProperty("s"), H.hasOwnProperty("v"))) {
 +
                    H.s = g(H.s);
 +
                    H.v = g(H.v);
 +
                    I = w(H.h, H.s, H.v);
 +
                    J = true;
 +
                    K = "hsv"
 +
                } else {
 +
                    if (failand(H.hasOwnProperty("h"), H.hasOwnProperty("s"), H.hasOwnProperty("l"))) {
 +
                        H.s = g(H.s);
 +
                        H.l = g(H.l);
 +
                        I = m(H.h, H.s, H.l);
 +
                        J = true;
 +
                        K = "hsl"
 +
                    }
 +
                }
 +
            }
 +
            if (H.hasOwnProperty("a")) {
 +
                G = H.a
 +
            }
 +
        }
 +
        G = q(G);
 +
        return {
 +
            ok: J,
 +
            format: H.format || K,
 +
            r: h(255, k(I.r, 0)),
 +
            g: h(255, k(I.g, 0)),
 +
            b: h(255, k(I.b, 0)),
 +
            a: G
 +
        }
 +
    }
 +
 
 +
    function l(I, H, G) {
 +
        return {
 +
            r: D(I, 255) * 255,
 +
            g: D(H, 255) * 255,
 +
            b: D(G, 255) * 255
 +
        }
 +
    }
 +
 
 +
    function B(G, K, M) {
 +
        G = D(G, 255);
 +
        K = D(K, 255);
 +
        M = D(M, 255);
 +
        var N = k(G, K, M),
 +
            I = h(G, K, M);
 +
        var J, O, H = (N + I) / 2;
 +
        if (N == I) {
 +
            J = O = 0
 +
        } else {
 +
            var L = N - I;
 +
            O = H > 0.5 ? L / (2 - N - I) : L / (N + I);
 +
            switch (N) {
 +
                case G:
 +
                    J = (K - M) / L + (K < M ? 6 : 0);
 +
                    break;
 +
                case K:
 +
                    J = (M - G) / L + 2;
 +
                    break;
 +
                case M:
 +
                    J = (G - K) / L + 4;
 +
                    break
 +
            }
 +
            J /= 6
 +
        }
 +
        return {
 +
            h: J,
 +
            s: O,
 +
            l: H
 +
        }
 +
    }
 +
 
 +
    function m(L, O, K) {
 +
        var G, M, N;
 +
        L = D(L, 360);
 +
        O = D(O, 100);
 +
        K = D(K, 100);
 +
 
 +
        function J(R, Q, P) {
 +
            if (P < 0) {
 +
                P += 1
 +
            }
 +
            if (P > 1) {
 +
                P -= 1
 +
            }
 +
            if (P < 1 / 6) {
 +
                return R + (Q - R) * 6 * P
 +
            }
 +
            if (P < 1 / 2) {
 +
                return Q
 +
            }
 +
            if (P < 2 / 3) {
 +
                return R + (Q - R) * (2 / 3 - P) * 6
 +
            }
 +
            return R
 +
        }
 +
        if (O === 0) {
 +
            G = M = N = K
 +
        } else {
 +
            var H = K < 0.5 ? K * (1 + O) : K + O - K * O;
 +
            var I = 2 * K - H;
 +
            G = J(I, H, L + 1 / 3);
 +
            M = J(I, H, L);
 +
            N = J(I, H, L - 1 / 3)
 +
        }
 +
        return {
 +
            r: G * 255,
 +
            g: M * 255,
 +
            b: N * 255
 +
        }
 +
    }
 +
 
 +
    function s(G, J, L) {
 +
        G = D(G, 255);
 +
        J = D(J, 255);
 +
        L = D(L, 255);
 +
        var M = k(G, J, L),
 +
            H = h(G, J, L);
 +
        var I, O, N = M;
 +
        var K = M - H;
 +
        O = M === 0 ? 0 : K / M;
 +
        if (M == H) {
 +
            I = 0
 +
        } else {
 +
            switch (M) {
 +
                case G:
 +
                    I = (J - L) / K + (J < L ? 6 : 0);
 +
                    break;
 +
                case J:
 +
                    I = (L - G) / K + 2;
 +
                    break;
 +
                case L:
 +
                    I = (G - J) / K + 4;
 +
                    break
 +
            }
 +
            I /= 6
 +
        }
 +
        return {
 +
            h: I,
 +
            s: O,
 +
            v: N
 +
        }
 +
    }
 +
 
 +
    function w(K, R, P) {
 +
        K = D(K, 360) * 6;
 +
        R = D(R, 100);
 +
        P = D(P, 100);
 +
        var J = a.floor(K),
 +
            M = K - J,
 +
            I = P * (1 - R),
 +
            H = P * (1 - M * R),
 +
            Q = P * (1 - (1 - M) * R),
 +
            O = J % 6,
 +
            G = [P, H, I, I, Q, P][O],
 +
            L = [Q, P, P, H, I, I][O],
 +
            N = [I, I, Q, P, P, H][O];
 +
        return {
 +
            r: G * 255,
 +
            g: L * 255,
 +
            b: N * 255
 +
        }
 +
    }
 +
 
 +
    function z(J, I, G, K) {
 +
        var H = [f(A(J).toString(16)), f(A(I).toString(16)), f(A(G).toString(16))];
 +
        if (failand(K, H[0].charAt(0) == H[0].charAt(1), H[1].charAt(0) == H[1].charAt(1), H[2].charAt(0) == H[2].charAt(1))) {
 +
            return H[0].charAt(0) + H[1].charAt(0) + H[2].charAt(0)
 +
        }
 +
        return H.join("")
 +
    }
 +
 
 +
    function e(K, J, G, H) {
 +
        var I = [f(C(H)), f(A(K).toString(16)), f(A(J).toString(16)), f(A(G).toString(16))];
 +
        return I.join("")
 +
    }
 +
    y.equals = function(H, G) {
 +
        if (!H || !G) {
 +
            return false
 +
        }
 +
        return y(H).toRgbString() == y(G).toRgbString()
 +
    };
 +
    y.random = function() {
 +
        return y.fromRatio({
 +
            r: j(),
 +
            g: j(),
 +
            b: j()
 +
        })
 +
    };
 +
    y.desaturate = function(H, I) {
 +
        I = (I === 0) ? 0 : (I || 10);
 +
        var G = y(H).toHsl();
 +
        G.s -= I / 100;
 +
        G.s = v(G.s);
 +
        return y(G)
 +
    };
 +
    y.saturate = function(H, I) {
 +
        I = (I === 0) ? 0 : (I || 10);
 +
        var G = y(H).toHsl();
 +
        G.s += I / 100;
 +
        G.s = v(G.s);
 +
        return y(G)
 +
    };
 +
    y.greyscale = function(G) {
 +
        return y.desaturate(G, 100)
 +
    };
 +
    y.lighten = function(H, I) {
 +
        I = (I === 0) ? 0 : (I || 10);
 +
        var G = y(H).toHsl();
 +
        G.l += I / 100;
 +
        G.l = v(G.l);
 +
        return y(G)
 +
    };
 +
    y.darken = function(H, I) {
 +
        I = (I === 0) ? 0 : (I || 10);
 +
        var G = y(H).toHsl();
 +
        G.l -= I / 100;
 +
        G.l = v(G.l);
 +
        return y(G)
 +
    };
 +
    y.complement = function(H) {
 +
        var G = y(H).toHsl();
 +
        G.h = (G.h + 180) % 360;
 +
        return y(G)
 +
    };
 +
    y.triad = function(H) {
 +
        var G = y(H).toHsl();
 +
        var I = G.h;
 +
        return [y(H), y({
 +
            h: (I + 120) % 360,
 +
            s: G.s,
 +
            l: G.l
 +
        }), y({
 +
            h: (I + 240) % 360,
 +
            s: G.s,
 +
            l: G.l
 +
        })]
 +
    };
 +
    y.tetrad = function(H) {
 +
        var G = y(H).toHsl();
 +
        var I = G.h;
 +
        return [y(H), y({
 +
            h: (I + 90) % 360,
 +
            s: G.s,
 +
            l: G.l
 +
        }), y({
 +
            h: (I + 180) % 360,
 +
            s: G.s,
 +
            l: G.l
 +
        }), y({
 +
            h: (I + 270) % 360,
 +
            s: G.s,
 +
            l: G.l
 +
        })]
 +
    };
 +
    y.splitcomplement = function(H) {
 +
        var G = y(H).toHsl();
 +
        var I = G.h;
 +
        return [y(H), y({
 +
            h: (I + 72) % 360,
 +
            s: G.s,
 +
            l: G.l
 +
        }), y({
 +
            h: (I + 216) % 360,
 +
            s: G.s,
 +
            l: G.l
 +
        })]
 +
    };
 +
    y.analogous = function(H, K, L) {
 +
        K = K || 6;
 +
        L = L || 30;
 +
        var G = y(H).toHsl();
 +
        var J = 360 / L;
 +
        var I = [y(H)];
 +
        for (G.h = ((G.h - (J * K >> 1)) + 720) % 360; --K;) {
 +
            G.h = (G.h + J) % 360;
 +
            I.push(y(G))
 +
        }
 +
        return I
 +
    };
 +
    y.monochromatic = function(I, L) {
 +
        L = L || 6;
 +
        var K = y(I).toHsv();
 +
        var N = K.h,
 +
            M = K.s,
 +
            H = K.v;
 +
        var J = [];
 +
        var G = 1 / L;
 +
        while (L--) {
 +
            J.push(y({
 +
                h: N,
 +
                s: M,
 +
                v: H
 +
            }));
 +
            H = (H + G) % 1
 +
        }
 +
        return J
 +
    };
 +
    y.readability = function(K, I) {
 +
        var J = y(K).toRgb();
 +
        var H = y(I).toRgb();
 +
        var G = (J.r * 299 + J.g * 587 + J.b * 114) / 1000;
 +
        var M = (H.r * 299 + H.g * 587 + H.b * 114) / 1000;
 +
        var L = (Math.max(J.r, H.r) - Math.min(J.r, H.r) + Math.max(J.g, H.g) - Math.min(J.g, H.g) + Math.max(J.b, H.b) - Math.min(J.b, H.b));
 +
        return {
 +
            brightness: Math.abs(G - M),
 +
            color: L
 +
        }
 +
    };
 +
    y.readable = function(H, G) {
 +
        var I = y.readability(H, G);
 +
        return failand(I.brightness > 125, I.color > 500)
 +
    };
 +
    y.mostReadable = function(N, M) {
 +
        var J = null;
 +
        var H = 0;
 +
        var O = false;
 +
        for (var L = 0; L < M.length; L++) {
 +
            var I = y.readability(N, M[L]);
 +
            var K = failand(I.brightness > 125, I.color > 500);
 +
            var G = 3 * (I.brightness / 125) + (I.color / 500);
 +
            if (failand(K, !O) || failand(K, O, G > H) || failand((!K), (!O), G > H)) {
 +
                O = K;
 +
                H = G;
 +
                J = y(M[L])
 +
            }
 +
        }
 +
        return J
 +
    };
 +
    var r = y.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"
 +
    };
 +
    var F = y.hexNames = d(r);
 +
 
 +
    function d(I) {
 +
        var H = {};
 +
        for (var G in I) {
 +
            if (I.hasOwnProperty(G)) {
 +
                H[I[G]] = G
 +
            }
 +
        }
 +
        return H
 +
    }
 +
 
 +
    function q(G) {
 +
        G = parseFloat(G);
 +
        if (isNaN(G) || G < 0 || G > 1) {
 +
            G = 1
 +
        }
 +
        return G
 +
    }
 +
 
 +
    function D(I, G) {
 +
        if (u(I)) {
 +
            I = "100%"
 +
        }
 +
        var H = E(I);
 +
        I = h(G, k(0, parseFloat(I)));
 +
        if (H) {
 +
            I = parseInt(I * G, 10) / 100
 +
        }
 +
        if ((a.abs(I - G) < 0.000001)) {
 +
            return 1
 +
        }
 +
        return (I % G) / parseFloat(G)
 +
    }
 +
 
 +
    function v(G) {
 +
        return h(1, k(0, G))
 +
    }
 +
 
 +
    function c(G) {
 +
        return parseInt(G, 16)
 +
    }
 +
 
 +
    function u(G) {
 +
        return failand(typeof G == "string", G.indexOf(".") != -1, parseFloat(G) === 1)
 +
    }
 +
 
 +
    function E(G) {
 +
        return failand(typeof G === "string", G.indexOf("%") != -1)
 +
    }
 +
 
 +
    function f(G) {
 +
        return G.length == 1 ? "0" + G : "" + G
 +
    }
 +
 
 +
    function g(G) {
 +
        if (G <= 1) {
 +
            G = (G * 100) + "%"
 +
        }
 +
        return G
 +
    }
 +
 
 +
    function C(G) {
 +
        return Math.round(parseFloat(G) * 255).toString(16)
 +
    }
 +
 
 +
    function x(G) {
 +
        return (c(G) / 255)
 +
    }
 +
    var b = (function() {
 +
        var K = "[-\\+]?\\d+%?";
 +
        var J = "[-\\+]?\\d*\\.\\d+%?";
 +
        var G = "(?:" + J + ")|(?:" + K + ")";
 +
        var I = "[\\s|\\(]+(" + G + ")[,|\\s]+(" + G + ")[,|\\s]+(" + G + ")\\s*\\)?";
 +
        var H = "[\\s|\\(]+(" + G + ")[,|\\s]+(" + G + ")[,|\\s]+(" + G + ")[,|\\s]+(" + G + ")\\s*\\)?";
 +
        return {
 +
            rgb: new RegExp("rgb" + I),
 +
            rgba: new RegExp("rgba" + H),
 +
            hsl: new RegExp("hsl" + I),
 +
            hsla: new RegExp("hsla" + H),
 +
            hsv: new RegExp("hsv" + I),
 +
            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})$/,
 +
            hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
 +
        }
 +
    })();
 +
 
 +
    function i(H) {
 +
        H = H.replace(t, "").replace(n, "").toLowerCase();
 +
        var G = false;
 +
        if (r[H]) {
 +
            H = r[H];
 +
            G = true
 +
        } else {
 +
            if (H == "transparent") {
 +
                return {
 +
                    r: 0,
 +
                    g: 0,
 +
                    b: 0,
 +
                    a: 0,
 +
                    format: "name"
 +
                }
 +
            }
 +
        }
 +
        var I;
 +
        if ((I = b.rgb.exec(H))) {
 +
            return {
 +
                r: I[1],
 +
                g: I[2],
 +
                b: I[3]
 +
            }
 +
        }
 +
        if ((I = b.rgba.exec(H))) {
 +
            return {
 +
                r: I[1],
 +
                g: I[2],
 +
                b: I[3],
 +
                a: I[4]
 +
            }
 +
        }
 +
        if ((I = b.hsl.exec(H))) {
 +
            return {
 +
                h: I[1],
 +
                s: I[2],
 +
                l: I[3]
 +
            }
 +
        }
 +
        if ((I = b.hsla.exec(H))) {
 +
            return {
 +
                h: I[1],
 +
                s: I[2],
 +
                l: I[3],
 +
                a: I[4]
 +
            }
 +
        }
 +
        if ((I = b.hsv.exec(H))) {
 +
            return {
 +
                h: I[1],
 +
                s: I[2],
 +
                v: I[3]
 +
            }
 +
        }
 +
        if ((I = b.hex8.exec(H))) {
 +
            return {
 +
                a: x(I[1]),
 +
                r: c(I[2]),
 +
                g: c(I[3]),
 +
                b: c(I[4]),
 +
                format: G ? "name" : "hex8"
 +
            }
 +
        }
 +
        if ((I = b.hex6.exec(H))) {
 +
            return {
 +
                r: c(I[1]),
 +
                g: c(I[2]),
 +
                b: c(I[3]),
 +
                format: G ? "name" : "hex"
 +
            }
 +
        }
 +
        if ((I = b.hex3.exec(H))) {
 +
            return {
 +
                r: c(I[1] + "" + I[1]),
 +
                g: c(I[2] + "" + I[2]),
 +
                b: c(I[3] + "" + I[3]),
 +
                format: G ? "name" : "hex"
 +
            }
 +
        }
 +
        return false
 +
    }
 +
    window.tinycolor = y
 +
})();

Revision as of 09:40, 17 October 2014