function estimateQuantity() {

	// error code:
	// 0 = OK
	// 1 = min/max quantity exceeds
	// 2 = quantity in stock exceeds
	
	reset();
	
	var cartItemQtyArray = getCartItemQuantity();
	var foundError = false;
	var emptyFields = 0;
	for(var key in cartItemQtyArray) {
		var code = validateQty(key, cartItemQtyArray);
		if (code == 0) {
			document.getElementById("cartItem["+key+"].quantity").style.border = "1px solid #B3B3B3";
		} else {
			document.getElementById("cartItem["+key+"].quantity").style.border = "1px solid #FF0000";
			foundError = true;
	
			document.getElementById('errorDiv').style.display = 'block';
			
			if (code == 1) {
				document.getElementById('commonError').style.display = 'block';
			} else if (code == 2) {
				document.getElementById('maxError').style.display = 'block';
			}
		}
		if (cartItemQtyArray[key] == '') {
			emptyFields++;
		}
	}

	if (emptyFields == cartItemQtyArray.length) {
		document.getElementById('errorDiv').style.display = 'block';
		document.getElementById('commonError').style.display = 'block';
	}

	if (!foundError && emptyFields < cartItemQtyArray.length) {
		document.getElementById("addSkuToCartForm").submit(); ;
	}
}

function reset() {
	document.getElementById('commonError').style.display = 'none';
	document.getElementById('maxError').style.display = 'none';
	document.getElementById('errorDiv').style.display = 'none';
}

function getCartItemQuantity() {
	var cartItemQtyArray = new Array();
	var index = 0;
	var cartItemId = "cartItem[INDEX].quantity";
	var curCartItemNode = document.getElementById(cartItemId.replace("INDEX", index));
	while (curCartItemNode != null) {
		cartItemQtyArray[index] = curCartItemNode.value;
		index ++;
		curCartItemNode = document.getElementById(cartItemId.replace("INDEX", index));
	}
	return cartItemQtyArray;
}

function validateQty(key, cartItemQtyArray){ 
	
	var qty = cartItemQtyArray[key];
	var qtyInt = parseInt(qty);

    if (qty != "" && isNaN(qtyInt)){
        return 1;
    }
    
	if (qtyInt <= 0 || qtyInt > 9999){
        return 1;
    }

    var maxEl = document.getElementById("cartItem["+key+"].quantityInStock");
	if (maxEl != null && qtyInt > maxEl.value) {
		return 2;
	}
    
	return 0;
}

