package rainbowPackage;

import javafx.scene.paint.Color;

public class ColorArrayReverser
{
	ColorTooSimilar colorTooSimilar = new ColorTooSimilar();
	TransparencySlider transparencySlider = new TransparencySlider();
	int b = 0;
	public Color[] colorArray;
	public ColorArrayReverser()
	{
		colorArray = new Color[0];
	}
	public ColorArrayReverser(int Length)
	{
		colorArray = new Color[Length];
	}
	public ColorArrayReverser(Color[] ColorArray)
	{
		colorArray = ColorArray;
	}
	public Color[] ReverseArray(Color[] ColorArray)
	{
		colorArray = ColorArray;
		for (int a = 0; a < ColorArray.length; a++)
		{
			b = ColorArray.length - 1 - a;
			if ( !colorTooSimilar.ColorTooSimilarFunction(ColorArray[a], ColorArray[b]) )
				colorArray[b] = ColorArray[a];
			else
			{
				transparencySlider.TransparencySliderFunction(2, 1, ColorArray[a], ColorArray[b]);
				if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), VibrantColors.Pink.ToFXColor()) )
					colorArray[b] = VibrantColors.Pink.ToFXColor();
				else if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), VibrantColors.NeonGreen.ToFXColor()) )
					colorArray[b] = VibrantColors.NeonGreen.ToFXColor();
				else //if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), VibrantColors.OxylBlue.ToFXColor()) )
					colorArray[b] = VibrantColors.OxylBlue.ToFXColor();
			}
		}
		return colorArray;
	}
	public Color[] ReverseArray(Color[] ColorArray, Color ReplacementColor)
	{
		colorArray = ColorArray;
		for (int a = 0; a < ColorArray.length; a++)
		{
			b = ColorArray.length - 1 - a;
			if ( !colorTooSimilar.ColorTooSimilarFunction(ColorArray[a], ColorArray[b]) )
				colorArray[b] = ColorArray[a];
			else
			{
				transparencySlider.TransparencySliderFunction(2, 1, ColorArray[a], ColorArray[b]);
				if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), ReplacementColor) )
					colorArray[b] = ReplacementColor;
				else if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), VibrantColors.NeonGreen.ToFXColor()) )
					colorArray[b] = VibrantColors.NeonGreen.ToFXColor();
				else if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), VibrantColors.OxylBlue.ToFXColor()) )
					colorArray[b] = VibrantColors.OxylBlue.ToFXColor();
				else //if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), VibrantColors.Pink.ToFXColor()) )
					colorArray[b] = VibrantColors.Pink.ToFXColor();
			}
		}
		return colorArray;
	}
	public Color[] ReverseArray(Color[] ColorArray, Color FirstReplacementColor, Color SecondReplacementColor)
	{
		colorArray = ColorArray;
		for (int a = 0; a < ColorArray.length; a++)
		{
			b = ColorArray.length - 1 - a;
			if ( !colorTooSimilar.ColorTooSimilarFunction(ColorArray[a], ColorArray[b]) )
				colorArray[b] = ColorArray[a];
			else
			{
				transparencySlider.TransparencySliderFunction(2, 1, ColorArray[a], ColorArray[b]);
				if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), FirstReplacementColor) )
					colorArray[b] = FirstReplacementColor;
				else if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), SecondReplacementColor) )
					colorArray[b] = SecondReplacementColor;
				else if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), VibrantColors.NeonGreen.ToFXColor()) )
					colorArray[b] = VibrantColors.NeonGreen.ToFXColor();
				else if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), VibrantColors.OxylBlue.ToFXColor()) )
					colorArray[b] = VibrantColors.OxylBlue.ToFXColor();
				else //if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), VibrantColors.Pink.ToFXColor()) )
					colorArray[b] = VibrantColors.Pink.ToFXColor();
			}
		}
		return colorArray;
	}
	public Color[] ReverseArray(Color[] ColorArray, Color FirstReplacementColor, Color SecondReplacementColor, Color ThirdReplacementColor)
	{
		colorArray = ColorArray;
		for (int a = 0; a < ColorArray.length; a++)
		{
			b = ColorArray.length - 1 - a;
			if ( !colorTooSimilar.ColorTooSimilarFunction(ColorArray[a], ColorArray[b]) )
				colorArray[b] = ColorArray[a];
			else
			{
				transparencySlider.TransparencySliderFunction(2, 1, ColorArray[a], ColorArray[b]);
				if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), FirstReplacementColor) )
					colorArray[b] = FirstReplacementColor;
				else if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), SecondReplacementColor) )
					colorArray[b] = SecondReplacementColor;
				else if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), ThirdReplacementColor) )
					colorArray[b] = ThirdReplacementColor;
				else if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), VibrantColors.NeonGreen.ToFXColor()) )
					colorArray[b] = VibrantColors.NeonGreen.ToFXColor();
				else if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), VibrantColors.OxylBlue.ToFXColor()) )
					colorArray[b] = VibrantColors.OxylBlue.ToFXColor();
				else //if ( !colorTooSimilar.ColorTooSimilarFunction(transparencySlider.ToFXColor(), VibrantColors.Pink.ToFXColor()) )
					colorArray[b] = VibrantColors.Pink.ToFXColor();
			}
		}
		return colorArray;
	}
	public int Length()
	{
		return colorArray.length;
	}
	public void set(Color[] ColorArray) { colorArray = ColorArray; }//14th Square DiagnosticsClass.java
	public Color[] get() { return colorArray; }
}