mo = {


	init : function ()
	{
		// top menu
		var flashvars = {
			baseurl : baseurl,
			acttab : acttab,
			loggedin : loggedin,
			unread : unread
		};
		if ( $('#mainMenu').hasClass('renderAsFlash') )
		{
			// get labels, plugs and urls from html menu
			var plugs = new Array();
			var labels = new Array();
			var urls = new Array();
			$('#mainMenu a').each( function () {
					labels.push($(this).text());
					urls.push($(this).attr('href').substring(baseurl.length));
					plugs.push($(this).attr('name'));
				} );
			flashvars.plugs = plugs.join('|');
			flashvars.labels = labels.join('|');
			flashvars.urls = urls.join('|');
		}
		var params = {
			menu: "false",
			wmode: "transparent"
		};
		var attributes = {};
		swfobject.embedSWF(baseurl+"assets/swf/topmenu.swf", "mainMenu", "910", "60", "9.0.0", null, flashvars, params, attributes);

		// mp3 player
		$('em').each( function (i) {
			var c = $(this).text();
			if (c.substr(-4)!='.mp3') return;
			var f = c.substr(0,4) != 'http' ? baseurl+'assets/mp3/'+c : c;
			mo.players++;
			$(this).parent().eq(0).attr('id','player'+mo.players);
			swfobject.embedSWF(baseurl+'assets/swf/player.swf','player'+mo.players,'470','20','9',null, {file:f} );
			$('#player'+mo.players).addClass('player');
		} );
		
		this.initSideBar();
	},
	
	initSideBar : function ()
	{
		// news scroller
		var $sidebar = $("#newsmeta");
		if (!$sidebar.length)
			return;
		
		var $window = $(window), offset = $sidebar.offset(), topPadding = 0;
		$window.scroll(function() {
		        if ($window.scrollTop() > offset.top) {
		            $sidebar.stop().animate({
		                marginTop: $window.scrollTop() - offset.top + topPadding
		            });
		        } else {
		            $sidebar.stop().animate({
		                marginTop: 0
		            });
		        }
		    });
	},

	cropTop : 35,
	players : 0,

	initTabs : function (inittab)
	{
		// set up click function
		$('#tabmenu > li > a').click( function() { mo.handleTabClick(this.parentNode.id); } );
		this.showTab(inittab);
	},

	showTab : function (tab)
	{
		// reset all
		$('#tabmenu > li').removeClass();
		$('.main > .blockcontent').hide();

		// set active
		$('#tab_'+tab).addClass('active');
		//$('#block_'+tab).fadeIn();
		$('#block_'+tab).show();
	},

	handleTabClick : function (tabid)
	{
		tab = tabid.substring(4);
		this.hideMessages();
		this.showTab(tab);
	},

	hideMessages : function ()
	{
		$('.errormessage').hide();
	},

	initPhotoCrop : function (crop)
	{
		this.cropTop = crop;
		$('#photo').click( function (e) { mo.setCropper(e.pageX, e.pageY) } );
		$('#photo').append('<div id="cropper"><div></div></div>');
		$('#cropper').css('display','none').css('top',this.cropTop+'px');
		$('#cropform').hide();
	},

	setCropper : function (xclick, yclick)
	{
		if ($('#cropper').css('display') == 'none')
		{
			$('#cropper').css('display','block')
			$('#cropform').show();
			return;
		}

		var o = $('#photo').offset();
		var y = yclick - o.top;
		var top = Math.min( Math.max(y-105, 0), 280-210 );
		$('#cropper').css('top',top+'px');
		this.cropTop = top;
	},

	setCropValue : function ()
	{
		$('#cropvalue').attr('value',this.cropTop);
	},

	toggleTopBar : function ()
	{
		var targ = $("#wrapper").css('marginTop') == "0px" ? "-210px" : "0px";
		$("#wrapper").animate({
			marginTop: targ
		}, 500 );
		$("#toggle").toggleClass("up");
	},

	initStatusComments : function ()
	{
		// add a comment button to every status
		//$('#statuslist > li.status > .meta').each( function (i) { $(this).prepend('<a href="#" onclick="return mo.showStatusCommentForm(this);" class="addcomment">kommentieren</a>') } );
	},

	actSCF : null,

	showStatusCommentForm : function (a)
	{
		var li = $(a).parents('li').get(0);
		var tmp = li.id.split('_');
		var id = tmp[1];
		var idstatus = tmp[2];

		if (this.actSCF)
		{
			$('#scf_'+this.actSCF).remove();
			if (this.actSCF == idstatus)
			{
				this.actSCF = null;
				return false;
			}
		}

		$(li).children('div.formholder').eq(0).load( baseurl + 'member/id__' +id+ '/__statusCommentForm/sid__' +idstatus+ '/' );
		this.actSCF = idstatus;
		return false;
	},

	submitStatusComment : function (idmember, idstatus)
	{
		var c = $('#commentfield_'+idstatus).val();
		$('#status_'+idmember+'_'+idstatus).children('div.formholder').eq(0).html('');
		this.actSCF = null;
		var url = baseurl + 'member/id__'+idmember+'/__saveComment/';
		$.post(
			url,
			{ comment:c, sid:idstatus },
			function (data,status) {
				$('#status_'+idmember+'_'+idstatus).children('ul.comments').eq(0).append(data);
			}
		);
		return false;
	},

	deleteStatusComment : function (idmember, idcomment)
	{
		var url = baseurl + 'member/id__'+idmember+'/__deleteComment/';
		$.post(
			url,
			{ cid:idcomment },
			function (data,status) {
				var idcomment = $(data).children('response').eq(0).text();
				if (!idcomment)
					return;
				$('#comment_'+idcomment).remove();
			},
			'xml'
		);
		return false;
	}
};



