Вход Регистрация
Файл: adultscript-2.0.3-pro/files/admin/templates/default/js/colorpicker.js
Строк: 519
<?php
/**
 *
 * Color picker
 * Author: Stefan Petre www.eyecon.ro
 * 
 * Dual licensed under the MIT and GPL licenses
 * 
 */
(function ($) {
    var 
ColorPicker = function () {
        var
            
ids = {},
            
inAction,
            
charMin 65,
            
visible,
            
tpl '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
            
defaults = {
                
eventName'click',
                
onShow: function () {},
                
onBeforeShow: function(){},
                
onHide: function () {},
                
onChange: function () {},
                
onSubmit: function () {},
                
color'ff0000',
                
livePreviewtrue,
                
flatfalse
            
},
            
fillRGBFields = function  (hsbcal) {
                var 
rgb HSBToRGB(hsb);
                $(
cal).data('colorpicker').fields
                    
.eq(1).val(rgb.r).end()
                    .
eq(2).val(rgb.g).end()
                    .
eq(3).val(rgb.b).end();
            },
            
fillHSBFields = function  (hsbcal) {
                $(
cal).data('colorpicker').fields
                    
.eq(4).val(hsb.h).end()
                    .
eq(5).val(hsb.s).end()
                    .
eq(6).val(hsb.b).end();
            },
            
fillHexFields = function (hsbcal) {
                $(
cal).data('colorpicker').fields
                    
.eq(0).val(HSBToHex(hsb)).end();
            },
            
setSelector = function (hsbcal) {
                $(
cal).data('colorpicker').selector.css('backgroundColor''#' HSBToHex({hhsb.hs100b100}));
                $(
cal).data('colorpicker').selectorIndic.css({
                    
leftparseInt(150 hsb.s/10010),
                    
topparseInt(150 * (100-hsb.b)/10010)
                });
            },
            
setHue = function (hsbcal) {
                $(
cal).data('colorpicker').hue.css('top'parseInt(150 150 hsb.h/36010));
            },
            
setCurrentColor = function (hsbcal) {
                $(
cal).data('colorpicker').currentColor.css('backgroundColor''#' HSBToHex(hsb));
            },
            
setNewColor = function (hsbcal) {
                $(
cal).data('colorpicker').newColor.css('backgroundColor''#' HSBToHex(hsb));
            },
            
keyDown = function (ev) {
                var 
pressedKey ev.charCode || ev.keyCode || -1;
                if ((
pressedKey charMin && pressedKey <= 90) || pressedKey == 32) {
                    return 
false;
                }
                var 
cal = $(this).parent().parent();
                if (
cal.data('colorpicker').livePreview === true) {
                    
change.apply(this);
                }
            },
            
change = function (ev) {
                var 
cal = $(this).parent().parent(), col;
                if (
this.parentNode.className.indexOf('_hex') > 0) {
                    
cal.data('colorpicker').color col HexToHSB(fixHex(this.value));
                } else if (
this.parentNode.className.indexOf('_hsb') > 0) {
                    
cal.data('colorpicker').color col fixHSB({
                        
hparseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
                        
sparseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
                        
bparseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
                    });
                } else {
                    
cal.data('colorpicker').color col RGBToHSB(fixRGB({
                        
rparseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
                        
gparseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
                        
bparseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
                    }));
                }
                if (
ev) {
                    
fillRGBFields(colcal.get(0));
                    
fillHexFields(colcal.get(0));
                    
fillHSBFields(colcal.get(0));
                }
                
setSelector(colcal.get(0));
                
setHue(colcal.get(0));
                
setNewColor(colcal.get(0));
                
cal.data('colorpicker').onChange.apply(cal, [colHSBToHex(col), HSBToRGB(col)]);
            },
            
blur = function (ev) {
                var 
cal = $(this).parent().parent();
                
cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');
            },
            
focus = function () {
                
charMin this.parentNode.className.indexOf('_hex') > 70 65;
                $(
this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
                $(
this).parent().addClass('colorpicker_focus');
            },
            
downIncrement = function (ev) {
                var 
field = $(this).parent().find('input').focus();
                var 
current = {
                    
el: $(this).parent().addClass('colorpicker_slider'),
                    
maxthis.parentNode.className.indexOf('_hsb_h') > 360 : (this.parentNode.className.indexOf('_hsb') > 100 255),
                    
yev.pageY,
                    
fieldfield,
                    
valparseInt(field.val(), 10),
                    
preview: $(this).parent().parent().data('colorpicker').livePreview                    
                
};
                $(
document).bind('mouseup'currentupIncrement);
                $(
document).bind('mousemove'currentmoveIncrement);
            },
            
moveIncrement = function (ev) {
                
ev.data.field.val(Math.max(0Math.min(ev.data.maxparseInt(ev.data.val ev.pageY ev.data.y10))));
                if (
ev.data.preview) {
                    
change.apply(ev.data.field.get(0), [true]);
                }
                return 
false;
            },
            
upIncrement = function (ev) {
                
change.apply(ev.data.field.get(0), [true]);
                
ev.data.el.removeClass('colorpicker_slider').find('input').focus();
                $(
document).unbind('mouseup'upIncrement);
                $(
document).unbind('mousemove'moveIncrement);
                return 
false;
            },
            
downHue = function (ev) {
                var 
current = {
                    
cal: $(this).parent(),
                    
y: $(this).offset().top
                
};
                
current.preview current.cal.data('colorpicker').livePreview;
                $(
document).bind('mouseup'currentupHue);
                $(
document).bind('mousemove'currentmoveHue);
            },
            
moveHue = function (ev) {
                
change.apply(
                    
ev.data.cal.data('colorpicker')
                        .
fields
                        
.eq(4)
                        .
val(parseInt(360*(150 Math.max(0,Math.min(150,(ev.pageY ev.data.y))))/15010))
                        .
get(0),
                    [
ev.data.preview]
                );
                return 
false;
            },
            
upHue = function (ev) {
                
fillRGBFields(ev.data.cal.data('colorpicker').colorev.data.cal.get(0));
                
fillHexFields(ev.data.cal.data('colorpicker').colorev.data.cal.get(0));
                $(
document).unbind('mouseup'upHue);
                $(
document).unbind('mousemove'moveHue);
                return 
false;
            },
            
downSelector = function (ev) {
                var 
current = {
                    
cal: $(this).parent(),
                    
pos: $(this).offset()
                };
                
current.preview current.cal.data('colorpicker').livePreview;
                $(
document).bind('mouseup'currentupSelector);
                $(
document).bind('mousemove'currentmoveSelector);
            },
            
moveSelector = function (ev) {
                
change.apply(
                    
ev.data.cal.data('colorpicker')
                        .
fields
                        
.eq(6)
                        .
val(parseInt(100*(150 Math.max(0,Math.min(150,(ev.pageY ev.data.pos.top))))/15010))
                        .
end()
                        .
eq(5)
                        .
val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX ev.data.pos.left))))/15010))
                        .
