/*

	RMC Motor
	JavaScript functions
	
	Author: Tommy Sørensen
	Copyright: 2010, . All rights resevered

-----------------------------------------------------------------------*/

var Rmc = {
	
	options:
	{
		browsers:
		{
			ie6: ''
		}
	},
	
	domready: function()
	{
		var $main = $('#main');
		
		if ( typeof(Cufon) == 'function' )
		{
			Cufon.replace('#intro h1', {
				fontFamily: 'Arial Black'
			});
		}

		var $groupMenu = $('#group li a', $main);
		if( $groupMenu.length > 0 )
		{
			var $leftNavElements = $('#left li.active:last ul a', $main);
			if ( $leftNavElements.length > 0 )
			{
				var activeUrls = new Array();
				$leftNavElements.each(function(){
					activeUrls.push($(this).attr('href'));
				});
				
				$groupMenu.each(function(){
					var url = $(this).attr('href');
					if (!searchString( activeUrls, url ))
					{
						$(this).addClass('disabled');
						$(this).click(function(){
							return false;	
						});
					}
				});	
			}
		}

		var addproduct = $('#content .addproduct', $main);
		if( addproduct.length > 0 )
		{
			Rmc.Product.init( addproduct );
		}
		
		var $switchLinks = $('ul.switch a');
		if ( $switchLinks.length )
		{
			Rmc.Common.switchLinks( $switchLinks );
		}
		
		/*var $defaultEquals = $('.equal-boxes-default .grid-content');
		if ( $defaultEquals.length )
		{
			Site.Commen.defaultEqualHeight( $defaultEquals );
		}*/
		
		/*var $equals = $('.products p');
		if ( $equals.length )
		{
			Rmc.Common.equalHeight( $equals, 'a' );
		}*/
		
		// Produkt popup
		var $colorboxElements = $("div.view-product .image a.popup, div.view-product .images a.popup");
		if ( $colorboxElements.length )
		{
			$colorboxElements.colorbox({
				opacity:"0.7",
				transition:"none",
				photo: true
			});
		}
		
		var $tables = $("table", $main);
		if ( $tables.length )
		{
			$tables.each(function(){
				$(this).find('tr:even').addClass('even');
			});
		}
		
		var $tblDefVal = $('form');
		if ($tblDefVal.length)
		{
			Rmc.RemoveDefaultInputValue.init( $tblDefVal );
		}
		
		var $deleveryForm = $('#formLevering', $main);
		if ($deleveryForm.length)
		{
			Rmc.Delivery.init( $deleveryForm );
		}
		
		var $controlForm = $('#formKontroller', $main);
		if ($controlForm.length)
		{
			var $betalingButton = $('input#betaling', $controlForm);
			$betalingButton.click( function(event){
				if ( !$controlForm.find('input#betingelser').is(':checked') )
				{
					// Betingelser er ikke accepteret
					event.preventDefault();
					
					Rmc.Product.showBobble( $betalingButton, 'betalingBobble', 'Accepter venligst handelsbetingelserne' );
				}
			});
		}
	},
	
	Product:
	{
		init: function( addproduct )
		{
			addproduct.closest('form').unbind('submit');
			addproduct.closest('form').submit(function(){
				var antal = $('#antal').val(),
					id = $('#produktid').val();
				
				Rmc.Product.sendProductCall( addproduct, id, antal );
				
				return false;
			});
		},
		sendProductCall: function( button, id, antal )
		{
			$.ajax({
				type: 'GET',
				cache: false,
				url: '/?ajax=true',
				data: 'type=addproduct&id=' + id + '&amount=' + antal,
				dataType: 'html',
				success: function(result)
				{
					if (result != 'error')
					{
						$('#service .basket').replaceWith(result);
						
						$('#service .basket')
							.animate({
								backgroundColor: '#ddd'
							}, 100)
							.animate({
								backgroundColor: '#fff'
							}, 2000);
						
						var text = antal > 1 ? 'Dine varer er nu tilføjet til indkøbskurven' : 'Din vare er nu tilføjet til indkøbskurven';
						
						Rmc.Product.showBobble( button, id, text );
					}
				},
				error: function(result)
				{
					Rmc.Product.showBobble( button, id, 'Der skete en fejl, kontakt RMC Motor' );
				}
			});
		},
		showBobble: function( button, id, text )
		{
			var $oldBobble = $('#main').find('div.bobble.id'+id);
			if ( $oldBobble.length )
			{
				$oldBobble.remove();
			}
			
			var position = button.position(),
				$main = $('#main').append('<div class="bobble id'+id+'">'+text+'</div>');
			
			if ( $.browser.msie )
			{
				$main.find('div.bobble.id'+id)
					.css({
						top: position.top - 61,
						left: position.left + 12
					})
					.show()
					.animate({
						top: position.top - 71
					}, 300)
					.delay(5000)
					.animate({
						top: position.top - 81
					}, 300)
					.queue(function() {
						$(this).remove();
					});
			}
			else
			{
				$main.find('div.bobble.id'+id)
					.css({
						opacity: 0,
						top: position.top - 61,
						left: position.left + 12
					})
					.show()
					.animate({
						opacity: 1,
						top: position.top - 71
					}, 300)
					.delay(5000)
					.animate({
						opacity: 0,
						top: position.top - 81
					}, 300)
					.queue(function() {
						$(this).remove();
					});
			}
		}
	},
	
	Delivery:
	{
		time: 600,
		init: function( $deleveryForm )
		{
			var $leveringssadresse = $('ul#leveringssadresse', $deleveryForm).hide(),
				$fakturering = $('#fakturering', $deleveryForm).hide(),
				$levering = $('#levering', $deleveryForm).hide();
			
			Rmc.Delivery.initKundetype( $deleveryForm );
			Rmc.Delivery.initLeveringssAdresse( $deleveryForm );
			Rmc.Delivery.initButton( $deleveryForm );
		},
		initKundetype: function( $deleveryForm )
		{
			var $kundeTypeHeadline = $('h2#kundeTypeHeadline', $deleveryForm),
				$kundetype = $('#kundetype', $deleveryForm),
				$fakturering = $('#fakturering', $deleveryForm),
				$firma = $('#firma', $deleveryForm).parent(),
				$telefax = $('#telefax', $deleveryForm).parent(),
				$levFirma = $('#lev-firma', $deleveryForm).parent(),
				$leveringssadresse = $('ul#leveringssadresse', $deleveryForm),
				$fragtButton = $('input#fragt', $deleveryForm).hide(),
				$backButton = $('input#back', $deleveryForm).hide();
			
			$kundeTypeHeadline.hide();
			$fakturering.hide();
			
			// Skjul firmafelter fra start
			$firma.hide()
			$levFirma.hide();
			$telefax.hide();
			
			$kundetype.find("input[type='radio']").bind('changeInput', function(){
				switch ($(this).val())
				{
					case 'privat':
						// Vis kun felter for privat
						$kundeTypeHeadline.text('Kundetype: Privat').fadeIn();
						$fakturering.showNice();
						$firma.hideNice().children('input').removeClass('required').trigger('checkValidation');
						$levFirma.hideNice().children('input').removeClass('required').trigger('checkValidation');
						$telefax.hideNice();
						break;
					
					case 'erhverv':
						// Vis kun felter for erhverv
						$kundeTypeHeadline.text('Kundetype: Erhverv').fadeIn();
						$fakturering.showNice();
						$firma.showNice().children('input').addClass('required').trigger('checkValidation');
						$levFirma.showNice().children('input').addClass('required').trigger('checkValidation');
						$telefax.showNice();
						break;
				}
				
				$fragtButton.delay(Rmc.Delivery.time).fadeIn();
				$backButton.delay(Rmc.Delivery.time).fadeIn();
				$leveringssadresse.fadeIn();
			});
			$kundetype.find("input[type='radio']").change(function(){
				$(this).trigger('changeInput');
			});
			
			$kundetype.find("input[type='radio']:checked").trigger('changeInput');
		},
		initLeveringssAdresse: function( $deleveryForm )
		{
			var $leveringssadresse = $('ul#leveringssadresse', $deleveryForm),
				$levInput = $leveringssadresse.find("input[type='checkbox']"),
				$levering = $('#levering', $deleveryForm),
				$faktureringsTitle = $('#fakturering p.title', $deleveryForm);
			
			$levInput.bind('checkChecked', function(){
				if ( $(this).is(':checked') )
				{
					$levering.showNiceLeft();
					$faktureringsTitle.text('Fakturerings adresse');
					
					// Remove validation
					$levering.find('input.required-disabled').removeClass('required-disabled').addClass('required').trigger('checkValidation');
				}
				else
				{
					$levering.hideNiceLeft();
					$faktureringsTitle.text('Fakturering og leverings adresse');
					
					// Add validation
					$levering.find('input.required').removeClass('required').addClass('required-disabled').trigger('checkValidation');
				}
			}).trigger('checkChecked');
			
			$levInput.click( function(){
				$(this).trigger('checkChecked');
			});
		},
		initButton: function( $deleveryForm )
		{
			var $fragtButton = $('input#fragt', $deleveryForm);
			
			$fragtButton.click( function(event){
				var $visibleInputs = $deleveryForm.find('input:visible');
				$visibleInputs.trigger('checkValidation');
				
				if ( $deleveryForm.find('div.error:visible').length > 0 )
				{
					// There is errors in form
					event.preventDefault();
					
					Rmc.Product.showBobble( $fragtButton, 'fragt', 'Udfyld venligst alle felter korrekt!' );
				}
			});
		}
	},
	
	Common:
	{
		/*defaultEqualHeight: function( $equals )
		{
			var tallest = 0;
			
			$equals.each(function() {
				var thisHeight = $(this).height();
				if ( thisHeight > tallest )
				{
					tallest = thisHeight;
				}
			});
			
			$equals.height(tallest);
		},
		equalHeight: function( $equals, measuredElement )
		{
			var tallest = 0,
				$group = $();
			
			$equals.each(function(i) {
				var thisHeight = $(this).find(measuredElement).height();
				if ( thisHeight > tallest )
				{
					tallest = thisHeight;
				}
				
				$group = $group.add( $(this) );
				
				if ( $(this).hasClass('last') && i > 0 )
				{
					$group.find(measuredElement).height(tallest);
					
					tallest = 0;
					$group = $();
				}
			});
			
			$group.find(measuredElement).height(tallest);
		}*/
		switchLinks: function( $switchLinks )
		{
			if ( $switchLinks.parents('.small-switch').length )
			{
				// Disable animation
				return;
			}
			
			$switchLinks.each(function()
			{
				$(this).hover(
					function()
					{
						$(this).find('img:last').stop().animate({
							'opacity': 0
						}, 250);
					},
					function()
					{
						$(this).find('img:last').stop().animate({
							'opacity': 1
						}, 250);
					}
				);
			});
		}
	},
	
	RemoveDefaultInputValue:
	{
		init: function($form)
		{
			$form.each(function()
			{
				var $thisForm = $(this),
					$inputItems = $thisForm.find('input.defaultvalue, textarea.defaultvalue');
				
				if ($inputItems.length)
				{
					$inputItems.each(function()
					{
						Rmc.RemoveDefaultInputValue.setRemoveAction( $(this), $thisForm );
					});
				}
			});
		},
		setRemoveAction: function( $inputitem, $form )
		{
			$form.submit(function()
			{
				if ($inputitem.val() == $inputitem.attr("title"))
				{
					$inputitem.val("");
				}
				
				return true;
			});

			// Udfyld value hvis den er tom
			if ( $inputitem.val() == '' )
			{
				$inputitem.val( $inputitem.attr("title") ).addClass('enable-default-color');
			}
			
			$inputitem.bind("focus", function(event)
			{
				if ($inputitem.val() == $inputitem.attr("title"))
				{
					$inputitem.val("").removeClass('enable-default-color');
				}
			})
			.bind("blur", function(event)
			{
				if ($inputitem.val() == "")
				{
					$inputitem.val( $inputitem.attr("title") ).addClass('enable-default-color');
				}
			});
		}
	}
	
};

