var LanguageManager = Class.create({

	initialize: function() {
		this.submitD = this.submitData.bindAsEventListener(this);
		this.prevLang = sm.sessionLanguage;
	},

	setEventHandlers: function(sessionLanguage) {
		
		switch (sessionLanguage)
		{
		case 'pl':
			//Event.observe($('flag_pl'), 'click', lm.submitD);
			Event.observe($('flag_en'), 'click', lm.submitD);
			Event.observe($('flag_fr'), 'click', lm.submitD);
			break;
		
		case 'en':
			Event.observe($('flag_pl'), 'click', lm.submitD);	
			//Event.observe($('flag_en'), 'click', lm.submitD);
			Event.observe($('flag_fr'), 'click', lm.submitD);
			break;
			
		case 'fr':
			Event.observe($('flag_pl'), 'click', lm.submitD);
			Event.observe($('flag_en'), 'click', lm.submitD);
			//Event.observe($('flag_fr'), 'click', lm.submitD);
			break;
		}
	},

	unsetEventHandlers: function(sessionLanguage) {
	
		switch (sessionLanguage)
		{
		case 'pl':
			//Event.stopObserving($('flag_pl'), 'click', lm.submitD);
			Event.stopObserving($('flag_en'), 'click', lm.submitD);
			Event.stopObserving($('flag_fr'), 'click', lm.submitD);
			break;
		
		case 'en':
			Event.stopObserving($('flag_pl'), 'click', lm.submitD);
			//Event.stopObserving($('flag_en'), 'click', lm.submitD);
			Event.stopObserving($('flag_fr'), 'click', lm.submitD);
			break;
			
		case 'fr':
			Event.stopObserving($('flag_pl'), 'click', lm.submitD);
			Event.stopObserving($('flag_en'), 'click', lm.submitD);
			//Event.stopObserving($('flag_fr'), 'click', lm.submitD);
			break;
		}	
	},
	
	submitData: function (event) {
		
		Event.stop(event);
		
		lm.unsetEventHandlers(sm.sessionLanguage);
		
		var element = Event.element(event);
		var newLang = element.readAttribute('newLang')
		
		lm.processRequest(newLang);
	},
	
	processRequest: function(newLang) {
	
		new Ajax.Request('php/LanguageProcessor.php', {
			method: 'post',
			parameters: { newLang:newLang },
		
			onCreate: function() {
				
			},
			
			onComplete: function(transport) {
				try {
					var objProcMsg = (transport.responseText).evalJSON(true);

					if (objProcMsg.msgBool) {
						tools.setFunctionHandler(lm.setLanguage)
						lm.prevLang = sm.sessionLanguage;
						sm.getSessionStatus();
						}
					else
						$('msgStatus').update(mm.getStatusMsg('unknownError'));
				}
				catch (error) {
					alert('Script encountered an error: '+error);
				}
			}
		});	
	},

	setLanguage: function() {
		tools.unsetFunctionHandler(lm.setLanguage);
		lm.setEventHandlers(sm.sessionLanguage);
		
		$('boxNavig').childElements().each(
			function(element) 
			{
				var newUrl = lm.makeBackgroundUrl(element.getStyle('background-image'));
				element.style.backgroundImage = newUrl;
			}
		);
		
		$('fundName').style.backgroundImage=lm.makeBackgroundUrl($('fundName').getStyle('background-image'));
		$('confName').style.backgroundImage=lm.makeBackgroundUrl($('confName').getStyle('background-image'));
		
		if (lm.prevLang != sm.sessionLanguage)
			tools.reloadInterface();
	},
	
	makeBackgroundUrl: function(str) {
		re = new RegExp("\/pl\/|\/en\/|\/fr\/|\/xx\/");
		return str.replace(re, '/'+sm.sessionLanguage+'/')
	}
});
