var patternList = {
	//-------------------------------------------------------------------------
	// contenct block
	'\\[\\['	:	'<div class="content_block">',
	'\\]\\]'	:	'</div>',
	// ----------------------------------------------------------------------------
	// list	
	'^(\\s*)(\\|)([^|]*){1}(\\s*)$'	:	'<li>$3</li>',
	//-------------------------------------------------------------------------
	// paragraphs
	'==R>'  :  	'<p style="text-align:right">',
	'==C>'  :  	'<p style="text-align:center">',
	'==L>'  :  	'<p style="text-align:left">',
	'==>'   :  	'<p>',
	'<=='   :  	'</p>',
	//-------------------------------------------------------------------------
	// general formatting	
	'~'		:	'&shy;',
	'__'	:	'<br/>',
	'---'	:	'<hr/>',
	'(>|\\s|^)\\*([^\\*]+)\\*(<|\\s|$)'	:	'$1<em>$2</em>$3',
	'(>|\\s|^)_([^_]+)_(<|\\s|$)'		:	'$1<cite>$2</cite>$3',
	//-------------------------------------------------------------------------
	// images
	'\\(image_?([^\\s_]*)\\)\\(([^\\s\\)]*)\\)'	: '<img class="$1" src="$2" />',
	'\\(labelled_image_?([^\\s]*)\\)\\(([^\\s\\)]*)\\)\\(([^\\)]*)\\)' : '<div class="labelled $1"><img class="labelled_$1" src="$2" />$3</div>',
	// ----------------------------------------------------------------------------
	// hyperlinks
	// workaround for labelled image links
	'\\((<div class=\"labelled.*)(<img.*>)(.*)(</div>)\\)\\->\\(([^\\s\\(\\)]+)\\)'	:	'$1<a href="$5">$2$3</a>$4',
	// regular hyperlinks
	'\\(([^\\(\\)]+)\\)\\->\\(([^\\s\\(\\)]+)\\)' 	: 	'<a href="$2">$1</a>',
	'\\(([^\\(\\)]+)\\)\\^\\(([^\\s\\(\\)]+)\\)'	:	'<a href="$2" target="_blank">$1</a>',
	// ----------------------------------------------------------------------------
	// headers	
	'^(\\s*)(=){1}([^=].*[^=])(=){1}(\\s*)$'	:	'<h1>$3</h1>',
	'^(\\s*)(=){2}([^=].*[^=])(=){2}(\\s*)$' 	: 	'<h2>$3</h2>',
	'^(\\s*)(=){3}([^=].*[^=])(=){3}(\\s*)$' 	: 	'<h3>$3</h3>',
	'^(\\s*)(=){4}([^=].*[^=])(=){4}(\\s*)$' 	: 	'<h4>$3</h4>'
};
	
$(function() {	
	window.setInterval(function () {		
		if (this.location.hash != this.lastHash)
		{			
			this.lastHash = this.location.hash;				
			this.hashToArray = function (hash){
				
				// remove leading # as well trailing ; if present
				hash = hash.substr(hash.length - 1) == ";" ? hash.substr(1, hash.length - 1) : hash.substr(1);

				var params = new Array();
				var paramsTemp = hash.split(";");

				for (var i in paramsTemp) {
					var splitInTwo = paramsTemp[i].split("=");		
					params[splitInTwo[0]] = splitInTwo[1];	
				}
				return params;				
			};
			
			var params = this.hashToArray(this.lastHash);	
			
			if (this.lang == undefined || params.setlang) {
				if (params.setlang) {
					this.lang = params.setlang;
				} 
				else {
					//browser/user language detection
					this.lang = params.setlang?params.setlang:navigator.language?navigator.language:navigator.userLanguage;
					// matching language strings and setting
					this.lang = this.lang.match(/hu/)?"hu":(this.lang.match(/de/)?"de":"en");				
				}
				
				$('a.active_language').removeClass('active_language');
				$('#lang_'+this.lang).addClass('active_language');
				
				$.getJSON('./js/labels/'+this.lang+'.json', function(labels){ 
					$('a.side_menu_item').each(function(){
						$(this).animate({opacity: 'toggle'}, 400, function() {
							$(this).text(labels[$(this).attr('id')]);
							$(this).animate({opacity: 'toggle'}, 400);
						});
					});
				});				
			}
			
			if (params.show) {				
				this.loadedContent = params.show;
			}
			
		
			$.get(
				'./content/'+ this.loadedContent + '/' + this.lang + '.txt', 
				function(content) {
					var regexp;
					var replacement;
					var content2;
					
					for (var i in patternList) {
						content2=content;
						do { 			
							regexp = new RegExp(i, 'gm');
							content=content2;
							content2=content.replace(regexp, patternList[i]);
						} while (content2 !=content);
					}

					$('#jquery-lightbox').remove();					
					$('#jquery-overlay').fadeOut("slow", function() { $('#jquery-overlay').remove(); });
					// Show some elements to avoid conflict with overlay in IE. These elements appear above the overlay.
					$('embed, object, select').css({ 'visibility' : 'visible' });
					
					$('#content_container').animate({opacity: 0.01}, 400, function(){
						$('#content_container').html(content2)
						$('img').parent('a[target!="_blank"]').not('.language_flag').lightBox({
							overlayBgColor: 'saddlebrown',
							overlayOpacity: 0.9,
							imageLoading: 'images/loader.gif',
							imageBtnClose: 'images/close.jpg',
							imageBtnPrev: 'images/prev.jpg',
							imageBtnNext: 'images/next.jpg',
							txtImage: '',
							txtOf: '/'
						});
					});
					$('#content_container').animate({opacity: 1}, 400);
				}
			);
				
		}
			
	}, 100);
	

	
	
	if (window.location.hash == "") {
		window.location.hash = "#show=updates;";
	}
	
});
