		var TA_in_progress = false;
		var TA_container = document.getElementById('TA_container');

		function TA_roll_right() {
			if(TA_in_progress)
				return false;
			
			//nejdriv nas zajima, co je vlevo a vpravo;
			actualIds = getActualArticleIds();

			leftId = actualIds.left;
			rightId = actualIds.right;
			rightTitle = $('#TA_lab_' + rightId);
			rightContent = $('#TA_content_' + rightId);
			leftTitle = $('#TA_lab_' + leftId);
			leftContent = $('#TA_content_' + leftId);
			
			//a protoze budem soupat doleva, znamena to, ze levy nam zmizi, pravy se posune na levou pozici, a vpravo se objevi nejaky novy;
			//takze nejdriv nas zajima, ktery ze se to objevi;
			//to je ten za pravym levym.
			nextArticleId = TA_arrayGetNext(TA_articleIds, rightId);

			if(!nextArticleId)
				return;
			
			nextTitle = $('#TA_lab_' + nextArticleId);
			nextContent = $('#TA_content_' + nextArticleId);
			
			TA_in_progress = true;


			//2/ nasledne zmiz levy content;
			leftTitle.fadeOut('fast');
			//alert('zmizime levy');
			leftContent.fadeOut('fast', function() {
				//po skryti prave casti provdem co? skryjeme levou.
			
				rightTitle.fadeOut('fast');
				rightContent.fadeOut('fast', function() {
					//po skryti leve casti provedeme co?
					//prehodime levou cast do kontejneru.
					//alert('dame to do kontejnernu');
					TA_move_to_container(leftId);
					
					//prehodime pravy obsah do leva;

					//alert('shiftnem to do kontejnernu');
					TA_shift('rtl', rightId);

					//z kontejneru dame dalsi do praveho boxu.
					//alert('vytahnem z kontejneru');
					TA_move_from_container(nextArticleId, 'right');
				
					//zobrazime novy levy (puvodne pravy) a naretezime zobrazeni noveho praveho;
					rightTitle.fadeIn('fast');
					rightContent.fadeIn('fast', function() {
						//a tady uz jen naretezime zobrazeni toho noveho a na uplny konec zrusime priznak provadeneho posunu;
						nextTitle.fadeIn('fast');
						nextContent.fadeIn('fast', function() {
							TA_in_progress = false;
						}); 
						
					});
				
				});
			}); //po efektnim zmizeni je vhode.
		
		}

		function TA_roll_left() {
			if(TA_in_progress)
				return false;
			
			//nejdriv nas zajima, co je vlevo a vpravo;
			actualIds = getActualArticleIds();

			leftId = actualIds.left;
			rightId = actualIds.right;
			rightTitle = $('#TA_lab_' + rightId);
			rightContent = $('#TA_content_' + rightId);
			leftTitle = $('#TA_lab_' + leftId);
			leftContent = $('#TA_content_' + leftId);
			
			//a protoze budem soupat doprava, znamena to, ze pravy nam zmizi, levy se posune na pravou pozici, a vlevo se objevi nejaky novy;
			//takze nejdriv nas zajima, ktery ze se to objevi;
			//to je ten pred levym.
			prevArticleId = TA_arrayGetPrev(TA_articleIds, leftId);

			if(!prevArticleId)
				return;
			
			prevTitle = $('#TA_lab_' + prevArticleId);
			prevContent = $('#TA_content_' + prevArticleId);
			
			TA_in_progress = true;

			//2/ nasledne zmiz pravy content;
			rightTitle.fadeOut('fast');
			rightContent.fadeOut('fast', function() {
				//po skryti prave  casti provdem co? skryjeme levou.
			
				leftTitle.fadeOut('fast');
				leftContent.fadeOut('fast', function() {
					//prehodime prvaou cast do kontejneru.
					TA_move_to_container(rightId);
					
					//prehodime levvy obsah do prava;
					TA_shift('ltr', leftId);

					//z kontejneru dame dalsi do leveho boxu.
					TA_move_from_container(prevArticleId, 'left');
				
					//zobrazime novy pravy (puvodne levy) a naretezime zobrazeni noveho leveho;
					leftTitle.fadeIn('fast');
					leftContent.fadeIn('fast', function() {
						//a tady uz jen naretezime zobrazeni toho noveho a na uplny konec zrusime priznak provadeneho posunu;
						prevTitle.fadeIn('fast');
						prevContent.fadeIn('fast', function() {
							TA_in_progress = false;
						}); 
						
					});
				
				});
			}); 
		
		}

		function TA_shift(direction, articleId) {
			if(direction == 'ltr') {
				from = 'left';
				to = 'right';
			} else {
				to = 'left';
				from = 'right';
			}
			
			title = $('#TA_lab_'+ articleId);
			content = $('#TA_content_'+ articleId);

			targetDiv = $('#TA_' + to);

			targetDiv.append(title);
			targetDiv.append(content);
		}
		
		function TA_move_to_container(articleId) {
			header = document.getElementById('TA_lab_' + articleId);
			content = document.getElementById('TA_content_' + articleId);
			
			itemId = ('TA_item_' + articleId);

			xitem = document.getElementById(itemId);
			
			xitem.appendChild(header);
			xitem.appendChild(content);
		}

		function TA_move_from_container(articleId, targetSide) {
			targetDiv = $('#TA_' + targetSide);
			
			header = $('#TA_lab_' + articleId);
			content = $('#TA_content_' + articleId);

			targetDiv.append(header);
			targetDiv.append(content);

		}

		function getActualArticleIds() {
			ret = new Array();
			
			//fuj, nasledujici kod by zalouzil ...
			
			ldiv = document.getElementById('TA_left');
			divs = ldiv.getElementsByTagName('div');
			for(i = 0; i < divs.length; i++) {
				div = divs[i];
				if(id = div.id) {
					if(id.substring(0, 11) == 'TA_content_') {
						ret.left = id.substring(11);
						break;
					}
				}
			}
			
			rdiv = document.getElementById('TA_right');
			divs = rdiv.getElementsByTagName('div');
			for(i = 0; i < divs.length; i++) {
				div = divs[i];
				if(id = div.id) {
					if(id.substring(0, 11) == 'TA_content_') {
						ret.right = id.substring(11);
						break;
					}
				}
			}

			return ret;
		}

		function TA_arrayGetNext(arr, start) {
			//1/ najdem pozici startovniho elementu.
			pos = -1;
			for(i = 0; i < arr.length; i++) {
				if(arr[i] == start) {
					pos = i;
					break;
				}
			}

			if(pos == -1)
				return false;

			pos++;
			if(pos >= arr.length)
				return arr[0];
			
			return arr[pos];
		}
		
		function TA_arrayGetPrev(arr, start) {
			//1/ najdem pozici startovniho elementu.
			pos = -1;
			for(i = 0; i < arr.length; i++) {
				if(arr[i] == start) {
					pos = i;
					break;
				}
			}

			if(pos == -1)
				return false;

			pos-=1;
			if(pos < 0)
				return arr[arr.length - 1];
			
			return arr[pos];
		}
