


//----------------------------------------------------- Moo.rd Teile für Effekte  ------------------------------------------------------


Fx.implement({
	
	/*
	Method: initStyles
	Description:  initializes all the styles you want for later usages
	*/
	initStyles: function() {
		this.init = {};
		$A(arguments).each(function(a) {
			if(a == 'opacity') this.init['opacity'] = this.element.get('opacity');
			else (this.element.getStyle(a).test('px')) ? this.init[a] = this.element.getStyle(a).toInt() : this.init[a] = this.element.getStyle(a);
		}, this);
		return this;
	},
	
	/*
	Method: removeAuto
	Description:  removes the 'auto' value from all the styles you want, to obtain a cross-browser feeling
	*/
	removeAuto: function() {
		if(!this.init) this.init = {};
		$A(arguments).each(function(a) {
			if(this.element.getStyle(a) == 'auto') { 
				this.element.setStyle(a, '0px');
				this.init[a] = 0;
			}
		}, this);
		return this;
	},
	
	/*
	Method: setPosition
	Description:  sets position's value to 'relative' if the element isn't positioned
	*/
	setPosition: function() {
		if(this.element.getStyle('position') == 'static') this.element.setStyle('position', 'relative');	
		return this;
	}
});

Fx.Pulsate = new Class({
					 
	Extends: Fx.Tween,
	
	options: {
		duration: 200,
		link: 'chain',
		times: 14
	},
	
	initialize: function(element, options) {
		this.parent(element, options);
	},
	
	start: function(last) {

		var last = ($type(last) == 'number') ? last : 1;
		for(var i=0; i<this.options.times; i++) {
			this.parent('opacity', (i%2 == 0) ? 0 : 1);
		}
		this.parent('opacity', last);
	}
});
//moo.rd FX initialize








//----------------------------------------------------- POPUPS Fenster ------------------------------------------------------


// popup für newsblog comments
function popup(file) {
var myPopup = new Browser.Popup(file, {
  width: 500,
  /*everything below here are the defaults, 
    so you could omit them*/
  height: 600,
  x: 50,
  y: 50,
  toolbar: 0,
  location: 0,
  directories: 0,
  status: 0,
  scrollbars: 'yes',
  resizeable: 1,
  name: 'popup'
});
}

//modal altert für bookmarker
function stickbox(el) {
		var url1=el.href;
		el.href ='#';
		var myElement = $(el).set({
							    //The 'styles' property passes the object to Element:setStyles.
							    'styles': {
						        'border': '1px solid #f00'
							    },
							    //The 'events' property passes the object to Element:addEvents.
							    'events': {
						        'click': function(){ new StickyWin.Ajax({
									  url: url1,
									  wrapWithUi: true,
									  caption: el.alt
								}).update(); 
								},
						        'mouseover': function(){  }
							    },
							    //Any other property uses Element:setProperty.
							    'id': 'documentBody'
								});
}

//----------------------------------------------------- NewsBlogLOADER ------------------------------------------------------

function ajaxFile(file, external, blogrepair) {
      		 if(external) {file="http://www.afterwax.net/_includes/fetch_con.aspx?f="+file}
			var req = new Request.HTML({  
            	 method: 'get',  
				 //wenn von externer domain geladen wird
          		 url: file,
          		 data: { 'do' : '1' },  
          		 onRequest: function() {   },    //hier evtl. ladeicon einfügen
         	     onSuccess: function(){ 
				 	var Doc = req.response.text;
					if (blogrepair) {var Page = Doc.slice(Doc.indexOf('story')-12, Doc.indexOf('end of content')-11);} else {var Page = Doc}
					$('bloglayer').innerHTML = Page;
					if (blogrepair) {
						stories = $('bloglayer').getElements(".story");
						stories.each(function(x){ 
						//strip links from storytitle
							if(x.getElement('.storyTitle')!=null) { 
							x.getElement('.storyTitle').innerHTML = x.getElement('.storyTitle').getElement('a').innerHTML;
							}
							if(x.getElement('.storyDate')!=null) {
							x.getElement('.storyDate').innerHTML = x.getElement('.storyDate').innerHTML.slice(x.getElement('.storyDate').innerHTML.indexOf('-')+2, x.getElement('.storyDate').innerHTML.length);
							x.getElement('.storyDate').inject(x.getElement('.storyTitle'), 'after');
							var myBr  = new Element('br');
							var myBr2  = new Element('br');
							var myBr3  = new Element('br');
							myBr.inject(x.getElement('.storyDate'), 'after');
    	 					myBr2.inject(x.getElement('.storyDate'), 'after');
							myBr3.inject(x.getElement('.storyDate'), 'after');
							}
						});	
					} //blogrepair ende
					
					//ändere die art der links
					//mach images zu slimbox
					$('bloglayer').getElements('a').each(function(el) {
						if (el.href && el.href.test(/.(jpg|jpeg|png|gif|bmp)$/i)) {
							el.getElement('img').removeProperty("onclick");
							el.rel = 'lightbox';
							el.title = el.getElement('img').getProperty("alt");
							} else {  
						//mach urls zu popups
							el.setProperty("onclick","popup('"+el.href+"')");
							el.href ='#';
							}
						}, this);
					//lass slimbox nochmal drüber scannen
					Slimbox.scanPage();
					}        
		   		}).send();
		}

	
	
