﻿var CssButtons = new Class(
{
	initialize : function()
	{
		this.activeItems = { };
		ui.registerViewStateHandler("CssButtons", this.getViewState);
	},

	getViewState : function(control)
	{
		var expanded = [];
		var expandedSubPanels = control.getElements("." + control.expandedCss);

		for (var i = 0; i < expandedSubPanels.length; i++)
		{
			expanded.push(expandedSubPanels[i].tag);
		}

		var viewState = { "__type" : "vs", "Expanded" : expanded };
		return viewState;
	},

	expand : function(dialogID, parentID, controlID, toggleID)
	{
		var parent = ui.getNestedControl(dialogID, parentID);
		var control = ui.getNestedControl(dialogID, controlID);

		if (parent == null || control == null)
		{
			return;
		}

		var currentClass = control.getProperty("class");

		if (currentClass == parent.collapsedCss)
		{
			control.setProperty("class", parent.expandedCss);
			imgBtn.setImageUrl(dialogID, toggleID, parent.btnCollapseImageUrl);
			ui.onResize();
		}
	},

	collapse : function(dialogID, parentID, controlID, toggleID)
	{
		var parent = ui.getNestedControl(dialogID, parentID);
		var control = ui.getNestedControl(dialogID, controlID);

		if (parent == null || control == null)
		{
			return;
		}

		var currentClass = control.getProperty("class");

		if (currentClass == parent.expandedCss)
		{
			control.setProperty("class", parent.collapsedCss);
			imgBtn.setImageUrl(dialogID, toggleID, parent.btnExpandImageUrl);
			ui.onResize();
		}
	},

	toggle : function(dialogID, parentID, controlID, toggleID)
	{
		var parent = ui.getNestedControl(dialogID, parentID);
		var control = ui.getNestedControl(dialogID, controlID);

		if (parent == null || control == null)
		{
			return;
		}

		var currentClass = control.getProperty("class");

		if (currentClass == parent.expandedCss)
		{
			control.setProperty("class", parent.collapsedCss);
			imgBtn.setImageUrl(dialogID, toggleID, parent.btnExpandImageUrl);
			ui.onResize();
			
		}
		else if (currentClass == parent.collapsedCss)
		{
			control.setProperty("class", parent.expandedCss);
			imgBtn.setImageUrl(dialogID, toggleID, parent.btnCollapseImageUrl);
			ui.onResize();
		}
	},

	initControl : function(dialogID, controlID, expandedCss, collapsedCss, btnExpandImageUrl, btnCollapseImageUrl)
	{
		var control = ui.getNestedControl(dialogID, controlID);

		if (control == null)
		{
			return;
		}

		control["expandedCss"] = expandedCss;
		control["collapsedCss"] = collapsedCss;
		control["btnExpandImageUrl"] = btnExpandImageUrl;
		control["btnCollapseImageUrl"] = btnCollapseImageUrl;
	}
});

var cssButtons = new CssButtons();