var perline = 8; var divSet = false; var curElem; var colourLevels = Array('2', '4', '6', '8', 'A', 'C', 'E', 'F'); var colourArray = Array(); var doiframe = (browser == "Internet Explorer"); var nocolour = ''; var customMode = false; //if (document.all) { nocolour = ''; } function pickColour(elem) { if (!divSet) { setDiv(); } var picker = getObj('colourpicker'); if (doiframe) var iframe = getObj('cpiframe'); if (elem == curElem && picker.style.display == 'block') { picker.style.display = 'none'; if (doiframe) iframe.style.display = 'none'; return; } curElem = elem; picker.style.top = getAbsoluteOffsetTop(elem) + 20 + "px"; picker.style.left = getAbsoluteOffsetLeft(elem) + "px"; customMode = false; if (doiframe) { iframe.style.top = picker.style.top; iframe.style.left = picker.style.left; iframe.style.width = "262px"; iframe.style.height = "274px"; iframe.style.display = 'block'; } picker.style.display = 'block'; } function relateColour(colour) { if (customMode) return; var picker = getObj('colourpicker'); var hiddenInput = curElem.getElementsByTagName("input")[0]; var pickerInput = picker.getElementsByTagName("input")[0]; if (colour == '') colour = nocolour; curElem.style.backgroundColor = colour; hiddenInput.value = colour; pickerInput.value = colour; eval(curElem.getElementsByTagName("span")[0].title); } function setColour(colour, noClose) { if (customMode) return; var picker = getObj('colourpicker'); if (colour == '') colour = nocolour; if (!noClose) { picker.style.display = 'none'; if (doiframe) { var iframe = getObj('cpiframe'); iframe.style.display = 'none'; } } eval(curElem.title); } function checkCustom() { var picker = getObj('colourpicker'); var colourInput = picker.getElementsByTagName("input")[0].value; if (customMode) { if (colourInput == "") customMode = false; else { if (colourInput.length == 7 && colourInput.indexOf("#") == 0) { customMode = false; relateColour(colourInput); setColour(colourInput, true); customMode = true; } } } else if (colourInput != "") customMode = true; } function setDiv() { if (!document.createElement) { return; } var elemDiv = document.createElement('div'); if (typeof(elemDiv.innerHTML) != 'string') { return; } genColours(); elemDiv.id = 'colourpicker'; elemDiv.style.position = 'absolute'; elemDiv.style.display = 'none'; elemDiv.style.border = 'solid 1px black'; elemDiv.style.zIndex = 5; elemDiv.innerHTML = '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
' + getColourTable(0, 8) + '' + getColourTable(8, 16) + '
' + getColourTable(16, 80) + '' + getColourTable(80, 144) + '
' + getColourTable(144, 208) + '' + getColourTable(208, 272) + '
NoneTransparentCustom :
'; document.body.appendChild(elemDiv); if (doiframe) { var iframeDiv = document.createElement('iframe'); iframeDiv.id = 'cpiframe'; iframeDiv.style.position = 'absolute'; iframeDiv.style.display = 'none'; iframeDiv.style.border = '0'; iframeDiv.style.zIndex = 4; document.body.appendChild(iframeDiv); } divSet = true; } function getColourTable(start, end) { var colours = colourArray; var tableCode = ''; if (end > colours.length) end = colours.length; tableCode += ''; for (i = start; i < end; i++) { if (i % perline == 0) { tableCode += ''; } tableCode += '' if (i % perline == perline - 1) { tableCode += ''; } } if (i % perline != 0) { tableCode += ''; } tableCode += '
'; return tableCode; } function genColours() { for (a = 0; a < 10; a++) addColourValue(a,a,a); addColourValue('A','A','A'); addColourValue('B','B','B'); addColourValue('C','C','C'); addColourValue('D','D','D'); addColourValue('E','E','E'); addColourValue('F','F','F'); for (a = 0; a < colourLevels.length; a++) { for (c = 0; c < colourLevels.length; c++) addColour(c,a,0); } for (a = 0; a < colourLevels.length; a++) { for (c = 0; c < colourLevels.length; c++) addColour(0,c,a); } for (a = 0; a < colourLevels.length; a++) { for (c = 0; c < colourLevels.length; c++) addColour(a,0,c); } addExtraColours(2, 1, 1); addExtraColours(2, 1, 2); addExtraColours(1, 2, 1); addExtraColours(2, 3, 1); addExtraColours(1, 2, 2); addExtraColours(1, 1, 2); addExtraColours(1, 2, 3); addExtraColours(2, 1, 3); return colourArray; } function addExtraColours(redNum, greenNum, blueNum) { var extraColours = Array('0', '1', '3', '5', '7', '9', 'B', 'D', 'F'); var red = 0; var green = 0; var blue = 0; for (a = 0; a < extraColours.length - 1; a++) { var one = a; var two = a + 1; var three = a + 2; if (two >= extraColours.length) two = extraColours.length - 1; if (three >= extraColours.length) three = extraColours.length - 1; if (redNum == 1) red = one; else if (redNum == 2) red = two; else if (redNum == 3) red = three; if (greenNum == 1) green = one; else if (greenNum == 2) green = two; else if (greenNum == 3) green = three; if (blueNum == 1) blue = one; else if (blueNum == 2) blue = two; else if (blueNum == 3) blue = three; addColourValue(extraColours[red], extraColours[green], extraColours[blue]); } } function addColour(r, g, b) { var red = colourLevels[r]; var green = colourLevels[g]; var blue = colourLevels[b]; addColourValue(red, green, blue); } function addColourValue(r, g, b) { colourArray[colourArray.length] = '#' + r + r + g + g + b + b; } function getAbsoluteOffsetTop(obj) { var top = obj.offsetTop; var parent = obj.offsetParent; while (parent != document.body) { top += parent.offsetTop; parent = parent.offsetParent; } return top; } function getAbsoluteOffsetLeft(obj) { var left = obj.offsetLeft; var parent = obj.offsetParent; while (parent != document.body) { left += parent.offsetLeft; parent = parent.offsetParent; } return left; }