/*
 * Kovos - common UI
 * (c)2006 Petr Krontorad, April-Child.com
 */

var client = {conf:{fry:{backendURL:'/rpost/'}}};

var lastTopCategoryIndex = -1;

$__tune.event.addListener(self, 'load', function(evt)
{
	$foreach ( $().g('div'), function(node)
	{
		if ( 'image' == node.n().substr(0,5) )
		{
			var ix = node.fc().ga('src').indexOf('top-kategorie');
			node.w(node.fc().w()+(-1!=ix?16:0)).z(10);
		}
	});
	var ul = $('product-navigation');
	if ( null == ul )
	{
		return;
	}
	var lastTopIndex = -1;
	// [note to seo lamas]: navigation morphing, original links are correct, without any JavaScript, we'll add'em during post-load phase ...
	$foreach ( ul.g('li'), function(li, i)
	{
		if ( 'l1' == li.n().substr(0,2) )
		{
			if ( '1' == li.ga('access') )
			{
				return;
			}
			li.sa('href', li.g('a:0').$.href);
			li.g('a:0').$.href='javascript:showTopCategory(?)'.embed(i);
			lastTopIndex = i;
			if ( -1 != li.n().indexOf('selected') )
			{
				lastTopCategoryIndex = i;
			}
		}
		else
		{
			if ( -1 != li.n().indexOf('selected') )
			{
				lastTopCategoryIndex = lastTopIndex;
			}
			li.sa('href', li.g('a:0').$.href);
//			li.g('a:0').$.href='javascript:showCategory(?)'.embed(i);
		}
	});
	// pagers
	morphHeading();
	morphPager('campaign');
	morphPager('news');
});

var morphHeadLst = [];
var morphHeadThread = null;

function morphHeading()
{
	if ( morphing )
	{
		var h1 = $('h1-image');
		var pos = h1.abspos();
		var h1_1 = $().a($$()).w(900).h(181);
		h1_1.pos(true).x(pos.x).y(pos.y);
		h1_1.s('cursor:hand;background-image:url(/mm/i/horni-kolaze/??.jpg)'.embed(morphingPrefix, morphActual));
		var h1_2 = $().a(h1_1.dup());
		h1_1.e('click', function(evt){clearInterval(morphHeadThread);top.location.href=h1.p().$.href;});
		h1_2.v(false);
		h1.v(false);

		for ( var i=1; i<4; i++ )
		{
			morphHeadLst.push(new Image(900,181,'/mm/i/horni-kolaze/'+morphingPrefix+i+'.jpg'));
		}
		morphHeadThread = setInterval(function()
		{
			if ( 4 == ++morphActual )
			{
				morphActual = 1;
			}
			h1_2.s('background-image:url(/mm/i/horni-kolaze/??.jpg)'.embed(morphingPrefix, morphActual));
			h1_2.v(true).o(0);
			var num_steps = 12;
			$runinterval(1, num_steps, 60, function(step)
			{
				h1_1.o((num_steps-step)/num_steps);
				h1_2.o(step/num_steps);
				if ( num_steps == step )
				{
					h1_1.s('background-image:url(/mm/i/horni-kolaze/??.jpg)'.embed(morphingPrefix, morphActual)).o(1.0);
					h1_2.v(false);
				}
			})
		}, 10000);
	}
}

function morphPager(name)
{
	if ( $__tune.isIE )
	{
		//return;
	}
	var node = $('?-pager'.embed(name));
	if ( null != node )
	{
		$foreach ( node.g('a'), function(a)
		{
			a.$.href="javascript:showPage('?','?')".embed(name,a.$.href);
		});
	}	
}

var currentInnerPage = {news:{p:1, status:false, origWidth:0, uri:''}, campaign:{p:1, status:false, origWidth:0, uri:''}};