//----------------------------------------------------- NAVIGATION ------------------------------------------------------

//lässt showpage() nach slide out -> slide in -> stoppen
var slidestopper=false;

//nur wenn die animation fertig ist kann wieder eine passieren
var isComplete=true;

//erste seite die angezeigt werden soll
var active_nav = 'newsblog';

//leere FX Variable global für toggle funktion
var myVerticalSlide;

//bloglayer am anfang des toggelns anders behandeln
navslider=true;

//navlayer aktivieren / schreiben
function write_navlayer() {
$('navlayer').getElements('a').each(function(x) {
	x.href="#";
	x.addEvent('click', function(event) {
		if(x.getProperty('class')!='active') {
	 		$('navlayer').getElements('a').each(function(x) { x.removeClass('active'); });
		 	x.addClass('active');
			showPage();
		}
		});
	});
} 

//nav menue tabs funktion
function showPage()
 {
  slidestopper=false;
  if(isComplete) {
	isComplete=false;
	if(myVerticalSlide==null) {myVerticalSlide = new Fx.Slide('bloglayer', {
   		mode: 'vertical',
    	onComplete: function(){
			if(slidestopper) { 
				setTimeout("isComplete=true", 200);
				} else { 				
				id=$('navlayer').getElement('.active').id;
					$('bloglayer').innerHTML = $('hc_'+id).innerHTML; 
					myVerticalSlide.toggle();}
					slidestopper=true;
    		}
		});
	}
	if(navslider) {myVerticalSlide.slideOut(); navslider=false;} else {myVerticalSlide.toggle();}
  }
}

//----------------------------------------------------- MP3 Player Steuerung ------------------------------------------------------

//variablen werden intialisiert

//start.xml wird als startplayliste  und der erste track festgelegt wenn ber hash link kein anderer wert herauskommt - evtl. per cookie safen?
var currentList = "purple_pop";
var currentItem = 0; 
var previousItem = 0; 
var currentPosition = 0;
var startposition = 0;

//currentVolume ird zum Start auf 80 gesetzt - evtl. ebenso per cookie safen?
var currentVolume = 80;


var positionStep = 0;

//misteriöse seek variable wird gesetzt damit das seeken geht
var seek = 0;
var seekFlag = false;

//globales player objekt
var player = null;

//haut den ganzen pfad raus im URL
var hrefcutter = function(x, first) {
	if(first){
		if(x.indexOf("onic.net")!=-1) {var file=x.slice(x.indexOf("onic.net")+9, x.length);} else {var file=x};
		return file.replace(/.xml/, "");
	} else {
		var file=x.slice(x.indexOf('/playlist_')+10, x.length);
		var file=file.slice(0, file.indexOf('/'));
		return file;
	}
}

//konvertiert sekunden in ahnsehnliche zeitangabe in der playlist
var to_time = function(x) {
	var time = (x/60).toInt();
	var sec = x-(time*60);
	var t1 = time.toString();
	var s1 = sec.toString();
	if(t1.length<2) {var minut='0'+t1;} else {var minut=t1;}
	if(s1.length<2) {var second='0'+s1;} else {var second=s1;}
	var returnthis = minut+':'+second;
	return returnthis;
}