(function($){
	$.fn.showNice = function()
	{
		if ( $.browser.msie )
		{
			this.stop(true, true).animate({
				height: 'show'
			}, Rmc.Delivery.timer);
		}
		else
		{
			this.stop(true, true).animate({
				opacity: 'show',
				height: 'show'
			}, Rmc.Delivery.timer);
		}
		
		return this;
	},
	$.fn.hideNice = function()
	{
		if ( $.browser.msie )
		{
			this.stop(true, true).animate({
				height: 'hide'
			}, Rmc.Delivery.timer);
		}
		else
		{
			this.stop(true, true).animate({
				opacity: 'hide',
				height: 'hide'
			}, Rmc.Delivery.timer);
		}
		
		return this;
	},
	$.fn.showNiceLeft = function()
	{
		if ( $.browser.msie )
		{
			this.stop(true, true).animate({
				width: 'show'
			}, Rmc.Delivery.timer);
		}
		else
		{
			this.stop(true, true).animate({
				opacity: 'show',
				width: 'show'
			}, Rmc.Delivery.timer);
		}
		
		return this;
	},
	$.fn.hideNiceLeft = function()
	{
		if ( $.browser.msie )
		{
			this.stop(true, true).animate({
				width: 'hide'
			}, Rmc.Delivery.timer);
		}
		else
		{
			this.stop(true, true).animate({
				opacity: 'hide',
				width: 'hide'
			}, Rmc.Delivery.timer);
		}
		
		return this;
	}
})(jQuery);

function searchString( arrayToSearch, stringToSearch )
{
	arrayToSearch.sort();
	
	for ( var i = 0; i < arrayToSearch.length; i++)
	{
		if (arrayToSearch[i] == stringToSearch)
			return true;
	}
	
	return false;
}

$(document).ready(Rmc.domready);
