window.addEvent('domready', function() { init() });

//Fade-Out Zeit
var fadeDuration =200;
//Transparenz HoverBoxen
var transparency = 0.6;
var minTransparency = 0.25;
//IDs HoverBoxen
var hoverDivs = new Array('news', 'info', 'person_left', 'person_right', 'referenzen');
//Image Change bei Onclick
var imagesToHover = new Array('person_left', 'person_right', 'info');
//PostFix TextBoxen
var postFix = "_text";
//Url für Ajax Request
var referenzenUrl = jsurl + '/ajax/referenz/';
var newsUrl = jsurl + '/ajax/news/';
//Zeit für den Angangs-flasher
var blinkTime = 300;
var actualBlinker = 0;
//Event-Listener einrichten / Opacity der Hover Boxen setzen
function init() {   
    
    for (var i = 0; i < hoverDivs.length; i++) {
        var hoverDiv = hoverDivs[i];
        
        $(hoverDiv).addEvent('click', showText.bindWithEvent($(hoverDiv), new Array(hoverDiv)));
        $(hoverDiv).addEvent('mouseleave', hideBoth.bindWithEvent($(hoverDiv), new Array(hoverDiv)));
		$(hoverDiv).addEvent('mouseenter', showHover.bindWithEvent($(hoverDiv), new Array(hoverDiv)));
	}

    //Ausnahme bei Referenzen
    $('referenzen_image').setStyles({opacity: transparency});
    $('referenzen_container').setStyles({opacity: 0});
    $('news_image').setStyles({opacity: transparency});
    $('news_container').setStyles({opacity: 0});
	$('person_left_hover').setStyles({opacity: 0});
	$('person_right_hover').setStyles({opacity: 0});
	
    var referenzenListe = $ES('li', 'referenzen_liste');
    var newsListe = $ES('p', 'news_text');
   
   
	referenzenListe.each(function(element){
            $(element).addEvent("click", initAjaxRequest.bindWithEvent(element, new Array(element)));
		}
	);
   
	
	newsListe.each(function(element){
        	$(element).addEvent("click", initAjaxRequest.bindWithEvent(element, new Array(element)));
		}
	);
	hoverDivs.each(function(element){
			$(element).setStyles({opacity: minTransparency});
		}
	);
   
   hoverDivs = shuffle(hoverDivs);
   blinkMe();
}


function blinkMe() {
   var fx = new Fx.Styles($(hoverDivs[actualBlinker]), {duration:blinkTime, wait:true});
   fx.start({'opacity':transparency}).chain(function(){fx.start({'opacity':minTransparency}); 
                                                                 if(actualBlinker < hoverDivs.length) {
																    blinkMe()} });
   
   ++actualBlinker;
}

function initAjaxRequest(event, element) {
    event.stopPropagation();
    event.stop();
    
    if (element.tagName != 'P') {
	    if ($('referenzen_container').style.opacity == 0) {
	        new Fx.Style($('referenzen_container'), 'opacity',
	                                                    {duration: fadeDuration}).start(1);
	   }
    }else{
	    if ($('news_container').style.opacity == 0) {
	        new Fx.Style($('news_container'), 'opacity',
	                                                    {duration: fadeDuration}).start(1);
	   }
    }
    if (element.tagName == 'P') {   
    	ajaxNewsRequest(element);
    }else{
    	ajaxReferenzRequest(element);
    }
}

//Ajax Request und Update Referenz-Container
function ajaxReferenzRequest(element) {
    var referenzID = element.className;
    var ajaxUrl = referenzenUrl + "/(id)/" + referenzID;		
    var ajaxRequest = new Ajax(ajaxUrl, {method: 'get', update: $('referenzen_container')}).request();
}
//Ajax Request und Update News-Container
function ajaxNewsRequest(element) {
	var divtohide = document.getElementById('news_container');
	divtohide.style.display = "block";
    var newsID = element.className;
    var ajaxUrl = newsUrl + "/(id)/" + newsID;
    var ajaxRequest = new Ajax(ajaxUrl, {method: 'get', onComplete: updateAndLoadPlayer, update: $('news_container')}).request();
}

