var AddToCart = Class.create({
	initialize: function() {
		this.addToCartContainer = 'addToCartContainer';
		this.addToCartButton = 'addToCartButton';
	},
	hide: function() {
		if ($(this.addToCartContainer)) {
			$(this.addToCartContainer).fade({ duration: 0.3 });
		}
	},
	show: function() {
		if ($(this.addToCartContainer)) {
			$(this.addToCartContainer).appear({ duration: 0.3 });
		}
	},
	fade: function() {
		if ($(this.addToCartContainer) && $(this.addToCartContainer).visible()) {
			if ($(this.addToCartButton) && ($(this.addToCartButton).getStyle('visibility') == 'visible') || ($(this.addToCartButton).getStyle('visibility') == 'inherit')) {
				new Effect.Opacity($(this.addToCartButton), {
					from: 1.0,
					to: 0.0,
					duration: 0.3,
					afterFinish: function() {
						$(this.addToCartButton).setStyle({ visibility: 'hidden' });
					} .bind(this)
				});
			}
		}
	},
	appear: function() {
		if ($(this.addToCartContainer) && $(this.addToCartContainer).visible()) {
			if ($(this.addToCartButton) && $(this.addToCartButton).getStyle('visibility') == 'hidden') {
				$(this.addToCartButton).setStyle({ visibility: 'visible' });
				new Effect.Opacity($(this.addToCartButton), {
					from: 0.0,
					to: 1.0,
					duration: 0.3
				});
			}
		}
	}
});

var addToCart;
document.observe('dom:loaded', function() {
	addToCart = new AddToCart();
	if ($('isProductPage')) {
		addToCart.fade();
	}
});

function replaceImageAndZoom(element, size, image) {
    if ($(element)) {
        $(element).src = '/GetDynamicImage.aspx?path=' + image + '&w=' + size + '&h=' + size;
        $(element).up().href = '/itemimages/' + image;
    }
}

function addSelectOption(selectObj, text, value, isSelected) {
    if (selectObj != null && selectObj.options != null) {
        selectObj.options[selectObj.options.length] = new Option(text, value, false, isSelected);
    }
}

function clearColors() {
    if ($('ddlColor')) {
        var aOptions = $('ddlColor').getElementsBySelector('option');
        for (var i = 1, len = aOptions.length; i < len; ++i) {
            aOptions[i].remove();
        }
    }
}

function populateColors() {
    addToCart.fade();
    replaceImageAndZoom('imgMain', 380, $('defaultImage').value);
    $('options').value = '';
    if ($('ddlColor') && $('productOptionValues')) {
        clearColors();
        if ($('ddlSize').value != '') {
            var sSize = $('ddlSize').value.split('=')[1];
            var aValues = new Array();
            var aOptions = $('productOptionValues').getElementsBySelector('input[@type="hidden"]');
            for (var i = 0, len = aOptions.length; i < len; ++i) {
                var aOption = aOptions[i].value.split('|')[1].split(';');
                var iQty = aOptions[i].value.split('|')[3];
                if (iQty != '' && iQty > 0) {
                    if (aOption.length != 2) { alert('Warning:  The options for this product were not set up correctly.  Please contact an administrator.'); break; }
                    else {
                        var sValue = aOption[0].split('=')[1];
                        if (aOption[1].split('=')[1] == sSize && aValues.indexOf(sValue) == -1) {
                            aValues.splice(aValues.length + 1, 0, sValue);
                        }
                    }
                }
            }

            for (var i = 0, len = aValues.length; i < len; ++i) {
                addSelectOption($('ddlColor'), aValues[i], 'color=' + aValues[i], false);
            }

            if (aValues.length > 0) {
                if (!$('ddlColor').up().visible()) $('ddlColor').up().slideDown({ duration: 0.3 });
                if ($('outOfStockMessage').visible()) $('outOfStockMessage').slideUp({ duration: 0.3 });
            }
            else {
                if ($('ddlColor').up().visible()) $('ddlColor').up().slideUp({ duration: 0.3 });
                if (!$('outOfStockMessage').visible()) $('outOfStockMessage').slideDown({ duration: 0.3 });
            }
        }
        else {
            if ($('ddlColor').up().visible()) $('ddlColor').up().slideUp({ duration: 0.3 });
            if ($('outOfStockMessage').visible()) $('outOfStockMessage').slideUp({ duration: 0.3 });
        }
    }
}

function validateOptions() {
    $('options').value = '';
    if ($('ddlColor') && $('ddlColor').value != '' && $('selectedOptions') && $('productOptionValues')) {
        var selectedOptions = $('ddlColor').value + ';' + $('ddlSize').value;

        var aOptions = $('productOptionValues').getElementsBySelector('input[@type="hidden"]');
        var optionFound = false;
        for (var i = 0, len = aOptions.length; i < len; ++i) {
            var aOption = aOptions[i].value.split('|')[1];
            var dOffset = aOptions[i].value.split('|')[2];
            var iQty = aOptions[i].value.split('|')[3];
            var sImage = aOptions[i].value.split('|')[4];
            var sSKU = aOptions[i].value.split('|')[5];
            if (aOption.split(';').uniq().sort().join(';') == selectedOptions.split(';').uniq().sort().join(';') && iQty != "" && iQty > 0) {
                $('selectedOptions').value = selectedOptions;
                if (sImage != '') replaceImageAndZoom('imgMain', 380, sImage);
                else replaceImageAndZoom('imgMain', 380, $('defaultImage').value);
                setSKU(sSKU);
                setPrice(dOffset);
                optionFound = true;
                break;
            }
        }

        //  Take care of our add to cart button
        if (optionFound) {
            addToCart.appear();
        }
        else {
            addToCart.fade();
        }
    }
}

function validateForm() {
    var isValid = false;
    if ($('selectedOptions') && $('productOptionValues')) {
        var aOptions = $('productOptionValues').getElementsBySelector('input[@type="hidden"]');
        for (var i = 0, len = aOptions.length; i < len; ++i) {
            var aOption = aOptions[i].value.split('|')[1];
            var iQty = aOptions[i].value.split('|')[3];
            if (aOption.split(';').uniq().sort().join(';') == $('selectedOptions').value.split(';').uniq().sort().join(';') && iQty != "" && iQty > 0) {
                $('options').value = aOptions[i].value.split('|')[0] + ';' + aOptions[i].identify();
                isValid = true;
                break;
            }
        }
    }
    return isValid;
}

function setPrice(offset) {
    var dOffset = (isNaN(offset) ? 0 : parseFloat(offset));
    
    if ($('regularPriceBase') && $('regularPrice')) {
        $('regularPrice').innerHTML = '$' + formatCurrency(parseFloat($('regularPriceBase').value) + dOffset);
    }

    if ($('salePriceBase') && $('salePrice')) {
        $('salePrice').innerHTML = '$' + formatCurrency(parseFloat($('salePriceBase').value) + dOffset);
    }
}

function setSKU(sku) {
    if (sku.length > 0 && $('SKU') && $('defaultSKU')) {
        $('SKU').innerHTML = sku;
    }
    else {
        $('SKU').innerHTML = $('defaultSKU').value;
    }
}

function formatCurrency(amount) {
    var i = parseFloat(amount);
    if (isNaN(i)) { i = 0.00; }
    var minus = '';
    if (i < 0) { minus = '-'; }
    i = Math.abs(i);
    i = parseInt((i + .005) * 100);
    i = i / 100;
    s = new String(i);
    if (s.indexOf('.') < 0) { s += '.00'; }
    if (s.indexOf('.') == (s.length - 2)) { s += '0'; }
    s = minus + s;
    return s;
}