mo.galleryimage = {

	acttab : null,
	
	// holds preloaded images
	images : new Array,

	init : function ( acttab )
	{
		if (acttab)
			this.activateTab( acttab );
		else
			this.activateTab();
		
		// tags
		mo.tags.imageId = $('#image > img').attr('id').split('_')[1];
		mo.tags.init();
		
		// commentfld
		$('#commentfld').focus( function() { if($(this).val()==txt_addcomment) $(this).val(''); } );
		
		// prev & next buttons
		$('a.btn_prev').click( function (ev) { mo.galleryimage.loadImage(ev, $(this)); } );
		$('a.btn_next').click( function (ev) { mo.galleryimage.loadImage(ev ,$(this)); } );
		
		// preserve image height
		$('#image > img').css('visibility','hidden');
		$('#image > img').load( function (ev) { mo.galleryimage.onImageLoad(ev); } );
		
		// use cache, if available
		var id = $('#image > img').attr('id')
		if (this.images[id])
			$('#image > img').replaceWith( this.images[id] );
		
	},

	activateTab : function ( tab )
	{
		$('.imageoptions').hide();
		$('#gallerynav a').removeClass('active');

		if (!tab)
			tab = $.cookie('gtab');
		else
			$.cookie('gtab',tab,{path:'/', expires:1});

		if (tab == this.acttab)
		{
			this.acttab = null;
			$.cookie('gtab','',{path:'/', expires:-1});
		} else {
			this.acttab = tab;
			$('#opt_'+tab).show();
			$('#gallerynav_'+tab).addClass('active');
		}

		return false;
	},
	
	
	
	loadImage : function ( ev, jq )
	{
		ev.preventDefault();
		
		$('#image').append( '<div class="loading" style="width:910px; height: '+$('#image > img').height()+'px">&nbsp;</div>' )
		
		var url = jq.attr('href');
		var loadurl = url.substring(0,url.indexOf('id__')) + '__ajax/' + url.substring(url.indexOf('id__'));
		$.get( loadurl, null, function (data) { mo.galleryimage.onDataLoad(data) } );
	},
	
	
	
	onDataLoad : function ( data )
	{
		$('div.galleryimage').html( data );
		this.init();
	},
	
	
	
	onImageLoad : function ( ev )
	{
		$('#image > img').css('visibility','visible');
		
		// set wrapper height
		$('#image').css('height', $('#image > img').height()+'px');
		$('#wrapper').css('height', $('#wrapper').height()+'px');
		
		// preload next images
		this.preload( $('a.btn_prev').attr('id') );
		this.preload( $('a.btn_next').attr('id') );
	},
	
	
	preload : function ( id )
	{
		if (!id || this.images[id])
			return;
		
		var spl = id.split('_');
		this.images[id] = new Image();
		this.images[id].src = baseurl + 'galleryImage/gid__'+spl[0]+'/id__'+spl[1]+'/';
	}
};



