var SelectedThumbImage = 0;

//Global Declorations 
var resourcesFolder = "/resources";

function formValidateHandler(valid, element, event) {
    alert('df');
    if (!valid) {
        return false;
    }
    return true;
}

//Add Event on load
window.addEvent('domready', function () {

    new Form.Validator($('AddToBasketForm'), {
        stopOnFailure: true,
        formValidate: formValidateHandler,
        evaluateOnSubmit: true,
        elementFail: function (el) {
            el.SetStyle({ "border": "solid 1px red" })
        },
        serial: false
    });

    if ($("Customization")) {
        $('Customization').setProperty("value", "");
        swfobject.embedSWF("/resources/flash/plTextUpdater.swf", "plFlash", "150", "170", "10.0.0");

        $("Customization").addEvent("keyup", function () {
            var FlashElement = getFlashMovie('plTextUpdater');
            var TextBoxElement = $('Customization');
            var filteredString = FilterString(TextBoxElement.getProperty("value"), "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");
            filteredString = filteredString.toUpperCase();
            $('Customization').setProperty("value", filteredString);

            FlashElement.sendTextToFlash(filteredString);
        });
    }

    $$('.ProductImageThumb').each(function (e, i, a) {
        e.addEvent("click", function () {
            // alert('sdfsdf');
            var newSrc = e.getFirst('.ThumbProductImagePath').get("html");
            $('MainImageDIV').set("html", newSrc);
            $('MainImageDIV').setStyle("display", "block");
            
//            var Amorph = $('MainImageDIV').get("morph");

//            Amorph.addEvent("complete", function () {
//                //Change src = to selecte source
//                
//            });

//            $('MainImageDIV').set({ "display": "none" });
        });

        e.addEvent("mouseenter", function () {
            //Hide Grey Layer
            e.getFirst('.ThumbProductImageOver').setStyle("opacity", "0");
        });

        e.addEvent("mouseleave", function () {
            e.getFirst('.ThumbProductImageOver').setStyle("opacity", "1");
        });
    });

    // alert('sdfsd');
    $$('.SelectSizeDropDownRow').each(function (e, i, a) {
        e.addEvent("mouseenter", function () {
            e.setStyle("background-color", "#c4c4c4");
        });

        e.addEvent("mouseleave", function () {
            e.setStyle("background-color", "#ffffff");
        });

        $('StockImg').setStyle('visibility', 'hidden');

        e.addEvent("click", function () {
            //alert(e.getFirst(".ID").get("text").trim());
            //Set Value of SelectSizeValue
            $('SelectSizeValue').setProperty("text", e.getFirst(".Value").getProperty("text"));

            //Set Stock Indicator
            if (e.getFirst(".Stock").get("text").trim().toInt() > 0) {
                //alert(e.getFirst(".Stock").get("text"));
                $('StockImg').setStyle('visibility', 'inherit');
                $('StockImg').setProperty("src", "/Resources/images/layout/stockHigh.png");
                $('StockImg').setProperty("alt", "Currently In Stock");
                $('StockText').set("text", "Currently In Stock");
                $('StockText').setStyle('color', '#000');
            }
            else {
                //alert(e.getFirst(".Stock").get("text"));
                $('StockImg').setStyle('visibility', 'inherit');
                $('StockImg').setProperty("src", "/Resources/images/layout/stockLow.png");
                $('StockImg').setProperty("alt", "Not in Stock");
                $('StockText').set("text", "NOT IN STOCK");
                $('StockText').setStyle('color', '#F00');
            }

            //Set ProductVariantID Value
            $('ProductVariantID').setProperty("value", e.getFirst(".ID").get("text").trim());

            //Hide size menu
            $('SelectSizeDropDown').setStyle("opacity", 0);
        });

    });

    //Add Click listners for SelectSizeValue
    $('SelectSizeValue').addEvent("click", function () {
        //show/hide size selector
        if ($('SelectSizeDropDown').getStyle("opacity") == "0") {
            $('SelectSizeDropDown').setStyle("opacity", 1);
        }
        else {
            $('SelectSizeDropDown').setStyle("opacity", 0);
        }
    });

    $('SelectSizeValue').getParent().addEvent("mouseleave", function () {
        //show/hide size selector

        $('SelectSizeDropDown').morph({ "opacity": 0 });

    });


    if ($("AddToBasketDescriptionPositioner")) {
        //Add Event Listner to submit form
        $("AddToBasketDescriptionPositioner").addEvent("click", function () {
            CheckAddToBasketForm();
        });
    }

    $('SelectSizeDropDown').setStyle("opacity", 0);

    $('Quantity').addEvent("keyup", function () {
        $('Quantity').setProperty("value", FilterString($('Quantity').getProperty("value"), "0123456789"));
    });

});

function getFlashMovie(movieName) {
    var isIE = navigator.appName.indexOf("Microsoft") != -1;
    if (isIE) {
        return swfobject.getObjectById(movieName);
    }
    else {
        return document[movieName];
    }
}

function SendTextToSWF(str) {
    var fm = getFlashMovie("plTextUpdater");
    if (fm) {
        fm.sendTextToFlash(str);
    }
}

function FilterString(str, allowedChars) {
    var returnString = "";
    //alert(str.length);
    for (var i = 0; i < str.length; i++) {
        //alert(allowedChars.indexOf(str.charAt(i)) + " : " + str.charAt(i));
        if (allowedChars.indexOf(str.charAt(i)) > -1) {
            returnString = returnString + str.charAt(i);
        }
    }

    return returnString;
}

function CheckAddToBasketForm() {
    var BasketAddOK = true;
    msg = "";

    //Check size selected
    var ProductVariantID = $("ProductVariantID").getProperty("value");
    var stock = 0;

    if (!IsNumeric(ProductVariantID) || ProductVariantID == "") {
        BasketAddOK = false;
        msg += "Please select size for the item\n";
    }

    var Quantity = 0;

    //Check Quantity is numeric
    if (!IsNumeric($("Quantity").getProperty("value"))) {
        BasketAddOK = false;
        msg += "Please enter a number in the quantity field\n";
    }
    else {
        Quantity = $("Quantity").getProperty("value").toInt();
    }

    if ($("RecipientName") && $("RecipientName").getProperty("value") == "") {
        BasketAddOK = false;
        msg += "Please complete the recipients name\n";
    }

    $$(".SelectSizeDropDownRow").each(function (e, i, a) {
        var ID = e.getFirst(".ID").get("text").trim();

        if (ID == ProductVariantID.toInt()) {
            stock = e.getFirst(".Stock").get("text").trim().toInt();
            if (stock <= 0) {
                BasketAddOK = false;
                msg += "This item is temporarily out of stock.\n";
            }
            else if (Quantity <= 0) {
                BasketAddOK = false;
                msg += "Please select a quantity greater than zero.\n";
            }
            else if (stock < Quantity && stock > 0) {
                BasketAddOK = false;
                msg += "The quantity you have selected is not available, you may currently add up to " + stock + " of this item.\n";
            }
        }
    });

    if (!$('AddToBasketForm').validate()) {
        BasketAddOK = false;
        msg += "The information you have entered for personalisation has some issues.\n";
    }

    if (BasketAddOK) {
        $('AddToBasketForm').submit();
    }
    else {
        alert(msg);
    }
}

function IsNumeric(sText) {
    var ValidChars = "0123456789.";
    var IsNumber = true;
    var Char;

    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;

}

String.prototype.trim = function () { return this.replace(/^\s+|\s+$/g, ''); }
