var menuMap = {
	tilbehør: 'tilbehoer'
};

var backupObject = new Object();

function screenDim()
{
	$('#dim')
		.css({'opacity': 0, 'width': '100%', 'height': '100%', 'display': 'block'})
		.fadeTo('fast', 0.95, function()
		{
			$('#payment-loading-dialog').fadeIn('slow');
		});
	
	$('html').addClass('no-overflow');
	$('body').addClass('no-overflow');
}

function screenDimWithDialog()
{
	$('#dim')
		.css({'opacity': 0, 'width': '100%', 'height': '100%', 'display': 'block'})
		.fadeTo('medium', 0.85, function()
		{
			$('html').addClass('no-overflow');
			$('body').addClass('no-overflow');
			
			$('#dialog').fadeIn('fast');
			$('#live-cart-container').delay(500).fadeIn('slow');
		});
	
	$('body').append('<div id="dialog" style="display: none;"></div>');
}

function screenNormal()
{
	$('#dim').fadeOut('fast', function()
	{
		$('html').removeClass('no-overflow');
		$('body').removeClass('no-overflow');
		
		$(this).css({'opacity': 0, 'width': 0, 'height': 0});
	});
	$('#dialog').remove();
	$('#live-cart-container').remove();
	
	return false;
}

function liveBasket(ajaxUrl, ajaxLoader, sender)
{
	$('body').append('<div id="live-cart-container" style="display: none;"></div>');
	$('#live-cart-container').html('<div class="ajax-loader"></div>');
	
	$('#dim').queue(function()
	{
		var ajaxOptions = {
			cache: false,
			url: ajaxUrl,
			success: function(data, textStatus, XMLHttpRequest)
			{
				$('#live-cart-container').queue(function()
				{
					$('#live-cart-container').fadeOut('slow', function()
					{
						$(this).html(data).fadeIn('slow');
					});
					
					$(this).dequeue();
				});
			}
		};
		
		if(sender.mode != undefined && sender.mode == 'edit')
		{
			ajaxOptions.data = 'item='+sender.item+'&page='+sender.page;
		}
		
		$.ajax(ajaxOptions);
		
		$(this).dequeue();
	});
}

function hideOrderItem(itemID)
{
	$('#'+itemID).parent('.select-box').hide().parentsUntil('div.item').parent('.item').addClass('highlight');
	return false;
}

function showOrderItem(itemID)
{
	$('#'+itemID).parent('.select-box').fadeIn('slow').parentsUntil('div.item').parent('.item').removeClass('highlight');
	
	return false;
}

function pushToLiveCart(self, params)
{
	hideOrderItem($(self).attr('id'));
	
	var obj = $(self).attr('name');
	var eType = obj.replace(/(.*)\[(.*)\]\[(.*)\]/ig, '$2');
	var eID = obj.replace(/(.*)\[(.*)\]\[(.*)\]/ig, '$3');
	
	var saleID = 'sales';
	var itemID = [eType, eID];
	for(var _index in itemID)
	{
		saleID += '[' + itemID[_index] + ']';
	}
	
	$('input[name="'+saleID+'"]').attr('checked', 'checked');

	var menuID = $('#menuId').val();
	
	var ajaxOptions = {
		url: params.itemPriceURL,
		data: 'type='+params.type+'&menu='+menuID+'&id='+eID,
		success: function(data, textStatus, XMLHttpRequest)
		{
			var currentItems = $('#live-cart .'+eType).children('.item').length;
			$('#live-cart .'+eType)
				.append(data)
				.children('.item').last().addClass((currentItems%2==0) ? 'even' : 'odd');
			
			if(currentItems > 0)
			{
				$('#live-cart .'+eType).children('.item').last().delay(500).slideDown('slow', function()
				{
					$('#'+$(self).attr('id')).parent('.select-box').next('.unselect-box').fadeIn();
					updateLiveCartPrice(params.cartPriceURL, {validateURL: params.validateURL});
				});
			}
			else
			{
				$('#live-cart .'+eType).slideDown('slow').children('.item').delay(1000).slideDown('slow', function()
				{
					$('#'+$(self).attr('id')).parent('.select-box').next('.unselect-box').fadeIn();
					updateLiveCartPrice(params.cartPriceURL, {validateURL: params.validateURL});
				});
			}
			
			$('#live-cart .'+eType).children('.item').last().find('a').click(function()
			{
				pullFromLiveCart(this, {cartPriceURL: params.cartPriceURL, validateURL: params.validateURL});
				return false;
			});
		}
	};

	$.ajax(ajaxOptions);
	
	return false;
}

