(function($) {
	$.extend({
		statusbar:{
			/**
			 * Henter ut globale kokebokdata
			 */
			getCookbookSettings:function(data){
				var settings = {};
				var options = $('#cookbok-statusbar :input').serializeArray();
				for(var option in options){
					var object = {};
					object[options[option].name] = options[option].value;
					settings = $.extend(settings,object);
				}
				
				if($('fieldset.portions input:first').length > 0){
					settings = $.extend(settings,{portions:$('fieldset.portions input:first').val()});
				}
				
				return $.extend(settings,data);
			},
			
			/**
			 * Setter sidetelleren i statusfeltet til ett gitt tall.
			 * 
			 * @param {Integer} number
			 */
			setRecipeCount:function(number){
				var radixPrim 	= 0; (number+'').substr(1,1);
				var radixDeci 	= 0; (number+'').substr(0,1);
				var radixCenti 	= 0; (number+'').substr(0,1);
				
				switch(number.toString().length){
					case 3:
						radixCenti = number.toString().substr(0,1);
						radixDeci = number.toString().substr(1,1);
						radixPrim  = number.toString().substr(2,1);
						break;
					case 2:
						radixDeci = number.toString().substr(0,1);
						radixPrim  = number.toString().substr(1,1);
						break;
					case 1:
						radixPrim = number;
						break;
				}
				
				
				$('#cookbok-statusbar span.recipe-number span.radix-prim span.canvas span').text(radixPrim);
				$('#cookbok-statusbar span.recipe-number span.radix-deci span.canvas span').text(radixDeci);
				$('#cookbok-statusbar span.recipe-number span.radix-centi span.canvas span').text(radixCenti);
			},
			
			/**
			 * Henter ut enerplassen i telleren.
			 * 
			 * @return {Integer}
			 */
			getRecipeRadixPrim:function(){
				var number = $.trim($('#cookbok-statusbar span.recipe-number span.radix-prim span.canvas span').text());
				return (number.length <= 0)?0:parseInt(number);
			},
			
			/**
			 * Henter ut tierplassen i telleren.
			 * 
			 * @return {Integer}
			 */
			getRecipeRadixDeci:function(){
				var number = $.trim($('#cookbok-statusbar span.recipe-number span.radix-deci span.canvas span').text());
				return (number.length <= 0)?0:parseInt(number);
			},
			
			/**
			 * Henter ut hundrerplassen i telleren.
			 * 
			 * @return {Integer}
			 */
			getRecipeRadixCenti:function(){
				var number = $.trim($('#cookbok-statusbar span.recipe-number span.radix-centi span.canvas span').text());
				return (number.length <= 0)?0:parseInt(number);
			},
			
			/**
			 * Returner tallet gitt i sidetelleren.
			 * 
			 * @return {Integer}
			 */
			getRecipeCount:function(){
				var number = 0;
				
				number += $.statusbar.getRecipeRadixPrim();
				number += ($.statusbar.getRecipeRadixDeci()*10);
				number += ($.statusbar.getRecipeRadixCenti()*100);
				
				return number;
			},
			
			/**
			 * Øker sidetelleren med en, men en animasjon
			 * 
			 * @return {Integer}
			 */
			updateRecipeCounter:function(number){
				var elmPrim		= $('#cookbok-statusbar span.recipe-number span.radix-prim span.canvas');
				var elmDeci		= $('#cookbok-statusbar span.recipe-number span.radix-deci span.canvas');
				var elmCenti	= $('#cookbok-statusbar span.recipe-number span.radix-centi span.canvas');
				
				var oldNumber = $.statusbar.getRecipeCount();
				/*var newNumber = (oldNumber+number);*/
				
				var newNumber = number;
				
				if(newNumber < 0){
					newNumber = 0;
				}
				
				if(newNumber > 999){
					newNumber = 999;
				}
				
				var animateNumber = function(element,number){
					element.append($('<span>'+number+'</span>'));
					element.animate(
						{top:'-19px'},
						'fast',
						function(){
							$(this).css('top','0').find('span:first').remove();
						}
					);
				}
				
				
				oldNumber = $.strpad(oldNumber,'left',3,'0');
				newNumber = $.strpad(newNumber,'left',3,'0');
				
				if(newNumber.substr(0,1) != oldNumber.substr(0,1)){
					animateNumber(elmCenti,newNumber.substr(0,1));
				}
				
				if(newNumber.substr(1,1) != oldNumber.substr(1,1)){
					animateNumber(elmDeci,newNumber.substr(1,1));
				}
				
				if(newNumber.substr(2,1) != oldNumber.substr(2,1)){
					animateNumber(elmPrim,newNumber.substr(2,1));
				}
			},
			
			/**
			 * Lukker statusbaren
			 * 
			 * @param {Event} e
			 */
			closeStatusBar:function(e){
				if(e != undefined){
					e.preventDefault();
				}
				$('#cookbok-statusbar').slideUp(
					'fast',
					function(){
						$('#personalcontent').fadeOut(
							'fast',
							function(){
								$(this).load(
									$.settings.actions.personalReload,
									function(){
										$(this).fadeIn('fast');
									}
								);
							}
						);
					}
				);
			},
			
			/**
			 * Åpner statusbaren
			 * 
			 * @param {Event} e
			 */
			openStatusBar:function(e){
				if(e != undefined){
					e.preventDefault();
				}
				
				$('#cookbok-statusbar').slideDown();
			},
			
			/**
			 * Setter statusmeldingen til en tekst
			 * @param {String} message
			 */
			setMessage:function(message){
				return $('#cookbok-statusbar div.content span.message span.text span.content').text(message);
			},
			
			/**
			 * Returnerer statusmeldingen
			 * 
			 * @return {String} statusmelding
			 */
			getMessage:function(){
				return $('#cookbok-statusbar div.content span.message span.text span.content').text();
			},
			
			/**
			 * Setter statusmeldingen og viser den
			 * 
			 * @param {String} message
			 */
			showMessage:function(message){
				$.statusbar.setMessage(message);
				$('#cookbok-statusbar div.content span.message').removeClass('hidden').hide().effect("pulsate", { times: 3 }, 500);
			},
			
			/**
			 * Skjuler statusmeldingen
			 */
			hideMessage:function(){
				$('#cookbok-statusbar div.content span.message').fadeOut(
					'fast',
					function(){
						$(this).addClass('hidden');
					}
				);
			},
			
			/**
			 * Viser hjelpetekstboksen.
			 * @param {Event} e
			 */
			showHelp:function(e){
				e.preventDefault();
				$('.popup-help').remove();
				var content = eval('('+$(this).attr('rel')+')');
				var template = $.template.fetch('.popup-help',content);
					template.find('a.close').click($.statusbar.closeHelp);
					template
						.draggable()
						.css('position','absolute')
						.hide()
						.appendTo('body')
						.fadeIn('fast');
			},
			
			/**
			 * Lukker Hjelpetekstboksen
			 * @param {Event} e
			 */
			closeHelp:function(e){
				var popup;
				if(e != undefined){
					e.preventDefault();
					popup = $(this).parents('div.popup-help')
				}else{
					popup = $('.popup-help');
				}
				
				popup.fadeOut(
					'fast',
					function(){
						$(this).remove();
					}
				);
			},
			
			/**
			 * Aktiverer "til kokeboka"-lenken.
			 */
			activateToCookbookLink:function(){
				$('#cookbok-statusbar a.go-to-cookbook').animate(
					{opacity:'1'},
					'fast',
					function(){
						$(this).removeClass('inactive');
					}
				);
			},
			
			/**
			 * Deaktiverer "til kokeboka"-lenken.
			 */
			inactivateToCookbookLink:function(){
				$('#cookbok-statusbar a.go-to-cookbook').animate(
					{opacity:'0.3'},
					'fast',
					function(){
						$(this).addClass('inactive');
					}
				);
			},
			
			save:function save(e){
				e.preventDefault();
				var anchor = $(this);
				var data = $.statusbar.getCookbookSettings();
				$.post(
					$.settings.cookbook.actions.save.cookbook,
					data,
					function(result,status){
						if(result.error){
							if(result.alert){
								$.alert(result.message);
							}
						}else{
							$.statusbar.closeStatusBar();
							$.carat.trackSaveBook();
							$('body').delay(200,function(){
								location.href = anchor.attr('href');
							});
						}
					}
				);
			},
			
			inactivate:function(e){
				e.preventDefault();
				var anchor = $(this);
				var data = $.statusbar.getCookbookSettings();
				$.post(
					$.settings.cookbook.actions.inactivate.cookbook,
					data,
					function(result,status){
						if(result.error){
							if(result.alert){
								$.alert(result.message);
							}
						}else{
							$.statusbar.closeStatusBar();
							location.href = anchor.attr('href');
						}
					}
				);
			},
			
			waste:function waste(e){
				e.preventDefault();
				var anchor = $(this);
				var data = $.statusbar.getCookbookSettings();
				$.post(
					$.settings.cookbook.actions.deletes.book,
					data,
					function(result,status){
						if(result.error){
							if(result.alert){
								$.alert(result.message);
							}
						}else{
							$.statusbar.closeStatusBar();
							location.href = anchor.attr('href');
						}
					}
				);
			}
		}
	});
	
	$(document).ready(function(){
		$("#cookbok-statusbar a.help").click($.statusbar.showHelp);
		$("#cookbok-statusbar a.close")
			.click($.statusbar.inactivate)
			.confirm($.settings.cookbook.confirm.cancel.book);
	});
})(jQuery);