	
$(document).ready(

	function(){
		
		// **************** ATTACH DOCUMENT CLICK HANDLER ******************* //

		$(document).click(
		
			function(){
				
				for(var i=0; i<arrLanguagesObjects.length; i++ ){
	
					if(arrLanguagesObjects[i].id != 'language_'+currentLanguage){//SKIP CURRENT LANGUAGE
						
						if(selectOpened){
						
							//HIDE ALL SELECT OPTIONS BUT THE CURRENT LANGUAGE OPTION
							arrLanguagesObjects[i].style.display = 'none';
							
						}
	
					}
					
				}
				
				//CHANGE SELECT STATE
				selectOpened = false;
			}
		);

		// ****************************************************************** //
		
		var language = 'fr';							//holds the default language
		var acceptedLanguages = ['fr','en','it','ru'];	//holds the accepted languages
		var arrLanguagesObjects = [];					//holds the languages objects (select options)
		var selectOpened = false;						//holds the select state
		var position = null;							//holds the position of the selected option (counting from 0)
		// **************** GET CURRENT LANGUAGE **************** //
		
		var currentLanguage = document.getElementById('current_language').value;
		
		// ****************************************************** //
		
		var languageObject = null;
		
		for(var i=0; i<acceptedLanguages.length; i++){
			
			//GET LANGUAGE OBJECT
			languageObject = document.getElementById('language_'+acceptedLanguages[i]);
			
			if(languageObject != null){
				
				//STORE LANGUAGE OBJECT
				arrLanguagesObjects[i] = languageObject;
				
				// *********** HIDE OTHER SELECT OPTIONS ************* //
				
				if(acceptedLanguages[i] != currentLanguage){
					
					languageObject.style.display = 'none';
				}
				
				// *************************************************** //
			}
			
		}
		
		// *********************** RE-ARRANGE SELECT OPTIONS *********************** //
		// (!) The selected item should be the first element on opening
		
		var selectContainer = document.getElementById('language_select_container');
		var selectChildrens = selectContainer.children;
		
		var firstOption = null;		//holds the first set option in the HTML
		var selectedOption = null;	//holds the selected option
		
		//get first language option
		for(k=0; k < acceptedLanguages.length; k++){
			
			if(selectChildrens[0].id.split('_')[1] == acceptedLanguages[k]){
				
				firstOption = k;
			}
		}
		
		//get currrent selected option
		for(var key in acceptedLanguages){
			
			if(currentLanguage == acceptedLanguages[key]){
				
				selectedOption = key;
			}
		}
		
		//SHIFT CURRENT LANGUAGE SELECT OPTION BEFORE THE FIRST OPTION
		if(selectedOption != firstOption){
			selectContainer.insertBefore(arrLanguagesObjects[selectedOption],arrLanguagesObjects[firstOption]);
		}

		// ************************************************************************* //
		
		//set event handlers
		for(var i=0; i<arrLanguagesObjects.length; i++ ){
			
			// ************************* TOGGLE SELECT ************************** //
			
			arrLanguagesObjects[i].onclick = function(eventObject){

				for(var i=0; i<arrLanguagesObjects.length; i++ ){
	
					if(arrLanguagesObjects[i].id != 'language_'+currentLanguage){//SKIP CURRENT LANGUAGE

						if(selectOpened){
						
							//HIDE ALL SELECT OPTIONS BUT THE CURRENT LANGUAGE OPTION
							arrLanguagesObjects[i].style.display = 'none';
							
						}else{
										
							//DISPLAY ALL SELECT OPTIONS
							arrLanguagesObjects[i].style.display = 'block';
						}
	
					}
					
				}
				
				//CHANGE SELECT STATE
				selectOpened = !selectOpened;
				
				// ********************* STOP BUBBLING ********************* //
				
				if(typeof(window.event) != 'undefined'){
					
					//FOR IE - DOM Level 1
					window.event.cancelBubble = true;
					
				}else{
					
					//FOR BROWSERS - DOM Level 2
					eventObject.stopPropagation();
				}
				
				// ********************************************************* //
				
				if(this.id != 'language_'+currentLanguage){
					
					//get language
					language = this.id.split('_')[1];
					
					//REDIRECT TO CHANGE LANGUAGE
					//window.location.href = JSInterface.localpath+'default/index/index/language/'+language;
					//window.location.href = window.location.href+'?language='+language;
					var adress = new RegExp("^http://www.clickappart.com/index","g"); // a cause de l'onglet qui change sur la home sinon
					if(adress.test(window.location.href) || window.location.href == 'http://www.clickappart.com' || window.location.href == 'http://www.clickappart.com/') {
					window.location.href = 'http://www.clickappart.com/index/index/language/'+language; 
					}
					else if(location.search == '') {
					window.location.href = location.pathname+'?language='+language,
					function(){
				
						//change classes
						$("#view_on_list").removeClass();
						$("#view_on_list").addClass('selected');
						
						$("#view_on_map").removeClass();
						
						//SHOW ORDER BAR
						$("#order_bar").css('display','block');
						
						$("#mapSearchContainer").css('visibility','hidden');
						$("#mapSearchContainer").css('height','0px');
						
						return false;//stop bubbling
					}
					}
					else {
					window.location.href = location.pathname+location.search+'&language='+language; 
					}
					
				}
	
			}
			
			// ****************************************************************** //
			
			arrLanguagesObjects[i].onmouseover = function(){
				
				if(this.id.split('_')[1] != currentLanguage){
					
					this.style.backgroundColor = "#e9e8e8";
				}
				
			}
			
			arrLanguagesObjects[i].onmouseout = function(){
				
				if(this.id.split('_')[1] != currentLanguage){
					
					this.style.backgroundColor = "#fefefe";
				}

			}
			
		}
		
		// **************************** SELECT BUTTON HANDLER **************************** //
		
		document.getElementById('language_select_btn').onclick = function(eventObject){

			for(var i=0; i<arrLanguagesObjects.length; i++ ){

				if(arrLanguagesObjects[i].id != 'language_'+currentLanguage){//SKIP CURRENT LANGUAGE
					
					if(selectOpened){
					
						//HIDE ALL SELECT OPTIONS BUT THE CURRENT LANGUAGE OPTION
						arrLanguagesObjects[i].style.display = 'none';
						
					}else{
									
						//DISPLAY ALL SELECT OPTIONS BUT THE CURRENT LANGUAGE OPTION
						arrLanguagesObjects[i].style.display = 'block';
					}

				}
				
			}
			
			//CHANGE SELECT STATE
			selectOpened = !selectOpened;
			
			// ********************* STOP BUBBLING ********************* //
			
			if(typeof(window.event) != 'undefined'){
				
				//FOR IE - DOM Level 1
				window.event.cancelBubble = true;
				
			}else{
				
				//FOR BROWSERS - DOM Level 2
				eventObject.stopPropagation();
			}
			
			// ********************************************************* //

		}
			
		// ******************************************************************************* //
	}

);


