/********************************************/
/* auther: Lubavin Alexander la@design.ru	*/
/* date: october 2006 						*/


var ToggleItems = {

	MENU_CLASS    		: 'toggleMenu',
	CONTAINER_CLASS    	: 'toggleItem',
	ACTIVE_CLASS    	: 'active',
	VISIBLE_CLASS		: 'visible',
	INVISIBLE_CLASS		: 'invisible',
	T_VARIABLE			: 'tItem',
	TOGGLE_TAG_NAME     : 'div',
	
	instance : function(oToggleMenu, oToggleItems) {
			
			this.oToggleMenu = oToggleMenu;
			this.oToggleItems = oToggleItems;
			this.aItemContainers = [];
			this.oCurItem = null;
			this.iActive = null;
			var oThis = this;
			
		if (oToggleMenu) {
			for(var i = 0; i < oToggleMenu.childNodes.length; i++) {
				
				var _menu = null;
				var _menu_a = null;
				var _container = null;
				
				if(oToggleMenu.childNodes[i].nodeType == 1 &&				
					Common.Class.match(oToggleMenu.childNodes[i], ToggleItems.MENU_CLASS)) {
						_menu = oToggleMenu.childNodes[i];
						_menu_a = oToggleMenu.childNodes[i].getElementsByTagName('a')[0];
						

					for(var j = 0; j < oToggleItems.childNodes.length; j++) {
						if(oToggleItems.childNodes[j].nodeType == 1 &&				
							Common.Class.match(oToggleItems.childNodes[j], ToggleItems.CONTAINER_CLASS) &&
							Common.Class.match(oToggleItems.childNodes[j], ToggleItems.T_VARIABLE + '-' + this.aItemContainers.length )
						) {
							_container = oToggleItems.childNodes[j]
						}
						
					}
					
					if (_menu && _container){
						_menu.setAttribute('itemId', this.aItemContainers.length);
					this.aItemContainers[this.aItemContainers.length] = {
							menu		:	_menu,
							container	:	_container
						};
					
					_menu.onclick = function(oEvent) {
						oThis.toggleItem(oEvent || window.event);
						};
						/* alert(_menu.innerHTML + _container.innerHTML) */
					}
					
					
				}
				
			}
		
			
			
			/* this.iActive = 0;
			this.oCurItem = this.aItemContainers[0]; */
			
		}
	}
};


ToggleItems.instance.prototype = {
	
	setActive : function(iIndex) {
		
		if(this.iActive != iIndex) {
	
			this.iActive = iIndex;
	
			for (var i = 0; i < this.aItemContainers.length; i++) {
				if (i != this.iActive) {
					/* this.aItemContainers[i].container.style.display = 'none' */
					this.toggleOff(i);
				} else {
					/* this.aItemContainers[i].container.style.display = 'block' */
					this.toggleOn(i);
					/* alert(this.aItemContainers[i].container.className) */
				}
			}
			
			
		} else {
			if (this.aItemContainers[iIndex].isAlwaysClickable) { 
					if (this.aItemContainers[iIndex].bState == 'on') {
						this.toggleOff(iIndex);
					} else {
						this.toggleOn(iIndex);
					};
				}
		}
		
	},
	
	toggleOn : function(i) {
		Common.Class.remove(this.aItemContainers[i].container, ToggleItems.INVISIBLE_CLASS);
		Common.Class.add(this.aItemContainers[i].container, ToggleItems.VISIBLE_CLASS);
		Common.Class.add(this.aItemContainers[i].menu, ToggleItems.ACTIVE_CLASS, '');
		this.aItemContainers[i].bState = 'on';
	},
	
	toggleOff : function(i) {
		Common.Class.remove(this.aItemContainers[i].container, ToggleItems.VISIBLE_CLASS);
		Common.Class.add(this.aItemContainers[i].container, ToggleItems.INVISIBLE_CLASS);
		Common.Class.remove(this.aItemContainers[i].menu, ToggleItems.ACTIVE_CLASS);
		this.aItemContainers[i].bState = 'off';
	},
	
	init : function(iIndex, isAlwaysClickable, sInitialClass) {
		
		var i = iIndex;
		Common.Class.add(this.aItemContainers[i].container, (sInitialClass == ToggleItems.VISIBLE_CLASS ) ? ToggleItems.VISIBLE_CLASS : ToggleItems.INVISIBLE_CLASS);
		if (sInitialClass == ToggleItems.VISIBLE_CLASS) {
			Common.Class.add(this.aItemContainers[i].menu, ToggleItems.ACTIVE_CLASS, '');
		}else{
			
		};
		if (isAlwaysClickable) { this.aItemContainers[i].isAlwaysClickable = true };
		
	},
	
	toggleItem : function(oEvent) {
		oElement = oEvent.srcElement ? oEvent.srcElement : oEvent.currentTarget;
		while (!Common.Class.match(oElement, ToggleItems.MENU_CLASS)){
			oElement = oElement.parentNode;
		}
		this.setActive(oElement.getAttribute('itemId'))
	}
	
}



/* Toggle Box states */
function initToggleBoxButton(oButton){
	var oBox = document.getElementById('Box');
	if (oButton && oBox) {
		oButton.className = Common.Class.match(oBox, 'state-0') ? 'state-0' : 'state-1';
		oButton.onclick = function(oEvent) { toggleBox(oEvent || window.event); };
		var oElement = oButton;
		while (!Common.Class.match(oElement, 'ToggleButton')){
			oElement = oElement.parentNode;
		}
		oButton.onmouseover = function() { Common.Class.add(oElement, 'active'); };
		oButton.onmouseout = function() { Common.Class.remove(oElement, 'active'); };
	}
}

function toggleBox(oEvent){
	var oBox = document.getElementById('Box');
	if (oBox) {
		if (Common.Class.match(oBox, 'state-0')) {
			Common.Class.remove(oBox, 'state-0');
			Common.Class.add(oBox, 'state-1');
		} else {
			Common.Class.remove(oBox, 'state-1');
			Common.Class.add(oBox, 'state-0');
		}
		if (oEvent) {
				oElement = oEvent.srcElement ? oEvent.srcElement : oEvent.currentTarget;
				oElement.className = Common.Class.match(oBox, 'state-0') ? 'state-0' : 'state-1';
			}
	}
}
