try {
	document.execCommand("BackgroundImageCache", false, true);
} catch(err) {}

var Cart = {

	removeItem: function(linkObject) {
		var articleId = Util.findId($(linkObject).attr('id'));

		$.ajax({
			type: 'POST',
			url: '/order/remove-item',
			data: {'id': articleId},
			dataType: 'html',
			beforeSend: function() {
				// show loading
			},
			success: function(response) {
				$('#cart').html(response);
				Cart.addEvent();
			}
		});
	},

	removeSubItem: function(linkObject) {
		var articleId = $(linkObject).attr('id');

		$.ajax({
			type: 'POST',
			url: '/order/remove-item',
			data: {'sub_id': articleId},
			dataType: 'html',
			beforeSend: function() {
				// show loading
			},
			success: function(response) {
				$('#cart').html(response);
				Cart.addEvent();
			}
		});
	},


	addEvent: function() {
		$('.remove-item A').unbind('click');

		$('.remove-item A').click(function() {
			Cart.removeItem(this);
			return false;
		});
		$('.remove-sub-item A').unbind('click');

		$('.remove-sub-item A').click(function() {
			Cart.removeSubItem(this);
			return false;
		});
	}

};

var Order = {

	submitLogin: function() {
		$('#formAction').val('submitLogin');
		document.forms['privateForm'].submit();
	},

	submitCode: function() {
		$('#formAction').val('submitCode');
		document.forms['privateForm'].submit();
	},

	submitTwoCol: function(buttonObject) {
		var articleId = Util.findId($(buttonObject).attr('id'));
		$('#articleId').val(articleId);

		document.forms['twoColForm'].submit();
	},

	setDeliveryMethod: function(inputObject) {
		var method = $(inputObject).attr('id');

		if (method == 'pickUp') {
			$('#street').attr('disabled', 'disabled');
			$('#houseNumber').attr('disabled', 'disabled');
			$('#letterEntrance').attr('disabled', 'disabled');
			$('#floor').attr('disabled', 'disabled');
			$('#zip').attr('disabled', 'disabled');
			$('#city').attr('disabled', 'disabled');
			$('#additionalInfo').attr('disabled', 'disabled');
		} else {
			$('#street').removeAttr('disabled');
			$('#houseNumber').removeAttr('disabled');
			$('#letterEntrance').removeAttr('disabled');
			$('#floor').removeAttr('disabled');
			$('#zip').removeAttr('disabled');
			$('#city').removeAttr('disabled');
			$('#additionalInfo').removeAttr('disabled');
		}
	},

	setPreOrder: function(inputObject) {
		var method = $(inputObject).attr('id');

		if (method == 'isPreOrderYes') {
			$('#preOrderMonth').removeAttr('disabled');
			$('#preOrderDay').removeAttr('disabled');
			$('#preOrderTime').removeAttr('disabled');
		} else {
			$('#preOrderMonth').attr('disabled', 'disabled');
			$('#preOrderDay').attr('disabled', 'disabled');
			$('#preOrderTime').attr('disabled', 'disabled');
		}
	},

	setZipAndCity: function() {
		var streetName = $('#street').val();
		var houseNumber = $('#houseNumber').val();

		$.ajax({
			type: 'POST',
			url: '/order/street-data',
			data: {
				'streetName': streetName,
				'houseNumber': houseNumber
			},
			dataType: 'json',
			success: function(response) {
				if (response.zip != undefined) {
					$('#zip').val(response.zip);
				} else {
					$('#zip').val('');
				}
				if (response.city != undefined) {
					$('#city').val(response.city);
				} else {
					$('#city').val('');
				}
			}
		});
	},

	commentMaxLength: function(maxLength) {
		var textValue = $('#additionalInfo').val();

		if (textValue.length > maxLength) {
			$('#additionalInfo').val(textValue.substring(0, maxLength));
		}
	},

	submit: function() {
		$.ajax({
			type: 'POST',
			url: '/order/step3',
			dataType: 'json',
			beforeSend: function() {
				$('.order-loader').show();
			},
			success: function(response) {
				if (response.error) {
					$('.order-loader').hide();
					$('#order-error').dialog({ autoOpen: true, modal: true, width: 400, buttons: { "Ok": function() { $(this).dialog("close"); } } });
					$('#order-error P').text(response.error);
				} else if (response.url) {
					window.location = response.url;
				}
			},
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				$('.order-loader').hide();
				$('#order-error').dialog({ autoOpen: true, modal: true, width: 400, buttons: { "Ok": function() { $(this).dialog("close"); } } });
			}
		});
	},

	changeDepartment: function(selectObject) {
		var value = $(selectObject).val();

		$.ajax({
			type: 'POST',
			url: '/order/change-department',
			data: {selectedId: value},
			dataType: 'json',
			beforeSend: function() {
				Util.removeLoading('departmentName');
				Util.showLoading('departmentName');
			},
			success: function(response) {
				Util.removeLoading('departmentName');

				if (response.street) {
					$('#street').val(response.street);
					$('#houseNumber').val(response.houseNumber);
					$('#letterEntrance').val(response.letterEntrance);
					$('#floor').val(response.floor);
					$('#zip').val(response.zip);
					$('#city').val(response.city);
					$('#additionalInfo').val(response.additionalInfo);
				}
			}
		});
	},

	addEvents: function() {
		$('#submitLogin').click(function() {
			Order.submitLogin();
		});
		$('#submitCode').click(function() {
			Order.submitCode();
		});
		$('#submitAddress').click(function() {
			document.forms['addressForm'].submit();
		});
		$('#submitPayment').click(function() {
			document.forms['paymentForm'].submit();
		});
		$('#submitOrder').click(function() {
			Order.submit();
		});
		$('.submitTwoCol').click(function() {
			Order.submitTwoCol(this);
		});

		$('.delivery-method').change(function() {
			Order.setDeliveryMethod(this);
		});
		$('.is-preorder').change(function() {
			Order.setPreOrder(this);
		});

		$('select#departmentName').change(function() {
			Order.changeDepartment(this);
		});

		$('#houseNumber').blur(function() {
			Order.setZipAndCity(this);
		});
	}

};

