


function CenterDialog() {

	var document_dimensions = document.viewport.getDimensions() ;
	var document_width = document_dimensions.width ;
	var document_height = document_dimensions.height ;
	
	var document_scroll_offsets = document.viewport.getScrollOffsets() ;
	var document_left_scroll = document_scroll_offsets.left ;
	var document_top_scroll	= document_scroll_offsets.top ;
	
	var dialog_dimensions = $('fiche_frame').getDimensions() ;
	var dialog_width	= dialog_dimensions.width ;
	var dialog_height = dialog_dimensions.height ;

		
	var dialog_left = (document_width - dialog_width) * 0.5 ;
	var dialog_top	= (document_height - dialog_height) * 0.5 ;

	dialog_top = (dialog_top > 0) ? dialog_top : 0 ;

//	$('fiche_frame').setStyle({'top':dialog_top+document_top_scroll+'px','left':dialog_left+document_left_scroll+'px'}) ;
	
	Effect.Queues.get('fiche_frame').invoke('cancel');
	new Effect.Move($('fiche_frame'), { x: dialog_left+document_left_scroll, y: dialog_top+document_top_scroll, mode: 'absolute', duration: 0.5, queue: { position: 'end', scope: 'fiche_frame', limit: 1  }});
	


}


function ScrollDialog() {
	CenterDialog() ;
}


function ResizeDialog() {
	$('black_bg').setStyle('height:' + document.documentElement.scrollHeight + 'px') ;
	CenterDialog() ;
}


function CloseDialog() {
	$('black_bg').setStyle('display:none') ;
	$('fiche_frame').setStyle('display:none') ;
}


function ShowDialog(arg_list) {
	$('black_bg').setStyle('display:block') ;
	
}


function currentYPosition() {
	if (self.pageYOffset)
		 return self.pageYOffset;
	if (document.documentElement && document.documentElement.scrollTop)
		return document.documentElement.scrollTop;
	if (document.body.scrollTop)
		 return document.body.scrollTop;
	return 0;
}


function elmYPosition(eID) {
	var elm  = document.getElementById(eID);
	var y    = elm.offsetTop;
	var node = elm;
	while (node.offsetParent && node.offsetParent != document.body) {
		node = node.offsetParent;
		y   += node.offsetTop;
	} return y;
}


function smoothScroll(eID) {
	var startY   = currentYPosition();
	var stopY    = elmYPosition(eID);
	var distance = stopY > startY ? stopY - startY : startY - stopY;
	if (distance < 100) {
		scrollTo(0, stopY); return;
	}
	var speed = Math.round(distance / 100);
	if (speed >= 20) speed = 20;
	var step  = Math.round(distance / 25);
	var leapY = stopY > startY ? startY + step : startY - step;
	var timer = 0;
	if (stopY > startY) {
		for ( var i=startY; i<stopY; i+=step ) {
			setTimeout("window.scrollTo(0, "+leapY+")", timer * speed);
			leapY += step; if (leapY > stopY) leapY = stopY; timer++;
		} return;
	}
	for ( var i=startY; i>stopY; i-=step ) {
		setTimeout("window.scrollTo(0, "+leapY+")", timer * speed);
		leapY -= step; if (leapY < stopY) leapY = stopY; timer++;
	}
}


