// Inits
var myAccordion;


// Implement PHP-Like str_replace
String.implement(
	'str_replace', function(search, replace)  {
		replace = $splat(replace); str = this;
		$splat(search).each(function(el, i){r = replace[i] ? replace[i] : replace[0]; str = str.replace(el, r);});
		return str;
	}
);
// Implement str_replace all matches
String.implement(
	'str_replace_all', function(search, replace)  {
		ostr = this; str = ostr.str_replace(search, replace);
		while (ostr!=str) {ostr = str; str = ostr.str_replace(search, replace);}
		return str;
	}
);
// confirm
var yesno = function (text, url) {
   var Eingabe = confirm(text);
   if ( Eingabe==true ) { window.location=url; }
}
// open link in new window handler
var new_window = function( elem ){
	elem.addEvent('click', function(ev) {
		if (ev.target.tagName=='A') {var ev_url = ev.target.get('href');}
		if (!$defined(ev_url)) {
			var ev_target = $(ev.target);
			var ev_url = ev_target.getParent('a').get('href');
		}
		ev.stop(); ev.preventDefault();
		window.open(ev_url);
	});
};
// email link decode
var enc_email = function(el) {
	// decode email
	var email = el.get('title').str_replace_all(['||','|'],['.','@']);
	// create new a-tag and replace old span-tag
	var anchor = new Element('a', {
		href: 'mailto:' + email,
		'class': el.get('class')
	}).replaces(el);
	// fill innerHTML of new a-tag
	anchor.innerHTML = email;
};

var sub_page_loader = function(ev) {
	ev.preventDefault();
	//if (this.hasClass('json_static')!=true) {
	var href_elem = this;
	var href_li_elem = href_elem.getParent('li');
	var href_ul_elem = href_elem.getParent('ul');
	href_ul_elem.getElements('.sel').each(function(li_elem, index){
		li_elem.removeClass('sel');
	});
	href_li_elem.addClass('sel')
	var content_elem = href_elem.getParent('.content');
	var inner_content = content_elem.getElement('.inner_content');
	inner_content.fade('out');

	var href_url = href_elem.get('href');
	var jsonRequest = new Request.JSON({
		url: href_url,
		useSpinner: true,
		spinnerTarget: inner_content,
		onSuccess: function(answer){
			/*if (answer.cache_type=='static') {
				href_li_elem.addClass('json_static');
				href_li_elem.store(nav_class, inner_content);
			}*/
			var outer_content = $('outer_content')
			$each($$('.content.'+answer.key+' .inner_content'), function(el) {
				el.innerHTML = answer.inner_content;
				outer_content.fade('out');
				el.fade('in');
				//if (answer.cache_type=='static') {href_elem.addClass('json_static');}
				var size_y = el.getSize().y+24;
				var content_elem = el.getParent('.content');
				var funct = function () {
					var size_y2 = content_elem.getSize().y;
					var size_y3 = href_ul_elem.getSize().y+6;
					//console.log(size_y,size_y2,size_y3);
					if (size_y<size_y3) {size_y = size_y3;}
					var myFx = new Fx.Tween(content_elem);
					myFx.start('height', size_y+'px');
					//content_elem.setStyle('height', size_y+'px');
					el.fade('in');
				};
				funct.delay(500);
				$$('a.new_window').each(new_window);
				$each($$('span.enc_email'), enc_email);
				$each($$('.glow span'), function(el) {glowing.periodical(2000, el);});
				Mediabox.scanPage();
			});
		}
	}).get({'ajax': '1'});
	//}
}
var outer_content_show = function(outer_content, answer) {
	outer_content.fade('hide');
	var oc_size_y = outer_content.getSize().y;
	if (oc_size_y==0) {
		oc_size_y = outer_content.retrieve('oc_size_y');
		var ocFx = new Fx.Tween(outer_content);
		ocFx.start('height', oc_size_y+12);
	}
	outer_content.innerHTML = answer.inner_content;
	outer_content.fade('in');
}
var page_loader = function(ev) {
//console.log(this); console.log(myAccordion._current); console.log(myAccordion);
//var blo = myAccordion==myAccordion.to
	ev.preventDefault();
	//return;
	/*var content_elem = href_elem.getParent('.content');
	var inner_content = content_elem.getElement('.inner_content');
	inner_content.fade('out');*/
	//if (this.hasClass('-json_static')!=true) {
		// init vars
		var href_elem = this;
		var href_url = href_elem.get('href');
		var nav_class = href_elem.getParent().get('class');
		var mark_class = nav_class.str_replace('main', '.content').str_replace(' ', '.');
		var mark_elem = href_elem.getParent().getParent().getElement(mark_class);
		
//console.log(mark_elem);
		// set json-flag
		href_elem.addClass('json_request');
		mark_elem.addClass('json_request');
		var inner_content = mark_elem.getElement('.inner_content');
		var jsonRequest = new Request.JSON({
			url: href_url,
			useSpinner: false,
			spinnerTarget: inner_content,
			onSuccess: function(answer){
//console.log(mark_elem);
				// remove json-flag
				href_elem.removeClass('json_request');
				mark_elem.removeClass('json_request');$
				// cache write
				if (answer.cache_type=='static') {
					href_elem.addClass('json_static');
					href_elem.store(nav_class, inner_content);
				}
				// get outer_content-element
				var outer_content = $('outer_content')
//console.log(answer);
				// has no key, show outer_content
				if (answer.key=='') {
					var myArgs = [outer_content,answer];
					outer_content_show.run(myArgs);
					myAccordion.display(-1);
				}
				// has key
				else {
					$each($$('.content.'+answer.key+' .inner_content'), function(el) {
						// hide inner_content
						el.fade('hide');
						// write html to inner_content
						el.innerHTML = answer.inner_content;
						// get outer_content-size
						var oc_size_y = outer_content.getSize().y;
						// close outer_content-element
						if (oc_size_y>30) {
							outer_content.fade('out');
							outer_content.store('oc_size_y', oc_size_y);
							var ocFx = new Fx.Tween(outer_content);
							ocFx.start('height', 0);
						}
						// remove subnav sel
						$each(mark_elem.getElements('.subnav .sel'), function(el) {
							el.removeClass('sel');
						});
						// set static-flag
							//if (answer.cache_type=='static') {href_elem.addClass('json_static');}
						// get inner_content-size
						var size_y = el.getSize().y+24;
						// get content-element
						var content_elem = el.getParent('.content');
						// resize content
						var funct = function () {
							// get content-size
							var size_y2 = content_elem.getSize().y
							// resize needed?		console.log(content_elem);
							var style_status = content_elem.getStyle('visibility');
							if (size_y!=size_y2 && style_status=='visible') {
								var myFx = new Fx.Tween(content_elem);
								myFx.start('height', size_y+'px');
									//content_elem.setStyle('height', size_y+'px');
								el.fade('in');
							} else if (style_status=='visible') {
								el.fade('in');
							}
						};
						funct.delay(500);
						// update js-funtions
						$$('a.new_window').each(new_window);
						$each($$('span.enc_email'), enc_email);
						$each($$('.glow span'), function(el) {glowing.periodical(2000, el);});
						Mediabox.scanPage();
					});
				}
			}
		}).get({'ajax': '1'});
	//} else {
		// do nothing but show page
	//}
};

