/**
 * A class to parse color values
 * @author Stoyan Stefanov <sstoo@gmail.com>
 * @link   http://www.phpied.com/rgb-color-parser-in-javascript/
 * @license Use it if you like it
 */
function RGBColor(color_string)
{
    this.ok = false;

    // strip any leading #
    if (color_string.charAt(0) == '#') { // remove # if any
        color_string = color_string.substr(1,6);
    }

    color_string = color_string.replace(/ /g,'');
    color_string = color_string.toLowerCase();

    // array of color definition objects
    var color_defs = [
        {
            re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
            process: function (bits){
                return [
                    parseInt(bits[1]),
                    parseInt(bits[2]),
                    parseInt(bits[3])
                ];
            }
        },
        {
            re: /^(\w{2})(\w{2})(\w{2})$/,
            example: ['#00ff00', '336699'],
            process: function (bits){
                return [
                    parseInt(bits[1], 16),
                    parseInt(bits[2], 16),
                    parseInt(bits[3], 16)
                ];
            }
        },
        {
            re: /^(\w{1})(\w{1})(\w{1})$/,
            example: ['#fb0', 'f0f'],
            process: function (bits){
                return [
                    parseInt(bits[1] + bits[1], 16),
                    parseInt(bits[2] + bits[2], 16),
                    parseInt(bits[3] + bits[3], 16)
                ];
            }
        }
    ];

    // search through the definitions to find a match
    for (var i = 0; i < color_defs.length; i++) {
        var re = color_defs[i].re;
        var processor = color_defs[i].process;
        var bits = re.exec(color_string);
        if (bits) {
            channels = processor(bits);
            this.r = channels[0];
            this.g = channels[1];
            this.b = channels[2];
            this.ok = true;
        }

    }

    // validate/cleanup values
    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);

    // some getters
    this.toRGB = function () {
        return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
    }
    this.toHex = function () {
        var r = this.r.toString(16);
        var g = this.g.toString(16);
        var b = this.b.toString(16);
        if (r.length == 1) r = '0' + r;
        if (g.length == 1) g = '0' + g;
        if (b.length == 1) b = '0' + b;
        return '#' + r + g + b;
    }


}


function loadCC()
{
	var searchBox = document.getElementById("searchBox");
	searchBox.style.display = 'none';
	var pos = Position.get(searchBox.parentNode);
	Position.set(searchBox, pos.left, pos.top+20);
}


function toggleSearch(vis)
{
	var searchBox = document.getElementById("searchBox");
	if (vis || searchBox.style.display == 'none')
	{
		//searchBox.style.display = 'block';
		new Effect.Appear('searchBox', {duration: 0.5, afterFinish: function(){document.getElementById("ajaxSearch_input").focus();}});
	}
	else
	{
		//searchBox.style.display = 'none';
		new Effect.Fade('searchBox', {duration: 0.5});
	}
}



var _currentTrack = null;
var _oldColor = null;
function showTrack(obj, color, track)
{
	//hideTrack();
	//alert(obj.getElementsByTagName("span")[0].style.backgroundColor);
	obj.className = color;
	//obj.getElementsByTagName("span")[0].style.visibility = "hidden";
	//obj.style.borderBottom = "0.2em solid";
	_currentTrack = obj;
}
function hideTrack()
{
	if (_currentTrack)
	{
		//_currentTrack.getElementsByTagName("span")[0].style.visibility = "visible";
		_currentTrack.className = "";
		//_currentTrack.style.borderBottom = "none";
		_currentTrack = null;
	}
}


function roundCorners(color)
{
	if (!NiftyCheck())
	{
      return;
    }
    
    var foreground;
    var background;
    var rules = document.styleSheets.item(0);
	rules = rules.cssRules || rules.rules;
	for (var i = 0; i < rules.length; i++)
	{
		if (rules.item(i).selectorText == ('.' + color))
		{
			foreground = rules.item(i).style.backgroundColor;
		}
		else if (rules.item(i).selectorText.toLowerCase() == 'body')
		{
			background = rules.item(i).style.backgroundColor;
		}
	}
	if (foreground[0] != '#')
	{
		var c = new RGBColor(foreground);
		foreground = c.toHex();
		c = new RGBColor(background);
		background = c.toHex();
	}
    Rounded("div.roundborders", background, foreground, 10, 10);
}
