/**
 * @author ������
 */
var Tools = {
	GetElementByClassName: function (className, container)
	{
		return (Prototype.Browser.IE) ? document.getElementsByClassName(className,container) :
										container.getElementsByClassName(className);
	} 
};

var Manager = Class.create()
Manager.prototype = {
	initialize:function(container, links)
	{
		this.container = $(container);
		this.links = $A($(links).getElementsByTagName("span"));
		this.global_links = [];
		this.initContent();
	},
	
	initContent:function()
	{
		var classes = ["adress_block", "adress_block_2", "adress_block_big"];
		var counter = 0;
		this.links.each(function(item){
			var gl_link = new GlobalLink(item, Tools.GetElementByClassName(classes[counter], this.container)[0], counter);
			gl_link.onClick = this.changeState.bindAsEventListener(this);
			this.global_links.push(gl_link);
			counter++;
		}.bind(this));
		this.currentLink = this.global_links[0];
	},
	
	changeState:function(link)
	{
		this.currentLink.hideLink();
		this.currentLink = link;
		this.currentLink.showLink();
	}
	
}

var GlobalLink = Class.create()
GlobalLink.prototype = {
	initialize:function(link, container, index)
	{
		this.link = link;
		this.container = container;
		this.index = index;
		this.isShow = false;
		this.setEvents();
		this.updateLink();
		
	},
	
	updateLink:function()
	{
		if(this.index == 0)
			this.isShow = true;
		else
			this.initContent();
	},

	initContent:function()
	{
		var p_left = this.container.getElementsByTagName("p")[0];
		var spans = $A(p_left.getElementsByTagName("span"));
		this.items = [];
		var counter = 0;
		var p_right_elements = Tools.GetElementByClassName("r_t", this.container);
		spans.each(function(item){
			var element = null;
			if(p_right_elements[counter])
				element = p_right_elements[counter];
			var adressItem = new AdressItem(item, element, counter);
			adressItem.onClick = this.changeState.bindAsEventListener(this);
			this.items.push(adressItem);
			counter++;		
		}.bind(this));
		this.currentItem = this.items[0];
	},
	
	setEvents:function()
	{
		this.link.onclick = this._onclick.bindAsEventListener(this);
	},
	 
	_onclick:function()
	{
		this.onClick(this);
	},
	
	showLink:function()
	{
		this.setState(true);
	},
	
	hideLink:function()
	{
		this.setState(false);
	},
	
	changeState:function(link)
	{
		this.currentItem.hideLink();
		this.currentItem = link;
		this.currentItem.showLink();
	},
	
	setState:function(state)
	{
		var display = ["block", "none"];
		this.container.style.display = display[state ? 0 : 1];
		this.link.className = state ? "selected_office" : "";
	}
}

var AdressItem = Class.create()
AdressItem.prototype = {
	initialize : function(link, container, index)
	{
		this.link = link;
		this.container = container;
		this.index = index;
		this.isShow = index==0 ? true : false;
		this.setEvents();
	},

	setEvents:function()
	{
		this.link.onclick = this._onclick.bindAsEventListener(this);
	},
	 
	_onclick:function()
	{
		this.onClick(this);
	},
	
	showLink:function()
	{
		this.setState(true);
	},
	
	hideLink:function()
	{
		this.setState(false);
	},
	
	setState:function(state)
	{
		var display = ["block", "none"];
		this.container.style.display = display[state ? 0 : 1];
		this.link.className = state ? "city" : "";
	}
}
