var Colors = new Array(
	"#000000","#000033","#000066","#000099","#0000CC","#0000FF","#330000","#330033","#330066","#330099","#3300CC",
	"#3300FF","#660000","#660033","#660066","#660099","#6600CC","#6600FF","#990000","#990033","#990066","#990099",
	"#9900CC","#9900FF","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#FF0000","#FF0033","#FF0066",
	"#FF0099","#FF00CC","#FF00FF","#003300","#003333","#003366","#003399","#0033CC","#0033FF","#333300","#333333",
	"#333366","#333399","#3333CC","#3333FF","#663300","#663333","#663366","#663399","#6633CC","#6633FF","#993300",
	"#993333","#993366","#993399","#9933CC","#9933FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF",
	"#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#006600","#006633","#006666","#006699","#0066CC",
	"#0066FF","#336600","#336633","#336666","#336699","#3366CC","#3366FF","#666600","#666633","#666666","#666699",
	"#6666CC","#6666FF","#996600","#996633","#996666","#996699","#9966CC","#9966FF","#CC6600","#CC6633","#CC6666",
	"#CC6699","#CC66CC","#CC66FF","#FF6600","#FF6633","#FF6666","#FF6699","#FF66CC","#FF66FF","#009900","#009933",
	"#009966","#009999","#0099CC","#0099FF","#339900","#339933","#339966","#339999","#3399CC","#3399FF","#669900",
	"#669933","#669966","#669999","#6699CC","#6699FF","#999900","#999933","#999966","#999999","#9999CC","#9999FF",
	"#CC9900","#CC9933","#CC9966","#CC9999","#CC99CC","#CC99FF","#FF9900","#FF9933","#FF9966","#FF9999","#FF99CC",
	"#FF99FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#33CC00","#33CC33","#33CC66","#33CC99",
	"#33CCCC","#33CCFF","#66CC00","#66CC33","#66CC66","#66CC99","#66CCCC","#66CCFF","#99CC00","#99CC33","#99CC66",
	"#99CC99","#99CCCC","#99CCFF","#CCCC00","#CCCC33","#CCCC66","#CCCC99","#CCCCCC","#CCCCFF","#FFCC00","#FFCC33",
	"#FFCC66","#FFCC99","#FFCCCC","#FFCCFF","#00FF00","#00FF33","#00FF66","#00FF99","#00FFCC","#00FFFF","#33FF00",
	"#33FF33","#33FF66","#33FF99","#33FFCC","#33FFFF","#66FF00","#66FF33","#66FF66","#66FF99","#66FFCC","#66FFFF",
	"#99FF00","#99FF33","#99FF66","#99FF99","#99FFCC","#99FFFF","#CCFF00","#CCFF33","#CCFF66","#CCFF99","#CCFFCC",
	"#CCFFFF","#FFFF00","#FFFF33","#FFFF66","#FFFF99","#FFFFCC","#FFFFFF"
);


var gbPickerSelected	= new Array();
var gbPickerPushTo		= new Array();
var gbPickerFader		= null;
var gbPickerParent		= null;

document.open();
document.write('<style> .gbPickerTable td { line-height:10px; vertical-align: middle; width:10px; height:10px; cursor: pointer; cursor: hand; } .gbPickerTable div { border:1px solid black; visibility:hiden; background-color: black; font-size: 0px; } </style>');
document.close();


function gbPicker( list ){
	this.id		= Math.floor(Math.random() * 10000000);
	this.list	= list;
	this.width	= 18;
}


