var cpTimeoutControl = null;
// vytvori novy ColorPicker
// path - cesta k obrazkum
//
ColorPicker = function(width, height, style, prgImg, title)
{
this.width = width;
this.height = height;
this.style = style;
this.progressLoaded = false;
this.painted = false;
this.progressImg = new Image();
this.progressImg.src = prgImg;
this.title = title;
this.imgError = false;
if (this.progressImg.complete)
{
this.progressLoaded = true;
//d.writeln('progress already loaded');
}
else
{
//d.writeln('progress on event');
this.progressImg.colorPicker = this;
this.progressImg.onload = ColorPicker.progressOnLoadHandler;
}
this.layers = new Array();
this.controls = new Array();
this.imgs = new Array();
this.imgSrcs = new Array();
this.textInfos = new Array();
}
// prida vrstvu
ColorPicker.prototype.addLayer = function(layer)
{
var i = this.layers.length;
this.layers[i] = layer;
}
// prida ovladani skupiny vrstev
ColorPicker.prototype.addControl = function(ctl)
{
var i = this.controls.length;
this.controls[i] = ctl;
}
ColorPicker.prototype.loadImg = function(img, src)
{
var i = this.imgs.length;
this.imgs[i] = img;
this.imgSrcs[i] = src;
//d.writeln('loadImg('+src+')');
}
// nakresli ColorPicker do divu s danym id
ColorPicker.prototype.paint = function(id)
{
var mainEl = document.getElementById(id);
this.mainEl = mainEl;
if (typeof(mainEl) == 'undefined')
{
alert('ColorPicker Error: Given element does not exist (
)!');
return;
}
var link = ColorPicker.createElement('link');
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = this.style;
mainEl.appendChild(link);
mainEl.style.width = this.width+'px';
this.canvas = ColorPicker.createElement('div');
this.canvas.className = 'cpCanvas';
this.canvas.style.width = this.width+'px';
this.canvas.style.height = this.height+'px';
mainEl.appendChild(this.canvas);
var pos = this.getCanvasPos();
this.prgs = ColorPicker.createElement('div');
var ps = this.prgs.style;
ps.left = pos[0]+'px';
ps.top = pos[1]+'px';
ps.zIndex = 100;
ps.position = 'absolute';
ps.backgroundColor = 'transparent';
ps.backgroundImage = 'url("'+this.progressImg.src+'")';
ps.backgroundPosition = '65px 80px';
ps.backgroundRepeat = 'no-repeat';
ps.width = this.width+'px';
ps.height = this.height+'px';
mainEl.appendChild(this.prgs);
this.textInfo = ColorPicker.createElement('div', mainEl);
this.textInfo.className = 'textInfo';
this.painted = true;
if (this.progressLoaded)
{
this.loadImages();
}
}
ColorPicker.prototype.repaintTextInfo = function()
{
var info = '';
for (var i = 0; i < this.textInfos.length; i++)
{
info += ' / '+this.textInfos[i];
}
this.textInfo.innerHTML = ((typeof this.title == 'undefined')?"":this.title+": ")+info.substr(2);
}
ColorPicker.prototype.loadImages = function()
{
this.loadingImages = this.imgs.length;
for (var i = 0; i < this.imgs.length; i++)
{
this.imgs[i].src = this.imgSrcs[i];
if (this.imgs[i].complete)
{
this.loadingImages--;
}
else
{
this.imgs[i].colorPicker = this;
this.imgs[i].onload = ColorPicker.imgOnLoadHandler;
this.imgs[i].onerror = ColorPicker.imgOnErrorHandler;
}
}
if (this.loadingImages <= 0)
{
this.allImagesLoaded();
}
}
// vraci souradnice leveho horniho rohu zadaneho elementu
ColorPicker.prototype.getCanvasPos = function()
{
var curleft = curtop = 0;
var obj = this.canvas;
if (obj.offsetParent)
{
curleft = obj.offsetLeft;
curtop = obj.offsetTop;
while ((obj = obj.offsetParent) && (obj.id != 'mainArea'))
{
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
}
}
// return [curleft,curtop];
return [120,0];
}
// provede se, kdyz se nacetly vsechny obrazky (mel by zmizet progresik)
ColorPicker.prototype.allImagesLoaded = function()
{
var pos = this.getCanvasPos();
// nakreslim obrazky pro jednotlivy vrstvy
for (var i = 0; i < this.layers.length; i++)
{
this.layers[i].paint(pos, i);
}
var tableDiv = ColorPicker.createElement('div');
tableDiv.className = 'cpButtonsTblDiv';
tableDiv.align = 'center';
this.mainEl.appendChild(tableDiv);
var table = ColorPicker.createElement('table');
table.className = 'cpButtonsTbl';
var tb = ColorPicker.createElement('tbody');
table.appendChild(tb);
var tr = ColorPicker.createElement('tr');
tb.appendChild(tr);
// nakreslim tlacitka pro jednotlivy vrstvy
for (var i = 0; i < this.controls.length; i++)
{
var td = ColorPicker.createElement('td');
this.controls[i].paint(td);
tr.appendChild(td);
}
for (var i=0; i 0)
{
setTimeout("ColorPickerControl.timeIsUp("+colIdx+","+cnt+")",150);
}
else
{
cpTimeoutControl = null;
}
}
// zpracuje kliknuti na barvu
ColorPickerControl.onClickHandler = function()
{
var el = this;
el.colorPickerControl.colorClicked(el.colIdx);
return true;
}
// zpracuje najeti mysi nad tlacitko
ColorPickerControl.onMouseOverHandler = function()
{
if (cpTimeoutControl != null)
return;
var el = this;
for (var i=0; i 0;) {
if (cls[--i] != className) {
ar[ar.length] = cls[i];
}
}
el.className = ar.join(" ");
};
ColorPicker.addClass = function(el, className) {
ColorPicker.removeClass(el, className);
el.className += " " + className;
};