/**
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
/**
* (C) 2008 Syronex / J.M. Rosengard
* http://www.syronex.com/software/jquery-color-picker
*
* - Check mark is either black or white, depending on the darkness
* of the color selected.
* - Fixed a bug in the original plugin that led to problems when there is
* more than one colorPicker in a document.
*
* This is based on:
*
* jQuery colorSelect plugin 0.9
* http://plugins.jquery.com/project/colorPickerAgain
* Copyright (c) 2008 Otaku RzO (Renzo Galo Castro Jurado).
* (Original author URL & domain name no longer available.)
*
*/
(function($) {
$.fn.colorPicker = function($$options) {
// Defaults
var $defaults = {
color:new Array(
"#FFFFFF", "#EEEEEE", "#FFFF88", "#FF7400", "#CDEB8B", "#6BBA70",
"#006E2E", "#C3D9FF", "#4096EE", "#356AA0", "#FF0096", "#B02B2C",
"#000000"
),
defaultColor: 0,
columns: 0,
click: function($color){}
};
var $settings = $.extend({}, $defaults, $$options);
// Iterate and reformat each matched element
return this.each(function() {
var $this = $(this);
// build element specific options
var o = $.meta ? $.extend({}, $settings, $this.data()) : $settings;
var $$oldIndex = typeof(o.defaultColor)=='number' ? o.defaultColor : -1;
var _html = "";
for(i=0;i';
if($$oldIndex==-1 && o.defaultColor==o.color[i]) $$oldIndex = i;
}
$this.html(''+_html+'
');
var $color = $this.children('.jColorSelect').children('div');
// Set container width
var w = ($color.width()+2+2) * (o.columns>0 ? o.columns : o.color.length );
$this.children('.jColorSelect').css('width',w);
// Subscribe to click event of each color box
$color.each(function(i){
$(this).click(function(){
if( $$oldIndex == i ) return;
if( $$oldIndex > -1 ){
cell = $color.eq($$oldIndex);
if(cell.hasClass('check')) cell.removeClass(
'check').removeClass('checkwht').removeClass('checkblk');
}
// Keep index
$$oldIndex = i;
$(this).addClass('check').addClass(isdark(o.color[i]) ? 'checkwht' : 'checkblk');
// Trigger user event
o.click(o.color[i]);
});
});
/*
// Simulate click for defaultColor
_tmp = $$oldIndex;
$$oldIndex = -1;
$color.eq(_tmp).trigger('click');
*/
});
return this;
};
})(jQuery);
/**
* Return true if color is dark, false otherwise.
* (C) 2008 Syronex / J.M. Rosengard
**/
function isdark(color){
var colr = parseInt(color.substr(1), 16);
return (colr >>> 16) // R
+ ((colr >>> 8) & 0x00ff) // G
+ (colr & 0x0000ff) // B
< 500;
}