// DETECTS IF NAMESPACE OF THE APP EXISTS, CREATES THE NAMESPACE OF THE APP.
if (!ML) var ML = {};
else if (ML && typeof (ML) != "object")
    throw new Error("ML is not an Object type");

// APP MAIN INIT - MODULE PATTERN.
ML.Main = (function () {

    // PRIVATE ATTRIBUTES. ONLY PRIVELEGED METHODS MAY VIEW/EDIT/INVOKE

    // PRIVATE MEMBERS. ONLY PRIVELEGED METHODS MAY VIEW/EDIT/INVOKE.

    //RETURN OBJECT LITERAL.
    return {
        //PUBLIC ATTRIBUTES ANYONE MAY READ/WRITE.
        NAME: "Application initialize module",
        VERSION: 1.1,

        // PUBLIC MEMBERS ANYONE MAY READ/WRITE. (MAY BE OVERRIDEN).
        // PUBLIC METHOD THAT INITIALIZES MAIN APP.
        init: function () {

            this.initHpSlide(); // INIT HP SLIDER INNER FADE.
            this.initProductSlide(); // INIT HP SLIDER INNER FADE.
            this.initProductCarousel(); // INIT PRODUCT CAROUSEL.
            this.initProductAcc(); // INIT PRODUCT ACCORDION.

        },

        // INIT HP SLIDE INNER FADE.
        initHpSlide: function () {
            if (!$('.slider ul').length) return false;

            $('.slider ul').innerfade(
				{
				    speed: 1000,
				    timeout: 8000,
				    type: 'sequence',
				    containerheight: '360px'
				}
			 );
        },

        initProductSlide: function () {
            if (!$('ul.productSlider').length) return false;

            var whoSlide = $('.blockPeriodProducts ul li').find('.productSlider');

            whoSlide.each(function (e) {

                $(this).innerfade(
					{
					    speed: 1000,
					    timeout: 4000 * (eval(e + 1)),
					    type: 'sequence',
					    containerheight: '160px'
					}
			 	);


            });




        },

        // INIT CAROUSEL
        initProductCarousel: function () {
            if (!$('.default .jCarouselLite').length) return false;

            $(".default .jCarouselLite").jCarouselLite({
                btnNext: ".default .next",
                btnPrev: ".default .prev",
                visible: 2
            });
        },

        // INIT ACCORDION
        initProductAcc: function () {
            if (!$('.productTitle').length) return false;

            this.initCustomAcc();
        },

        initCustomAcc: function () {

            $('.productTitle h3').click(function () {
                if ($(this).parents('.rowBlock').next().is('.open')) {

                    $(this).parents('.rowBlock').next().slideUp('slow', function () {

                    }).removeClass('open');

                    $('.productTitle h3').removeClass('active');

                } else {

                    $(this).parents('.customAcc').find('.open').slideUp('slow');

                    $('.productTitle h3').removeClass('active').parents('.rowBlock').next().slideUp('slow').removeClass('open');

                    $(this).addClass('active');

                    $(this).parents('.rowBlock').next().slideDown('slow', function () {

                    }).addClass('open');
                }
                return false;
            });

        }
    }

} ()); // THE PARENS HERE CAUSE THE ANONYMOUS FUNCTION TO EXECUTE AND RETURN.

// ON DOM READY INIT APPLICATION.
$(document).ready(function () {

    //THE APP MAIN MODULE CODE HAS ALREADY EXECUTED, SO WE CAN ACCESS THE INIT METHOD IMMEDIATELY.
    ML.Main.init();

    $('body.v4master').css("overflow", "auto");

});

/**
* Outputs a log of the passed in object. This is centralized in one method so
* that we can keep info logs around the site and easily disable/enable them
* when jumping between live/dev.
* @param {string} o Message to log to console.
*/
ML.log = function (o) {
    if (window.console && o) {
        window.console.log(o);
    }
};