mo.tags = {

		imageId : null,
		friendId : null,
		tagMode : false,
		iX : 0,
		iY : 0,
		friendList : null,

		init : function ()
		{
			$('#taglist a').bind('mouseover', function() { var id=this.id.substring(this.id.lastIndexOf('_')+1); $('#tag_'+id).addClass('active'); } ).bind('mouseout', function() { var id=this.id.substring(this.id.lastIndexOf('_')+1); $('#tag_'+id).removeClass('active'); });
			this.cancelTaggingMode();
		},

		enterTaggingMode : function ()
		{
			this.tagMode = true;
			$('#tagcontrols').empty();
			$('#imagetags').hide();
			$('#taglist').hide();

			$('#tagfriends').css( 'height', '24px' );

			$.get(
				baseurl + 'galleryImageDetails/id__'+this.imageId+'/__tagableMembers/',
				function (data, textStatus) {
					$('#tagcontrols').empty();
					$('#imageconfirm').hide();
					$('#tagfriends').html( data ).css( 'height', 'auto' );
					$('#tagfriends h3 span').append('<a href="#" class="btn130 cancel">abbrechen</a>').children().eq(0).click( function () { mo.tags.cancelTaggingMode(); return false; } );

					var act = $('#tagfriends ul a:first').attr('id');
					if (!act)
					{
						return;
					}

					$('#tagfriends h3 span').append('<a href="#" class="btn130">einf&uuml;gen</a>').children().eq(1).click( function () { mo.tags.addTag(); return false; } );
					$('#image img').css('cursor', 'crosshair');

					var w = $('#tagfriends li').length;
					$('#tagfriends ul').css( 'width', 182*w+'px' );
					$('#tagfriends a').click( function () { var id=$(this).attr('id'); mo.tags.setActiveMember( id.substring(id.lastIndexOf('_')+1) ); return false; } );

					$('#tagfriends ul');

					$('#image').append('<div id="tagger"></div>').children('#tagger').css( { left:x+'px', top:y+'px' } ).click( function(e) { mo.tags.setTagPosition( e ) } ).siblings('img').eq(0).click( function(e) { mo.tags.setTagPosition( e ) } );

					mo.tags.setActiveMember( act.substring(act.lastIndexOf('_')+1) );
				},
				'html'
			);

			var x = Math.round($('#image > img').width() / 2) - 75;
			var y = Math.round($('#image > img').height() / 2) - 75;

		},

		setTagPosition : function ( e )
		{
			var pos = $('#image > img').offset();
			var minx = miny = 0;
			var maxx = $('#image > img').width() - 150;
			var maxy = $('#image > img').height() - 150;

			var x = this.iX = Math.min( Math.max( e.pageX-pos.left-75, minx ), maxx );
			var y = this.iY = Math.min( Math.max( e.pageY-pos.top-75, miny ), maxy );

			$('#tagger').css( { left:x+'px', top:y+'px' } );
		},

		setActiveMember : function (id)
		{
			if (this.friendId)
				$('#tagmember_'+this.friendId).removeClass('active');
			this.friendId = id;
			$('#tagmember_'+id).addClass('active');
			$('#tagger').html( '<span>'+ $('#tagmember_'+id).text() +'</span>' );
		},

		cancelTaggingMode : function ()
		{
			this.tagMode = false;

			$('#tagcontrols').empty().append('<a href="#" class="btn130">start tagging</a>').children().eq(0).click( function () { mo.tags.enterTaggingMode(); return false; } );
			$('#imagetags').show();
			$('#taglist').show();
			$('#imageconfirm').show();

			$('#image img').css('cursor', 'default');

			$('#tagfriends').empty().css( 'height', 'auto' );

			$('#tagger').remove();

		},

		addTag : function ()
		{
			url = baseurl + 'galleryImageDetails/id__'+this.imageId+'/__createTag/member__'+this.friendId+'/x__'+this.iX+'/y__'+this.iY+'/';
			location.href =url;
		}
};



mo.userblock = {
	init : function (newfriends, newtags)
	{
		if ( !$('#userblock').length )
			return;
		var flashvars = {
 			username: $('#userblock > span').eq(0).text(),
			status: $('#userblock > em').eq(0).text(),
			img : $('#userblock > img').eq(0).attr('src'),
			unread: unread,
			newfriends: newfriends,
			newtags: newtags
		};
		var params = {
			menu: "false",
			wmode: "transparent"
		};
		var attributes = {};
		swfobject.embedSWF("assets/swf/userblock.swf", "userblock", "910", "142", "9.0.0", null, flashvars, params, attributes);
	}
};



mo.typo = {
	initUserTitle : function ()
	{
		if ( !$('#usertitle').length )
			return;
		var flashvars = {
 			username: $('#usertitle > span').eq(0).text(),
			status: $('#usertitle > em').eq(0).text()
		};
		var params = {
			menu: "false",
			wmode: "transparent"
		};
		var attributes = {};
		swfobject.embedSWF("assets/swf/userheadline.swf", "usertitle", "910", "26", "9.0.0", null, flashvars, params, attributes);
	}
};



mo.memberfilter = {

	placeholder : '',

	init : function ( ph )
	{
		this.placeholder = ph;
		$('#filter').bind('focus',this.handleFocus);
		$('#filter').bind('blur',this.handleBlur);
		$('#filterform').bind('submit',this.handleSubmit);

		this.handleBlur();
	},

	handleFocus : function ()
	{
		if ($('#filter').val() == mo.memberfilter.placeholder)
			$('#filter').val( '' );
		$('#filter').removeClass('placeholder');
	},

	handleBlur : function ()
	{
		if ($('#filter').val() == '')
		{
			$('#filter').val( mo.memberfilter.placeholder );
			$('#filter').addClass('placeholder');
		}
	},

	handleSubmit : function ()
	{
		if ($('#filter').val() == mo.memberfilter.placeholder || $('#filter').val() == '' )
			return false;
	}
};



$(document).ready( function () { mo.init() } );