







function url_confirm(url)
{
  if(confirm('Sicher dass du da klicken wolltest?')) document.location.href=url;
  return false;
}




function opacity(id, opacStart, opacEnd, millisec) {
	opacity_fps(id, opacStart, opacEnd, millisec);
}

function dummy_opa() {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			i--;
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			i++;
            timer++;
        }
    }
}


function opacity_fps(id, opacStart, opacEnd, millisec) {
	var deffps = 20;
	var minframetime = millisec / (Math.abs(opacEnd - opacStart));
	var fps = 1000 / minframetime;
	if(fps > deffps) fps = deffps;
	var frametime = 1000 / fps;
	var dx = (opacEnd - opacStart) / millisec;
	var end = Math.round(millisec / frametime);
	var opac = lopac = -1;
    for(i = 0; i <= end; i++) {
		opac = (i == end) ? opacEnd : Math.round( opacStart + i*dx*frametime );
	    setTimeout("changeOpac(" + opac + ",'" + id + "')",Math.round(i * frametime));
		//document.write('i: '+i+' dx: '+dx+' fps: '+fps+' opac: '+opac+' time: '+(i*frametime)+'<br />\r\n');
	}
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
	if(opacity == 100) {
		object.opacity = '';
		object.MozOpacity = '';
		object.KhtmlOpacity = '';
		object.filter = '';
	}
}









/**
 *
 * @access public
 * @return void
 **/
var scrollTimer = 0;

/**
 *
 * @access public
 * @return void
 **/
function scroll_init(ObjFrame){
	ObjF = document.getElementById(ObjFrame);
	ObjF.style.overflow = 'hidden';
}

function scroll_start(ObjFrame,ObjHeight,ObjMove,Direction){
	ObjF = document.getElementById(ObjFrame);
	ObjH = document.getElementById(ObjHeight);
	ObjM = document.getElementById(ObjMove);

	ContentHeight = ObjH.clientHeight;
	FrameHeight = ObjF.clientHeight;
	Position = ObjM.offsetTop;

	/*alert(ContentHeight);
	alert(FrameHeight);
	alert(Position); */

	if (Direction>0) {
		if(Position > (ContentHeight-FrameHeight)*-1) {
			Position = Position-Direction;
		}
	}
	if (Direction<0) {
		if(Position < 0) {
			Position = Position-Direction;
		}
	}

	ObjM.style.top = Position + 'px';

	if(!scrollTimer) scrollTimer = setInterval('scroll_start(\''+ObjFrame+'\',\''+ObjHeight+'\',\''+ObjMove+'\',\''+Direction+'\');',10);

}

/**
 *
 * @access public
 * @return void
 **/
function scroll_stop(){
	if(scrollTimer) {
		clearInterval(scrollTimer);
		scrollTimer = 0;
	}
}



/**
 *
 * @access public
 * @return void
 **/
function QuadratScrollKoeff(Steps){
	Koeff = new Array();
	Schwelle = Steps/2;
	for (i=0; i<Steps-1; i++) {
		if (i<=Schwelle) {
			Koeff[i] = (i/Schwelle)*(i/Schwelle)*0.5;
		} else {
			Koeff[i-1] = 1-Koeff[Steps-i];
		}
		Koeff[Steps-1] = 1;
	}
	return Koeff;
}

/**
 *
 * @access public
 * @return void
 **/
function SinScrollKoeff(Steps){
	Koeff = new Array();
	Schwelle = Math.ceil(Steps/2);
	for (i=0; i<Schwelle; i++) {
		x = 0.25*Math.PI*i/(Schwelle-1);
		xmax = 0.25*Math.PI;
		Koeff[i] = 0.5*Math.sin(x)*Math.sin(x)/(Math.sin(xmax)*Math.sin(xmax));
	}
	for (i=Schwelle; i<Steps; i++) {
		Koeff[i] = 1-Koeff[Steps-i-1];
	}
	return Koeff;
}

/**
 *
 * @access public
 * @return void
 **/

function SincScrollKoeff(Steps){
	Koeff = new Array();
	Schwelle = Math.ceil(Steps/2);
	for (i=0; i<Schwelle; i++) {
		x = i/(Schwelle-1)*Math.PI*2*0.8 - Math.PI*2;
		xmax = Math.PI*2*0.8 - Math.PI*2;
		Koeff[i] = 0.5 * (sinc(x))/(sinc(xmax)) * (i/(Schwelle-1));
	}
	for (i=Schwelle; i<Steps; i++) {
		Koeff[i] = 1-Koeff[Steps-i-1];
	}
	return Koeff;
}


