//******************************************************************************
//******************************************************************************
//*** 
//*** main JavaScript document
//*** 
//*** 
//*** 
//*** 
//*** 
//***---------------------------------------------------------------------------
//*** 
//*** (c) 2009 Achim Liese <devel001 [at] achim-liese.de>
//*** 
//******************************************************************************
//******************************************************************************

//******************************************************************************
//******************************************************************************
//*** global constants
//******************************************************************************

var dragslider_initialized       = false;


//******************************************************************************
//******************************************************************************
//*** initialize draggable slider box
//******************************************************************************
function initDragSlider( snlimit, d ){
	
	// di nothing if already initialized
	if ( dragslider_initialized ){
		return;
	}
	
   // init draggable slide box
	$('dragslider_content_box').setStyle('display', 'block');

	var snap_limit                    = snlimit || 15;
	var dragslider_slide_duration     = d || 2000;
	var dragslider_ruler_height       = $('dragslider_ruler').getStyle('height').toInt();
	var dragslider_limit_box_height   = $('dragslider_limit_box').getStyle('height').toInt();
	var dragslider_content_box_resize = $('dragslider_content_box').makeResizable({
		handle: 'dragslider_ruler_handle',
		modifiers:{x: false, y: 'height'},
		limit: { x: false, y:[dragslider_ruler_height + snap_limit, dragslider_limit_box_height - snap_limit]},
//		grid: 10,
		invert: true,
		onDrag: function(el){
			this.oldpos = this.oldpos || 0;
         this.pos = el.getCoordinates().height;
			if ( ( this.pos >= ( dragslider_limit_box_height - snap_limit ) ) && ( this.oldpos < ( dragslider_limit_box_height - snap_limit ) ) ){
				this.stop();
				el.setStyle('height', dragslider_limit_box_height);
				dragSliderRulerSetArrow( 'down' );
			} else if ( ( this.pos <= ( dragslider_ruler_height + snap_limit ) ) && ( this.oldpos > ( dragslider_ruler_height + snap_limit ) ) ){
				this.stop();
				el.setStyle('height', dragslider_ruler_height);
				dragSliderRulerSetArrow( 'up' );
			}
         this.oldpos = this.pos;
		}
	});

	// button effects
	dragSliderRulerSetArrow( 'up' );
//	$$('#dragslider_ruler_open_close.mouseover').setStyle('opacity', button_fade_min);
//	$$('#dragslider_ruler_open_close.mouseover').addEvents({
//		'mouseenter': function(){
//			this.set('tween', {duration: button_fade_duration}).fade('in');
//		},
//		'mouseleave': function(){
//			this.set('tween', {duration: button_fade_duration}).fade( button_fade_min );
//		}
//	});
	
	// slide up/down button
	var fx = new Fx.Tween( 'dragslider_content_box', {
			property:   'height',
			duration:   dragslider_slide_duration,
			transition: Fx.Transitions.Cubic.easeOut
	});
	$('dragslider_ruler_open_close').addEvents({
		'click': function(){
			pos = $('dragslider_content_box').getStyle('height').toInt();
			if ( pos <= dragslider_ruler_height ){
				
				// slide in
				fx.start( dragslider_limit_box_height - snap_limit ).chain(function(){
					$('dragslider_content_box').setStyle('height', dragslider_limit_box_height);
					dragSliderRulerSetArrow( 'down' );
				});
				
			} else {
				
				// slide out
				fx.start( dragslider_ruler_height + snap_limit ).chain(function(){
					$('dragslider_content_box').setStyle('height', dragslider_ruler_height);
					dragSliderRulerSetArrow( 'up' );
				});
			}
		}
	});
	
	
}

//******************************************************************************
//******************************************************************************
//*** switch images of up/down button
//******************************************************************************
function dragSliderRulerSetArrow( dir ){

	if ( dir == 'up' ){
		$$('.dragslider_ruler_open_close').addClass('up_arrow');
		$$('.dragslider_ruler_open_close').removeClass('down_arrow');
	} else {
		$$('.dragslider_ruler_open_close').addClass('down_arrow');
		$$('.dragslider_ruler_open_close').removeClass('up_arrow');
	}
}