var Address = {

	addressAutoComplete: function() {
		$('#street')
			.autocomplete(
				'/order/street',
				{
					cacheLength: 0,
					onItemSelect: Address.resetZipAndCity
				}
			)
			.keydown(function(e) {
				if (e.keyCode == 13) {
					$('.ac-results').hide();
					Address.resetZipAndCity();

					return false;
				}
			});
	},

	resetZipAndCity: function() {
		$('#zip').val('');
		$('#city').val('');
		$('#houseNumber').focus();
	}

};

var FiftyFifty = {

	pizzaOne: 0,
	pizzaTwo: 0,

	selectPizza: function(selectObject) {
		var articleId = $(selectObject).val();
		var cssId = $(selectObject).attr('id');

		$.ajax({
			type: 'GET',
			url: '/article/fifty-fifty-details/id/' + articleId,
			dataType: 'html',
			beforeSend: function() {
				Util.removeLoading(cssId);
				Util.showLoading(cssId);
			},
			success: function(response) {
				Util.removeLoading(cssId);

				if (response) {
					if (cssId == 'firstSelection') {
						FiftyFifty.pizzaOne = articleId;
					}
					if (cssId == 'secondSelection') {
						FiftyFifty.pizzaTwo = articleId
					}
					$('#' + cssId + 'Outer').html(response);

					ShowHide.addEvents();
				}
			}
		});
	},

	checkForm: function() {
		if (
			(FiftyFifty.pizzaOne > 0)
			&& (FiftyFifty.pizzaTwo > 0)
		) {
			document.forms['fiftyForm'].submit();
		} else {
			alert("Du må velge 2 halvdeler før du kan bestille en Fifty Fifty.");
			return false;
		}
	}

};

var Choice = {

	maxProducts: 0,

	updateCount: function() {
		var checked = $('#choices INPUT:checked').length;
		var checkboxes = $('#choices INPUT');

		if (checked >= Choice.maxProducts) {
			for (var i = 0; i < checkboxes.length; i++) {
				if (!checkboxes[i].checked) {
					$(checkboxes[i]).attr('disabled', 'disabled');
				}
			}
		} else {
			for (var i = 0; i < checkboxes.length; i++) {
				if ($(checkboxes[i]).attr('disabled')) {
					$(checkboxes[i]).removeAttr('disabled');
				}
			}
		}
	}

};