//HoverBoxen und TextBoxen ausfaden
function hideBoth(event, objectID) {
	//if flowplayer is running, stop it
//	alert(document.getElementByID('player');
	//if ($f()) {
	if (document.getElementById('player')) {
		//vid.innerHTML = 'Play Me';
		if($f().isLoaded){
	
	
		$f().stop();
		$f().unload();
		}
	}
	var divtohide = document.getElementById('news_container');
    var divToHide       = $(objectID);
    var divTextToHide = $(objectID + postFix);
    
    new Fx.Style(divToHide, 'opacity', {duration: fadeDuration}).start(transparency, minTransparency);
	
		
	if ($(divTextToHide).style.display != 'none') {
       new Fx.Style(divTextToHide, 'opacity', 
                                        {duration: fadeDuration} , 
                                        {onComplete: function(){ div.setStyles({display:'none'})}}).start(0);
    }
	 
    new Fx.Style($('referenzen_container'), 'opacity', 
                                        {duration: fadeDuration}).start(0);
    if (divtohide.style.display != 'none') {
    	new Fx.Style($('news_container'), 'opacity', 
    									{duration: fadeDuration}).start(0);
    }

	
    if(imagesToHover.contains(event.target.id)) {
        if (event.target.id == 'info') {
            imagesToHover.each(function(element){
				if (element !== 'info') {
				    //$(element + '_hover').setStyles({display: 'none'});
					new Fx.Style($(element + '_hover'), 'opacity', 
                                        {duration: fadeDuration}).start(0);
			    }
            });
            
            return;
        }
        
        //$(event.target.id+'_hover').setStyles({display: 'none'});
		new Fx.Style($(event.target.id+'_hover'), 'opacity', 
                                        {duration: fadeDuration}).start(0);
    }
										
}

//HoverBox einfaden
function showHover(event, objectID) {    
    var hiddenDiv = $(objectID);
    
    //Ausnahme bei Referenzen
    if (objectID == 'referenzen') {
        new Fx.Style(hiddenDiv, 'opacity', {duration: fadeDuration} ).start(1);
    } else {
    	if (objectID == 'news') {
    		new Fx.Style(hiddenDiv, 'opacity', {duration: fadeDuration} ).start(1);
    	} else {
        new Fx.Style(hiddenDiv, 'opacity', {duration: fadeDuration} ).start(0, transparency);
    }
    }
}

//TextBox einfaden
function showText(event, objectID) {
    event.stop();
	event.stopPropagation();
	
    objectID = objectID + postFix;
	
    var hiddenDiv = $(objectID);
    
	if (hiddenDiv.style.opacity == 0 || hiddenDiv.style.display != 'block') {
	
	    hiddenDiv.setStyles({
	        display:'block',
	        opacity: 0
	    });
	    new Fx.Style(hiddenDiv, 'opacity', {duration: fadeDuration} ).start(1);
	}
	
	if(imagesToHover.contains(event.target.id)) {
		if (event.target.id == 'info') {
			imagesToHover.each(function(element){
				if (element !== 'info') {
                    //$(element + '_hover').setStyles({display: 'block'});
					new Fx.Style($(element + '_hover'), 'opacity', 
                                        {duration: fadeDuration}).start(1);
                }
			});
			
			return;
		}
		
		//$(event.target.id+'_hover').setStyles({display: 'block'});
		new Fx.Style($(event.target.id+'_hover'), 'opacity', 
                                        {duration: fadeDuration}).start(1);
	}
	
}

//Opacity 
function changeOpacity(object, opacityValue) {
    new Fx.Style(object, 'opacity', {duration: fadeDuration}).start(opacityValue);
}

shuffle = function(o){ //v1.0
    for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
    return o;
};
