(function($) {
    $.fn.product = function(options, productid) {

        var defaults = {
            zoomitem: '#zoom',
            thumbnailfolder: 'thumbnail',
            largefolder: 'large',
            zoomfolder: 'zoom',
            base: "http://www.grahamandgreen.co.uk/stormsites/gandg/images/products/",
            imagesuffix: ".jpg",
            singleaddtobasket: true
        };
        var options = $.extend(defaults, options);
        var zoomoptions = {
            zoomWidth: 320, 	//zoomed width default width
            zoomHeight: 320, 	//zoomed div default width
            xOffset: 45, 	//zoomed div default offset
            yOffset: -15,
            title: false,
            showPreload: false,
            preloadText: '<br/>loading...'
        };

        var zoomoptions2 = {
            zoomWidth: 320, 	//zoomed width default width
            zoomHeight: 320, 	//zoomed div default width
            xOffset: 45, 	//zoomed div default offset
            yOffset: -15,
            title: false,
            showPreload: true,
            preloadText: '<br/>loading...'
        };
        return this.each(function() {
    
            $(".sizeinfo .qty").change(function() {
                var currenttab = $(this).closest(".sizeinfo ").attr("id");
                $(".sizeinfo:not(" + "#" + currenttab + " ) .qty").not(this).each(function() {
                    $(this).find("option[value='0']").attr('selected', 'selected');
                });
            });
            $("#swatch li a:first").css("border", "1px solid #888888");
          
            $("#swatch li a").each(function() {

                $(this).click(function() {

                    //hack: one size selection by defaulting to the first selected option
                    //$("#selectedSku").val($($(this).attr("href")).find(".skuselection").attr("id")    );

                    $("#swatch li a").css("border", "1px solid #ffffff");
                    $(this).css("border", "1px solid #888888");
                    $("#selectedcolourname").text($("img", this).attr("alt"));
                    if ($(this).hasClass("switchswatch")) {

                        var newsrc = $("img", this).attr("src").replace("swatches", options.largefolder).replace(".gif", ".jpg");
                        var largesrc = $("img", this).attr("src").replace("swatches", options.zoomfolder).replace(".gif", ".jpg");
                        $(options.zoomitem).removeData();
                        $(options.zoomitem).attr("href", largesrc);
                        $("#mainimage").attr("src", newsrc);
                        $(options.zoomitem).jqzoom(zoomoptions2);
                    }
                });
            });

            var lastcount = 1;
            var sizeoflist = 4;

            function imgurls(size, id, indexer) {
                var arraysize = size

                var urls = new Array(arraysize + 1);

                if (indexer == 0) {
                    urls[0] = id;
                }
                else {
                    urls[0] = id + "_" + (indexer);
                }
                urls[1] = id + "_" + (indexer + 1);
                urls[2] = id + "_" + (indexer + 2);
                urls[3] = id + "_" + (indexer + 3);

                lastcount = lastcount + size;
                return urls;
            };

            function imgmovurls(size, id, indexer) {
                var arraysize = size

                var urls = new Array(arraysize + 1);

                urls[0] = id + "_mov";

                return urls;
            };

            function complete(data) {
                var img = new Image;
                img.src = data.image;
                if (data.found) {
                    var lielement = $("<li class='jcarousel-item index-" + (data.index + 1) + "'></li>").append(img);
                    if (data.index == 0) {
                        $("#mycarousel").prepend(lielement);
                    }
                    else {
                        $("#mycarousel").append(lielement);
                    }
                    lielement.click(function() {
                        $('#filmholder').hide();
                        $('#productdetails').show();
                        var newsrc = img.src.replace(options.thumbnailfolder, options.largefolder);
                        var largesrc = img.src.replace(options.thumbnailfolder, options.zoomfolder);
                        $(options.zoomitem).removeData();
                        $(options.zoomitem).attr("href", largesrc);
                        $("#mainimage").attr("src", newsrc);
                        $(options.zoomitem).jqzoom(zoomoptions2);
                        $('#openfull').attr("href", largesrc);
                    });
                }
            };
            function completeMov(data) {
                var img = new Image;
                img.src = data.image;
                if (data.found) {

                    $('#player').attr("href", '/stormsites/toast/movies/products/' + productid + '.flv');

                    var lielement = $("<div class='jcarousel-item movieimage'></div>").append(img);
                    $("#mymovcarousel").append(lielement);
                    lielement.click(function() {
                        $('#filmholder').toggle();
                        $('#productdetails').toggle();
                    });

                }
            };

            function finish(data) {

                if (data.failed == 0) {
                    var urls = imgurls(sizeoflist, productid, lastcount);

                    $.preload(urls, {
                        base: options.base,
                        ext: options.imagesuffix,
                        onComplete: complete,
                        onFinish: finish
                    });

                } else {

                    if (((data.failed == sizeoflist) && (lastcount == 9)) || lastcount == 5) {

                    }
                    else {
                        $('#carsouselwrap').removeClass();
                        jQuery("#mycarousel").jcarousel({
                            vertical: true,
                            scroll: 2
                        });

                    }
                }
            };

            function finishMov(data) {

                if (data.failed == 0) {



                    flowplayer("player", "/stormsites/toast/movies/flowplayer.commercial-3.1.2.swf", {
                        key: '$27abd0e2b7695ac95d7'
                    });


                }
            };

            $(options.zoomitem).jqzoom(zoomoptions);


            var urls = imgurls(sizeoflist, productid, lastcount);

            $.preload(urls, {
                base: options.base,
                ext: options.imagesuffix,
                onComplete: complete,
                onFinish: finish
            });

            var urlsMov = imgmovurls(1, productid, 1);
            $.preload(urlsMov, {
                base: options.base,
                ext: options.imagesuffix,
                onComplete: completeMov,
                onFinish: finishMov
            });
        });
    };
})(jQuery);