// JavaScript Document



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 = getObject('colourpicker');

    if (doiframe) var iframe = getObject('cpiframe');

    if (elem == curElem && picker.style.display == 'block') {

        picker.style.display = 'none';

        if (doiframe) iframe.style.display = 'none';

        return;

    }//EOF if-elem

    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';

    }//EOF if-doiframe

    picker.style.display = 'block';

}// EOF pickColour()



function relateColour(colour) {

    if (customMode) return;

    var picker = getObject('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);

}// EOF relateColour()



function setColour(colour, noClose) {

    if (customMode) return;

    var picker = getObject('colourpicker');

    if (colour == '')

        colour = nocolour;

    if (!noClose) {

        picker.style.display = 'none';

        if (doiframe) {

            var iframe = getObject('cpiframe');

            iframe.style.display = 'none';

        }//EOF if-doiframe

    }//EOF if-noClose

    

	eval(curElem.title);

}// EOF setColour()



function checkCustom() {

    var picker = getObject('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;

            }//EOF if

        }//EOF if-colourInput

    }//EOF if-customMode

    else

        if (colourInput != "") customMode = true;

}// EOF checkCustom()



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 = 99;

    elemDiv.innerHTML = '<table cellspacing="0" cellpadding="0" style="background-color: white;">'

    + '<tr><td colspan="2">' + getColourTable(0, 8) + '</td>'

    + '<td colspan="2">' + getColourTable(8, 16) + '</td></tr>'

    + '<tr><td colspan="2">' + getColourTable(16, 80) + '</td>'

    + '<td colspan="2">' + getColourTable(80, 144) + '</td></tr>'

    + '<tr><td colspan="2">' + getColourTable(144, 208) + '</td>'

    + '<td colspan="2">' + getColourTable(208, 272) + '</td></tr>'

    + '<tr><td align="center" class="text" style="cursor: pointer; border-top: solid 1px black; border-right: solid 1px black" onclick="setColour(\'\')" onmouseover="relateColour(\'\')">None</td>'

    + '<td align="center" class="text" style="cursor: pointer; border-top: solid 1px black; border-right: solid 1px black" onclick="setColour(\'transparent\')" onmouseover="relateColour(\'transparent\')">Transparent</td>'

    + '<td align="right" class="text" style="border-top: solid 1px black;">Custom :</td>'

    + '<td align="right" class="text" style="border-top: solid 1px black;"><input style="border: 0; border-left: solid 1px #CCCCCC;" size="10" maxlength="7" onclick="if (!customMode) this.value = \'\';" onkeyup="checkCustom()" type="text" /></td></tr>'

    + '</table>';

    

    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);

    }// EOF if-doiframe

    

    divSet = true;

}// EOF setDiv()



function getColourTable(start, end) {

    var colours = colourArray;

    var tableCode = '';

    if (end > colours.length) end = colours.length;

    tableCode += '<table cellspacing="0" cellpadding="0" style="cursor: pointer; border-collapse: collapse; float: left">';

    for (i = start; i < end; i++) {

        if (i % perline == 0) { tableCode += '<tr>'; }

        tableCode += '<td onmouseover="relateColour(\'' + colours[i] + '\')" style="width: 15px; height: 15px; border: solid 1px white; background-color: ' + colours[i] + '" onclick="setColour(\'' + colours[i] + '\');"></td>' 

        if (i % perline == perline - 1) { tableCode += '</tr>'; }

    }//EOF for

    if (i % perline != 0) { tableCode += '</tr>'; }

    tableCode += '</table>';

    return tableCode;

}// EOF getColourTable()



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);

    }//EOF for-a

    

    for (a = 0; a < colourLevels.length; a++) {

        for (c = 0; c < colourLevels.length; c++)

            addColour(0,c,a);

    }//EOF for-a

    

    for (a = 0; a < colourLevels.length; a++) {

        for (c = 0; c < colourLevels.length; c++)

            addColour(a,0,c);

    }//EOF for-a

    

    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;

}// EOF genColours()



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]);

    }//EOF for-a

}// EOF addExtraColours()




function addColour(r, g, b) {

    var red = colourLevels[r];

    var green = colourLevels[g];

    var blue = colourLevels[b];

    addColourValue(red, green, blue);

}// EOF addColour()



function addColourValue(r, g, b) {

    colourArray[colourArray.length] = '#' + r + r + g + g + b + b;

}// EOF addColourValue()



function getAbsoluteOffsetTop(obj) {

    var top = obj.offsetTop;

    var parent = obj.offsetParent;

    while (parent != document.body) {

        top += parent.offsetTop;

        parent = parent.offsetParent;

    }//EOF while-parent

    return top;

}// EOF getAbsoluteOffsetTop()



function getAbsoluteOffsetLeft(obj) {

    var left = obj.offsetLeft;

    var parent = obj.offsetParent;

    while (parent != document.body) {

        left += parent.offsetLeft;

        parent = parent.offsetParent;

    }//EOF while-parent

    return left;

}// EOF getAbsoluteOffsetLeft()