get(0),
                    [
ev.data.preview]
                );
                return 
false;
            },
            
upSelector = function (ev) {
                
fillRGBFields(ev.data.cal.data('colorpicker').colorev.data.cal.get(0));
                
fillHexFields(ev.data.cal.data('colorpicker').colorev.data.cal.get(0));
                $(
document).unbind('mouseup'upSelector);
                $(
document).unbind('mousemove'moveSelector);
                return 
false;
            },
            
enterSubmit = function (ev) {
                $(
this).addClass('colorpicker_focus');
            },
            
leaveSubmit = function (ev) {
                $(
this).removeClass('colorpicker_focus');
            },
            
clickSubmit = function (ev) {
                var 
cal = $(this).parent();
                var 
col cal.data('colorpicker').color;
                
cal.data('colorpicker').origColor col;
                
setCurrentColor(colcal.get(0));
                
cal.data('colorpicker').onSubmit(colHSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
            },
            
show = function (ev) {
                var 
cal = $('#' + $(this).data('colorpickerId'));
                
cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
                var 
pos = $(this).offset();
                var 
viewPort getViewport();
                var 
top pos.top this.offsetHeight;
                var 
left pos.left;
                if (
top 176 viewPort.viewPort.h) {
                    
top -= this.offsetHeight 176;
                }
                if (
left 356 viewPort.viewPort.w) {
                    
left -= 356;
                }
                
cal.css({leftleft 'px'toptop 'px'});
                if (
cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
                    
cal.show();
                }
                $(
document).bind('mousedown', {calcal}, hide);
                return 
false;
            },
            
hide = function (ev) {
                if (!
isChildOf(ev.data.cal.get(0), ev.targetev.data.cal.get(0))) {
                    if (
ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
                        
ev.data.cal.hide();
                    }
                    $(
document).unbind('mousedown'hide);
                }
            },
            
isChildOf = function(parentElelcontainer) {
                if (
parentEl == el) {
                    return 
true;
                }
                if (
parentEl.contains) {
                    return 
parentEl.contains(el);
                }
                if ( 
parentEl.compareDocumentPosition ) {
                    return !!(
parentEl.compareDocumentPosition(el) & 16);
                }
                var 
prEl el.parentNode;
                while(
prEl && prEl != container) {
                    if (
prEl == parentEl)
                        return 
true;
                    
prEl prEl.parentNode;
                }
                return 
false;
            },
            
getViewport = function () {
                var 
document.compatMode == 'CSS1Compat';
                return {
                    
window.pageXOffset || (document.documentElement.scrollLeft document.body.scrollLeft),
                    
window.pageYOffset || (document.documentElement.scrollTop document.body.scrollTop),
                    
window.innerWidth || (document.documentElement.clientWidth document.body.clientWidth),
                    
window.innerHeight || (document.documentElement.clientHeight document.body.clientHeight)
                };
            },
            
fixHSB = function (hsb) {
                return {
                    
hMath.min(360Math.max(0hsb.h)),
                    
sMath.min(100Math.max(0hsb.s)),
                    
bMath.min(100Math.max(0hsb.b))
                };
            }, 
            
fixRGB = function (rgb) {
                return {
                    
rMath.min(255Math.max(0rgb.r)),
                    
gMath.min(255Math.max(0rgb.g)),
                    
bMath.min(255Math.max(0rgb.b))
                };
            },
            
fixHex = function (hex) {
                var 
len hex.length;
                if (
len 0) {
                    var 
= [];
                    for (var 
i=0i<leni++) {
                        
o.push('0');
                    }
                    
o.push(hex);
                    
hex o.join('');
                }
                return 
hex;
            }, 
            
HexToRGB = function (hex) {
                var 
hex parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
                return {
rhex >> 16g: (hex 0x00FF00) >> 8b: (hex 0x0000FF)};
            },
            
HexToHSB = function (hex) {
                return 
RGBToHSB(HexToRGB(hex));
            },
            
RGBToHSB = function (rgb) {
                var 
hsb = {
                    
h0,
                    
s0,
                    
b0
                
};
                var 
min Math.min(rgb.rrgb.grgb.b);
                var 
max Math.max(rgb.rrgb.grgb.b);
                var 
delta max min;
                
hsb.max;
                if (
max != 0) {
                    
                }
                
hsb.max != 255 delta max 0;
                if (
hsb.!= 0) {
                    if (
rgb.== max) {
                        
hsb.= (rgb.rgb.b) / delta;
                    } else if (
rgb.== max) {
                        
hsb.+ (rgb.rgb.r) / delta;
                    } else {
                        
hsb.+ (rgb.rgb.g) / delta;
                    }
                } else {
                    
hsb.= -1;
                }
                
hsb.*= 60;
                if (
hsb.0) {
                    
hsb.+= 360;
                }
                
hsb.*= 100/255;
                
hsb.*= 100/255;
                return 
hsb;
            },
            
HSBToRGB = function (hsb) {
                var 
rgb = {};
                var 
Math.round(hsb.h);
                var 
Math.round(hsb.s*255/100);
                var 
Math.round(hsb.b*255/100);
                if(
== 0) {
                    
rgb.rgb.rgb.v;
                } else {
                    var 
t1 v;
                    var 
t2 = (255-s)*v/255;
                    var 
t3 = (t1-t2)*(h%60)/60;
                    if(
h==3600;
                    if(
h<60) {rgb.r=t1;    rgb.b=t2rgb.g=t2+t3}
                    else if(
h<120) {rgb.g=t1rgb.b=t2;    rgb.r=t1-t3}
                    else if(
h<180) {rgb.g=t1rgb.r=t2;    rgb.b=t2+t3}
                    else if(
h<240) {rgb.b=t1rgb.r=t2;    rgb.g=t1-t3}
                    else if(
h<300) {rgb.b=t1rgb.g=t2;    rgb.r=t2+t3}
                    else if(
h<360) {rgb.r=t1rgb.g=t2;    rgb.b=t1-t3}
                    else {
rgb.r=0rgb.g=0;    rgb.b=0}
                }
                return {
r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
            },
            
RGBToHex = function (rgb) {
                var 
hex = [
                    
rgb.r.toString(16),
                    
rgb.g.toString(16),
                    
rgb.b.toString(16)
                ];
                $.
each(hex, function (nrval) {
                    if (
val.length == 1) {
                        
hex[nr] = '0' val;
                    }
                });
                return 
hex.join('');
            },
            
HSBToHex = function (hsb) {
                return 
RGBToHex(HSBToRGB(hsb));
            },
            
restoreOriginal = function () {
                var 
cal = $(this).parent();
                var 
col cal.data('colorpicker').origColor;
                
cal.data('colorpicker').color col;
                
fillRGBFields(colcal.get(0));
                
fillHexFields(colcal.get(0));
                
fillHSBFields(colcal.get(0));
                
setSelector(colcal.get(0));
                
setHue(colcal.get(0));
                
setNewColor(colcal.get(0));
            };
        return {
            
init: function (opt) {
                
opt = $.extend({}, defaultsopt||{});
                if (
typeof opt.color == 'string') {
                    
opt.color HexToHSB(opt.color);
                } else if (
opt.color.!= undefined && opt.color.!= undefined && opt.color.!= undefined) {
                    
opt.color RGBToHSB(opt.color);
                } else if (
opt.color.!= undefined && opt.color.!= undefined && opt.color.!= undefined) {
                    
opt.color fixHSB(opt.color);
                } else {
                    return 
this;
                }
                return 
this.each(function () {
                    if (!$(
this).data('colorpickerId')) {
                        var 
options = $.extend({}, opt);
                        
options.origColor opt.color;
                        var 
id 'collorpicker_' parseInt(Math.random() * 1000);
                        $(
this).data('colorpickerId'id);
                        var 
cal = $(tpl).attr('id'id);
                        if (
options.flat) {
                            
cal.appendTo(this).show();
                        } else {
                            
cal.appendTo(document.body);
                        }
                        
options.fields cal
                                            
.find('input')
                                                .
bind('keyup'keyDown)
                                                .
bind('change'change)
                                                .
bind('blur'blur)
                                                .
bind('focus'focus);
                        
cal
                            
.find('span').bind('mousedown'downIncrement).end()
                            .
find('>div.colorpicker_current_color').bind('click'restoreOriginal);
                        
options.selector cal.find('div.colorpicker_color').bind('mousedown'downSelector);
                        
options.selectorIndic options.selector.find('div div');
                        
options.el this;
                        
options.hue cal.find('div.colorpicker_hue div');
                        
cal.find('div.colorpicker_hue').bind('mousedown'downHue);
                        
options.newColor cal.find('div.colorpicker_new_color');
                        
options.currentColor cal.find('div.colorpicker_current_color');
                        
cal.data('colorpicker'options);
                        
cal.find('div.colorpicker_submit')
                            .
bind('mouseenter'enterSubmit)
                            .
bind('mouseleave'leaveSubmit)
                            .
bind('click'clickSubmit);
                        
fillRGBFields(options.colorcal.get(0));
                        
fillHSBFields(options.colorcal.get(0));
                        
fillHexFields(options.colorcal.get(0));
                        
setHue(options.colorcal.get(0));
                        
setSelector(options.colorcal.get(0));
                        
setCurrentColor(options.colorcal.get(0));
                        
setNewColor(options.colorcal.get(0));
                        if (
options.flat) {
                            
cal.css({
                                
position'relative',
                                
display'block'
                            
});
                        } else {
                            $(
this).bind(options.eventNameshow);
                        }
                    }
                });
            },
            
showPicker: function() {
                return 
this.each( function () {
                    if ($(
this).data('colorpickerId')) {
                        
show.apply(this);
                    }
                });
            },
            
hidePicker: function() {
                return 
this.each( function () {
                    if ($(
this).data('colorpickerId')) {
                        $(
'#' + $(this).data('colorpickerId')).hide();
                    }
                });
            },
            
setColor: function(col) {
                if (
typeof col == 'string') {
                    
col HexToHSB(col);
                } else if (
col.!= undefined && col.!= undefined && col.!= undefined) {
                    
col RGBToHSB(col);
                } else if (
col.!= undefined && col.!= undefined && col.!= undefined) {
                    
col fixHSB(col);
                } else {
                    return 
this;
                }
                return 
this.each(function(){
                    if ($(
this).data('colorpickerId')) {
                        var 
cal = $('#' + $(this).data('colorpickerId'));
                        
cal.data('colorpicker').color col;
                        
cal.data('colorpicker').origColor col;
                        
fillRGBFields(colcal.get(0));
                        
fillHSBFields(colcal.get(0));
                        
fillHexFields(colcal.get(0));
                        
setHue(colcal.get(0));
                        
setSelector(colcal.get(0));
                        
setCurrentColor(colcal.get(0));
                        
setNewColor(colcal.get(0));
                    }
                });
            }
        };
    }();
    $.
fn.extend({
        
ColorPickerColorPicker.init,
        
ColorPickerHideColorPicker.hidePicker,
        
ColorPickerShowColorPicker.showPicker,
        
ColorPickerSetColorColorPicker.setColor
    
});
})(
jQuery)
?>
Онлайн: 1
Реклама