$(document).ready(function(){
	$('#webshop_teaser').cycle();
	$('#shop_teaser').cycle();
	$('a[rel="icalendar-feed"]').click(showFeedDescription);
});

var feed_im_close 	= new Image();
feed_im_close.src 	= globalServer + 'image/feed_close.gif';

var feed_im 		= new Image();
feed_im.src 		= globalServer + 'image/feed.gif';

var feedDescription = false;
function showFeedDescription()
{
	if (feedDescription)
	{
		hideFeedDescription();
	}
	else
	{
		$('a[rel="icalendar-feed"] img').attr('src', feed_im_close.src);
		$('#calendar-events').hide();
		$('#feed-description').show();
	}
	feedDescription = !feedDescription;
	return false;
}

function hideFeedDescription()
{
	$('a[rel="icalendar-feed"] img').attr('src', feed_im.src);
	$('#calendar-events').show();
	$('#feed-description').hide();
	return false;
}

function $elm(id)
{
	return document.getElementById(id);
}

function $type(obj)
{
	return (typeof obj).toLowerCase();
}

function justifyMenu()
{
	var global_menu = document.getElementById('global_menu');
	var items_width = 0;

	var j = global_menu.childNodes.length;
	for (var n = 0; n < j; n++)
	{
		items_width += global_menu.childNodes[n].offsetWidth;

		if (global_menu.childNodes[n].className == 'item')
		{
			items_width++;
		}
	}

	var space_available = global_menu.offsetWidth-items_width;
	var new_padding = Math.floor(space_available/j);
	var extra_padding = space_available%j;

	var padding = 0;
	for (var n = 0; n < j; n++)
	{
		padding = new_padding;
		if (n < extra_padding)
		{
			padding += 1;
		}

		global_menu.childNodes[n].style.width = (global_menu.childNodes[n].offsetWidth+padding)+'px';
	}
	global_menu.style.visibility = 'visible';
}

function signupCheck(form)
{
	return true;
	var fields = ['firstname','lastname','username','password','confirm_password','email','country','city','gender','birth_day','birth_month','birth_year'];
	for (var n = 0, j = fields.length; n < j; n++)
	{
		if (fields[n] == 'gender')
		{
			var genderChecked = false;
			for (var i = 0, k = form[fields[n]].length; i < k; i++)
			{
				if (form[fields[n]][i].checked)
				{
					genderChecked = true;
				}
			}
			if (!genderChecked)
			{
				throwError('Bitte trage dein Geschlecht ein.');
				return false;
			}
		}
		else
		{
			if (form[fields[n]].className.indexOf('alert') != -1)
			{
				form[fields[n]].className = form[fields[n]].className.replace('alert', '');
			}
			if (!form[fields[n]].value)
			{
				alertField(fields[n], 'signup');
				throwError('Bitte fülle die erforderlichen Felder aus.');
				return false;
			}
			if (fields[n] == 'confirm_password')
			{
				if (form.password.value !== form.confirm_password.value)
				{
					alertField(form.password);
					alertField(form.confirm_password);
					throwError('Passwort und wiederholtes Passwort stimmen nicht überein.');
					return false;
				}
			}
			else if (fields[n] == 'username')
			{
				if (!(/^[a-z0-9]+$/i.test(form.username.value)))
				{
					alertField(form.username);
					throwError('Dein Username darf nur Buchstaben A-Z bzw. Zahlen 0-9 enthalten.');
					return false;
				}
			}
			else if (fields[n] == 'email')
			{
				if (!(/^[-a-z0-9\.]+\@[-a-z0-9\.]+\.[a-z0-9]{2,5}$/i.test(form.email.value)))
				{
					alertField(form.email);
					throwError('Bitte gib eine gültige E-Mail-Adresse für die Bestätigungsmail an.');
					return false;
				}
			}
		}
	}
	if (!form.accept_terms.checked)
	{
		throwError('Du mußt die AGB und den Datenschutz akzeptieren.');
		return false;
	}
	return true;
}

function alertField(field, formName)
{
	var fieldObj;
	if ($type(field) == 'string')
	{
		var forms = document.getElementsByTagName('form');
		for (var i = 0, j = forms.length; i < j; i++)
		{
			if (forms[i].name == formName)
			{
				fieldObj = forms[i][field];
			}
			else if (!formName && forms[i][field])
			{
				fieldObj = forms[i][field];
			}
		}
	}
	else
	{
		fieldObj = field;
	}
	if (fieldObj.className.indexOf('alert') == -1)
	{
		fieldObj.className += ' alert';
	}
}

