jQuery(document).ready(
	function() {
		setupAjaxFields();
	}
);

function setChanges(changes) {
	for(var i in changes) {
		var change = changes[i];
		if(typeof(change.parameter) != 'undefined' && typeof(change.value) != 'undefined') {
			var parameter = change.parameter;
			var value = escapeHTML(change.value);
			if(change.id) {
				var id = '#' + change.id;
				jQuery(id).attr(parameter, value);
			}
			else if(change.name) {
				var name = change.name;
				jQuery('[name=' + name + ']').each(
					function() {
						jQuery(this).attr(parameter, value);
					}
				);
			}
		}
	}
}

function setupAjaxFields() {
	jQuery('input.ajaxQuantityField').each(
		function() {
			jQuery(this).attr('disabled', false);
			jQuery(this).change(
				function() {
					var name = jQuery(this).attr('name')+ '_SetQuantityLink';
					var setQuantityLink = jQuery('[name=' + name + ']');
					if(jQuery(setQuantityLink).length > 0) {
						setQuantityLink = jQuery(setQuantityLink).get(0);
						if(! this.value) this.value = 0;
						else this.value = this.value.replace(/[^0-9]+/g, '');
						var url = jQuery('base').attr('href') + setQuantityLink.value + '?quantity=' + this.value;
						jQuery.getJSON(url, null, setChanges);
					}
				}
			);
		}
	);
	jQuery('#ajaxPaxField').change(
		function() {
			var newPAX = jQuery(this).val();
			if(confirm("are you sure you want to update all the quantity boxes?")) {
				jQuery('input.ajaxQuantityField').val(newPAX);
				var url = jQuery('base').attr('href') + currentURL + '/ajaxUpdatePAX/' + newPAX;
				jQuery.getJSON(url, null, setChanges);
			}
		}
	)
	jQuery('select.ajaxCountryField').each(
		function() {
			jQuery(this).attr('disabled', false);
			jQuery(this).change(
				function() {
					var id = '#' + jQuery(this).attr('id') + '_SetCountryLink';
					var setCountryLink = jQuery(id);
					if(jQuery(setCountryLink).length > 0) {
						setCountryLink = jQuery(setCountryLink).get(0);
						var url = jQuery('base').attr('href') + setCountryLink.value + '/' + this.value;
						jQuery.getJSON(url, null, setChanges);
					}
				}
			);
		}
	);
}


function escapeHTML(str) {
   var div = document.createElement('div');
   var text = document.createTextNode(str);
   div.appendChild(text);
   return div.innerHTML;
}

var warnedAboutRemoval = false;

function removeItem(URLSegment, id) {
	if(!warnedAboutRemoval) {
		var a = confirm('This will remove this item from your cart without the ability to undo.  Are you sure?');
		if(a) {
			warnedAboutRemoval = true;
		}
		else {
			warnedAboutRemoval = false;
			return true;
		}
	}
	var template = '';
	var url = '';
	if(jQuery("#CartHolder").length > 0) {
		jQuery('#product-' + URLSegment+ ' .add').fadeIn(1000);
		template = 'CartHolder';
		url = URLSegment+'/ajaxRemoveMenuItem/'+id
	}
	else {
		template = 'OrderInformation_Editable';
		url = URLSegment+'/ajaxCheckoutRemoveMenuItem/' + id
	}
	loadAjax(template, url);
	return true;
}

function addItem(URLSegment, id, el) {
	url = URLSegment+ '/ajaxAddMenuItem/' + id;
	loadAjax('CartHolder', url);
	jQuery(el).fadeOut();
	return true;
}