/**
 *
 * @access public
 * @return void
 **/

function AsymSincScrollKoeff(Steps){
	Koeff = new Array();
	Schwelle = Math.ceil(Steps/2);
	for (i=0; i<Schwelle; i++) {
		x = i/(Schwelle-1)*Math.PI*2*0.8 - Math.PI*2;
		xmax = Math.PI*2*0.8 - Math.PI*2;
		Koeff[i] = 0.5 * (sinc(x))/(sinc(xmax)) * (i/(Schwelle-1));
	}
	for (i=Schwelle; i<Steps; i++) {
		Koeff[i] = 1-Koeff[Steps-i-1];
	}
	for (i=0; i<Schwelle; i++) {
		x = i/(Schwelle-1)*Math.PI*0.5 - Math.PI;
		xmax = Math.PI*0.5 - Math.PI;
		Koeff[i] = 0.5 * (sinc(x))/(sinc(xmax)) * (i/(Schwelle-1));
	}
	return Koeff;
}

/**
 *
 * @access public
 * @return void
 **/
function sinc(x){
	return (Math.sin(x) / x);
}

/**
 *
 * @access public
 * @return void
 **/
function sgn(x){
	if (x>0) return 1;
	else if (x<0) return -1;
	else return 0;
}


/**
 *
 * @access public
 * @return void
 **/
function prezero(Value,Length){
	Value = Value + '';
	while(Value.length < Length) Value = '0'+Value;
	return Value;
}

/**
 *
 * @access public
 * @return void
 **/
var MediaPages = 1;
var MediaPage = 1;
var MediaPageWidth = 720;
var MediaPageScrolltime = 1000;
var MediaCanScroll = 1;
function media_scroll_page(Page){
	if (Page < 1 || Page > MediaPages) Page = 1;
	//if (MediaPage == Page || !MediaCanScroll) return true;

	PageOffsetNow = MediaPageWidth * (MediaPage-1);
	PageOffsetTarget = MediaPageWidth * (Page-1);
	PageOffsetDifference = PageOffsetTarget - PageOffsetNow;
	Koeff = SincScrollKoeff(Math.round(MediaPageScrolltime / 40));
	if (MediaCanScroll && PageOffsetDifference != 0) {
		MediaCanScroll = 0;
		for (i=0; i<Koeff.length; i++) {
			Time = MediaPageScrolltime * (i/(Koeff.length-1));
			setTimeout('document.getElementById(\'media_content\').style.left = \'' + -1*Math.round(PageOffsetNow + PageOffsetDifference*Koeff[i]) + 'px\';',Time);
		}
		setTimeout('MediaCanScroll = 1;',MediaPageScrolltime);
		MediaPage = Page;
	}
	NextPage = MediaPage + 1;
	PrevPage = MediaPage - 1;
	if (NextPage > MediaPages) NextPage = MediaPages;
	if (PrevPage < 1) PrevPage = 1;
	//document.getElementById('media_pages').innerHTML = '<a href="#'+PrevPage+'" onclick="media_scroll_page('+PrevPage+');">&lt; '+prezero(MediaPage,2)+'</a> / <a href="#'+NextPage+'" onclick="media_scroll_page('+NextPage+');">'+prezero(MediaPages,2)+' &gt;</a>';
	$('media_link_prev').writeAttribute('href','#'+PrevPage);
	$('media_link_next').writeAttribute('href','#'+NextPage);
	if (MediaPage == MediaPages) {
		$('media_arr_right').style.display = 'none';
	} else {
		$('media_arr_right').style.display = 'block';
	}
	if (MediaPage == 1) {
		$('media_arr_left').style.display = 'none';
	} else {
		$('media_arr_left').style.display = 'block';
	}
}




/**
 *
 * @access public
 * @return void
 **/
function media_init_from_hash(){
	MediaStartPage = parseInt(window.location.hash.match(/\d+/));
	if (MediaStartPage > 1) {
		media_scroll_page(MediaStartPage);
	} else {
		media_scroll_page(1);
	}
}


/**
 *
 * @access public
 * @return void
 **/
var LastHash = '-';
function media_poll_hash(){
	if (window.location.hash != LastHash && MediaCanScroll) {
		LastHash = window.location.hash;
		media_init_from_hash();
	}
	setTimeout('media_poll_hash();',250);
}













/**
 *
 * @access public
 * @return void
 **/
