js.module('prodmenu');

prodmenu = {
	show : function(link)
	{
		if(!link) return;

		if($A(link, 'type') == 'box')
			return;

		var m = $('prodmenu');

		if(m.curr_link == link && visual.visible(m))
		{
			this.hide();
			
			return;
		}

		m.curr_link = link;
	
		visual.hide(m);
		
		if(m.oldresize)
		{
			window.onresize = m.oldresize;
		}

		m.oldresize=null;
		
		var pos = visual.findPos(link);

		var l = pos[0];
		var t = pos[1];

		switch($A(link, 'type'))
		{
			case 'title':
				t-=130;
			break;
			case 'img':
				t-=90;
			break;
		}

		if(l+link.offsetWidth-2+270>visual.windowWidth()) //right-pointing popup
		{
			m.className = "prodmenu pmright";
			l-=253;
		}
		else //left-pointing poppup
		{
			m.className = "prodmenu pmleft";
			l+=link.offsetWidth-2;
		}
		
		m.style.top = t;
		m.style.left = l;
		
		$A(m, 'curr_prod', $A(link, 'uid'));
		
		$$('prodlink_price', $A(link, 'price'));
		$$('prodlink_discount', $A(link, 'discount'));
		$$('prodlink_seller', $A(link, 'seller'));
		$$('prodlink_title', $A(link, 'prodtitle'));
		$$('prodlink_descr', $A(link, 'proddescr'));
		$A('prodlink_image', 'src', $A(link, 'img'));

		m.oldresize = window.onresize;
		window.onresize = prodmenu.adjust;

		m.oldonmousedown = document.body.onmousedown;
		document.body.onmousedown = prodmenu.checkHide;
		
		var tmp = $('prodlink_link_market');
		if(tmp)
		{
			$A(tmp,'href','/?page=shop&view=product&view_all=1&product_id='+$A(link,'pid'));
		}
		var tmp2 = $('prodlink_link_market_nw');
		if(tmp2)
		{
			$A(tmp2,'href','/?page=shop&view=product&view_all=1&product_id='+$A(link,'pid'));
		}

		visual.show(m);
	}
	,
	adjust : function()
	{
		var m = $('prodmenu');

		link = m.curr_link;

		if(!link) return;

		var pos = visual.findPos(link);

		var l = pos[0];
		var t = pos[1];
		
		switch($A(link, 'type'))
		{
			case 'title':
				t-=130;
			break;
			case 'img':
				t-=90;
			break;
			case 'box':
				//TODO: IF IT IS A BOX
			break;
		}

		if(l+link.offsetWidth-2+270>visual.windowWidth()) //right-pointing popup
		{
			m.className = "prodmenu pmright";
			l-=253;
		}
		else //left-pointing poppup
		{
			m.className = "prodmenu pmleft";
			l+=link.offsetWidth-2;
		}
		
		m.style.top = t;
		m.style.left = l;
	}
	,
	checkHide : function(e)
	{
		if(!e && event)
			e=event;

		var m = $('prodmenu');
		
		if(!e) return;
		if(!m) return;

		var toel = e.toElement ? e.toElement : e.target ? e.target : e.srcElement;

		if(toel == m || toel.parentNode == m) return;

		par = toel;

		while(par)
		{
			if(par==m || par==m.curr_link)
				return;
			par = par.parentNode;
		}

		prodmenu.hide();
	}
	,
	hide : function()
	{
		var m = $('prodmenu');

		if(!m) return;

		document.onmousedown = m.oldonmousedown;
		m.oldonmousedown = null;

		visual.hide(m);
	}
};