/**
@author Stepan Reznikov (stepan@design.ru)
@version 1.0, 27.08.2007
*/

/*---------------*/
/*  Objects Map  */
/*---------------*/

var ObjectsMap = {

	init : function(){
		this.oPtr = document.getElementById('objects_map');
		this.aObjects = new Array();
		this.oObjectActive = null;

		this.aCaptions = Common.Dom.getElementsByClassName(this.oPtr, 'caption', 'p');

		for (var i = 0, iLength = this.aCaptions.length; i < iLength; i++) {
			if(!Common.Class.match(this.aCaptions[i], 'active')) {
				var sClassName = this.aCaptions[i].className.match(new RegExp('for_(\\w+)'))[1];
				var oStar = Common.Dom.getElementsByClassName(this.oPtr, sClassName, 'area')[0];
				this.aObjects[this.aObjects.length] = new MapObject(this.aCaptions[i], oStar, this);
			}
		}
	},

	activateObject : function(oObject){
		if(this.oObjectActive) {
			this.oObjectActive.hide();
		}
		oObject.activate();
		this.oObjectActive = oObject;
	},

	deactivateObject : function(oObject){
		if(this.oObjectActive == oObject) {
			this.oObjectActive = null;
		}
		oObject.deactivate();
	}
}


/*----------*/
/*  Object  */
/*----------*/

function MapObject(oCaption, oStar, oObjectsMap){
	this.oCaption = oCaption;
	this.oStar = oStar;
	this.oObjectsMap = oObjectsMap;
	this.timer;

	var me = this;
	Common.Event.add(this.oCaption, 'mouseover', function(){ me.mouseover(); });
	Common.Event.add(this.oCaption, 'mouseout', function(){ me.mouseout(); });
	Common.Event.add(this.oStar, 'mouseover', function(){ me.mouseover(); });
	Common.Event.add(this.oStar, 'mouseout', function(){ me.mouseout(); });
}

MapObject.prototype.mouseover = function(){
	clearTimeout(this.timer);
	this.oObjectsMap.activateObject(this);
}

MapObject.prototype.mouseout = function(){
	var me = this;
	this.timer = setTimeout(function(){me.oObjectsMap.deactivateObject(me);}, 500);
}

MapObject.prototype.activate = function(){
	Common.Class.add(this.oCaption, 'active');
}

MapObject.prototype.deactivate = function(){
	Common.Class.remove(this.oCaption, 'active');
}

MapObject.prototype.hide = function(){
	clearTimeout(this.timer);
	this.deactivate();
}


$(function(){
	ObjectsMap.init();
});