/*
*	Package
*	colorSelector.class.js		2000.09.11
*	Victor A.Spirin,	victor_aspirin@mail.ru
*/





function colorSelector( ColorPaletteName, ColorPalettePlaceHolderName, ColorSampleAmount, ColorSampleNamePrefix, ColorSampleStartIndex, ColorValueFormName, ColorValueNamePrefix, ColorValueStartIndex )
	{
	var BORDER_WIDTH = 1;
	var DEFAULT_SAMPLE_COLOR = '#ffffff';
	var DEFAULT_SAMPLE_BORDER_COLOR = '#000000';
	var ACTIVE_SAMPLE_BORDER_COLOR = '#ff0000';

	var ColorPalette;
	var ColorSampleBorders = [];
	var ColorSamples = [];
	var ColorValues = [];
	var ActiveSampleIndex;

		if( window.document.layers != null )
		{
		function getObjectArray()
			{
			return document.layers;
			}

		function getEventHandler( Element )
			{
			return Element.document;
			}

		function onClick( Evt )
			{
			setActiveSample( Evt.target.HandlerOwner );
			}
		}
		else if( document.all != null )
		{
		function getObjectArray()
			{
			return document.all;
			}

		function getEventHandler( Element )
			{
			return Element;
			}

		function onClick()
			{
			setActiveSample( event.srcElement );
			}
		}
		else return null;

	this.setColor = function ( Color )
		{
		ColorSamples[ActiveSampleIndex].setBackgroundColor( Color != null ? Color.getHexadecimalString() : null );
		ColorValues[ActiveSampleIndex].value = Color != null ? Color.getHexadecimalString() : '';
		}

		function setActiveSample( ActiveSample )
			{
			ColorSampleBorders[ActiveSampleIndex].setBackgroundColor( DEFAULT_SAMPLE_BORDER_COLOR );
			ActiveSampleIndex = ActiveSample.Index;
			ColorSampleBorders[ActiveSampleIndex].setBackgroundColor( ACTIVE_SAMPLE_BORDER_COLOR );
			}




		for( var i = 0 ; i < ColorSampleAmount ; i++ )
		{
		ColorSampleBorders[i] = new baseLayer( getObjectArray()[ColorSampleNamePrefix + (i + ColorSampleStartIndex)] );
		ColorSampleBorders[i].setBackgroundColor( DEFAULT_SAMPLE_BORDER_COLOR );
		var Point = ColorSampleBorders[i].getAbsolutePosition();
		var Size = ColorSampleBorders[i].getSize();

		ColorSamples[i] = new baseLayer( new layer(ColorSampleBorders[i], Size.Width - 2*BORDER_WIDTH, Size.Height - 2*BORDER_WIDTH) );
		ColorSamples[i].moveToAbsolute( Point.X + BORDER_WIDTH, Point.Y + BORDER_WIDTH );
		ColorSamples[i].setBackgroundColor( DEFAULT_SAMPLE_COLOR );
		ColorSamples[i].show();

		ColorSamples[i].Index = i;
		ColorSamples[i].EventHandler = getEventHandler( ColorSamples[i] );
		ColorSamples[i].EventHandler.HandlerOwner = ColorSamples[i];
		ColorSamples[i].EventHandler.onclick = onClick;

		ColorValues[i] = document.forms[ColorValueFormName].elements[ColorValueNamePrefix + (i + ColorValueStartIndex)];
		}

		{
		ColorPalette = new colorPalette( 36, 6, new baseLayer(getObjectArray()[ColorPaletteName]), this );
		var ColorPalettePlaceHolder = new baseLayer( getObjectArray()[ColorPalettePlaceHolderName] );
		var Point = ColorPalettePlaceHolder.getAbsolutePosition();
		ColorPalette.moveToAbsolute( Point.X, Point.Y );
		ColorPalette.show();
		}

	ActiveSampleIndex = 0;
	ColorSampleBorders[ActiveSampleIndex].setBackgroundColor( ACTIVE_SAMPLE_BORDER_COLOR );

	return this;
	}

