function Order() 
{	
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
	* PRIVATE PROPERTIES
	* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
	var className 					= Order;				// Holds a pointer to the class.
	var cart						= null;
	var cartList					= '';
	var emptyCart					= '<tr class="odd"><td colspan="7">Du har inga varor i din varukorg.</td></tr>';
	var sum							= 0;
	
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
	* PUBLIC PROPERTIES
	* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
	
	
	
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
	* CONSTRUCTOR
	* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
	function constructor()
	{
		sessvars.cart = (sessvars.cart == undefined) ? {} : sessvars.cart;
		cart = sessvars.cart;
	}
	
	
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
	* PRIVATE METHODS
	* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
	
	function private()
	{
	}
	
	//// GET SUM ////////////////////////////////////////////////////////////////////
	function getSum ()
	{	
		
		sum = 0;
		
		$.each
		(
		 	cart,
			function ()
			{
				sum += parseInt(this.price) * parseInt(this.amount);
			}
		);
		
		return sum;
	}
	
	//// GENERTE MAIL ///////////////////////////////////////////////////////////////
	function generateMail ()
	{	
		return $.toJSON(cart);
	}
	
	//// SEND MAIL /////////////////////////////////////////////////////////////////
	function sendMail ()
	{
		var str = $('#cartForm').serialize();
		
		$.ajax(
		{
			type: "POST",
			url: "/Templates/Public/Utils/sendMail.php",
			data: str,
			success: function(msg)
			{
				
				switch(msg)
				{
					case 'error1' :
						$('#orderInfo .main, #orderInfo .success').hide(500, function () {$('#orderInfo .error').show(500);});
					break;
					
					case 'error2' :
						$('#orderInfo .main, #orderInfo .success').hide(500, function () {$('#orderInfo .error').show(500);});
					break;
					
					default :
						sessvars.$.clearMem();
						$('#orderInfo .success span').text($('input#email').val());
						$('.cartList .item').remove();
						$('.cartList .sum').text('0:-');
						$('#cartForm input').val('').trigger('blur');
						$('#cartForm textarea').val(generateMail());
						$('#orderInfo .main, #orderInfo .error').hide(500, function () {$('#orderInfo .success').show(500);});
					break;
				}
			}
		}
		);
		
		return false;
	}
	
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
	* PUBLIC METHODS
	* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
	
	//// ADD TO CART ///////////////////////////////////////////////////////////////
	this.addToCart = function (e)
	{
		eval($(this).attr('rel'));
		book.amount = $('#amount').val();
		cart[book.id] = book;
		
		$(this).fadeOut(300);
		
		return false;
	}
	
	//// GET CART LENGTH ///////////////////////////////////////////////////////////////
	this.getCartLength = function ()
	{
		var x = 0;
		for (prop in cart)
			x++;
		return x;
	}
	
	//// DELETE FROM CART //////////////////////////////////////////////////////////
	this.deleteFromCart = function ()
	{
		delete cart[this.rel];
		$(this).parents('tr').remove();
		$('.cartList .sum').text(getSum()+':-');
		
		if(self.getCartLength() == 0)
		{
			$('.cartList .header').after(emptyCart);
		}
			
		return false;
	}
	
	
	//// GENERATE CART ///////////////////////////////////////////////////////////////
	this.generateCart = function ()
	{	
		var i = 0;
		
		if(self.getCartLength() == 0)
		{
			cartList = emptyCart;
		}
		else
		{
			$.each
			(
				cart, 
				function ()
				{
					var even = (i % 2) ? 'even' : 'odd';
					cartList += '<tr class="item '+even+'"><td class="id">'+this.id+'</td><td class="title">'+this.title+'</td><td class="authour">'+this.authour+'</td><td class="delete"><a class="linkButton style" rel="'+this.id+'" href="#">Ta bort</a></td><td class="amount">'+this.amount+'</td><td class="aprice">'+this.price+'</td><td class="price">'+this.price*this.amount+':-</td></tr>';	
					i++;
				}
			);
		}
		
		$('.cartList .header').after(cartList);
		$('.cartList .sum').text(getSum()+':-');
		$('.cartList .linkButton').bind('click', this.deleteFromCart);
		$('#mail').val(generateMail());
		$('#cartForm .cartFormBottom .middle').append('<a href="#" id="cartSubmit" class="linkButton style">Skicka in beställning</a>');
		$('#cartSubmit').bind('click', sendMail);
		styleLink();
	}
	
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
	* ENSURE SINGLETON PATTERN
	* DO NOT MODIFY!!!
	* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
	if (!className.instance) {constructor(); className.instance = this; className.instance.numInstances = 1; var self = className.instance; } else	{className.instance.numInstances++; delete Order }
	return className.instance;
	
}
