var $j = jQuery.noConflict();

var TFT = function () {
    return {
        init: function() {
            var instance = this;
            instance.initBrowserCheck();
            instance.initFrontGallery();
            instance.initFadeToogleBlock();
            instance.initFAQ();
            instance.initFeeds();
            instance.fixMainNav();
            instance.cartOptionsInit();
            instance.designLinks();
            instance.checkoutOptionsInit();
            instance.ordersOptionsInit();
            instance.productAddToLinksFix();
        },

        initBrowserCheck: function() {

            if($j.browser.msie && $j.browser.version=="6.0") {

            var ie6Notice = '<div class="ie6-notice">'+
                '<div class="ie6-notice-inner">'+
                    '<p><strong>Du anv&auml;nder Internet Explorer 6.</strong></p>'+
                    '<p>Det verkar som att du anv&auml;nder Internet Explorer 6 (IE6). The Fair Tailor fungerar inte speciellt bra ihop med denna webbl&auml;sare. IE6 &auml;r f&ouml;r&aring;ldrad och vi rekommenderar att du uppgraderar till en nyare webbl&auml;sare:</p>'+
                    '<ul class="browser-alternatives">' +
                        '<li><a href="http://www.getfirefox.net/">Firefox</a></li>' +
                        '<li><a href="http://www.google.com/chrome">Google Chrome</a></li>' +
                        '<li><a href="http://www.opera.com/browser/">Opera</a></li>' +
                        '<li><a href="http://www.apple.com/safari/download/">Safari</a></li>' +
                        '<li><a href="http://www.microsoft.com/sverige/windows/internet-explorer/default.aspx">Internet Explorer 8</a></li>' +
                    '</ul>' +
                '</div>'+
            '</div>';
            //ie6Notice = '';

            $j('body').prepend(ie6Notice);


            };


        },

        initFrontGallery: function() {

            var instance = this;

            $j('.img-fader').innerfade({
                speed: 'slow',
                timeout: 4000,
                type: 'random_start',
                containerheight: '420px'
            });
        },

        initFeeds: function() {

            var instance = this;

            var footerContainer = $j('.footer-main .footer-col-1').get(0);

            instance.addFeedBlock(
                'http://blogg.va.se/entreprenor/feed/',
                5,
                footerContainer);
        },

        designLinks: function() {

            $j('a.load-design-link').click(function() {

                var loadURL = BASE_URL + 'tft-ext/load_design/'
                var curURL = $j(this).attr('href');
                var curRelID = $j(this).attr('rel');

                var startPageData = '';
                
                if($j(this).hasClass('load-at-measures')) {
                    startPageData = '&startAtPage=' + '3';
                }
                var loadAtMeasuresStep = $j(this).hasClass('load-at-measures');

                var curData = 'designID=' + curRelID + startPageData;

                $j.ajax({
                    type: 'POST',
                    url: loadURL,
                    data: curData,
                    success: function(response, b){
                        var responseJSON = JSON.parse(response);
                        if(responseJSON.success) {
                            var redirectURL = BASE_URL + responseJSON.msg;
                            window.location = redirectURL;
                        } else {
                            //callbackServerFailure(responseJSON.msg);
                        }

                    },
                    failure: function() {
                        alert('Ajax call failed');
                    }
                });

                return false;
            });

        },

        fixMainNav: function() {

            $j('ul#nav>li:first').addClass('first');
            $j('ul#nav>li:last').addClass('last');
            $j('ul#nav>li:first a').addClass('home');
        },

        addFeedBlock: function(feedUrl, size, container) {


            $j.jGFeed(feedUrl, function(feeds) {

                // Check for errors
                if(!feeds) {
                    // there was an error
                    //console.log("error getting feeds");
                    return false;
                }

                $j(container).append('<div class="feed-block clearfix"></div>');
                var feedBlock = $j('.feed-block', container).get(0);
                
                $j(feedBlock).append('<h3>' + feeds.title + '</h3>');
                $j(feedBlock).append('<ul class="feed-list"></ul>');

                var feedList = $j('ul.feed-list', container).get(0);

                var templateFeedItem = $j.template(
                    '<li>'+
                        '<a href="${entryUrl}" target="_BLANK">${entryTitle}</a>'+
                    '</li>'
                );

                for(var i=0; i<feeds.entries.length; i++) {
                    var entry = feeds.entries[i];

                    $j(feedList).append(templateFeedItem , {
                        entryUrl: entry.link,
                        entryTitle: entry.title
                    });
                }

            }, size);
        },

        initFadeToogleBlock: function() {

            var instance = this;

            $j('.fade-toogle-block').each(function(i, domEl) {

                $j(this).find('.fade-toggle-content').hide();
                $j(this).find('.fade-toggle-label')
                    .css({
                        'cursor': 'pointer'
                    })
                    .click(function(e) {
                        $j(this).parent().find('.fade-toggle-content').fadeToggle("medium");
                    });
            });
        },

        initFAQ: function() {

            var instance = this;
            $j(".faq-section ol li .faq-answer").hide();
            $j(".faq-section ol li .faq-question").click(function(e) {
                //j$(this).next().toggle("medium");
                $j(this).next().fadeToggle("medium");
                return;
            });
        },

        ordersOptionsInit: function() {


            //my-orders-table
            $j('#my-orders-table').each(function(i, cartDomEl){
                // Only do once
                if(i > 0) { return false; }

                var el = $j(this);

                // Hide measures wrap
                el.find('.item-measures-wrap').hide();

                // Hide options list
                el.find('.item-options-list').hide();

                // Add hover to options list label
                el.find('.item-options-label span').hover(
                    function() {
                        $j(this).addClass("over");
                    }, function() {
                        $j(this).removeClass("over");
                    }
                );

                // Show options list when label is clicked
                el.find('.item-options-label span').click(function() {
                    $j(this).parents().find('.item-options-wrap .item-options-list:first').fadeToggle("medium");;
                });

            });


        },

        productAddToLinksFix: function() {

            $j('.product-essential .product-shop .add-to-links').each(function(i, el) {
                if(i > 0) {
                    $j(el).hide();
                }
            })
        },

        checkoutOptionsInit: function() {

            //checkout-review-load
            $j('#opc-review .item-options-label span').live('mouseover', function() {
                $j(this).addClass("over");
            });
            $j('#opc-review .item-options-label span').live('mouseout', function() {
                $j(this).removeClass("over");
            });

            // Show options list when label is clicked
            $j('#opc-review .item-options-label span').live('click', function() {
                $j(this).parents('.item-options-wrap:first').find('.item-options-list').fadeToggle("medium");
            });
        },

        cartOptionsInit: function() {

            var instance = this;

            $j('.cart').each(function(i, cartDomEl){
                // Only do once
                if(i > 0) { return false; }

                var cartEl = $j(this);

                // Hide measures wrap
                cartEl.find('.item-measures-wrap').hide();

                // Get measure json and parse to object
                $j('.option-measure-json', cartEl).each(function(j, domEl) {

                    // Only do once
                    if(j > 0) { return false; }

                    var measureEl = $j(domEl);
                    measureEl.hide();

                    var elJsonDomArr = measureEl.find('.list-item-value');
                    var elJsonDom = $j(elJsonDomArr.get(0));
                    var elJson = elJsonDom.text();
                    var measuresArr = JSON.parse(elJson);

                    var cartFieldmap = "";
                    if(typeof(CART_FIELDMAP_JSON) != "undefined") {
                        if(CART_FIELDMAP_JSON != "") {
                            cartFieldmap = JSON.parse(CART_FIELDMAP_JSON);
                        }
                    }
                });

                // Hide options list
                cartEl.find('.item-options-list').hide();

                // Add hover to options list label
                cartEl.find('.item-options-label span').hover(
                    function() {
                        $j(this).addClass("over");
                    }, function() {
                        $j(this).removeClass("over");
                    }
                );

                // Show options list when label is clicked
                cartEl.find('.item-options-label span').click(function() {
                    $j(this).parents().find('.item-options-wrap .item-options-list:first').fadeToggle("medium");;
                });

            });

        }
    };
}();

$j(document).ready(function(){
    TFT.init();
});

jQuery.fn.fadeToggle = function(speed, easing, callback) {
   return this.animate({opacity: 'toggle'}, speed, easing, callback);
};