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; };