
(function($) {
	
	
	// Extending jQuery object itself
	$.extend({
		// General settings for application
		settings: {
			imgButtonAnim: {
				speed: 80,
				moveValues: {
					def: 			[-3, 3],
					win_new_york: 	[ -6, 6 ],
					winners: 		[ -8, -8 ],
					facts:	 		[ -8, 0 ],
					recepies:		[ -8, 0 ],
					tv_ad:			[ -8, 0 ]
				}
			}
		},
		
		
		globals: {
			zIndex: 12
		},
		
		// Creating dialog window
		createDialog: function(url, post) {
			var method			= 'get';
			var dialog 			= $('<div class="dialog"></div>');
			var blackbg 		= $('<div class="blackbg"></div>');
			var contentdiv 		= $('<div class="content"></div>');
			var closebtn		= $('<a href="" class="close"></a>');
			
			dialog.extend({
				close: function() {
					$(this).remove();
					if($('.dialog').length === 0) {
						$.address.value('');
					}
				},
				
				updatePosition: function() {
					var contentdiv = $(this).find('.content');
					
					if($(window).height() > contentdiv.height() && !(contentdiv.hasClass('absolute') || contentdiv.hasClass('fixed'))) {
						var position = 'fixed';
						var top = '50%';
						var marginTop =  (contentdiv.height() / 2)*-1;
					} else {
						var position = 'absolute';
						var top = $(window).scrollTop() + 40;
						var marginTop = 0;
					}
					
					contentdiv.css({
						position: position,
						top: top,
						left: '50%',
						marginLeft: (contentdiv.width() / 2)*-1,
						marginTop: marginTop
					});
					
					contentdiv.show();
					contentdiv.css('zIndex', $.globals.zIndex);
					$.globals.zIndex++;
				}
			});
			
			blackbg.css('zIndex', $.globals.zIndex);
			$.globals.zIndex++;
			
			closebtn.click(function(e) {
				e.preventDefault();
				dialog.close();
			});
			
			if(typeof(post) === 'object')
				method = 'post';
			
			$.ajax({
				url: url,
				type: method,
				data: post,
				cache: false,
				success: function(response) {
					dialog.append(response);
					dialog.find('.content').append(closebtn);
					//dialog.find('a[rel="deeplink"]').address();
					dialog.updatePosition();
				},
				error: function() {
					alert('Det oppstod en feil. Vennligst prøv igjen.');
				}
			});
			
			blackbg.click(function() { dialog.close(); });
			
			
			dialog.append(blackbg)/*.append(contentdiv)*/;
			$(document.body).append(dialog);
			
			return dialog;
		},
		
		
		// Triggered when window is resized
		resizedWindow: function() {
			if($('#container').width() < 980 ) {
				$('#content').width(775);
				$('#sidebar').css({
					'right': 'auto',
					'left': 785
				});
			} else {
				$('#content').width('auto');
				$('#sidebar').css({
					'right': 0,
					'left': 'auto'
				});
			}
		}
	});
	
	
	// Extending jQuery collections
	$.fn.extend({
		
		labelize: function() {
			return $(this).each(function() {
				var $input = $(this);
				
				var label = $('label[for="' + $input.attr('id') + '"]');
				var labelvalue = label.text();
				if(label.css('display') != 'none') {
					$input.blur(function() {
						if($input.val().length == 0) {
							label.show();
						}
					}).trigger('blur');
					
					$input.focus(function() {
						label.hide();
					});
				}
			});
		},
		
		// Fancy imagebutton hover effect
		imgButtonAnim: function() {
			return $(this).each(function() {
				var that = $(this);
				var span = $(this).find('span');
				
				if(span.length === 0)
					return null;
				
				var moveValues = $.settings.imgButtonAnim.moveValues[that.attr('id')] || $.settings.imgButtonAnim.moveValues.def;
				
				var origTop  = parseInt(span.css('top'));
				var origLeft = parseInt(span.css('left'));
				
				that.hover(function(e) {
					// Mouse in
					span.animate({
						top:  origTop  + moveValues[0],
						left: origLeft + moveValues[1]
					}, $.settings.imgButtonAnim.speed);
				}, function(e) {
					// Mouse out
					
					span.animate({
						top:  origTop,
						left: origLeft
					}, $.settings.imgButtonAnim.speed);
				});
			});
		}
	});
	
	$.address.change(function(e) {
		e.preventDefault();
		
		$('.dialog').remove();
		var module = e.pathNames[0];
		
		
		switch(module) {
			case 'bidrag':
			case 'last-opp':
			case 'vinnere':
			case 'fakta':
			case 'oppskrifter':
			case 'tv-reklame':
			case 'premier':
			case 'konkurranseregler':
				$.createDialog(e.path);
				//pageTracker._trackPageview('/'+module);
			break;
			case 'sorter':
				$('#content .entry').fadeOut(200);
				$('#content').load(e.path, function() {
					//$('#content a[rel="deeplink"]').address();
				});
			break;
		}
	});
	
	// Dom is ready!
	$(function() {
		$('body').removeClass('nojs').addClass('hasjs');
		$('.imgbutton').imgButtonAnim();
		
		//$('a[rel="deeplink"]').address();
		
		$('a[rel="deeplink"]').live('click',function(e) {
			e.preventDefault();
			var url = this.href.split('.no/')[1];
			$.address.value(url);
		});  
		
		$('.facebook_share').live('click', function(e) {
			e.preventDefault();
			if (window.showModalDialog) {
				window.showModalDialog($(this).attr('href'),"Del","dialogWidth:760px;dialogHeight:350px");
			} else {
				window.open($(this).attr('href'), 'height=350,width=760,toolbar=no,directories=no,status=no,menubar=no,scrollbars=no,modal=yes');
			}
			
			var url = 'facebook_share';
			
			if($('this').hasClass('entryshare')) {
				url += '_entry';
			}
			
			pageTracker._trackPageview('/'+url);
		});
		
		$('a[rel="external"]').live('click', function(e){
			e.preventDefault();
			window.open($(this).attr('href'));
		});
				
		$(window).resize($.resizedWindow).trigger('resize');
		
		$('.ajaxloader')
		.ajaxStart(function() {
			$(this).show();
		}).ajaxStop(function() {
			$(this).hide();
		});
	});
})(jQuery);