function pullFromLiveCart(self, params)
{
	var mID = $(self).attr('rel');
	var mType = $(self).parent().parent().parent().attr('class');
	mType = mType.replace(/(\sspace)/ig, '');
	var target = ['OrderSelectForm', mType, mID];
	target = target.join('_');
	
	$('#'+target).attr('checked', '');
	$('#'+target).parent('.select-box').next('.unselect-box').hide();
	
	$(self).parent().parent().slideUp('slow', function()
	{
		var parent = $(this).parent();
		
		if(parent.children('.item').length < 2)
		{
			parent.slideUp('slow', function()
			{
				$(this).children('.item').remove();
			});
		}
		else
		{
			$(this).remove();
			
			parent.children('.item').each(function(index, e)
			{
				$(this).removeClass('even odd');
				if(index%2==0)
				{
					$(this).addClass('even');
				}
				else
				{
					$(this).addClass('odd');
				}
			});
		}
	});
	
	$(self).parent().parent().queue(function()
	{
		var saleID = 'sales';
		var itemID = [mType, mID];
		for(var _index in itemID)
		{
			saleID += '[' + itemID[_index] + ']';
		}
		
		if($('input[name="'+saleID+'"]').attr('checked') == undefined)
		{
			var saleID = 'sales';
			mType = mType.replace(/(extra\_)/ig, '');
			var itemID = [mType, mID];
			for(var _index in itemID)
			{
				saleID += '[' + itemID[_index] + ']';
			}
		}
		
		$('input[name="'+saleID+'"]').attr('checked', '');
		
		showOrderItem(target);
		$('#'+target).parent('.select-box').queue(function()
		{
			updateLiveCartPrice(params.cartPriceURL, {validateURL: params.validateURL});
			$(this).dequeue();
		});
		
		$(this).dequeue();
	});
	
	return false;
}

function updateLiveCartPrice(url, params)
{
	if(params.validateURL != undefined)
	{
		$.ajax({
			type:'POST',
			cache:false,
			url: params.validateURL,
			data: $('#nh0').parents('form').serialize(),
			success: function(data, textStatus, XMLHttpRequest)
			{
				var submitButton = $('#live-submit').parent().parent();

				data = $.parseJSON(data);
				$('#live-cart').find('.note').removeClass('error ok').addClass('ok');

				$('#menuTitle .msg').removeClass('error ok').addClass('ok');

				backupObject.isValidated = true;
				for(index in backupObject.menuStates)
				{
					backupObject.menuStates[index] = true;
				}

				if(data.hasErrors)
				{
					$('#live-submit').die('click');
					submitButton.removeClass('active-button').addClass('inactive-button');

					for(var index in data.errorMessages)
					{
						if(menuMap[index] != undefined)
						{
							index = menuMap[index];
						}
						$('#live-cart .'+index).find('.note').removeClass('error ok').addClass('error');

						backupObject.menuStates[index] = false;

						if(backupObject.currentTab == index)
						{
							$('#menuTitle .msg').removeClass('error ok').addClass('error');
						}
					}
				}
				else
				{
					$('#live-submit').live('click', triggerSubmit);
					submitButton.removeClass('inactive-button').addClass('active-button');
				}
			}
		});
	}
	
	$.ajax({
		url: url,
		type: 'post',
		data: $('#nh0').parents('form').serialize(),
		success: function(data)
		{
			$('#live-price .unit-price-head').stop(true, true).fadeOut('fast', function()
			{
				$(this).removeClass('underline');
				if(data != '-') $(this).addClass('underline');
				
				//	fix element doesn't do fadeIn stuff in IE 8
				if(jQuery.browser.msie)
				{
					$(this).html(data).show();
				}
				else
				{
					$(this).html(data).fadeIn('slow');
				}
			});
		}
	});
}

function noEnter(field, event)
{
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	
	if (keyCode == 13)
	{
		return false;
	}
	
	return true;
}