var page_scroller = function(ev) {
	ev.preventDefault();
	var href_elem = this; var uri = href_elem.get('href');
	var marker = uri.slice(uri.lastIndexOf('#')+1);
	var marker_elem = $(marker);
	if ($defined(marker_elem)) {var myFx = new Fx.Scroll(window).toElement(marker_elem);}
};

// newsticker
var Typewriter = new Class({
	Implements: [Options],
	options: {
		container: $(document.body),
		message: '',
		delay: 150,
		cursor: 0,
		done: false
	},
	initialize: function(options) {this.setOptions(options);},
	start: function() {
		this.setOptions({done: false});
		for(x = 0; x < this.options.message.length; x++){var id = this.setLetter.delay(this.options.delay * x,this);}
	},
	setLetter: function() {
		this.options.container.set('html',this.options.container.get('html') + '' + this.options.message.charAt(this.options.cursor));
		if (this.options.cursor>=this.options.message.length) {this.setOptions({done: true});}
		this.options.cursor++;
	}
});

var blabla = function () {
	var stopme = 0;
	var elems = $$('#newsticker li');
	var amountElem = elems.length;
	for (nm=0; nm<amountElem; nm++) {
		var mystart = function (elem_num) {
			$('ticker').innerHTML = '';
			var txt = elems[elem_num].innerHTML;
			$('ticker').removeEvents('click');
			if (txt.test('{|}')) {
				var txts = txt.split('{|}');
				var turl = txts[0];
				var txt = txts[1];
				$('ticker').addEvent('click', function(ev){
					ev.stop(); ev.preventDefault();
					window.open(turl);
				});
				$('ticker').addClass('link');
			}
			else {
				$('ticker').removeEvent('click');
				$('ticker').removeClass('link');
			}
			var t = new Typewriter({
				container: $('ticker'),
				message: txt,
				delay:50
			}).start();
		};
		mystart.delay(10000*nm, this, nm);
	}
	blabla.delay(10000*amountElem);
};

// Glowing-affect
var glow_step = function (steppos) {
	this.setStyle('backgroundPosition', '0px '+steppos);
}
var glowing = function () {
	glow_step.delay(50, this, '-80px');
	glow_step.delay(150, this, '-160px');
	glow_step.delay(250, this, '-240px');
	glow_step.delay(350, this, '-320px');
	glow_step.delay(450, this, '-400px');
	glow_step.delay(700, this, '-240px');
	glow_step.delay(800, this, '-80px');
	glow_step.delay(850, this, '-0px');
	//var bgpos = this.getStyle('backgroundPosition');
	//console.log('bgpos', bgpos);
};