function throwError(mes)
{
	alert(mes);
}

var login = {
	showing: 'login',
	langParts: Array(),
	forgotPassword: function()
	{
		var self = this;
		if (this.showing == 'login')
		{
			if (this.langParts.length == 0)
			{
				jQuery.get(globalServer+'external.action.php', {
					action: 'lang',
					lang: 'forgot password,sign in'
				}, function(lang) {
					self.langParts = lang.split(',');
					$elm('signInHeadline').innerHTML = self.langParts[0];
					$elm('forgotLink').innerHTML = self.langParts[1];
					$elm('form_signin').style.display = 'none';
					$elm('form_forgotPassword').style.display = 'block';
				});
			}
			else
			{
				$elm('signInHeadline').innerHTML = self.langParts[0];
				$elm('forgotLink').innerHTML = self.langParts[1];
				$elm('form_signin').style.display = 'none';
				$elm('form_forgotPassword').style.display = 'block';
			}
			this.showing = 'forgotPassword';
		}
		else
		{
			$elm('signInHeadline').innerHTML = self.langParts[1];
			$elm('forgotLink').innerHTML = self.langParts[0]+'?';
			$elm('form_signin').style.display = 'block';
			$elm('form_forgotPassword').style.display = 'none';
			this.showing = 'login';
		}
	},
	forgotPasswordSend: function()
	{
		var self = this;
		var form = $elm('form_forgotPassword');
		var emailAddress = form.email.value;
		jQuery.get(globalServer+'external.action.php', {
			action: 'forgotPassword',
			email: emailAddress
		}, function(response){
			throwError(response);
			form.email.value = 'Email';
			self.forgotPassword();
		});
	}
}

var tabarea = {
	containers: {},
	tabs: {},
	active: {},
	add: function(container)
	{
		tabarea.containers[container] 	= [];
		tabarea.tabs[container] 		= [];
		tabarea.active[container] 		= false;
		for (var n = 0, j = container.childNodes.length; n < j; n++)
		{
			if (container.childNodes[n].nodeName != '#text')
			{
				if (container.childNodes[n].className.indexOf('tabs') != -1)
				{
					var u = 0;
					for (var i = 0, k = container.childNodes[n].childNodes.length; i < k; i++)
					{
						if (container.childNodes[n].childNodes[i].nodeName != '#text')
						{
							if (container.childNodes[n].childNodes[i].className.indexOf('active') != -1)
							{
								tabarea.active[container] = u;
							}
							container.childNodes[n].childNodes[i].className += ' tab_'+u;
							// Tab onclick
							container.childNodes[n].childNodes[i].onclick = function(e)
							{
								e = e || event;
								var t = e.target || e.srcElement;
								var index = /tab_([0-9]+)/.exec(t.className)[1];
								if (tabarea.active[container] !== false && tabarea.containers[container][tabarea.active[container]])
								{
									tabarea.containers[container][tabarea.active[container]].className = 'container hidden';
									tabarea.tabs[container][tabarea.active[container]].className = tabarea.tabs[container][tabarea.active[container]].className.replace('tab active','tab');
								}
								tabarea.containers[container][index].className = 'container';
								tabarea.tabs[container][index].className = tabarea.tabs[container][index].className.replace('tab','tab active');
								tabarea.active[container] = index;
							}
							u++
							tabarea.tabs[container].push(container.childNodes[n].childNodes[i]);
						}
					}
				}
				else if (container.childNodes[n].className.indexOf('container') != -1)
				{
					tabarea.containers[container].push(container.childNodes[n]);
				}
			}
		}
	}
}

var user = {
	userlinks: {
		lastlink: null,
		add: function()
		{
			var lastlink = this.lastlink || $elm('lastlink');
			var lastlabel = lastlink.previousSibling;
			while(lastlabel.className != 'label')
			{
				lastlabel = lastlabel.previousSibling;
			}

			var newlabel = lastlabel.cloneNode(true);
			var newfield = lastlink.cloneNode(true);

			lastlink.parentNode.insertBefore(newfield, lastlink.nextSibling);
			lastlink.parentNode.insertBefore(newlabel, newfield);

			newfield.childNodes[0].value = ''
		},
		remove: function(deleteLink)
		{
			var div_link = deleteLink.parentNode;
			var div_label = div_link.previousSibling;
			while(div_label.className != 'label')
			{
				div_label = div_label.previousSibling;
			}
			
			div_link.parentNode.removeChild(div_link);
			div_label.parentNode.removeChild(div_label);
		}
	},
	links: {
		lastlink: null,
		add: function()
		{
			var url_field = this.lastlink || $elm('lastlink');
			
			var new_container = url_field.parentNode.cloneNode(true);

			var inputs = new_container.getElementsByTagName('input');
			for (var n = 0, j = inputs.length; n < j; n++)
			{
				inputs[n].value = '';
			}
			
			url_field.parentNode.parentNode.insertBefore(new_container, url_field.parentNode.nextSibling);
		},
		remove: function(link)
		{
			link.parentNode.parentNode.parentNode.removeChild(link.parentNode.parentNode);
		}
	}
}

