/* Author:
	Thomas Helmrich <th@develth.com>
*/

(function($){
	
	$.fn.indexCitySelect = function( options ) {  

	    // Create some defaults, extending them with any options that were provided
	    var settings = $.extend({
	    	citySelectAnimation: false, 
			cityLoadedWeather: false,
			cityLoadedWohnheim: false,
			cityLoadedMensaplan: false,
			cityLoadedQuicklinks: false
	    }, options);

	    return this.each(function() {        
	    	
	    	$(this).click(function(){
	    		// City got selected
	    		$('.cityselect .cities .city').removeClass('selected');
	    		$(this).addClass('selected');
	    		var selectedCity = $(this).data('city');
	    		$.fn.indexCitySelectShowCity(selectedCity);
	    	});
	    	
	    	$.fn.indexCitySelectShowCityFromCookie = function(selectedCity){
	    		$('.cityselect .cities .city').removeClass('selected');
	    		$('.cityselect .cities .city[data-city="'+selectedCity+'"]').addClass('selected');
	    		$.fn.indexCitySelectShowCity(selectedCity);
	    	}
	    	
	    	$.fn.indexCitySelectShowCity = function(selectedCity){
	    		
	    		$.cookie('swerkcityselect', selectedCity); // set cookie
	    		
	    		// reset all loaded options
	    		settings = {
	    			citySelectAnimation: false, 
	    			cityLoadedWeather: false,
	    			cityLoadedWohnheim: false,
	    			cityLoadedMensaplan: false,
	    			cityLoadedQuicklinks: false
	    		};
	    		// set the default cityselect label
	    		if($('.cityselect div.label').data('orgtext') == undefined){
	    			$('.cityselect div.label').data('orgtext', $('.cityselect div.label').text());
	    		}
	    		$('.cityselect .cities .city').stop().animate({left:'1000px'},300);
	    		
	    		$('.cityselect div.label').text($('.cityselect .cities .city.selected').text());
	    		
	    		$( "#main .left .cityselect div.arrow" ).stop().switchClass( "arrow", "arrowdown", 300, function(){
	    			$(this).animate({
	    				left: '161px'
	    			}, 300, function(){
	    				// City Selected READY
	    				settings.citySelectAnimation = true;
	    				$.fn.indexCitySelectReady();
	    				$('.cityselect .arrowdown').click($.fn.indexCitySelectClickArrow);
	    				$('#main .middle, #main .right').stop().animate({
	        				marginTop: 0
	        			}, 300, function(){
	        				$(this).removeClass('nocity');
	        			});
	    			});
	    		});
	    		// get weather data
	    		//alert(selectedCity);
	    		$.post($('#sih_weather').data('link'), {'tx_thweather_pi1[staedte]': selectedCity}, function(data){
	    			if($('#cityselected .left div').hasClass('tx-th-weather'))
	    				$('#cityselected .left div').replaceWith(data);
	    			else
	    				$('#cityselected .left').append(data);
	    			
	    			settings.cityLoadedWeather = true;
	    			$.fn.indexCitySelectReady();
	    		});
	    		// get wohnheim data
	    		$.post($('#sih_wohnheime').data('link'), {'tx_thwohnheime_pi1[staedte]': selectedCity}, function(data){
	    			if($('#cityselected .middle div').hasClass('tx-th-wohnheime')){
	    				//alert('already set');
	    				$('#cityselected .middle div').replaceWith(data);
	    			}else{
	    				$('#cityselected .middle').append(data);
	    			}
	    			settings.cityLoadedWohnheim = true;
	    			$.fn.indexCitySelectReady();
	    		});
	    		// get mensaplandata
	    		$.post($('#sih_mensamenu').data('link'), {'tx_thmensamenu_pi1[staedte]': selectedCity}, function(data){
	    			if($('#cityselected .right div').hasClass('tx-th-mensamenu'))
	    				$('#cityselected .right div').replaceWith(data);
	    			else
	    				$('#cityselected .right').append(data);
	    			
	    			settings.cityLoadedMensaplan = true;
	    			$.fn.indexCitySelectReady();
	    		});
	    		// get quicklinks
	    		$.post($('#sih_cityquicklinks').data('link'), {'tx_thcityquicklinks_pi1[generalcityid]': selectedCity}, function(data){
    				$('#quicklinks ul').replaceWith(data);
	    		});
	    	}
	    	

	    	/* city select startpage*/
	    	$.fn.indexCitySelectClickArrow = function(){
	    		// build it back
	    		$('#cityselected').stop().hide('slide', {'direction': 'up'});
	    		$.cookie('swerkcityselect', null); // delete cookie
	    		
	    		// get default quicklinks
	    		$.post($('#sih_cityquicklinks').data('link'), {'tx_thcityquicklinks_pi1[generalcityid]': 0}, function(data){
    				$('#quicklinks ul').replaceWith(data);
	    		});
	    		$('#main .middle, #main .right').stop().animate({
	    			marginTop: '56px'
	    		}, 300, function(){
	    			$(this).addClass('nocity');
	    			$('.cityselect .cities .city').stop().animate({left: '0'},	300);
	    			$( "#main .left .cityselect div.arrowdown" ).stop().switchClass( "arrowdown", "arrow", 300, function(){
	    				$(this).animate({
	    					left: '222px'
	    				}, 300, function(){
	    					// City Unselected READY
	    					$('.cityselect div.label').text($('.cityselect div.label').data('orgtext'));
	    				});
	    			});
	    		});
	    	}
	    	
	    	$.fn.indexCitySelectReady = function(){
	    		if(settings.citySelectAnimation && settings.cityLoadedWeather && settings.cityLoadedWohnheim && settings.cityLoadedMensaplan){
	    			// show the cityselection
	    			$('#cityselected').stop().show('slide', {'direction': 'up'});
	    		}
	    	}
	    	

	    });
	}
	
})(jQuery);
