Вход Регистрация
Файл: wordpress/wp-admin/js/farbtastic.js
Строк: 240
<?php
/*!
 * Farbtastic: jQuery color picker plug-in v1.3u
 *
 * Licensed under the GPL license:
 *   http://www.gnu.org/licenses/gpl.html
 */
(function($) {

$.fn.
farbtastic = function (options) {
  $.
farbtastic(thisoptions);
  return 
this;
};

$.
farbtastic = function (containercallback) {
  var 
container = $(container).get(0);
  return 
container.farbtastic || (container.farbtastic = new $._farbtastic(containercallback));
};

$.
_farbtastic = function (containercallback) {
  
// Store farbtastic object
  
var fb this;

  
// Insert markup
  
$(container).html('<div class="farbtastic"><div class="color"></div><div class="wheel"></div><div class="overlay"></div><div class="h-marker marker"></div><div class="sl-marker marker"></div></div>');
  var 
= $('.farbtastic'container);
  
fb.wheel = $('.wheel'container).get(0);
  
// Dimensions
  
fb.radius 84;
  
fb.square 100;
  
fb.width 194;

  
// Fix background PNGs in IE6
  
if (navigator.appVersion.match(/MSIE [0-6]./)) {
    $(
'*'e).each(function () {
      if (
this.currentStyle.backgroundImage != 'none') {
        var 
image this.currentStyle.backgroundImage;
        
image this.currentStyle.backgroundImage.substring(5image.length 2);
        $(
this).css({
          
'backgroundImage''none',
          
'filter'"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" image "')"
        
});
      }
    });
  }

  
/**
   * Link to the given element(s) or callback.
   */
  
fb.linkTo = function (callback) {
    
// Unbind previous nodes
    
if (typeof fb.callback == 'object') {
      $(
fb.callback).unbind('keyup'fb.updateValue);
    }

    
// Reset color
    
fb.color null;

    
// Bind callback or elements
    
if (typeof callback == 'function') {
      
fb.callback callback;
    }
    else if (
typeof callback == 'object' || typeof callback == 'string') {
      
fb.callback = $(callback);
      
fb.callback.bind('keyup'fb.updateValue);
      if (
fb.callback.get(0).value) {
        
fb.setColor(fb.callback.get(0).value);
      }
    }
    return 
this;
  };
  
fb.updateValue = function (event) {
    if (
this.value && this.value != fb.color) {
      
fb.setColor(this.value);
    }
  };

  
/**
   * Change color with HTML syntax #123456
   */
  
fb.setColor = function (color) {
    var 
unpack fb.unpack(color);
    if (
fb.color != color && unpack) {
      
fb.color color;
      
fb.rgb unpack;
      
fb.hsl fb.RGBToHSL(fb.rgb);
      
fb.updateDisplay();
    }
    return 
this;
  };

  
/**
   * Change color with HSL triplet [0..1, 0..1, 0..1]
   */
  
fb.setHSL = function (hsl) {
    
fb.hsl hsl;
    
fb.rgb fb.HSLToRGB(hsl);
    
fb.color fb.pack(fb.rgb);
    
fb.updateDisplay();
    return 
this;
  };

  
/////////////////////////////////////////////////////

  /**
   * Retrieve the coordinates of the given event relative to the center
   * of the widget.
   */
  
fb.widgetCoords = function (event) {
    var 
offset = $(fb.wheel).offset();
    return { 
x: (event.pageX offset.left) - fb.width 2y: (event.pageY offset.top) - fb.width };
  };

  
/**
   * Mousedown handler
   */
  
fb.mousedown = function (event) {
    
// Capture mouse
    
if (!document.dragging) {
      $(
document).bind('mousemove'fb.mousemove).bind('mouseup'fb.mouseup);
      
document.dragging true;
    }

    
// Check which area is being dragged
    
var pos fb.widgetCoords(event);
    
fb.circleDrag Math.max(Math.abs(pos.x), Math.abs(pos.y)) * fb.square;

    
// Process
    
fb.mousemove(event);
    return 
false;
  };

  
/**
   * Mousemove handler
   */
  
fb.mousemove = function (event) {
    
// Get coordinates relative to color picker center
    
var pos fb.widgetCoords(event);

    
// Set new HSL parameters
    
if (fb.circleDrag) {
      var 
hue Math.atan2(pos.x, -pos.y) / 6.28;
      if (
hue 0hue += 1;
      
fb.setHSL([huefb.hsl[1], fb.hsl[2]]);
    }
    else {
      var 
sat Math.max(0Math.min(1, -(pos.fb.square) + .5));
      var 
lum Math.max(0Math.min(1, -(pos.fb.square) + .5));
      
fb.setHSL([fb.hsl[0], satlum]);
    }
    return 
false;
  };

  
/**
   * Mouseup handler
   */
  
fb.mouseup = function () {
    
// Uncapture mouse
    
$(document).unbind('mousemove'fb.mousemove);
    $(
document).unbind('mouseup'fb.mouseup);
    
document.dragging false;
  };

  
/**
   * Update the markers and styles
   */
  
fb.updateDisplay = function () {
    
// Markers
    
var angle fb.hsl[0] * 6.28;
    $(
'.h-marker'e).css({
      
leftMath.round(Math.sin(angle) * fb.radius fb.width 2) + 'px',
      
topMath.round(-Math.cos(angle) * fb.radius fb.width 2) + 'px'
    
});

    $(
'.sl-marker'e).css({
      
leftMath.round(fb.square * (.5 fb.hsl[1]) + fb.width 2) + 'px',
      
topMath.round(fb.square * (.5 fb.hsl[2]) + fb.width 2) + 'px'
    
});

    
// Saturation/Luminance gradient
    
$('.color'e).css('backgroundColor'fb.pack(fb.HSLToRGB([fb.hsl[0], 10.5])));

    
// Linked elements or callback
    
if (typeof fb.callback == 'object') {
      
// Set background/foreground color
      
$(fb.callback).css({
        
backgroundColorfb.color,
        
colorfb.hsl[2] > 0.5 '#000' '#fff'
      
});

      
// Change linked value
      
$(fb.callback).each(function() {
        if (
this.value && this.value != fb.color) {
          
this.value fb.color;
        }
      });
    }
    else if (
typeof fb.callback == 'function') {
      
fb.callback.call(fbfb.color);
    }
  };

  
/* Various color utility functions */
  
fb.pack = function (rgb) {
    var 
Math.round(rgb[0] * 255);
    var 
Math.round(rgb[1] * 255);
    var 
Math.round(rgb[2] * 255);
    return 
'#' + (16 '0' '') + r.toString(16) +
           (
16 '0' '') + g.toString(16) +
           (
16 '0' '') + b.toString(16);
  };

  
fb.unpack = function (color) {
    if (
color.length == 7) {
      return [
parseInt('0x' color.substring(13)) / 255,
        
parseInt('0x' color.substring(35)) / 255,
        
parseInt('0x' color.substring(57)) / 255];
    }
    else if (
color.length == 4) {
      return [
parseInt('0x' color.substring(12)) / 15,
        
parseInt('0x' color.substring(23)) / 15,
        
parseInt('0x' color.substring(34)) / 15];
    }
  };

  
fb.HSLToRGB = function (hsl) {
    var 
m1m2rgb;
    var 
hsl[0], hsl[1], hsl[2];
    
m2 = (<= 0.5) ? * (1) : l*s;
    
m1 m2;
    return [
this.hueToRGB(m1m2h+0.33333),
        
this.hueToRGB(m1m2h),
        
this.hueToRGB(m1m2h-0.33333)];
  };

  
fb.hueToRGB = function (m1m2h) {
    
= (0) ? : ((1) ? h);
    if (
1) return m1 + (m2 m1) * 6;
    if (
1) return m2;
    if (
2) return m1 + (m2 m1) * (0.66666 h) * 6;
    return 
m1;
  };

  
fb.RGBToHSL = function (rgb) {
    var 
minmaxdeltahsl;
    var 
rgb[0], rgb[1], rgb[2];
    
min Math.min(rMath.min(gb));
    
max Math.max(rMath.max(gb));
    
delta max min;
    
= (min max) / 2;
    
0;
    if (
&& 1) {
      
delta / (0.5 ? (l) : (l));
    }
    
0;
    if (
delta 0) {
      if (
max == && max != g+= (b) / delta;
      if (
max == && max != b+= (+ (r) / delta);
      if (
max == && max != r+= (+ (g) / delta);
      
/= 6;
    }
    return [
hsl];
  };

  
// Install mousedown handler (the others are set on the document on-demand)
  
$('*'e).mousedown(fb.mousedown);

    
// Init color
  
fb.setColor('#000000');

  
// Set linked elements/callback
  
if (callback) {
    
fb.linkTo(callback);
  }
};

})(
jQuery);
?>
Онлайн: 1
Реклама