function showPage(pagerName, url)
{
	var u = url.split('/');
	var page = u[u.length-1];
	var loadContent = function(callback)
	{
		$rpost(
			{
				a:'load_inner_page',
				page_uri:'/?'.embed(u[u.length-2]),
				params:page,
				locale:locale
			},
			function(r)
			{
				callback(r.substring(r.indexOf('<body>')+6, r.lastIndexOf('</body>')-7));
			},
			function(e)
			{
			}
		);
	}
	
	if ( 'news' == pagerName || 'campaign' == pagerName )
	{
		var render = function()
		{
			var area_width = currentInnerPage[pagerName].origWidth;
			var calcOffset = function(forPage)
			{
				return Math.min((forPage - 1)*(area_width+8) - (1 == forPage ? 0 : 0), area_node.fc().w() - 496 - 16);
			}
			page = parseInt(page);
			var area_node = $(pagerName).p();
			
			var ndx = calcOffset(page);
			var odx = calcOffset(currentInnerPage[pagerName].p);
			
			var dx = ndx - odx;
			var steps = [];
			var i = 0;
			var max_steps = 20;

			while ( max_steps > i++ && 1 < Math.abs(dx) )
			{
				steps.push(ndx - odx - dx);
				dx = Math.floor(dx/4);
			}
			$runinterval(0, steps.length, 100, function(step)
			{
				area_node.$.scrollLeft = (steps.length == step) ? ndx : (odx + steps[step]);
			})
			
			currentInnerPage[pagerName].p = page;
			var pager_node = $(pagerName+'-pager');
			var lst = pager_node.g('a');
			var num_a = lst.length;
			$foreach ( lst, function(a, i)
			{
				if ( 0 == i )
				{
					if ( 1 == page )
					{
						a.d(false);
					}
					else
					{
						a.s('display:inline');
						a.t(dict.pager_prev);
						a.$.href = currentInnerPage[pagerName].uri + (page-1) + "')";						
					}
				}
				else if ( num_a == i+1 )
				{
					if ( i-1 == page )
					{
						a.d(false);
					}
					else
					{
						a.s('display:inline');
						a.t(dict.pager_next);
						a.$.href = currentInnerPage[pagerName].uri + (page+1) + "')";
					}
				}
				else
				{
					a.t(i);					
					if ( page == i )
					{
						a.$.href = '#';
						a.n('inactive');
						a.s('text-decoration:none;font-weight:normal');
					}
					else
					{
						a.n('active');
						a.$.href = currentInnerPage[pagerName].uri + (i) + "')";
						a.s('text-decoration:underline;font-weight:bold');
					}
				}
			});
		}
		if ( !currentInnerPage[pagerName].status )
		{
			// first load
			loadContent( function(r)
			{
				r = r.replace(/id="campaign/g, 'id="l-campaign');
				r = r.replace(/id="news/g, 'id="l-news');
				var loaded_node = $().a($$()).v(false).t(r).pos(true).x(-10000).y(-10000);
				currentInnerPage[pagerName].status = true;
				// parsing acquired preview nodes
				var area_node = $(pagerName);
				currentInnerPage[pagerName].origWidth = 496;//area_node.w() - 16;
				var pos = area_node.abspos();
				area_node.p().ib($$().w(currentInnerPage[pagerName].origWidth).h(area_node.h()), area_node).s('overflow:hidden;position:relative;left:-8px;padding-left:8px').a(area_node);
				area_node.fc().rs();
				var tr = $(pagerName).a($$('tbody')).a($$('tr'));
				$foreach ( loaded_node.g('td'), function(td)
				{
					if ( td.fc() && 'preview' == td.fc().n() )
					{
						tr.a(td);
					}
				});
				var pager_node = $(pagerName+'-pager');
				pager_node.ib(pager_node.fc().ns().dup(), pager_node.fc());
				pager_node.fc().ns().rs();
				pager_node.ib(pager_node.fc().ns().dup(), pager_node.fc()).t(dict.pager_prev);
				
				currentInnerPage[pagerName].uri = pager_node.fc().$.href.substring(0, pager_node.fc().$.href.lastIndexOf('/')+1);
				render();
			});
		}
		else
		{
			render();
		}
	}
	else if ( 'top-category' == pagerName )
	{
		loadContent( function(r)
		{
			var loaded_node = $().a($$()).v(false).t(r);
			if ( null != $('l-top-category') )
			{
				$('content').t($('l-top-category').t());					
			}
			if ( null != $('main-navigation') )
			{
				$('main-navigation').rs();
			}
			loaded_node.rs();
		})
	}
}

function showConfirmation(msg)
{
	var pinf = fry.ui.info.page;	
	var scroll = {left:$__tune.isGecko ? document.documentElement.scrollLeft : document.body.scrollLeft, top:$__tune.isGecko ? document.documentElement.scrollTop : document.body.scrollTop};
	
	var w = 450;
	var h = 350;
	var x = Math.floor((pinf.width-w)/2);
	var y = Math.floor((pinf.height-h)/2);
	var node = $().a($$()).pos(true).x(x).y(y+(scroll.top)).s('font-size:50px;text-align:center;background:#444;padding:100px').w(w-200).h(h-200).t(msg).o(0.6);
	$runafter(1000, function()
	{
		node.rs();
	});
	
}

function addToFavorites(code)
{
	$rpost(
		{
			a:'add_to_favorites',
			code:code
		},
		function()
		{
			showConfirmation('?<br/><strong>?</strong>'.embed(dict.fav_add, code));
		},
		function(e)
		{
		}
	)
}


function addToOrder(code)
{
	$rpost(
		{
			a:'add_to_order',
			code:code
		},
		function()
		{
			showConfirmation('?<br/><strong>?</strong>'.embed(dict.order_add, code));
		},
		function(e)
		{
		}
	)
}

function removeFromFavorites(code, node)
{
	$rpost(
		{
			a:'remove_from_favorites',
			code:code
		},
		function()
		{
			node.rs();
			showConfirmation('?<br/><strong>?</strong>'.embed(dict.fav_rem, code));
		},
		function(e)
		{
		}
	)	
}

function removeFromOrder(orderId, productId, node)
{
	$rpost(
		{
			a:'remove_from_order',
			code:code
		},
		function()
		{
			node.rs();
			showConfirmation('?<br/><strong>?</strong>'.embed(dict.order_rem, code));
		},
		function(e)
		{
		}
	)	
}

function updateQuantity(orderId, productId, quantity, node)
{
	$rpost(
		{
			a:'update_order_quantity',
			order_id:orderId,
			product_id:productId,
			quantity:quantity
		},
		function()
		{
			var href = self.location.href;
			self.location.href = href;
		},
		function(e)
		{
//			node.$.value = quantity;
		}
	);
}
function showFavorites()
{
	if ( null != $('fav-popup') )
	{
		$('fav-popup').rs();
		return;
	}
	var node = $().a($$()).i('fav-popup').n('popup-favorites').e('click', function(evt)
	{
		node.rs();			
	});
	var ref_node = $('favorites');
	var pos = ref_node.abspos();
	node.pos(true).x(pos.x-1).y(pos.y+ref_node.h()).o(0.94);
	node.t('<img src="/mm/i/theme/apple/loading-big.black.gif" width="26" height="25"/>');
	$rpost(
		{
			a:'load_favorites',
			locale:locale
		},
		function(products)
		{
			var tbody = node.t('').a($$('table')).n('favorites').sa('cellSpacing',0).a($$('tbody'));
			$foreach (products, function(product)
			{
				var tr = tbody.a($$('tr'));
				tr.a($$('td')).t('<a href="?/?"><img height="39" src="/mm/i/produkty/nahledy/?"/></a>'.embed(dict.uri_product, product.uri_seo, product.image_url));
				tr.a($$('td')).sa('width', '80%').t('<strong>?</strong><br/>?'.embed(product.code, 1==product['has-price']?(product.price+',- ?'.embed('cs'==locale?'Kč':'&euro;')):'' ));
				tr.a($$('td')).sa('vAlign', 'top').t('<img src="/mm/i/admin/close.gif"/>').e('click', function(evt)
				{
					evt.stop();
					removeFromFavorites(product.code, tr);
				});
			});
		},
		function(e)
		{
			node.rs();
//			node.at(e);
		}
	);
}

function showTopCategory(index)
{
	var li = $('product-navigation').g('li:?'.embed(index));
	if ( null == li )
	{
		return;
	}
	if ( index == lastTopCategoryIndex )
	{
		self.location.href = li.ga('href');
		return;
	}
	else
	{
		showPage('top-category', li.ga('href'));		
	}
	var caller = this;
	var render = function(liNode, direction, callLastStep)
	{
		var lst = liNode.g('li');
		if ( !lst )
		{
			return;
		}
		var ul = liNode.g('ul:0');
		if ( 1 == direction )
		{
			$foreach ( lst, function(node)
			{
				node.d(false);
			});
			ul.d(true);
		}
		var num = Math.ceil(lst.length/3);
		var origLastIndex = lastTopCategoryIndex;
		$runinterval(1, num+1, 50, function(counter)
		{
			var opacity = counter/num;
			ul.o(1==direction ? opacity : (1-opacity));
			if (  num < counter )
			{
				ul.o( 1 == direction ? 1.0 : 0);
				if ( 1 == direction && origLastIndex == lastTopCategoryIndex )
				{
					lastTopCategoryIndex = index;			
				}
				if ( 0 == direction )
				{
					ul.d(false);
				}
				if ( callLastStep )
				{
					callLastStep();					
				}
				return;
			}
			for ( var i=0; i<3; i++ )
			{
				var node = lst.pop();
				if ( node )
				{
					node.d(1==direction);					
				}
			}
		});
	}
	if ( -1 != lastTopCategoryIndex )
	{
		var prev_li = $('product-navigation').g('li:?'.embed(lastTopCategoryIndex));
		var pos = prev_li.abspos();
		var cnode = $().a($$()).h(prev_li.h()+pos.y+200).w(1);
		render(prev_li, 0, function()
		{
			render(li, 1);
			cnode.rs();
		})
	}
	else
	{
		render(li, 1);		
	}
}