/***************************************************************example:classNameRule = 'PrefixRoleId'or:classNameRule = 'RolePrefixId'prefix - та часть которая всех объединяетrole - роль элемента, например toggler или block (переключатель или переключаемый блок)id - та часть которая объединяет переключатель и блок***************************************************************/colorToggler = function (colorHolderClassName, colorSelectorClassName, colorPickerClassName, colorPrefix, activeClass, blockEvent){	this.init = function ()	{		this.activeClass = activeClass.split('|')[1];		this.passiveClass = activeClass.split('|')[0];		this.colorPrefix = colorPrefix;				this.colorHolderClassName = colorHolderClassName;		this.colorSelectorClassName = colorSelectorClassName;		this.colorPickerClassName = colorPickerClassName;		this.colorButtons = new Array();		this.colorOptions = new Array();				this.colorHolders = new Array();		this.colorSelectors = new Array();		this.colorPickers = new Array();				this.block = blockEvent;				this.activeButton = false;		this.allElems = document.getElementsByTagName('*');	}		this.blockEvent = function (e) 	{		if (this.block)		{			e = e ? e : window.event;			if (e.stopPropagation) e.stopPropagation();			else e.cancelBubble = true;			if (e.preventDefault) e.preventDefault();			else e.returnValue = false;		}	}		this.getByClassName = function (className, parent)	{		var parent = parent ? parent.getElementsByTagName('*') : this.allElems;		var result = new Array();		for (var i = 0; i < parent.length; i++)		{			if (parent[i].className.search(className) > -1)			{				result.push(parent[i]);			}		}		return result;	}	this.getColor = function (elem)	{		var classes = elem.className.split(' ');		for (var i = 0; i < classes.length; i++)		{			if (classes[i].search(this.colorPrefix) > -1)			{				var color = classes[i].replace(this.colorPrefix, '');				return color;			}		}		return false;	}		this.changeHoldersColor = function (prevColor, newColor)	{		for (var i = 0; i < this.colorHolders.length; i++)		{			this.colorHolders[i].className = this.colorHolders[i].className.replace(prevColor, newColor);		}	}	this.toggleColor = function (elem)	{		var color = this.getColor(elem);		if (this.activeButton)		{			var prevColor = this.getColor(this.activeButton);		}				this.changeHoldersColor(prevColor, color);				for (var i = 0; i < this.colorButtons.length; i++)		{			var buttonColor = this.getColor(this.colorButtons[i]);			if (buttonColor == color)			{				this.colorButtons[i].className = this.colorButtons[i].className.replace(this.passiveClass, this.activeClass);			}			else			{				this.colorButtons[i].className = this.colorButtons[i].className.replace(this.activeClass, this.passiveClass);			}		}		for (var i = 0; i < this.colorOptions.length; i++)		{			var optionColor = this.getColor(this.colorOptions[i]);			if (optionColor == color)			{				this.colorOptions[i].selected = true;			}			else			{				//this.colorSelectors[i].selected = false;			}		}		this.setActiveButton(elem);	}		this.checkActive = function (elem)	{		if (elem.className.search(this.activeClass) > -1)		{			return true;		}		else return false;	}		this.setActiveButton = function (elem)	{		if (this.checkActive(elem))		{			this.activeButton = elem;		}	}	this.prepare = function ()	{		this.colorPickers = this.getByClassName(this.colorPickerClassName);		this.colorHolders = this.getByClassName(this.colorHolderClassName);		this.colorSelectors = this.getByClassName(this.colorSelectorClassName);				// получаем все кнопки цветов		for (var i = 0; i < this.colorPickers.length; i++)		{			var colorButtons = this.getByClassName(this.colorPrefix, this.colorPickers[i]);			this.colorButtons = this.colorButtons.concat(colorButtons);		}				// получаем все значение оптионов цветов		for (var i = 0; i < this.colorSelectors.length; i++)		{			var colorOptions = this.getByClassName(this.colorPrefix, this.colorSelectors[i]);			this.colorOptions = this.colorOptions.concat(colorOptions);		}				// Вешаем на кнопки события				for (var i = 0; i < this.colorButtons.length; i++)		{			var button = this.colorButtons[i];			this.setActiveButton(button);			button.obj = this;			button.onclick = function (e)			{				this.obj.blockEvent(e);				this.obj.toggleColor(this);			}		}			}		this.init();	this.prepare();}
