/* 
### General functions & Classes ###
*/

/*+++++++++++++++++++++++++
    display default value in input field
+++++++++++++++++++++++++*/
function dV(obj,val){
	obj.value = (obj.value==val)? '':(obj.value=='')? val:obj.value;
}


/*+++++++++++++++++++++++++
    initialisation
+++++++++++++++++++++++++*/
$(window).ready(function(){
		
	/*+++++++++++++++++++++++++
    	toggling teasers
	+++++++++++++++++++++++++*/
	
	/* alter the toggle function -> no animated width */
	jQuery.fn.extend({
		toggle: function( fn, fn2 ){
			return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
				this._toggle.apply( this, arguments ) :
				fn ?
					this.animate({
						height: "toggle", opacity: "toggle"
					}, fn, fn2) :
					this.each(function(){
						jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
					});
		}
	});
	
	/* smooth scrolling links */
	$.localScroll();
	
	toggleClassExpand = function(element){
		element.toggleClass('active');
	}
	
	$('.cntExpand').each(function(){
		$(this).css({
			display:'none'
		})
	});
	$('.cntExpandActive').each(function(){
		$(this).css({
			display:'block'
		})
	});
	
	if(location.href.match(/emactive=c(\d+)/i)){
		var cntExpandObj = $('#c'+RegExp.$1).next();
		cntExpandObj.find('div.cntExpand').toggle(500, toggleClassExpand(cntExpandObj.find('a.toggle')));
	};

	$('a.toggle').click(function(event) {
		event.preventDefault();
		$(this).next().toggle(500, toggleClassExpand($(this)));
    });
	
	/*+++++++++++++++++++++++++
    	print link
	+++++++++++++++++++++++++*/
	$('li.print a').click(function(event) {
		event.preventDefault();
		window.print();
    });
    
    /*+++++++++++++++++++++++++
    	date picker
	+++++++++++++++++++++++++*/
	var updateSelects = function (selectedDate) {
		var selectedDate = new Date(selectedDate);
		$('#zeitraum_von_d option[value=' + selectedDate.getDate() + ']').attr('selected', 'selected');
		$('#zeitraum_von_m option[value=' + (selectedDate.getMonth()+1) + ']').attr('selected', 'selected');
		$('#zeitraum_von_y option[value=' + (selectedDate.getFullYear()) + ']').attr('selected', 'selected');
	}
    var updateSelects2 = function (selectedDate) {
		var selectedDate = new Date(selectedDate);
		$('#zeitraum_bis_d option[value=' + selectedDate.getDate() + ']').attr('selected', 'selected');
		$('#zeitraum_bis_m option[value=' + (selectedDate.getMonth()+1) + ']').attr('selected', 'selected');
		$('#zeitraum_bis_y option[value=' + (selectedDate.getFullYear()) + ']').attr('selected', 'selected');
	}
	
	$('#date-pick1')
		.datePicker({
            createButton:false,
            startDate:'01/01/2005',
            endDate:'31/12/2015'
        }).bind(
			// when the link is clicked display the date picker
			'click',
			function(){
				updateSelects($(this).dpGetSelected()[0]);
				$(this).dpDisplay();
				return false;
			}).bind(
			// when a date is selected update the SELECTs
			'dateSelected',
			function(e, selectedDate, $td, state)
			{
				updateSelects(selectedDate);
				var d2 = new Date(
                    $('#zeitraum_bis_y').val(),
                    $('#zeitraum_bis_m').val()-1,
                    $('#zeitraum_bis_d').val()
                );
                if(selectedDate>d2){
				    updateSelects2(selectedDate);
				    $('#date-pick2').dpSetSelected(selectedDate.asString());
				}
				$('#date-pick2').dpSetStartDate(selectedDate.addDays(1).asString());
			}
		).bind(
			'dpClosed',
			function(e, selected)
			{
				updateSelects(selected[0]);
			}
		);
		
	
	// listen for when the selects are changed and update the picker
	$('#zeitraum_von_d, #zeitraum_von_m, #zeitraum_von_y')
		.bind(
			'change',
			function()
			{
				var d = new Date(
							$('#zeitraum_von_y').val(),
							$('#zeitraum_von_m').val()-1,
							$('#zeitraum_von_d').val()
						);
				var d2 = new Date(
							$('#zeitraum_bis_y').val(),
							$('#zeitraum_bis_m').val()-1,
							$('#zeitraum_bis_d').val()
						);
				if(d>d2){
				    updateSelects2(d);
				}
				$('#date-pick2').dpSetStartDate(d.addDays(1).asString());
				$('#date-pick1').dpSetSelected(d.asString());
			}
		);
	
	// default the position of the selects to today
	var today = new Date();
	updateSelects(today.getTime());
	
	// and update the datePicker to reflect it...
	$('#zeitraum_von_d').trigger('change');
	
	
	$('#date-pick2')
		.datePicker({
            createButton:false,
            startDate:'01/01/2005',
            endDate:'31/12/2015'
        }).bind(
			// when the link is clicked display the date picker
			'click',
			function(){
				updateSelects2($(this).dpGetSelected()[0]);
				$(this).dpDisplay();
				return false;
			}).bind(
			// when a date is selected update the SELECTs
			'dateSelected',
			function(e, selectedDate, $td, state)
			{
				updateSelects2(selectedDate);
				var d = new Date(
                    $('#zeitraum_von_y').val(),
                    $('#zeitraum_von_m').val()-1,
                    $('#zeitraum_von_d').val()
                );
                if(selectedDate<d){
				    updateSelects(selectedDate);
				    $('#date-pick1').dpSetSelected(selectedDate.asString());
				}
			}
		).bind(
			'dpClosed',
			function(e, selected)
			{
				updateSelects2(selected[0]);
			}
		);
		

	// listen for when the selects are changed and update the picker
	$('#zeitraum_bis_d, #zeitraum_bis_m, #zeitraum_bis_y')
		.bind(
			'change',
			function()
			{
				var d = new Date(
							$('#zeitraum_bis_y').val(),
							$('#zeitraum_bis_m').val()-1,
							$('#zeitraum_bis_d').val()
						);
				$('#date-pick2').dpSetSelected(d.asString());
			}
		);
	
	// default the position of the selects to today
	var today = new Date();
	updateSelects2(today.getTime());
	
	// and update the datePicker to reflect it...
	$('#zeitraum_bis_d').trigger('change');
    
    /*+++++++++++++++++++++++++
    	tooltip
	+++++++++++++++++++++++++*/
	// create custom animation algorithm for jQuery called "bouncy" 
    $.easing.bouncy = function (x, t, b, c, d) { 
        var s = 1.70158; 
        if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; 
        return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; 
    } 
 
    // create custom tooltip effect for jQuery Tooltip 
    $.tools.tooltip.addEffect("bouncy", 
        
        // opening animation 
        function(done) { 
            this.getTip().animate({top: '+=15'}, 500, 'bouncy', done).show(); 
        }, 
     
        // closing animation 
        function(done) { 
            this.getTip().animate({top: '-=15'}, 500, 'bouncy', function()  { 
                $(this).hide(); 
                done.call(); 
            }); 
        } 
    );


	$('a.tooltip').tooltip({tip: '#cntTooltip', effect: 'bouncy', position: "top right", });
});