var profile = {
	mediasCurrentPage: 0,
	mediasCount: 0,
	mediasOverview: function(user_id)
	{
		var self = this;
		jQuery.get(globalServer+'external.action.php?action=profile_userMedias_getCount&user_id='+user_id, {
		}, function(count) {
			self.mediasCount = parseInt(count);
			self.mediasPageTurn(user_id, 1);
			$elm('profile_medias_nav_total').innerHTML = count;
		});
	},
	mediasPageTurn: function(user_id, go)
	{
		var self = this;
		if (
			(this.mediasCurrentPage == Math.ceil(this.mediasCount/4) && go > 0)
			||
			(this.mediasCurrentPage == 1 && go < 0)
		) return;
		this.mediasCurrentPage += go;
		jQuery.get(globalServer+'external.action.php?action=profile_userMedias_pageTurn&user_id='+user_id+'&page='+this.mediasCurrentPage, {
		}, function(html) {
			var f = (self.mediasCurrentPage*4-3);
			var t = (self.mediasCurrentPage*4);
			if (t > self.mediasCount) t = self.mediasCount;
			$elm('profile_medias_nav_showing').innerHTML = f + '-' + t;
			$elm('profile_medias_container').innerHTML = html;
		});
	},
	favoritesCurrentPage: 0,
	favoritesCount: 0,
	favoritesOverview: function(user_id)
	{
		var self = this;
		jQuery.get(globalServer+'external.action.php?action=profile_userFavorites_getCount&user_id='+user_id, {
		}, function(count) {
			self.favoritesCount = parseInt(count);
			self.favoritesPageTurn(user_id, 1);
			$elm('profile_favorites_nav_total').innerHTML = count;
		});
	},
	favoritesPageTurn: function(user_id, go)
	{
		var self = this;
		if (
			(this.favoritesCurrentPage == Math.ceil(this.favoritesCount/4) && go > 0)
			||
			(this.favoritesCurrentPage == 1 && go < 0)
		) return;
		this.favoritesCurrentPage += go;
		jQuery.get(globalServer+'external.action.php?action=profile_userFavorites_pageTurn&user_id='+user_id+'&page='+this.favoritesCurrentPage, {
		}, function(html) {
			var f = (self.favoritesCurrentPage*4-3);
			var t = (self.favoritesCurrentPage*4);
			if (t > self.favoritesCount) t = self.favoritesCount;
			$elm('profile_favorites_nav_showing').innerHTML = f + '-' + t;
			$elm('profile_favorites_container').innerHTML = html;
		});
	},
	calendarCurrentPage: 0,
	calendarCount: 0,
	calendarOverview: function(user_id)
	{
		var self = this;
		jQuery.get(globalServer+'external.action.php?action=profile_userCalendar_getCount&user_id='+user_id, {
		}, function(count) {
			self.calendarCount = parseInt(count);
			self.calendarPageTurn(user_id, 1);
			$elm('profile_calendar_nav_total').innerHTML = count;
		});
		return self;
	},
	calendarPageTurn: function(user_id, go)
	{
		var self = this;
		if (
			(this.calendarCurrentPage == Math.ceil(this.calendarCount/4) && go > 0)
			||
			(this.calendarCurrentPage == 1 && go < 0)
		) return;
		this.calendarCurrentPage += go;
		jQuery.get(globalServer+'external.action.php?action=profile_userCalendar_pageTurn&user_id='+user_id+'&page='+this.calendarCurrentPage, {
		}, function(html) {
			var f = (self.calendarCurrentPage*4-3);
			var t = (self.calendarCurrentPage*4);
			if (t > self.calendarCount) t = self.calendarCount;
			$elm('profile_calendar_nav_showing').innerHTML = f + '-' + t;
			$elm('profile_calendar_container').innerHTML = html;
		});
	}
}

var media = {
	postRating: function(media_id, rating)
	{
		jQuery.get(globalServer+'external.action.php?action=postRating', {
			media_id: media_id,
			rating: rating
		}, function(response){ throwError(response); });
	},
	favorite: function(media_id)
	{
		jQuery.get(globalServer+'external.action.php?action=favorite', {
			media_id: media_id
		}, function(response){ throwError(response); });
	}
}