gbPicker.prototype = {
    Show : function( pushTo, obj ) {
		window.clearTimeout( gbPickerFader );

		gbPickerParent			= obj;
		gbPickerPushTo[this.id] = pushTo;

		var gbPickerDiv = this.GetPickerDiv();
		gbPickerDiv.innerHTML = this.PopulateList();
		
		gbPickerDiv.style.left			= findPosX(obj) +23 +"px";
		gbPickerDiv.style.top			= findPosY(obj) +"px";
	    gbPickerDiv.style.opacity     	= 1;
	    gbPickerDiv.style.filter      	= "alpha(opacity=100)";
	    gbPickerDiv.style.MozOpacity  	= 1;
		gbPickerDiv.style.display		= '';

		gbPickerMouseOut( gbPickerDiv );

		return false;
	},


	GetPickerDiv : function() {
		if( obj = document.getElementById('gbPickerDiv') ){
			return obj;
		}else{
            if(document.all){
                var div = document.createElement('<div id="gbPickerDiv" style="display:none; position: absolute; top:0px; top:0px; opacity:1;">');
            }else{
				var div = document.createElement("div");
					div.setAttribute("id",		"gbPickerDiv");
					div.setAttribute("style",	"display:none; position: absolute; top:0px; top:0px; opacity:1;");
			}
			document.body.appendChild( div );

			return document.getElementById('gbPickerDiv');
		}
	},


	PopulateList : function(){
		var cp_contents	  = '<table border="1" class="gbPickerTable" cellspacing="0" cellpadding="0" id="' +this.id +'" onMouseOut="gbPickerMouseOut(this);"  onMouseOver="gbPickerMouseOver(this);">';
		var use_highlight = ((document.getElementById || document.all)?true:false);

		var width = 0;

		for( var i=0; i < this.list.length; i++ ){
			if( (i%this.width) == 0 ){
				cp_contents += "<tr>";
			}

			cp_contents += '<td style="background-color:'+ ((this.list[i].toString().indexOf('#') > -1)?this.list[i]:"#000000") +';" onMouseOver="gbPickerHightlight( this, \''+this.list[i]+'\' );" onClick="gbPickerSelect( this, \''+this.list[i]+'\' );"><img src="http://www.gbox.lt/draw/Img/px.gif" border="0" alt=""></td>';
			
			if( width < i && i <= this.width ) width = i;

			if( ((i+1)>=this.list.length) ||(((i+1) % this.width) == 0) ){
				cp_contents += "</tr>";
			}
		}

		var bg = ((gbPickerSelected[this.id])?gbPickerSelected[this.id]:this.list[0]).toString();

		if(bg.indexOf('#') > -1){
			var width = Math.ceil( width /2 );
			return cp_contents +'<tr><td colspan="'+width+'" style="background-color:' +bg +';" align="center">&nbsp;</td><td colspan="'+(this.width -width)+'" align="center">'+((gbPickerSelected[this.id])?gbPickerSelected[this.id]:this.list[0])+'</td></tr></table>';
		}else{
			var width = Math.ceil( width /1.2 );
			return cp_contents +'<tr><td colspan="'+width+'" align="center"><div style="width:' +bg +'px; height:' +bg +'px;"></div></td><td colspan="'+(this.width -width)+'" align="center">'+((gbPickerSelected[this.id])?gbPickerSelected[this.id]:this.list[0])+'</td></tr></table>';
		}
	}

}


function gbPickerFade( objId ){
	var obj = document.getElementById(objId);

	if( obj && obj.style.opacity > 0 ){
		var newOpacity			= obj.style.opacity -0.05;

	    obj.style.opacity     	= newOpacity;
	    obj.style.filter      	= "alpha(opacity=" + (newOpacity*100)+")";
	    obj.style.MozOpacity  	= newOpacity;
	    
		gbPickerFader = window.setTimeout("gbPickerFade('" +objId +"');", 100);
	}else if( obj ){
		obj.style.display = 'none';
	}
}


function gbPickerMouseOut( obj ){
	gbPickerFader = window.setTimeout("gbPickerFade('" +((obj.parentNode.id)?obj.parentNode.id:obj.id) +"');", 4000);
}


function gbPickerMouseOver( obj ){
	window.clearTimeout( gbPickerFader );

	obj.parentNode.style.opacity     	= 1;
	obj.parentNode.style.filter      	= "alpha(opacity=100)";
	obj.parentNode.style.MozOpacity  	= 1;
}


function gbPickerHightlight( obj, value ){
	var table	= obj.parentNode.parentNode.parentNode;
	var tr		= table.childNodes[0].childNodes[table.childNodes[0].childNodes.length-1];

	if( value.indexOf('#') > -1 ) {
		tr.childNodes[0].style.backgroundColor = value;
	}else{
		var div		= tr.childNodes[0].childNodes[0];
			div.style.width			= value +"px";
			div.style.height		= value +"px";
			div.style.visibility	= "visible";
	}

	tr.childNodes[1].innerHTML = value;
}


function gbPickerSelect( obj, value ){
	var table	= obj.parentNode.parentNode.parentNode;
	gbPickerSelected[table.id] = value;

	if( typeof(gbPickerPushTo[table.id]) == "function" ){
		gbPickerPushTo[table.id]( value );
	}else if( typeof(gbPickerPushTo[table.id]) == "object" ){
		gbPickerPushTo[table.id].value = value;
	}

	if( value.indexOf('#') > -1 ) {
		gbPickerParent.parentNode.style.backgroundColor = value;
	}

	table.parentNode.style.display = 'none';
}


function GetAbsScrollTop( obj ){
    var curTop=0;
    while( obj ){
        obj = obj.parentNode;
        if(obj && obj.scrollTop) curTop += parseInt(obj.scrollTop);
    }
    return curTop;
}


function GetAbsScrollLeft( obj ){
    var curLeft=0;
    while( obj ){
        obj = obj.parentNode;
        if(obj && obj.scrollLeft) curLeft += parseInt(obj.scrollLeft);
    }
    return curLeft;
}


function findPosY(obj){
    var curTop = 0 -GetAbsScrollTop(obj);

    if (obj.offsetParent){
        while (obj.offsetParent){
            curTop += obj.offsetTop;
            obj = obj.offsetParent;
        }
    } else if (obj.y) {
        curTop += obj.y;
    }
    return curTop;
}

function findPosX(obj){
    var curLeft = 0 -GetAbsScrollLeft(obj);

    if (obj.offsetParent){
        while (obj.offsetParent){
            curLeft += obj.offsetLeft;
            obj = obj.offsetParent;
        }
    } else if (obj.x) {
        curLeft += obj.x;
    }
    return curLeft;
}
