//str_replace
function str_replace(search, replace, subject) {
    return subject.split(search).join(replace);
}

function getWinSize() {
	var myWidth = 0, myHeight = 0;
	
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	}
	else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	}
	else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	return {w:myWidth,h:myHeight};
}


//всплывающие окна
var InfoBlock = {
	defaultClassName : "contextInfo",
	mainMenuId : "MainMenu",
	spacer : "img/0.gif",
	itemClassPrefix : "m",
	toggle : false,
	light: "",
	lightItem : "",
	openObject : "",
	ajaxlist : false,
	opened : "",
	openedGame : "",
	
	host : "",
	PhotoUserID: "",
	ActiveUserID : "",	
	image_id: "",
	
	initSMSHelp : function(h,pu,au,i) {
	this.host = h;
	this.PhotoUserID = pu;
	this.ActiveUserID =	 au;
	this.image_id = i;
	},
	
	show : function(id,evt,obj, cn, pos, offsetY, offsetX, toggleMM, item, gameCode, gameParams) { 
		if (this.isOpened(id)) { 
			if(!gameCode) {
				this.hide(); 
				return false;
			}else if(this.openedGame == gameCode) { 
					this.hide(); 
					return false;
			}
		}
			this.hide(); 
			this.openObject = obj;

			cancelBubbling(evt);
			
			hideContext();
						
			var targetDiv;
			if(gebi(id)) targetDiv = gebi(id); 
			else if(!gameCode) 
					targetDiv = false;
				else
					targetDiv = document.createElement("div"); 

			var coordinates = {};
			targetDiv.className = cn + " " + this.defaultClassName;
			targetDiv.style.zIndex = '100000000';
			targetDiv.onclick = cancelBubbling;
			
			targetDiv.id = id;
			targetDiv.style.position = "absolute";
			
			targetDiv.style.display = 'block';	
			pos = (pos) ? pos : 'abs';
			coordinates = this.getPosition(targetDiv, obj, offsetY, offsetX, pos); 

			targetDiv.style.top  = coordinates["top"]  + "px";				
			targetDiv.style.left = coordinates["left"] + "px";	
			
			this.opened = id;
			
			if(toggleMM) {
				this.toggle = true;
				this.toggleMainMenu();
			}
			
			if(item) {
				this.lightItem = item;
				this.light = true;
				this.lightMenuItem();
				obj.parentNode.style.zIndex = 2; //IE z-index fix
			}
			
			addHandler(document, 'click', function(e) {
			var e = e || window.event;
			if (e.button == 0 )	InfoBlock.hide();
			});
								
			return false;
		
	},
	
	getPosition: function(target, obj, offsetY, offsetX, pos) {
		var _top = 0, _left = 0, deltaY = 0, deltaX = 0;
		
		if(offsetY != '' && parseInt(offsetY)) deltaY = parseInt(offsetY);  
		if(offsetX != '' && parseInt(offsetX)) deltaX = parseInt(offsetX);
		
		if (getWinSize().h + defScroll().y - absPosition(obj).y - deltaY < target.offsetHeight + 50) deltaY = target.offsetHeight *(-1) - 20;
		if (getWinSize().w + defScroll().x - absPosition(obj).x - deltaX < target.offsetWidth + 50)  deltaX = target.offsetWidth *(-1) - 20;

		if(offsetX == 'left') deltaX = target.offsetWidth *(-1) - 20;
			else if(offsetX == 'right') deltaX = 0;
	
		if(offsetY == 'top') deltaY = target.offsetHeight *(-1) - 20;
			else if(offsetY == 'bottom') deltaY = 0;
			
		
		if(pos == 'abs') {
			_top =  absPosition(obj).y;
			_left = absPosition(obj).x;
		}
		
		_top += deltaY + 20;
		_left+= deltaX + 20;
		
		return {top:_top,left:_left};
	},
	
	isOpened : function(id) {
		if (gebi(id)) {
			if(gebi(id).style.display == 'block') 
				return true; 
			else return false;
		}else return false;
	},
	
	hide : function() {
		var els = gebc(this.defaultClassName, "div");
		for(var i = 0; i < els.length; i++) 
			if (els[i]) 
				if (els[i].style.display == 'block') {
					if(!this.openedGame) els[i].style.display = 'none';
						else els[i].parentNode.removeChild(els[i]);
					this.opened = "";
				}
		if(this.toggle) {
				this.toggle = false;
				this.toggleMainMenu();
		}

		if(this.light) {
				this.light = false;
				this.lightMenuItem();
				var obj = this.openObject;
				if (obj) obj.parentNode.style.zIndex = ""; //IE z-index fix
				this.openObject = "";
		}
		
		if (this.openedGame) this.openedGame = "";
		
	},
	
	toggleMainMenu : function() { 
					
			var mm = gebi(this.mainMenuId) ? gebi(this.mainMenuId) : false;
			if(!mm) return false;
			var overlay = gebi("__overlay") ? gebi("__overlay") : false;
						
			if (overlay) {
				overlay.parentNode.removeChild(overlay);
				return false;
			}else {
				var overlay = document.createElement("div");
				overlay.id = "__overlay";
				overlay.style.position = "absolute";
				overlay.style.top = "0px";
				overlay.style.left = "0px";
				overlay.style.width = mm.offsetWidth + "px";
				overlay.style.height = mm.offsetHeight + "px";
/*				var i = document.createElement("img");
				i.src = this.spacer;
				i.alt = "";
				i.style.width = mm.offsetWidth + "px";
				i.style.height = mm.offsetHeight + "px";
				overlay.appendChild(i);*/
				mm.appendChild(overlay);
				overlay.style.display = "block";
			}
	},
	
	lightMenuItem : function() {
		if (this.light) { //подсветить
			var _itemClass = this.itemClassPrefix + this.lightItem; 
			var _item = gebc(_itemClass, "li")[0];
			this.defaultClass = _item.className; 
			if(_item.className.indexOf(_itemClass + "-opened") == -1) {
				var pattern = new RegExp("("+ _itemClass + ")(\\s|$)");
				_item.className=_item.className.replace(pattern,"$1-opened$2");
				_item.getElementsByTagName("ul")[0].style.display = "block";
			}
		}else { 
			var _itemClass = this.itemClassPrefix + this.lightItem;
			var _item = gebc(_itemClass + "-opened", "li")[0];
			_item.className = str_replace(_itemClass + "-opened", _itemClass, _item.className);
			_item.getElementsByTagName("ul")[0].style.display = "";
		}
	}
};

//убираем все подсказки
function hideContext() {
	//убираем сабменю
	InfoBlock.hide();
	
}