//
//this is the function we use on mouse enter, tweens width to 700px
var enterFunction = function() {
	this.start('left', '560px');
}
 
//this is the function we use on mouse leave, tweens width back to 300px
var leaveFunction = function() {
	this.start('left', '317px');
}



//playlistloader aus links mootoolsen
function write_playlist_links() {
$('playlist_links').tween('left','317');
var quadInOut = $('playlist_links');

	quadInOut = new Fx.Tween(quadInOut, {
	link: 'cancel',
	transition: 'quad:in:out'
    });
$('playlist_links').addEvents({
        //we also use those same functions here
        //but each time they apply to an event on a different element
        //and bind to a different tween
        'mouseenter': enterFunction.bind(quadInOut),
        'mouseleave': leaveFunction.bind(quadInOut)
    });
				
$('playlist_links').getElements('a').each(function(x) {
	x.addEvent('click', function(event) {
		var pulsate = new Fx.Pulsate(x, {times: 5});
		pulsate.start();
		loadlist(hrefcutter(x.href, false), 0, 0);
		});
	x.href="#/playlist_"+hrefcutter(x.href, true)+"/track_1/";
	});
} 

// bookmark this
function bookmark() {
	var url = window.location.href;
	StickyWin.implement(new Modalizer);
	new StickyWin({
	content: StickyWin.ui('Bookmark', 'This Bookmark will remember your exact momentary playing position!<br /><br /><a href="'+url+'">'+url+'</a><br /><br />', {
    width: '600px',
    buttons: [
      {
        text: 'add to my Bookmarks!', 
        onClick: function(){
			var title ='afterwax.net - '+currentList+' - '+currentItem+' - Second:'+currentPosition;
			if (window.sidebar) { // Mozilla Firefox Bookmark
				window.sidebar.addPanel(title, url,"");
			} else if( window.external ) { // IE Favorite
				window.external.AddFavorite( url, title); }
			else if(window.opera && window.print) { // Opera Hotlist
			return true; }	
		}
      },
      {
        text: 'close', 
        onClick: function(){ }
      }
    ]
  })
}); //.modalShow();
} 


//mp3 player logic

//function die am start ausgeführt wird
function getDataAsync() {
	plst = player.getPlaylist();
	if (plst) { 
	writeItemInfo(plst);
	writePlaylistData();
	} else {
		setTimeout("getDataAsync()",100);
	}
}

//schreibt in die URL Zeile
function writeHashpipe(file, track, position) {
		track = track.toInt() + 1;
		window.location.hash = '/playlist_'+file+'/track_'+track+'/second_'+position;
}

//player wird hier initialisiert
function playerReady(thePlayer) {
	player = window.document[thePlayer.id];
	addListeners();
	loadlist(currentList, currentItem, startPosition);
}

//wenn sich was ändert dann start was - LISTENERS
function addListeners() {
	if (player) { 
		player.addControllerListener("PLAYLIST", "getDataAsync()");
		player.addControllerListener("ITEM", "itemListener");
		player.addModelListener("TIME", "timeListener");
		player.addControllerListener("VOLUME", "volumeListener");
	} else {
		setTimeout("addListeners()",100);
	}
}

//speichert akutelles volumen
function volumeListener(obj) { 
	currentVolume = obj.percentage; 
	}


//tut was wenn sich das seekfeld / zeit ändert
function timeListener(obj) { 
	if(currentPosition!= Math.round(obj.position)&&niceBrowser) 
		{
			writeHashpipe(currentList, currentItem, currentPosition); 
			currentPosition = Math.round(obj.position);
		} else {
			currentPosition = Math.round(obj.position);
		}
	if((obj.position > 0) && (seekFlag))
        {
        	seekFlag = false;
        	player.sendEvent('SEEK', seek);
        }
}

//tut was wenn sich der track ändert
function itemListener(obj) { 
if (obj.index != currentItem) {
 		previousItem = currentItem;
		currentItem = obj.index;
		getDataAsync();
	}
}

//spult zu beginn auf den geuchten zeitpunkt
function seekSome(some) {
		seek = some;
        if(currentPosition > 0)
        {
          player.sendEvent('PLAY', 'true');
          player.sendEvent('SEEK', some);
		  startPosition=0;
        }
    	   else
        {
          seekFlag = true;
          player.sendEvent('PLAY', 'true');
        }
}