function imagelist_init(uid){
	obj = document.getElementById('lmf_'+uid);
	obj_frame = obj.childNodes[0];
	obj_status = obj.childNodes[1];
	obj_navi = obj.childNodes[2];
	images = obj_frame.childNodes.length;
	//height = 0;
	//alert(images);
	//for(i=0; i<images; i++) if(obj_frame.childNodes[i].clientHeight > height) height = obj_frame.childNodes[i].clientHeight;
	for(i=0; i<images; i++) obj_frame.childNodes[i].style.zIndex = 100;
	for(i=1; i<images; i++) changeOpac(0,obj_frame.childNodes[i].id);
	images_str = images+'';
	obj_status.innerHTML = '<b>'+prezero(1,images_str.length)+'</b>/'+images;
	//alert(height);
	//obj.style.height = height+20 + 'px';
	//obj_frame.style.height = height + 'px';
}

var imagelist_heights = new Array();
var imagelist_loaded = new Array();
var imagelist_pos = new Array();
for(i=0; i<1000; i++) imagelist_heights[i] = 0;
for(i=0; i<1000; i++) imagelist_loaded[i] = 0;
for(i=0; i<1000; i++) imagelist_pos[i] = 0;
function imagelist_height(uid,sender) {
	imagelist_loaded[uid]++;
	obj = document.getElementById('lmf_'+uid);
	obj_frame = obj.childNodes[0];
	obj_status = obj.childNodes[1];
	obj_navi = obj.childNodes[2];
	imagelist_heights[uid] = Math.max(imagelist_heights[uid],sender.clientHeight);
	obj_frame.style.height = imagelist_heights[uid] + 'px';
	obj.style.height = imagelist_heights[uid] + Math.max(obj_navi.offsetHeight,obj_status.offsetHeight) + 'px';
	images = obj_frame.childNodes.length;
	if(imagelist_loaded[uid] == images) for(i=0; i<images; i++) {
		//obj_frame.childNodes[i].style.paddingTop = alert(Math.round((imagelist_heights[uid]-obj_frame.childNodes[i].clientHeight)/2) + 'px');
		if (obj_frame.childNodes[i].clientHeight > 0 && obj_frame.childNodes[i].clientHeight < imagelist_heights[uid]) {
			obj_frame.childNodes[i].style.paddingTop = Math.floor((imagelist_heights[uid]-obj_frame.childNodes[i].clientHeight)/2) + 'px';
			obj_frame.childNodes[i].style.paddingBottom = obj_frame.childNodes[i].style.paddingTop;
		}
	}
}

function imagelist(uid,mode){
	obj = document.getElementById('lmf_'+uid);
	obj_frame = obj.childNodes[0];
	obj_status = obj.childNodes[1];
	obj_navi = obj.childNodes[2];
	images = obj_frame.childNodes.length;
	for(i=0; i<images; i++) obj_frame.childNodes[i].style.zIndex = 100;
	opacity(obj_frame.childNodes[imagelist_pos[uid]].id,100,0,300);
	imagelist_pos[uid] += mode;
	//alert(images);
	if(imagelist_pos[uid] >= images) imagelist_pos[uid] = 0;
	if(imagelist_pos[uid] < 0) imagelist_pos[uid] = images-1;
	opacity(obj_frame.childNodes[imagelist_pos[uid]].id,0,100,300);
	obj_frame.childNodes[imagelist_pos[uid]].style.zIndex = 110;
	images_str = images+'';
	obj_status.innerHTML = '<b>'+prezero(imagelist_pos[uid]+1,images_str.length)+'</b>/'+images;

}



/* MEDIA AJAX */

/**
 *
 * @access public
 * @return void
 **/
function ajax_view(url){
	changeOpac(1,'ajax_fader');
	document.getElementById('ajax_fader').style.display = 'block';
	document.getElementById('ajax_fader').style.height = document.getElementById('body').clientHeight;
	opacity_fps('ajax_fader',0,80,500);
	setTimeout('ajax_view_finish();',500);
	new Ajax.Updater('ajax_content', url, {evalScripts: true});
}


/**
 *
 * @access public
 * @return void
 **/
function ajax_view_finish(){
	document.getElementById('ajax_content').style.display = 'block';
}


/**
 *
 * @access public
 * @return void
 **/
function ajax_view_close(){
	document.getElementById('ajax_content').style.display = 'none';
	document.getElementById('ajax_content').innerHTML = '';
	opacity_fps('ajax_fader',80,0,500);
	setTimeout('ajax_view_close_finish();',500);
}

/**
 *
 * @access public
 * @return void
 **/
function ajax_view_close_finish(){
	document.getElementById('ajax_fader').style.display = 'none';
}