var ShowHide = {

	showHide: function(object) {
		var elem = $(object).next();

		if ($(elem).css('display') == 'none') {
			$(object).addClass('toggle-hide');
			$(object).removeClass('toggle-show');

			$(elem).css('display', 'block');
		} else {
			$(object).addClass('toggle-show');
			$(object).removeClass('toggle-hide');

			$(elem).css('display', 'none');
		}
	},

	addEvents: function() {
		$('.show-hide').unbind('click');

		$('.show-hide').click(function() {
			ShowHide.showHide(this);
		});
	}

};

var Util = {

	messageTimeoutId: null,

	findId: function(string) {
		var id = /\-(\d+)/.exec(string);
		if (
			(id != null)
			&& (id[1] != undefined)
		) {
			return id[1];
		} else {
			return null;
		}
	},

	showLoading: function(id) {
		$('#' + id).after('<img src="/img/indicator.gif" alt="" height="16" width="16" id="loading_' + id + '" class="loading" />');
	},

	removeLoading: function(id) {
		$('#loading_' + id).remove();
	},

	showErrors: function(errors) {
		var x;

		for (x in errors) {
			$('#' + x).after('<span class="error">' + errors[x] + '</span>');
			$('#' + x).parent().parent().addClass('error');
		}
	},

	showMessage: function(message) {
		if (this.messageTimeoutId) {
			clearTimeout(this.messageTimeoutId);
			$('#message').slideUp(300);
		}

		var fromLeft = ($(document).width() - $('#message').width()) / 2;

		$('#message').html('<p>' + message + '</p>');
		$('#message').css({'left': fromLeft + 'px'});
  		$('#message').slideDown(300);

  		this.messageTimeoutId = setTimeout(function() {
  			$('#message').slideUp(300);
  		}, 5000);
	}

};

var TextInput = {

	addDefault: function(id) {
		var title = $(id).attr('title');

		$(id).focus(function() {
			var value = $(id).val();

			if (value == title) {
				$(id)
					.val('')
					.css('color', '#111111');
			}
		});
		$(id).blur(function() {
			var value = $(id).val();

			if (value == '') {
				$(id)
					.val(title)
					.css('color', '#bbbbbb');
			}
		});
	}

};

$(document).ready(function() {

	$('#groups').innerfade({
		speed: 'slow',
		timeout: 4000,
		type: 'sequence',
		containerheight: 'auto'
	});

	Cart.addEvent();
	Order.addEvents();
	Address.addressAutoComplete();

	if ($('#pickUp').attr('checked')) {
		Order.setDeliveryMethod($('#pickUp'));
	}

	if ($('#isPreOrderYes').attr('checked')) {
		Order.setPreOrder($('#isPreOrderYes'));
	} else if ($('#isPreOrderNo').attr('checked')) {
		Order.setPreOrder($('#isPreOrderNo'));
	}

	$('#additionalInfo').bind('keyup blur', function() {
		Order.commentMaxLength(100);
	});

	$('#firstSelection, #secondSelection').change(function() {
		FiftyFifty.selectPizza(this);
	});

	$('.choice').change(function() {
		Choice.updateCount();
	});
	Choice.updateCount();

	ShowHide.addEvents();

	$('#contractSubmit').bind('click',function() {
		if ($('#confirmation').attr('checked')){
			$('#contractFrm').submit();
		} else {
			alert("Du må akseptere betingelsene.");
			return false;
		}
	});

	$.ui.dialog.defaults.bgiframe = true;
	$(".msg-error").dialog({ modal: true, width: 400, buttons: { "Ok": function() { $(this).dialog("close"); } } });
	$(".msg-alert").dialog({ modal: true, width: 400, dialogClass: 'alert', buttons: { "Ok": function() { $(this).dialog("close"); } } });

	TextInput.addDefault('#searchinput');
	TextInput.addDefault('#newsletter-email');

});