var frontpage = {
	popularMediaCurrentPage: 0,
	popularMediaCount: 0,
	popularMediaLimit: 0,
	popularMediaSort: 'popularity',
	popularMediaChannel: '',
	popularMediaContract: true,
	popularMediaType: 'frontpage_popularMedia',
	popularMediaOverview: function(limit, channel)
	{
		this.popularMediaLimit   = limit;
		if (channel) this.popularMediaChannel = channel;
		var self = this;
		jQuery.get(globalServer+'external.action.php?action=' + this.popularMediaType + '_getCount', {
			channel:this.popularMediaChannel,
			sortBy: this.popularMediaSort,
			dontContract: (this.popularMediaContract ? 0 : 1)
		}, function(count) {
			self.popularMediaCount = parseInt(count);
			self.popularMediaPageTurn(1);
			$elm('popularMedia_nav_total').innerHTML = count;
		});
	},
	popularMediaSetType: function(type)
	{
		this.popularMediaType = type;
	},
	popularMediaSetContract: function(set)
	{
		this.popularMediaContract = set;
	},
	popularMediaSortBy: function(sort, pageturn)
	{
		this.popularMediaSort = sort;
		var self = this;
		if (pageturn !== false)
		{
			jQuery.get(globalServer+'external.action.php?action=' + this.popularMediaType + '_getCount', {
				channel:this.popularMediaChannel,
				sortBy: this.popularMediaSort
			}, function(count) {
				self.popularMediaCount = parseInt(count);
				self.popularMediaPageTurn(0);
				$elm('popularMedia_nav_total').innerHTML = count;
			});
			//this.popularMediaPageTurn(0);
		}
	},
	popularMediaFilterByChannel: function(channel)
	{
		this.popularMediaChannel = channel;
		this.popularMediaPageTurn(0);
	},
	popularMediaPageTurn: function(go)
	{
		var self = this;
		if (
			(this.popularMediaCurrentPage == Math.ceil(this.popularMediaCount/this.popularMediaLimit) && go > 0)
			||
			(this.popularMediaCurrentPage == 1 && go < 0)
		) return;
		if (go == 0)
		{
			this.popularMediaCurrentPage = 1;
		}
		else
		{
			this.popularMediaCurrentPage += go;
		}
		jQuery.get(globalServer+'external.action.php', {
			action: this.popularMediaType + '_pageTurn',
			limit: 	this.popularMediaLimit,
			page: 	this.popularMediaCurrentPage,
			sortBy: this.popularMediaSort,
			channel:this.popularMediaChannel
		}, function(html) {
			var f = (self.popularMediaCurrentPage*self.popularMediaLimit-(self.popularMediaLimit-1));
			var t = (self.popularMediaCurrentPage*self.popularMediaLimit);
			if (t > self.popularMediaCount) t = self.popularMediaCount;
			$elm('popularMedia_nav_showing').innerHTML = f + '-' + t;
			$elm('popularMedia_container').innerHTML = html;
		});
	}
}

var cursor = {x: 0, y: 0}
function getMouseXY(e) {
	var tempX, tempY;
	e = e || event;

	if (e.clientX) {
		var body = document.documentElement || document.body;
		tempX = e.clientX + body.scrollLeft
		tempY = e.clientY + body.scrollTop
	} else {
		tempX = e.pageX
		tempY = e.pageY
	}  

	cursor.x = tempX;
	cursor.y = tempY;
	return true
}
window.onmousemove = getMouseXY;
document.onmousemove = getMouseXY;

var timeout;
var info;
function showInfo(text)
{
	clearTimeout(timeout);
	timeout = setTimeout(function(){
		if (!info)
		{
			info = document.createElement('div');
			info.className = 'infobox';
		}
		info.innerHTML = text;
		info.style.display = 'block';
		info.style.position = 'absolute';
		info.style.top = (cursor.y)+'px';
		info.style.left = (cursor.x+15)+'px';
		if (navigator && navigator.appVersion && navigator.appVersion.indexOf('MSIE 6') != -1)
		{
			info.style.width = '200px';
		}
		else
		{
			info.style.maxWidth = '200px';
		}
		document.body.appendChild(info);
		timeout = setTimeout(function(){
			hideInfo();
		}, 3000);
	}, 200);
}
function hideInfo()
{
	clearTimeout(timeout);
	if (info)
	{
		info.style.display = 'none';
	}
}