//lädt die neue playlist
function loadlist(file, track, time){
	xmlDoc = null;
	currentList = file;
	currentItem = track;
	startPosition = time;
	if (player&&player.getPlaylist()) {
		liste = file+'.xml';
		player.sendEvent('volume',0);
		player.sendEvent('LOAD', liste);
		player.sendEvent('ITEM', track);
		if(currentPosition!=startPosition) {seekSome(startPosition);}
		player.sendEvent('volume', currentVolume);
		player.sendEvent('UNMUTE');	
	} else {
		setTimeout("loadlist(currentList, currentItem, startPosition)",100);
	}
}


var xmldoc = null;

function ajax_xml_playlist() {
	var file = currentList+'.xml';
	try
	{
		if (window.ActiveXObject)
		{
			var errorHappendHere = "Check Browser and security settings";
			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async=false;
			xmlDoc.load(file);
		}
		else if(window.XMLHttpRequest)
		{
			var errorHappendHere = "Error handling XMLHttpRequest request";
			var d = new XMLHttpRequest();
			d.open("GET", file, false);
			d.send(null);
			xmlDoc=d.responseXML;
		} else {
			var errorHappendHere = "Error.";
			xmlDoc = document.implementation.createDocument("","",null);
			xmlDoc.async=false;
			xmlDoc.load(file);
		}
	}	
	catch(e)
	{
		alert(errorHappendHere);
	}
	return xmlDoc
}

//item info schreiben
function writeItemInfo(plst) {
	var PlaylistSlide = new Fx.Slide('item_info').slideOut('horizontal').chain(function()
		{
		var txt = '';
		trackn = parseInt(currentItem)+1;
		txt += '<h4>Track '+trackn+'</h4>';
		txt += '<h3>'+plst[currentItem].title+'</h3>';
		txt += '<h4>'+plst[currentItem].author+'</h4><br />';
		txt += plst[currentItem].description+'<br /><br />';
		txt += '<div id="bookmark" class="none">bookmark whats playing!</div>';
		$("item_info").innerHTML = txt;
		//bookmarks machen
		write_bookmark();
		this.show().slideIn('horizontal');
		});
}


//mach bookmark-links
function write_bookmark(){
	if($('bookmark')) {
			$('bookmark').addEvents({
			click : function(a){
				bookmark();
				},
			mouseenter : function(a){
				a.stop; 
				this.addClass('active');
				},
			mouseleave : function(a){ 
				a.stop; 
				this.removeClass('active');
				}
		});
	} else {		setTimeout("write_bookmark()",100);}
		
}


//schreibt die playliste
function writePlaylistData() {
	
	Track = currentItem;
	if(xmlDoc==null) {xmlDoc = ajax_xml_playlist();}
	var plst = null;
	plst = player.getPlaylist();
	if (plst!=null) {	
		var txt='';
		var imagehref = window.location.pathname.slice(0, window.location.pathname.lastIndexOf('/')) + '/' + xmlDoc.getElementsByTagName("image")[0].childNodes[0].nodeValue;
		var title = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
		var thumbhandler = '/_includes/ShowImage3.aspx?src='+imagehref+'&w=120&h=120';
		var imagesrc = '/_includes/ShowImage3.aspx?src='+imagehref+'&w=500&h=500';
		txt += '<div class="pl_content"><a href="'+imagesrc+'" title="'+title+'" rel="lightbox"><img src="'+thumbhandler+'"></img></a><div id="pl_content"><h4><b>"'+title+'"</b></h4>';
		txt += ''+xmlDoc.getElementsByTagName("collection")[0].childNodes[0].nodeValue+'</div></div><div id="pl">';	
	
		var trackNummer = 0;
		plst.each(function(i){ 
					var tracksanzeige = trackNummer+1;	   
			if(trackNummer!=currentItem){
				txt += '<div class="pl_items" id="itm' + trackNummer + '" onclick="player.sendEvent(\'ITEM\',' + trackNummer + ');"><span class="pl_title">'+tracksanzeige+'. '+i.title+'</span><span class="pl_duration">'+to_time(i.duration)+'</span></div>';
				} else {
				txt += '<div class="pl_items_active" id="itm' + trackNummer + '_playing"><span class="pl_title">'+tracksanzeige+'. '+i.title+'</span><span class="pl_duration">'+to_time(i.duration)+'</span></div>';
				}
			trackNummer++;
		});
		
		txt += '</div>';
		$("playliste").innerHTML = txt; 

	
		//playlist items hovern
		
		$('pl').getElements('div').each(function(y){
			y.addEvents({
			mouseenter : function(a){
				this.removeClass(this.getProperty('class'));
				if(this.id.indexOf('playing')!=-1) { this.addClass('pl_items_active')} else {this.addClass('pl_items_hover')}
				},
			mouseleave : function(a){ 
				this.removeClass(this.getProperty('class'));
				if(this.id.indexOf('playing')!=-1) { this.addClass('pl_items_active')} else {this.addClass('pl_items')}
				}
			});
		});
		
		//nochmal slimboxen
		
		Slimbox.scanPage();	


		
	} else alert('aaaa');	
}


