/**
 * evil slider
 * volne vykopirovatelny, jen musi byt az za jQuery
 * nastavi se jen par blbosti nahore 
 **/ 
(function($){
	$(document).ready(function(){
		try {
			if ($('.slider .inner').size() && ($('.rests .inner .item').size() > 4)){
				var cfg = {
					oneWid : 230, // sirka jednoho boxu
					time : 500, // cas animace : posun o 1
					autoTime : 5000, // interval automatickeho slidovani
					smer : -1 // -1 je dopredu, 1 je dozadu
				};
				
				var el = {
					container : $('.rests'),
					inner : $('.rests .inner'),
					items : $('.rests .inner .item'),
					mover : {
						left : $('.content .shipka-left'),
						right : $('.content .shipka-right')
					}
				};

				// spocita, kolik se jich vleze vedle sebe
				// zaokrouhlujeme nahoru kvuli potencialnimu marginu
				var countVisibleElems = function(){
					var cnt = el.container.width();
					var one = cfg.oneWid;
					return Math.round(cnt / one);
				};
				
				var visible = countVisibleElems();
				var added = {
					begin : [],
					end : []
				};
				
				// apenduje [visible] prvku zleva i zprava
				// aby slo slidovat do nekonecna
				// nejdriv ty elementy musi spocitat a poukladat
				var appendVisibleElems = function(){
					var total = el.items.size(), newElem;
					el.items.each(function(i){
						var j = i+1;
						if (j <= visible){
							added.end.push($(this).clone());
						} 
						if (j > total-visible) {
							added.begin.push($(this).clone());
						}
					});
					for (i = added.begin.length-1; i >= 0; i--){
						newElem = added.begin[i];
						el.inner.prepend(newElem);
					}
					for (i = 0; i < added.end.length; i++){
						newElem = added.end[i];
						el.inner.append(newElem);
					}
				};
				
				appendVisibleElems();
				
				// pocet prvku ve slideru
				// vygenerovana sirka slideru
				// .size() nespocita to, co jsme tam pripchali :-(
				var origCount = el.items.size();
				var count = el.items.size()+(2*visible);
				var oneWid = cfg.oneWid;
				var wid = count*oneWid;
				
				// vrati pozice prvniho a posledniho objektu
				// vzdy musime odecist ty, ktere jsme pripchali
				var position = {
					first : function(){
						return oneWid*visible;
					},
					last : function(){
						return wid-(oneWid*visible);
					}
				};
				
				// po te, co spocitame absolutni velikost jedne polozky
				// nastavime sirku vnitrku slideru
				// nastavime i dalsi nesmylsy
				el.inner.css({ width : wid });
				el.inner.css({ left : '-'+position.first()+'px' });

				var slidingNow = false;
				var autoSlide = true;
				var autoInterval;
				var isMovingTimeout = null;
				
				var slideIt = function(smer){
					if (slidingNow){
						return false;
					}
					if (!autoSlide){
						clearInterval(autoInterval);
					}
					slidingNow = true;
					var oLeft = el.inner.attr('offsetLeft');
					
					if (smer < 0){
						if ((oLeft*(-1) == position.last()) || (oLeft*(-1)+10 > position.last())){
							var toMove = (visible*oneWid)
							el.inner.css({ left : '-'+toMove+'px' });
							oLeft = el.inner.attr('offsetLeft');
						}
					} else {
						if (oLeft == 0){
							var move = (oneWid*origCount);
							$(el.inner).css({ left : '-'+move+'px' });
							oLeft = el.inner.attr('offsetLeft');
						}
					}
					
					var next = oLeft+(oneWid*smer);

					el.inner.animate({
						left : next+'px'
					}, cfg.time, 'easeOutBack', function(){
						clearTimeout(isMovingTimeout);
						isMovingTimeout = setTimeout(function(){
							slidingNow = false;
						}, 250);
					});
				};
				
				autoInterval = setInterval(function(){
					slideIt(cfg.smer);
				}, cfg.autoTime);

				if (el.mover.right){
					el.mover.right.click(function(){
						autoSlide = false;
						slideIt(-1);
						return false;
					});
				}
				
				if (el.mover.left){
					el.mover.left.click(function(){
						autoSlide = false;
						slideIt(1);
						return false;
					});
				}
			}
		} catch (err){
			if (typeof console != 'undefined'){
				console.log(err);
			} else {
				throw new Error(err);
			}
		}
	});
}(jQuery));
// evil slider konec
