/*
 * Find Your Safe Configurator
 * Copyright 2010 Martino Flynn
 * Author Mike Ruschak
 *
 * Version 1.0
 *
 * This plugin allows the Find Your Safe page to work properly.
 */

(function ($) {
    $.fn.findyoursafe = function (options) {
        var version = "1.0";

        //var defaults = {
        //speed: 300
        //};


        // Set plugin default options
        var defaults = {
            locale: 'US',
            sore_id: '37'
        };

        var options = $.extend(defaults, options);
        var locale = options.locale + "_";
        if (options.locale == "US") {
            locale = "";
        }
        var self = this;

        self.q1_documents = false;
        self.q1_digital_media = false;
        self.q1_electronics = false;
        self.q1_guns = false;
        self.q1_collectibles = false;
        self.q1_jewelry = false;
        self.q1_cash = false;
        self.q2_fire = false;
        self.q2_water = false;
        self.q2_security = false;
        self.q3_small = false;
        self.q3_medium = false;
        self.q3_large = false;
        self.q3_xl = false;
        self.q3_everything = false;
        self.q4_elock = false;
        self.q4_combo = false;
        self.q4_key = false;
        self.q4_dual = false;
        self.q4_dual_combo = false;
        self.q4_latch = false;
        self.q4_everything = false;
        self.q5_affordable = false;
        self.q5_middle = false;
        self.q5_best = false;
        self.q5_everything = false;

        self.showSelections = false;

        self.productCount = 0;

        self.init = function () {
            //self.chkBrowserSupport();

            self.loadProductsXML();

            self.buildChoices();

            $("#slidedeck_frame .resetFindYourSafe").click(self.startOver);
            $("#slidedeck_frame #startOver").click(self.startOver);
        };

        //self.chkBrowserSupport = function() {


        //};

        self.loadProductsXML = function () {
            $.ajax({
                url: "/media/xml/findYourSafeXML.aspx",
                type: 'GET',
                data: { 'locale': options.locale, 'store_id' : options.store_id},
                success: self.parseProductsXML
            });
        };

        self.startOver = function (e) {
            self.q1_documents = false;
            self.q1_digital_media = false;
            self.q1_electronics = false;
            self.q1_guns = false;
            self.q1_collectibles = false;
            self.q1_jewelry = false;
            self.q1_cash = false;
            self.q2_fire = false;
            self.q2_water = false;
            self.q2_security = false;
            self.q3_small = false;
            self.q3_medium = false;
            self.q3_large = false;
            self.q3_xl = false;
            self.q3_everything = false;
            self.q4_elock = false;
            self.q4_combo = false;
            self.q4_key = false;
            self.q4_dual = false;
            self.q4_dual_combo = false;
            self.q4_latch = false;
            self.q4_everything = false;
            self.q5_affordable = false;
            self.q5_middle = false;
            self.q5_best = false;
            self.q5_everything = false;

            $("#slidedeck_frame .fys-choice").removeClass('active');
            $("#fys-yc-columns img").hide();

            $('.slidedeck').slidedeck().goTo(1);

            self.filterResults();

            e.preventDefault();

            _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'RESET']);



        };

        self.parseProductsXML = function (xmlData) {
            var productID = 1;
            var productOutput = '';

            $(xmlData).find('product').each(function () {
                var $product = $(this);

                var productFilterClass = '';
                var productName = $product.find("productName").text();
                var productLink = $product.find("productLink").text();
                var productImage = $product.find("productImage").text();

                var protectDocuments = Boolean($("protectWhat item:contains('Documents')", $product).text());
                var protectDigitalMedia = Boolean($("protectWhat item:contains('Digital Media')", $product).text());
                var protectElectronics = Boolean($("protectWhat item:contains('Electronics')", $product).text());
                var protectGuns = Boolean($("protectWhat item:contains('Guns')", $product).text());
                var protectCollectibles = Boolean($("protectWhat item:contains('Collectibles')", $product).text());
                var protectJewelry = Boolean($("protectWhat item:contains('Jewelry')", $product).text());
                var protectCash = Boolean($("protectWhat item:contains('Cash')", $product).text());

                var waterProtection = parseInt($product.find("protectionWater").text());
                var fireProtection = parseInt($product.find("protectionFire").text());
                var securityProtection = parseInt($product.find("protectionSecurity").text());

                var safeSize = $product.find("safeSize").text();
                var safeLockType = $product.find("safeLockType").text();
                var safeCost = $product.find("safeCost").text();

                if (protectDocuments == true) {
                    productFilterClass += "protect-documents ";
                }

                if (protectDigitalMedia == true) {
                    productFilterClass += "protect-digital-media ";
                }

                if (protectElectronics == true) {
                    productFilterClass += "protect-electronics ";
                }

                if (protectElectronics == true) {
                    productFilterClass += "protect-electronics ";
                }

                if (protectGuns == true) {
                    productFilterClass += "protect-guns ";
                }

                if (protectCollectibles == true) {
                    productFilterClass += "protect-collectibles ";
                }

                if (protectJewelry == true) {
                    productFilterClass += "protect-jewelry ";
                }

                if (protectCash == true) {
                    productFilterClass += "protect-cash ";
                }

                if (waterProtection == 1) {
                    productFilterClass += "water-resistant ";
                }

                if (fireProtection == 1) {
                    productFilterClass += "fire-resistant ";
                }

                if (securityProtection == 1) {
                    productFilterClass += "security-resistant ";
                }

                if (safeSize == "Small") {
                    productFilterClass += "size-small ";
                }

                if (safeSize == "Medium") {
                    productFilterClass += "size-medium ";
                }

                if (safeSize == "Large") {
                    productFilterClass += "size-large ";
                }

                if (safeSize == "XL") {
                    productFilterClass += "size-xl ";
                }

                if (safeLockType == "Elock") {
                    productFilterClass += "lock-elock ";
                }

                if (safeLockType == "Key") {
                    productFilterClass += "lock-key ";
                }

                if (safeLockType == "Combination") {
                    productFilterClass += "lock-combo ";
                }

                if (safeLockType == "Dual") {
                    productFilterClass += "lock-dual ";
                }

                if (safeLockType == "Dual-Combination") {
                    productFilterClass += "lock-dual-combo ";
                }

                if (safeLockType == "Latch") {
                    productFilterClass += "lock-latch ";
                }

                if (safeCost == "Affordable") {
                    productFilterClass += "cost-affordable ";
                }

                if (safeCost == "Middle") {
                    productFilterClass += "cost-middle ";
                }

                if (safeCost == "Best") {
                    productFilterClass += "cost-best ";
                }

                var tracking = "_gaq.push(['_trackEvent', '" + locale + "FIND_YOUR_SAFE', 'PRODUCT_CLICK', '" + productName + "']);";

                productFilterClass = jQuery.trim(productFilterClass);

                productOutput += "<li data-id=\"" + productID + "\" class=\"" + productFilterClass + "\">\n";
                productOutput += "\t<a href=\"" + productLink + "\" onClick=\"" + tracking + "\">\n";
                productOutput += "\t\t<img src=\"/images/products/Thumbnails/" + productImage + "\" width=\"60\" height=\"60\" />\n";
                productOutput += "\t\t<div class=\"peril_badges\">\n";

                if (waterProtection == 1) {
                    productOutput += "\t\t\t<img src=\"/images/peril_water_mini.gif\" alt=\"Water\" />\n";
                }

                if (fireProtection == 1) {
                    productOutput += "\t\t\t<img src=\"/images/peril_fire_mini.gif\" alt=\"Fire\" />\n";
                }

                if (securityProtection == 1) {
                    productOutput += "\t\t\t<img src=\"/images/peril_security_mini.gif\" alt=\"Security\" />\n";
                }

                productOutput += "\t\t</div>\n";
                productOutput += "\t\t<h3>" + productName + "</h3>\n";
                productOutput += "\t</a>\n";
                productOutput += "</li>\n";


                productID += 1;
            });

            $(productOutput).appendTo("#product-results");

            self.products = $("#product-results");
            self.products_data = self.products.clone();
        };

        self.runAfterQuicksand = function () {
            if (self.showSelections == false) {
                $("#fys-yc-columns").show("slide", { direction: "up" }, 500);
                self.showSelections = true;
            }
        };

        self.filterResults = function () {

            self.products_subset = self.products_data.find("li");

            $("#msg_no_products").hide(); // Hide no products message

            var q1_query_str = '';
            var q2_query_str = '';
            var q3_query_str = '';
            var q4_query_str = '';
            var q5_query_str = '';


            // Question 1 Filtering
            if (self.q1_documents == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'protect-documents']);
                q1_query_str += ".protect-documents";
            }

            if (self.q1_digital_media == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'protect-media']);
                q1_query_str += ".protect-digital-media";
            }

            if (self.q1_electronics == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'protect-electronics']);
                q1_query_str += ".protect-electronics";
            }

            if (self.q1_guns == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'protect-guns']);
                q1_query_str += ".protect-guns";
            }

            if (self.q1_collectibles == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'protect-collectibles']);
                q1_query_str += ".protect-collectibles";
            }

            if (self.q1_cash == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'protect-cash']);
                q1_query_str += ".protect-cash"
            }

            if (self.q1_jewelry == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'protect-jewelry']);
                q1_query_str += ".protect-jewelry";
            }

            if (q1_query_str.length > 0) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'protect-everything']);
                self.products_subset = self.products_subset.filter(q1_query_str);
            }

            // Question 2 Filtering
            if (self.q2_fire == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'fire-resistant']);
                q2_query_str += ".fire-resistant";
            }

            if (self.q2_water == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'water-resistant']);
                q2_query_str += ".water-resistant";
            }

            if (self.q2_security) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'security-resistant']);
                q2_query_str += ".security-resistant";
            }

            if (q2_query_str.length > 0) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'protect-type-all']);
                self.products_subset = self.products_subset.filter(q2_query_str);
            }

            // Question 3 Filtering
            if (self.q3_small == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'size-small']);
                q3_query_str = ".size-small";
            } else if (self.q3_medium == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'size-medium']);
                q3_query_str = ".size-medium";
            } else if (self.q3_large == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'size-large']);
                q3_query_str = ".size-large";
            } else if (self.q3_xl == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'size-xl']);
                q3_query_str = ".size-xl";
            }

            if (q3_query_str.length > 0) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'size-everything']);
                self.products_subset = self.products_subset.filter(q3_query_str);
            }

            // Question 4 Filtering
            if (self.q4_elock == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'lock-elock']);
                q4_query_str = ".lock-elock";
            } else if (self.q4_combo == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'lock-combo']);
                q4_query_str = ".lock-combo";
            } else if (self.q4_key == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'lock-key']);
                q4_query_str = ".lock-key";
            } else if (self.q4_dual == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'lock-dual']);
                q4_query_str = ".lock-dual";
            } else if (self.q4_dual_combo == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'lock-dual-combo']);
                q4_query_str = ".lock-dual-combo";
            }
            else if (self.q4_latch == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'lock-latch']);
                q4_query_str = ".lock-latch";
            }

            if (q4_query_str.length > 0) {
                self.products_subset = self.products_subset.filter(q4_query_str);
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'lock-everthing']);
            }

            // Question 5 Filtering
            if (self.q5_affordable == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'cost-affordable']);
                q5_query_str = ".cost-affordable";
            } else if (self.q5_middle == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'cost-middle']);
                q5_query_str = ".cost-middle";
            } else if (self.q5_best == true) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'cost-best']);
                q5_query_str = ".cost-best";
            }

            if (q5_query_str.length > 0) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'cost-everything']);
                self.products_subset = self.products_subset.filter(q5_query_str);
            }

            self.products.quicksand(self.products_subset, { easing: 'easeInQuad' }, self.runAfterQuicksand);

            self.product_count = self.products_subset.length;

            // Display that no products are available.
            if (self.product_count == 0) {
                _gaq.push(['_trackEvent', +locale + 'FIND_YOUR_SAFE', 'CLICK', 'no-products']);
                $("#msg_no_products").show();
            }
        };

        self.forceRadioButtons = function (question) {
            switch (question) {
                case 3:
                    $("#q3-small, #q3-medium, #q3-large, #q3-xl, #q3-everything").removeClass('active');
                    this.q3_small = this.q3_medium = this.q3_large = this.q3_xl = this.q3_everything = false;
                    $("#question_03_choices img").hide();
                    break;
                case 4:
                    $("#q4-elock, #q4-combo, #q4-key, #q4-dual, #q4-dual-combo, #q4-everything, #q4-latch").removeClass('active');
                    this.q4_elock = this.q4_combo = this.q4_key = this.q4_dual = this.q4_dual_combo = this.q4_latch =  this.q4_everything = false;
                    $("#question_04_choices img").hide();
                    break;
                case 5:
                    $("#q5-affordable, #q5-middle, #q5-best, #q5-everything").removeClass('active');
                    this.q5_affordable = this.q5_middle = this.q5_best = this.q5_everything = false;
                    $("#question_05_choices img").hide();
                    break;
                default:
                    alert("ERROR: This question is not setup for radio buttons.");
            }
        };

        self.buildChoices = function () {
            $("#slidedeck_frame .fys-choice").click(function (event) {

                var id = $(this).attr("id");

                switch (id) {
                    // Question 1 Choices             
                    case 'q1-documents':
                        if (self.q1_documents == true) {
                            self.q1_documents = false;
                            $(this).removeClass('active');
                            $("#sel-q1-documents").hide();
                        } else {
                            self.q1_documents = true;
                            $(this).addClass('active');
                            $("#sel-q1-documents").show();
                        }
                        break;

                    case 'q1-digital-media':
                        if (self.q1_digital_media == true) {
                            self.q1_digital_media = false;
                            $(this).removeClass('active');
                            $("#sel-q1-digital-media").hide();
                        } else {
                            self.q1_digital_media = true;
                            $(this).addClass('active');
                            $("#sel-q1-digital-media").show();
                        }
                        break;

                    case 'q1-electronics':
                        if (self.q1_electronics == true) {
                            self.q1_electronics = false;
                            $(this).removeClass('active');
                            $("#sel-q1-electronics").hide();
                        } else {
                            self.q1_electronics = true;
                            $(this).addClass('active');
                            $("#sel-q1-electronics").show();
                        }
                        break;

                    case 'q1-guns':
                        if (self.q1_guns == true) {
                            self.q1_guns = false;
                            $(this).removeClass('active');
                            $("#sel-q1-guns").hide();
                        } else {
                            self.q1_guns = true;
                            $(this).addClass('active');
                            $("#sel-q1-guns").show();
                        }
                        break;

                    case 'q1-collectibles':
                        if (self.q1_collectibles == true) {
                            self.q1_collectibles = false;
                            $(this).removeClass('active');
                            $("#sel-q1-collectibles").hide();
                        } else {
                            self.q1_collectibles = true;
                            $(this).addClass('active');
                            $("#sel-q1-collectibles").show();
                        }
                        break;

                    case 'q1-jewelry':
                        if (self.q1_jewelry == true) {
                            self.q1_jewelry = false;
                            $(this).removeClass('active');
                            $("#sel-q1-jewelry").hide();
                        } else {
                            self.q1_jewelry = true;
                            $(this).addClass('active');
                            $("#sel-q1-jewelry").show();
                        }
                        break;

                    case 'q1-cash':
                        if (self.q1_cash == true) {
                            self.q1_cash = false;
                            $(this).removeClass('active');
                            $("#sel-q1-cash").hide();
                        } else {
                            self.q1_cash = true;
                            $(this).addClass('active');
                            $("#sel-q1-cash").show();
                        }
                        break;

                    // Question 2 Choices             
                    case 'q2-fire':
                        if (self.q2_fire == true) {
                            self.q2_fire = false;
                            $(this).removeClass('active');
                            $("#sel-q2-fire").hide();
                        } else {
                            self.q2_fire = true;
                            $(this).addClass('active');
                            $("#sel-q2-fire").show();
                        }
                        break;

                    case 'q2-water':
                        if (self.q2_water == true) {
                            self.q2_water = false;
                            $(this).removeClass('active');
                            $("#sel-q2-water").hide();
                        } else {
                            self.q2_water = true;
                            $(this).addClass('active');
                            $("#sel-q2-water").show();
                        }
                        break;

                    case 'q2-security':
                        if (self.q2_security == true) {
                            self.q2_security = false;
                            $(this).removeClass('active');
                            $("#sel-q2-security").hide();
                        } else {
                            self.q2_security = true;
                            $(this).addClass('active');
                            $("#sel-q2-security").show();
                        }

                        break;

                    // Question 3 Choices             
                    case 'q3-small':
                        self.forceRadioButtons(3);

                        self.q3_small = true;
                        $(this).addClass('active');
                        $("#sel-q3-small").show();
                        break;

                    case 'q3-medium':
                        self.forceRadioButtons(3);

                        self.q3_medium = true;
                        $(this).addClass('active');
                        $("#sel-q3-medium").show();
                        break;

                    case 'q3-large':
                        self.forceRadioButtons(3);

                        self.q3_large = true;
                        $(this).addClass('active');
                        $("#sel-q3-large").show();
                        break;

                    case 'q3-xl':
                        self.forceRadioButtons(3);

                        self.q3_xl = true;
                        $(this).addClass('active');
                        $("#sel-q3-xl").show();
                        break;

                    case 'q3-everything':
                        self.forceRadioButtons(3);

                        self.q5_everything = true;
                        $(this).addClass('active');
                        $("#sel-q3-everything").show();
                        break;

                    // Question 4 Choices             
                    case 'q4-elock':
                        self.forceRadioButtons(4);

                        self.q4_elock = true;
                        $(this).addClass('active');
                        $("#sel-q4-elock").show();
                        break;

                    case 'q4-combo':
                        self.forceRadioButtons(4);

                        self.q4_combo = true;
                        $(this).addClass('active');
                        $("#sel-q4-combo").show();
                        break;

                    case 'q4-key':
                        self.forceRadioButtons(4);

                        self.q4_key = true;
                        $(this).addClass('active');
                        $("#sel-q4-key").show();
                        break;

                    case 'q4-dual':
                        self.forceRadioButtons(4);

                        self.q4_dual = true;
                        $(this).addClass('active');
                        $("#sel-q4-dual").show();
                        break;

                    case 'q4-dual-combo':
                        self.forceRadioButtons(4);

                        self.q4_dual_combo = true;
                        $(this).addClass('active');
                        $("#sel-q4-dual-combo").show();
                        break;

                    case 'q4-latch':
                        self.forceRadioButtons(4);

                        self.q4_latch = true;
                        $(this).addClass('active');
                        $("#sel-q4-latch").show();
                        break;

                    case 'q4-everything':
                        self.forceRadioButtons(4);

                        self.q5_everything = true;
                        $(this).addClass('active');
                        $("#sel-q4-everything").show();
                        break;

                    // Question 5 Choices             
                    case 'q5-affordable':
                        self.forceRadioButtons(5);

                        self.q5_affordable = true;
                        $(this).addClass('active');
                        $("#sel-q5-affordable").show();
                        break;

                    case 'q5-middle':
                        self.forceRadioButtons(5);

                        self.q5_middle = true;
                        $(this).addClass('active');
                        $("#sel-q5-middle").show();
                        break;

                    case 'q5-best':
                        self.forceRadioButtons(5);

                        self.q5_best = true;
                        $(this).addClass('active');
                        $("#sel-q5-best").show();
                        break;

                    case 'q5-everything':
                        self.forceRadioButtons(5);

                        self.q5_everything = true;
                        $(this).addClass('active');
                        $("#sel-q5-everything").show();
                        break;

                    default:
                        alert("ERROR: Choice ID not found.  Please contact Sentry Safe.");
                }

                self.filterResults();
                event.preventDefault();
            });
        };

        self.init();

    };
})(jQuery);