//erstellt den player swf
function createPlayer(thePlayer) {
	var theFile = currentList+'.xml&plugins=googlytics-1&plugins=soundproxy.bands=10';
	var flashvars = {
		streamer:"rtmp://www.afterwax.net/vod",
		link:"http://www.stelegraph.net/",
		backcolor:"000000",
		frontcolor:"BBBBBB",
		lightcolor:"FFFFFF",
		screencolor:"000000",
		playlistsize:308,
		skin:"stylish_slim.swf",
		bufferlength:3,
		repeat:"always",
		file:theFile, 
		autostart:"false",
		plugins: "googlytics-1",
		plugins: "soundproxy-1",		
		item:currentItem
	}

	var params = {
		allowfullscreen:"true", 
		allowscriptaccess:"always",
		wmode:"transparent"
	}

	var attributes = {
		id:thePlayer,  
		name:thePlayer
	}
	swfobject.embedSWF("player.swf", "player", "560", "32", "9.0.115", false, flashvars, params, attributes);
	playerReady(thePlayer);
}


		
function createMovie(theFile) {
	var params = {
		allowfullscreen:"false", 
		allowscriptaccess:"always",
		wmode:"transparent"
	}
	swfobject.embedSWF(theFile, "visual", "245", "181", "9.0.115", false, params);
}

//eventuelle Url Anweisungen auslesen und sonst Player auf Standardwerte setzen
function hashPipeReader() {
	if(window.location.hash) {
		var dope = window.location.hash.split('/');
		if(dope[1]!=""&&dope[1]!="undefined") {
		currentList=dope[1].replace(/playlist_/, "");
			}
		if(dope[2]!=""&&dope[2]!="undefined") {
		currentItem=dope[2].replace(/track_/, "");
		currentItem=eval(currentItem.toInt()-1);
			} else { currentItem=0; }
		if(dope[3]!=""&&dope[3]!=undefined) {
			startPosition=dope[3].replace(/second_/, "");
			positionStep = startPosition;
			} else { startPosition=0; }
	} else { currentItem=0; startPosition=0; }
}



//browser detection
var niceBrowser = false;

window.addEvent('domready',function(){
//hiddenlayers weg
	$$('.hiddencontent').each(function(x){ x.setStyle('visibility','hidden'); });

//internetexplorer check
if (Browser.Engine.trident) {alert('Please view this Site in Firefox/Safari to make use of its full features... Internet Explorer sux ;)');} else {niceBrowser=true}

//eventuelle Url Anweisungen auslesen und sonst Player auf Standardwerte setzen
	hashPipeReader();

//mach den player 
	createPlayer('player');

//playlistloader aus links ajaxivien
	write_playlist_links();

//navilinks mootoolsen
	write_navlayer();

//zeig die newsblog seite
	showPage();
	
//visualizer movie einbinden
//+	createMovie('flugbegleitung.swf');

//here we define a single element by id 
var dragElement = $('container');
 
var dragContainer = $('body');
//now we set up our Drag.Move object
var myDrag = new Drag.Move(dragElement , {
	        // Drag.Move Options
               // set up our container element with the container element var
		container: dragContainer 
	});

});
