_addToCartProcessing = new Array();
var _autoRefillOrder = null;
var _autoRefillItem = null;

function addAutoRefillItem(autoRefillOrderId, visitorId, itemId, quantity, petId) {
	if (quantity == '') {
		alert("Quantity is a required field.");
		return false;
	}
	
	AutoRefillService.addAutoRefillItem(autoRefillOrderId, visitorId, itemId, quantity, petId, 1);
	return true;
}

function clearNotifications() {
	var elements = getElementsByClass('notification');
	for (var i=0;i<elements.length;i++) {
		elements[i].innerHTML = '';
		elements[i].style.display='none';
	}
}

function setNotification(id, text) {
	clearNotifications();
	if ($(id)) {
		$(id).style.display = 'block';
		$(id).innerHTML = text;
	}
}

function setAutoRefillOrder(autoRefillOrder) {
	_autoRefillOrder = autoRefillOrder;
}

function setAutoRefillItem(autoRefillItem) {
	_autoRefillItem = autoRefillItem;
}

function changeFrequency(id, frequency) {
	updateAutoRefillOrder(id, frequency, null, null, null);
	setNotification('autoRefill' + id + 'Notification', 'Frequency updated.');
}

function pauseAutoRefill(id, paused, pauseDays) {
	
	// Pause the auto refill now, indefinetly, if no pause date and no days passed.
	if(isNaN(paused) && pauseDays == '')
		paused = new Date();
	
	updateAutoRefillOrder(id, null, paused, pauseDays, null);
	setNotification('autoRefill' + id + 'Notification', 'AutoRefill Paused.');
}

function unPauseAutoRefill(id) {
	updateAutoRefillOrder(id, null, 'junk', '', null);
	setNotification('autoRefill' + id + 'Notification', 'AutoRefill Unpaused.');
}

function enableAutoRefill(id) {
	updateAutoRefillOrder(id, null, null, null, false);
	setNotification('autoRefill' + id + 'Notification', 'AutoRefill Enabled.');
}

function cancelAutoRefill(id) {
	updateAutoRefillOrder(id, null, null, null, true);
	setNotification('autoRefill' + id + 'Notification', 'AutoRefill Canceled.');
}

function autoRefillCancelNotice(auto_refill) {
	AutoRefillService.sendAutoRefillOrderCancelNotice(auto_refill);
}

function updateAutoRefillOrder(id, frequency, paused, pauseDays, canceled) {

	AutoRefillService.getAutoRefillOrderById(id, { callback:setAutoRefillOrder, async:false } );

	if (frequency != null)
		_autoRefillOrder.frequency = frequency;

	if (paused != null) {
		if (isNaN(paused))
			_autoRefillOrder.paused = null;
		else
			_autoRefillOrder.paused = paused;
	}

	if (pauseDays != null) {
		if (isNaN(pauseDays) || pauseDays == '')
			_autoRefillOrder.pauseDays = null;
		else
			_autoRefillOrder.pauseDays = pauseDays;
	}

	if (canceled != null) {
		_autoRefillOrder.canceled = canceled;
                AutoRefillService.cancelAutoRefillOrder(_autoRefillOrder.id,'Other', 1, true, autoRefillCancelNotice(_autoRefillOrder));
        } else {
        	AutoRefillService.updateAutoRefillOrder(_autoRefillOrder,autoRefillCancelNotice(_autoRefillOrder));
        }
}

function changeAutoRefillItemQuantity(id, quantity) {
	updateAutoRefillItem(id, quantity, null);
	setNotification('autoRefillItem' + id + 'Notification', 'Quantity updated.');
}

function removeAutoRefillItem(id) {
	if (confirm('Are you sure?')) {
		updateAutoRefillItem(id, null, true);
		setNotification('autoRefillItem' + id + 'Notification', 'This AutoRefill item has been removed.');
	}
}

function updateAutoRefillItem(id, quantity, remove) {

	AutoRefillService.getAutoRefillItemById(id, { callback:setAutoRefillItem, async:false } );

	if (quantity != null)
		_autoRefillItem.quantity = quantity;

	if (remove != null) {
		AutoRefillService.removeAutoRefillItem(_autoRefillItem.id, 1, "Removed by client", true);
		return;
	}

	AutoRefillService.updateAutoRefillItem(_autoRefillItem);
} 

function doAddToCart(productId, skuId) {
	var warn = false;
	var obj = null;
	var errMessage = '';

	document.theForm.productId.value = productId;
	document.theForm.skuId.value = skuId;

	var quantity;
	var minqty = 1;
	if ($('quantity' + productId)) {
		obj = $('quantity' + productId).parentNode;
		quantity = $('quantity' + productId).value;
		if ($('minqty' + productId)) {
		    minqty = $('minqty' + productId).value;
		}
	}
	else {
		obj = $('quantity').parentNode;
		quantity = $('quantity').value;
	}

	if (quantity == '' || quantity <= 0) {
		alert('You must enter a Quantity for this item.');
		return false;
	}

	if(quantity < minqty){
        alert("This product (" + $('productname' + productId).innerHTML + ") requires a minimum order quantity of " + minqty)
        return false;
	}

	if (document.theForm.itemQuantity)
		document.theForm.itemQuantity.value = quantity;
	else
		document.theForm.quantity.value = quantity;
	
	_addToCartProcessing.push(new Array(obj, obj.innerHTML));
	
	con = document.createElement('p');
	con.style.margin = 0;
	con.style.padding = 0;
	con.style.position = "relative";
	con.style.top = "5px";
	con.innerHTML = '<img style="display:block;top:2px;margin:0 5px 0 0;float:left;" src="/images/loading_black.gif" alt="" /> adding item to cart...';
	obj.innerHTML = '';
	obj.appendChild(con);

	submitAddToCartForm();
	return true;
}

function showAddPetDialog() {
	dojo.widget.byId('petInsertDialog').show();
}

function showAutoRefill(skuId) {
	dojo.widget.byId('autoRefillDialog').show();
}

function submitAddToCartForm() {
	submitForm(reloadCart, reloadCart, reloadCart, 10, dojo.byId("addToCartForm"));
}

function submitPetInsertForm() {
	if (isUserLoggedIn()) {
		submitForm(alert,alert,alert,10,$('petInsertForm'));
	}
	else {
		cookieUpForm($('petInsertForm')); // Put this form in a cookie to submit later.
	}
}

function submitForm(loadCallback, errorCallback, timeoutCallback, timeoutSeconds, formNode) {
	var kw = {
		url: formNode.action,
		load: loadCallback,
		error: errorCallback,
		timeoutSeconds: timeoutSeconds,
		timeout: timeoutCallback,
		formNode: formNode
	};
	dojo.io.bind(kw);
}

function submitFormGet(loadCallback, errorCallback, timeoutCallback, timeoutSeconds, url, formNode) {
	if (timeoutSeconds == null) { var timeoutSeconds = 10; }
	if (formNode == null) {
		var kw = {
			url: url,
			load: loadCallback,
			error: errorCallback,
			timeoutSeconds: timeoutSeconds,
			timeout: timeoutCallback
		}
	} else {
		var kw = {
			url: url,
			load: loadCallback,
			error: errorCallback,
			timeoutSeconds: timeoutSeconds,
			timeout: timeoutCallback,
			formNode: formNode
		}
	};
	dojo.io.bind(kw);
}