function queryCart(url)
{
	$.ajax({
		cache: false,
		url: url,
		success: function(data, textStatus, XMLHttpRequest)
		{
			$('#cart-info').html(data).hide().animate({width: '280px'}, 1000, function()
			{
				$('#cart-info .sidebar').fadeIn(1000);
			});
		}
	});
}
/*
function autofillDeliveryInfo(data)
{
	if(data.length > 2)
	{
		data = $.parseJSON(data);
		
		$('#_home').fadeOut('slow', function()
		{
			for(attribute in data)
			{
				$('input[name*='+attribute+']').val(data[attribute]);
			}

			$(this).fadeIn();
		});
	}
}
*/
function beginAjaxDeliveryInfo(XMLHttpRequest)
{
	$('#phoneLine-loader').fadeIn();
}

function endAjaxDeliveryInfo(XMLHttpRequest, textStatus)
{
	$('#phoneLine-loader').fadeOut();
}

function autoCompleteDeliveryInfo(event, item)
{
	var idPrefix = 'DeliveryForm_';
	
	if($.browser.msie && $.browser.version < 8)
	{
		$('#'+idPrefix+'firstname').val(item[1]);
		$('#'+idPrefix+'lastname').val(item[2]);
		$('#'+idPrefix+'homeStreet').val(item[3]);
		$('#'+idPrefix+'homeNumber').val(item[4]);
		$('#'+idPrefix+'homePostcode').val(item[5]);
		$('#'+idPrefix+'homeCity').val(item[6]);
		$('#'+idPrefix+'homePhone').val(item[7]);
		$('#'+idPrefix+'email').val(item[8]);
		$('#'+idPrefix+'companyName').val(item[9]);
		
		if($('#DeliveryForm_useSameAddress_0').attr('checked'))
		{
			$('#_home input').each(function()
			{
				var target = $(this).attr('id');
				target = target.replace(/([\w]+)\_([\w]+)/ig, '$2');

				if(target.match(/(home)/ig))
				{
					target = target.replace(/(home)/ig, 'delivery');

					if(target == 'deliveryPhone')
					{
						return true;
					}

					$('#_delivery input#DeliveryForm_'+target).val($(this).val()).attr('readonly', true);
					
					if(target == 'deliveryPostcode')
					{
						$(this).trigger('change');
					}
				}
			});
		}
	}
	else
	{
		$('#_home').fadeOut(function()
		{
			$('#'+idPrefix+'firstname').val(item[1]);
			$('#'+idPrefix+'lastname').val(item[2]);
			$('#'+idPrefix+'homeStreet').val(item[3]);
			$('#'+idPrefix+'homeNumber').val(item[4]);
			$('#'+idPrefix+'homePostcode').val(item[5]);
			$('#'+idPrefix+'homeCity').val(item[6]);
			$('#'+idPrefix+'homePhone').val(item[7]);
			$('#'+idPrefix+'email').val(item[8]);
			$('#'+idPrefix+'companyName').val(item[9]);

			$(this).fadeIn(function()
			{
				if($('#DeliveryForm_useSameAddress_0').attr('checked'))
				{
					$('#_home input').each(function()
					{
						var target = $(this).attr('id');
						target = target.replace(/([\w]+)\_([\w]+)/ig, '$2');

						if(target.match(/(home)/ig))
						{
							target = target.replace(/(home)/ig, 'delivery');

							if(target == 'deliveryPhone')
							{
								return true;
							}

							$('#_delivery input#DeliveryForm_'+target).val($(this).val()).attr('readonly', true);
							
							if(target == 'deliveryPostcode')
							{
								$(this).trigger('change');
							}
						}
					});
				}
			});
		});
	}
}

function autoCompleteBrochure(event, item)
{
	var idPrefix = 'SelBrochure_';
	
	$('#_home').fadeOut(function()
	{
		$('#'+idPrefix+'name').val(item[1]+' '+item[2]);
		$('#'+idPrefix+'address').val(item[3]+' '+item[4]);
		$('#'+idPrefix+'zip').val(item[5]);
		$('#'+idPrefix+'city').val(item[6]);
		$('#'+idPrefix+'phone').val(item[7]);
		$('#'+idPrefix+'email').val(item[8]);
		
		$(this).fadeIn();
	});
}

