/* Minification failed. Returning unminified contents.
(6527,11-12): run-time warning JS1004: Expected ';': 		//@Jyoti
(6746,12-13): run-time warning JS1004: Expected ';': 			//@Jyoti
(6752,13-14): run-time warning JS1004: Expected ';': 			//@Jyoti	
 */
/*!
* jQuery Cycle2; version: 2.1.2 build: 20140216
* http://jquery.malsup.com/cycle2/
* Copyright (c) 2014 M. Alsup; Dual licensed: MIT/GPL
*/

/* Cycle2 core engine */
;(function($) {
"use strict";

var version = '2.1.2';

$.fn.cycle = function( options ) {
    // fix mistakes with the ready state
    var o;
    if ( this.length === 0 && !$.isReady ) {
        o = { s: this.selector, c: this.context };
        $.fn.cycle.log('requeuing slideshow (dom not ready)');
        $(function() {
            $( o.s, o.c ).cycle(options);
        });
        return this;
    }

    return this.each(function() {
        var data, opts, shortName, val;
        var container = $(this);
        var log = $.fn.cycle.log;

        if ( container.data('cycle.opts') )
            return; // already initialized

        if ( container.data('cycle-log') === false || 
            ( options && options.log === false ) ||
            ( opts && opts.log === false) ) {
            log = $.noop;
        }

        log('--c2 init--');
        data = container.data();
        for (var p in data) {
            // allow props to be accessed sans 'cycle' prefix and log the overrides
            if (data.hasOwnProperty(p) && /^cycle[A-Z]+/.test(p) ) {
                val = data[p];
                shortName = p.match(/^cycle(.*)/)[1].replace(/^[A-Z]/, lowerCase);
                log(shortName+':', val, '('+typeof val +')');
                data[shortName] = val;
            }
        }

        opts = $.extend( {}, $.fn.cycle.defaults, data, options || {});

        opts.timeoutId = 0;
        opts.paused = opts.paused || false; // #57
        opts.container = container;
        opts._maxZ = opts.maxZ;

        opts.API = $.extend ( { _container: container }, $.fn.cycle.API );
        opts.API.log = log;
        opts.API.trigger = function( eventName, args ) {
            opts.container.trigger( eventName, args );
            return opts.API;
        };

        container.data( 'cycle.opts', opts );
        container.data( 'cycle.API', opts.API );

        // opportunity for plugins to modify opts and API
        opts.API.trigger('cycle-bootstrap', [ opts, opts.API ]);

        opts.API.addInitialSlides();
        opts.API.preInitSlideshow();

        if ( opts.slides.length )
            opts.API.initSlideshow();
    });
};

$.fn.cycle.API = {
    opts: function() {
        return this._container.data( 'cycle.opts' );
    },
    addInitialSlides: function() {
        var opts = this.opts();
        var slides = opts.slides;
        opts.slideCount = 0;
        opts.slides = $(); // empty set
        
        // add slides that already exist
        slides = slides.jquery ? slides : opts.container.find( slides );

        if ( opts.random ) {
            slides.sort(function() {return Math.random() - 0.5;});
        }

        opts.API.add( slides );
    },

    preInitSlideshow: function() {
        var opts = this.opts();
        opts.API.trigger('cycle-pre-initialize', [ opts ]);
        var tx = $.fn.cycle.transitions[opts.fx];
        if (tx && $.isFunction(tx.preInit))
            tx.preInit( opts );
        opts._preInitialized = true;
    },

    postInitSlideshow: function() {
        var opts = this.opts();
        opts.API.trigger('cycle-post-initialize', [ opts ]);
        var tx = $.fn.cycle.transitions[opts.fx];
        if (tx && $.isFunction(tx.postInit))
            tx.postInit( opts );
    },

    initSlideshow: function() {
        var opts = this.opts();
        var pauseObj = opts.container;
        var slideOpts;
        opts.API.calcFirstSlide();

        if ( opts.container.css('position') == 'static' )
            opts.container.css('position', 'relative');

        $(opts.slides[opts.currSlide]).css({
            opacity: 1,
            display: 'block',
            visibility: 'visible'
        });
        opts.API.stackSlides( opts.slides[opts.currSlide], opts.slides[opts.nextSlide], !opts.reverse );

        if ( opts.pauseOnHover ) {
            // allow pauseOnHover to specify an element
            if ( opts.pauseOnHover !== true )
                pauseObj = $( opts.pauseOnHover );

            pauseObj.hover(
                function(){ opts.API.pause( true ); }, 
                function(){ opts.API.resume( true ); }
            );
        }

        // stage initial transition
        if ( opts.timeout ) {
            slideOpts = opts.API.getSlideOpts( opts.currSlide );
            opts.API.queueTransition( slideOpts, slideOpts.timeout + opts.delay );
        }

        opts._initialized = true;
        opts.API.updateView( true );
        opts.API.trigger('cycle-initialized', [ opts ]);
        opts.API.postInitSlideshow();
    },

    pause: function( hover ) {
        var opts = this.opts(),
            slideOpts = opts.API.getSlideOpts(),
            alreadyPaused = opts.hoverPaused || opts.paused;

        if ( hover )
            opts.hoverPaused = true; 
        else
            opts.paused = true;

        if ( ! alreadyPaused ) {
            opts.container.addClass('cycle-paused');
            opts.API.trigger('cycle-paused', [ opts ]).log('cycle-paused');

            if ( slideOpts.timeout ) {
                clearTimeout( opts.timeoutId );
                opts.timeoutId = 0;
                
                // determine how much time is left for the current slide
                opts._remainingTimeout -= ( $.now() - opts._lastQueue );
                if ( opts._remainingTimeout < 0 || isNaN(opts._remainingTimeout) )
                    opts._remainingTimeout = undefined;
            }
        }
    },

    resume: function( hover ) {
        var opts = this.opts(),
            alreadyResumed = !opts.hoverPaused && !opts.paused,
            remaining;

        if ( hover )
            opts.hoverPaused = false; 
        else
            opts.paused = false;

    
        if ( ! alreadyResumed ) {
            opts.container.removeClass('cycle-paused');
            // #gh-230; if an animation is in progress then don't queue a new transition; it will
            // happen naturally
            if ( opts.slides.filter(':animated').length === 0 )
                opts.API.queueTransition( opts.API.getSlideOpts(), opts._remainingTimeout );
            opts.API.trigger('cycle-resumed', [ opts, opts._remainingTimeout ] ).log('cycle-resumed');
        }
    },

    add: function( slides, prepend ) {
        var opts = this.opts();
        var oldSlideCount = opts.slideCount;
        var startSlideshow = false;
        var len;

        if ( $.type(slides) == 'string')
            slides = $.trim( slides );

        $( slides ).each(function(i) {
            var slideOpts;
            var slide = $(this);

            if ( prepend )
                opts.container.prepend( slide );
            else
                opts.container.append( slide );

            opts.slideCount++;
            slideOpts = opts.API.buildSlideOpts( slide );

            if ( prepend )
                opts.slides = $( slide ).add( opts.slides );
            else
                opts.slides = opts.slides.add( slide );

            opts.API.initSlide( slideOpts, slide, --opts._maxZ );

            slide.data('cycle.opts', slideOpts);
            opts.API.trigger('cycle-slide-added', [ opts, slideOpts, slide ]);
        });

        opts.API.updateView( true );

        startSlideshow = opts._preInitialized && (oldSlideCount < 2 && opts.slideCount >= 1);
        if ( startSlideshow ) {
            if ( !opts._initialized )
                opts.API.initSlideshow();
            else if ( opts.timeout ) {
                len = opts.slides.length;
                opts.nextSlide = opts.reverse ? len - 1 : 1;
                if ( !opts.timeoutId ) {
                    opts.API.queueTransition( opts );
                }
            }
        }
    },

    calcFirstSlide: function() {
        var opts = this.opts();
        var firstSlideIndex;
        firstSlideIndex = parseInt( opts.startingSlide || 0, 10 );
        if (firstSlideIndex >= opts.slides.length || firstSlideIndex < 0)
            firstSlideIndex = 0;

        opts.currSlide = firstSlideIndex;
        if ( opts.reverse ) {
            opts.nextSlide = firstSlideIndex - 1;
            if (opts.nextSlide < 0)
                opts.nextSlide = opts.slides.length - 1;
        }
        else {
            opts.nextSlide = firstSlideIndex + 1;
            if (opts.nextSlide == opts.slides.length)
                opts.nextSlide = 0;
        }
    },

    calcNextSlide: function() {
        var opts = this.opts();
        var roll;
        if ( opts.reverse ) {
            roll = (opts.nextSlide - 1) < 0;
            opts.nextSlide = roll ? opts.slideCount - 1 : opts.nextSlide-1;
            opts.currSlide = roll ? 0 : opts.nextSlide+1;
        }
        else {
            roll = (opts.nextSlide + 1) == opts.slides.length;
            opts.nextSlide = roll ? 0 : opts.nextSlide+1;
            opts.currSlide = roll ? opts.slides.length-1 : opts.nextSlide-1;
        }
    },

    calcTx: function( slideOpts, manual ) {
        var opts = slideOpts;
        var tx;
        if ( manual && opts.manualFx )
            tx = $.fn.cycle.transitions[opts.manualFx];
        if ( !tx )
            tx = $.fn.cycle.transitions[opts.fx];

        if (!tx) {
            tx = $.fn.cycle.transitions.fade;
            opts.API.log('Transition "' + opts.fx + '" not found.  Using fade.');
        }
        return tx;
    },

    prepareTx: function( manual, fwd ) {
        var opts = this.opts();
        var after, curr, next, slideOpts, tx;

        if ( opts.slideCount < 2 ) {
            opts.timeoutId = 0;
            return;
        }
        if ( manual && ( !opts.busy || opts.manualTrump ) ) {
            opts.API.stopTransition();
            opts.busy = false;
            clearTimeout(opts.timeoutId);
            opts.timeoutId = 0;
        }
        if ( opts.busy )
            return;
        if ( opts.timeoutId === 0 && !manual )
            return;

        curr = opts.slides[opts.currSlide];
        next = opts.slides[opts.nextSlide];
        slideOpts = opts.API.getSlideOpts( opts.nextSlide );
        tx = opts.API.calcTx( slideOpts, manual );

        opts._tx = tx;

        if ( manual && slideOpts.manualSpeed !== undefined )
            slideOpts.speed = slideOpts.manualSpeed;

        // if ( opts.nextSlide === opts.currSlide )
        //     opts.API.calcNextSlide();

        // ensure that:
        //      1. advancing to a different slide
        //      2. this is either a manual event (prev/next, pager, cmd) or 
        //              a timer event and slideshow is not paused
        if ( opts.nextSlide != opts.currSlide && 
            (manual || (!opts.paused && !opts.hoverPaused && opts.timeout) )) { // #62

            opts.API.trigger('cycle-before', [ slideOpts, curr, next, fwd ]);
            if ( tx.before )
                tx.before( slideOpts, curr, next, fwd );

            after = function() {
                opts.busy = false;
                // #76; bail if slideshow has been destroyed
                if (! opts.container.data( 'cycle.opts' ) )
                    return;

                if (tx.after)
                    tx.after( slideOpts, curr, next, fwd );
                opts.API.trigger('cycle-after', [ slideOpts, curr, next, fwd ]);
                opts.API.queueTransition( slideOpts);
                opts.API.updateView( true );
            };

            opts.busy = true;
            if (tx.transition)
                tx.transition(slideOpts, curr, next, fwd, after);
            else
                opts.API.doTransition( slideOpts, curr, next, fwd, after);

            opts.API.calcNextSlide();
            opts.API.updateView();
        } else {
            opts.API.queueTransition( slideOpts );
        }
    },

    // perform the actual animation
    doTransition: function( slideOpts, currEl, nextEl, fwd, callback) {
        var opts = slideOpts;
        var curr = $(currEl), next = $(nextEl);
        var fn = function() {
            // make sure animIn has something so that callback doesn't trigger immediately
            next.animate(opts.animIn || { opacity: 1}, opts.speed, opts.easeIn || opts.easing, callback);
        };

        next.css(opts.cssBefore || {});
        curr.animate(opts.animOut || {}, opts.speed, opts.easeOut || opts.easing, function() {
            curr.css(opts.cssAfter || {});
            if (!opts.sync) {
                fn();
            }
        });
        if (opts.sync) {
            fn();
        }
    },

    queueTransition: function( slideOpts, specificTimeout ) {
        var opts = this.opts();
        var timeout = specificTimeout !== undefined ? specificTimeout : slideOpts.timeout;
        if (opts.nextSlide === 0 && --opts.loop === 0) {
            opts.API.log('terminating; loop=0');
            opts.timeout = 0;
            if ( timeout ) {
                setTimeout(function() {
                    opts.API.trigger('cycle-finished', [ opts ]);
                }, timeout);
            }
            else {
                opts.API.trigger('cycle-finished', [ opts ]);
            }
            // reset nextSlide
            opts.nextSlide = opts.currSlide;
            return;
        }
        if ( opts.continueAuto !== undefined ) {
            if ( opts.continueAuto === false || 
                ($.isFunction(opts.continueAuto) && opts.continueAuto() === false )) {
                opts.API.log('terminating automatic transitions');
                opts.timeout = 0;
                if ( opts.timeoutId )
                    clearTimeout(opts.timeoutId);
                return;
            }
        }
        if ( timeout ) {
            opts._lastQueue = $.now();
            if ( specificTimeout === undefined )
                opts._remainingTimeout = slideOpts.timeout;

            if ( !opts.paused && ! opts.hoverPaused ) {
                opts.timeoutId = setTimeout(function() { 
                    opts.API.prepareTx( false, !opts.reverse ); 
                }, timeout );
            }
        }
    },

    stopTransition: function() {
        var opts = this.opts();
        if ( opts.slides.filter(':animated').length ) {
            opts.slides.stop(false, true);
            opts.API.trigger('cycle-transition-stopped', [ opts ]);
        }

        if ( opts._tx && opts._tx.stopTransition )
            opts._tx.stopTransition( opts );
    },

    // advance slide forward or back
    advanceSlide: function( val ) {
        var opts = this.opts();
        clearTimeout(opts.timeoutId);
        opts.timeoutId = 0;
        opts.nextSlide = opts.currSlide + val;
        
        if (opts.nextSlide < 0)
            opts.nextSlide = opts.slides.length - 1;
        else if (opts.nextSlide >= opts.slides.length)
            opts.nextSlide = 0;

        opts.API.prepareTx( true,  val >= 0 );
        return false;
    },

    buildSlideOpts: function( slide ) {
        var opts = this.opts();
        var val, shortName;
        var slideOpts = slide.data() || {};
        for (var p in slideOpts) {
            // allow props to be accessed sans 'cycle' prefix and log the overrides
            if (slideOpts.hasOwnProperty(p) && /^cycle[A-Z]+/.test(p) ) {
                val = slideOpts[p];
                shortName = p.match(/^cycle(.*)/)[1].replace(/^[A-Z]/, lowerCase);
                opts.API.log('['+(opts.slideCount-1)+']', shortName+':', val, '('+typeof val +')');
                slideOpts[shortName] = val;
            }
        }

        slideOpts = $.extend( {}, $.fn.cycle.defaults, opts, slideOpts );
        slideOpts.slideNum = opts.slideCount;

        try {
            // these props should always be read from the master state object
            delete slideOpts.API;
            delete slideOpts.slideCount;
            delete slideOpts.currSlide;
            delete slideOpts.nextSlide;
            delete slideOpts.slides;
        } catch(e) {
            // no op
        }
        return slideOpts;
    },

    getSlideOpts: function( index ) {
        var opts = this.opts();
        if ( index === undefined )
            index = opts.currSlide;

        var slide = opts.slides[index];
        var slideOpts = $(slide).data('cycle.opts');
        return $.extend( {}, opts, slideOpts );
    },
    
    initSlide: function( slideOpts, slide, suggestedZindex ) {
        var opts = this.opts();
        slide.css( slideOpts.slideCss || {} );
        if ( suggestedZindex > 0 )
            slide.css( 'zIndex', suggestedZindex );

        // ensure that speed settings are sane
        if ( isNaN( slideOpts.speed ) )
            slideOpts.speed = $.fx.speeds[slideOpts.speed] || $.fx.speeds._default;
        if ( !slideOpts.sync )
            slideOpts.speed = slideOpts.speed / 2;

        slide.addClass( opts.slideClass );
    },

    updateView: function( isAfter, isDuring, forceEvent ) {
        var opts = this.opts();
        if ( !opts._initialized )
            return;
        var slideOpts = opts.API.getSlideOpts();
        var currSlide = opts.slides[ opts.currSlide ];

        if ( ! isAfter && isDuring !== true ) {
            opts.API.trigger('cycle-update-view-before', [ opts, slideOpts, currSlide ]);
            if ( opts.updateView < 0 )
                return;
        }

        if ( opts.slideActiveClass ) {
            opts.slides.removeClass( opts.slideActiveClass )
                .eq( opts.currSlide ).addClass( opts.slideActiveClass );
        }

        if ( isAfter && opts.hideNonActive )
            opts.slides.filter( ':not(.' + opts.slideActiveClass + ')' ).css('visibility', 'hidden');

        if ( opts.updateView === 0 ) {
            setTimeout(function() {
                opts.API.trigger('cycle-update-view', [ opts, slideOpts, currSlide, isAfter ]);
            }, slideOpts.speed / (opts.sync ? 2 : 1) );
        }

        if ( opts.updateView !== 0 )
            opts.API.trigger('cycle-update-view', [ opts, slideOpts, currSlide, isAfter ]);
        
        if ( isAfter )
            opts.API.trigger('cycle-update-view-after', [ opts, slideOpts, currSlide ]);
    },

    getComponent: function( name ) {
        var opts = this.opts();
        var selector = opts[name];
        if (typeof selector === 'string') {
            // if selector is a child, sibling combinator, adjancent selector then use find, otherwise query full dom
            return (/^\s*[\>|\+|~]/).test( selector ) ? opts.container.find( selector ) : $( selector );
        }
        if (selector.jquery)
            return selector;
        
        return $(selector);
    },

    stackSlides: function( curr, next, fwd ) {
        var opts = this.opts();
        if ( !curr ) {
            curr = opts.slides[opts.currSlide];
            next = opts.slides[opts.nextSlide];
            fwd = !opts.reverse;
        }

        // reset the zIndex for the common case:
        // curr slide on top,  next slide beneath, and the rest in order to be shown
        $(curr).css('zIndex', opts.maxZ);

        var i;
        var z = opts.maxZ - 2;
        var len = opts.slideCount;
        if (fwd) {
            for ( i = opts.currSlide + 1; i < len; i++ )
                $( opts.slides[i] ).css( 'zIndex', z-- );
            for ( i = 0; i < opts.currSlide; i++ )
                $( opts.slides[i] ).css( 'zIndex', z-- );
        }
        else {
            for ( i = opts.currSlide - 1; i >= 0; i-- )
                $( opts.slides[i] ).css( 'zIndex', z-- );
            for ( i = len - 1; i > opts.currSlide; i-- )
                $( opts.slides[i] ).css( 'zIndex', z-- );
        }

        $(next).css('zIndex', opts.maxZ - 1);
    },

    getSlideIndex: function( el ) {
        return this.opts().slides.index( el );
    }

}; // API

// default logger
$.fn.cycle.log = function log() {
    /*global console:true */
    if (window.console && console.log)
        console.log('[cycle2] ' + Array.prototype.join.call(arguments, ' ') );
};

$.fn.cycle.version = function() { return 'Cycle2: ' + version; };

// helper functions

function lowerCase(s) {
    return (s || '').toLowerCase();
}

// expose transition object
$.fn.cycle.transitions = {
    custom: {
    },
    none: {
        before: function( opts, curr, next, fwd ) {
            opts.API.stackSlides( next, curr, fwd );
            opts.cssBefore = { opacity: 1, visibility: 'visible', display: 'block' };
        }
    },
    fade: {
        before: function( opts, curr, next, fwd ) {
            var css = opts.API.getSlideOpts( opts.nextSlide ).slideCss || {};
            opts.API.stackSlides( curr, next, fwd );
            opts.cssBefore = $.extend(css, { opacity: 0, visibility: 'visible', display: 'block' });
            opts.animIn = { opacity: 1 };
            opts.animOut = { opacity: 0 };
        }
    },
    fadeout: {
        before: function( opts , curr, next, fwd ) {
            var css = opts.API.getSlideOpts( opts.nextSlide ).slideCss || {};
            opts.API.stackSlides( curr, next, fwd );
            opts.cssBefore = $.extend(css, { opacity: 1, visibility: 'visible', display: 'block' });
            opts.animOut = { opacity: 0 };
        }
    },
    scrollHorz: {
        before: function( opts, curr, next, fwd ) {
            opts.API.stackSlides( curr, next, fwd );
            var w = opts.container.css('overflow','hidden').width();
            opts.cssBefore = { left: fwd ? w : - w, top: 0, opacity: 1, visibility: 'visible', display: 'block' };
            opts.cssAfter = { zIndex: opts._maxZ - 2, left: 0 };
            opts.animIn = { left: 0 };
            opts.animOut = { left: fwd ? -w : w };
        }
    }
};

// @see: http://jquery.malsup.com/cycle2/api
$.fn.cycle.defaults = {
    allowWrap:        true,
    autoSelector:     '.cycle-slideshow[data-cycle-auto-init!=false]',
    delay:            0,
    easing:           null,
    fx:              'fade',
    hideNonActive:    true,
    loop:             0,
    manualFx:         undefined,
    manualSpeed:      undefined,
    manualTrump:      true,
    maxZ:             100,
    pauseOnHover:     false,
    reverse:          false,
    slideActiveClass: 'cycle-slide-active',
    slideClass:       'cycle-slide',
    slideCss:         { position: 'absolute', top: 0, left: 0 },
    slides:          '> img',
    speed:            500,
    startingSlide:    0,
    sync:             true,
    timeout:          4000,
    updateView:       0
};

// automatically find and run slideshows
$(document).ready(function() {
    $( $.fn.cycle.defaults.autoSelector ).cycle();
});

})(jQuery);

/*! Cycle2 autoheight plugin; Copyright (c) M.Alsup, 2012; version: 20130913 */
(function($) {
"use strict";

$.extend($.fn.cycle.defaults, {
    autoHeight: 0, // setting this option to false disables autoHeight logic
    autoHeightSpeed: 250,
    autoHeightEasing: null
});    

$(document).on( 'cycle-initialized', function( e, opts ) {
    var autoHeight = opts.autoHeight;
    var t = $.type( autoHeight );
    var resizeThrottle = null;
    var ratio;

    if ( t !== 'string' && t !== 'number' )
        return;

    // bind events
    opts.container.on( 'cycle-slide-added cycle-slide-removed', initAutoHeight );
    opts.container.on( 'cycle-destroyed', onDestroy );

    if ( autoHeight == 'container' ) {
        opts.container.on( 'cycle-before', onBefore );
    }
    else if ( t === 'string' && /\d+\:\d+/.test( autoHeight ) ) { 
        // use ratio
        ratio = autoHeight.match(/(\d+)\:(\d+)/);
        ratio = ratio[1] / ratio[2];
        opts._autoHeightRatio = ratio;
    }

    // if autoHeight is a number then we don't need to recalculate the sentinel
    // index on resize
    if ( t !== 'number' ) {
        // bind unique resize handler per slideshow (so it can be 'off-ed' in onDestroy)
        opts._autoHeightOnResize = function () {
            clearTimeout( resizeThrottle );
            resizeThrottle = setTimeout( onResize, 50 );
        };

        $(window).on( 'resize orientationchange', opts._autoHeightOnResize );
    }

    setTimeout( onResize, 30 );

    function onResize() {
        initAutoHeight( e, opts );
    }
});

function initAutoHeight( e, opts ) {
    var clone, height, sentinelIndex;
    var autoHeight = opts.autoHeight;

    if ( autoHeight == 'container' ) {
        height = $( opts.slides[ opts.currSlide ] ).outerHeight();
        opts.container.height( height );
    }
    else if ( opts._autoHeightRatio ) { 
        opts.container.height( opts.container.width() / opts._autoHeightRatio );
    }
    else if ( autoHeight === 'calc' || ( $.type( autoHeight ) == 'number' && autoHeight >= 0 ) ) {
        if ( autoHeight === 'calc' )
            sentinelIndex = calcSentinelIndex( e, opts );
        else if ( autoHeight >= opts.slides.length )
            sentinelIndex = 0;
        else 
            sentinelIndex = autoHeight;

        // only recreate sentinel if index is different
        if ( sentinelIndex == opts._sentinelIndex )
            return;

        opts._sentinelIndex = sentinelIndex;
        if ( opts._sentinel )
            opts._sentinel.remove();

        // clone existing slide as sentinel
        clone = $( opts.slides[ sentinelIndex ].cloneNode(true) );
        
        // #50; remove special attributes from cloned content
        clone.removeAttr( 'id name rel' ).find( '[id],[name],[rel]' ).removeAttr( 'id name rel' );

        clone.css({
            position: 'static',
            visibility: 'hidden',
            display: 'block'
        }).prependTo( opts.container ).addClass('cycle-sentinel cycle-slide').removeClass('cycle-slide-active');
        clone.find( '*' ).css( 'visibility', 'hidden' );

        opts._sentinel = clone;
    }
}    

function calcSentinelIndex( e, opts ) {
    var index = 0, max = -1;

    // calculate tallest slide index
    opts.slides.each(function(i) {
        var h = $(this).height();
        if ( h > max ) {
            max = h;
            index = i;
        }
    });
    return index;
}

function onBefore( e, opts, outgoing, incoming, forward ) {
    var h = $(incoming).outerHeight();
    opts.container.animate( { height: h }, opts.autoHeightSpeed, opts.autoHeightEasing );
}

function onDestroy( e, opts ) {
    if ( opts._autoHeightOnResize ) {
        $(window).off( 'resize orientationchange', opts._autoHeightOnResize );
        opts._autoHeightOnResize = null;
    }
    opts.container.off( 'cycle-slide-added cycle-slide-removed', initAutoHeight );
    opts.container.off( 'cycle-destroyed', onDestroy );
    opts.container.off( 'cycle-before', onBefore );

    if ( opts._sentinel ) {
        opts._sentinel.remove();
        opts._sentinel = null;
    }
}

})(jQuery);

/*! caption plugin for Cycle2;  version: 20130306 */
(function($) {
"use strict";

$.extend($.fn.cycle.defaults, {
    caption:          '> .cycle-caption',
    captionTemplate:  '{{slideNum}} / {{slideCount}}',
    overlay:          '> .cycle-overlay',
    overlayTemplate:  '<div>{{title}}</div><div>{{desc}}</div>',
    captionModule:    'caption'
});    

$(document).on( 'cycle-update-view', function( e, opts, slideOpts, currSlide ) {
    if ( opts.captionModule !== 'caption' )
        return;
    var el;
    $.each(['caption','overlay'], function() {
        var name = this; 
        var template = slideOpts[name+'Template'];
        var el = opts.API.getComponent( name );
        if( el.length && template ) {
            el.html( opts.API.tmpl( template, slideOpts, opts, currSlide ) );
            el.show();
        }
        else {
            el.hide();
        }
    });
});

$(document).on( 'cycle-destroyed', function( e, opts ) {
    var el;
    $.each(['caption','overlay'], function() {
        var name = this, template = opts[name+'Template'];
        if ( opts[name] && template ) {
            el = opts.API.getComponent( 'caption' );
            el.empty();
        }
    });
});

})(jQuery);

/*! command plugin for Cycle2;  version: 20130707 */
(function($) {
"use strict";

var c2 = $.fn.cycle;

$.fn.cycle = function( options ) {
    var cmd, cmdFn, opts;
    var args = $.makeArray( arguments );

    if ( $.type( options ) == 'number' ) {
        return this.cycle( 'goto', options );
    }

    if ( $.type( options ) == 'string' ) {
        return this.each(function() {
            var cmdArgs;
            cmd = options;
            opts = $(this).data('cycle.opts');

            if ( opts === undefined ) {
                c2.log('slideshow must be initialized before sending commands; "' + cmd + '" ignored');
                return;
            }
            else {
                cmd = cmd == 'goto' ? 'jump' : cmd; // issue #3; change 'goto' to 'jump' internally
                cmdFn = opts.API[ cmd ];
                if ( $.isFunction( cmdFn )) {
                    cmdArgs = $.makeArray( args );
                    cmdArgs.shift();
                    return cmdFn.apply( opts.API, cmdArgs );
                }
                else {
                    c2.log( 'unknown command: ', cmd );
                }
            }
        });
    }
    else {
        return c2.apply( this, arguments );
    }
};

// copy props
$.extend( $.fn.cycle, c2 );

$.extend( c2.API, {
    next: function() {
        var opts = this.opts();
        if ( opts.busy && ! opts.manualTrump )
            return;
        
        var count = opts.reverse ? -1 : 1;
        if ( opts.allowWrap === false && ( opts.currSlide + count ) >= opts.slideCount )
            return;

        opts.API.advanceSlide( count );
        opts.API.trigger('cycle-next', [ opts ]).log('cycle-next');
    },

    prev: function() {
        var opts = this.opts();
        if ( opts.busy && ! opts.manualTrump )
            return;
        var count = opts.reverse ? 1 : -1;
        if ( opts.allowWrap === false && ( opts.currSlide + count ) < 0 )
            return;

        opts.API.advanceSlide( count );
        opts.API.trigger('cycle-prev', [ opts ]).log('cycle-prev');
    },

    destroy: function() {
        this.stop(); //#204

        var opts = this.opts();
        var clean = $.isFunction( $._data ) ? $._data : $.noop;  // hack for #184 and #201
        clearTimeout(opts.timeoutId);
        opts.timeoutId = 0;
        opts.API.stop();
        opts.API.trigger( 'cycle-destroyed', [ opts ] ).log('cycle-destroyed');
        opts.container.removeData();
        clean( opts.container[0], 'parsedAttrs', false );

        // #75; remove inline styles
        if ( ! opts.retainStylesOnDestroy ) {
            opts.container.removeAttr( 'style' );
            opts.slides.removeAttr( 'style' );
            opts.slides.removeClass( opts.slideActiveClass );
        }
        opts.slides.each(function() {
            $(this).removeData();
            clean( this, 'parsedAttrs', false );
        });
    },

    jump: function( index ) {
        // go to the requested slide
        var fwd;
        var opts = this.opts();
        if ( opts.busy && ! opts.manualTrump )
            return;
        var num = parseInt( index, 10 );
        if (isNaN(num) || num < 0 || num >= opts.slides.length) {
            opts.API.log('goto: invalid slide index: ' + num);
            return;
        }
        if (num == opts.currSlide) {
            opts.API.log('goto: skipping, already on slide', num);
            return;
        }
        opts.nextSlide = num;
        clearTimeout(opts.timeoutId);
        opts.timeoutId = 0;
        opts.API.log('goto: ', num, ' (zero-index)');
        fwd = opts.currSlide < opts.nextSlide;
        opts.API.prepareTx( true, fwd );
    },

    stop: function() {
        var opts = this.opts();
        var pauseObj = opts.container;
        clearTimeout(opts.timeoutId);
        opts.timeoutId = 0;
        opts.API.stopTransition();
        if ( opts.pauseOnHover ) {
            if ( opts.pauseOnHover !== true )
                pauseObj = $( opts.pauseOnHover );
            pauseObj.off('mouseenter mouseleave');
        }
        opts.API.trigger('cycle-stopped', [ opts ]).log('cycle-stopped');
    },

    reinit: function() {
        var opts = this.opts();
        opts.API.destroy();
        opts.container.cycle();
    },

    remove: function( index ) {
        var opts = this.opts();
        var slide, slideToRemove, slides = [], slideNum = 1;
        for ( var i=0; i < opts.slides.length; i++ ) {
            slide = opts.slides[i];
            if ( i == index ) {
                slideToRemove = slide;
            }
            else {
                slides.push( slide );
                $( slide ).data('cycle.opts').slideNum = slideNum;
                slideNum++;
            }
        }
        if ( slideToRemove ) {
            opts.slides = $( slides );
            opts.slideCount--;
            $( slideToRemove ).remove();
            if (index == opts.currSlide)
                opts.API.advanceSlide( 1 );
            else if ( index < opts.currSlide )
                opts.currSlide--;
            else
                opts.currSlide++;

            opts.API.trigger('cycle-slide-removed', [ opts, index, slideToRemove ]).log('cycle-slide-removed');
            opts.API.updateView();
        }
    }

});

// listen for clicks on elements with data-cycle-cmd attribute
$(document).on('click.cycle', '[data-cycle-cmd]', function(e) {
    // issue cycle command
    e.preventDefault();
    var el = $(this);
    var command = el.data('cycle-cmd');
    var context = el.data('cycle-context') || '.cycle-slideshow';
    $(context).cycle(command, el.data('cycle-arg'));
});


})(jQuery);

/*! hash plugin for Cycle2;  version: 20130905 */
(function($) {
"use strict";

$(document).on( 'cycle-pre-initialize', function( e, opts ) {
    onHashChange( opts, true );

    opts._onHashChange = function() {
        onHashChange( opts, false );
    };

    $( window ).on( 'hashchange', opts._onHashChange);
});

$(document).on( 'cycle-update-view', function( e, opts, slideOpts ) {
    if ( slideOpts.hash && ( '#' + slideOpts.hash ) != window.location.hash ) {
        opts._hashFence = true;
        window.location.hash = slideOpts.hash;
    }
});

$(document).on( 'cycle-destroyed', function( e, opts) {
    if ( opts._onHashChange ) {
        $( window ).off( 'hashchange', opts._onHashChange );
    }
});

function onHashChange( opts, setStartingSlide ) {
    var hash;
    if ( opts._hashFence ) {
        opts._hashFence = false;
        return;
    }
    
    hash = window.location.hash.substring(1);

    opts.slides.each(function(i) {
        if ( $(this).data( 'cycle-hash' ) == hash ) {
            if ( setStartingSlide === true ) {
                opts.startingSlide = i;
            }
            else {
                var fwd = opts.currSlide < i;
                opts.nextSlide = i;
                opts.API.prepareTx( true, fwd );
            }
            return false;
        }
    });
}

})(jQuery);

/*! loader plugin for Cycle2;  version: 20131121 */
(function($) {
"use strict";

$.extend($.fn.cycle.defaults, {
    loader: false
});

$(document).on( 'cycle-bootstrap', function( e, opts ) {
    var addFn;

    if ( !opts.loader )
        return;

    // override API.add for this slideshow
    addFn = opts.API.add;
    opts.API.add = add;

    function add( slides, prepend ) {
        var slideArr = [];
        if ( $.type( slides ) == 'string' )
            slides = $.trim( slides );
        else if ( $.type( slides) === 'array' ) {
            for (var i=0; i < slides.length; i++ )
                slides[i] = $(slides[i])[0];
        }

        slides = $( slides );
        var slideCount = slides.length;

        if ( ! slideCount )
            return;

        slides.css('visibility','hidden').appendTo('body').each(function(i) { // appendTo fixes #56
            var count = 0;
            var slide = $(this);
            var images = slide.is('img') ? slide : slide.find('img');
            slide.data('index', i);
            // allow some images to be marked as unimportant (and filter out images w/o src value)
            images = images.filter(':not(.cycle-loader-ignore)').filter(':not([src=""])');
            if ( ! images.length ) {
                --slideCount;
                slideArr.push( slide );
                return;
            }

            count = images.length;
            images.each(function() {
                // add images that are already loaded
                if ( this.complete ) {
                    imageLoaded();
                }
                else {
                    $(this).load(function() {
                        imageLoaded();
                    }).on("error", function() {
                        if ( --count === 0 ) {
                            // ignore this slide
                            opts.API.log('slide skipped; img not loaded:', this.src);
                            if ( --slideCount === 0 && opts.loader == 'wait') {
                                addFn.apply( opts.API, [ slideArr, prepend ] );
                            }
                        }
                    });
                }
            });

            function imageLoaded() {
                if ( --count === 0 ) {
                    --slideCount;
                    addSlide( slide );
                }
            }
        });

        if ( slideCount )
            opts.container.addClass('cycle-loading');
        

        function addSlide( slide ) {
            var curr;
            if ( opts.loader == 'wait' ) {
                slideArr.push( slide );
                if ( slideCount === 0 ) {
                    // #59; sort slides into original markup order
                    slideArr.sort( sorter );
                    addFn.apply( opts.API, [ slideArr, prepend ] );
                    opts.container.removeClass('cycle-loading');
                }
            }
            else {
                curr = $(opts.slides[opts.currSlide]);
                addFn.apply( opts.API, [ slide, prepend ] );
                curr.show();
                opts.container.removeClass('cycle-loading');
            }
        }

        function sorter(a, b) {
            return a.data('index') - b.data('index');
        }
    }
});

})(jQuery);

/*! pager plugin for Cycle2;  version: 20130525 */
(function($) {
"use strict";

$.extend($.fn.cycle.defaults, {
    pager:            '> .cycle-pager',
    pagerActiveClass: 'cycle-pager-active',
    pagerEvent:       'click.cycle',
    pagerTemplate:    '<span>&bull;</span>'
});    

$(document).on( 'cycle-bootstrap', function( e, opts, API ) {
    // add method to API
    API.buildPagerLink = buildPagerLink;
});

$(document).on( 'cycle-slide-added', function( e, opts, slideOpts, slideAdded ) {
    if ( opts.pager ) {
        opts.API.buildPagerLink ( opts, slideOpts, slideAdded );
        opts.API.page = page;
    }
});

$(document).on( 'cycle-slide-removed', function( e, opts, index, slideRemoved ) {
    if ( opts.pager ) {
        var pagers = opts.API.getComponent( 'pager' );
        pagers.each(function() {
            var pager = $(this);
            $( pager.children()[index] ).remove();
        });
    }
});

$(document).on( 'cycle-update-view', function( e, opts, slideOpts ) {
    var pagers;

    if ( opts.pager ) {
        pagers = opts.API.getComponent( 'pager' );
        pagers.each(function() {
           $(this).children().removeClass( opts.pagerActiveClass )
            .eq( opts.currSlide ).addClass( opts.pagerActiveClass );
        });
    }
});

$(document).on( 'cycle-destroyed', function( e, opts ) {
    var pager = opts.API.getComponent( 'pager' );

    if ( pager ) {
        pager.children().off( opts.pagerEvent ); // #202
        if ( opts.pagerTemplate )
            pager.empty();
    }
});

function buildPagerLink( opts, slideOpts, slide ) {
    var pagerLink;
    var pagers = opts.API.getComponent( 'pager' );
    pagers.each(function() {
        var pager = $(this);
        if ( slideOpts.pagerTemplate ) {
            var markup = opts.API.tmpl( slideOpts.pagerTemplate, slideOpts, opts, slide[0] );
            pagerLink = $( markup ).appendTo( pager );
        }
        else {
            pagerLink = pager.children().eq( opts.slideCount - 1 );
        }
        pagerLink.on( opts.pagerEvent, function(e) {
            e.preventDefault();
            opts.API.page( pager, e.currentTarget);
        });
    });
}

function page( pager, target ) {
    /*jshint validthis:true */
    var opts = this.opts();
    if ( opts.busy && ! opts.manualTrump )
        return;

    var index = pager.children().index( target );
    var nextSlide = index;
    var fwd = opts.currSlide < nextSlide;
    if (opts.currSlide == nextSlide) {
        return; // no op, clicked pager for the currently displayed slide
    }
    opts.nextSlide = nextSlide;
    opts.API.prepareTx( true, fwd );
    opts.API.trigger('cycle-pager-activated', [opts, pager, target ]);
}

})(jQuery);


/*! prevnext plugin for Cycle2;  version: 20130709 */
(function($) {
"use strict";

$.extend($.fn.cycle.defaults, {
    next:           '> .cycle-next',
    nextEvent:      'click.cycle',
    disabledClass:  'disabled',
    prev:           '> .cycle-prev',
    prevEvent:      'click.cycle',
    swipe:          false
});

$(document).on( 'cycle-initialized', function( e, opts ) {
    opts.API.getComponent( 'next' ).on( opts.nextEvent, function(e) {
        e.preventDefault();
        opts.API.next();
    });

    opts.API.getComponent( 'prev' ).on( opts.prevEvent, function(e) {
        e.preventDefault();
        opts.API.prev();
    });

    if ( opts.swipe ) {
        var nextEvent = opts.swipeVert ? 'swipeUp.cycle' : 'swipeLeft.cycle swipeleft.cycle';
        var prevEvent = opts.swipeVert ? 'swipeDown.cycle' : 'swipeRight.cycle swiperight.cycle';
        opts.container.on( nextEvent, function(e) {
            opts.API.next();
        });
        opts.container.on( prevEvent, function() {
            opts.API.prev();
        });
    }
});

$(document).on( 'cycle-update-view', function( e, opts, slideOpts, currSlide ) {
    if ( opts.allowWrap )
        return;

    var cls = opts.disabledClass;
    var next = opts.API.getComponent( 'next' );
    var prev = opts.API.getComponent( 'prev' );
    var prevBoundry = opts._prevBoundry || 0;
    var nextBoundry = (opts._nextBoundry !== undefined)?opts._nextBoundry:opts.slideCount - 1;

    if ( opts.currSlide == nextBoundry )
        next.addClass( cls ).prop( 'disabled', true );
    else
        next.removeClass( cls ).prop( 'disabled', false );

    if ( opts.currSlide === prevBoundry )
        prev.addClass( cls ).prop( 'disabled', true );
    else
        prev.removeClass( cls ).prop( 'disabled', false );
});


$(document).on( 'cycle-destroyed', function( e, opts ) {
    opts.API.getComponent( 'prev' ).off( opts.nextEvent );
    opts.API.getComponent( 'next' ).off( opts.prevEvent );
    opts.container.off( 'swipeleft.cycle swiperight.cycle swipeLeft.cycle swipeRight.cycle swipeUp.cycle swipeDown.cycle' );
});

})(jQuery);

/*! progressive loader plugin for Cycle2;  version: 20130315 */
(function($) {
"use strict";

$.extend($.fn.cycle.defaults, {
    progressive: false
});

$(document).on( 'cycle-pre-initialize', function( e, opts ) {
    if ( !opts.progressive )
        return;

    var API = opts.API;
    var nextFn = API.next;
    var prevFn = API.prev;
    var prepareTxFn = API.prepareTx;
    var type = $.type( opts.progressive );
    var slides, scriptEl;

    if ( type == 'array' ) {
        slides = opts.progressive;
    }
    else if ($.isFunction( opts.progressive ) ) {
        slides = opts.progressive( opts );
    }
    else if ( type == 'string' ) {
        scriptEl = $( opts.progressive );
        slides = $.trim( scriptEl.html() );
        if ( !slides )
            return;
        // is it json array?
        if ( /^(\[)/.test( slides ) ) {
            try {
                slides = $.parseJSON( slides );
            }
            catch(err) {
                API.log( 'error parsing progressive slides', err );
                return;
            }
        }
        else {
            // plain text, split on delimeter
            slides = slides.split( new RegExp( scriptEl.data('cycle-split') || '\n') );
            
            // #95; look for empty slide
            if ( ! slides[ slides.length - 1 ] )
                slides.pop();
        }
    }



    if ( prepareTxFn ) {
        API.prepareTx = function( manual, fwd ) {
            var index, slide;

            if ( manual || slides.length === 0 ) {
                prepareTxFn.apply( opts.API, [ manual, fwd ] );
                return;
            }

            if ( fwd && opts.currSlide == ( opts.slideCount-1) ) {
                slide = slides[ 0 ];
                slides = slides.slice( 1 );
                opts.container.one('cycle-slide-added', function(e, opts ) {
                    setTimeout(function() {
                        opts.API.advanceSlide( 1 );
                    },50);
                });
                opts.API.add( slide );
            }
            else if ( !fwd && opts.currSlide === 0 ) {
                index = slides.length-1;
                slide = slides[ index ];
                slides = slides.slice( 0, index );
                opts.container.one('cycle-slide-added', function(e, opts ) {
                    setTimeout(function() {
                        opts.currSlide = 1;
                        opts.API.advanceSlide( -1 );
                    },50);
                });
                opts.API.add( slide, true );
            }
            else {
                prepareTxFn.apply( opts.API, [ manual, fwd ] );
            }
        };
    }

    if ( nextFn ) {
        API.next = function() {
            var opts = this.opts();
            if ( slides.length && opts.currSlide == ( opts.slideCount - 1 ) ) {
                var slide = slides[ 0 ];
                slides = slides.slice( 1 );
                opts.container.one('cycle-slide-added', function(e, opts ) {
                    nextFn.apply( opts.API );
                    opts.container.removeClass('cycle-loading');
                });
                opts.container.addClass('cycle-loading');
                opts.API.add( slide );
            }
            else {
                nextFn.apply( opts.API );    
            }
        };
    }
    
    if ( prevFn ) {
        API.prev = function() {
            var opts = this.opts();
            if ( slides.length && opts.currSlide === 0 ) {
                var index = slides.length-1;
                var slide = slides[ index ];
                slides = slides.slice( 0, index );
                opts.container.one('cycle-slide-added', function(e, opts ) {
                    opts.currSlide = 1;
                    opts.API.advanceSlide( -1 );
                    opts.container.removeClass('cycle-loading');
                });
                opts.container.addClass('cycle-loading');
                opts.API.add( slide, true );
            }
            else {
                prevFn.apply( opts.API );
            }
        };
    }
});

})(jQuery);

/*! tmpl plugin for Cycle2;  version: 20121227 */
(function($) {
"use strict";

$.extend($.fn.cycle.defaults, {
    tmplRegex: '{{((.)?.*?)}}'
});

$.extend($.fn.cycle.API, {
    tmpl: function( str, opts /*, ... */) {
        var regex = new RegExp( opts.tmplRegex || $.fn.cycle.defaults.tmplRegex, 'g' );
        var args = $.makeArray( arguments );
        args.shift();
        return str.replace(regex, function(_, str) {
            var i, j, obj, prop, names = str.split('.');
            for (i=0; i < args.length; i++) {
                obj = args[i];
                if ( ! obj )
                    continue;
                if (names.length > 1) {
                    prop = obj;
                    for (j=0; j < names.length; j++) {
                        obj = prop;
                        prop = prop[ names[j] ] || str;
                    }
                } else {
                    prop = obj[str];
                }

                if ($.isFunction(prop))
                    return prop.apply(obj, args);
                if (prop !== undefined && prop !== null && prop != str)
                    return prop;
            }
            return str;
        });
    }
});    

})(jQuery);
;/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
 * Licensed under the MIT License (LICENSE.txt).
 *
 * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
 * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
 * Thanks to: Seamus Leahy for adding deltaX and deltaY
 *
 * Version: 3.0.6
 * 
 * Requires: 1.2.2+
 */

(function($) {

var types = ['DOMMouseScroll', 'mousewheel'];

if ($.event.fixHooks) {
    for ( var i=types.length; i; ) {
        $.event.fixHooks[ types[--i] ] = $.event.mouseHooks;
    }
}

$.event.special.mousewheel = {
    setup: function() {
        if ( this.addEventListener ) {
            for ( var i=types.length; i; ) {
                this.addEventListener( types[--i], handler, false );
            }
        } else {
            this.onmousewheel = handler;
        }
    },
    
    teardown: function() {
        if ( this.removeEventListener ) {
            for ( var i=types.length; i; ) {
                this.removeEventListener( types[--i], handler, false );
            }
        } else {
            this.onmousewheel = null;
        }
    }
};

$.fn.extend({
    mousewheel: function(fn) {
        return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
    },
    
    unmousewheel: function(fn) {
        return this.unbind("mousewheel", fn);
    }
});


function handler(event) {
    var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
    event = $.event.fix(orgEvent);
    event.type = "mousewheel";
    
    // Old school scrollwheel delta
    if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; }
    if ( orgEvent.detail     ) { delta = -orgEvent.detail/3; }
    
    // New school multidimensional scroll (touchpads) deltas
    deltaY = delta;
    
    // Gecko
    if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
        deltaY = 0;
        deltaX = -1*delta;
    }
    
    // Webkit
    if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
    if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
    
    // Add event and delta to the front of the arguments
    args.unshift(event, delta, deltaX, deltaY);
    
    return ($.event.dispatch || $.event.handle).apply(this, args);
}

})(jQuery);
;/*!
 * jScrollPane - v2.0.0beta12 - 2012-09-27
 * http://jscrollpane.kelvinluck.com/
 *
 * Copyright (c) 2010 Kelvin Luck
 * Dual licensed under the MIT or GPL licenses.
 */

// Script: jScrollPane - cross browser customisable scrollbars
//
// *Version: 2.0.0beta12, Last updated: 2012-09-27*
//
// Project Home - http://jscrollpane.kelvinluck.com/
// GitHub       - http://github.com/vitch/jScrollPane
// Source       - http://github.com/vitch/jScrollPane/raw/master/script/jquery.jscrollpane.js
// (Minified)   - http://github.com/vitch/jScrollPane/raw/master/script/jquery.jscrollpane.min.js
//
// About: License
//
// Copyright (c) 2012 Kelvin Luck
// Dual licensed under the MIT or GPL Version 2 licenses.
// http://jscrollpane.kelvinluck.com/MIT-LICENSE.txt
// http://jscrollpane.kelvinluck.com/GPL-LICENSE.txt
//
// About: Examples
//
// All examples and demos are available through the jScrollPane example site at:
// http://jscrollpane.kelvinluck.com/
//
// About: Support and Testing
//
// This plugin is tested on the browsers below and has been found to work reliably on them. If you run
// into a problem on one of the supported browsers then please visit the support section on the jScrollPane
// website (http://jscrollpane.kelvinluck.com/) for more information on getting support. You are also
// welcome to fork the project on GitHub if you can contribute a fix for a given issue. 
//
// jQuery Versions - tested in 1.4.2+ - reported to work in 1.3.x
// Browsers Tested - Firefox 3.6.8, Safari 5, Opera 10.6, Chrome 5.0, IE 6, 7, 8
//
// About: Release History
//
// 2.0.0beta12 - (2012-09-27) fix for jQuery 1.8+
// 2.0.0beta11 - (2012-05-14)
// 2.0.0beta10 - (2011-04-17) cleaner required size calculation, improved keyboard support, stickToBottom/Left, other small fixes
// 2.0.0beta9 - (2011-01-31) new API methods, bug fixes and correct keyboard support for FF/OSX
// 2.0.0beta8 - (2011-01-29) touchscreen support, improved keyboard support
// 2.0.0beta7 - (2011-01-23) scroll speed consistent (thanks Aivo Paas)
// 2.0.0beta6 - (2010-12-07) scrollToElement horizontal support
// 2.0.0beta5 - (2010-10-18) jQuery 1.4.3 support, various bug fixes
// 2.0.0beta4 - (2010-09-17) clickOnTrack support, bug fixes
// 2.0.0beta3 - (2010-08-27) Horizontal mousewheel, mwheelIntent, keyboard support, bug fixes
// 2.0.0beta2 - (2010-08-21) Bug fixes
// 2.0.0beta1 - (2010-08-17) Rewrite to follow modern best practices and enable horizontal scrolling, initially hidden
//							 elements and dynamically sized elements.
// 1.x - (2006-12-31 - 2010-07-31) Initial version, hosted at googlecode, deprecated

(function($,window,undefined){

	$.fn.jScrollPane = function(settings)
	{
		// JScrollPane "class" - public methods are available through $('selector').data('jsp')
		function JScrollPane(elem, s)
		{
			var settings, jsp = this, pane, paneWidth, paneHeight, container, contentWidth, contentHeight,
				percentInViewH, percentInViewV, isScrollableV, isScrollableH, verticalDrag, dragMaxY,
				verticalDragPosition, horizontalDrag, dragMaxX, horizontalDragPosition,
				verticalBar, verticalTrack, scrollbarWidth, verticalTrackHeight, verticalDragHeight, arrowUp, arrowDown,
				horizontalBar, horizontalTrack, horizontalTrackWidth, horizontalDragWidth, arrowLeft, arrowRight,
				reinitialiseInterval, originalPadding, originalPaddingTotalWidth, previousContentWidth,
				wasAtTop = true, wasAtLeft = true, wasAtBottom = false, wasAtRight = false,
				originalElement = elem.clone(false, false).empty(),
				mwEvent = $.fn.mwheelIntent ? 'mwheelIntent.jsp' : 'mousewheel.jsp';

			originalPadding = elem.css('paddingTop') + ' ' +
								elem.css('paddingRight') + ' ' +
								elem.css('paddingBottom') + ' ' +
								elem.css('paddingLeft');
			originalPaddingTotalWidth = (parseInt(elem.css('paddingLeft'), 10) || 0) +
										(parseInt(elem.css('paddingRight'), 10) || 0);

			function initialise(s)
			{

				var /*firstChild, lastChild, */isMaintainingPositon, lastContentX, lastContentY,
						hasContainingSpaceChanged, originalScrollTop, originalScrollLeft,
						maintainAtBottom = false, maintainAtRight = false;

				settings = s;

				if (pane === undefined) {
					originalScrollTop = elem.scrollTop();
					originalScrollLeft = elem.scrollLeft();

					elem.css(
						{
							overflow: 'hidden',
							padding: 0
						}
					);
					// TODO: Deal with where width/ height is 0 as it probably means the element is hidden and we should
					// come back to it later and check once it is unhidden...
					paneWidth = elem.innerWidth() + originalPaddingTotalWidth;
					paneHeight = elem.innerHeight();

					elem.width(paneWidth);
					
					pane = $('<div class="jspPane" />').css('padding', originalPadding).append(elem.children());
					container = $('<div class="jspContainer" />')
						.css({
							'width': paneWidth + 'px',
							'height': paneHeight + 'px'
						}
					).append(pane).appendTo(elem);

					/*
					// Move any margins from the first and last children up to the container so they can still
					// collapse with neighbouring elements as they would before jScrollPane 
					firstChild = pane.find(':first-child');
					lastChild = pane.find(':last-child');
					elem.css(
						{
							'margin-top': firstChild.css('margin-top'),
							'margin-bottom': lastChild.css('margin-bottom')
						}
					);
					firstChild.css('margin-top', 0);
					lastChild.css('margin-bottom', 0);
					*/
				} else {
					elem.css('width', '');

					maintainAtBottom = settings.stickToBottom && isCloseToBottom();
					maintainAtRight  = settings.stickToRight  && isCloseToRight();

					hasContainingSpaceChanged = elem.innerWidth() + originalPaddingTotalWidth != paneWidth || elem.outerHeight() != paneHeight;

					if (hasContainingSpaceChanged) {
						paneWidth = elem.innerWidth() + originalPaddingTotalWidth;
						paneHeight = elem.innerHeight();
						container.css({
							width: paneWidth + 'px',
							height: paneHeight + 'px'
						});
					}

					// If nothing changed since last check...
					if (!hasContainingSpaceChanged && previousContentWidth == contentWidth && pane.outerHeight() == contentHeight) {
						elem.width(paneWidth);
						return;
					}
					previousContentWidth = contentWidth;
					
					pane.css('width', '');
					elem.width(paneWidth);

					container.find('>.jspVerticalBar,>.jspHorizontalBar').remove().end();
				}

				pane.css('overflow', 'auto');
				if (s.contentWidth) {
					contentWidth = s.contentWidth;
				} else {
					contentWidth = pane[0].scrollWidth;
				}
				contentHeight = pane[0].scrollHeight;
				pane.css('overflow', '');

				percentInViewH = contentWidth / paneWidth;
				percentInViewV = contentHeight / paneHeight;
				isScrollableV = percentInViewV > 1;

				isScrollableH = percentInViewH > 1;

				//console.log(paneWidth, paneHeight, contentWidth, contentHeight, percentInViewH, percentInViewV, isScrollableH, isScrollableV);

				if (!(isScrollableH || isScrollableV)) {
					elem.removeClass('jspScrollable');
					pane.css({
						top: 0,
						width: container.width() - originalPaddingTotalWidth
					});
					removeMousewheel();
					removeFocusHandler();
					removeKeyboardNav();
					removeClickOnTrack();
				} else {
					elem.addClass('jspScrollable');

					isMaintainingPositon = settings.maintainPosition && (verticalDragPosition || horizontalDragPosition);
					if (isMaintainingPositon) {
						lastContentX = contentPositionX();
						lastContentY = contentPositionY();
					}

					initialiseVerticalScroll();
					initialiseHorizontalScroll();
					resizeScrollbars();

					if (isMaintainingPositon) {
						scrollToX(maintainAtRight  ? (contentWidth  - paneWidth ) : lastContentX, false);
						scrollToY(maintainAtBottom ? (contentHeight - paneHeight) : lastContentY, false);
					}

					initFocusHandler();
					initMousewheel();
					initTouch();
					
					if (settings.enableKeyboardNavigation) {
						initKeyboardNav();
					}
					if (settings.clickOnTrack) {
						initClickOnTrack();
					}
					
					observeHash();
					if (settings.hijackInternalLinks) {
						hijackInternalLinks();
					}
				}

				if (settings.autoReinitialise && !reinitialiseInterval) {
					reinitialiseInterval = setInterval(
						function()
						{
							initialise(settings);
						},
						settings.autoReinitialiseDelay
					);
				} else if (!settings.autoReinitialise && reinitialiseInterval) {
					clearInterval(reinitialiseInterval);
				}

				originalScrollTop && elem.scrollTop(0) && scrollToY(originalScrollTop, false);
				originalScrollLeft && elem.scrollLeft(0) && scrollToX(originalScrollLeft, false);

				elem.trigger('jsp-initialised', [isScrollableH || isScrollableV]);
			}

			function initialiseVerticalScroll()
			{
				if (isScrollableV) {

					container.append(
						$('<div class="jspVerticalBar" />').append(
							$('<div class="jspCap jspCapTop" />'),
							$('<div class="jspTrack" />').append(
								$('<div class="jspDrag" />').append(
									$('<div class="jspDragTop" />'),
									$('<div class="jspDragBottom" />')
								)
							),
							$('<div class="jspCap jspCapBottom" />')
						)
					);

					verticalBar = container.find('>.jspVerticalBar');
					verticalTrack = verticalBar.find('>.jspTrack');
					verticalDrag = verticalTrack.find('>.jspDrag');

					if (settings.showArrows) {
						arrowUp = $('<a class="jspArrow jspArrowUp" />').bind(
							'mousedown.jsp', getArrowScroll(0, -1)
						).bind('click.jsp', nil);
						arrowDown = $('<a class="jspArrow jspArrowDown" />').bind(
							'mousedown.jsp', getArrowScroll(0, 1)
						).bind('click.jsp', nil);
						if (settings.arrowScrollOnHover) {
							arrowUp.bind('mouseover.jsp', getArrowScroll(0, -1, arrowUp));
							arrowDown.bind('mouseover.jsp', getArrowScroll(0, 1, arrowDown));
						}

						appendArrows(verticalTrack, settings.verticalArrowPositions, arrowUp, arrowDown);
					}

					verticalTrackHeight = paneHeight;
					container.find('>.jspVerticalBar>.jspCap:visible,>.jspVerticalBar>.jspArrow').each(
						function()
						{
							verticalTrackHeight -= $(this).outerHeight();
						}
					);


					verticalDrag.hover(
						function()
						{
							verticalDrag.addClass('jspHover');
						},
						function()
						{
							verticalDrag.removeClass('jspHover');
						}
					).bind(
						'mousedown.jsp',
						function(e)
						{
							// Stop IE from allowing text selection
							$('html').bind('dragstart.jsp selectstart.jsp', nil);

							verticalDrag.addClass('jspActive');

							var startY = e.pageY - verticalDrag.position().top;

							$('html').bind(
								'mousemove.jsp',
								function(e)
								{
									positionDragY(e.pageY - startY, false);
								}
							).bind('mouseup.jsp mouseleave.jsp', cancelDrag);
							return false;
						}
					);
					sizeVerticalScrollbar();
				}
			}

			function sizeVerticalScrollbar()
			{
				verticalTrack.height(verticalTrackHeight-2 + 'px');
				verticalDragPosition = 0;
				scrollbarWidth = settings.verticalGutter + verticalTrack.outerWidth();

				// Make the pane thinner to allow for the vertical scrollbar
				pane.width(paneWidth - scrollbarWidth - originalPaddingTotalWidth);

				// Add margin to the left of the pane if scrollbars are on that side (to position
				// the scrollbar on the left or right set it's left or right property in CSS)
				try {
					if (verticalBar.position().left === 0) {
						pane.css('margin-left', scrollbarWidth + 'px');
					}
				} catch (err) {
				}
			}

			function initialiseHorizontalScroll()
			{
				if (isScrollableH) {

					container.append(
						$('<div class="jspHorizontalBar" />').append(
							$('<div class="jspCap jspCapLeft" />'),
							$('<div class="jspTrack" />').append(
								$('<div class="jspDrag" />').append(
									$('<div class="jspDragLeft" />'),
									$('<div class="jspDragRight" />')
								)
							),
							$('<div class="jspCap jspCapRight" />')
						)
					);

					horizontalBar = container.find('>.jspHorizontalBar');
					horizontalTrack = horizontalBar.find('>.jspTrack');
					horizontalDrag = horizontalTrack.find('>.jspDrag');

					if (settings.showArrows) {
						arrowLeft = $('<a class="jspArrow jspArrowLeft" />').bind(
							'mousedown.jsp', getArrowScroll(-1, 0)
						).bind('click.jsp', nil);
						arrowRight = $('<a class="jspArrow jspArrowRight" />').bind(
							'mousedown.jsp', getArrowScroll(1, 0)
						).bind('click.jsp', nil);
						if (settings.arrowScrollOnHover) {
							arrowLeft.bind('mouseover.jsp', getArrowScroll(-1, 0, arrowLeft));
							arrowRight.bind('mouseover.jsp', getArrowScroll(1, 0, arrowRight));
						}
						appendArrows(horizontalTrack, settings.horizontalArrowPositions, arrowLeft, arrowRight);
					}

					horizontalDrag.hover(
						function()
						{
							horizontalDrag.addClass('jspHover');
						},
						function()
						{
							horizontalDrag.removeClass('jspHover');
						}
					).bind(
						'mousedown.jsp',
						function(e)
						{
							// Stop IE from allowing text selection
							$('html').bind('dragstart.jsp selectstart.jsp', nil);

							horizontalDrag.addClass('jspActive');

							var startX = e.pageX - horizontalDrag.position().left;

							$('html').bind(
								'mousemove.jsp',
								function(e)
								{
									positionDragX(e.pageX - startX, false);
								}
							).bind('mouseup.jsp mouseleave.jsp', cancelDrag);
							return false;
						}
					);
					horizontalTrackWidth = container.innerWidth();
					sizeHorizontalScrollbar();
				}
			}

			function sizeHorizontalScrollbar()
			{
				container.find('>.jspHorizontalBar>.jspCap:visible,>.jspHorizontalBar>.jspArrow').each(
					function()
					{
						horizontalTrackWidth -= $(this).outerWidth();
					}
				);

				horizontalTrack.width(horizontalTrackWidth + 'px');
				horizontalDragPosition = 0;
			}

			function resizeScrollbars()
			{
				if (isScrollableH && isScrollableV) {
					var horizontalTrackHeight = horizontalTrack.outerHeight(),
						verticalTrackWidth = verticalTrack.outerWidth();
					verticalTrackHeight -= horizontalTrackHeight;
					$(horizontalBar).find('>.jspCap:visible,>.jspArrow').each(
						function()
						{
							horizontalTrackWidth += $(this).outerWidth();
						}
					);
					horizontalTrackWidth -= verticalTrackWidth;
					paneHeight -= verticalTrackWidth;
					paneWidth -= horizontalTrackHeight;
					horizontalTrack.parent().append(
						$('<div class="jspCorner" />').css('width', horizontalTrackHeight + 'px')
					);
					sizeVerticalScrollbar();
					sizeHorizontalScrollbar();
				}
				// reflow content
				if (isScrollableH) {
					pane.width((container.outerWidth() - originalPaddingTotalWidth) + 'px');
				}
				contentHeight = pane.outerHeight();
				percentInViewV = contentHeight / paneHeight;

				if (isScrollableH) {
					horizontalDragWidth = Math.ceil(1 / percentInViewH * horizontalTrackWidth);
					if (horizontalDragWidth > settings.horizontalDragMaxWidth) {
						horizontalDragWidth = settings.horizontalDragMaxWidth;
					} else if (horizontalDragWidth < settings.horizontalDragMinWidth) {
						horizontalDragWidth = settings.horizontalDragMinWidth;
					}
					horizontalDrag.width(horizontalDragWidth + 'px');
					dragMaxX = horizontalTrackWidth - horizontalDragWidth;
					_positionDragX(horizontalDragPosition); // To update the state for the arrow buttons
				}
				if (isScrollableV) {
					verticalDragHeight = Math.ceil(1 / percentInViewV * verticalTrackHeight);
					if (verticalDragHeight > settings.verticalDragMaxHeight) {
						verticalDragHeight = settings.verticalDragMaxHeight;
					} else if (verticalDragHeight < settings.verticalDragMinHeight) {
						verticalDragHeight = settings.verticalDragMinHeight;
					}
					verticalDrag.height(verticalDragHeight-3 + 'px');
					dragMaxY = verticalTrackHeight - verticalDragHeight;
					_positionDragY(verticalDragPosition); // To update the state for the arrow buttons
				}
			}

			function appendArrows(ele, p, a1, a2)
			{
				var p1 = "before", p2 = "after", aTemp;
				
				// Sniff for mac... Is there a better way to determine whether the arrows would naturally appear
				// at the top or the bottom of the bar?
				if (p == "os") {
					p = /Mac/.test(navigator.platform) ? "after" : "split";
				}
				if (p == p1) {
					p2 = p;
				} else if (p == p2) {
					p1 = p;
					aTemp = a1;
					a1 = a2;
					a2 = aTemp;
				}

				ele[p1](a1)[p2](a2);
			}

			function getArrowScroll(dirX, dirY, ele)
			{
				return function()
				{
					arrowScroll(dirX, dirY, this, ele);
					this.blur();
					return false;
				};
			}

			function arrowScroll(dirX, dirY, arrow, ele)
			{
				arrow = $(arrow).addClass('jspActive');

				var eve,
					scrollTimeout,
					isFirst = true,
					doScroll = function()
					{
						if (dirX !== 0) {
							jsp.scrollByX(dirX * settings.arrowButtonSpeed);
						}
						if (dirY !== 0) {
							jsp.scrollByY(dirY * settings.arrowButtonSpeed);
						}
						scrollTimeout = setTimeout(doScroll, isFirst ? settings.initialDelay : settings.arrowRepeatFreq);
						isFirst = false;
					};

				doScroll();

				eve = ele ? 'mouseout.jsp' : 'mouseup.jsp';
				ele = ele || $('html');
				ele.bind(
					eve,
					function()
					{
						arrow.removeClass('jspActive');
						scrollTimeout && clearTimeout(scrollTimeout);
						scrollTimeout = null;
						ele.unbind(eve);
					}
				);
			}

			function initClickOnTrack()
			{
				removeClickOnTrack();
				if (isScrollableV) {
					verticalTrack.bind(
						'mousedown.jsp',
						function(e)
						{
							if (e.originalTarget === undefined || e.originalTarget == e.currentTarget) {
								var clickedTrack = $(this),
									offset = clickedTrack.offset(),
									direction = e.pageY - offset.top - verticalDragPosition,
									scrollTimeout,
									isFirst = true,
									doScroll = function()
									{
										var offset = clickedTrack.offset(),
											pos = e.pageY - offset.top - verticalDragHeight / 2,
											contentDragY = paneHeight * settings.scrollPagePercent,
											dragY = dragMaxY * contentDragY / (contentHeight - paneHeight);
										if (direction < 0) {
											if (verticalDragPosition - dragY > pos) {
												jsp.scrollByY(-contentDragY);
											} else {
												positionDragY(pos);
											}
										} else if (direction > 0) {
											if (verticalDragPosition + dragY < pos) {
												jsp.scrollByY(contentDragY);
											} else {
												positionDragY(pos);
											}
										} else {
											cancelClick();
											return;
										}
										scrollTimeout = setTimeout(doScroll, isFirst ? settings.initialDelay : settings.trackClickRepeatFreq);
										isFirst = false;
									},
									cancelClick = function()
									{
										scrollTimeout && clearTimeout(scrollTimeout);
										scrollTimeout = null;
										$(document).unbind('mouseup.jsp', cancelClick);
									};
								doScroll();
								$(document).bind('mouseup.jsp', cancelClick);
								return false;
							}
						}
					);
				}
				
				if (isScrollableH) {
					horizontalTrack.bind(
						'mousedown.jsp',
						function(e)
						{
							if (e.originalTarget === undefined || e.originalTarget == e.currentTarget) {
								var clickedTrack = $(this),
									offset = clickedTrack.offset(),
									direction = e.pageX - offset.left - horizontalDragPosition,
									scrollTimeout,
									isFirst = true,
									doScroll = function()
									{
										var offset = clickedTrack.offset(),
											pos = e.pageX - offset.left - horizontalDragWidth / 2,
											contentDragX = paneWidth * settings.scrollPagePercent,
											dragX = dragMaxX * contentDragX / (contentWidth - paneWidth);
										if (direction < 0) {
											if (horizontalDragPosition - dragX > pos) {
												jsp.scrollByX(-contentDragX);
											} else {
												positionDragX(pos);
											}
										} else if (direction > 0) {
											if (horizontalDragPosition + dragX < pos) {
												jsp.scrollByX(contentDragX);
											} else {
												positionDragX(pos);
											}
										} else {
											cancelClick();
											return;
										}
										scrollTimeout = setTimeout(doScroll, isFirst ? settings.initialDelay : settings.trackClickRepeatFreq);
										isFirst = false;
									},
									cancelClick = function()
									{
										scrollTimeout && clearTimeout(scrollTimeout);
										scrollTimeout = null;
										$(document).unbind('mouseup.jsp', cancelClick);
									};
								doScroll();
								$(document).bind('mouseup.jsp', cancelClick);
								return false;
							}
						}
					);
				}
			}

			function removeClickOnTrack()
			{
				if (horizontalTrack) {
					horizontalTrack.unbind('mousedown.jsp');
				}
				if (verticalTrack) {
					verticalTrack.unbind('mousedown.jsp');
				}
			}

			function cancelDrag()
			{
				$('html').unbind('dragstart.jsp selectstart.jsp mousemove.jsp mouseup.jsp mouseleave.jsp');

				if (verticalDrag) {
					verticalDrag.removeClass('jspActive');
				}
				if (horizontalDrag) {
					horizontalDrag.removeClass('jspActive');
				}
			}

			function positionDragY(destY, animate)
			{
				if (!isScrollableV) {
					return;
				}
				if (destY < 0) {
					destY = 0;
				} else if (destY > dragMaxY) {
					destY = dragMaxY;
				}

				// can't just check if(animate) because false is a valid value that could be passed in...
				if (animate === undefined) {
					animate = settings.animateScroll;
				}
				if (animate) {
					jsp.animate(verticalDrag, 'top', destY,	_positionDragY);
				} else {
					verticalDrag.css('top', destY);
					_positionDragY(destY);
				}

			}

			function _positionDragY(destY)
			{
				if (destY === undefined) {
					destY = verticalDrag.position().top;
				}

				container.scrollTop(0);
				verticalDragPosition = destY;

				var isAtTop = verticalDragPosition === 0,
					isAtBottom = verticalDragPosition == dragMaxY,
					percentScrolled = destY/ dragMaxY,
					destTop = -percentScrolled * (contentHeight - paneHeight);

				if (wasAtTop != isAtTop || wasAtBottom != isAtBottom) {
					wasAtTop = isAtTop;
					wasAtBottom = isAtBottom;
					elem.trigger('jsp-arrow-change', [wasAtTop, wasAtBottom, wasAtLeft, wasAtRight]);
				}
				
				updateVerticalArrows(isAtTop, isAtBottom);
				pane.css('top', destTop);
				elem.trigger('jsp-scroll-y', [-destTop, isAtTop, isAtBottom]).trigger('scroll');
			}

			function positionDragX(destX, animate)
			{
				if (!isScrollableH) {
					return;
				}
				if (destX < 0) {
					destX = 0;
				} else if (destX > dragMaxX) {
					destX = dragMaxX;
				}

				if (animate === undefined) {
					animate = settings.animateScroll;
				}
				if (animate) {
					jsp.animate(horizontalDrag, 'left', destX,	_positionDragX);
				} else {
					horizontalDrag.css('left', destX);
					_positionDragX(destX);
				}
			}

			function _positionDragX(destX)
			{
				if (destX === undefined) {
					destX = horizontalDrag.position().left;
				}

				container.scrollTop(0);
				horizontalDragPosition = destX;

				var isAtLeft = horizontalDragPosition === 0,
					isAtRight = horizontalDragPosition == dragMaxX,
					percentScrolled = destX / dragMaxX,
					destLeft = -percentScrolled * (contentWidth - paneWidth);

				if (wasAtLeft != isAtLeft || wasAtRight != isAtRight) {
					wasAtLeft = isAtLeft;
					wasAtRight = isAtRight;
					elem.trigger('jsp-arrow-change', [wasAtTop, wasAtBottom, wasAtLeft, wasAtRight]);
				}
				
				updateHorizontalArrows(isAtLeft, isAtRight);
				pane.css('left', destLeft);
				elem.trigger('jsp-scroll-x', [-destLeft, isAtLeft, isAtRight]).trigger('scroll');
			}

			function updateVerticalArrows(isAtTop, isAtBottom)
			{
				if (settings.showArrows) {
					arrowUp[isAtTop ? 'addClass' : 'removeClass']('jspDisabled');
					arrowDown[isAtBottom ? 'addClass' : 'removeClass']('jspDisabled');
				}
			}

			function updateHorizontalArrows(isAtLeft, isAtRight)
			{
				if (settings.showArrows) {
					arrowLeft[isAtLeft ? 'addClass' : 'removeClass']('jspDisabled');
					arrowRight[isAtRight ? 'addClass' : 'removeClass']('jspDisabled');
				}
			}

			function scrollToY(destY, animate)
			{
				var percentScrolled = destY / (contentHeight - paneHeight);
				positionDragY(percentScrolled * dragMaxY, animate);
			}

			function scrollToX(destX, animate)
			{
				var percentScrolled = destX / (contentWidth - paneWidth);
				positionDragX(percentScrolled * dragMaxX, animate);
			}

			function scrollToElement(ele, stickToTop, animate)
			{
				var e, eleHeight, eleWidth, eleTop = 0, eleLeft = 0, viewportTop, viewportLeft, maxVisibleEleTop, maxVisibleEleLeft, destY, destX;

				// Legal hash values aren't necessarily legal jQuery selectors so we need to catch any
				// errors from the lookup...
				try {
					e = $(ele);
				} catch (err) {
					return;
				}
				eleHeight = e.outerHeight();
				eleWidth= e.outerWidth();

				container.scrollTop(0);
				container.scrollLeft(0);
				
				// loop through parents adding the offset top of any elements that are relatively positioned between
				// the focused element and the jspPane so we can get the true distance from the top
				// of the focused element to the top of the scrollpane...
				while (!e.is('.jspPane')) {
					eleTop += e.position().top;
					eleLeft += e.position().left;
					e = e.offsetParent();
					if (/^body|html$/i.test(e[0].nodeName)) {
						// we ended up too high in the document structure. Quit!
						return;
					}
				}

				viewportTop = contentPositionY();
				maxVisibleEleTop = viewportTop + paneHeight;
				if (eleTop < viewportTop || stickToTop) { // element is above viewport
					destY = eleTop - settings.verticalGutter;
				} else if (eleTop + eleHeight > maxVisibleEleTop) { // element is below viewport
					destY = eleTop - paneHeight + eleHeight + settings.verticalGutter;
				}
				if (destY) {
					scrollToY(destY, animate);
				}
				
				viewportLeft = contentPositionX();
	            maxVisibleEleLeft = viewportLeft + paneWidth;
	            if (eleLeft < viewportLeft || stickToTop) { // element is to the left of viewport
	                destX = eleLeft - settings.horizontalGutter;
	            } else if (eleLeft + eleWidth > maxVisibleEleLeft) { // element is to the right viewport
	                destX = eleLeft - paneWidth + eleWidth + settings.horizontalGutter;
	            }
	            if (destX) {
	                scrollToX(destX, animate);
	            }

			}

			function contentPositionX()
			{
				return -pane.position().left;
			}

			function contentPositionY()
			{
				return -pane.position().top;
			}

			function isCloseToBottom()
			{
				var scrollableHeight = contentHeight - paneHeight;
				return (scrollableHeight > 20) && (scrollableHeight - contentPositionY() < 10);
			}

			function isCloseToRight()
			{
				var scrollableWidth = contentWidth - paneWidth;
				return (scrollableWidth > 20) && (scrollableWidth - contentPositionX() < 10);
			}

			function initMousewheel()
			{
				container.unbind(mwEvent).bind(
					mwEvent,
					function (event, delta, deltaX, deltaY) {
						var dX = horizontalDragPosition, dY = verticalDragPosition;
						jsp.scrollBy(deltaX * settings.mouseWheelSpeed, -deltaY * settings.mouseWheelSpeed, false);
						// return true if there was no movement so rest of screen can scroll
						return dX == horizontalDragPosition && dY == verticalDragPosition;
					}
				);
			}

			function removeMousewheel()
			{
				container.unbind(mwEvent);
			}

			function nil()
			{
				return false;
			}

			function initFocusHandler()
			{
				pane.find(':input,a').unbind('focus.jsp').bind(
					'focus.jsp',
					function(e)
					{
						scrollToElement(e.target, false);
					}
				);
			}

			function removeFocusHandler()
			{
				pane.find(':input,a').unbind('focus.jsp');
			}
			
			function initKeyboardNav()
			{
				var keyDown, elementHasScrolled, validParents = [];
				isScrollableH && validParents.push(horizontalBar[0]);
				isScrollableV && validParents.push(verticalBar[0]);
				
				// IE also focuses elements that don't have tabindex set.
				pane.focus(
					function()
					{
						elem.focus();
					}
				);
				
				elem.attr('tabindex', 0)
					.unbind('keydown.jsp keypress.jsp')
					.bind(
						'keydown.jsp',
						function(e)
						{
							if (e.target !== this && !(validParents.length && $(e.target).closest(validParents).length)){
								return;
							}
							var dX = horizontalDragPosition, dY = verticalDragPosition;
							switch(e.keyCode) {
								case 40: // down
								case 38: // up
								case 34: // page down
								case 32: // space
								case 33: // page up
								case 39: // right
								case 37: // left
									keyDown = e.keyCode;
									keyDownHandler();
									break;
								case 35: // end
									scrollToY(contentHeight - paneHeight);
									keyDown = null;
									break;
								case 36: // home
									scrollToY(0);
									keyDown = null;
									break;
							}

							elementHasScrolled = e.keyCode == keyDown && dX != horizontalDragPosition || dY != verticalDragPosition;
							return !elementHasScrolled;
						}
					).bind(
						'keypress.jsp', // For FF/ OSX so that we can cancel the repeat key presses if the JSP scrolls...
						function(e)
						{
							if (e.keyCode == keyDown) {
								keyDownHandler();
							}
							return !elementHasScrolled;
						}
					);
				
				if (settings.hideFocus) {
					elem.css('outline', 'none');
					if ('hideFocus' in container[0]){
						elem.attr('hideFocus', true);
					}
				} else {
					elem.css('outline', '');
					if ('hideFocus' in container[0]){
						elem.attr('hideFocus', false);
					}
				}
				
				function keyDownHandler()
				{
					var dX = horizontalDragPosition, dY = verticalDragPosition;
					switch(keyDown) {
						case 40: // down
							jsp.scrollByY(settings.keyboardSpeed, false);
							break;
						case 38: // up
							jsp.scrollByY(-settings.keyboardSpeed, false);
							break;
						case 34: // page down
						case 32: // space
							jsp.scrollByY(paneHeight * settings.scrollPagePercent, false);
							break;
						case 33: // page up
							jsp.scrollByY(-paneHeight * settings.scrollPagePercent, false);
							break;
						case 39: // right
							jsp.scrollByX(settings.keyboardSpeed, false);
							break;
						case 37: // left
							jsp.scrollByX(-settings.keyboardSpeed, false);
							break;
					}

					elementHasScrolled = dX != horizontalDragPosition || dY != verticalDragPosition;
					return elementHasScrolled;
				}
			}
			
			function removeKeyboardNav()
			{
				elem.attr('tabindex', '-1')
					.removeAttr('tabindex')
					.unbind('keydown.jsp keypress.jsp');
			}

			function observeHash()
			{
				if (location.hash && location.hash.length > 1) {
					var e,
						retryInt,
						hash = escape(location.hash.substr(1)) // hash must be escaped to prevent XSS
						;
					try {
						e = $('#' + hash + ', a[name="' + hash + '"]');
					} catch (err) {
						return;
					}

					if (e.length && pane.find(hash)) {
						// nasty workaround but it appears to take a little while before the hash has done its thing
						// to the rendered page so we just wait until the container's scrollTop has been messed up.
						if (container.scrollTop() === 0) {
							retryInt = setInterval(
								function()
								{
									if (container.scrollTop() > 0) {
										scrollToElement(e, true);
										$(document).scrollTop(container.position().top);
										clearInterval(retryInt);
									}
								},
								50
							);
						} else {
							scrollToElement(e, true);
							$(document).scrollTop(container.position().top);
						}
					}
				}
			}

			function hijackInternalLinks()
			{
				// only register the link handler once
				if ($(document.body).data('jspHijack')) {
					return;
				}

				// remember that the handler was bound
				$(document.body).data('jspHijack', true);

				// use live handler to also capture newly created links
				$(document.body).delegate('a[href*=#]', 'click', function(event) {
					// does the link point to the same page?
					// this also takes care of cases with a <base>-Tag or Links not starting with the hash #
					// e.g. <a href="index.html#test"> when the current url already is index.html
					var href = this.href.substr(0, this.href.indexOf('#')),
						locationHref = location.href,
						hash,
						element,
						container,
						jsp,
						scrollTop,
						elementTop;
					if (location.href.indexOf('#') !== -1) {
						locationHref = location.href.substr(0, location.href.indexOf('#'));
					}
					if (href !== locationHref) {
						// the link points to another page
						return;
					}

					// check if jScrollPane should handle this click event
					hash = escape(this.href.substr(this.href.indexOf('#') + 1));

					// find the element on the page
					element;
					try {
						element = $('#' + hash + ', a[name="' + hash + '"]');
					} catch (e) {
						// hash is not a valid jQuery identifier
						return;
					}

					if (!element.length) {
						// this link does not point to an element on this page
						return;
					}

					container = element.closest('.jspScrollable');
					jsp = container.data('jsp');

					// jsp might be another jsp instance than the one, that bound this event
					// remember: this event is only bound once for all instances.
					jsp.scrollToElement(element, true);

					if (container[0].scrollIntoView) {
						// also scroll to the top of the container (if it is not visible)
						scrollTop = $(window).scrollTop();
						elementTop = element.offset().top;
						if (elementTop < scrollTop || elementTop > scrollTop + $(window).height()) {
							container[0].scrollIntoView();
						}
					}

					// jsp handled this event, prevent the browser default (scrolling :P)
					event.preventDefault();
				});
			}
			
			// Init touch on iPad, iPhone, iPod, Android
			function initTouch()
			{
				var startX,
					startY,
					touchStartX,
					touchStartY,
					moved,
					moving = false;
  
				container.unbind('touchstart.jsp touchmove.jsp touchend.jsp click.jsp-touchclick').bind(
					'touchstart.jsp',
					function(e)
					{
						var touch = e.originalEvent.touches[0];
						startX = contentPositionX();
						startY = contentPositionY();
						touchStartX = touch.pageX;
						touchStartY = touch.pageY;
						moved = false;
						moving = true;
					}
				).bind(
					'touchmove.jsp',
					function(ev)
					{
						if(!moving) {
							return;
						}
						
						var touchPos = ev.originalEvent.touches[0],
							dX = horizontalDragPosition, dY = verticalDragPosition;
						
						jsp.scrollTo(startX + touchStartX - touchPos.pageX, startY + touchStartY - touchPos.pageY);
						
						moved = moved || Math.abs(touchStartX - touchPos.pageX) > 5 || Math.abs(touchStartY - touchPos.pageY) > 5;
						
						// return true if there was no movement so rest of screen can scroll
						return dX == horizontalDragPosition && dY == verticalDragPosition;
					}
				).bind(
					'touchend.jsp',
					function(e)
					{
						moving = false;
						/*if(moved) {
							return false;
						}*/
					}
				).bind(
					'click.jsp-touchclick',
					function(e)
					{
						if(moved) {
							moved = false;
							return false;
						}
					}
				);
			}
			
			function destroy(){
				var currentY = contentPositionY(),
					currentX = contentPositionX();
				elem.removeClass('jspScrollable').unbind('.jsp');
				elem.replaceWith(originalElement.append(pane.children()));
				originalElement.scrollTop(currentY);
				originalElement.scrollLeft(currentX);

				// clear reinitialize timer if active
				if (reinitialiseInterval) {
					clearInterval(reinitialiseInterval);
				}
			}

			// Public API
			$.extend(
				jsp,
				{
					// Reinitialises the scroll pane (if it's internal dimensions have changed since the last time it
					// was initialised). The settings object which is passed in will override any settings from the
					// previous time it was initialised - if you don't pass any settings then the ones from the previous
					// initialisation will be used.
					reinitialise: function(s)
					{
						s = $.extend({}, settings, s);
						initialise(s);
					},
					// Scrolls the specified element (a jQuery object, DOM node or jQuery selector string) into view so
					// that it can be seen within the viewport. If stickToTop is true then the element will appear at
					// the top of the viewport, if it is false then the viewport will scroll as little as possible to
					// show the element. You can also specify if you want animation to occur. If you don't provide this
					// argument then the animateScroll value from the settings object is used instead.
					scrollToElement: function(ele, stickToTop, animate)
					{
						scrollToElement(ele, stickToTop, animate);
					},
					// Scrolls the pane so that the specified co-ordinates within the content are at the top left
					// of the viewport. animate is optional and if not passed then the value of animateScroll from
					// the settings object this jScrollPane was initialised with is used.
					scrollTo: function(destX, destY, animate)
					{
						scrollToX(destX, animate);
						scrollToY(destY, animate);
					},
					// Scrolls the pane so that the specified co-ordinate within the content is at the left of the
					// viewport. animate is optional and if not passed then the value of animateScroll from the settings
					// object this jScrollPane was initialised with is used.
					scrollToX: function(destX, animate)
					{
						scrollToX(destX, animate);
					},
					// Scrolls the pane so that the specified co-ordinate within the content is at the top of the
					// viewport. animate is optional and if not passed then the value of animateScroll from the settings
					// object this jScrollPane was initialised with is used.
					scrollToY: function(destY, animate)
					{
						scrollToY(destY, animate);
					},
					// Scrolls the pane to the specified percentage of its maximum horizontal scroll position. animate
					// is optional and if not passed then the value of animateScroll from the settings object this
					// jScrollPane was initialised with is used.
					scrollToPercentX: function(destPercentX, animate)
					{
						scrollToX(destPercentX * (contentWidth - paneWidth), animate);
					},
					// Scrolls the pane to the specified percentage of its maximum vertical scroll position. animate
					// is optional and if not passed then the value of animateScroll from the settings object this
					// jScrollPane was initialised with is used.
					scrollToPercentY: function(destPercentY, animate)
					{
						scrollToY(destPercentY * (contentHeight - paneHeight), animate);
					},
					// Scrolls the pane by the specified amount of pixels. animate is optional and if not passed then
					// the value of animateScroll from the settings object this jScrollPane was initialised with is used.
					scrollBy: function(deltaX, deltaY, animate)
					{
						jsp.scrollByX(deltaX, animate);
						jsp.scrollByY(deltaY, animate);
					},
					// Scrolls the pane by the specified amount of pixels. animate is optional and if not passed then
					// the value of animateScroll from the settings object this jScrollPane was initialised with is used.
					scrollByX: function(deltaX, animate)
					{
						var destX = contentPositionX() + Math[deltaX<0 ? 'floor' : 'ceil'](deltaX),
							percentScrolled = destX / (contentWidth - paneWidth);
						positionDragX(percentScrolled * dragMaxX, animate);
					},
					// Scrolls the pane by the specified amount of pixels. animate is optional and if not passed then
					// the value of animateScroll from the settings object this jScrollPane was initialised with is used.
					scrollByY: function(deltaY, animate)
					{
						var destY = contentPositionY() + Math[deltaY<0 ? 'floor' : 'ceil'](deltaY),
							percentScrolled = destY / (contentHeight - paneHeight);
						positionDragY(percentScrolled * dragMaxY, animate);
					},
					// Positions the horizontal drag at the specified x position (and updates the viewport to reflect
					// this). animate is optional and if not passed then the value of animateScroll from the settings
					// object this jScrollPane was initialised with is used.
					positionDragX: function(x, animate)
					{
						positionDragX(x, animate);
					},
					// Positions the vertical drag at the specified y position (and updates the viewport to reflect
					// this). animate is optional and if not passed then the value of animateScroll from the settings
					// object this jScrollPane was initialised with is used.
					positionDragY: function(y, animate)
					{
						positionDragY(y, animate);
					},
					// This method is called when jScrollPane is trying to animate to a new position. You can override
					// it if you want to provide advanced animation functionality. It is passed the following arguments:
					//  * ele          - the element whose position is being animated
					//  * prop         - the property that is being animated
					//  * value        - the value it's being animated to
					//  * stepCallback - a function that you must execute each time you update the value of the property
					// You can use the default implementation (below) as a starting point for your own implementation.
					animate: function(ele, prop, value, stepCallback)
					{
						var params = {};
						params[prop] = value;
						ele.animate(
							params,
							{
								'duration'	: settings.animateDuration,
								'easing'	: settings.animateEase,
								'queue'		: false,
								'step'		: stepCallback
							}
						);
					},
					// Returns the current x position of the viewport with regards to the content pane.
					getContentPositionX: function()
					{
						return contentPositionX();
					},
					// Returns the current y position of the viewport with regards to the content pane.
					getContentPositionY: function()
					{
						return contentPositionY();
					},
					// Returns the width of the content within the scroll pane.
					getContentWidth: function()
					{
						return contentWidth;
					},
					// Returns the height of the content within the scroll pane.
					getContentHeight: function()
					{
						return contentHeight;
					},
					// Returns the horizontal position of the viewport within the pane content.
					getPercentScrolledX: function()
					{
						return contentPositionX() / (contentWidth - paneWidth);
					},
					// Returns the vertical position of the viewport within the pane content.
					getPercentScrolledY: function()
					{
						return contentPositionY() / (contentHeight - paneHeight);
					},
					// Returns whether or not this scrollpane has a horizontal scrollbar.
					getIsScrollableH: function()
					{
						return isScrollableH;
					},
					// Returns whether or not this scrollpane has a vertical scrollbar.
					getIsScrollableV: function()
					{
						return isScrollableV;
					},
					// Gets a reference to the content pane. It is important that you use this method if you want to
					// edit the content of your jScrollPane as if you access the element directly then you may have some
					// problems (as your original element has had additional elements for the scrollbars etc added into
					// it).
					getContentPane: function()
					{
						return pane;
					},
					// Scrolls this jScrollPane down as far as it can currently scroll. If animate isn't passed then the
					// animateScroll value from settings is used instead.
					scrollToBottom: function(animate)
					{
						positionDragY(dragMaxY, animate);
					},
					// Hijacks the links on the page which link to content inside the scrollpane. If you have changed
					// the content of your page (e.g. via AJAX) and want to make sure any new anchor links to the
					// contents of your scroll pane will work then call this function.
					hijackInternalLinks: $.noop,
					// Removes the jScrollPane and returns the page to the state it was in before jScrollPane was
					// initialised.
					destroy: function()
					{
							destroy();
					}
				}
			);
			
			initialise(s);
		}

		// Pluginifying code...
		settings = $.extend({}, $.fn.jScrollPane.defaults, settings);
		
		// Apply default speed
		$.each(['mouseWheelSpeed', 'arrowButtonSpeed', 'trackClickSpeed', 'keyboardSpeed'], function() {
			settings[this] = settings[this] || settings.speed;
		});

		return this.each(
			function()
			{
				var elem = $(this), jspApi = elem.data('jsp');
				if (jspApi) {
					jspApi.reinitialise(settings);
				} else {
					$("script",elem).filter('[type="text/javascript"],:not([type])').remove();
					jspApi = new JScrollPane(elem, settings);
					elem.data('jsp', jspApi);
				}
			}
		);
	};

	$.fn.jScrollPane.defaults = {
		showArrows					: false,
		maintainPosition			: true,
		stickToBottom				: false,
		stickToRight				: false,
		clickOnTrack				: true,
		autoReinitialise			: false,
		autoReinitialiseDelay		: 500,
		verticalDragMinHeight		: 0,
		verticalDragMaxHeight		: 99999,
		horizontalDragMinWidth		: 0,
		horizontalDragMaxWidth		: 99999,
		contentWidth				: undefined,
		animateScroll				: false,
		animateDuration				: 300,
		animateEase					: 'linear',
		hijackInternalLinks			: false,
		verticalGutter				: 4,
		horizontalGutter			: 4,
		mouseWheelSpeed				: 0,
		arrowButtonSpeed			: 0,
		arrowRepeatFreq				: 50,
		arrowScrollOnHover			: false,
		trackClickSpeed				: 0,
		trackClickRepeatFreq		: 70,
		verticalArrowPositions		: 'split',
		horizontalArrowPositions	: 'split',
		enableKeyboardNavigation	: true,
		hideFocus					: false,
		keyboardSpeed				: 0,
		initialDelay                : 300,        // Delay before starting repeating
		speed						: 30,		// Default speed when others falsey
		scrollPagePercent			: .8		// Percent of visible area scrolled when pageUp/Down or track area pressed
	};

})(jQuery,this);

;/* JavaScript Boilerplate configuration file *
 * @version 1.0
 */
 /* Why do we need config?
  * All URLs needed by the JavaScript
  * Any strings that are displayed to the user
  * Any HTML that needs to be created from JavaScript
  * Settings (i.e., items per page)
  * Repeated unique values
  * Any value that may change in the future
 */

/*jslint sloppy: true */

/*global FB:false, jQuery, window, document*/

(function (MODULE, undefined) {
	MODULE.config = {
	stepID:0,
	saveMobile:"/mysimple/SaveMobileNumber",
	getCities:"/mysimple/getcities?id=",
	saveCity:"/mysimple/SaveCitySelection",
	shareFunPath:"/mysimple/SurprisedSmile/AddSuprisedSmileTwo/",
	mobileBreakpoint:768,	
	lotusJson:{}	
	};

/**
 * Check to evaluate whether 'MODULE' exists in the global namespace - if not, assign window.MODULE an object literal.
 */
}(window.MODULE = window.MODULE || {}, jQuery));;/* JavaScript Boilerplate helper file *
 * @version 1.0
 */

/*jshint forin:true, noarg:true, eqeqeq:true, bitwise:true, undef:true, curly:true, browser:true, devel:true, indent:4, maxerr:50, jquery:true */

/*jslint devel: true, nomen: true, unparam: true, sloppy: true, indent: 4, newcap:true */

/*global FB:false, jQuery, window, document, localStorage*/

(function (MODULE, $, undefined) {
	/*
     * Singletons serve as a namespace provider which isolate implementation code
     * from the global namespace so as to provide a single point of access for functions,
     * this is useful for organizing code into logical sections.
     * It is possible to put parentheses around this structure to instantiate it immediately after it's parsed.
     * This way it's always present when the script is executed and doesn't have to be instantiated separately.
	*/
    MODULE.helper = (function () {
        function _helper() {
			/*
			* Object of the current object
			*/
			var _this = this;

			/*
             * Replace multiple value in a single string.
             * Accept two parameters str, hash
             *		str : String on which replace operation is to be performed
             *		hash : JSON object contain string to be replaced with there replaced value
             * Return the new string at the end.
			*/
			this.multiReplace = function (str, hash) {
				var key;
				for (key in hash) {
					if (Object.prototype.hasOwnProperty.call(hash, key)) {
						str = str.replace(new RegExp(key, 'g'), hash[key]);
					}
				}
				return str;
			};


			/* 
             * Return the URI of site
             * Return protocol, hostname and port if found
             *
			*/
			this.getDomain = function () {
				var port = "",
					url = "";

				if (window.location.port) {
					port = ":" + window.location.port;
				}
				url = window.location.protocol + "//" + window.location.hostname + port + "/";
				return url;
			};

			/*
             * This method will return the query string from the URL of the website
             * Accept two parameters key, default_
             *		key : The name of the key who's value need to be fetch
             *		default_ : The default value which will return when nothing will found or key does not exists.
             *          If not pass anything then it will return blank value.
			*/
			this.getQueryString = function (key, default_) {
				if (default_ === null) {
					default_ = "";
				}

				key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
				var regex = new RegExp("[\\?&]" + key + "=([^&#]*)"),
					qs = regex.exec(window.location.href);

				if (qs === null) {
					return default_;
				} else {
					return qs[1];
				}
			};

			/*
             * This method will check for blank value in the provided string
             * This will return true if provided string contain blank value and false if not
			*/
			this.isBlank = function (string) {
				var isNonblank_re    = /\S/;
				return String(string).search(isNonblank_re) === -1;
			};

			
			
		
			
		this.simpleLightBox = function (option,url,id,titleText,altText) {
		var txt = titleText,
			$option=option,
			$altText=altText,
			$url=url,
			$id=id,
			getBody=$('body'),
			lightBoxCon=$('<div id="lightbox"/>'),
			modalWinCon=$('<div id="modalWidowcontainer" class="modalWidowcontent" />'),			 
			modalWinClose=$('<a class="closeButton" />'),
			modalWinContentCon=$('<div id="content" />'),
			modalWinContent=$('<p class="modalWindowText">'+txt+'</p>');
			modalWinCloseText=$(modalWinClose).text('Click to close');
			modalWinCon.append(modalWinCloseText).append(modalWinContentCon.append(modalWinContent));			
			getBody.append(lightBoxCon.append(modalWinCon));
			
		var oTop = ($(window).height() - modalWinCon.height())/2 ,
				oLeft = ($(window).width() - modalWinCon.width())/2;			
				modalWinCon.css({'left':oLeft,'top':oTop});
				// $('html').css('overflow', 'hidden');
		if($option=='videocall'){
			crIframe=$('<iframe id="' + $id +'" src="' +$url+'" width="817" height="498" />');
			modalWinContentCon.append(crIframe);
			$(window).resize(function() {
			$('#modalWidowcontainer').addClass('videOverley');
				if($(window).width() > MODULE.config.mobileBreakpoint) {
					$('#lightbox iframe').width(817)
					$('#lightbox iframe').height(498);
				}else{
					$('#lightbox iframe').width(284);
					$('#lightbox iframe').height(312);					
				}
				var oTop = ($(window).height() - modalWinCon.height())/2 ,
				oLeft = ($(window).width() - modalWinCon.width())/2;			
				modalWinCon.css({'left':oLeft,'top':oTop});
			}).resize();
		}
		if($option=='imageCall'){		
			var getImage=$('<img src="' + $url +'" title="'+ txt +'" alt="'+ txt +'" width="525px" />')
			modalWinContentCon.append(getImage);
		}
		if($option=='resultBin'){
			var binWidth=$('#binURL').attr("data-cell")*122,
				binHeight=$('#binURL').attr("data-row")*90,
				binHeader=$('#binHeader').html(),
				crIframe=$('<iframe id="' + $id +'" src="' +$url+'" width="'+binWidth+'" height="'+binHeight+'" frameBorder="0" />');
				modalWinContentCon.append(binHeader).append(crIframe);			
			$('.modalWindowText').hide();
			$('#modalWidowcontainer').addClass('roundedBoxWhite  nonResponsive').css({'width':binWidth, 'height':binHeight+240});
			
			
			var oTop = ($(window).height() - modalWinCon.height())/2 ,
				oLeft = ($(window).width() - modalWinCon.width())/2;			
				modalWinCon.css({'left':oLeft,'top':oTop});
			
		}
		
		if($option=='simpleBin'){

			var binWidth=313,
				binHeight=415,
				binHeader=$('#binHeader').html(),
				$loader=$('<div id="HubLoaderOverlay" style="margin-top:60%"><img alt="Loading" title="Loading" src="/resources/images/ico/my-simple/ajax-loader.gif"></div>')
			var pathname = window.location.pathname.split('/');	
			var domainUrl = (window.location.hostname.indexOf('www.')>-1)? ('https://' + window.location.hostname.replace('www.','secure.')): ('https://' +window.location.hostname);
			if(pathname[1].toUpperCase()=='EN' || pathname[1].toUpperCase()=='FR'){
				domainUrl = domainUrl+'/'+pathname[1].toLowerCase();	
			}			
			modalWinCon.append($loader)			
			$.getJSON(domainUrl+'/VirtualAgent/ExternalURLResponse?url='+$url)
				.done(function(data) {
				$("#HubLoaderOverlay").remove();
				modalWinContentCon.append(data.Data);	
				
			})
			.fail(function( jqxhr, textStatus, error ) {
				var err = textStatus + ', ' + error;
				console.log( "Request Failed: " + err);
			});
			
			$(window).resize(function() {
			$('#modalWidowcontainer').addClass('simpleHubBin');
			$('#modalWidowcontainer').css({'width':binWidth, 'height':binHeight});
			$('.modalWindowText').hide();
			var oTop = ($(window).height() - modalWinCon.height())/2 ,
				oLeft = ($(window).width() - modalWinCon.width())/2;			
				modalWinCon.css({'left':oLeft,'top':oTop});
				
			if ((navigator.platform.indexOf("iPhone") != -1) ||(navigator.platform.indexOf("iPod") != -1)){
				modalWinCon.css('top',oTop+30);
			}
			}).resize();	
		}
			$('#lightbox .closeButton').live('click', function() { 
		if($('#lightbox iframe').length>0){
		$('#lightbox iframe').attr('src','');
		$('#lightbox iframe').remove();
		}		
			$('#lightbox').remove();
		});

		
	$('div#lightbox').live('touchstart click', function(e) {
			if (e.target.id === "lightbox"){
				if($('#lightbox iframe').length>0){
					$('#lightbox iframe').attr('src','');
					$('#lightbox iframe').remove();
				}
				$('#lightbox').remove();
			}
		});	
			
	};
			

			this.init = function () {
                return this; /*returning this from a method is a common way to allow "chaining" of methods together*/
            };

			return this.init(); /*this refer to MODULE.helper.init()*/
        }

        return new _helper(); /*creating a new object of helper rather then a funtion*/
    }());

/**
 * Check to evaluate whether 'MODULE' exists in the global namespace - if not, assign window.MODULE an object literal
 */
}(window.MODULE = window.MODULE || {}, jQuery));;/*!
* Bootstrap.js by @fat & @mdo
* Copyright 2012 Twitter, Inc.
* http://www.apache.org/licenses/LICENSE-2.0.txt
*/
!function(e){"use strict";e(function(){e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.jQuery),!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;r||(r=n.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),i=e(r),t&&t.preventDefault(),i.length||(i=n.hasClass("alert")?n:n.parent()),i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in"),e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()};var r=e.fn.alert;e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.alert.Constructor=n,e.fn.alert.noConflict=function(){return e.fn.alert=r,this},e(document).on("click.alert.data-api",t,n.prototype.close)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text",r.resetText||n.data("resetText",n[i]()),n[i](r[e]||this.options[e]),setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")};var n=e.fn.button;e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s)),n=="toggle"?i.toggle():n&&i.setState(n)})},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e.fn.button.noConflict=function(){return e.fn.button=n,this},e(document).on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(t){var n=this.getActiveIndex(),r=this;if(t>this.$items.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){r.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",e(this.$items[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f;this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u](),f=e.Event("slide",{relatedTarget:i[0],direction:o});if(i.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var t=e(a.$indicators.children()[a.getActiveIndex()]);t&&t.addClass("active")}));if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}};var n=e.fn.carousel;e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.pause().cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e.fn.carousel.noConflict=function(){return e.fn.carousel=n,this},e(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=e.extend({},i.data(),n.data()),o;i.carousel(s),(o=n.attr("data-slide-to"))&&i.data("carousel").pause().to(o).cycle(),t.preventDefault()})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning||this.$element.hasClass("in"))return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning||!this.$element.hasClass("in"))return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var n=e.fn.collapse;e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=e.extend({},e.fn.collapse.defaults,r.data(),typeof n=="object"&&n);i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e.fn.collapse.noConflict=function(){return e.fn.collapse=n,this},e(document).on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})}(window.jQuery),!function(e){"use strict";function r(){e(".dropdown-backdrop").remove(),e(t).each(function(){i(e(this)).removeClass("open")})}function i(t){var n=t.attr("data-target"),r;n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=n&&e(n);if(!r||!r.length)r=t.parent();return r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||("ontouchstart"in document.documentElement&&e('<div class="dropdown-backdrop"/>').insertBefore(e(this)).on("click",r),s.toggleClass("open")),n.focus(),!1},keydown:function(n){var r,s,o,u,a,f;if(!/(38|40|27)/.test(n.keyCode))return;r=e(this),n.preventDefault(),n.stopPropagation();if(r.is(".disabled, :disabled"))return;u=i(r),a=u.hasClass("open");if(!a||a&&n.keyCode==27)return n.which==27&&u.find(t).focus(),r.click();s=e("[role=menu] li:not(.divider):visible a",u);if(!s.length)return;f=s.index(s.filter(":focus")),n.keyCode==38&&f>0&&f--,n.keyCode==40&&f<s.length-1&&f++,~f||(f=0),s.eq(f).focus()}};var s=e.fn.dropdown;e.fn.dropdown=function(t){return this.each(function(){var r=e(this),i=r.data("dropdown");i||r.data("dropdown",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.dropdown.Constructor=n,e.fn.dropdown.noConflict=function(){return e.fn.dropdown=s,this},e(document).on("click.dropdown.data-api",r).on("click.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("click.dropdown.data-api",t,n.prototype.toggle).on("keydown.dropdown.data-api",t+", [role=menu]",n.prototype.keydown)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=n,this.$element=e(t).delegate('[data-dismiss="modal"]',"click.dismiss.modal",e.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};t.prototype={constructor:t,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var t=this,n=e.Event("show");this.$element.trigger(n);if(this.isShown||n.isDefaultPrevented())return;this.isShown=!0,this.escape(),this.backdrop(function(){var n=e.support.transition&&t.$element.hasClass("fade");t.$element.parent().length||t.$element.appendTo(document.body),t.$element.show(),n&&t.$element[0].offsetWidth,t.$element.addClass("in").attr("aria-hidden",!1),t.enforceFocus(),n?t.$element.one(e.support.transition.end,function(){t.$element.focus().trigger("shown")}):t.$element.focus().trigger("shown")})},hide:function(t){t&&t.preventDefault();var n=this;t=e.Event("hide"),this.$element.trigger(t);if(!this.isShown||t.isDefaultPrevented())return;this.isShown=!1,this.escape(),e(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),e.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},enforceFocus:function(){var t=this;e(document).on("focusin.modal",function(e){t.$element[0]!==e.target&&!t.$element.has(e.target).length&&t.$element.focus()})},escape:function(){var e=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(t){t.which==27&&e.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var t=this,n=setTimeout(function(){t.$element.off(e.support.transition.end),t.hideModal()},500);this.$element.one(e.support.transition.end,function(){clearTimeout(n),t.hideModal()})},hideModal:function(){var e=this;this.$element.hide(),this.backdrop(function(){e.removeBackdrop(),e.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},backdrop:function(t){var n=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var i=e.support.transition&&r;this.$backdrop=e('<div class="modal-backdrop '+r+'" />').appendTo(document.body),this.$backdrop.click(this.options.backdrop=="static"?e.proxy(this.$element[0].focus,this.$element[0]):e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in");if(!t)return;i?this.$backdrop.one(e.support.transition.end,t):t()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,t):t()):t&&t()}};var n=e.fn.modal;e.fn.modal=function(n){return this.each(function(){var r=e(this),i=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),typeof n=="object"&&n);i||r.data("modal",i=new t(this,s)),typeof n=="string"?i[n]():s.show&&i.show()})},e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},e.fn.modal.Constructor=t,e.fn.modal.noConflict=function(){return e.fn.modal=n,this},e(document).on("click.modal.data-api",'[data-toggle="modal"]',function(t){var n=e(this),r=n.attr("href"),i=e(n.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),s=i.data("modal")?"toggle":e.extend({remote:!/#/.test(r)&&r},i.data(),n.data());t.preventDefault(),i.modal(s).one("hide",function(){n.focus()})})}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,r){var i,s,o,u,a;this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.enabled=!0,o=this.options.trigger.split(" ");for(a=o.length;a--;)u=o[a],u=="click"?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):u!="manual"&&(i=u=="hover"?"mouseenter":"focus",s=u=="hover"?"mouseleave":"blur",this.$element.on(i+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(s+"."+this.type,this.options.selector,e.proxy(this.leave,this)));this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){return t=e.extend({},e.fn[this.type].defaults,this.$element.data(),t),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e.fn[this.type].defaults,r={},i;this._options&&e.each(this._options,function(e,t){n[e]!=t&&(r[e]=t)},this),i=e(t.currentTarget)[this.type](r).data(this.type);if(!i.options.delay||!i.options.delay.show)return i.show();clearTimeout(this.timeout),i.hoverState="in",this.timeout=setTimeout(function(){i.hoverState=="in"&&i.show()},i.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out",this.timeout=setTimeout(function(){n.hoverState=="out"&&n.hide()},n.options.delay.hide)},show:function(){var t,n,r,i,s,o,u=e.Event("show");if(this.hasContent()&&this.enabled){this.$element.trigger(u);if(u.isDefaultPrevented())return;t=this.tip(),this.setContent(),this.options.animation&&t.addClass("fade"),s=typeof this.options.placement=="function"?this.options.placement.call(this,t[0],this.$element[0]):this.options.placement,t.detach().css({top:0,left:0,display:"block"}),this.options.container?t.appendTo(this.options.container):t.insertAfter(this.$element),n=this.getPosition(),r=t[0].offsetWidth,i=t[0].offsetHeight;switch(s){case"bottom":o={top:n.top+n.height,left:n.left+n.width/2-r/2};break;case"top":o={top:n.top-i,left:n.left+n.width/2-r/2};break;case"left":o={top:n.top+n.height/2-i/2,left:n.left-r};break;case"right":o={top:n.top+n.height/2-i/2,left:n.left+n.width}}this.applyPlacement(o,s),this.$element.trigger("shown")}},applyPlacement:function(e,t){var n=this.tip(),r=n[0].offsetWidth,i=n[0].offsetHeight,s,o,u,a;n.offset(e).addClass(t).addClass("in"),s=n[0].offsetWidth,o=n[0].offsetHeight,t=="top"&&o!=i&&(e.top=e.top+i-o,a=!0),t=="bottom"||t=="top"?(u=0,e.left<0&&(u=e.left*-2,e.left=0,n.offset(e),s=n[0].offsetWidth,o=n[0].offsetHeight),this.replaceArrow(u-r+s,s,"left")):this.replaceArrow(o-i,o,"top"),a&&n.offset(e)},replaceArrow:function(e,t,n){this.arrow().css(n,e?50*(1-e/t)+"%":"")},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},hide:function(){function i(){var t=setTimeout(function(){n.off(e.support.transition.end).detach()},500);n.one(e.support.transition.end,function(){clearTimeout(t),n.detach()})}var t=this,n=this.tip(),r=e.Event("hide");this.$element.trigger(r);if(r.isDefaultPrevented())return;return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?i():n.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var e=this.$element;(e.attr("title")||typeof e.attr("data-original-title")!="string")&&e.attr("data-original-title",e.attr("title")||"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var t=this.$element[0];return e.extend({},typeof t.getBoundingClientRect=="function"?t.getBoundingClientRect():{width:t.offsetWidth,height:t.offsetHeight},this.$element.offset())},getTitle:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title),e},tip:function(){return this.$tip=this.$tip||e(this.options.template)},arrow:function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(t){var n=t?e(t.currentTarget)[this.type](this._options).data(this.type):this;n.tip().hasClass("in")?n.hide():n.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var n=e.fn.tooltip;e.fn.tooltip=function(n){return this.each(function(){var r=e(this),i=r.data("tooltip"),s=typeof n=="object"&&n;i||r.data("tooltip",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.tooltip.Constructor=t,e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},e.fn.tooltip.noConflict=function(){return e.fn.tooltip=n,this}}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content")[this.options.html?"html":"text"](n),e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,t=this.$element,n=this.options;return e=(typeof n.content=="function"?n.content.call(t[0]):n.content)||t.attr("data-content"),e},tip:function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var n=e.fn.popover;e.fn.popover=function(n){return this.each(function(){var r=e(this),i=r.data("popover"),s=typeof n=="object"&&n;i||r.data("popover",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.popover.Constructor=t,e.fn.popover.defaults=e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),e.fn.popover.noConflict=function(){return e.fn.popover=n,this}}(window.jQuery),!function(e){"use strict";function t(t,n){var r=e.proxy(this.process,this),i=e(t).is("body")?e(window):e(t),s;this.options=e.extend({},e.fn.scrollspy.defaults,n),this.$scrollElement=i.on("scroll.scroll-spy.data-api",r),this.selector=(this.options.target||(s=e(t).attr("href"))&&s.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=e("body"),this.refresh(),this.process()}t.prototype={constructor:t,refresh:function(){var t=this,n;this.offsets=e([]),this.targets=e([]),n=this.$body.find(this.selector).map(function(){var n=e(this),r=n.data("target")||n.attr("href"),i=/^#\w/.test(r)&&e(r);return i&&i.length&&[[i.position().top+(!e.isWindow(t.$scrollElement.get(0))&&t.$scrollElement.scrollTop()),r]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},process:function(){var e=this.$scrollElement.scrollTop()+this.options.offset,t=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=t-this.$scrollElement.height(),r=this.offsets,i=this.targets,s=this.activeTarget,o;if(e>=n)return s!=(o=i.last()[0])&&this.activate(o);for(o=r.length;o--;)s!=i[o]&&e>=r[o]&&(!r[o+1]||e<=r[o+1])&&this.activate(i[o])},activate:function(t){var n,r;this.activeTarget=t,e(this.selector).parent(".active").removeClass("active"),r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',n=e(r).parent("li").addClass("active"),n.parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active")),n.trigger("activate")}};var n=e.fn.scrollspy;e.fn.scrollspy=function(n){return this.each(function(){var r=e(this),i=r.data("scrollspy"),s=typeof n=="object"&&n;i||r.data("scrollspy",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.scrollspy.Constructor=t,e.fn.scrollspy.defaults={offset:10},e.fn.scrollspy.noConflict=function(){return e.fn.scrollspy=n,this},e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);t.scrollspy(t.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.attr("data-target"),i,s,o;r||(r=t.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,""));if(t.parent("li").hasClass("active"))return;i=n.find(".active:last a")[0],o=e.Event("show",{relatedTarget:i}),t.trigger(o);if(o.isDefaultPrevented())return;s=e(r),this.activate(t.parent("li"),n),this.activate(s,s.parent(),function(){t.trigger({type:"shown",relatedTarget:i})})},activate:function(t,n,r){function o(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),s?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),r&&r()}var i=n.find("> .active"),s=r&&e.support.transition&&i.hasClass("fade");s?i.one(e.support.transition.end,o):o(),i.removeClass("in")}};var n=e.fn.tab;e.fn.tab=function(n){return this.each(function(){var r=e(this),i=r.data("tab");i||r.data("tab",i=new t(this)),typeof n=="string"&&i[n]()})},e.fn.tab.Constructor=t,e.fn.tab.noConflict=function(){return e.fn.tab=n,this},e(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(t){t.preventDefault(),e(this).tab("show")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=e(this.options.menu),this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:t.top+t.height,left:t.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(n=e.isFunction(this.source)?this.source(this.query,e.proxy(this.process,this)):this.source,n?this.process(n):this)},process:function(t){var n=this;return t=e.grep(t,function(e){return n.matcher(e)}),t=this.sorter(t),t.length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(e){return~e.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(e){var t=[],n=[],r=[],i;while(i=e.shift())i.toLowerCase().indexOf(this.query.toLowerCase())?~i.indexOf(this.query)?n.push(i):r.push(i):t.push(i);return t.concat(n,r)},highlighter:function(e){var t=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return e.replace(new RegExp("("+t+")","ig"),function(e,t){return"<strong>"+t+"</strong>"})},render:function(t){var n=this;return t=e(t).map(function(t,r){return t=e(n.options.item).attr("data-value",r),t.find("a").html(n.highlighter(r)),t[0]}),t.first().addClass("active"),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0])),r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last()),n.addClass("active")},listen:function(){this.$element.on("focus",e.proxy(this.focus,this)).on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this)).on("mouseleave","li",e.proxy(this.mouseleave,this))},eventSupported:function(e){var t=e in this.$element;return t||(this.$element.setAttribute(e,"return;"),t=typeof this.$element[e]=="function"),t},move:function(e){if(!this.shown)return;switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()},keydown:function(t){this.suppressKeyPressRepeat=~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){if(this.suppressKeyPressRepeat)return;this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},focus:function(e){this.focused=!0},blur:function(e){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(e){e.stopPropagation(),e.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(t){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")},mouseleave:function(e){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var n=e.fn.typeahead;e.fn.typeahead=function(n){return this.each(function(){var r=e(this),i=r.data("typeahead"),s=typeof n=="object"&&n;i||r.data("typeahead",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},e.fn.typeahead.Constructor=t,e.fn.typeahead.noConflict=function(){return e.fn.typeahead=n,this},e(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;n.typeahead(n.data())})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=e.extend({},e.fn.affix.defaults,n),this.$window=e(window).on("scroll.affix.data-api",e.proxy(this.checkPosition,this)).on("click.affix.data-api",e.proxy(function(){setTimeout(e.proxy(this.checkPosition,this),1)},this)),this.$element=e(t),this.checkPosition()};t.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var t=e(document).height(),n=this.$window.scrollTop(),r=this.$element.offset(),i=this.options.offset,s=i.bottom,o=i.top,u="affix affix-top affix-bottom",a;typeof i!="object"&&(s=o=i),typeof o=="function"&&(o=i.top()),typeof s=="function"&&(s=i.bottom()),a=this.unpin!=null&&n+this.unpin<=r.top?!1:s!=null&&r.top+this.$element.height()>=t-s?"bottom":o!=null&&n<=o?"top":!1;if(this.affixed===a)return;this.affixed=a,this.unpin=a=="bottom"?r.top-n:null,this.$element.removeClass(u).addClass("affix"+(a?"-"+a:""))};var n=e.fn.affix;e.fn.affix=function(n){return this.each(function(){var r=e(this),i=r.data("affix"),s=typeof n=="object"&&n;i||r.data("affix",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.affix.Constructor=t,e.fn.affix.defaults={offset:0},e.fn.affix.noConflict=function(){return e.fn.affix=n,this},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var t=e(this),n=t.data();n.offset=n.offset||{},n.offsetBottom&&(n.offset.bottom=n.offsetBottom),n.offsetTop&&(n.offset.top=n.offsetTop),t.affix(n)})})}(window.jQuery);;/* JavaScript Boilerplate main scripting file *
 * @version 1.0
*/
/* MODULE (our namespace name) and undefined are passed here
 * to ensure 1. namespace can be modified locally and isn't
 * overwritten outside of our function context
 * 2. the value of undefined is guaranteed as being truly
 * undefined. This is to avoid issues with undefined being
 * mutable pre-ES5.
*/

/*jshint forin:true, noarg:true, eqeqeq:true, bitwise:true, undef:true, curly:true, browser:true, devel:true, indent:4, maxerr:50, jquery:true */

/*jslint devel: true, nomen: true, unparam: true, sloppy: true, indent: 4, newcap:true */

/*global FB:false, jQuery, window, document*/
(function (MODULE, $, undefined) {

/* desktop site*/

    MODULE.desktopSite = (function () {
        function _subModule() {

            var _this = this;
            /* Store this to avoid scope conflicts */
	  /* Code to add class on body if browser is IE10  */
	this.ie10Browser=function() {	
			//var isIE10 = false;
			/*@cc_on
				if (/^10/.test(@_jscript_version)) {
					MODULE.config.isIE10 = true;
				}
			@*/
			
			if (document.body.style.msTouchAction != undefined) {
					document.body.className = 'ie10';
			}
		};
	//This for expand collaspe on PDP
	this.expandCollaspePDP= function () {
	if( $('.infoAccordion').length == 0 ){ 
		var toggleSelector = $('h3.expand_heading');
		
		toggleSelector.each(function(i){
		var $this = $(this);
			var html = $this.html();
		if($this.find("span.viewMoreReviews").length<1){
	$this.html("<span class='text'>"+(html.replace(/<a /i,'</span><a ')));
	}
		/*$('.toggle_container').hide();*/
		/*toggleSelector.toggle(function(){ 
			$(this).addClass('active'); 
			}, function () {
			$(this).removeClass('active');
		});*/
		$this.find('span').live("click", function(){
		_this.expandCollapse($(this).parent());
	


			return false;
		});
		$this.find('a.readMore').live("click", function(){
		_this.expandCollapse($(this).parent());
	
			return false;
		});
		});
		
			/* opening of reviews on click of star below the image in mobile view */ 
			
	$(".cloneWrapper").live("click", function(){
		 if($(".expandCollaspetab.bvReviewsContainer .toggle_container .bv-content-placeholder ").length){
			return false; 
		}else{
		if($("section.readMoreReviewsContainer").length){
			if(!$(".viewMoreReviewsContainer .expandCollaspetab .expand_heading").hasClass("active")){
				_this.expandCollapse($(".viewMoreReviewsContainer .expandCollaspetab .expand_heading"));
			}
			$("body, html").animate({ 
				scrollTop: $(".readMoreReviewsContainer .expandCollaspetab").offset().top 
			}, "fast");
			return false;
			}
			}
		});
		
		/*	if($('.pdpInnerPageContent .readMoreReviewsContainer').length > 0){
			$('.leftPanelContainer.bottom').css({'margin-top':'-'+($('.pdpInnerPageContent .readMoreReviewsContainer').height()-10)+'px'});
			}
		*/
		}
	};
	
	this.expandCollapse = function(toggleSelector1){
	toggleSelector1.toggleClass('active');
			var container = toggleSelector1.siblings(".toggle_container");
			var toggleLink = toggleSelector1.find(".readMore");
			var toggleHeading = toggleSelector1.find(".viewMoreReviews");
			container.slideToggle('fast', function(e){
				var less = "Close";
				var more = "Read less reviews";
				var attrClose=$('h3.expand_heading a.readMore').data('close');
				var	attrReadmore=$('h3.expand_heading a.readMore').data('expand');		
				if (container.is(":visible")){
				if(!($('.recipeDetailPage').length || $('.ingredientsGlossary').length)) {
					// Added for loading review comments from 1st record.				
					$.ajax({
						
						url: $('#allReviewPagination').attr('action'),
						type: "POST",
						data: { firstPage:$('#firstPage').val() ,currentPage:$('#currentPage').val() ,itemId: $('#itemId').val() },
						success: function (response) {
							$('#readMorePanel').html(response);
						},
						error: function (jqXHR, textStatus, errorThrown) {
							return false;
						},
						complete: function (jqXHR, textStatus) {
						_this.aggrigateRating();
						}
					});
				}
				/* commented for recipes detail expand collaspe page issue.
				else {
					if(!$('.ingredientsGlossary').length ) {
						var expandCollapseRecipeHead=$(this).siblings('h3');
						if(expandCollapseRecipeHead.hasClass('active')) { 
							expandCollapseRecipeHead.css('border-bottom','1px solid #DBDBDC');
						}
					}
				}*/
					$('.postYourReviewContainer').hide();
					//$('.reviewButton').show();
					$('.readMoreReviewsContainer .reviewOpenStage').hide();
					if($(window).width() <= MODULE.config.mobileBreakpoint) {
						toggleLink.html($(".readMoreReviewsContainer #averageRating .starRatings").html());
						toggleHeading.html($(".readMoreReviewsContainer #averageRating .starRatings").html());
					}else{
						toggleLink.text(attrClose);
						toggleHeading.text("Read less reviews");
					}
						// for product detail template only
							if(toggleHeading.hasClass('pdp')){
							//	$('.leftPanelContainer.bottom').css({'margin-top':'10px'});
								$('.leftPanelContainer.bottom').css({'top':'-20px','position':'relative'});
								$('.readMoreReviewsContainer ').css({'width':'97%','float':'right'});
								$('.reviewButton').show();
								$('#reviewThisProduct').show();
								if($('.thankYouMessage').is(':visible')){
									$('.reviewButton').hide();
								}
								
							};
							
							
				} else {
				
					if(!($('.recipeDetailPage').length || $('.ingredientsGlossary').length)) {
						// Added for loading review comments from 1st record.				
						$.ajax({
							
							url: $('#allReviewPagination').attr('action'),
							type: "POST",
							data: { firstPage:$('#firstPage').val() ,currentPage:$('#currentPage').val() ,itemId: $('#itemId').val()},
							success: function (response) {
								$('#readMorePanel').html(response);
							},
							error: function (jqXHR, textStatus, errorThrown) {
								return false;
							},
							complete: function (jqXHR, textStatus) {
							_this.aggrigateRating();
							}
						});
					}
					
					else {
						if($('.ingredientsGlossary').length) {
							expandCollapseRecipeHead=$(this).siblings('h3');
							if(!expandCollapseRecipeHead.hasClass('active')) {
								expandCollapseRecipeHead.css('border-bottom','none');
							}
						}
					}
				
					$('.readMoreReviewsContainer .reviewOpenStage').show();
					if($(window).width() <= MODULE.config.mobileBreakpoint) {
						toggleLink.html($(".readMoreReviewsContainer #averageRating .starRatings").html());
						toggleHeading.html($(".readMoreReviewsContainer #averageRating .starRatings").html());
					}else{
						toggleLink.text(attrReadmore);
						toggleHeading.text("View more reviews");
					}
						// for product detail template only
							if(toggleHeading.hasClass('pdp')){
								//$('.leftPanelContainer.bottom').css('margin-top','-150px')								
							$('.leftPanelContainer.bottom').css({'top':'380px','position':'absolute'});
								$('.readMoreReviewsContainer ').css({'width':'540px','float':'right'});
							//	$('.leftPanelContainer.bottom').css({'margin-top':'-'+($('.pdpInnerPageContent .readMoreReviewsContainer').height()-10)+'px'});
						


							}
				}
				if($(".expandCollaspetab.bvReviewsContainer .expand_heading").hasClass("active")){
					$(".expandCollaspetab.bvReviewsContainer").css('border-bottom','none');
				}else{
					$(".expandCollaspetab.bvReviewsContainer").css('border-bottom','1px solid #DBDBDC');
				}
			});
	};
	
	//continueShopping
	this.continueShopping=function(){
		$('#continueShopping').click(function(){
			_this.hideComments();
			$('.leftPanelContainer.bottom').css({'top':'380px','position':'absolute'});			
			$('.readMoreReviewsContainer .reviewOpenStage').show();
			$(this).parent().parent().hide();
			//$('.leftPanelContainer.bottom').css({'margin-top':'-'+($('.pdpInnerPageContent .readMoreReviewsContainer').height()-10)+'px'});
			
			$.ajax({
				url: $('#continueShoppingURL').val(),
				type: "POST",
				data: { itemId: $('#itemTcmUri').val() },
				success: function (response) {
					$('#averageRating').html(response);
					//$('.starRatings.aggregateRating input').val(data);					
					_this.aggrigateRating(); 
				},
				error: function (jqXHR, textStatus, errorThrown) {
					return false;
				},
				complete: function (jqXHR, textStatus) {
				
					return true;
				}
			});
		});
	};
	
	this.pagination=function(){
		$('ul.pagination li').live("click", function() {
			if(!$(this).hasClass('active')) {
				if($(this).attr('rel')=='Next') {
					$('#currentPage').val($(this).attr('id'));
					$('#firstPage').val($(this).attr('id'));
					$('#lastFirstPageIndex').val(parseInt($(this).attr('id')));
				}
				else if($(this).attr('rel')=='Prev') {
					$('#currentPage').val(parseInt($(this).attr('id')));
					$('#firstPage').val(parseInt($(this).attr('id'))-($('#pageNumbers').val()-1));
					$('#lastFirstPageIndex').val(parseInt($(this).attr('id'))-($('#pageNumbers').val()-1));
					callPagination=true;
				}
				else {			
					$('#currentPage').val(parseInt($(this).attr('id')));
					$('#firstPage').val(parseInt($('#lastFirstPageIndex').val()));
					if(parseInt($(this).attr('id'))<=parseInt($('#pageNumbers').val()))
					{										
						$('#lastFirstPageIndex').val('1');
						$('#firstPage').val('1');
					}
				}
				$.ajax({
						
						url: $('#allReviewPagination').attr('action'),
						type: "POST",
						data: { firstPage:$('#firstPage').val() ,currentPage:$('#currentPage').val() ,itemId: $('#itemId').val()},
						success: function (response) {
							$('#readMorePanel').html(response);
						},
						error: function (jqXHR, textStatus, errorThrown) {
							return false;
						},
						complete: function (jqXHR, textStatus) {
						_this.aggrigateRating();
						}
				});
			}
		});
	};		
	
	//Ingredients Landing pg
	/*this.ingredientsCarousel= function () {
		if($('div.ingredientsCarouselContainer').length) {
			if($('ul#ingredientscarousel').length){
			  $('ul#ingredientscarousel').jcarousel({
					auto: 0,
					wrap: 'last'       
				});
			var carouselItems = $("div.ingredientsCarouselContainer ul#ingredientscarousel li"); 
				if(carouselItems.length <= 1){
					$("div.ingredientsCarouselContainer .jcarousel-prev, div.ingredientsCarouselContainer .jcarousel-next").hide();
				}else{
					$("div.ingredientsCarouselContainer .jcarousel-prev, div.ingredientsCarouselContainer .jcarousel-next").show();
				};
			}
		}
	};*/
	
	this.ingredientsCarousel= function () {
		if($(".nourishYourSkin").length) {
			$('#mycarousel li:first-child').addClass('firstSlide');
			$('#mycarousel li:last-child').addClass('lastSlide');
			if($(".nourishYourSkin #mycarousel").cycle){
				$('.nourishYourSkin #mycarousel').cycle({
				fx: 'scrollHorz', 
				nowrap: 1,	
				slideExpr: 'li',
				next: '#next',
				prev: '#prev',
				timeout:0,
				before:function(){
					if($(this).hasClass('firstSlide')) {
						$('#prev').css({ 'opacity':'.5' , '-ms-filter':'alpha(opacity=40)' , 'cursor':'default' });
					}
					else {
						$('#prev').css({ 'opacity':'1' , '-ms-filter':'alpha(opacity=40)' , 'cursor':'pointer' });
					}
				},
				after:function(){
					if($(this).hasClass('lastSlide')) {
						$('#next').css({ 'opacity':'.5' , '-ms-filter':'alpha(opacity=40)' , 'cursor':'default' });
					}
					else {
						$('#next').css({ 'opacity':'1' , '-ms-filter':'alpha(opacity=40)' , 'cursor':'pointer' });
					}
				}
				});
			}
			
			/*var queryStr=window.location.search, count=0;
			if($.trim(queryStr).length) {
				$.each( $('ul#mycarousel li'), function(k,v){
					$.each($(v).find('figure a'), function(key, val) {
						if($(val).attr('href')=='http://localhost/nourish-your-skin.html'+queryStr) {
							$(val).css('border','1px solid red');
							$('.nourishYourSkin #mycarousel').cycle(count);
						}
					});
					count++;
				});
			}*/
			var ingredientArr = (window.location.pathname).split('/'), count=0, ingredientID=ingredientArr[5];
			if($.trim(ingredientID).length) {
				$.each( $('ul#mycarousel li'), function(k,v){
					$.each($(v).find('figure a'), function(key, val) { 
						if($(val).attr('href').search(ingredientID)!=-1) {
							//$(val).css('border','1px solid red');
							$('.nourishYourSkin #mycarousel').cycle(count);
						}
					});
					count++;
				});
			}

		}
	};
	
	this.customDropDown = function () { 
		$(window).resize(function() {
			if($(window).width() >= MODULE.config.mobileBreakpoint) {
$('#workoutDropdown, #searchBar, #titleSelector, #countrySelectorContactUs, #distance ,#dobDate , #dobMonth , #dobYear,#contacttype,#contactregion,#country, #products, #perfix,#InquiryType, #ManufacturingCodeDetails, #UpcDetails, #regionDd, #regionSelector').dropkick();
			}
		});
	};
				
	
	this.homepageCarousel = function (){	
		if($(".homeCarousel").length && ("#mycarousel li").length>1){			
			$.event.special.swipe.scrollSupressionThreshold = 10; // More than this horizontal displacement, and we will suppress scrolling.
			$.event.special.swipe.horizontalDistanceThreshold = 30; // Swipe horizontal displacement must be more than this.
			$.event.special.swipe.durationThreshold = 500;  // More time than this, and it isn't a swipe.
			$.event.special.swipe.verticalDistanceThreshold = 75; // Swipe vertical displacement must be less than this.
		
			var $mobTimeout=$('.jcarousel-container').data('carousel-mobiletimeout'),
				$dskTimeout=$('.jcarousel-container').data('carousel-desktoptimeout'),
				$speed=$('.jcarousel-container').data('carouselspeed');			
				if($(window).width() <= MODULE.config.mobileBreakpoint) {	
					$('#mycarousel .desktopContent').remove();
					$('#mycarousel').cycle('destroy').cycle({			
						fx: "scrollHorz",
						timeout:$mobTimeout
						
					});
				}else{
					$('#mycarousel').cycle('destroy').cycle({			
						fx: "fade",
						speed: $speed,
						timeout: $dskTimeout,
						swipe:false,
						slides:'li',
						pager:  '#nav',
						next: '#next',
						prev: '#prev'
					});
					
				}
			
		}
		if($("#mycarousel li").length<2){
		$("#prev").hide();
		$("#next").hide();
		}	
		
		
		
		
		/*	$('.homeCarousel').bind('swiperight',function(event, info){
			//$(".homeCarousel").on("swiperight",function(){
				event.preventDefault();
				var $totalCrsl= $(this).find('li').length,
					$getCurIndex=$(this).find('li:visible').index();
					
				if($getCurIndex+1==$totalCrsl){
					$('.homeCarousel #mycarousel').cycle(0);
				}else{
					$('.homeCarousel #mycarousel').cycle($getCurIndex+1);
				}
				
			}); 
			$('.homeCarousel').bind('swipeleft',function(event, info){
			//$(".homeCarousel").on("swipeleft",function(){
				event.preventDefault();
				var $totalCrsl= $(this).find('li').length,
					$getCurIndex=$(this).find('li:visible').index();					
					
				if($getCurIndex==0){
					$('.homeCarousel #mycarousel').cycle($totalCrsl-1);
				}else{
					$('.homeCarousel #mycarousel').cycle($getCurIndex-1);
				}				
			}); 
			*/
				   
	};
	
	this.recipeLandingPg = function () {

		if ($('.recipeDropDown').length) {
		
		if($('.recipeDetailPage').length) {
			//fix 1966561 - ie8	
			//$('.recipeDetailPage .expandCollaspetab:last-child').css('border-bottom','none');
			
			//fix 1952291 - 2nd dropdown should be disabled
			$('select#subCategory').removeAttr('disabled');
			$('div#dk_container_subCategory').removeClass('gd-disable');
		}
		
			if($('.recipesLandingPage').length) {
				//fix 1952291 - 2nd dropdown should be disabled
				$('select#subCategory').html('<option value="">'+$('#pleaseSelect').val()+'</option>');
				}
				$('select#subCategory').dropkick({
				change: function (value, label) {
					if(parseInt($("#subCategory").val())!=0) {
						var myArray = $("#frmRecipe").attr('action').split('/');
						var splitRecipeTcmID = $("#subCategory").val().split('-');
						var splitSeoUrlTxtWithTcmID = splitRecipeTcmID[1].split(',');
                        if (myArray.length > 2) {
							if(splitSeoUrlTxtWithTcmID[1]=='' || splitSeoUrlTxtWithTcmID[1]==null){
								var newaction = "/"+$("#frmRecipe").attr('action')+"/" + splitSeoUrlTxtWithTcmID[0];
							}
							else {
								var newaction ="/"+$("#frmRecipe").attr('action')+"/" + splitSeoUrlTxtWithTcmID[0] + "/" + splitSeoUrlTxtWithTcmID[1];
							}
                        }
                        else
                        {
							if(splitSeoUrlTxtWithTcmID[1]=='' || splitSeoUrlTxtWithTcmID[1]==null){
								var newaction = "/"+$("#frmRecipe").attr('action')+"/" + splitSeoUrlTxtWithTcmID[0];
							}
							else {
								var newaction = "/"+$("#frmRecipe").attr('action')+"/" + splitSeoUrlTxtWithTcmID[0] + "/" + splitSeoUrlTxtWithTcmID[1];
							}
                        }
                        $("#frmRecipe").attr('action', newaction);  
						$("#frmRecipe").submit();
					}
				}
			});
			

			$('#topCategory').dropkick({
				change: function (value, label) {
					if(parseInt($("#topCategory").val())!=0) {
					var resVal="/recipes"
					if($('#pleaseSelect').data('action').length>0){
						resVal="/"+$('#pleaseSelect').data('action')+"/recipes"
					}
					
						$.ajax({
							url: resVal,
							type: "get",
							dataType:'JSON',
							data: { category: $('#topCategory').val() },
							success: function (subRecipes) {
								_this.generateRecipeDpdn(subRecipes, value);
								return true;
							},
							error: function (jqXHR, textStatus, errorThrown) {
								{
									$('.postYourReviewContainer').show();
									$('.thankYouMessage').hide();
								};
								return false;
							},
							complete: function (jqXHR, textStatus) {
								$('.postYourReviewContainer').hide();
								$('.thankYouMessage').show();
								return true;
							}
						});
					}
					else {
						$('select#subCategory').attr('disabled','disabled');
						$('div#dk_container_subCategory').addClass('gd-disable');
					}
				}
			});
		}
	};

	this.generateRecipeDpdn = function (subRecipes, value) {
		$('div#dk_container_subCategory').find('.dk_toggle').val();
		var subCatgSelectHtml = '', subCatgPseudoDivHtml = '', cnt = 0, subCatVal = '', explodeArr;
		$.each(subRecipes, function (topCatg, val) {
			subCatgSelectHtml += '<option value="' + val.RecipeId + '">' + val.RecipeCategory + '</option>';
			subCatgPseudoDivHtml += '<li class=""><a data-dk-dropdown-value="' + val.RecipeId + '">' + val.RecipeCategory + '</a></li>';
			if (!cnt) {
				subCatVal = val.RecipeCategory;
				cnt++;
			}
		});

		//if($('.recipesLandingPage').length) {
			//fix 1952291 - 2nd dropdown should be disabled
			$('select#subCategory').removeAttr('disabled');
			$('div#dk_container_subCategory').removeClass('gd-disable');
	//	}
		
		
	//	if($('.recipeDetailPage').length) {
			//fix 1952291 - 2nd dropdown should be disabled
		//	$('select#subCategory').dropkick();
	//	}
		
		$('select#subCategory').html(subCatgSelectHtml);
		$('div#dk_container_subCategory').find('span.dk_label').text(subCatVal);

		$('div#dk_container_subCategory').find('ul.dk_options_inner').html(subCatgPseudoDivHtml);
		
		//fix 1952291 - 2nd dropdown should be disabled
		//$('div#dk_container_subCategory').find('.dk_toggle').removeClass("hidden");
		//$('ul.selectHead li:last').removeClass("hidden");
		
		$('select#subCategory').dropkick({
				change: function (value, label) {
					if(parseInt($("#subCategory").val())!=0) {
						var myArray = $("#frmRecipe").attr('action').split('/');
						//tcm:1384-230415
						var splitRecipeTcmID = $("#subCategory").val().split('-');
						var splitSeoUrlTxtWithTcmID = splitRecipeTcmID[1].split(',');
                        if (myArray.length > 2) {
							if(splitSeoUrlTxtWithTcmID[1]=='' || splitSeoUrlTxtWithTcmID[1]==null){
								var newaction = "/"+$("#frmRecipe").attr('action')+"/" + splitSeoUrlTxtWithTcmID[0];
							}
							else {
								var newaction = "/"+$("#frmRecipe").attr('action')+"/" + splitSeoUrlTxtWithTcmID[0] + "/" + splitSeoUrlTxtWithTcmID[1];
							}
                        }
                        else
                        {
							if(splitSeoUrlTxtWithTcmID[1]=='' || splitSeoUrlTxtWithTcmID[1]==null){
								var newaction = "/"+$("#frmRecipe").attr('action')+"/" + splitSeoUrlTxtWithTcmID[0];
							}
							else {
								var newaction = "/"+$("#frmRecipe").attr('action')+"/" + splitSeoUrlTxtWithTcmID[0] + "/" + splitSeoUrlTxtWithTcmID[1];
							}
                        }
                        $("#frmRecipe").attr('action', newaction);  
						$("#frmRecipe").submit();
					}
				}
			}
		
		);
	};
	
	/* Commented By Mukesh 
	this.recipeDetailPg=function(){
		if($('.recipeDetailPage').length) {
			$('.expand_heading').css('border-bottom','1px solid #DBDBDC');
			$('h3.expand_heading a.readMore').css('margin-top','2px');
			
			$('h3.expand_heading a.readMore, h3.expand_heading span.text').click(function(){
				if( $(this).hasClass('readMore') ) {
					$.trim( $(this).text() )==="Close" ? $('h3.expand_heading a.readMore').css('margin-top','5px') : $('h3.expand_heading a.readMore').css('margin-top','2px');
				}
				else if( $(this).hasClass('text') ) {
					$.trim( $(this).siblings('a.readMore').text() )==="Close" ? $('h3.expand_heading a.readMore').css('margin-top','5px') : $('h3.expand_heading a.readMore').css('margin-top','2px');
				}
			});
		}
	};*/
	
	//This for  video
	this.viewVideo= function () {
		$('.videoPopup').live("click", function(e) {
		e.preventDefault();	
			var videoUrl = $(this).attr("href"),
			videoId=$(this).data("playerid");
			titleText=$(this).attr("data-titleText");
			MODULE.helper.simpleLightBox('videocall',videoUrl,videoId,titleText);
			
		});
	};
	//This for  video
		this.recommendedCarousel= function () {

        
		var $rmdCar=$(".recommendedCarousel");
		
		if($rmdCar.size()>=1) {
            _this.lastScreenWidth = $(window).width();
           

			var $rmdCalLi=$("#recommendedCarousel li"),
				$naviGation=$rmdCar.find(".carouselNavigation"),
				pageCount=5,
                mosPageCount=2,
				nextCount=1,
                mosNextCount=1,
				totalPage=Math.ceil($rmdCalLi.size()/pageCount),
                mosTotalPage=Math.ceil($rmdCalLi.size()/mosPageCount),
				$aniMationObj=$("#recommendedCarousel");
				
             $(window).resize(function() {
                     if($(window).width() <= MODULE.config.mobileBreakpoint){
                        if(_this.lastScreenWidth <= MODULE.config.mobileBreakpoint){
                            
                        }else{
                            $aniMationObj.css('left','0');
                            mosNextCount=1;
                        }
                        _this.lastScreenWidth = $(window).width();
                    }
                    else{
                        if(_this.lastScreenWidth >= MODULE.config.mobileBreakpoint){
                            
                        }else{
                            $aniMationObj.css('left','0');
                            nextCount=1;
                            updatPageNumber(1,totalPage);
                        }
                        _this.lastScreenWidth = $(window).width();
                
                    }
             });
				
			var updatPageNumber = function(startNum,endNum) {
				$naviGation.find("span.startNumber").text(startNum);
				$naviGation.find("span.endNumber").text(endNum);
			}
			
			if($rmdCalLi.size()>pageCount) {
				$naviGation.show();
				$aniMationObj.css("width", ($rmdCalLi.outerWidth()*$rmdCalLi.size())+3)
				updatPageNumber(1,totalPage);
			}
			
			$naviGation.find(".navigatoin .direction").click(function(){
			
				var pageSizeMove=$rmdCalLi.outerWidth()*pageCount,
					aniSpeed=1500;
					
				if($(this).attr("id")=="reNext") {
                    if($(window).width() <= MODULE.config.mobileBreakpoint){
                        mosLeftSwipe();
                    }else{
                        if(nextCount!=totalPage) {
                        $aniMationObj.clearQueue();
                        $aniMationObj.animate({
                            left:("-"+pageSizeMove*nextCount)
                        }, aniSpeed);
                        nextCount++;
                        updatPageNumber(nextCount,totalPage);
                        
                        } else { nextCount=totalPage; }
                    }
												
				} else {
                    if($(window).width() <= MODULE.config.mobileBreakpoint){
                        mosRightSwipe();
                    }else{
                        if(nextCount>1) {
                        $aniMationObj.clearQueue();
                        $aniMationObj.animate({
                            left:("-"+pageSizeMove*(nextCount-2))
                        },aniSpeed);
                        nextCount--;
                        updatPageNumber(nextCount,totalPage);
                        } else { nextCount=1;}
                    }
				}
			});

      
            function mosLeftSwipe(){
                 var pageSizeMove=$rmdCalLi.outerWidth()*mosPageCount,
                    aniSpeed=1500;
                    if(mosNextCount!=mosTotalPage) {
                    $aniMationObj.clearQueue();
                        $aniMationObj.animate({
                            left:("-"+pageSizeMove*mosNextCount)
                        }, aniSpeed);
                        mosNextCount++;
                    } else { mosNextCount=mosTotalPage; }
            }
            function mosRightSwipe(){
                var pageSizeMove=$rmdCalLi.outerWidth()*mosPageCount,
                    aniSpeed=1500;
                    if(mosNextCount>1) {
                        $aniMationObj.clearQueue();
                        $aniMationObj.animate({
                            left:("-"+pageSizeMove*(mosNextCount-2))
                        },aniSpeed);
                        mosNextCount--;
                        
                    } else { mosNextCount=1;}
            }
            $( "#recommendedCarousel" ).on( "swipeleft", mosLeftSwipe);
            $( "#recommendedCarousel" ).on( "swiperight",mosRightSwipe);
			
		}
		
	};	
	this.NewsletterPageChkBoxStatus = function () {
	
				$('input#receiveInfo').click(function () {				
					if($('input#receiveInfo').is(':checked') && !$('input#receiveInfoOffers').is(':checked') ){						
						$('#optIncorporate').val('true');
					}
                    else if ($('input#receiveInfoOffers').is(':checked')) {
                        $('input#receiveInfoOffers').removeAttr('checked');
                        $('input#receiveInfoOffers').next().removeClass('checkSelected');
                        var corporate = 'true';
                        $('#optIncorporate').val(corporate);
                        $('#optInbrand').val('false');
                    }
					else
					{
						$('#optIncorporate').val('false');
                        $('#optInbrand').val('false');
                    }
                });

                $('input#receiveInfoOffers').click(function () {				
				if(!$('input#receiveInfo').is(':checked') && $('input#receiveInfoOffers').is(':checked') ){					
					$('#optInbrand').val('true');
				}
                else if ($('input#receiveInfo').is(':checked')) {						
                        $('input#receiveInfo').removeAttr('checked');
                        $('input#receiveInfo').next().removeClass('checkSelected');
                        var brand = 'true';
                        $('#optInbrand').val(brand);
                        $('#optIncorporate').val('false');
                    }
				else
					{
						$('#optIncorporate').val('false');
                        $('#optInbrand').val('false');
                    }
                });


                 $('input#receiveSubscription').click(function () {
                    if ($(this).is(':checked')) {
                        var brand = 'true';
                        $('#subscriptionnewsletter').val(brand);
                       
                    }else{
                        var brand = 'false';
                        $('#subscriptionnewsletter').val(brand);                       
                    }
                        
                    
                });
            };


            this.newsLetter = function () {
            	$('#newsletterpage #outerContainer .newsletterFrm').height($(window).height()-20);
            	$('.newsletterFrm  #loaderOverlay').height($('.newsletterFrm .rightContent').height()+10);
            	
                $("#titleSelector").dropkick({
                    change: function () {
                        $('.nameList').find("span.required").css("display","none");
                    }
                });
                //                $('#dobMonth').dropkick()
                //                $('#dobDate').dropkick()
                //                $('#dobYear').dropkick()


                $('#finalDobDate').val($('#dobDate').val() + "/" + $('#dobMonth').val() + "/" + $('#dobYear').val());
				$(window).resize(function() {
                     if($(window).width() >= MODULE.config.mobileBreakpoint){
                $('#dobMonth').dropkick({
                    change: function () {
                        
                        $('#finalDobDate').val($('#dobDate').val() + "/" + $('#dobMonth').val() + "/" + $('#dobYear').val());
                        _this.isDateNewsletter($('#finalDobDate').val(), true);
                    }
                });
                $('#dobDate').dropkick({
                    change: function () {
                        
                        $('#finalDobDate').val($('#dobDate').val() + "/" + $('#dobMonth').val() + "/" + $('#dobYear').val());
                        _this.isDateNewsletter($('#finalDobDate').val(), true);
                    }
                });
                $('#dobYear').dropkick({
                    change: function () {
                        
                        $('#finalDobDate').val($('#dobDate').val() + "/" + $('#dobMonth').val() + "/" + $('#dobYear').val());
                        _this.isDateNewsletter($('#finalDobDate').val(), true);
                    }
                });
				}
				});
		
		
		//Blur/focus functionality for form element
		$("#newsLetterForm input[type='text']").focus(function(){
			if( $(this).val()==$(this).data("val")) {
				$(this).val('');
			}
		});
		$("#newsLetterForm input[type='text']").blur(function(){
			if( $(this).val()=="") {
				$(this).val($(this).data("val"));
			}else{
				$(this).parent().find("span.required").css("display","none");
			}
			if ($(this).hasClass("fname")) {
					if ($(this).val() != "" && $(this).val() != $(this).data("val")) {
						var nameRegex=new RegExp('^[a-zA-Z]+[^<>]*[a-zA-Z]$');						
						if($(this).val().length>=2 && $(this).val().match(nameRegex) != null){
							$(this).parent().find("span.lengthFname").css("display", "none");
						}
					}
				}
			if ($(this).hasClass("lname")) {
					if ($(this).val() != "" && $(this).val() != $(this).data("val")) {
						var nameRegex=new RegExp('^[a-zA-Z]+[^<>]*[a-zA-Z]$');						
						if($(this).val().length>=2 && $(this).val().match(nameRegex) != null){
							$(this).parent().find("span.lengthLname").css("display", "none");
						}
					}
				}
		});
		$('#receiveInfo').change(function() {
        if($(this).is(':checked')){
        	$(this).parent().find("span.required").css("display","none");
        }
    	});	
		//Form submit validation
		$("#newsLetterForm").submit(function( event ) {
			$("#loaderOverlay").show();
			var validateTrue=true;			
			$("span.error").css("display","none");
			$("a.dk_toggle, .cekboxList label").removeClass("error");
                    if (!$('#finalDobDate').val().match(/^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/) && $('#finalDobDate').val().indexOf("-") == -1 ) {
                       if($(".dateSelection").find('.field-validation-error').length==0)
                       $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">' + $(".dateSelection").attr('data-val-valid') + '</span></span>');
                     }
					 else
					 {
						var splitDOB = $("#finalDobDate").val().split('/');
						var dobDate = splitDOB[1]+"/"+splitDOB[0]+"/"+splitDOB[2];
						$('#finalDobDate').val(_this.formatISODate(new Date(Date.parse(dobDate))));													
					 }
			$(this).find("input[type='text'], select").each(function(){
				$(this).removeClass("error");
				if($(this).val()=="" || $(this).val()==$(this).data("val")) {
					validateTrue=false;
					if($(this).is("select")) {
						$(this).parents("li").find("a.dk_toggle").addClass("error");
					} else {$(this).addClass("error");}
					$(this).parents("li").find("span.required").css("display","block");
				}
				if ($(this).hasClass("fname")) {
					if ($(this).val() != "" && $(this).val() != $(this).data("val")) {
						$(this).parent().find("span.lengthFname").css("display", "none");
						var nameRegex=new RegExp('^[a-zA-Z]+[^<>]*[a-zA-Z]$');
						if($(this).val().length<2 || $(this).val().match(nameRegex) === null){
							validateTrue = false;
							$(this).parent().find("span.lengthFname").css("display", "block");
						}
					}
				}
				if ($(this).hasClass("lname")) {
					if ($(this).val() != "" && $(this).val() != $(this).data("val")) {
						$(this).parent().find("span.lengthLname").css("display", "none");
						var nameRegex=new RegExp('^[a-zA-Z]+[^<>]*[a-zA-Z]$');
						if($(this).val().length<2 || $(this).val().match(nameRegex) === null){
							validateTrue = false;
							$(this).parent().find("span.lengthLname").css("display", "block");
						}
					}
				}
				if ($(this).hasClass("email")) {
                            if ($(this).val() != "" && $(this).val() != $(this).data("val")) {
                                $(this).parent().find("span.pattern").css("display", "none");
                                var EmailRegex = new RegExp($('#email').attr('data-val-regex-pattern'));
                                if ($(this).val().match(EmailRegex) === null) {
                                    validateTrue = false;
                                    $(this).addClass("error");
                                    $(this).parent().find("span.pattern").css("display", "block");
                                }
                            }
                        }
                        if ($(this).hasClass("zipcode")) {
                        	if ($(this).val() != "" && $(this).val() != $(this).data("val")) {
                            var ZipRegex = new RegExp($('#postalCode').attr('data-val-regex-pattern')); 
                            $(this).parent().find("span.pattern").css("display", "none");
                            if ($(this).val().match(ZipRegex) === null) {
                                validateTrue = false;
                                $(this).addClass("error");
                                $(this).parent().find("span.pattern").css("display", "block");
                            }
                        }
                        }
                    });			
			if($(this).find("#privacyTerms").length>0){
				if(!$(this).find("#privacyTerms").is(":checked"))	 {
	                validateTrue=false;
	                $(this).find("#privacyTerms").next().next().remove();
					$(this).find("#privacyTerms").next().after('<label class="error errorJump" >'+$(this).find("#privacyTerms").attr("data-val-required")+'</label>');
	            }
				else{
					$(this).find("#privacyTerms").next().next().remove();
				}
            }   
	    if(!$(this).find("input[type='checkbox']").is(":checked")) {
				validateTrue=false;
				$(this).find(".cekboxList label").addClass("error");
				$(this).find(".cekboxList span.required").css("display","block");
			}
                    if ($('#sweetcapcha').length) {
                        var chkSweetCaptcha = _this.swCaptchaValidation();
                        if (chkSweetCaptcha == false) {
                            validateTrue = false;
                        }
                    };
			if(!validateTrue) {
				event.preventDefault();
				$("#loaderOverlay").hide();
                    }
                    else {
						var submitUrl='/newsletterconfirmation';
						
						try
						{
							if(window.parent.location.protocol =='https:')						
								 submitUrl = 'https://'+window.location.hostname+'/newsletterconfirmationsecure';						
						}
						catch (e)
						{}
                        var request = UFORM.postData('newsLetterForm', $("#V2SignUpPostFormURL").val(),
                        function (msg) {
                        	$("#loaderOverlay").hide();
                        		if($("#receiveInfo").attr("checked") == "checked"){
                        			UDM.evq.push(['trackEvent', 'Conversion', 'Acquisition: Mktg Opt ins', 'Corporate Opt-In'])
                        		}else{
                        			UDM.evq.push(['trackEvent', 'Conversion', 'Acquisition: Mktg Opt ins', 'Brand Opt-In'])
                        		}
                            window.location.href = submitUrl;
                        },

                        function (jqXHR, textStatus) {
                        	$("#loaderOverlay").hide();
                          $('#divMsg').html($('#divMsg').data('value'));
                        });
						return false;
                    }
					
		});				
	};
	//This for  Enlarge Image
	this.viewEnlargeImage= function () {	
	$('.enlargeImage, .enlargeImage1, .imagePopup').live("click", function(e) { 
	e.preventDefault();		
		var imageUrl = $(this).attr("href"),
			altText=$("img", this).attr('alt');
			imageId=$(this).attr("id");
			titleText=$(this).attr("data-titleText");
			if ($(this).attr("alt")) {
				altText=$("img", this).attr('alt');
			};
			MODULE.helper.simpleLightBox('imageCall',imageUrl,imageId,titleText,altText);
		});		
		
	};
			
	this.hideComments=function(){
		/* collapse read more reviews - if open */
		$('.readMoreReviewsContainer').css('width','540px');
		$('.viewMoreReviewsContainer .toggle_container').hide();
		$('.viewMoreReviewsContainer .expand_heading').removeClass('active');
		$('.viewMoreReviewsContainer .viewMoreReviews').text('View more reviews');
		$('.viewMoreReviewsContainer .readMore').text('Read more');
		/* collapse read more reviews - if open [ENDS] */
	};
	
	this.showReviewForm=function() {
		$('.leftPanelContainer.bottom').css({ 'top': '380px', 'position': 'absolute' });
		$(".postYourReviewContainer").show();
		$(this).parent().hide();
		$(".reviewOpenStage").hide();
	};
	
			//This is for Review This Product
            this.reviewThisProduct = function () {
                $('#generalErrMsg').hide();
                $('#reviewCommentsErrMsg').hide();
                $('#reviewTitleErrMsg').hide();
				if(parseInt($('#isLoginRedirection').val())) {
					$('#reviewThisProduct').hide();
					_this.showReviewForm();
				}
                $(".reviewButton").delegate("#reviewThisProduct", "click", function () {				
					
					if($('#isUserLogged').val()) {
						_this.hideComments();
						_this.showReviewForm();
						$('#reviewThisProduct').hide();
					}
					else{
						
						$.ajax({			
							url: $('#signInPageUrl').val(),
							type: "POST",
							data: { },
							success: function (response) {							
								window.location.href=response;
							},
							error: function (jqXHR, textStatus, errorThrown) {					
								return false;
							},
							complete: function (jqXHR, textStatus) {
							
							}
						});
						
					}
                    //	$('.leftPanelContainer.bottom').css({'margin-top':'-'+($('.pdpInnerPageContent .readMoreReviewsContainer').height()-10)+'px'});
                });
            };
	
		this.reviewThisProductValidText = function () {
				if ($("#submitYourReview").length > 0) {
                    $('input#reviewTitle').bind('keyup mouseleave', function () {
                        var $th = $(this);
							if($th.val().match(/[%*<>+\\\/]/gi) != null){
								$th.val($th.val().replace(/[%*<>+\\\/]/gi, ''));
							}
                    });
				
                    $('textarea#reviewComments').bind('keyup mouseleave', function () {
                        var $th = $(this);
							if($th.val().match(/[%*<>+\\\/]/gi) != null){
								$th.val($th.val().replace(/[%*<>+\\\/]/gi, ''));
							}
                    }); 
				}					
            };
			
		this.reviewThisProductFormValidation = function (evt) {
			var $btnPostReview = $(".postReviewButton input.standardBtn");
			
			$btnPostReview.click(function(event){
				event.preventDefault();
				var submit=false, starRating=$('#starredRatings').val(), title=$('#reviewTitle').val(), comment=$('#reviewComments').val();
				var reviewtitleDefault=$('#reviewtitleDefault').val();
				var reviewCommentDefault=$('#reviewCommentDefault').val();
				if(starRating==0 && (title==reviewtitleDefault && comment==reviewCommentDefault)){
					$('#generalErrMsg').show();
					submit=false;
					$('#reviewTitleErrMsg').hide();
					$('#reviewCommentsErrMsg').hide();
				}
				else{
					$('#generalErrMsg').hide();
					if(starRating==0) {
						if(title==reviewtitleDefault && comment==reviewCommentDefault) {
							$('#reviewTitleErrMsg').show();
							$('#reviewCommentsErrMsg').show();
							submit=false;
						}
						else{
							if(title==reviewtitleDefault) {
								$('#reviewTitleErrMsg').show();
								submit=false;
								$('#reviewCommentsErrMsg').hide();
							}
							if(comment==reviewCommentDefault) {
								$('#reviewTitleErrMsg').hide();
								$('#reviewCommentsErrMsg').show();
								submit=false;
							}
							if(title!=reviewtitleDefault && comment!=reviewCommentDefault) {
								submit=true;
							}
						}
					}
					else {
						if(title==reviewtitleDefault && comment==reviewCommentDefault) {
						title='';
						comment='';
							submit=true;
						}
						else if(title!=reviewtitleDefault && comment!=reviewCommentDefault) {
							submit=true;
						}
						else if(title!=reviewtitleDefault) {
							$('#reviewCommentsErrMsg').show();
							$('#reviewTitleErrMsg').hide();
							submit=false;
						}
						else if(comment!=reviewCommentDefault) {
							$('#reviewTitleErrMsg').show();
							$('#reviewCommentsErrMsg').hide();
							submit=false
						}
					}
				}
				
				if(submit){
					$.ajax({
						url: $('#reviewPost').attr("action"),
						type: "POST",
						data: { ProductId: $('#ProductId').val(), itemTitle: $('#itemTitle').val(),sku: $('#sku').val(),userId: $('#userId').val(), userfirstName: $('#userFirstName').val(),starredRatings: $('#starredRatings').val(), reviewTitle: title, reviewComments: comment },
						success: function (data) {
							$('.thankYouMessage').show();						
							var productName = $('#submitYourReview').data('ct-information');
							UDM.evq.push(['trackEvent', 'Other', 'Rating/Review', productName])	
							return true;							
						},
						error: function (jqXHR, textStatus, errorThrown) {
						{	
							$('.postYourReviewContainer').show();
							$('.thankYouMessage').hide();
						};
						return false;
						},
						complete: function (jqXHR, textStatus) {
							$('.postYourReviewContainer').hide();
							$('.thankYouMessage').show();
							return true;
						}
					});
				}
			});
        };
	// This is for Tabs
	this.tabs = function () {
		$('ul.tabs').each(function(){
			/*var $active, $content, $links = $(this).find('a');
			$active = $($links.filter('[href="'+location.hash+'"]')[0] || $links[0]);
			console.log($active);
			$active.addClass('active');
			$content = $($active.attr('href'));
			$links.not($active).each(function () {
				$($(this).attr('href')).hide();
			});*/
			
			var pathname = window.location.pathname.split('/'); 
			if($(this).attr('title')==pathname[2]) {
				$(this).addClass('active');
			}
			
			/*$(this).on('click', 'a', function(evt){			
				// Prevent the anchor's default click action
				evt.preventDefault();
				$active.removeClass('active');
				$content.hide();
				$active = $(this);
				$content = $($(this).attr('href'));
				$active.addClass('active');
				$content.show();			
			});*/
		});
		
		$('ul.tabs').each(function(){
			$(this).find('a').removeClass('active');
		});
		
		var pathname = window.location.pathname.split('/'); 
		$.each($('ul.tabs li a'), function(k,v){
			var searchCategory= pathname[2].toLowerCase();
			if($(this).data('action').length>0){					
					searchCategory = pathname[3].toLowerCase();
			}
			if($(this).attr('data-tab').toLowerCase()==searchCategory) {
				$(this).addClass('active');
			}
		});
	};
	
	this.timeLineScroll = function () {
		if($(".timeLineScrollContainer").length){
			var serverURL=$('input#serverURL').val();
			//var serverURL='resources/js/timeline.json';
			$.ajax({
				dataType: 'JSON',
				cache:false,
				url: serverURL,
					success: function(data) {		
					timelineData = data;
					_this.ceateTimeLine(timelineData);
				},
				error: function (errormessage) {//alert('error');
				}
			});
			
		}
	};
	
	this.ceateTimeLine= function(data){
			var $data=data,
				getContaine=$('.timeLineScrollContainer');
			    yearStart=true,
				classStr = "left",
				leftCount = 0,
				rightCount=0,
				imgVidData='',
				date='',
				openInNewWindow='',
				findOutMore='',
				textDesc='',
				clearDiv='',
				count=0;
			$.each($data, function (i, item) {
				crYearCon=$('<div class="yearContainer"><h2>'+item.year+'</h2></div>');	
					 yearStart=true;			
					$.each(item.months, function (j, item1) {
					
						if(yearStart==true){
						 leftCount = 0;
						 rightCount=0;
						 classStr = "left";
						
						}else{
							if(leftCount<=rightCount && classStr!="left"){
								classStr = "left";
								clearDiv='';
							}
							else if(leftCount==rightCount && classStr=="left"){
								classStr = "left";
								clearDiv="<div class='clear'></div>";
								count++;
							}
							else{
								classStr = "right";
								clearDiv='';
							}						
						}
						
						if( count &&  classStr==='right') {
							monthcont = $(clearDiv+"<div class='monthContainer "+classStr+"' style='padding-top:40px;'><h3>"+item1.monthName +"&nbsp;"+ item.year+"</h3><article /></div>");
							count=0;
						}
						else {
							monthcont = $(clearDiv+"<div class='monthContainer "+classStr+"' ><h3>"+item1.monthName +"&nbsp;"+ item.year+"</h3><article /></div>");
						}
							$.each(item1.month, function (k, item2) {
							classStr=="left"?++leftCount:++rightCount;

							/*
								Timeline Conditions::
								1. video takes priority over image
								2. if enlarge image is N/A, lighbox will not open
							
								enlargeImage class :: magnify glass enlarge image link
							*/
							date="<h4 class='timelineDate'>"+item2.date+"</h4>";
							if(item2.videoUrl) {
								imgVidData=date+"<figure><a class='videoPopup' data-playerid='relatedVideo' href='"+item2.videoUrl+"' data-titleText='"+item2.text+"'><img src='"+item2.videoImageURL +"' alt='"+item2.altText+"' title='"+item2.altText+"' /></a><a class='videoPopup defaultBtn roundedButton watchVideo' href='"+item2.videoUrl+"' data-titleText='"+item2.text+"'>Watch video</a></figure>";
							}
							else if(item2.imageUrl) {
								if(item2.largeImageUrl) {
									imgVidData=date+"<figure><a class='enlargeImage1' href='"+item2.largeImageUrl+"' data-titleText='"+item2.text+"'><img src='"+item2.imageUrl +"' alt='"+item2.altText+"' title='"+item2.altText+"'/></a><a class='enlargeImage imagePopup' href='"+item2.largeImageUrl+"' data-titleText='"+item2.text+"'>Enlarge image</a></figure>";
								}
								else{
									imgVidData=date+"<figure class='noEnlargeLink'><img src='"+item2.imageUrl +"'  alt='"+item2.altText+"' title='"+item2.altText+"' /></figure>";
								}
							}

							if(item2.openInNewWindow=="Yes") {
								openInNewWindow="target='_blank'";
							}

							if($.trim(item2.buttonHref).length) {
								findOutMore="<a '"+openInNewWindow+"' class='defaultBtn roundedButton' href='"+item2.buttonHref +"'>"+item2.buttonText +"</a>";
							}
							else {
								findOutMore="";
							}
							textDesc=item2.text;
							textDesc=textDesc.replace(/\n/g, "<br />");
								crArticleContent=$("<div class='contentCon'><div class='pointer' />"+imgVidData+"<h4>"+textDesc +"</h4>"+findOutMore+"</div>"),
								monthcont.find('article').append(crArticleContent);		
								openInNewWindow='';
								imgVidData='';
								textDesc='';
							});
							
						yearStart=false;	
					crYearCon.append(monthcont);					 
				});
				
				getContaine.append(crYearCon);
					$(".yearContainer").each(function(){						
						$(this).find('.monthContainer').not(':eq(0)').css('margin-top','50px');
					});	
					
			});
		setTimeout("$('.timeLineScrollContainer').jScrollPane({showArrows: false, autoReinitialise : true,verticalDragMaxHeight: 70});",5000);	
	};
	
	this.aggrigateRating=function(){
		if($('.starRatings').length){
			$('.starRatings').each(function(i){
					var getTotalRating=$(this).children('input[name="totalRating"]').val(),
						getTotalWidth=16,
						showRating=getTotalWidth*getTotalRating;
						$(this).children('.agRatingSelect').css('width',showRating);					
			});
		}
	};
	
	
	this.productDetailPage= function(){
		if($('.readMoreReviewsContainer ').length){
			var getReadMoreCon=$('.readMoreReviewsContainer ')
			//getReadMoreCon.css({'width':'auto','float':'right'});
			//$('.leftPanelContainer.bottom').css({'position':'absolute','top':'380px'});	

		
		}
		
		//fix #1943371
		//if($.browser.msie && parseInt($.browser.version)==8) {
			var txts = document.getElementsByTagName('TEXTAREA') 
			for(var i = 0, l = txts.length; i < l; i++) {
				if(/^[0-9]+$/.test(txts[i].getAttribute("maxlength"))) { 
				  var func = function() { 
					var len = parseInt(this.getAttribute("maxlength"), 10); 

					if(this.value.length > len) { 
					  this.value = this.value.substr(0, len); 
					  return false; 
					} 
				  }

				  txts[i].onkeyup = func;
				  txts[i].onblur = func;
				} 
			}
		//}
	};
	
	/* star movement */
	 this.getEventSource = function(evt) {
        if (window.event) {
            evt = window.event;
            // For IE 
            return evt.srcElement;
        }
        else {
            return evt.target; // For Firefox 
        }
    };

	this.starredRatings=function(){
		if($('.postReviewStarRating').length) {	
			
			$('.starRatingsContainer>ul>li').hover(function () {
				var $this=$(this);				
				$this.addClass('hover').prevAll().addClass('hover');
			},
			function () {	
		
				$('.starRatingsContainer>ul>li').not('.selected').removeClass('hover');
			});

			$('.starRatingsContainer>ul>li').click(function(){
		//	$('.starRatingsContainer>ul>li').unbind('hover');				
				var $this=$(this),
					$selIndex=$this.index()+1;
					$('.starRatingsContainer>ul>li').removeClass('selected').removeClass('hover');					
					$this.addClass('selected').addClass('hover').prevAll().addClass('selected').addClass('hover');
					$this.nextAll().removeClass('selected').removeClass('hover');				
					$('input#starredRatings').val($selIndex);				
			});
			
			
		}
		
		
		
	};
	
/* star movement End */
	
	this.simpleSensePageBg=function(){
		if($('#WelcomePage ').length){
			var getPageBgUrl=$('#WelcomePageBg').val();
			if(getPageBgUrl!=null && getPageBgUrl!=''){
				$('.simpleSenseContent').css('background-image','url('+getPageBgUrl+')');
			}
			else{
				$('.simpleSenseContent').css('background-image','');
			}
		}
		if($('#ToolCompletion').length){
			var getPageBgUrl=$('#SensePageBg').val(),
                getProssingUrl = $('#startresultprocessing').val()
			if(getPageBgUrl!=null && getPageBgUrl!=''){
				$('.simpleSenseContent').css('background-image','url('+getPageBgUrl+')');
			}
			else{
				$('.simpleSenseContent').css('background-image','');
			}
			
		//Ajax call to get data from backend according to that 	we have to show button and text on the page
			$.ajax({
				type:'get',
				cache:false,
				url: getProssingUrl,
				success: function(data) {
					$('#ToolCompletion .loader').css('display','none');
					$('#ToolCompletion .defaultBtn ').css('display','inline-block');
				},

				error: function (errormessage) {//alert('error');
				}
			});

		}
	};
	
	this.simpleSenseLotusRollover=function(){
		if($('#questionairePage').length){
		var dfltText=$('.petalRollover').text();
			/*$('figure.lotusImageContainer figure area').hover(function () {				
				var	getHeading=$(this).parent().parent().find('figcaption').attr('data-head'),
				
					getTxt=$(this).parent().parent().find('figcaption').text(),
					getIndex=$(this).parent().parent().index(),
					getClass=$(this).attr('class'),
					setPervIndex=8-getIndex;
					$(this).parent().parent().css({"z-index":"9","opacity":"1"}).next().css("z-index","8");
					$(this).parent().parent().prev().css("z-index",getIndex);
					$('.petalRollover').html('<h5>'+getHeading+'</h5>'+getTxt).attr('class','petalRollover petal '+getClass);
					
					if($(this).parent().parent().prev().index()==10){
						$(this).parent().parent().prev().css("z-index","8")
					}else{
						$(this).parent().parent().prev().css("z-index","7")
					}
			},
			function () {
			if($(this).hasClass('active')){
			}else{
			$(this).parent().parent().css({"z-index":"1","opacity":"0.2"});
			}
				$('.petalRollover').html(dfltText).removeClass().addClass('petalRollover');
			});*/
			var petalDeep = $(".petalDeepCleanse"),
				petalPolish = $(".petalPolish"),
				petalTreat = $(".petalTreat"),
				petalProtect = $(".petalProtect"),
				petalNourish= $(".petalNourish"),
				petalBeHealthy= $(".petalBeHealthy"),
				petalBeHappy = $(".petalBeHappy"),
				petalDeepHeading=petalDeep.find('figcaption').attr('data-head'),				
				petalDeepTxt=petalDeep.find('figcaption').text(),
				
                petalPolishHeading=petalPolish.find('figcaption').attr('data-head'),				
				petalPolishTxt=petalPolish.find('figcaption').text(),
				
                petalTreatHeading=petalTreat.find('figcaption').attr('data-head'),				
				petalTreatTxt=petalTreat.find('figcaption').text(),
				
                petalProtectHeading=petalProtect.find('figcaption').attr('data-head'),				
				petalProtectTxt=petalProtect.find('figcaption').text(),
				
                petalNourishHeading=petalNourish.find('figcaption').attr('data-head'),				
				petalNourishTxt=petalNourish.find('figcaption').text(),
				
                petalBeHealthyHeading=petalBeHealthy.find('figcaption').attr('data-head'),				
				petalBeHealthyTxt=petalBeHealthy.find('figcaption').text(),
				
                petalBeHappyHeading=petalBeHappy.find('figcaption').attr('data-head'),				
				petalBeHappyTxt=petalBeHappy.find('figcaption').text();
				
				
			$(document).mousemove(function (e) {
			//$("#test").remove();
			//	var mXY = e.pageX+e.pageY;
			//var fXY = ($(this).offset().top + $(this).offset().left);
			//var mXYS = parseInt((e.pageX-e.pageY),10);			
			//var _this = $(".petalDeepCleanse");
			//$(".lotusContainer").append($('<div id="test"/>').html("test "+ (_this.offset().top - _this.offset().left-(e.pageX-_this.offset().left)-(e.pageY-_this.offset().top)) +"  mx:"+e.pageX + " my"+e.pageY + " minus mxy:"+ (mXYS ) + " total mxy:"+ (e.pageX+e.pageY ) + " total fxy:" + (_this.offset().left+_this.offset().top)  +  " total fxy-:" + (_this.offset().left-_this.offset().top) +  " figure x:" + _this.offset().left + " figure y:" + _this.offset().top));
			//$(".lotusContainer").append($('<div id="test"/>').html("test "+ (_this.offset().top + _this.offset().left+(e.pageX-_this.offset().left)-(e.pageY-_this.offset().top)) +"  mx:"+e.pageX + " my"+e.pageY + " minus mxy:"+ (mXYS ) + " total mxy:"+ (e.pageX+e.pageY ) + " total fxy:" + (_this.offset().left+_this.offset().top)  +  " total fxy-:" + (_this.offset().left-_this.offset().top) +  " figure x:" + _this.offset().left + " figure y:" + _this.offset().top));
			 var source = e.target || e.srcElement;
			if(source.tagName && source.tagName.toLowerCase() =="img" && $(e.target.tagName).parent().parent().hasClass('lotusImageContainer'))	{
				var mouseX = e.pageX,
				    mouseY = e.pageY;
			if(((petalDeep.offset().top + petalDeep.offset().left+(mouseX-petalDeep.offset().left)-+(mouseY-petalDeep.offset().top))>(petalDeep.offset().top + petalDeep.offset().left+(petalDeep.offset().left-petalDeep.offset().left)-(petalDeep.offset().top-petalDeep.offset().top)-8))&&(petalDeep.offset().top + petalDeep.offset().left+(mouseX-petalDeep.offset().left)-+(mouseY-petalDeep.offset().top))<(petalDeep.offset().top + petalDeep.offset().left+(petalDeep.offset().left+(petalDeep.width())-petalDeep.offset().left)-(petalDeep.offset().top+(petalDeep.height())-petalDeep.offset().top)+2) && ( mouseX < (petalDeep.offset().left+petalDeep.width())) && (mouseX > petalDeep.offset().left)  && (mouseY < (petalDeep.offset().top+petalDeep.height())) && (mouseY > petalDeep.offset().top) )					
				{
				$('figure.lotusImageContainer figure').not('.active').css({"z-index":"1","opacity":"0.3"});
				$('figure.lotusImageContainer figure.active').css({"z-index":"1","opacity":"0.8"});
				petalDeep.css({"z-index":"8","opacity":"1"});		
				
					$('.petalRollover').html('<h5>'+petalDeepHeading+'</h5>'+petalDeepTxt).attr('class','petalRollover petal petalDeepCleanse');
				}
			else if(((petalPolish.offset().top + petalPolish.offset().left+(mouseX-petalPolish.offset().left)-+(mouseY-petalPolish.offset().top))>(petalPolish.offset().top + petalPolish.offset().left+(petalPolish.offset().left+(petalPolish.width()/2.9)-petalPolish.offset().left)-(petalPolish.offset().top+((petalPolish.height()*1.85)/2.9)-petalPolish.offset().top)))&&(petalPolish.offset().top + petalPolish.offset().left+(mouseX-petalPolish.offset().left)-+(mouseY-petalPolish.offset().top))<(petalPolish.offset().top + petalPolish.offset().left+(petalPolish.offset().left+(petalPolish.width()*1.85/2.9)-petalPolish.offset().left)-(petalPolish.offset().top+((petalPolish.height())/2.9)-petalPolish.offset().top)) && (mouseX < (petalPolish.offset().left+petalPolish.width())) && (mouseX > petalPolish.offset().left)  && (mouseY < (petalPolish.offset().top+petalPolish.height())) && (mouseY > petalPolish.offset().top) )					
				{			
				$('figure.lotusImageContainer figure').not('.active').css({"z-index":"1","opacity":"0.3"});
				$('figure.lotusImageContainer figure.active').css({"z-index":"1","opacity":"0.8"});
				petalPolish.css({"z-index":"8","opacity":"1"});				
					$('.petalRollover').html('<h5>'+petalPolishHeading+'</h5>'+petalPolishTxt).attr('class','petalRollover petal petalPolish');
				}
			else if( ((petalTreat.offset().top + petalTreat.offset().left+(mouseX-petalTreat.offset().left)-+(mouseY-petalTreat.offset().top))>(petalTreat.offset().top + petalTreat.offset().left+(petalTreat.offset().left+petalTreat.width()-petalTreat.offset().left)-(petalTreat.offset().top+petalTreat.height()-petalTreat.offset().top)-2))&&(petalTreat.offset().top + petalTreat.offset().left+(mouseX-petalTreat.offset().left)-+(mouseY-petalTreat.offset().top))<(petalTreat.offset().top + petalTreat.offset().left+(petalTreat.offset().left-petalTreat.offset().left)-(petalTreat.offset().top-petalTreat.offset().top)+2) && (mouseX < (petalTreat.offset().left+petalTreat.width())) && (mouseX > petalTreat.offset().left)  && (mouseY < (petalTreat.offset().top+petalTreat.height())) && (mouseY > petalTreat.offset().top) )					
				{
				$('figure.lotusImageContainer figure').not('.active').css({"z-index":"1","opacity":"0.3"});
				$('figure.lotusImageContainer figure.active').css({"z-index":"1","opacity":"0.8"});
				petalTreat.css({"z-index":"8","opacity":"1"});		
					$('.petalRollover').html('<h5>'+petalTreatHeading+'</h5>'+petalTreatTxt).attr('class','petalRollover petal petalTreat');
				}
			else if( ((petalProtect.offset().top + petalProtect.offset().left+(mouseX-petalProtect.offset().left)-+(mouseY-petalProtect.offset().top))>(petalProtect.offset().top + petalProtect.offset().left+((petalProtect.offset().left+(petalProtect.width()/2))-petalProtect.offset().left)-((petalProtect.offset().top+petalProtect.height())-petalProtect.offset().top)))&&(petalProtect.offset().top + petalProtect.offset().left+(mouseX-petalProtect.offset().left)-+(mouseY-petalProtect.offset().top))<(petalProtect.offset().top + petalProtect.offset().left+((petalProtect.offset().left+(petalProtect.width()/2))-petalProtect.offset().left)-((petalProtect.offset().top)-petalProtect.offset().top)) && (mouseX < (petalProtect.offset().left+petalProtect.width())) && (mouseX > petalProtect.offset().left)  && (mouseY < (petalProtect.offset().top+petalProtect.height())) && (mouseY > petalProtect.offset().top) )					
				{
				$('figure.lotusImageContainer figure').not('.active').css({"z-index":"1","opacity":"0.3"});
				$('figure.lotusImageContainer figure.active').css({"z-index":"1","opacity":"0.8"});
				petalProtect.css({"z-index":"8","opacity":"1"});
				$('.petalRollover').html('<h5>'+petalProtectHeading+'</h5>'+petalProtectTxt).attr('class','petalRollover petal petalProtect');
				}
			else if(((petalNourish.offset().top - petalNourish.offset().left-(mouseX-petalNourish.offset().left)-(mouseY-petalNourish.offset().top))>((petalNourish.offset().top - petalNourish.offset().left-((petalNourish.offset().left)-petalNourish.offset().left)-((petalNourish.offset().top+petalNourish.height())-petalNourish.offset().top))))&&(petalNourish.offset().top - petalNourish.offset().left-(mouseX-petalNourish.offset().left)-(mouseY-petalNourish.offset().top))<((petalNourish.offset().top - petalNourish.offset().left-((petalNourish.offset().left+petalNourish.width())-petalNourish.offset().left)-((petalNourish.offset().top)-petalNourish.offset().top))) && (mouseX < (petalNourish.offset().left+petalNourish.width())) && (mouseX > petalNourish.offset().left)  && (mouseY < (petalNourish.offset().top+petalNourish.height())) && (mouseY > petalNourish.offset().top) )					
				{
				$('figure.lotusImageContainer figure').not('.active').css({"z-index":"1","opacity":"0.3"});
				$('figure.lotusImageContainer figure.active').css({"z-index":"1","opacity":"0.8"});
				petalNourish.css({"z-index":"8","opacity":"1"});
				
					$('.petalRollover').html('<h5>'+petalNourishHeading+'</h5>'+petalNourishTxt).attr('class','petalRollover petal petalNourish');
				}
			else if(((petalBeHealthy.offset().top - petalBeHealthy.offset().left-(mouseX-petalBeHealthy.offset().left)-(mouseY-petalBeHealthy.offset().top))>((petalBeHealthy.offset().top - petalBeHealthy.offset().left-((petalBeHealthy.offset().left+((petalBeHealthy.width()*1.8)/2.9))-petalBeHealthy.offset().left)-((petalBeHealthy.offset().top+((petalBeHealthy.height()*1.8)/2.9))-petalBeHealthy.offset().top))))&&(petalBeHealthy.offset().top - petalBeHealthy.offset().left-(mouseX-petalBeHealthy.offset().left)-(mouseY-petalBeHealthy.offset().top))<((petalBeHealthy.offset().top - petalBeHealthy.offset().left-((petalBeHealthy.offset().left+(petalBeHealthy.width()/2.9))-petalBeHealthy.offset().left)-((petalBeHealthy.offset().top+(petalBeHealthy.height()/2.9))-petalBeHealthy.offset().top))) && (mouseX < (petalBeHealthy.offset().left+petalBeHealthy.width())) && (mouseX > petalBeHealthy.offset().left)  && (mouseY < (petalBeHealthy.offset().top+petalBeHealthy.height())) && (mouseY > petalBeHealthy.offset().top) )					
				{
				$('figure.lotusImageContainer figure').not('.active').css({"z-index":"1","opacity":"0.3"});
				$('figure.lotusImageContainer figure.active').css({"z-index":"1","opacity":"0.8"});
				petalBeHealthy.css({"z-index":"8","opacity":"1"});
				
					$('.petalRollover').html('<h5>'+petalBeHealthyHeading+'</h5>'+petalBeHealthyTxt).attr('class','petalRollover petal petalBeHealthy');
				}
			else if( ((petalBeHappy.offset().top - petalBeHappy.offset().left-(mouseX-petalBeHappy.offset().left)-(mouseY-petalBeHappy.offset().top))>(petalBeHappy.offset().top - petalBeHappy.offset().left-((petalBeHappy.offset().left+petalBeHappy.width())-petalBeHappy.offset().left)-((petalBeHappy.offset().top)-petalBeHappy.offset().top)))&&(petalBeHappy.offset().top - petalBeHappy.offset().left-(mouseX-petalBeHappy.offset().left)-(mouseY-petalBeHappy.offset().top))<(petalBeHappy.offset().top - petalBeHappy.offset().left-((petalBeHappy.offset().left)-petalBeHappy.offset().left)-((petalBeHappy.offset().top+petalBeHappy.height())-petalBeHappy.offset().top)) && (mouseX < (petalBeHappy.offset().left+petalBeHappy.width())) && (mouseX > petalBeHappy.offset().left)  && (mouseY < (petalBeHappy.offset().top+petalBeHappy.height())) && (mouseY > petalBeHappy.offset().top) )					
				{
				$('figure.lotusImageContainer figure').not('.active').css({"z-index":"1","opacity":"0.3"});
				$('figure.lotusImageContainer figure.active').css({"z-index":"1","opacity":"0.8"});
				petalBeHappy.css({"z-index":"8","opacity":"1"});					
					$('.petalRollover').html('<h5>'+petalBeHappyHeading+'</h5>'+petalBeHappyTxt).attr('class','petalRollover petal petalBeHappy');
				}else{
				$('figure.lotusImageContainer figure').not('.active').not('.active').css({"z-index":"1","opacity":"0.3"});
				$('figure.lotusImageContainer figure.active').css({"z-index":"1","opacity":"0.8"});
				$('.petalRollover').html(dfltText).removeClass().addClass('petalRollover');
				}
			}else{
			$('figure.lotusImageContainer figure').not('.active').css({"z-index":"1","opacity":"0.3"});
			$('figure.lotusImageContainer figure.active').css({"z-index":"1","opacity":"0.8"});
			$('.petalRollover').html(dfltText).removeClass().addClass('petalRollover');
			}
			
			});
		}
	};
	
	this.simpleLotusIEfix=function(){		
		if (jQuery.browser.msie && jQuery.browser.version == 8) {
			jQuery('.lotusImageContainer img').each(function(index,element){
				// if there's a .png in the source, I'll assume it's at the end
				// (of course, more complex test could be made) ...
				if (element.src.indexOf('.png') != -1) {
					// ...and replace it with a GIF version
					element.src = element.src.replace('.png','.gif'); 
				}
			});
		}
	};
	
	this.simpleSenseFetchData=function(data){
		//console.log(data);
		if($('#questionairePage').length){		
		_this.simpleLotusIEfix();
		var getJsonUrl=$('#currentJsonUrl').val();
			$.ajax({
				type:'POST',
				 dataType: 'json',
				cache:false,
			 	data:JSON.stringify(data),
				url: getJsonUrl,
				success: function(data) {
					_this.validateTimeOut();
					var lotusJson = data.replace(/[\\]/gi, '');
					lotusJson = $.parseJSON(lotusJson);
						if(lotusJson.redirectTo!=undefined){
							var getUserServayId=lotusJson.SurveyID.toString(),
							//getCompURL=lotusJson.redirectTo+"?userSurveyID="+getUserServayId;
							getCompURL=lotusJson.redirectTo;									
							document.location.href=getCompURL;
							}
					_this.simpleSenseCrQuestionaire(lotusJson);
					},

				error: function (errormessage) {
					_this.validateTimeOut();
				}
			});
		}
	};
	
	this.simpleSenseCrQuestionaire=function(pageData){
		var $data=pageData,
			$pageHead=$('.welcome h1').empty(),
			$pageSubHead=$('.welcome h2').empty(),
			$videoRef=$('.optionRef').empty(),
			$bgCon=$('.simpleSenseContent'),
			$selectedOpt="",
			optSelected="",			
			$qOption="",
			$getOptionCon=$('.options form .optionsListCon ul').empty();
			
			//$bgCon.css('background-image','url('+$data.questionBackgroundImage+')')
			if($data.questionBackgroundImage!=null){
				$bgCon.css('background-image','url('+$data.questionBackgroundImage.replace(/ /g, '%20')+')')
			}
			else{
				$bgCon.css('background-image','')
			}
			$pageHead.text($data.stepDescription);
			$pageSubHead.text($data.question);
			$('.lotusImageContainer .'+$data.stepId).addClass('active').css({"z-index":"9","opacity":".8"}).prevAll().css({"opacity":".8","z-index":"1"}).addClass('active');
			$('hgroup.welcome').removeClass().addClass('welcome '+$data.stepId);
			
			
			if(($data.questionReferenceType)=="video"){
				$videoRef.html("<a class='videoPopup' href='"+$data.questionReference+"' data-titleText='"+$data.modalWindowTextValue+"'><img src='"+$data.videoThumbnailReference+"' />").show();
			}
			
			 if(($data.type).toLowerCase()=="textbox"){		

					var textArea= $("<textarea rows='15' cols='59' id='"+$data.textFeildId+"'/>").val($data.answerText);
					$videoRef.show();
					 $videoRef.html(textArea);
					 $('.optionsListCon').hide();
					$('textarea').on('focus', function(){
							  var $this = $(this);
							  if($this.val() == $data.answerText){
								  $this.val('');
							  }
						  })
						  .on('blur', function(){
							  var $this = $(this);
							  if($this.val() == ''){
								  $this.val($data.answerText);
							  }
					});

					$("textarea").bind('paste', function(e) {
                        $(e.target).keyup(_this.setCommentBoxData);
					}); 
 
					$("textarea").bind('keyup', function(e) {
                        $(e.target).keyup(_this.setCommentBoxData);
					});					
					
					
			 }else{
				$('.optionsListCon').show();
			 }
			
			if(($data.questionOption)!=null){
				$.each($data.questionOption.questionOptionList, function (i, item) {
					if(item.isSelected.toLowerCase()=="true"){
						$selectedOpt="checked";
						if(($data.type).toLowerCase() == "radio"){
							optSelected="radioSelected";				
						}else{
							optSelected="checkSelected";
						}
					}else{
					    optSelected="";
						$selectedOpt="";
					}
					
					if((item.optionType).toLowerCase()=="image"){					
						qOption=('<img src="'+item.imageOption+'" />');
					}else{
						qOption=item.option;
					}
					var questionList = $("<li><input type='"+$data.type+"' index='"+i+"' name='option' id='"+item.optionId+"' "+$selectedOpt+"  data-action='"+item.selectiontype+"'/><label for='"+item.optionId+"' class='"+optSelected+"'> "+qOption+"</label></li>" );
						$getOptionCon.append(questionList); 
				});
			}
			
			if($('.optionsListCon img').length!=0){			
				$('.optionContainer').addClass('imageOption');			
			}else{
				$('.optionContainer').removeClass('imageOption');
			};
			
		
		if($data.answerlayout==2){
			$('.optionContainer').addClass('twoColLayout');
		}else{
			$('.optionContainer').removeClass('twoColLayout');
		}
			
			if($data.stepId.toLowerCase()!="petalandfinally"){
				$('#pageSubmit').text('Next').attr('id','nextQuestion');
				$('#backQuestion').css('display','inline-block');
			}
			//console.log('**********'+$data.previousQuestionID);
			if($data.previousQuestionID==null || $data.previousQuestionID==''){
				$('#backQuestion').hide();
			}
			else {
				$('#backQuestion').css('display','inline-block');
			}
			if($data.stepId.toLowerCase()==("petalandfinally")){
				var submitBtnText = $('#submitBtnText').val();
				$('#nextQuestion').text(submitBtnText).attr({ 'title':submitBtnText, 'id':'pageSubmit' });
			};
			
			
			_this.prograssBarPointer($data);
			$('#nextQuestion, #backQuestion, #pageSubmit').unbind('click');
			$('#nextQuestion, #backQuestion, #pageSubmit').bind('click', function(e){
				e.preventDefault();
				$("html, body").animate({ scrollTop: 0 }, "slow");
				var optClick=$(this).attr('id');
				_this.simpleSenseNextBack($data,optClick);
			});
			
		$('input[type=checkbox]').on("click", function(e){
			if($(this).data('action')===1){
				$(this).parent().siblings().find('input').removeAttr('checked');
					if($('.ie8').length) {
						$(this).parent().siblings().find('input').next().removeClass('checkSelected');
					}
			}else{
				$('input[data-action=1]').removeAttr('checked');
					if($('.ie8').length) {
						$('input[data-action=1]').next().removeClass('checkSelected');
					}
			}
			
		});
			
	if($('.ie8').length) {
		$('input[type=radio]').live("click", function(e){
					$('label').removeClass('radioSelected');
					$('.radioSelected').removeClass('radioSelected');
					   $(this).next().addClass('radioSelected');});
					   
		$('input[type=checkbox]').live("click", function(e){
					 //  $('label').removeClass('checkSelected');		
					  // $(this).next().toggleClass('checkSelected');
					   if($(this).next().hasClass('checkSelected')){						
							$(this).next().addClass('checkSelected');
					   }
					   else{					  
						$(this).next().removeClass('checkSelected');
					   }
					   
		});
					   
	}else{
		$('input[type=radio]').live("click", function(e){							
					$('label').removeClass('radioSelected');
					$('.radioSelected').removeClass('radioSelected');
					   $(this).next().addClass('radioSelected');});
		$('input[type=checkbox]').live("click", function(e){					
					 //  $('label').removeClass('checkSelected');
					 });
	}
	};
	
	this.prograssBarPointer=function(data){
	$('.lotusSlider.disable').css('left','');
		var $data=data,
		$categoryList= ['petalIntro', 'petalDeepCleanse', 'petalPolish', 'petalTreat', 'petalProtect', 'petalNourish', 'petalBeHealthy', 'petalBeHappy', 'petalAndFinally'],
		$compIndex=$.inArray($data.completedStep, $categoryList)
		$currentStep=$.inArray($data.stepId, $categoryList);
		
		if($data.completedQuestionOrder===-1){
			$data.completedQuestionOrder=0;		
		}

	/*if(($data.completedStep!="") && $currentStep<$compIndex){
		$('.lotusSlider.disable').removeClass().addClass('lotusSlider disable '+$categoryList[$compIndex+1]);	
		}else{
		$('.lotusSlider.disable').removeClass().addClass('lotusSlider disable '+$data.stepId);	
		}
	*/
	
		//$('.lotusSlider.disable').removeClass().addClass('lotusSlider disable '+$data.stepId);	
	
	if(($data.completedStep =="") || ($data.completedStep == null)) {
	$data.completedStep = 'petalIntro';
	}
	//fix for skip question within step
	if(($data.completedStep!="") && $currentStep==$compIndex && $data.completedQuestionOrder<$data.questionOrder-1){
	$data.completedQuestionOrder = $data.questionOrder-1;
	}
	//fix for skip question on step change
	if(($data.completedStep!="") && $currentStep>$compIndex){
	$data.completedQuestionOrder = $data.completedStepTotalQuestions;
	}
	$('.lotusSlider.disable').removeClass().addClass('lotusSlider disable '+$data.completedStep);	
	
		
		$('.pointer').text($data.stepName);
		$('.pointer').removeClass().addClass('pointer '+$data.stepId);
		$('.pointer').css('left','');
	
		var getLeft=parseFloat($('.pointer.'+$data.stepId).css('left'));
		pointerPos=getLeft - ($('.pointer.'+$data.stepId).width()/2);	

		//progress bar
		$('.lotusSlider.disable.').css('left','');
		var getLeftProgress=parseFloat($('.lotusSlider.disable.'+$data.completedStep).css('left'));
		//pointerPos=getLeft - ($('.pointer.'+$data.stepId).width()/2);	
	    //progress bar end
		
		$('.pointer').css('left',pointerPos+"px");
		var totalWidth=$('#ProgressBar .container').width();
	if($data.totalQuestions>1){
		$('.lotusSlider.disable').css('left','');
		var stepWidth=$data.stepPercentage,
			totalStep=$data.totalQuestions,
			CurrentStep=$data.questionOrder-1;
			
			
			
			var getStepWidth=totalWidth*stepWidth/100,
			eachStepWidth=getStepWidth/totalStep,			
			currentStepLeft=eachStepWidth*CurrentStep,
			finalPointerLeft=getLeft+currentStepLeft,
			pointerPos=finalPointerLeft - ($('.pointer.'+$data.stepId).width()/2);
		
			
			$('.pointer').css('left',pointerPos+"px");
		}
		
		//progress bar
		var CurrentStepProgress=$data.questionOrder-1;
		if($data.completedQuestionOrder!=""){
			CurrentStepProgress=$data.completedQuestionOrder;//-1;
			}	
		
			var getStepWidthProgress=totalWidth*$data.completedStepPercentage/100,
			eachStepWidthProgress=getStepWidthProgress/$data.completedStepTotalQuestions,
			CurrentStepProgressLeft =eachStepWidthProgress*CurrentStepProgress,
			finalProgressLeft=getLeftProgress+CurrentStepProgressLeft,	
			progressBarLeft=parseFloat($('.lotusSlider.disable').css('left')),
			progressBarPos=finalProgressLeft;//progressBarLeft+finalPointerLeft;			
			$('.lotusSlider.disable').css('left',progressBarPos+'px');
			//progress bar end
	
	
	};
	
	this.simpleSenseNextBack=function(data,opt){
		var $data=data,
		$option=opt,
		d = new Date();
		
		$data.dateTime = _this.formatDate(d);
		if($option.toLowerCase()=='nextquestion'){	
		
		
			$data.action="next";
			var getSelected=parseInt($("input[name='option']:checked").attr('index'),10);			
			if($("input[name='option']:checked").length==0){
				if($('.error').length==0){
					$('div.errorContainer').html('<div class="error">'+$data.errorMessage+'</div> ');
				}
				return false;
			}else{
				if($('.error').length){
					$('.error').remove();
				}
			};
			$.each($data.questionOption.questionOptionList, function (i, item) {
					item.isSelected = "";
					$("input[name='option']:checked").each(function(){
					if(i == parseInt($(this).attr('index'),10)){
						item.isSelected = "true";
						return;
					}
					});
			   });
			//$data.questionOption.questionOptionList[getSelected].isSelected = "checked";
		//	$('#currentJsonUrl').val($data.nextURL);			
		//	$data.action="next";
		}
		if($option.toLowerCase()=='backquestion'){
			$('figure.'+$data.stepId).removeClass('active').css("opacity","0.2").nextAll().css("opacity","0.2");
			//$('#currentJsonUrl').val($data.prevURL);
			$('.error').remove();
			$data.action="previous";
		};
		// Submit last question
		if($option.toLowerCase()=='pagesubmit'){
			var getAnswerText=$('.optionRef textarea').val().replace(/</g, "&lt;");
			getAnswerText=getAnswerText.replace(/>/g, "&gt;");
			$data.action="submit";
			$data.answerText=getAnswerText;
			$("#questionairePage .optionContainer").hide();
		};
		$('#'+opt).unbind('click');
		if(opt.toLowerCase()==="backquestion" || opt.toLowerCase()==="nextquestion") {
			$('#'+opt).click(function(e){
				e.preventDefault;
				return false;
			});
		}
		else {
			$('#'+opt).unbind('click');
		}
		_this.simpleSenseFetchData($data);	
		$('#'+opt).bind('click');		
		
	};
	this.yourSkinSpotlightAlignment=function(){
			if($(window).width() >= MODULE.config.mobileBreakpoint) {
				_this.attachSpotLight();
			}
			$(window).resize(function(){
				if($(window).width() >= MODULE.config.mobileBreakpoint) {
					_this.attachSpotLight();	
				}
		});
		/* if ($('.yourSkincareQuesPageContent').length){
		  $("ul.spotLight li:odd").css("margin-right","0");
		} */
	};
	
	this.attachSpotLight=function(){
		$('.yourSkincareQuesPageContent ul.spotLight li.roundedBoxWhite, .meetOurExpertPageContent ul.spotLight li.roundedBoxWhite').each(function () {
			if($(this).is(":visible") ){
				if($(this).first().index()==0){
					$('ul.spotLight li.roundedBoxWhite:odd').addClass("oddSpotLight");	
				}else{
					$('ul.spotLight li.roundedBoxWhite:even').addClass("evenSpotLight");	
				}
			}	
		});
		if($(".evenSpotLight").next().hasClass('oddSpotLight')){
			$(".oddSpotLight").css("margin-right","0");
			$(".evenSpotLight").css("margin-right","40px");
		}else{
			$(".oddSpotLight").css("margin-right","40px");
			$(".evenSpotLight").css("margin-right","0");
		} 
	};
	
	this.aboutUsSpotlightAlignment=function(){
		if ($('.aboutUs').length){
				$('ul.spotLight li:visible').each(function (i) {
					 if (i % 2 == 0) $(this).css("margin-right","0");
				 });
		 // $("ul.spotLight li:odd").css("margin-right","0");
		}
	};	
  

  
   this.spotlightClickable=function(){
	var spotlight=$('ul.spotLightContent li, ul.spotLight li');
	$(spotlight).click(function(){	
		
		if($(this).children().hasClass('videoSpotlight')){		
		UDM.evq.push(['trackEvent', 'Other', 'Widgets', 'Module - '+window.location.host+$(this).find("figure").attr('data-videolink')]);	
				var videoUrl = $(this).find('.videoSpotlight').data('videolink'),
					videoId=$(this).data("playerid");
					titleText=$(this).attr("data-titletext");
					MODULE.helper.simpleLightBox('videocall',videoUrl,videoId,titleText);
		
		}else{
		if($(this).find("a").attr('href').indexOf("http") >-1){
			UDM.evq.push(['trackEvent', 'Other', 'Widgets', 'Module - '+$(this).find("a").attr('href')]);
		}else{
			UDM.evq.push(['trackEvent', 'Other', 'Widgets', 'Module - '+window.location.host+$(this).find("a").attr('href')]);
		}	
		var getHref=$(this).find("a").attr('href'),
		getTraget=$(this).find("a").attr('target');
		
		if(getTraget=="_blank") {
			window.open(getHref, getTraget);
		}
		else {
			window.location=getHref;
		}
		}	
	});
	var spotlightAnchor=$('ul.spotLight li a, ul.spotLightContent li a');
	$(spotlightAnchor).click(function(e){
		e.preventDefault();
	});
   };
   
   /*This for Result Home Page Tab highlight*/
    this.resultHomePageTabsHightlight=function(){
		
		var anchor=$('.resultTabsMaincontainer ul.resultsTabs li a'),
			listItem=$('.resultTabsMaincontainer ul.resultsTabs li'),
			listItemSelected=$('.resultTabsMaincontainer ul.resultsTabs li.selected');
		$('.resultTabsMaincontainer ul.resultsTabs li:first-child').addClass('selected');		
		var selectedAnchor = $(anchor).attr('class');
		$('#resultsTabsContainer').addClass(selectedAnchor);
		if ($('.resultTabsMaincontainer ul.resultsTabs').length){		

		var getCalledId=$('.resultsTabs li:eq(0) input').val()
		_this.resultPageFetachData(getCalledId);
		
			$(anchor).click(function(e){
				e.preventDefault();
					getCalledId=$(this).next().val();
						
				_this.resultPageFetachData(getCalledId);				
				var selectedAnchor = $(this).attr('class');				
				$('#resultsTabsContainer').removeClass().addClass(selectedAnchor);
				$(listItem).removeClass('selected');				
				if(listItemSelected.length > 0){
					$(this).parent(listItem).removeClass('selected');
					
				}else{
					$(this).parent(listItem).addClass('selected');					
				};
			});							
		};
	};
	
	this.getMintues=function(){
		var d = new Date(),
			f = d.getTime();
			//m=1000*60;
			//fm=Math.round(f/m);
			//return fm;			
			return f;
	};
	
	this.validateTimeOut=function(){
		if($('#recordLastHit').val()=="") {
			var gM=_this.getMintues();									
				$('#recordLastHit').val(gM);				
		}else{
			var lGn=_this.getMintues(),
				oM=$('#recordLastHit').val(),
				fT=lGn-oM,				
				aTm=$('#formAuthenticationTimeOut').val() * 1000 * 60;			
					if(fT >= aTm){
						$('#recordLastHit').val("");
						 window.location.href=$('#formAuthenticationTimeOut').data('action');									 
						 return false;
					}else{
						var gM=_this.getMintues();									
						$('#recordLastHit').val(gM);
					}
		};
		return true;
	};
	this.resultPageFetachData=function(tab){
	var $tab=tab;	
	$.ajax({
				beforeSend: function(){ 
					$('#resultsTabsContainer').html('<div class="loader"><img src="/resources/images/ico/ajax-loader.gif" /></div>');
				},
				cache:false,
			
				url: '/simplesense/ResultPagestep' + $tab,
				//url: 'tab-1.html',
					success: function(data) {
						if(_this.validateTimeOut())
						$('#resultsTabsContainer').html(data);						
				},
				error: function (errormessage) {
					_this.validateTimeOut();
				}
			});
	
	}
	
/*This for Result Home Page open all and collaspe tabs*/
	this.resultPageToggle=function(){
		if($('.resultTabsMaincontainer').length){
		
		$(".expand_all,.closeAll").live("click", function(e){
			e.preventDefault();
			var $this=$(this),
				attrcloseAll=$('div.openAllBtnContainer a.defaultBtnSimple').attr('data-closeall'),
				attropenAll=$('div.openAllBtnContainer a.defaultBtnSimple').attr('data-openall'),
				gethead=$('#resultsTabsContainer>h3');				
				$this.toggleClass('expand_all');				
				if($this.hasClass('expand_all')){
					$this.text($('.openAllBtnContainer a.defaultBtnSimple').attr('data-openall'));
					$this.attr('title',attropenAll);							
					gethead.removeClass('active').next().hide();
				}else{
					$this.text($('.openAllBtnContainer a.defaultBtnSimple').attr('data-closeall'));
					$this.attr('title',attrcloseAll);
					$this.addClass('closeAll');
					gethead.addClass('active').next().show();
				}
			});	
		
			$('h3.expand span').live("click", function(){
				var getParent=$(this).parent();	
				if(getParent.hasClass('active')){								
					getParent.removeClass('active').next().hide();
				}else{
					getParent.addClass('active').next().show();
				}
				
				if($('#resultsTabsContainer h3.active').length==0){					
					$('.closeAll').text($('.openAllBtnContainer a.defaultBtnSimple ').attr('data-openall'));					
				}
				
				if($('#resultsTabsContainer h3.active')!=0){
					var attropenAll=$('#resultsTabsContainer div.openAllBtnContainer a.defaultBtnSimple').attr('data-openall');					
					$('div.openAllBtnContainer a.defaultBtnSimple').attr('title',attropenAll);
				}
				
				var tabHeading=$('#resultsTabsContainer h3.expand').length,
				tabHeadingActive=$('#resultsTabsContainer > h3.expand.active').length;
				if(tabHeading === tabHeadingActive){
					var attrcloseAll=$('div.openAllBtnContainer a.defaultBtnSimple').attr('data-closeall'),
						attropenAll=$('div.openAllBtnContainer a.defaultBtnSimple').attr('data-openall');					
					$('div.openAllBtnContainer a.defaultBtnSimple').text($('.openAllBtnContainer a.defaultBtnSimple').attr('data-closeall'));
					$('div.openAllBtnContainer a.defaultBtnSimple').attr('title',attrcloseAll);
					$('div.openAllBtnContainer a.defaultBtnSimple').removeClass('expand_all');
					$('div.openAllBtnContainer a.defaultBtnSimple').addClass('closeAll');
					
				}else{
					$('div.openAllBtnContainer a.defaultBtnSimple').text($('.openAllBtnContainer a.defaultBtnSimple ').attr('data-openall'));
					$('div.openAllBtnContainer a.defaultBtnSimple').attr('title',attropenAll);
					$('div.openAllBtnContainer a.defaultBtnSimple').addClass('expand_all');
				}
			});
		}	
   };
   
  /*This for Toggle of readMore Sub*/
 
 this.expandCollapseForReadMoreSubToggle=function(obj){ 
 var toggleContainer = obj.parents(".expandCollaspetab").find('.toggle_container'),
					toggleHeader = obj.parents(".expandCollaspetab").find('h3.expand_heading'),
					subLink = obj.parents(".expandCollaspetab").find('.readMoreSub'),
					toggleLink = obj.parents(".expandCollaspetab").find('h3.expand_heading a.readMore'),
					attrClose=$('h3.expand_heading a.readMore').data('close'),
					attrReadmore=$('h3.expand_heading a.readMore').data('expand'),
					shortDesc = obj.parents(".expandCollaspetab").find('.shortDesc');
					
				if(toggleHeader.hasClass('active')){
					toggleHeader.removeClass('active').find('a.readMore').text(attrReadmore);
					obj.parents(".expandCollaspetab").find('.toggle_container').hide();
					shortDesc.show();
					subLink.show();
				}else{
					toggleHeader.addClass('active').find('a.readMore').text(attrClose);
					obj.parents(".expandCollaspetab").find('.toggle_container').show();
					shortDesc.hide();
					subLink.hide();
				};
 };
 
	this.readMoreSubToggle=function(){
		if( $('.infoAccordion').length != 0 ){
		var toggleSelector = $('.expandCollaspetab h3');
		
		toggleSelector.each(function(i){
		var $this = $(this);
		var html = $this.html();
		if($this.find("span.viewMoreReviews").length<1){
			$this.html("<span class='text'>"+(html.replace(/<a /i,'</span><a ')));
		}
		$this.find('span') .click(function(){
		_this.expandCollapseForReadMoreSubToggle($(this).parent());
			return false;
		});
		$this.find('a.readMore') .click(function(){
		_this.expandCollapseForReadMoreSubToggle($(this).parent());
			return false;
		});
		});
	
			$('.expandCollaspetab a.readMoreSub').click(function(e){	
				e.preventDefault();	
				_this.expandCollapseForReadMoreSubToggle($(this));			
			});
			
		}
	};
	
	this.expandCollapseMobile=function(){
		
			var toggleSelector = $('.expandCollaspetab');
					if( $('.infoAccordion').length != 0 ){
						toggleSelector.each(function(){
							var $contentCopy=$(this).find(".content").clone();
							$(this).children(".toggle_container").prepend($contentCopy);
						});
					}
	};
	

	
	this.validation=function(){
		$.ajax({
				dataType: 'JSON',
				cache:false,
				url: '/resources/js/validationMessages.json',
				success: function(data) {						
					$("form#contactUsForm, form#loginForm, form#forgotPasswordForm, form#createNewPwdForm").validate({
					 onfocusout: function(e) {
					  this.element(e);
					}
					, onkeyup: false,
						rules:data.rules,
						messages:data.messages
					});
					$("form#contactUsForm, form#loginForm, form#forgotPasswordForm, form#createNewPwdForm").submit(function(){
						/*var n=str.match(/[\w\d\s!$#%]/gi);
						alert(str.match(/[\w\d\s!$#%]/gi))*/
					});
				},
				error: function (jqXHR, textStatus, errorThrown) {

				}
			});
	};
	
	this.userAccountPgsValidation=function(){
		if($('.contactUs').length || $('.forgotPasswordContainer').length || $('.createNewPwdContainer').length || $('.loginContainer').length) {
			_this.validation();
		}
	};
	
	this.searchResultPg = function () {
		if ($('ul.tabs').length) {
			$('ul.tabs a').click(function (e) {
				var getTabId = $(this).attr('data-tab');
				var pathname = window.location.pathname.split('/');
				$(this).parent().siblings().find('a').removeClass('active');
				$(this).addClass('active');
				var resVal="/search-module/";
				var searchString = pathname[3];
				if($(this).data('action').length>0){
					resVal=$(this).data('action')+"/search-module/";
					searchString = pathname[4];
				}
				e.preventDefault();
				$.ajax({
					url: resVal + getTabId + "/" + searchString,
					data: { tabID: $(this).attr('data-tab') },
					type: "POST",
					success: function (responseHTML) {
						$('div.tabs-container #readMorePanel').html(responseHTML);
					},
					error: function (jqXHR, textStatus, errorThrown) {
						{

						};
						return false;
					},
					complete: function (jqXHR, textStatus) {
					}
				});
			});
		}
    };
	
		this.bindSearchBar = function () {
			if ($("#siteSearchButton").length > 0) {
				var srchVal=$("#searchResults").val();
				$("#siteSearchButton").click(function () {
					_this.pageSearchBar(srchVal);
				});			
				$('#searchResults').keypress(function(e){
					if (e.which == 13){ 
						_this.pageSearchBar(srchVal);
					}
				}); 
			}
		};
		
		this.pageSearchBar = function(srchVal) {
			if ($("#searchResults").val() == "" || $("#searchResults").val()==srchVal) {
				return false;
			}
			var searchStr = $.trim($('#searchResults').val());  					
			if( $("#searchResults").val().length >100)
			{
				searchStr = $("#searchResults").val().substr(0,100);
			}
			while(searchStr.substring(searchStr.length,searchStr.length-1).indexOf('.') == 1) 
			{
				searchStr = searchStr.substring(searchStr.length-1,0);
			} 
						
			var myArray = $("#searchResults").attr('data-action').split('/');
			if (myArray.length <= 3) {
				var newaction = $("#searchResults").attr('data-action').replace(myArray[2], $("#contentType").val()) + "/" + searchStr;
			} else if (myArray.length > 3) {
				var locale =  $("#siteHeaderSearchButton").attr('data-ct-locale');				
				if(locale.length > 0)
				{	
					if(myArray.length <= 4)
					{
						var newaction = $("#searchResults").attr('data-action').replace(myArray[3], $("#contentType").val()) + "/" + searchStr;
					}
					else if(myArray.length > 4)
					{
						var newaction = $("#searchResults").attr('data-action').replace(myArray[3], $("#contentType").val()).replace('/' + $("#contentType").val() + '/' + myArray[4], '/' + $("#contentType").val() + '/'+searchStr);
					}
				}
				else
				{
					var newaction = $("#searchResults").attr('data-action').replace(myArray[2], $("#contentType").val()).replace('/' + $("#contentType").val() + '/' + myArray[3], '/' + $("#contentType").val() + '/'+searchStr);
				}
			}
			else {
				var newaction = $("#searchResults").attr('data-action') + "/" + searchStr;
			}
			window.location.href=newaction;
			CT.trackableItems["ct-site-search"].information = $("#searchResults").val();
		};
		/* moved in header.js */
		/*this.bindHeaderSearchBar = function () {
                if ($("#siteHeaderSearchButton").length > 0) {
					var srchVal=$("#headerSearchResults").val();
                    $("#siteHeaderSearchButton").click(function () {
                        if ($("#headerSearchResults").val() == "" || $("#headerSearchResults").val()==srchVal) {
                            return false;
                        }
					   var searchHeaderStr = $.trim($('#headerSearchResults').val());
						if( $("#headerSearchResults").val().length >100)
						{
							searchHeaderStr = $("#headerSearchResults").val().substr(0,100);
						}						
                        var myArray = $("#headerSearchResult").attr('action').split('/');
                        if (myArray.length > 5) {
                            var newaction = $("#headerSearchResult").attr('action').replace('/' + myArray[4] + '/' + myArray[5], '/' + myArray[4] + '/'+searchHeaderStr);
                        } else {
                            var newaction = $("#headerSearchResult").attr('action') + "/" + searchHeaderStr;
                        }
                        $("#headerSearchResult").attr('action', newaction);
						CT.trackableItems["ct-site-search"].information = $("#headerSearchResults").val();
                    });
                }
            };*/
			
		this.validSearchRequest = function () {
                if ($("#siteHeaderSearchButton").length > 0) {
                    $('input#headerSearchResults').bind('keyup mouseleave', function (e) {
						if(e.which!=37 && e.which!=39) {
							var $th = $(this);
							$th.val($th.val().replace(/[%*<>+.:\\\/]/gi, ''));
						}
                    });

                }
               if ($("#siteSearchButton").length > 0) {
                    $('input#searchResults').bind('keyup mouseleave', function (e) {
						if(e.which!=37 && e.which!=39) {
							var $th = $(this);
							$th.val($th.val().replace(/[%*<>+.:\\\/]/gi, ''));
					    }
                    });
                }
            };
			
			/* Method removes special characters in the text boxes of AM - Registration/ Update Pages */
			this.validUserProfileInfo = function () {
                if ($("#registrationSubmitBtn").length > 0) {
                    $('input#fname').bind('keyup mouseleave', function (e) {
						if(e.which!=37 && e.which!=39) {
							var $th = $(this);
							$th.val($th.val().replace(/[%*<>+.:\\\/]/gi, ''));
						}
                    });
					$('input#lname').bind('keyup mouseleave', function (e) {
						if(e.which!=37 && e.which!=39) {
							var $th = $(this);
							$th.val($th.val().replace(/[%*<>+.:\\\/]/gi, ''));
						}
                    });
					$('input#streetAddressLine1').bind('keyup mouseleave', function (e) {
						if(e.which!=37 && e.which!=39) {
							var $th = $(this);
							$th.val($th.val().replace(/[%*<>+.:\\\/]/gi, ''));
						}
                    });
					$('input#streetAddressLine2').bind('keyup mouseleave', function (e) {
						if(e.which!=37 && e.which!=39) {
							var $th = $(this);
							$th.val($th.val().replace(/[%*<>+.:\\\/]/gi, ''));
						}
                    });
					$('input#locality').bind('keyup mouseleave', function (e) {
						if(e.which!=37 && e.which!=39) {
							var $th = $(this);
							$th.val($th.val().replace(/[%*<>+.:\\\/]/gi, ''));
						}
                    });
                }
            };
			
	/*This is for Enter key*/
	this.bindEnterKey = function(){	
		if ($('.webassist').length) {
			var defaultText=$('#search').attr('value');		
			$('#search').keypress(function(e){
				if (e.which == 13){ 			
					_this.webassistSrch(defaultText);
				}
			});	
			
			$('.siteSearchButton').click(function () {			
				_this.webassistSrch(defaultText);
			});
		}
	};
	

	this.webassistSrch = function (defaultText) {		
				if($('#search').val()=="" || $('#search').val()==defaultText) {	
					$('.searchBar .error').removeClass('hidden');
					$('div.searchResults').addClass('hidden');
					$('#searchResultError').addClass('hidden');
					return false;
				}
				else {
				    $('.searchBar .error').addClass('hidden');
				    $('#searchResultError').addClass('hidden');
				}
				var form = jQuery('#askQuestion');
				
				var userInput = form.find('#search');
				var sessionId = form.find('#sessionId');
				var relatedTopicData = form.find('#relatedTopicData');
				var responseContainer = $('#responseContainer');
				var url = '/Virtual-Agent/VirtualAgentGetAnswer';
				var searchFieldValue = $('#search').attr('data');
				responseContainer.html('<div class="ajax-loading"><img src="/resources/images/ico/ajax-loader.gif" /></div>');
				$.ajax({
				    type: 'POST',
				    url: url,
				    data: 'question=' + userInput.val() + '&sessionId=' + sessionId.val() + '&relatedTopicData=' + relatedTopicData.val(),
				    success: function (data) {
				        responseContainer.html(data);
				        _this.getRelatedTopic('a.goToLink');
				        userInput.val(searchFieldValue);				        
				    },
				    error: function (errormessage) {
				        responseContainer.empty();
				        $('#searchResultError').removeClass('hidden');			        
				    }				   
				});			
    };

	this.getRelatedTopic = function (selector) {
		var eventTarget = jQuery(selector);
		var responseContainer = jQuery('#responseContainer');
		if (eventTarget.length > 0 & responseContainer.length > 0) {
			eventTarget.each(function () {
				var currentNode = jQuery(this);
				var question = currentNode.attr('data-question');
				var relatedTopicId = currentNode.attr('data-relatedTopicId');
				var sessionId = currentNode.attr('data-sessionId');
				var relatedTopicData = currentNode.attr('data-relatedTopics');
				var responseContainer = jQuery('#responseContainer');
				var url = '/Virtual-Agent/VirtualAgentGetAnswer';
				currentNode.click(function (event) {
					//do your stuff
					event.preventDefault();
					responseContainer.html('<div class="ajax-loading"><img src="/resources/images/ico/ajax-loader.gif" /></div>');
					jQuery.ajax({
						type: 'POST',
						url: url,
						data: 'question=' + question + '&relatedTopicId=' + relatedTopicId + '&sessionId=' + sessionId + '&relatedTopicData=' + relatedTopicData,
						success: function (data) {
							responseContainer.empty().html(data);
							_this.getRelatedTopic('a.goToLink');
						}
					});
				});
			});
		}
	};
	
	this.expertLandingPageSpotlightAlignment=function(){
		if ($('.meetOurExpertPageContent').length){
		  $("ul.spotLight li:even").css("margin-right","40px");
		}
	};	
     
   /*Where to buy*/
	this.whereToBuyNavigation=function(){
    /*$('.optInLabel').live("click", function(e){ e.preventDefault(); 
    $("#"+$(this).attr("for")).click().change();
    $(this).toggleClass('radioSelected');
    });
    */
/*  $('div.threeBox div.firstBox  li:nth-child(odd)').each(function(i){
    
    if($(this).height()>$(this).next().height()){
    $(this).next().height($(this).height());
    }else{
    $(this).height($(this).next().height());
    }
    });*/
		_this.lastScreenWidth = $(window).width();
        $(window).resize(function() {
             if($(window).width() <= MODULE.config.mobileBreakpoint){
           if(_this.lastScreenWidth <= MODULE.config.mobileBreakpoint){
                    
                }else{
                	$('#lightbox').remove();
                    $('.thirdBox').hide();
                $(".secondBox").after($(".thirdBox"));
                $('.secondBox').css('visibility','hidden');
                $('.productList').remove();
                }
                _this.lastScreenWidth = $(window).width();
            }
            else{
                if(_this.lastScreenWidth >= MODULE.config.mobileBreakpoint){
                    
                }else{
                	$('#lightbox').remove();
                $('.thirdBox').hide();
                $(".secondBox").after($(".thirdBox"));
                $('.productList').remove();
                $('.openCategory').removeClass('openCategory');
            }
            _this.lastScreenWidth = $(window).width();
                $('div.threeBox div.firstBox  li:nth-child(3n)').each(function(i){   
    
                if($(this).height()>$(this).prev().height()){
                $(this).prev().height($(this).height());    
                $(this).height($(this).height());
                }else{
                $(this).height($(this).prev().height());
                    $(this).prev().height($(this).prev().height());
                }
                
                if($(this).height()>$(this).prev().prev().height()){
                $(this).prev().prev().height($(this).height()); 
                $(this).height($(this).height());
                }else{
                $(this).height($(this).prev().prev().height());
                $(this).prev().height($(this).prev().prev().height());
                $(this).prev().prev().height($(this).height());
                }
                
                });
                        }
        });
    
        $(".thirdBox").live("click", function(e){
            if($(window).width() <= MODULE.config.mobileBreakpoint){
            e.stopPropagation();}
        })
        $('div.threeBox div.firstBox .productSpotLight> li').live("click", function(e){
            e.preventDefault();
            if($(window).width() <= MODULE.config.mobileBreakpoint){
                $(".thirdBox").fadeOut('400','linear');
                  $(".secondBox").after($(".thirdBox"));
                  if($(this).hasClass('openCategory')){
                        var scope= this;
                        $(this).children("ul").slideUp('800',function(){
                            $(this).remove();
                            $(scope).removeClass('openCategory');
                        });
                        
                        
                  }
                else{
                     var scope=this;
                        $('.openCategory').children("ul").slideUp('800',function(){
                            $(this).parent().removeClass('openCategory');
                            $(this).remove();
                            
                        });
                    $.ajax({                
                        cache:false,
                        dataType: 'JSON',               
                        //  url: 'resources/js/products.json',//+ $(this).next().find('p.title').text(),    
                        url: '/Store-Locator/GetProductsForCategory/'+ $(this).find('p.title').attr('data-tcmid'),               
                            success: function(data) {                       
                                var dom = "<ul class='productList'>";
                                 if (data.length > 0) {
                                        $('.chooseProductForCategory').addClass('hidden');
                                        for (var i = 0; i < data.length; i++) {                             
                                            dom=dom +"<li><span name='product' data-buyOnline='" + data[i].BuyOnline + "' id='" + data[i].ProductTCMID + "' value='" + data[i].ProductSKU + "'>" + data[i].ProductName + "</span></li>";
                                        }
                                    }
                                    else {
                                        dom=dom+"<p>No related products found</p>";
                                    }
                                dom=dom +"</ul";   
                                $(scope).addClass("openCategory");
                                $(scope).append(dom).children("ul").hide().slideDown('800');
                                
                        },
                        error: function (errormessage) {
                        }
                    });
                    
                }
            }
            else{
                    $("html, body").animate({ scrollTop: 0 }, "slow");
                    $('.thirdBox').hide();
                        $.ajax({                
                        cache:false,
                        dataType: 'JSON',               
                    //  url: 'resources/js/products.json',//+ $(this).next().find('p.title').text(),    
                        url: '/Store-Locator/GetProductsForCategory/'+ $(this).find('p.title').attr('data-tcmid'),               
                            success: function(data) {                       
                                var dom = [""];
                                dom.push("<ul>");
                                 if (data.length > 0) {
                                        $('.chooseProductForCategory').addClass('hidden');
                                        for (var i = 0; i < data.length; i++) {                             
                                            dom.push("<li><input type='radio' name='product' data-buyOnline='" + data[i].BuyOnline + "' class='optInRadio' id='" + data[i].ProductTCMID + "' value='" + data[i].ProductSKU + "'><label class='optInLabel' for='" + data[i].ProductTCMID + "'>" + data[i].ProductName + "</label></li>");
                                        }
                                    }
                                    else {
                                        $('.chooseProductForCategory').removeClass('hidden');
                                    }
                                dom.push("</ul");                       
                                $('.secondBox .chooseProduct').html(dom.join(""));
                                $('.secondBox').css('visibility','visible');
                        },
                        error: function (errormessage) {
                        }
            });
            }
                    
                    
                
               
                });
$('div.threeBox div.secondBox  .chooseProduct input[type=radio]').live("click", function(e){
                 $('input[name=selectedProductUPC]').val($(this).val());
                 $('input[name=selectedProductTcmID]').val($(this).attr("id"));
                 $('input[name=selectedBuyOnline]').val($(this).attr("data-buyOnline"));
                 $('.buyNow').attr('data-sku',$(this).val())
                
                $('.radioSelected').removeClass('radioSelected');
                   $(this).next().addClass('radioSelected');
                   if ($('div.threeBox div.secondBox  .chooseProduct input[type=radio]').is(':checked')) {
                       $('.showStores .error').addClass('hidden');
                       $('.thirdBox').show();

                       if($(this).attr("data-buyOnline") == "yes") {
                            $(".buyNow").show();
                       }
                       else{ $(".buyNow").hide();}

                    }else{
                    $('.thirdBox').show();
                    }
                });
                

                $('div.threeBox div.firstBox .productList li > span').live("click", function(e){
                e.stopPropagation();
                if($(this).next().hasClass('thirdBox')){
                        $(".thirdBox").fadeOut('400','linear');
                  $(".secondBox").after($(".thirdBox"));
                }else{                
                 $('input[name=selectedProductUPC]').val($(this).attr("value"));
                 $('input[name=selectedProductTcmID]').val($(this).attr("id"));
                 $('input[name=selectedBuyOnline]').val($(this).attr("data-buyOnline"));
                 $('.buyNow').attr('data-sku',$(this).attr("value"));
                 

                 if($(this).attr("data-buyOnline") == "yes") {
                                    $(".buyNow").show();
                               }
                               else{ $(".buyNow").hide();
                           }
                           
                           $(this).after($(".thirdBox"));
                           $('.thirdBox').fadeIn('400','linear');
                   }
                });
                

                
               $("#showStore").live("click", function (e) {
                   if ($("#zipCode").val() == "" || isNaN($("#zipCode").val())) {
                       $('.showStores .error').removeClass('hidden');
                                    return false;
                                } else {
                                    $('.showStores .error').addClass('hidden');
                        $(this).closest('form').submit();
                        }
                });
            
   
    
       
            $('div.threeBox div.secondBox div.chooseProduct li').live("click", function(e){
                if($(window).width() >= MODULE.config.mobileBreakpoint){
                $("html, body").animate({ scrollTop: 0 }, "slow");}
            });
        
            
    


            };
   
   
   
this.bindGoogleMap = function () {
    var mapsInit = _this.mapsInit('#searchProducts', 'map_canvas');
};


this.mapsInit = function (form, destination) {
    var selectedzipCode = $('input[name=selectedProductZipCode]').val();
    var selectedradius = $('input[name=milesdistance]').val();
    var selectedupcProductCode = $('input[name=selectedProductUPC]').val();
    var currentpagenumber = $('input[name=currentPageNo]').val();

    if (currentpagenumber == "") {
        currentpagenumber = 1;
    }

    var url = '/Store-Locator/GetStoresList';
    jQuery.ajax({
        type: 'GET',
        dataType: 'json',
        url: url,
        data: { upcProductCode: selectedupcProductCode, zipCode: selectedzipCode, radius: selectedradius, pagenumber: currentpagenumber },
        error: function (xhr, ajaxOptions, thrownError) { },
        success: function (data) {
            _this.mapsProcessStores(data, destination);
        }
    });

};

this.mapsProcessStores = function (data, mapDestination) {
    /* store list in a variable */
    var stores = data;
    _this.map="";
    if (stores.length > 0) {
		
        var defaultLatitude = parseFloat(stores[0].Address.Latitude);
        var defaultLongitude = parseFloat(stores[0].Address.Longitude);
        /* instantiate google map */
        var mapCanvas = document.getElementById(mapDestination);
        var defaultLatlng = new google.maps.LatLng(defaultLatitude, defaultLongitude);
        var myOptions = { zoom: 8, center: defaultLatlng, mapTypeId: google.maps.MapTypeId.ROADMAP };
        /* instantiate map object*/
        var map =  _this.mapCanvas || new google.maps.Map(mapCanvas, myOptions);
        _this.mapCanvas = map;
        /* create array to store markers in */
        var markerArray = [];
        /* create one info box for google maps to reuse */
        var infoBox = new google.maps.InfoWindow();
        var currentpagenumber = parseInt($('input[name=currentPageNo]').val());
        /* loops through list of stores */
        var storeHtml="";
        jQuery(stores).each(function (k, v) {
           
                storeHtml=storeHtml+'<li><span>'+stores[k].milesFromZipCenter+' miles</span><h4>'+stores[k].Name+'</h4><p>'+stores[k].Address.DisplayAddress+'</p>'
                +'<a class="storeNum">'+stores[k].Phone+'</a><a class="storeNumMos" href="tel:'+stores[k].Phone+'">'+stores[k].Phone+'</a> </li>';
            var _newStoreLatitude = parseFloat(stores[k].Address.Latitude);
            var _newStoreLongitude = parseFloat(stores[k].Address.Longitude);
            var storeStreet = stores[k].Address.Locality;
            var storeTown = stores[k].Address.City;
            var storeState = stores[k].Address.Region;
            var storeZip = stores[k].Address.PostalCode;
            var storePhone = stores[k].Phone;
            var storeName = stores[k].Name;
            var myLatlng = new google.maps.LatLng(_newStoreLatitude, _newStoreLongitude);
            var infoStoreName = document.createElement('h4');
            var infoStoreAddress = document.createElement('p');
            var infoStorePhone = document.createElement('p');
            var mapIt = document.createElement('a');
            var printIt = document.createElement('span');
            var infoContainer = document.createElement('div');
            var directionsURL = 'http://maps.google.com/?daddr=' + storeStreet + ',' + storeTown + ',' + storeState + ',' + storeZip;
            mapIt.className = 'map-it';
            printIt.className = 'print-it';
            infoStoreName.className = 'store-name';
            infoStoreAddress.className = 'street';
            infoStorePhone.className = 'phone';
            infoContainer.className = 'info-box';
            mapIt.innerHTML = 'Map it';
            printIt.innerHTML = 'Print';
            infoStoreName.innerHTML = storeName;
            infoStoreAddress.innerHTML = storeStreet + '<br />' + storeTown + ', ' + storeState + ', ' + storeZip;
            infoStorePhone.innerHTML = storePhone;
            printIt.setAttribute('style', 'display:block;margin:10px 0 0 0;cursor:pointer;');
            printIt.setAttribute('onclick', 'window.print()');
            mapIt.setAttribute('target', '_blank');
            mapIt.setAttribute('href', directionsURL);
            infoContainer.appendChild(infoStoreName);
            infoContainer.appendChild(infoStoreAddress);
            infoContainer.appendChild(infoStorePhone);
            infoContainer.appendChild(mapIt);
            infoContainer.appendChild(printIt);

            var content = infoContainer;
            var newMarker = new google.maps.Marker({
                position: myLatlng,
                map: map,
                animation: google.maps.Animation.DROP,
                title: storeName
            });
            //newMarker.setVisible(true);
            google.maps.event.addListener(newMarker, 'click', function () {
                infoBox.close();
                _this.mapsStopAnimations(markerArray);
                infoBox.setContent(content);
                newMarker.setAnimation(google.maps.Animation.BOUNCE);
                infoBox.open(map, newMarker);
            });
            markerArray.push(newMarker);
             });
 			if(currentpagenumber >1){
                $('.storesMap ul').append(storeHtml);
            }else{
            	UDM.evq.push(['trackEvent', 'Conversion', 'Click to Purchase', 'Store Locator Results Displayed']);
                $('.storesMap ul').html(storeHtml);
            }
          }
     };

        this.mapsStopAnimations = function (array) {
            jQuery(array).each(function (k, v) {
                array[k].setAnimation(null);
            });
        };
		
		this.validZipForWhereTobuy = function () {
                $('input#zipCode').keyup(function () {
                    var $th = $(this);
                    $th.val($th.val().replace(/[a-zA-Z]/gi, ''));
                });
            };
   
   /*Where to buy end*/   


this.customRadio=function(){
	if($('.ie8').length) {
		$('input[type=radio]').live("click", function(e){
					$('label').removeClass('radioSelected');
					$('.radioSelected').removeClass('radioSelected');
					   $(this).next().addClass('radioSelected');});
					   
		$('input[type=checkbox]').live("click", function(e){	
					 //  $('label').removeClass('checkSelected');		
					   $(this).next().toggleClass('checkSelected');});
					   
	}else{
		$('input[type=radio]').live("click", function(e){							
					$('label').removeClass('radioSelected');
					$('.radioSelected').removeClass('radioSelected');
					   $(this).next().addClass('radioSelected');});
		$('input[type=checkbox]').live("click", function(e){					
					   $('label').removeClass('checkSelected');});
	}
};
/*water mark end*/
/*pdp search ajax*/
			
this.simpleMapBox = function (option,obj,id,width,height) {	
			var $option=option,
			
			$id=id,
			getBody=$('body'),
			lightBoxCon=$('<div id="lightbox"/>'),
			modalWinCon=$('<div id="modalWidowcontainer" class="modalWidowcontent roundedBoxWhite" style="width:'+width+'px;height:'+height+'px;"/>'),	
	        modalWinContentCon=$('<div id="content" />'),			
			modalWinClose=$('<a class="closeButton" />'),	
			modalWinCloseText=$(modalWinClose).text('Click to close');
			modalWinCon.append(modalWinCloseText).append(modalWinContentCon);;			
			getBody.append(lightBoxCon.append(modalWinCon));
			
		var oTop = ($(window).height() - modalWinCon.height())/2 ,
				oLeft = ($(window).width() - modalWinCon.width())/2;			
				modalWinCon.css({'left':oLeft,'top':oTop});				// $('html').css('overflow', 'hidden');
		
			
			var dom =[""];
			dom.push('<div class="mapPopup"><div class="map" id="map_canvas"> <iframe id="' + $id +'" src="' +obj.attr("data-url")+'" width="495" height="495"/> </div>');
			
			dom.push('<div class="locationInfo"><table>');
			dom.push('<tr><td class="label">Store Name</td><td class="value">' +obj.attr("data-storeName")+'</td></tr>');
			dom.push('<tr><td class="label">Phone</td><td class="value">' +obj.attr("data-Phone")+'</td></tr>');
			dom.push('<tr><td class="label">Distance</td><td class="value">' +obj.attr("data-Distance")+'</td></tr>');
			dom.push('<tr><td class="label">Address</td><td class="value">' +obj.attr("data-Address")+'</td></tr>');
			dom.push('<tr><td class="label">City</td><td class="value">' +obj.attr("data-City")+'</td></tr>');
			dom.push('<tr><td class="label">State</td><td class="value">' +obj.attr("data-State")+'</td></tr>');
			dom.push('<tr><td class="label">ZIP</td><td class="value">' +obj.attr("data-ZIP")+'</td></tr>');
			dom.push('</table></div></div>');
			modalWinContentCon.html(dom.join(''));
			
	};
   this.bindzipLocator = function () {
                $("#showStore").live('click', function () {
                    if ($("#zipCode").val() == "" || isNaN($("#zipCode").val())) {
                        $('.showStores .error').removeClass('hidden');
                        return false;
                    } else {
                        $('.showStores .error').addClass('hidden');
		    $(this).closest('form').submit();
		    }
                });
            };
	
this.bindPdpSearch = function(){ 
$('.pdpSearchBox .storeSearchTable').hide(); 
$('.storeSearchTable .clearAll').live('click', function () { 
$('.pdpSearchBox .storeSearchTable').hide(); 
$('.pdpSearchBox .inputSearch').val(''); 
$('.searchBar .error').addClass('hidden'); 
}); 

$("#zipCodeFinder .siteSearchButton").live('click', function () { 
if ($("#zipcodelookup").val() == "" || isNaN($("#zipcodelookup").val())) { 
$('.searchBar .error').removeClass('hidden'); 
$('.pdpSearchBox .storeSearchTable').hide();
return false; 
} 
}); 
 
 $('.storeSearchTable table td.info span').live('click',function(){
 	_this.simpleMapBox('map',$(this),"mapFrame",970,595);
 });
 /*$('.pdpSearchBox .siteSearchButton').live('click',function(){
				$.ajax({
					url: "resources/js/searchResults.json",
					data: {"keyword":$('#searchResults').val()},
					success: function (responseHTML) {
						$('div.tabs-container #tab').html(responseHTML);
					},
					error: function (jqXHR, textStatus, errorThrown) {
					{	

					};
					return false;
					},
					complete: function (jqXHR, textStatus) {
					}
				});
				
 });*/
 };
 /*pdp search ajax end*/
 
 this.ingredientsGlossary=function () {
		if ($('.ingredientsGlossary').length) {
						$('.shortingAlphabetically li a').live('click', function(e){
							if($(this).hasClass('withData')) {
										e.preventDefault();
										var urlValue = "/glossary-ingredient-module";
										if ($(this).data('action').length > 0) {
										    urlValue = $(this).data('action') + urlValue;
										}
										$.ajax({
														url: urlValue,
														data: { alphabet:$(this).text() },
														type: "POST",
														success: function (response) {
																		$('.allOurIngredients').html(response);
																		//_this.expandCollaspePDP();
														/*My Code Start*/																	
														if(($('.allOurIngredients').length)>0){ 
															var toggleSelector = $('.allOurIngredients h3.expand_heading');		
															toggleSelector.each(function(i){
																var $this = $(this);
																var html = $this.html();			
																	$this.html("<span class='text'>"+(html.replace(/<a /i,'</span><a ')));
																
																$this.find('span').live("click", function(){
																_this.expandCollapse($(this).parent());
																	return false;
																});
																
																$this.find('a.readMore').live("click", function(){
																_this.expandCollapse($(this).parent());
																	return false;
																});
															});
														};	
														/*My Code End*/
														},
														error: function (jqXHR, textStatus, errorThrown) {
																		{
																		};
																		return false;
														},
														complete: function (jqXHR, textStatus) {
														}
										});
							}
						});
		}
	};

 
	/*this.sitemap=function(){
		if($('.sitemap').length) {
			$.ajax({
				url: "/resources/js/validationMessages.json",
				data: {  },
				type: "POST",
				success: function (response) {
					//console.log(response);
				},
				error: function (jqXHR, textStatus, errorThrown) {
					{
					};
					return false;
				},
				complete: function (jqXHR, textStatus) {
				}
			});
		}
	};*/
 
 
 
this.resultPageBin=function(){
	$("#resultsTabsContainer .buyNow, .wheretobuy .buyNow").live('click',function(e){
		e.preventDefault();
        if($(window).width() >= MODULE.config.mobileBreakpoint) {
        var binUrl=$('#binURL').val() + '/' + $(this).attr('data-sku');         
        MODULE.helper.simpleLightBox('resultBin','https://'+window.location.hostname+'/VirtualAgent/ExternalURLResponse?url='+binUrl);
    }else{
		var binUrl=$('#binURLMos').val() + '/' + $(this).attr('data-sku');			
		MODULE.helper.simpleLightBox('simpleBin',binUrl);
        }
	});
 };
 
this.finaldOBvalue=function(){		
	$(window).resize(function() {
		if($(window).width() >= MODULE.config.mobileBreakpoint) {
    $('#finalDobDate').val($('#dobMonth').val()+"/"+ $('#dobDate').val()+"/"+$('#dobYear').val());	
	_this.isDate($('#finalDobDate').val());	
	$('#dobDate').dropkick({
		change: function () {					
				$('#finalDobDate').val($('#dobMonth').val()+"/"+ $('#dobDate').val()+"/"+$('#dobYear').val());
				_this.isDate($('#finalDobDate').val());
		}
	});
	$('#dobMonth').dropkick({
		change: function () {		   
			$('#finalDobDate').val($('#dobMonth').val()+"/"+ $('#dobDate').val()+"/"+$('#dobYear').val());
				_this.isDate($('#finalDobDate').val());
		}
	});
	$('#dobYear').dropkick({
		change: function () {		   
		$('#finalDobDate').val($('#dobMonth').val()+"/"+ $('#dobDate').val()+"/"+$('#dobYear').val());
			_this.isDate($('#finalDobDate').val());
		}
	});	
		}else{
		
			$('#finalDobDate').val($('#dobMonth').val()+"/"+ $('#dobDate').val()+"/"+$('#dobYear').val());	
			_this.isDate($('#finalDobDate').val());	
			$('#dobDate').change(function() {					
						$('#finalDobDate').val($('#dobMonth').val()+"/"+ $('#dobDate').val()+"/"+$('#dobYear').val());
						_this.isDate($('#finalDobDate').val());
				});
			$('#dobMonth').change(function() {		   
					$('#finalDobDate').val($('#dobMonth').val()+"/"+ $('#dobDate').val()+"/"+$('#dobYear').val());
						_this.isDate($('#finalDobDate').val());
				});
			$('#dobYear').change(function() {		   
				$('#finalDobDate').val($('#dobMonth').val()+"/"+ $('#dobDate').val()+"/"+$('#dobYear').val());
					_this.isDate($('#finalDobDate').val());
				});
		
		
		
		
		}
	});
	 /* Code for IE10 only */
	  
	if (document.body.style.msTouchAction != undefined) {
	
	$('#finalDobDate').val($('#dobMonth').val()+"/"+ $('#dobDate').val()+"/"+$('#dobYear').val());	
			_this.isDate($('#finalDobDate').val());	
			$('#dobDate').change(function() {					
						$('#finalDobDate').val($('#dobMonth').val()+"/"+ $('#dobDate').val()+"/"+$('#dobYear').val());
						_this.isDate($('#finalDobDate').val());
				});
			$('#dobMonth').change(function() {		   
					$('#finalDobDate').val($('#dobMonth').val()+"/"+ $('#dobDate').val()+"/"+$('#dobYear').val());
						_this.isDate($('#finalDobDate').val());
				});
			$('#dobYear').change(function() {		   
				$('#finalDobDate').val($('#dobMonth').val()+"/"+ $('#dobDate').val()+"/"+$('#dobYear').val());
					_this.isDate($('#finalDobDate').val());
				});
	}	
 };
 
this.RegPageChkBoxConUS=function(){
	if ($('.registrationUS ').length) {		
		/*$('.registrationUS input:checkbox').click(function () {
			//if($(this).is(':checked')){
				$(this).parent().siblings().find('input').removeAttr('checked');
			//}
		});
		*/
		$('.registrationUS input#receiveInfo').click(function () {
			if($('.registrationUS input#receiveInfoOffers').is(':checked')){
				$('.registrationUS input#receiveInfoOffers').removeAttr('checked');
				$('.registrationUS input#receiveInfoOffers').next().removeClass('checkSelected');
				
			}
		});
		
		$('.registrationUS input#receiveInfoOffers').click(function () {
			if($('.registrationUS input#receiveInfo').is(':checked')){
				$('.registrationUS input#receiveInfo').removeAttr('checked');
				$('.registrationUS input#receiveInfo').next().removeClass('checkSelected');
			}
		});
		
	};
};
this.stopFormSubmitIfValidationFails=function(){
    if ($('.registrationContainerValidation').length) {
        var checkBoxValidation = false;
        if (_this.customChkBoxValidation() == true) {
            checkBoxValidation = true;
        }
        else {
            checkBoxValidation = false;
        }
		_this.guardianEmailValidation();
		_this.mobileNumberValidation();
		_this.getCityValidation();
		_this.AddressStateValidation();
	//	_this.swCaptchaValidation();
		//_this.sMSSubscriptionValidation();
		
		var dob=$('.dateSelection span.field-validation-error span').text();
		var privacy=$('.privacyTermsLi label.error').text();
		
		var guardianEmailMandatory=$('#guardianEmailLi span.field-validation-error span').text();
		//var guardianValidEmail=$('#guardianEmailLi label.emailValidation').text();
		//var guardianNotSameAsEmail=$('#guardianEmailLi label.guardianNotSameAsEmail').text();
		
		var guardianEmail=false; 
		
		if($('#guardianEmailLi').css('display')!="none") {
			if( guardianEmailMandatory==$('#guardianEmail').attr('data-val-required') || 
			!$('#guardianEmailLi label.emailValidation').hasClass('hidden') || 
			!$('#guardianEmailLi label.guardianNotSameAsEmail').hasClass('hidden') ) {
				var guardianEmail=true;
			}
		}
		else {
			guardianEmail=false; 
		}
		
		
 
		if( dob==$(".dateSelection").attr('data-val-valid') || privacy==$("#privacyTerms").attr('data-val-required') || guardianEmail  || checkBoxValidation) {
		
			return false;
		}
		else
		{
		return true;
		}
		
	}
	else if($('.updateDetailContainerValidation').length)
	{
		var customValidationFails =false;
		//@Jyoti
			if($('.passwordLi').css('display')=='none') {
				$('label.mandatoryPwd').addClass('hidden');
				$('#password').val("");
				customValidationFails =false;
			}
				else if($('#password').length && $('#password').val().length==0) {
				//else if($('#password').val().length==0) {
				$('label.mandatoryPwd').removeClass('hidden');
				customValidationFails=true;
			}
		
		var dob=$('.dateSelection span.field-validation-error span').text();
		/*
		var guardianEmail=false;
		if($('.guardianEmailLi').css('display')!="none") {
				if( $.trim($('#email').val()).toLowerCase() == $.trim($('#guardianEmail').val()).toLowerCase() ) {
						$('label.guardianNotSameAsEmail').removeClass('hidden');
						var guardianEmail=true;
				}
				else {
						$('label.guardianNotSameAsEmail').addClass('hidden');
						var guardianEmail=false;
				}
			}
		var checkBoxValidation=false;
		if(_this.customChkBoxValidation() == true){
			checkBoxValidation=true;
		}
		else{
			checkBoxValidation=false;
		}
	*/
	//	if( dob==$(".dateSelection").attr('data-val-valid') || guardianEmail || customValidationFails || checkBoxValidation ) {
		if( dob==$(".dateSelection").attr('data-val-valid') || customValidationFails) {
			return false;
		}
		else
		{
		return true;
		}
	}
	else
	{
		return true;
	}
};


this.mobileNumberValidation=function(){
	var mobileNumberError=true;
	//alert(mobileNumberError);	
	if($('#mobile').length > 0 )
	{
	if( $('#mobileNumberMandatory').val()==="true" && $('#mobile').val().length == 0){
		//show field is mandatory
		$('#optinChecked').show();		
	}
	else{
		$('#optinChecked').hide();
	}

	if($('#mobile').val().length > 0 && $('#mobile').val().match($('#mobileNumberFormatRegex').val()) == null)
		{
			mobileNumberError = false;
			$('#mobileNumberFormatErrorMsg').css('display','inline-block');
		}
		else
		{
			$('#mobileNumberFormatErrorMsg').css('display','none');		
		}
	}	
	return mobileNumberError;
};

this.getCityValidation=function(){


	var getCityError=true,
		$val=$('#citylatitude').val(),
		$rErrror=$('.errorCityService').data('valid'),
		$SrErrror=$('.errorCityService').data('service'),
		$citySearch=$('#citySearch').val();
		
if($('#citySearch').hasClass('required') && $citySearch.length > 0 && $('#citylatitude').length > 0)
{	
	if($val.length==0)
	{
		getCityError = false;
		$('.errorCityService').css('display','inline-block').text($rErrror);
		$("#loaderOverlay").hide();
	}
	else
	{
		$('.errorCityService').css('display','none');		
	}
	_this.focusOnError();
}	
	return getCityError;
};

this.sMSSubscriptionValidation=function(){
	if($('#mobile').length > 0 )
	{
	var sMSSubscription=true,
		$val=$('#mobile').val(),
		$rErrror=$('#mobileSMSSubscription').data('valid');
		
		if($val.length != 0 && (!$('input#mobileSMSSubscription').is(':checked'))){
			getCityError = false;			
			if($('.smsError').length==0){		
				$('#mobileSMSSubscription').next().after('<label class="error errorJump smsError">'+$rErrror+'</label>');			
			}
		return false;	
		}
		else
		{
			$('#mobileSMSSubscription').next().next().remove();		
		}
	_this.focusOnError();
	return sMSSubscription;
	}
return true;
}

this.AddressStateValidation=function(){
	var addressStateError=true;
	//alert(mobileNumberError);	
	if($('#regionSelector').length > 0 && $('#regionSelector').hasClass('required') )
	{
		if($('#regionSelector').val().length < 1)
		{
			addressStateError = false;
			$('#regionSelector').next().text($('#regionSelector').data('val-required')).addClass('field-validation-error errorJump');
			
		}
		else
		{
			$('#regionSelector').next().text('');		
		}
	}
	return addressStateError;
};

this.stateDropdownChange=function(){
	if($('#regionSelector').length > 0 && $('#regionSelector').hasClass('required'))
	{
		$('#regionSelector').change(function() {	
			if($('#regionSelector').val().length < 1)
			{
				addressStateError = false;
				$('#regionSelector').next().text($('#regionSelector').data('val-required')).addClass('field-validation-error errorJump');
			}
			else
			{
				$('#regionSelector').next().text('');		
			}	
		})
	}
};



this.guardianEmailValidation=function(){
	var guardianEmailError=false;
	$('label.guardianNotSameAsEmail').addClass('hidden');
	$('#guardianEmailLi label.emailValidation').addClass('hidden');
	$("#guardianEmailLi span.field-validation-error").remove();
		if($('#guardianEmailLi').data('isreregistration').toLowerCase()!='true'){
			
		if(!_this.checkEmail($("#guardianEmail").val())){
				
			if($.trim($('#guardianEmail').val()).length) {
				$("#guardianEmailLi span.field-validation-error").remove();
				$('#guardianEmailLi label.emailValidation').removeClass('hidden');
			}
			else{
				$('#guardianEmailLi label.emailValidation').addClass('hidden');
				$("#guardianEmailLi span.field-validation-error").remove();
				$("#guardianEmail").after('<span class="field-validation-error errorJump" ><span class="">'+$("#guardianEmail").attr('data-val-required')+'</span></span>');
					if($.trim($('#guardianEmail').val()).length) {
						$("#guardianEmailLi span.field-validation-error").remove();		
						
					}
			}
			guardianEmailError=true;
		}
		else{
			$('#guardianEmailLi label.emailValidation').addClass('hidden');
		}
	
	
	if(!guardianEmailError){	
		if($('.guardianEmailLi').css('display')!="none") {
			if( $.trim($('#email').val()).toLowerCase() == $.trim($('#guardianEmail').val()).toLowerCase() ) {
				$('label.guardianNotSameAsEmail').removeClass('hidden');
				guardianEmailError=true;
			}
			else {
				$('label.guardianNotSameAsEmail').addClass('hidden');
			}
		}
	}
	}
};
 
 this.chkUpdateDetailEmail=function(){	
	if( $.trim($('#newEmail').val()) == $.trim($('#CurrentEmailAddress').val()) ) {
			$('.passwordLi').hide();
		}
	else if( $.trim($('#newEmail').val()) != $.trim($('#CurrentEmailAddress').val()) ) {
			$('.passwordLi').show();
	}	
 }
 
this.regstrationValidation=function(){
		if($('.updateDetailContainerValidation').length) {
		$('.passwordLi').hide();
		_this.chkUpdateDetailEmail();
			//@Jyoti
			if( $.trim($('#newEmail').val()).length!=0 ) {
				$('#newEmail').keyup(function(){					
					_this.chkUpdateDetailEmail();
				});
			}
			//@Jyoti	
			if($('#password').length==0){
				$('#password').keyup(function(){
					if($('#password').val().length!=0) {
						$('label.mandatoryPwd').addClass('hidden');
					}
					else if($('.passwordLi').css('display')!='none' && $('#password').val().length==0) {
						$('label.mandatoryPwd').removeClass('hidden');
					}
				});
			}
		}
		
		$('#guardianEmail').keyup(function(){
			_this.guardianEmailValidation();
		});
		$('#mobile').keyup(function(){
			_this.mobileNumberValidation();
		});
		
		$('#mobileSMSSubscription').click(function () {
			var $val=$('#mobile').val(),
				$rErrror=$('#mobileSMSSubscription').data('valid');
				if (!$(this).attr('checked') && $val.length > 0 ) {
					if($('.smsError').length==0){
						$('#mobileSMSSubscription').next().after('<label class="error errorJump smsError">'+$rErrror+'</label>');					
						}					
				} else {
					$('#mobileSMSSubscription').next().next().remove();
				}
		});
	$('#registrationSubmitBtn').live('click',function(e){
		
		$('#finalDobDate').val($('#dobMonth').val()+"/"+ $('#dobDate').val()+"/"+$('#dobYear').val());
		
		//This is for negative testing for option and mobile number.
		if($('input#mobileSMSSubscription').length>0) {
			var mobileNumber=$('#mobile').val();
			if(mobileNumber.length == 0 && ($('input#mobileSMSSubscription').is(':checked'))){					
				$('#optinChecked').show();
				_this.focusOnError();
				return false;
			}
			else
			{
				$('#optinChecked').hide();			
			}
		
		};
	
		var isValid = false;
		if(!_this.stopFormSubmitIfValidationFails()) {
			
				isValid = false;
		}
		else {
			isValid = true;
		}
		var isFormValid = false;
		if ($('#NewUserRegistration').length) {
						isFormValid = _this.mobileNumberValidation();
						isFormValid = _this.getCityValidation() && isFormValid;
						isFormValid = _this.AddressStateValidation() && isFormValid;
					if($('input#mobileSMSSubscription').length){			
						isFormValid = _this.sMSSubscriptionValidation() && isFormValid;
					}
					if($('#sweetcapcha').length){
						isFormValid = _this.swCaptchaValidation() && isFormValid;
				}
						isFormValid = $('#NewUserRegistration').valid() && isFormValid;
						simpleCTag.registrationErrorTracking();
						
		}
		else if ($('#FBNewUserRegistration').length) {
						isFormValid = _this.mobileNumberValidation();
						isFormValid = _this.getCityValidation() && isFormValid;
						isFormValid = _this.AddressStateValidation() && isFormValid;
					if($('input#mobileSMSSubscription').length){
						isFormValid = _this.sMSSubscriptionValidation() && isFormValid;
					}
						isFormValid = $('#FBNewUserRegistration').valid() && isFormValid;
		}
		else if ($('#updatedetails').length) {
						isFormValid = _this.mobileNumberValidation();
						isFormValid = _this.getCityValidation() && isFormValid;
						isFormValid = _this.AddressStateValidation() && isFormValid;
					if($('input#mobileSMSSubscription').length){
						isFormValid = _this.sMSSubscriptionValidation() && isFormValid;
					}
						isFormValid = $('#updatedetails').valid() && isFormValid;
		}

		_this.focusOnError();
		isValid = isValid && isFormValid; 
		return isValid;
	});           
 };

this.focusOnError=function() {
	var count=1;
	$.each($('.errorJump'), function(key, val) {
		//console.log(val);
		if( $(val).parent('li').css('display')!='none' && $(val).css('display')!='none' && count ) {
			//console.log(val);
			$("html, body").scrollTop(
							$(val).offset().top
			);
			$(val).siblings('input').focus();
			//$(val).siblings('select:first').focus();
			count=0;
		}
	});
	count=1;
	$.each($('.nullCheck'), function(key, val) {
		//console.log(val);
		if( $(val).parent('li').css('display')!='none' && $(val).css('display')!='none' && count ) {
			//console.log(val);
			$("html, body").scrollTop(
							$(val).offset().top
			);
			$(val).siblings('input').focus();
			//$(val).siblings('select:first').focus();
			count=0;
		}
	});
	count=1;
	$.each($('.field-validation-error'), function(key, val) {
		//console.log(val);
		if( $(val).parent('li').css('display')!='none' && $(val).css('display')!='none' && count ) {
			//console.log(val);
			$("html, body").scrollTop(
							$(val).offset().top
			);
			$(val).siblings('input').focus();
			//$(val).siblings('select:first').focus();
			count=0;
		}
	});
	
	count=1;
	$.each($('.field-validation-error nullCheck errorJump'), function(key, val) {
		//console.log(val);
		if( $(val).parent('li').css('display')!='none' && $(val).css('display')!='none' && count ) {
			//console.log(val);
			$("html, body").scrollTop(
							$(val).offset().top
			);
			$(val).siblings('input').focus();
			//$(val).siblings('select:first').focus();
			count=0;
		}
	});
};

this.customChkBoxValidation=function(){
var error = false;	
		var getChkBox=$("form#NewUserRegistration input.chkRequired");		
		$('.error').remove();	
		getChkBox.each(function(i){
			var $this=$(this),
				errorMess=$this.attr('data-val-required');							
				if(!$this.is(':checked')){
				$this.next().after('<label class="error errorJump" >'+errorMess+'</label>');
				error = true;
				}		
		});
		if(_this.isDate($('#finalDobDate').val(),true) == false){
		error = true;
		}
		return error;
};
 
this.customChkBoxValidationOnClick=function(){
	if (!$(document).find('.newsletterFrm')){
		$(document).on('click','input#privacyTerms, input#receiveSubscription, input#receiveInfoOffers', function(){		

			if(!$(this).is(':checked')){
				$(this).next().next().remove();
				$(this).next().after('<label class="error errorJump" >'+$(this).attr('data-val-required')+'</label>');
			}
			if($(this).is(':checked')){
				$(this).next().next().remove();
			}
		});
	}
};

this.customChkBoxValidationOnButtonClick = function () {
                if (!$("input#privacyTerms").is(':checked')) {
                    $("input#privacyTerms").next().next().remove();
                    $("input#privacyTerms").next().after('<label class="error errorJump" >' + $("input#privacyTerms").attr('data-val-required') + '</label>');
                }
                if ($("input#privacyTerms").is(':checked')) {
                    $("input#privacyTerms").next().next().remove();
                }

            };

this.isDate = function(txtDate,showError)
{
  var currVal = txtDate;
	if(currVal == '' || currVal==undefined)
    return false;
  
  //Declare Regex  
  var rxDatePattern = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/; 
  var dtArray = currVal.match(rxDatePattern); // is format OK?
$(".dateSelection .field-validation-error").remove();
  if (dtArray == null){
if(showError == true){
	  $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">'+$(".dateSelection").attr('data-val-valid')+'</span></span>');
	  }
  return false;
}
 
  //Checks for mm/dd/yyyy format.
  dtDay= dtArray[3];
  dtMonth= dtArray[1];
  dtYear = dtArray[5];

  if (dtMonth < 1 || dtMonth > 12){
      if(showError == true){
	  $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">'+$(".dateSelection").attr('data-val-valid')+'</span></span>');
	  }
	  return false;
	  }
  else if (dtDay < 1 || dtDay> 31){
      if(showError == true){
	  $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">'+$(".dateSelection").attr('data-val-valid')+'</span></span>');
	  }
	  return false;
	  }
  else if ((dtMonth==4 || dtMonth==6 || dtMonth==9 || dtMonth==11) && dtDay ==31){
      if(showError == true){
	  $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">'+$(".dateSelection").attr('data-val-valid')+'</span></span>');
	  }
	  return false;
	  }
  else if (dtMonth == 2)
  {
     var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
     if (dtDay> 29 || (dtDay ==29 && !isleap)){
          if(showError == true){
	  $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">'+$(".dateSelection").attr('data-val-valid')+'</span></span>');
	  }
		  return false;
		  }
  }
    var age = _this.getAge(txtDate) ;
	var MinAgeLimit = parseInt($("#MinAgeLimit").val(), 10);
    var MaxAgeLimit = parseInt($("#MaxAgeLimit").val(), 10);
if(age<MinAgeLimit){
if($("#guardianEmailLi").length > 0 && $('#guardianEmailLi').data('isreregistration').toLowerCase()!='true'){
	$("#guardianEmailLi span.field-validation-error").remove();
	$("#guardianEmailLiHeading").hide();
	$("#guardianEmailLi").hide();
	}
	if(showError == true){
	$(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">'+$(".dateSelection").attr('data-val-agelimit')+'</span></span>');
	return false;
	}
}else if (($("#guardianEmailLi").length > 0 && $('#guardianEmailLi').data('isreregistration').toLowerCase()!='true') && (age<MaxAgeLimit && age>=MinAgeLimit)){ 	
	 
   $("#guardianEmailLi").show();
   $("#guardianEmailLiHeading").show();
   $("#guardianEmailLi span.field-validation-error").remove();
			if(showError == true && !_this.checkEmail($("#guardianEmail").val())){
			
				$("#guardianEmail").after('<span class="field-validation-error errorJump" ><span class="">'+$("#guardianEmail").attr('data-val-required')+'</span></span>');
				if($.trim($('#guardianEmail').val()).length) {
					$("#guardianEmailLi span.field-validation-error").remove();
				}
				$('#guardianEmailLi label.emailValidation').addClass('hidden');
			   return false;
			}
  }else{
  if($("#guardianEmailLi").length > 0 && $('#guardianEmailLi').data('isreregistration').toLowerCase()!='true'){
  $("#guardianEmailLi span.field-validation-error").remove();
   $("#guardianEmailLiHeading").hide();
  $("#guardianEmailLi").hide();
  }
  }
  return true;
};

this.getAge = function (birth) {
   var today = new Date();
   return calculateAge(birth, today);
   /*var curr_date = today.getDate();
   var curr_month = today.getMonth() + 1;
   var curr_year = today.getFullYear();

   var pieces = birth.split('/');
   var birth_date = pieces[1];
   var birth_month = pieces[0];
   var birth_year = pieces[2];

   if (curr_month == birth_month && curr_date > birth_date) return parseInt(curr_year-birth_year+1);
   if (curr_month == birth_month && curr_date == birth_date) return parseInt(curr_year-birth_year);
   if (curr_month == birth_month && curr_date < birth_date) return parseInt(curr_year-birth_year-1);
   if (curr_month > birth_month) return parseInt(curr_year-birth_year +1 );
   if (curr_month == birth_month) return parseInt(curr_year-birth_year);
   if (curr_month < birth_month) return parseInt(curr_year-birth_year-1);*/
};

function calculateAge (birthDate, otherDate) {

var sbirthDate=birthDate.split('/'),
	sMm=sbirthDate[0],
	sDd=sbirthDate[1],
	sYy=sbirthDate[2];
    birthDate = new Date(sYy,sMm-1,sDd,0,0,0,0);
    otherDate = new Date(otherDate);

    var years = (otherDate.getFullYear() - birthDate.getFullYear());

    if (otherDate.getMonth() < birthDate.getMonth() || 
        otherDate.getMonth() == birthDate.getMonth() && otherDate.getDate() < birthDate.getDate()) {
        years--;
    }

    return years;
}

this.checkEmail=function (email)
{   
    if(/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-zA-Z0-9]{1}[a-zA-Z0-9\-]{0,62}[a-zA-Z0-9]{1})|[a-zA-Z])\.)+[a-zA-Z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i.test(email)) {
      return true;
    } else {
      return false;
    }
};



 this.formatDate = function (tDate) {
        var month = tDate.getMonth() + 1;
        if (month < 10) month = "0" + month;
        var date = tDate.getDate();
        if (date < 10) date = "0" + date;
        var year = tDate.getFullYear();
	var tt = "AM",h =tDate.getHours();
	if(h == 12){tt="PM";h = 12;}
	else if(h > 12){tt="PM";h = h-12;}
	else if(h == 0){tt="AM";h = 12;}
//dd/MM/yyyy H:mm:ss tt
        return date +"/" + month + "/" + year + " " + h + ":" + tDate.getMinutes() + ":" + tDate.getSeconds() + " " + tt;
    };
	
	this.formatISODate = function (tDate) {
    	//1932-02-02T00:00:00
		mo = tDate.getMonth()+1;
		date = tDate.getDate();
		if (mo < 10) {mo = "0"+mo;}
		if (date < 10) {date = "0"+date;}
		hh = tDate.getHours();
		mm = tDate.getMinutes();
		ss = tDate.getSeconds();		
		if (hh < 10) {hh = "0"+hh;}
		if (mm < 10) {mm = "0"+mm;}
		if (ss < 10) {ss = "0"+ss;}

    return tDate.getFullYear() +"-" + mo + "-" + date + "T" + hh + ":" + mm + ":" + ss;
    };
this.isDateNewsletter = function (txtDate, showError) {
                var currVal = txtDate;
                if (currVal == '' || currVal == undefined)
                    return false;

                //Declare Regex  
                var rxDatePattern = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
                var dtArray = currVal.match(rxDatePattern); // is format OK?
                $(".dateSelection .field-validation-error").remove();
                //if (dtArray == null) {
                //  if (showError == true) {
                //   $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">' + $(".dateSelection").attr('data-val-valid') + '</span></span>');
                // }
                // return false;
                // }

                //Checks for mm/dd/yyyy format.
                if (dtArray == null){
                return false;	}
                dtDay = dtArray[1];
                dtMonth = dtArray[3];
                dtYear = dtArray[5];

                if (dtMonth < 1 || dtMonth > 12) {
                    if (showError == true) {
                        $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">' + $(".dateSelection").attr('data-val-valid') + '</span></span>');
                    }
                    return false;
                }
                else if (dtDay < 1 || dtDay > 31) {
                    if (showError == true) {
                        $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">' + $(".dateSelection").attr('data-val-valid') + '</span></span>');
                    }
                    return false;
                }
                else if ((dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) && dtDay == 31) {
                    if (showError == true) {
                        $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">' + $(".dateSelection").attr('data-val-valid') + '</span></span>');
                    }
                    return false;
                }
                else if (dtMonth == 2) {
                    var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
                    if (dtDay > 29 || (dtDay == 29 && !isleap)) {
                        if (showError == true) {
                            $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">' + $(".dateSelection").attr('data-val-valid') + '</span></span>');
                        }
                        return false;
                    }
                }

                return true;
            };
 			/*Contact us - USA*/
			
this.isDateContactUS = function(txtDate,showError)
{
  var currVal = txtDate;
	if(currVal == '' || currVal==undefined)
    return false;
  
  //Declare Regex  
  var rxDatePattern = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/; 
  var dtArray = currVal.match(rxDatePattern); // is format OK?
$(".dateSelection .field-validation-error").remove();
  if (dtArray == null){
if(showError == true){
	  $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">'+$(".dateSelection").attr('data-val-valid')+'</span></span>');
	  }
  return false;
}
 
  //Checks for mm/dd/yyyy format.
  dtDay= dtArray[1];
  dtMonth= dtArray[3];
  dtYear = dtArray[5];

  if (dtMonth < 1 || dtMonth > 12){
      if(showError == true){
	  $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">'+$(".dateSelection").attr('data-val-valid')+'</span></span>');
	  }
	  return false;
	  }
  else if (dtDay < 1 || dtDay> 31){
      if(showError == true){
	  $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">'+$(".dateSelection").attr('data-val-valid')+'</span></span>');
	  }
	  return false;
	  }
  else if ((dtMonth==4 || dtMonth==6 || dtMonth==9 || dtMonth==11) && dtDay ==31){
      if(showError == true){
	  $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">'+$(".dateSelection").attr('data-val-valid')+'</span></span>');
	  }
	  return false;
	  }
  else if (dtMonth == 2)
  {
     var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
     if (dtDay> 29 || (dtDay ==29 && !isleap)){
          if(showError == true){
	  $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">'+$(".dateSelection").attr('data-val-valid')+'</span></span>');
	  }
		  return false;
		  }
  }
    var age = _this.getAge(txtDate) ;

	if($("#contactregion").val().toLowerCase() == "me"){
		if(age<18){
		   $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">'+$(".dateSelection").attr('data-val-age-above18')+'</span></span>');
		 return false;
		 }
	}else{
		 if(age<13){
		  $(".dateSelection").append('<span class="field-validation-error errorJump" ><span class="">'+$(".dateSelection").attr('data-val-age-above13')+'</span></span>');
		 return false;
		 }
 	}
	
	  
  return true;
};

this.finalDOBvalueForContact=function(){
	$('#finalDobDate').val($('#dobDate').val()+"/"+ $('#dobMonth').val()+"/"+$('#dobYear').val());	
	$('#contactregion').dropkick({
		change: function () {	
        $('#contactregion').parent().find(".field-validation-error").remove();
		if($('#contactregion').val() == ""){
		$('#contactregion').parent().append('<span class="field-validation-error errorJump" ><span class="">'+$("#contactregion").attr('data-val-required')+'</span></span>');		
		}		
				_this.isDateContactUS($('#finalDobDate').val(),true);
		}
	});	
	
	$('#dobDate').dropkick({
		change: function () {					
				$('#finalDobDate').val($('#dobDate').val()+"/"+ $('#dobMonth').val()+"/"+$('#dobYear').val());
				_this.isDateContactUS($('#finalDobDate').val(),true);
		}
	});
	$('#dobMonth').dropkick({
		change: function () {		   
			$('#finalDobDate').val($('#dobDate').val()+"/"+ $('#dobMonth').val()+"/"+$('#dobYear').val());
				_this.isDateContactUS($('#finalDobDate').val(),true);
		}
	});
	$('#dobYear').dropkick({
		change: function () {		   
		$('#finalDobDate').val($('#dobDate').val()+"/"+ $('#dobMonth').val()+"/"+$('#dobYear').val());
			_this.isDateContactUS($('#finalDobDate').val(),true);
		}
	});	
	
 };
 
 this.usregionDd=function(){	
	if($('#contactUs-US').length) {		
		$('#regionDd').dropkick({
				change: function (value, label) {
				if($('#contact_region').val()=="")
				$('#contact_region').val('Select');
				else
				{
					$('#contact_region').val('value');
				}
				$('#regionDd').parent().find(".field-validation-error").remove();
				if($('#regionDd').val() == "" || $('#regionDd').val()=="Select"){
					$('#regionDd').parent().append('<span class="field-validation-error errorJump" ><span class="">'+$("#regionDd").attr('data-val-required')+'</span></span>');		
				}
				else{
				$('#regionDd').parent().find(".field-validation-error").remove();
				}
			}	
		});
	}
 }
 
this.ContactUsValidation=function(){
		$('#OptInTrueForBrand').click(function(){					                 
					$('#OptInTrueForCorporate').removeClass('checkSelected').removeAttr('checked'); 
					$(this).addClass('checkSelected');
					$('#OptInTrueForCorporate').next().removeClass('checkSelected');
                });
			$('#OptInTrueForCorporate').click(function(){
					$('#OptInTrueForBrand').removeClass('checkSelected').removeAttr('checked');
					$(this).addClass('checkSelected');
					$('#OptInTrueForBrand').next().removeClass('checkSelected');
			});
		$('#contactUsBtn').live('click',function(e){
		$('#contactregion').parent().find(".field-validation-error").remove();
		if($('#contactregion').val() == ""){
		$('#contactregion').parent().append('<span class="field-validation-error errorJump" ><span class="">'+$("#contactregion").attr('data-val-required')+'</span></span>');		
		}
		
		if($('#contactUs-US').length) {		
			if($('#regionDd').val() == ""){
				$('#regionDd').parent().find(".field-validation-error").remove();
				$('#regionDd').parent().append('<span class="field-validation-error errorJump" ><span class="">'+$("#regionDd").attr('data-val-required')+'</span></span>');		
			}
			else{
				$('#regionDd').parent().find(".field-validation-error").remove();
			}
		};
		if($('#contactUs-US').length>0){
				$('#InquiryType').parent().find(".field-validation-error").remove();
				if($('#contactUs_inquiryType').val()=="")
				$('#contactUs_inquiryType').val('Select');
				else{
				   try{
						$('#contactUs_inquiryType').val()=$('#InquiryType').val();
					}
					catch(err){}
				}
				if($('#contactUs_upcCodeDetail').val()=="")
				$('#contactUs_upcCodeDetail').val('Select');
				else{
				   try{
						$('#contactUs_upcCodeDetail').val()=$('#UpcDetails').val();
					}
					catch(err){}
				}
				
				if($('#contactUs_manufacturingCodeDetail').val()=="")
				$('#contactUs_manufacturingCodeDetail').val('Select');
				else{
				   try{
						$('#contactUs_manufacturingCodeDetail').val()=$('#ManufacturingCodeDetails').val();
					}
					catch(err){}
				}
				
				if($('#InquiryType').val() == 'select' || $('#InquiryType').val() == 'Select' || $('#InquiryType').val() == '')
				$('#InquiryType').parent().append('<span class="field-validation-error errorJump" ><span class="">'+$("#InquiryType").attr('data-val-required')+'</span></span>');	
			
		}
		
		
			if(_this.isDateContactUS($('#finalDobDate').val(),true) == false){
			$("#customValidation").val("");
			}else{
			$("#customValidation").val("true");
			}
			if($('#sweetcapcha').length){
				var chkSweetCaptcha=_this.swCaptchaValidation();
				if(chkSweetCaptcha==false){
					return false;
				}
			};
				
			_this.focusOnError();
		});		
	
 };

this.ContactUsUkValidation=function(){
	if($('#contactUs-uk').length) {
		$('li.expiredDate,li.datePurchased,li.manufacturingDate,li.storeName,li.townPurchased,li.ContactUsUPC,li.products,li.ContactUsSize').hide();
		
		$('#contactUsBtn').live('click',function(e){
			if($('#sweetcapcha').length){			
					var chkSweetCaptcha=_this.swCaptchaValidation();
					if(chkSweetCaptcha==false){
						return false;
					}
				};
		});
		
		$('#contacttype').dropkick({
                        change: function (value, label) {
                            $('#contacttype').parent().find(".field-validation-error").remove();
                            if ($('#contacttype').val() == "") {
                                $('#contacttype').parent().append('<span class="field-validation-error" ><span class="">' + $("#contacttype").attr('data-val-required') + '</span></span>');
                            }
                            //_this.isDateContactUS($('#finalDobDate').val(),true);
                            if (value == "Complaint") {
                                $('li.expiredDate,li.datePurchased,li.manufacturingDate,li.storeName,li.townPurchased,li.ContactUsUPC,li.products,li.ContactUsSize').show();
                                $('#products').parent().find(".field-validation-error").remove();
                                if ($('#products').val() == "") {
                                    $('#products').parent().append('<span class="field-validation-error" ><span class="">' + $("#products").attr('data-val-required') + '</span></span>');
                                }
                            }
                            else if (value == "") {
                                $('li.expiredDate,li.datePurchased,li.manufacturingDate,li.storeName,li.townPurchased,li.ContactUsUPC,li.products,li.ContactUsSize').hide();
                            }
                            else {
                                $('li.expiredDate,li.datePurchased,li.manufacturingDate,li.storeName,li.townPurchased').hide();
                                $('li.ContactUsUPC,li.products,li.ContactUsSize').show();
                                $('#products').parent().find(".field-validation-error").remove();
                                if ($('#products').val() == "") {
                                    $('#products').parent().append('<span class="field-validation-error" ><span class="">' + $("#products").attr('data-val-required') + '</span></span>');
                                }
                            }
                        }
                    });
		    
		    $('#products').dropkick({
                        change: function (value, label) {
			$('#products').parent().find(".field-validation-error").remove();
                                if ($('#products').val() == "") {
                                    $('#products').parent().append('<span class="field-validation-error" ><span class="">' + $("#products").attr('data-val-required') + '</span></span>');
                                }
			}
                    });

		var value=$('#contacttype').val();
		if(value=="Complaint") {
			$('li.expiredDate,li.datePurchased,li.manufacturingDate,li.storeName,li.townPurchased,li.ContactUsUPC,li.products,li.ContactUsSize').show();
		}
		else if (value == "") {
			$('li.expiredDate,li.datePurchased,li.manufacturingDate,li.storeName,li.townPurchased,li.ContactUsUPC,li.products,li.ContactUsSize').hide();
		}
		else {
			$('li.expiredDate,li.datePurchased,li.manufacturingDate,li.storeName,li.townPurchased').hide();
			$('li.ContactUsUPC,li.products,li.ContactUsSize').show();
		}
		_this.customChkBoxValidationOnClick();	
		$('#contactUsBtn').live('click',function(e){
			_this.inquiryTypeValidation();
			_this.customChkBoxValidationOnButtonClick();
		$('#contacttype').parent().find(".field-validation-error").remove();
		if($('#contacttype').val() == ""){
		$('#contacttype').parent().append('<span class="field-validation-error errorJump" ><span class="">'+$("#contacttype").attr('data-val-required')+'</span></span>');		
		}		
					
		});		
	}
 };
 
 this.vipThanks=function(){
	if($('.vipThanks').length) {
		$('.vipLogin').css('height','auto');
	}
 };
 
 this.reviewModeration=function(){
	if($('.reviewModeration').length) {
		var moderationDataHtml='';
		$.ajax({
			dataType: 'JSON',
			url: '/resources/js/reviewModeration.json',
			success: function (response) {
				var moderationDataHtml='', approvedORrejectedClass;
				$.each( response['moderationData'], function(k,v) {
					if(v['ReviewApproved']) {
						approvedORrejectedClass="approved";
					}
					else {
						approvedORrejectedClass="rejected";
					}
					moderationDataHtml+='<tr class="'+approvedORrejectedClass+'">\
											<td><input class="review" type="radio" id="'+v['$id']+'" name="selectReview"></td>\
											<td>'+v['ItemId']+'</td>\
											<td>'+v['ItemType']+'</td>\
											<td>'+v['UserId']+'</td>\
											<td class="reviewTitle'+v['$id']+' hidden">'+v['ReviewTitle']+'</td>\
											<td class="reviewComment'+v['$id']+' hidden">'+v['ReviewComment']+'</td>\
										</tr>';
					
				});
			
				
				$('.moderationData').append(moderationDataHtml);
			},
			error: function (jqXHR, textStatus, errorThrown) {
				return false;
			},
			complete: function (jqXHR, textStatus) {
				$('.approved').hide();
			}
		});
		
		$('input[type=radio].review').live('click', function(){
			var reviewID=$(this).attr('id');
			$('.reviewForm input#reviewTitle').val($('.reviewTitle'+reviewID).html());
			$('.reviewForm textarea#reviewComments').val($('.reviewComment'+reviewID).html());
			$('.reviewForm').removeClass('hidden');
		});
		
		$('input[type=radio].dataFilter').click(function(){
			if($(this).attr('id')=="showRejectedData") {
				$('.approved').hide();
				$('.rejected').show();
			} else if($(this).attr('id')=="showApprovedData") {
				$('.approved').show();
				$('.rejected').hide();
			}
		});
		
		$('.roundedButton').click(function(){
			if($( ".reviewForm input:checked" ).length && $('.reviewForm input#reviewTitle').val().length && $('.reviewForm textarea#reviewComments').val().length) {
				$('#reviewModeration').submit();
			}
		});
	}
 };
 
  
	this.setCommentBoxData=function (e){
                var inputText = $(e.target).val().substring(0, 499);
                $(e.target).val(inputText)
                //$(e.target).unbind('keyup');
	};
 
	this.formFocus=function(){
		if($('form.formFocus').length > 0) {
			$('form.formFocus input:visible:first').focus();
		 }
	 };
 
	this.toolTip=function(){
		 $(".help-icon").mouseenter(function(){
				$(this).next().show();
		}).mouseleave(function(){
				$(this).next().hide();
	});		
		
	};
this.inquiryTypeValidation=function(){
    var upcCode = '#contactUs_upcCode', upcDetailsID = '#UpcDetails', upcDetailsClass = '.upcDetails', manfCode = '#contactUs_manufacturingCode', manfDetailsID = '#ManufacturingCodeDetails', manfDetailsClass = '.manufacturingCodeDetails', fieldValError = '.field-validation-error'; 
    
    if($(upcDetailsID).parents(upcDetailsClass).find(fieldValError).length || $(manfDetailsID).parents(manfDetailsClass).find(fieldValError).length || $(upcCode).parent().find(fieldValError).length || $(manfCode).parent().find(fieldValError).length){
      return false;
    } else {
      return true;
    }
  };

this.InquiryType=function(){
		var inqTyp = '#InquiryType', fieldValError = '.field-validation-error', upcCode = '#contactUs_upcCode', upcDetailsID = '#UpcDetails', upcDetailsClass = '.upcDetails', upcDetailsLbl = 'li.upcDetails label', upcCodeLbl = 'li.upcCode label', upcDtlLblSpan = 'li.upcDetails label span.astrik', upcCodeLblSpan = 'li.upcCode label span.astrik', manfCode = '#contactUs_manufacturingCode', manfDetailsID = '#ManufacturingCodeDetails', manfDetailsClass = '.manufacturingCodeDetails', manfDtlLbl = 'li.manufacturingCodeDetails label', manfDtlLblSpan = 'li.manufacturingCodeDetails label span.astrik', manfCodeLblSpan = 'li.manufacturingCode label span.astrik', manfCodeLbl = 'li.manufacturingCode label',contactUs_upcCodeDetailValue = '',contactUs_manufacturingCodeDetailsValue = '';

		$(inqTyp).dropkick({change: function (value, label) {
			$('#contactUs_inquiryType').val(value);
			if($('#contactUs_upcCodeDetail').val()=="")
			$('#contactUs_upcCodeDetail').val('Select');
			if($('#contactUs_manufacturingCodeDetail').val()=="")
			$('#contactUs_manufacturingCodeDetail').val('Select');
			//$(inqTyp).parent().find(fieldValError).remove();
			if(value == "pc"){
				$(inqTyp).parent().find(fieldValError).remove();
				if($(upcDetailsID).val() == "" || $(upcDetailsID).val()=="Select"){
					if($(upcDetailsID).parents(upcDetailsClass).find(".field-validation-error").length <= 0)
					$(upcDetailsID).parents(upcDetailsClass).append('<span class="field-validation-error errorJump" ><span class="">' + $(upcDetailsID).attr('data-val-required') + '</span></span>');
				} else if ($(upcDetailsID).val() == "Full"){
				
					$(upcDetailsID).parents(upcDetailsClass).find(fieldValError).remove();
					$(upcCodeLblSpan).remove();
					$(upcCodeLbl).append('<span class="astrik">*</span>');
					if($(upcCode).parent().find(".nullCheck").length <= 0 && $(upcCode).val() == "" && $(upcCode).parent().find(".field-validation-error").length <= 0)
					$(upcCode).parent().append('<span class="field-validation-error nullCheck errorJump" ><span class="">' + '</span>Please fill out this field.</span>');	
				} else {					
					$(upcDetailsID).parents(upcDetailsClass).find(fieldValError).remove();
					$(upcCodeLblSpan).remove();
				}
				if($(manfDetailsID).val() == "" || $(manfDetailsID).val() == "Select"){
					if($(manfDetailsID).parents(manfDetailsClass).find(".field-validation-error").length <= 0)
					$(manfDetailsID).parents(manfDetailsClass).append('<span class="field-validation-error errorJump" ><span class="">' + $(manfDetailsID).attr('data-val-required') + '</span></span>');
				} else if($(manfDetailsID).val() == "Full" || $(manfDetailsID).val() == "Partial"){
					$(manfDetailsID).parents(manfDetailsClass).find(fieldValError).remove();
					$(manfCodeLblSpan).remove();
					$(manfCodeLbl).append('<span class="astrik">*</span>');
					if($(manfCode).parent().find(".nullCheck").length <= 0 && $(manfCode).val() == "")
					$(manfCode).parent().append('<span class="field-validation-error nullCheck errorJump" ><span class="">' + '</span>Please fill out this field.</span>');
				}else{
					$(manfDetailsID).parents(manfDetailsClass).find(fieldValError).remove();					
					$(manfCodeLblSpan).remove();
				}
				if($(upcDetailsLbl).find(".astrik").length <= 0)
				$(upcDetailsLbl).append('<span class="astrik">*</span>');
				if($(manfDtlLbl).find(".astrik").length <= 0)
				$(manfDtlLbl).append('<span class="astrik">*</span>');								
			} else if (value == "pq"){
				$(inqTyp).parent().find(fieldValError).remove();
				$(upcCode).parent().find(".nullCheck").remove();
				$(manfCode).parent().find(".nullCheck").remove();
				$(upcDtlLblSpan).remove();
				$(upcDetailsID).parents(upcDetailsClass).find(fieldValError).remove();
				$(upcCodeLblSpan).remove();				
				$(manfDtlLblSpan).remove();
				$(manfDetailsID).parents(manfDetailsClass).find(fieldValError).remove();
				$(manfCodeLblSpan).remove();
			} else {
				$(upcCode).parent().find(".nullCheck").remove();
				$(manfCode).parent().find(".nullCheck").remove();
				$(upcDtlLblSpan).remove();
				$(upcDetailsID).parents(upcDetailsClass).find(fieldValError).remove();
				$(upcCodeLblSpan).remove();
				$(manfDtlLblSpan).remove();
				$(manfDetailsID).parents(manfDetailsClass).find(fieldValError).remove();
				$(manfCodeLblSpan).remove();
				$(inqTyp).parent().append('<span class="field-validation-error errorJump"><span class="">' + $(inqTyp).attr('data-val-required') + '</span></span>');
			}
		}});
			
		$(upcDetailsID).dropkick({change: function (value, label) {
			contactUs_upcCodeDetailValue = value;
		$('#contactUs_upcCodeDetail').val(value);
			if($(inqTyp).val() == "pc"){
				if(value == "Full"){
					$(upcCodeLblSpan).remove();
					$(upcDetailsID).parents(upcDetailsClass).find(fieldValError).remove();
					$(upcCodeLbl).append('<span class="astrik">*</span>');
					if($(upcCode).parent().find(".nullCheck").length <= 0 && $(upcCode).val() == "" && $(upcCode).parent().find(".field-validation-error").length <= 0)
					$(upcCode).parent().append('<span class="field-validation-error nullCheck errorJump" ><span class="">' + '</span>Please fill out this field.</span>');
				} else if(value == "Not Available") {
					$(upcCode).parent().find(".nullCheck").remove();
					if($(upcCode).parent().find('.field-validation-error').length > 0)
						$(upcCode).parent().find('.field-validation-error').remove();
					$(upcDetailsID).parents(upcDetailsClass).find(fieldValError).remove();
					$(upcCodeLblSpan).remove();
				} else {
					$(upcCode).parent().find(".nullCheck").remove();
					if($(upcCode).parent().find('.field-validation-error').length > 0)
						$(upcCode).parent().find('.field-validation-error').remove();
					$(upcDetailsID).parent().append('<span class="field-validation-error errorJump" ><span class="">' + $(upcDetailsID).attr('data-val-required') + '</span></span>');
					$(upcCodeLblSpan).remove();
				}
			} 
		}});
		
		$('input#contactUs_upcCode').keyup(function() {
			var $th = $(this);
			var fieldValError = '.field-validation-error nullCheck errorJump';
			if($th.val().match(/[^\d]/gi) != null){
				$th.val( $th.val().replace(/[^\d]/gi, ''));
			}
			if($th.val().length > 0){
				if($th.parents('#UpcCode').find('.field-validation-error').length > 0)
					$th.parents('#UpcCode').find('.field-validation-error').remove();
				
			}
			else{
				if($(inqTyp).val() == "pc"){
					if(contactUs_upcCodeDetailValue == "Full"){
						$(upcCodeLblSpan).remove();
						$(upcCodeLbl).append('<span class="astrik">*</span>');
						if($(upcCode).parent().find(".nullCheck").length <= 0 && $(upcCode).val() == "" && $(upcCode).parent().find(".field-validation-error").length <= 0)
						$(upcCode).parent().append('<span class="field-validation-error nullCheck errorJump" ><span class="">' + '</span>Please fill out this field.</span>');
					} else if(contactUs_upcCodeDetailValue == "Not Available") {
						$(upcCode).parent().find(".nullCheck").remove();
						$(upcDetailsID).parents(upcDetailsClass).find(fieldValError).remove();
						$(upcCodeLblSpan).remove();
					} else {
						$(upcCode).parent().find(".nullCheck").remove();
						$(upcCodeLblSpan).remove();
					}
				}
			}
		});
			
		$(manfDetailsID).dropkick({change: function (value, label) {
		contactUs_manufacturingCodeDetailsValue = value;
		$('#contactUs_manufacturingCodeDetail').val(value);
			if($(inqTyp).val() == "pc"){
				if(value == "Full" || value =="Partial"){
					$(manfCodeLblSpan).remove();
					if($(manfCode).parent().find('.field-validation-error').length > 0)
						$(manfCode).parent().find('.field-validation-error').remove();
					$(manfDetailsID).parents(manfDetailsClass).find(fieldValError).remove();
					$(manfCodeLbl).append('<span class="astrik">*</span>');
					if($(manfCode).parent().find(".nullCheck").length <= 0 && $(manfCode).val() == "")
					$(manfCode).parent().append('<span class="field-validation-error nullCheck errorJump" ><span class="">'+ '</span>Please fill out this field.</span>');	
				} else if(value == "Not Legible" || value == "Not Available") {
					$(manfCode).parent().find(".nullCheck").remove();
					if($(manfCode).parent().find('.field-validation-error').length > 0)
						$(manfCode).parent().find('.field-validation-error').remove();
					$(manfDetailsID).parents(manfDetailsClass).find(fieldValError).remove();
					$(manfCodeLblSpan).remove();
				} else {
					$(manfCode).parent().find(".nullCheck").remove();
					if($(manfCode).parent().find('.field-validation-error').length > 0)
						$(manfCode).parent().find('.field-validation-error').remove();
					$(manfDetailsID).parent().append('<span class="field-validation-error errorJump" ><span class="">' + $(manfDetailsID).attr('data-val-required') + '</span></span>');
					$(manfCodeLblSpan).remove();
				}
			} 
		}});

		
		$('input#contactUs_manufacturingCode').keyup(function() {
			var $th = $(this);
			var fieldValError = '.field-validation-error';
			
			
			if($th.val().length > 0){
				if($th.parents('.manufacturingCode').find('.field-validation-error').length > 0)
					$th.parents('.manufacturingCode').find('.field-validation-error').remove();
				
			}
			else{
				if($(inqTyp).val() == "pc"){
					if(contactUs_manufacturingCodeDetailsValue == "Full" || contactUs_manufacturingCodeDetailsValue =="Partial"){
						$(manfCodeLblSpan).remove();
						$(manfDetailsID).parents(manfDetailsClass).find(fieldValError).remove();
						$(manfCodeLbl).append('<span class="astrik">*</span>');
						if($(manfCode).parent().find(".nullCheck").length <= 0 && $(manfCode).val() == "")
						$(manfCode).parent().append('<span class="field-validation-error nullCheck errorJump" ><span class="">'+ '</span>Please fill out this field.</span>');	
					} else if(contactUs_manufacturingCodeDetailsValue == "Not Legible" || contactUs_manufacturingCodeDetailsValue == "Not Available") {
						$(manfCode).parent().find(".nullCheck").remove();
						$(manfDetailsID).parents(manfDetailsClass).find(fieldValError).remove();
						$(manfCodeLblSpan).remove();
					} else {
						$(manfCode).parent().find(".nullCheck").remove();
						$(manfCodeLblSpan).remove();
					}
				} 
			}
			
			
		});
		
	};
		

	this.validZip=function(){
		$('input#contact_postalCode').keyup(function() {
			var $th = $(this);
				if($th.val().match(/[^-\d]/gi) != null){
					$th.val( $th.val().replace(/[^-\d]/gi, ''));
				}
		});
		$('input#contactUs_upcCode').keyup(function() {
			var $th = $(this);
			if($th.val().match(/[^\d]/gi) != null){
				$th.val( $th.val().replace(/[^\d]/gi, ''));
			}
		});
	};
	
	
	
	
	
	this.searchCity=function(){
		if($('.citySearch').length > 0) {
			//get user enter city name and send request to backend
			//$('#citySearchBtn').live("click", function(){
			$(document).on("click", "#citySearchBtn", function() {
				var $this=$(this),
					$val=$('.citySearch').val(),
					$dText=$('.citySearch').attr('data-placeholder'),				
					$val=$('.citySearch').val(),
					$rErrror=$('.errorCityService').data('valid');
					$srErrror=$('.errorCityService').data('service');	
				if($val.match(/^[\d+]|[\w+]|[ ]$/) != null && $val.length > 2 && $val != $dText){
					$('.errorCity').hide();
					_this.getCity($this);
				}else{
					$('.errorCityService').show().text($rErrror);
					$("#loaderOverlay").hide();
					return false
				}					
			});	

			$('#citySearch').live("keypress", function(e){
			//$('#citySearch').keypress(function(e){				
				if (e.which == 13){
					e.preventDefault();
					$("#citySearchBtn").focus();
					$('#citySearchBtn').click();
				}	
			});

			$(document).on("click", "#cityChangeLocation", function() {					
					var cBtnTxt=$('#cityChangeLocation').attr('data-locationText');
						$('#citylatitude, #citylongitude, #cityName').val('');					
						$('#citySearch').val('').removeAttr('readonly').removeClass("disabled");
						$('#cityChangeLocation').val(cBtnTxt).attr('id',"citySearchBtn");								
					});	
			
			
			
		}
	};
	
	
	
	this.getCity=function(btn){
		var $this=btn,
			getFeild=$('#citySearch'),
			getUserVal=$(getFeild).val(),
		//	$data='',
			$rErrror=$('.errorCityService').data('valid'),
			$srErrror=$('.errorCityService').data('service'),
			getCitiesUrl=MODULE.config.getCities+getUserVal;
			$("#loaderOverlay").show();
			//getCitiesUrl=$this.attr('data-getCities');
				$.ajax({				
					dataType: 'json',
					cache: false,
					url: getCitiesUrl,
					success: function (data,status ) {
						$("#loaderOverlay").hide();
						if(data===null){							
							$('.errorCityService').show().text($rErrror);
							$("#loaderOverlay").hide();
							return false;
						}else{
						_this.validateTimeOut(); //for session time out							
							$cdata=data;							
						var	$container=$('.citySuggestion');						
							
							if ( $('.citySuggestion').children('div').length > 0 ) {
								$('.jspPane').html('');
							}else{
								$container.html('');
							}
							
							$.each($cdata, function (i, item) {
								var rcity =($cdata[i].City.length > 0 ? $cdata[i].City : ""),
								rRegion = ($cdata[i].Region.length > 0 ? ", " + $cdata[i].Region : ""),
								rCountry =($cdata[i].Country.length > 0 ? ", " + $cdata[i].Country : "")
							
								var $cList = $("<li>"+rcity+rRegion+rCountry+"</li>" );
								//$container.append($cList).show();
									
									if ( $('.citySuggestion').children('div').length > 0 ) {
										$('.citySuggestion .jspPane').append($cList);
										$('.suggestionContainer').show();
										
											
									}else{
											$container.append($cList);
											$('.suggestionContainer').show();
									}
									
							});
							$('.citySuggestion li:last-child').css('padding-bottom','18px');							
							_this.customScrollBar();
						}
					},
					statusCode: {
						0: function() {		
							$('.errorCityService').show().text($srErrror);
							$("#loaderOverlay").hide();
							_this.validateTimeOut();
							}
					},
					error: function (jqXHR, exception) {							
							$('.errorCityService').show().text($srErrror);
							$("#loaderOverlay").hide();
							_this.validateTimeOut();
						} 

					
				});
		
				$('ul.citySuggestion').on("click", 'li', function () {				
					var $selectedIndex=$(this).index(),
						$selectedCity=$(this).text(),
						$search=$('#citySearch'),
						$container=$('.citySuggestion');

						$search.val($selectedCity).attr("readonly", "readonly").addClass("disabled");				
						//$container.hide();
						$('.suggestionContainer').hide();
						if($('.skincareTips').length > 0) {	
								myHub.getWeatherInformation($cdata,$selectedIndex)
								$('.weatherCon').show();
								$('#changeLocationCon').hide();
						}
						if($('.registrationContainer').length > 0) {
							var getLat=$cdata[$selectedIndex].Latitude,
								getlog=$cdata[$selectedIndex].Longitude,
								getCityName=$cdata[$selectedIndex].City,
								cBtnTxt=$('#citySearchBtn').attr('data-changeText');
									$('#citylatitude').val(getLat);
									$('#citylongitude').val(getlog);
									$('#cityName').val(getCityName);
							$('#citySearchBtn').val(cBtnTxt).attr('id',"cityChangeLocation");
							
						}
				});
						
				$('.suggestionContainer').on("click", 'a.closeButton', function () {
					$('.suggestionContainer').hide();
					$('#citySearch').val('');
				});	
					
	};
	
	this.customScrollBar=function(){
	$('.citySuggestion').jScrollPane({showArrows: true, autoReinitialise : true, verticalDragMaxHeight: 40});
	
		
	};

	
	this.shareThisControl=function(shareMedia){	
		var $media=shareMedia,
			$articalID=$('#ArticalId').val(),
			$pageUrl=window.location.href;
		
		$.ajax({
				url: MODULE.config.shareFunPath+$articalID,
				type: "POST",
				data: {articalId:$articalID,media:$media,pageUrl:$pageUrl},
				success: function (response) {				
				},
				error: function (jqXHR, textStatus, errorThrown) {
					return false;
				}
				
			});		
	};
	
	
	
	//This is for Mac 
	this.macCss=function(){
		if(navigator.userAgent.indexOf('Mac') > 0) 
		$('body').addClass('mac-os');
		
		if(navigator.userAgent.indexOf('Mac') > 0 && navigator.userAgent.indexOf('Firefox') > 0)  {		
				//$('body').addClass('mac-os-FF');		
				if(navigator.userAgent.indexOf('Firefox/12.0') > 0) {
					$('body').addClass('mac-os-FF');					
				}
				else if(navigator.userAgent.indexOf('Firefox/20.0') > 0 || navigator.userAgent.indexOf('Firefox/21.0') > 0) {
					$('body').addClass('mac-os-FF-20');					
				}
				else {
					$('body').addClass('mac-os-FF');					
				}
		}		
	};
	
	//This is for BackToTop
	this.backToTop=function(){
		if ($('.backToTop').length > 0) {		
			$('.backToTop').click(function(){
				$('html, body').animate({ scrollTop: 0 }, 600);
				return false;
			});
		}
	};
	
	//This is for Android2.3 form element alignment.	
	this.androidNote=function () {
		if($('.accountMgmt').length>0){		
			if (window.navigator.userAgent.match(/android 2.3/i))
			{	
				$('#rememberMe').addClass('androidRM');	
				$('#optInYes').addClass('androidOptinYes');	
				$('#optInNo').addClass('androidOptinNo');	
				$('#receiveInfo').addClass('androidReceiveInfo');	
				$('#receiveInfoOffers').addClass('androidReceiveInfoOffers');						
				$('#mobileSMSSubscription').addClass('androidMobileSMSSubscription');
				$('#privacyTerms').addClass('androidPrivacyTerms');
			}		
		}
	};
	
	//This for IPAD viewport 	
	this.setScalableViewport=function(){ 
		if (navigator.userAgent.match(/iPad/i)) { 	   		
			switch (window.orientation) {
				case 0: //portrait
				  //set the viewport attributes to whatever you want! 
					$('meta[name=viewport]').attr('content','width=1102, user-scalable=yes, initial-scale=.5, maximum-scale=0.7, minimum-scale=0.7');
				break;
				case 90: case -90: //landscape
					$('meta[name=viewport]').attr('content','width=768, user-scalable=yes, initial-scale=.5, maximum-scale=0.7, minimum-scale=0.7');
				break;
				 default:
					$('meta[name=viewport]').attr('content','width=1102, user-scalable=yes, initial-scale=.5, maximum-scale=0.7, minimum-scale=0.7');
				break;  
				
			}
		}
	};
	
//****************Container Tagging JS***************
//This is for CTlike		
	this.CTlike=function() {
		function customGATaggingLike(ev) {	
//alert(ev.type);
//alert(ev.data.service);	
			switch (ev.type) {
				case "addthis.menu.open":				
					break;
				case "addthis.menu.close":
					break;
				case "addthis.menu.share":				
					if (ev.data.service =='tweet') {
						UDM.evq.push(['trackEvent', 'Referral', 'Tweet']);
					}
					else if (ev.data.service =='facebook_like'){
						UDM.evq.push(['trackEvent', 'Referral', 'Like']);
					}
					else if (ev.data.service =='google_plusone'){		
						UDM.evq.push(['trackEvent', 'Referral', 'Share', 'Google Plus']);
					}
					break;
				default:
			}
		}
		if ($(".socialMedia").length > 0) {
			addthis.addEventListener("addthis.menu.share", customGATaggingLike);			
		}
	};
	
	//This is for Share		
	this.CTshare=function() {
		function customGATaggingShare(ev) {		
			switch (ev.type) {
				case "addthis.menu.open":				
					break;
				case "addthis.menu.close":
					break;
				case "addthis.menu.share":				
					if (ev.data.service =='twitter') {	
						var appName = $('.addthis_button_twitter').data("ct-information");
						UDM.evq.push(['trackEvent', 'Referral', 'Add this Share', appName]);
					}
					else if (ev.data.service =='facebook'){	
						var appName = $('.addthis_button_facebook').data("ct-information");
						UDM.evq.push(['trackEvent', 'Referral', 'Add this Share', appName]);
					}
					else if (ev.data.service =='google_plusone_share'){											
						var appName = $('.addthis_button_google_plusone_share').data("ct-information");												
						UDM.evq.push(['trackEvent', 'Referral', 'Add this Share', appName])
					}
					else{
						if($('.addthis_button_compact').length > 0 ){
							UDM.evq.push(['trackEvent', 'Referral', 'Add this Share', ev.data.service]);
						}
					}					
					break;
				default:
			}
		}
		if ($(".socialMedia").length > 0) {
			addthis.addEventListener("addthis.menu.share", customGATaggingShare);			
		}
	};
	
	//This is for CT PDP 
	this.CTpdp=function() {		
		$(window).load(function(){
			if($('#CT_productDetailPage').length>0){			
				var productName = $('#CT_productDetailPage').val();							
				UDM.evq.push(['trackEvent', 'Other', 'Product Info', productName]);
			}
		});	
	};

	
	//This for CT Registration Ajax.
	this.CTregistrationStatus=function() {
		$(window).load(function(){
			var getUrl='',
			pUrl=window.location.origin;
			
			if(window.location.protocol==="https:"){		
				getUrl=$('#ContainerTagStatusKey').data('removetagurlsecured');
			}else{
				getUrl=$('#ContainerTagStatusKey').data('removetagurl');
			}	
				
			if(($('#ContainerTagStatusKey').length>0) && $('#ContainerTagStatusKey').val().length>0){
				$.ajax({
					url:getUrl,
					//url:$('#ContainerTagStatusKey').data('removetagurl'),					
					data:'',
					type: "POST",
					success: function (responseHTML) {				
						$('#ContainerTagStatusKey').val('');
					}			
				});
			}
			
		});
	};	
	
	//This for CT Registration.
	this.CTregistration=function() {
		$(window).load(function(){		
			if($('#ContainerTagStatusKey').length>0){
				var ContainerTagStatusKey = $('#ContainerTagStatusKey').val();				
				if(ContainerTagStatusKey == 'ContainerTagLoggedInStatus'){
					UDM.evq.push(['trackEvent', 'Other', 'Sign Ins']);
					_this.CTregistrationStatus();				
				}else if(ContainerTagStatusKey =='ContainerTagExistingUserRegisteredStatus'){
					UDM.evq.push(['trackEvent', 'Other', 'Registration', 'existing user']);
					UDM.evq.push(['trackEvent', 'Conversion', 'Acquisition: Mktg Opt ins', 'Corporate Opt-In'])
					_this.CTregistrationStatus();
				}else if(ContainerTagStatusKey == 'ContainerTagNewUserRegisteredStatus'){
					UDM.evq.push(['trackEvent', 'Other', 'Registration', 'new user']);
					_this.CTregistrationStatus();
				}
			}	
		});	
	};
	
	this.swCaptcha=function() {
		if($('#sweetcapcha').length){
			$('.sweetcaptcha').find('.reset').hide();
			$('a.captchaReset').remove();
			$('.sweetcaptcha').append('<a href="javascript:void(0)" class="captchaReset">Reset</a>');
		}	
	};
	this.swCaptchaReset=function() {	
			$('#sweetcapcha').on("click",'a.captchaReset', function(){
				var sckey = '0',
				    scvalue = '0',
					vUrl="/SweetCaptcha";
					param = {
							sckey : sckey,
							scvalue : scvalue
						};
					if(window.location.protocol==="https:"){
							vUrl="/SweetCaptchasecured";
					}
					$.ajax({
							url: vUrl,
							contentType: "application/x-www-form-urlencoded",
							type: "POST",
							async: false,
							datatype: "jsonp",
							data: param,
							error: function (xmlHttpRequest, errorText, thrownError) {
								error=1;
							},
							
							success: function (data){
								if (data != null){	
									$('#sweetcapcha').html(data);
									_this.swCaptcha();
								}
							}
							});
			})		
	};
            this.addToFav = function () {
                if ($('.addToFav').length > 0) {
                    var favProductId = $('.addToFav').attr('product-id');
                    var responseText = $('.addToFav').attr('response-text');
                    $('a.addToFav').click(function (e) {
                    	UDM.evq.push(['trackEvent', 'Other', 'Widgets', 'Add to Favorites - '+$("h1").text()]);                    	
                        var favProductId = $(this).attr('product-id');
                        var responseText = $(this).attr('response-text');
                        $.ajax({
                            url: $(this).attr('action-url'),
                            data: favProductId,
                            type: "POST",
                            success: function (data) {
                                if (data == 'True') {
                                    $('a.addToFav').addClass('added');
                                    $('a.addToFav').unbind('click');
                                    $('a.addToFav').text(responseText);
                                }
                            },
                            error: function (jqXHR, textStatus, errorThrown) {
                                console.log(errorThrown + '+' + textStatus);
                            }
                        });
                    });
                    $.ajax({
                        url: $('.addToFav').attr('checkStatus-url'),
                        data: favProductId,
                        type: "POST",
                        success: function (data) {
                            if (data != 'NotLoggedIn') { 
                                $('a.addToFav').show();
                                if (data == 'Yes') {
                                    $('a.addToFav').addClass('added');
                                    $('a.addToFav').unbind('click');
                                    $('a.addToFav').text(responseText);
                                }
                            }
                        },
                        error: function (jqXHR, textStatus, errorThrown) {
                            console.log(errorThrown + '+' + textStatus);
                        }
                    });
                }
            };


            this.swCaptchaValidation = function () {
                var sckey = $('input[name=sckey]').val(),
			scvalue = $('input[name=scvalue]').val(),
			isValid = false;
			vUrl="/ValidateSweetCaptcha/";
			param = {
				sckey : sckey,
				scvalue : scvalue
			};
			if(window.location.protocol==="https:"){
				vUrl="/ValidateSweetCaptchasecured";
			}
		$.ajax({
				url: vUrl,
				contentType: "application/x-www-form-urlencoded",
				type: "POST",
				async: false,
				datatype: "jsonp",
				data: param,
				error: function (xmlHttpRequest, errorText, thrownError) {
					error=1;
					return isValid;
				},
				success: function (data) 
				{
					if (data != null) {
						if (data=='true'){						
							$('#sweetCaptchaErrorMsg').css('display', 'none');							
							isValid=true;						
						}
						else{						
							$('#sweetcapcha').html(data);
							$('#sweetCaptchaErrorMsg').css('display', 'block');
							_this.swCaptcha();							
						}						
					}
				}
			}); 
		return isValid;
	};
	
	

			/*Contact us - USA End*/
            /**
             * private method
             */
            var privateMethod = function () {
            };

            /**
             * Init call
             */
		
       this.init = function () {
     //   _this.unileverNavdata();
     //   _this.unileverNav();
	  
	if($('.registrationContainer').length){
	    if ($.trim($('#email').val()) == $.trim($('#CurrentEmailAddress').val())) {
	        $('.passwordLi').hide();
	    }
	    else if ($.trim($('#email').val()) != $.trim($('#CurrentEmailAddress').val())) {
	        $('.passwordLi').show();
	    }
		_this.finaldOBvalue();
		_this.regstrationValidation();
		if($("#NewUserRegistration").data("validator")!=undefined) {
			setTimeout('$("#NewUserRegistration").data("validator").settings.ignore = "";',2000);
		}
		}
	if($('#contactUs-US').length>0){
		_this.InquiryType();
		_this.validZip();
	    _this.finalDOBvalueForContact();
		_this.ContactUsValidation();
		if($("#contactUsForm").data("validator")!=undefined) {
			setTimeout('$("#contactUsForm").data("validator").settings.ignore = "";',2000);	
		}
	}	
	if ($('#contactUs-uk').length > 0) {
                    var fullDate = new Date();
                    var twoDigitMonth = ((fullDate.getMonth().length + 1) === 1) ? (fullDate.getMonth() + 1) : '0' + (fullDate.getMonth() + 1);

                    $('#contactUs_datePurchased').datepicker({
						dateFormat: "dd/mm/yy",
                        maxDate: fullDate.getDate() + "/" + twoDigitMonth  + "/" + fullDate.getFullYear(),
						showOn: "button",
						buttonImage: "/resources/images/ico/datepicker.png",
						buttonImageOnly: true
                    });
					$("#ui-datepicker-div").wrap('<div style="position:absolute;left:27.5em;top:-1em"></div>');
                    _this.ContactUsUkValidation();
     }
	if ($('.stela').length > 0) {
		$ ('.spotLightContainer .l-2col div:odd').addClass('col-border');
	}
		

	//	_this.registerCityWeather();		
		_this.searchCity();
		_this.usregionDd();
		_this.RegPageChkBoxConUS();
		_this.expandCollaspePDP();
		_this.continueShopping();
		_this.pagination();
		_this.reviewThisProduct();
		_this.reviewThisProductFormValidation();
		_this.reviewThisProductValidText();
		_this.viewVideo();
		_this.newsLetter();
		_this.recommendedCarousel();
		_this.NewsletterPageChkBoxStatus();
		_this.viewEnlargeImage();
		_this.homepageCarousel();
		_this.ingredientsCarousel();
		_this.recipeLandingPg();
		//_this.recipeDetailPg();
		_this.customDropDown();
		_this.tabs();
		_this.timeLineScroll();
		_this.productDetailPage();
		_this.starredRatings();
		_this.simpleSensePageBg();
		_this.simpleSenseLotusRollover();
		_this.simpleSenseFetchData();
		_this.yourSkinSpotlightAlignment();
		_this.aboutUsSpotlightAlignment();
		//_this.mainMenu();
		_this.customChkBoxValidationOnClick();
		_this.spotlightClickable();
		_this.aggrigateRating();
		_this.resultHomePageTabsHightlight();
		_this.resultPageToggle();
		_this.readMoreSubToggle();
		//_this.userAccountPgsValidation();
		_this.searchResultPg();
		//_this.webassistSrch();
		_this.customRadio();
		_this.expertLandingPageSpotlightAlignment();	
		_this.validSearchRequest();
		_this.validUserProfileInfo();
		_this.bindSearchBar();
		//_this.bindHeaderSearchBar();
		//_this.waterMark();
		_this.resultPageBin();
		_this.ingredientsGlossary();
		//_this.sitemap();
		_this.vipThanks();
		_this.toolTip();
		_this.reviewModeration();
		_this.macCss();
		_this.bindEnterKey();
		_this.formFocus();
		_this.backToTop();
		_this.stateDropdownChange();
		_this.androidNote();
		//_this.setScalableViewport();
		_this.CTlike();	
		_this.CTshare();
		_this.CTregistration();
		_this.CTregistrationStatus();
		_this.CTpdp();
		_this.swCaptchaReset();
		_this.swCaptcha();
		_this.ie10Browser();
		_this.attachSpotLight();
		_this.expandCollapseMobile();
                _this.addToFav();
		
	    if ($('.threeBox').length > 0) {
				_this.validZipForWhereTobuy();
				_this.whereToBuyNavigation();

			}
		if ($('.showStores').length > 0) {
			_this.validZipForWhereTobuy();
		}
		if($('.pdpSearchBox .siteSearchButton').length > 0){
		_this.bindPdpSearch();
		}
		if($('.newsletterFrmCnf').length > 0){
		$('.defaultBtn.roundedButton').live("click", function(e){
			e.preventDefault();
			$('#lightbox', window.parent.document).remove();
		});
		
		}
		if ($("#map_canvas").length > 0) {
           _this.bindGoogleMap();
            $('div.storesMap a.loadMore').live("click", function(e){

                
                var totalRecords = parseInt($('input[name=totalRecords]').val());
                var recordPerPage = parseInt($('input[name=recordPerPage]').val())
                var noOfPages;
                if(totalRecords%recordPerPage > 0){
                    noOfPages = ((totalRecords-totalRecords%recordPerPage) /recordPerPage)+1;
                }else{
                    noOfPages = totalRecords/recordPerPage;
                }
                
                var currentpagenumber = parseInt($('input[name=currentPageNo]').val());

                currentpagenumber =currentpagenumber + 1;
                if(currentpagenumber <= noOfPages){
                
                $('input[name=currentPageNo]').attr('value',currentpagenumber);
                _this.bindGoogleMap();
                if(currentpagenumber == noOfPages){$(this).hide()};
                }
                else{
                    $(this).hide();
                }
                
            });
        }
 if ($(".leftPanelMapLocator").length > 0) {
                    _this.bindzipLocator();
                }

		//_this.simpleSenseNextBack();
                return this; /*this refere to MODULE.subModule*/
            };

            return this.init(); /*initialize the init()*/
			};
        return new _subModule(); /*creating a new object of subModule rather then a funtion*/
    }());

/*desktop site end*/

    /**
     * Logging function, for debugging mode
     */
	$.log = function (message) {
        if (MODULE.config.debug && (typeof window.console !== 'undefined' && typeof window.console.log !== 'undefined') && console.debug) {
            console.debug(message);
        } /*else {
            alert(message);
        }*/
    };

	/**
     * Angus Croll awesome typeof fix from http://goo.gl/dat30
     */
	$.toType = (function toType(global) {
		return function (obj) {
			if (obj === global) {
				return "global";
			}
			return ({}).toString.call(obj).match(/\s([a-z|A-Z]+)/)[1].toLowerCase();
		};
	}(this));

	/*$.toType(window); //"global" (all browsers)
	$.toType([1,2,3]); //"array" (all browsers)
	$.toType(/a-z/); //"regexp" (all browsers)
	$.toType(JSON); //"json" (all browsers)
	$.toType(null); //"null" (all browsers)
	$.toType(undefined); //"undefined" (all browsers)*/
	//etc..

	

/**
 * Check to evaluate whether 'MODULE' exists in the global namespace - if not, assign window.MODULE an object literal
 */
}(window.MODULE = window.MODULE || {}, jQuery));
;var countrySelectorData={"countries":[
   {
      "CountryName":"UK",
      "Languages":[
         {  "IsSelected":true,
            "IsDefault":true,
            "Comb":"en",
            "Class":"english",
            "Lang":"en",
            "DisplayName":"UK",
            "IsActive":"true",
			"Image":"http://www.simple.co.uk/resources/images/pic/UK.png",
			"SecureImage":"https://secure.simple.co.uk/resources/images/pic/UK.png",
            "Url":"http://www.simple.co.uk/"
         }
      ]
   },
   {
      "CountryName":"US",
      "Languages":[
         {"IsSelected":false,
            "IsDefault":false,
            "Comb":"en",
            "Class":"english",
            "Lang":"en",
            "DisplayName":"USA",
            "IsActive":"true",
			"Image":"http://www.simple.co.uk/resources/images/pic/US.png",
			"SecureImage":"https://secure.simple.co.uk/resources/images/pic/US.png",
            "Url":"http://www.simpleskincare.com/"
         }
      ]
   },
   {
      "CountryName":"Canada - English",
      "Languages":[
         {"IsSelected":false,
            "IsDefault":true,
            "Comb":"en",
            "Class":"english",
            "Lang":"en",
            "DisplayName":"Canada - English",
            "IsActive":"true",
			"Image":"http://www.simple.co.uk/resources/images/pic/CA.png",
			"SecureImage":"https://secure.simple.co.uk/resources/images/pic/CA.png",
            "Url":"http://www.simpleskincare.ca/"
         }
      ]
   },
   {
      "CountryName":"Canada - Français",
      "Languages":[
         {"IsSelected":false,
            "IsDefault":true,
            "Comb":"fr",
            "Class":"french",
            "Lang":"fr",
            "DisplayName":"Canada - Fran&#231;ais",
            "IsActive":"true",
			"Image":"http://www.simple.co.uk/resources/images/pic/CA.png",
			"SecureImage":"https://secure.simple.co.uk/resources/images/pic/CA.png",
            "Url":"http://www.simpleskincare.ca/fr/"
         }
      ]
   },
   {
      "CountryName":"Australia",
      "Languages":[
         {"IsSelected":false,
            "IsDefault":true,
            "Comb":"en",
            "Class":"english",
            "Lang":"en",
            "DisplayName":"Australia",
            "IsActive":"true",
			"Image":"http://www.simple.co.uk/resources/images/pic/AU.png",
			"SecureImage":"https://secure.simple.co.uk/resources/images/pic/AU.png",
            "Url":"http://www.simpleskincare.com.au/"
         }
      ]
   },
   {
      "CountryName":"New Zealand",
      "Languages":[
         {"IsSelected":false,
            "IsDefault":true,
            "Comb":"nz",
            "Class":"english",
            "Lang":"nz",
            "DisplayName":"New Zealand",
            "IsActive":"true",
			"Image":"http://www.simple.co.uk/resources/images/pic/NZ.png",
			"SecureImage":"https://secure.simple.co.uk/resources/images/pic/NZ.png",
            "Url":"http://www.simpleskincare.co.nz/"
         }
      ]
   },
    {
      "CountryName":"South Africa",
      "Languages":[
         {"IsSelected":false,
            "IsDefault":true,
            "Comb":"en",
            "Class":"english",
            "Lang":"en",
            "DisplayName":"South Africa",
            "IsActive":"true",
			"Image":"http://www.simple.co.uk/resources/images/pic/ZA.png",
			"SecureImage":"https://secure.simple.co.uk/resources/images/pic/ZA.png",
            "Url":"http://www.simpleskincare.co.za/"
         }
      ]
   },
   {
      "CountryName":"Norge",
      "Languages":[
         {"IsSelected":false,
            "IsDefault":true,
            "Comb":"no",
            "Class":"norway",
            "Lang":"no",
            "DisplayName":"Norge",
            "IsActive":"true",
			"Image":"http://www.simple.co.uk/resources/images/pic/NO.png",
			"SecureImage":"https://secure.simple.co.uk/resources/images/pic/NO.png",
            "Url":"http://www.simpleskincare.no/"
         }
			]
   }
   
]};
;var uSimple = uSimple || {};

uSimple = {
    init: function () {
       uSimple.simpleMainMenu();
	   //uSimple.customDropDown();
	   uSimple.countrySelector();
	   uSimple.bindFB();
	   uSimple.waterMark();
	   uSimple.loginControl();
	   uSimple.bindHeaderSearchBar();
	   uSimple.callFacebook();
	   uSimple.openNewsletter();
    },
	openNewsletter:function(){
		$('.newsletter').live("click", function(e) {
			e.preventDefault();	
			if($("#newsLetterFrame").length==0){
                
        			var videoUrl = $(this).attr("href");				
        			MODULE.helper.simpleLightBox('videocall',videoUrl,"newsLetterFrame");
        			$("#newsLetterFrame").attr("width","480").attr("height","537").attr("scrolling","no").attr("frameBorder","0").attr("allowTransparency","true");
        			$(".modalWindowText").remove();
        			$("#modalWidowcontainer").removeClass("roundedBoxWhite").addClass("modalWidowNewsLetter");
        			var modalWinCon = $(".modalWidowNewsLetter"),
        				oTop = ($(window).height() - modalWinCon.height())/2 ,
        				oLeft = ($(window).width() - modalWinCon.width())/2;			
        				modalWinCon.css({'left':oLeft,'top':oTop+20});
        			$('html').css('overflow', 'auto');	
        			//Close Button issues fixed
        		$('.modalWidowNewsLetter .closeButton').live('click', function() { 
        			$('html').css('overflow', 'auto');
        		});
            }
		});
	},
	callFacebook:function(){	
		$(document).on("click", "#mFacebookLogIn,.iDeviceFbLogin", function(e) {			
			e.preventDefault();
			uSimple.permission();
		});
		
	},
	getDocLocation:function(newurl){
		var url=newurl,
			getSource=(document.domain),
			getReturnUrl=location.pathname,
			getProtocol=location.protocol,
			getfinalUrl=url+'?source='+getProtocol +'//'+ getSource+'&returnUrl='+getReturnUrl;			
			return getfinalUrl;
	},
	
	loginControl:function(){			
		$('#signIn,#userRegister,#myAccount').click(function(e){			
			e.preventDefault();
				var cUrl=window.location.href,
					getUrl=$(this).attr('href');
						if(window.location.href.toLowerCase().indexOf("returnurl") != -1){						
							window.location.href=getUrl
						}else{
						var fUrl=uSimple.getDocLocation(getUrl);
							window.location.href=fUrl;						
					}
		});
		$('#signOut').click(function (e) { 
            e.preventDefault(); 
            //window.location.href = window.location.href = location.protocol + "//" + location.host; ; 
            var cURl = $(this).attr('href'); 
            window.location.href = cURl + "?returnurl=" + location.protocol + "//" + location.host;
        });
	},
	
	getSelectedStr: function(val){
	
		var selectedPage=window.location.href;	
		var getPageUrl=window.location.hostname + window.location.pathname;	
        var pathArray = selectedPage.split('/');
        var valArray = val.split('/');
        var selectedValue = '';
        var urlvalue = '';
        var urlLength=3;
		var localeFolder="/",localeFolderWithSlash="",localeFolderWithoutSlash="/";
		if($('#localeName').length>0)
		{
			if($('#localeName').val().length>0)
			{
				localeFolder=localeFolder+$('#localeName').val();
				localeFolderWithSlash="/";
				localeFolderWithoutSlash = "";
				urlLength=4;
			}			
		}		
		if (valArray.length > urlLength & pathArray.length > urlLength) {
				selectedValue = valArray[urlLength];
				urlvalue = pathArray[urlLength];
				if(urlvalue.length==urlLength-1){
					urlvalue = pathArray[urlLength+1];
			}
        }
		if($('#simpleSensePartentPath').length>0)
			{
			if(selectedValue==$('#simpleSensePartentPath').val())
				{	
					return "class='selected'"
				}
			}		
		if(getPageUrl.indexOf("vip.simple") != -1 && val.indexOf("vip.simple") != -1){		
			return "class='selected'"			
		}
		if(getPageUrl.indexOf("teen.simple") != -1 && val.indexOf("teen.simple") != -1){		
			return "class='selected'"
		}
        if (window.location.pathname == localeFolder || window.location.pathname == localeFolder+localeFolderWithSlash+"index.html" || window.location.pathname == localeFolder+localeFolderWithSlash) {
            if (selectedPage == val + localeFolderWithoutSlash || selectedPage == val + "/index.html" || selectedPage == val+ localeFolderWithSlash) {
                return " class='selected' "
            }
        }
		var urlvalueArray = urlvalue.split('?');
        if (selectedValue == urlvalueArray[0] && selectedValue!='') {		
            return " class='selected' "
        }
        else {
            return "";
        }
	
	},
	
	customDropDown : function () { 
		$(window).resize(function() {
			if($(window).width() >= MODULE.config.mobileBreakpoint) {
				$('#countrySelector').dropkick();
				CT.trackableItems["ct-language-selector"].information = $('#countrySelector').val();
			}else{
				CT.trackableItems["ct-language-selector"].information = $('#countrySelector').val();
			}
		}).resize();			
	},
	
	simpleMainMenu:function(){
	    var getMenuData = menudata;
	    uSimple.unileverNavdata(getMenuData);
	    uSimple.unileverNav();
	    uSimple.headerMobile();
	  },
	  headerMobile :function(){
          $(window).resize(function() {
            var $countryDropDown=$('.serachNav .countrySelector').html();
                if($(window).width() <= MODULE.config.mobileBreakpoint) {
                    $('#MobileCountrySelector').html($countryDropDown);
                }
            }).resize();
    },
	//This is for country selector Dropdown
                countrySelector : function(){
                                if($('.countrySelector').length>0) {
                                                var data=countrySelectorData.countries;
                                                var dom = [""];                  
                                                dom.push('<select id="countrySelector" name="countrySelector" data-ct-identifier="ct-language-selector" data-ct-category="Custom" data-ct-action="language selector" data-ct-information="" >');                                                                                     
                                                for(var i=0;i<data.length;i++){                                                                                                    
                                                                for(var j=0;j<data[i].Languages.length;j++){                                                                                        
                                                                                if(data[i].Languages[j].IsActive == "true"){
                                                                                                if(data[i].Languages[j].IsSelected == true){
                                                                                                dom.push("<option value='"+ data[i].Languages[j].Url+"' selected='selected'>"+ data[i].Languages[j].DisplayName+"</option>");
                                                                                                }else{
                                                                                                dom.push("<option value='"+ data[i].Languages[j].Url+"'>"+ data[i].Languages[j].DisplayName+"</option>");
                                                                                                }
                                                                                }
                                                                }
                                                }              
                                                dom.push("</select>");                                                                
                                                $('.countrySelector').html(dom.join(""));
										$(window).resize(function() {
											if($(window).width() <= MODULE.config.mobileBreakpoint) { 
											
												$(document).on("change", "#countrySelector", function() {
														var value=$(this).val();														
														CT.trackableItems["ct-language-selector"].information = value;														
														window.location.href=value;
													}).change();	
											
                                                
											}else{	
                                                $('#countrySelector').dropkick({
                                                                change: function (value, label) {
																			window.setTimeout(function () {
                                                                                CT.trackableItems["ct-language-selector"].information = value;
                                                                                $('#countrySelector').trigger('click'); //Trigger Click Event on Hidden dropdown control to fire the analytics call
                                                                                window.location.href=value;
																				}, 2000);
																				
                                                                }
                                                });											
																								
											}
											
											
										}).resize();	
										// FOR FLAG IMAGES IN COUNTRY SELECTOR DROPDOWN
										var itemCount = 1;
										for (var i = 0; i < data.length; i++) {
											for (var j = 0; j < data[i].Languages.length; j++) {
												var imgUrl = data[i].Languages[j].Image;
												if(window.location.protocol==="https:"){
													imgUrl = data[i].Languages[j].SecureImage;
												}
												if (data[i].Languages[j].IsSelected == true) {
												   $('.countrySelector .dk_toggle').append("<img class='flagImage'  src="+ imgUrl +" alt="+ data[i].Languages[j].DisplayName +">")
												}
												$('#dk_container_countrySelector .dk_options_inner li:nth-child('+itemCount+') a').append("<img class='flagImage'  src="+ imgUrl +" alt="+ data[i].Languages[j].DisplayName +">")
												itemCount++;
											};
										}		
												
												
												
                                }
                },
   	stripScripts:function (markup) {
		if(markup!=null){
			return markup.replace(/<sup[^>]*?>[\s\S]*?<\/sup>/gi, ' ');
		}
	},
	  
	unileverNavdata: function (data) {
	    var $data = data,
			getNavCon = $('nav.mainNav'),
			navLength = 0,
			navWidth = 0,
            crUi = $('<ul />');
	    $.each($data.Menuitem, function (i, item) {
	        navLength = navLength + 1;
	        var selected = uSimple.getSelectedStr(item.Href);
			if(selected=="")
            {
                selected="class='mainNavi'";
            }else{
                selected=selected.substring(0,selected.length-2)+" mainNavi'";
            }
            var parentLi = $("<li " + selected + "/>").append("<a href='" + item.Href + "' title='" + item.Title + "'>" + item.Text + "</a>");
            if (item.SubMenu != null || item.SubMenuClass=="menu whereTo") {
                
                crSubUi = $('<ul class="' + item.SubMenuClass + '"><li class="mainNavIco"></li><div class="navArticle"></div></ul>');
                if (item.SubMenu != null){
                $.each(item.SubMenu, function (j, item1) {
                    var parentLi1 = $("<li />").append("<a href='" + item1.Href + "' title='" + item1.Title + "'>" + item1.Text + "<span>See all</span></a>");

                    if (item1.SubMenuItems != null) {
                        crSubUi2 = $('<ul />');
                        $.each(item1.SubMenuItems, function (k, item2) {
                            crSubUi2.append($("<li />").append("<a href='" + item2.Href + "' title='" + item2.Title + "'>" + item2.Text + "</a>"));
                        });
                        parentLi1.append(crSubUi2);
                    }
                    crSubUi.children("div.navArticle").append(parentLi1);

                });
                }
                if (item.SubMenuSpotlight != null) {
                    crSubUi.append('<li class="subSaprator"></li><div class="navPromoImage"></div>');
                    var spotlight=item.SubMenuSpotlight;
                    var target=spotlight.SpotlightUrlType.toLowerCase() == 'yes' ? 'target="_blank"':'';
                    spotlight.SpotlightTitle = spotlight.SpotlightTitle==""?"":"<span>"+spotlight.SpotlightTitle+"</span>";
                    var spotlightLi='<a href="'+spotlight.SpotlightLinkUrl+'" '+target+'>'+spotlight.SpotlightTitle+'<img src="'+spotlight.SpotlightImage+'" altText="'
                    +spotlight.SpotlightImageAltText+'"/></a><a class="roundedButton" href="'+spotlight.SpotlightLinkUrl+'" '+target+' title="'+spotlight.SpotlightLinkText+'">'+spotlight.SpotlightLinkText+'</a>';
                     crSubUi.children("div.navPromoImage").append(spotlightLi);
                }
	            parentLi.append(crSubUi);
	        }
	        crUi.append(parentLi);



	    });


	    getNavCon.append(crUi);
		$('section#outerContainer div#mainContainer header nav.mainNav ul li a').live("click", function(e){
            e.stopPropagation();
            
            if($(this).attr('href').indexOf("http") >-1){
				UDM.evq.push(['trackEvent', 'Other', 'Widgets', 'Nav Dropdown - '+$(this).attr('href')]);
			}else{
				UDM.evq.push(['trackEvent', 'Other', 'Widgets', 'Nav Dropdown - '+window.location.host+$(this).attr('href')]);
			}		
            UDM.evq.push(['trackEvent', 'Other', 'Widgets', 'Nav - '+$(this).parents('.mainNavi').children('a').text()]);
            
        });
        var totalNavWidth = $('.mainNav').width() - $('.simpleLogo').width(),
		//var totalNavWidth = 994,
			navWidth = totalNavWidth/navLength,
			cromeBros=/chrome/.test(navigator.userAgent.toLowerCase());
			
	    $(window).resize(function() {
			totalNavWidth = $('.mainNav').width() - $('.simpleLogo').width();
			navWidth = totalNavWidth/navLength;
			if($(window).width() >= 461) {				
				$('.mainNav>ul>li>a').css('width', navWidth);
			}
			else{
				if($('.ie8').length) {
					$('.mainNav>ul>li>a').css('width', navWidth);
				}else{
					$('.mainNav>ul>li>a').css('width', navWidth);
					$('.res .mainNav>ul>li>a').css('width', '');
				}
			}
			if($('.ie9').length || cromeBros) {
				if($(window).width() >= 461) {				
					$('.mainNav>ul>li>a').css('width', navWidth);
				}
				else{
					$('.res .mainNav>ul>li>a').css('width', '');
					$('.mainNav>ul>li>a').css('width', navWidth);
				}
			}
		}).resize();
	    
	    var width = 0;
	    $('ul.megaMenu>li').not('.mainNavIco').each(function () {
	        width += $(this).width();
	    });
        $('ul.megaMenu').width(600);
        var startIndex=0;
        if($('.mainNav > ul >li').length %2 ==0){
        	startIndex=$('.mainNav > ul >li').length /2;
        }else{
        	startIndex=($('.mainNav > ul >li').length /2)-0.5;
        }
        for(var i=startIndex+1;i<=$('.mainNav > ul >li').length;i++)
		{
			$('.mainNav > ul >li:nth-child('+i+') > ul').css({right: "0px",left: "auto"});						
		}
		
		$('.mainNav ul li a').on('tap',function(){			
			window.location.href = $(this).attr('href');
		});
	
	},
	unileverNav: function () {

	    $('nav.mainNav>ul>li').hover(function (e) {
	        e.preventDefault();

	        $('ul', this).fadeIn();
	    },

        function (e) {
            $('ul', this).fadeOut();
        });
	},
	
	/*Facebook Code*/
		bindFB : function () {
			var jshost = document.location.protocol;
			/*  var FB_APP_LANGUAGE = $("#FBAppLanguage").val();
			document.write(unescape("%3Cscript src='" + jshost + "//connect.facebook.net/" + FB_APP_LANGUAGE + "/all.js' type='text/javascript'%3E%3C/script%3E"));

			var debug = false;
			// function (d, debug) {
			var js, id = 'facebook-jssdk', ref = document.getElementsByTagName('script')[0];
			// if (document.getElementById(id)) { return; }
			js = document.createElement('script'); js.id = id; js.async = true;
			js.src = "//connect.facebook.net/" + $("#FBAppLanguage").val() + "/all" + (debug ? "/debug" : "") + ".js";
			js.onLoad = setTimeout(function () { _this.FBFuncs(); }, 4000);
			ref.parentNode.insertBefore(js, ref);
			//  } (document, /*debug*false);
			*/




			var accessToken;
			var appID = $("#FBApplicationID").val();
			var channelURL = $("#ChannelURL").val();
			FB.init({
				appId: appID, // App ID
				channelurl: channelURL, // Channel File
				status: true, // check login status
				cookie: true, // enable cookies to allow the server to access the session
				oauth: true, // enable OAuth 2.0
				xfbml: true,
	version: 'v2.2'// parse XFBML				// parse XFBML

			});

			//FB.Canvas.setAutoGrow();



			var permsNeeded = ['read_friendlists', 'publish_stream', 'user_photos', 'publish_actions'];
			var connected = false;
			var called = false;
			//                FB.getLoginStatus(function (response) {
			//                    if (response.status === 'connected') {
			//                        FB.api('/me/permissions', function (response) {
			//                            var permsArray = response.data[0];
			//                            var permsToPrompt = [];
			//                            for (i = 0, len = permsNeeded.length; i < len; i++) {
			//                                if (permsArray[permsNeeded[i]] == null) {
			//                                    permsToPrompt.push(permsNeeded[i]);
			//                                }
			//                            }

			//                            if (permsToPrompt.length == 0) {
			//                                connected = true;
			//                            }
			//                        });
			//                        setUserData(response);

			//                    }
			//                });


			//                FB.Event.subscribe('auth.authResponseChange', function (response) {
			//                    alert('auth.authResponseChange');
			//                    if (response.status === 'connected' && called == false) {
			//                        alert(response.status);
			//                        connected = true;
			//                        _this.permission(response);
			//                        called = true
			//                    }
			//                });


			//                FB.Event.subscribe('auth.login', function (response) {
			//                    alert('auth.login');
			//                    if (response.status === 'connected' && called == false) {
			//                        alert(response.status);
			//                        connected = true;
			//                        _this.permission(response);
			//                        called = true;
			//                    }
			//                });
		},

		permission: function () {
			var connected = false;
			FB.getLoginStatus(function (response) {
				if (response.status === 'connected') {
					connected = true;
				}
			});
			if (connected) {
				FB.login(function (response) {
					if (response.authResponse) {
						FB.api('/me', function (response) {
						});
						uSimple.checkPermissions(response);
					}
				}, { scope: 'email, user_photos,read_friendlists, publish_stream,friends_location,user_location,publish_actions,offline_access,user_birthday' });
			}
			else
			{
				FB.login(function (response) {
					if (response.authResponse) {
						FB.api('/me', function (response) {
						});
						uSimple.checkPermissions(response);
					}
				}, { scope: 'email, user_photos,read_friendlists, publish_stream,friends_location,user_location,publish_actions,offline_access,user_birthday' });
			}
		},

		// Function that checks needed user permissions
		checkPermissions : function (obj) {
		uSimple.setUserData(obj);
		/*
			FB.api('/me/permissions', function (response) {
			
			
				
				var permsNeeded = ['read_friendlists', 'publish_stream', 'user_photos', 'publish_actions'];
				var permsArray = response.data[0];
				var permsToPrompt = [];
				
				for (i = 0, len = permsNeeded.length; i < len; i++) {
					if (permsArray[permsNeeded[i]] == null) {
						permsToPrompt.push(permsNeeded[i]);
					}
				}
				
				if (permsToPrompt.length != 0) {
					uSimple.setUserData(obj);
				}
			});*/
		},

		// Set User data
		setUserData : function (response) {
			if (response.authResponse) {
				var accessToken = response.authResponse.accessToken;
				var userId = response.authResponse.userID;
				
			  //  alert(accessToken);
			  //  alert(userId);
				document.getElementById('fbToken').value = accessToken;
				document.getElementById('fbuserId').value = userId;
				
				if($('#updateDetailFbCall').length){
					$('#isUpdateDetail').val('true');
				}
				
				var getAction=$('#formToken').attr('action'),
					fUrl=uSimple.getDocLocation(getAction);
					$('#formToken').attr('action', fUrl);
			document.getElementById('btnSubmit').click();
			}
		},

		/*Facebook Code End*/
		
		
		/*water mark */
		 waterMark:function () {
			 if ($('.waterMark').length > 0) {
				 if ($('.realPassword').length > 0) {
					 $('.realPassword').blur(function () {
						 if ($(this).val() == '') {
							 $(this).hide();
							 $('.fakePassword').show();
						 }
					 });
				 }
				 $('.waterMark').each(function () {
					 var default_value = this.value;
					 $(this).focus(function () {
						 if ($(this).hasClass('fakePassword')) {
							 $(this).hide();
							 $('.realPassword').show();
							 $('.realPassword').focus();
						 } else {
							 if (this.value == default_value) {
								 this.value = '';
								 this.style.color = '#8A8E90';
							 }
						 }
					 });
					 $(this).blur(function () {
						 if (this.value == '') {
							 this.value = default_value;
							 this.style.color = '#8A8E90';
						 }
					 });
				 });
			 }
		 },
		/* Header Search */ 
		 	bindHeaderSearchBar:function () {
                if ($("#siteHeaderSearchButton").length > 0) {	
				var srchVal=$("#headerSearchResults").val();
                    $("#siteHeaderSearchButton").click(function (e) {					
                       uSimple.headerSearch(srchVal);
		    	e.stopPropagation()
                    });
					$('#headerSearchResults').keypress(function(e){
						if (e.which == 13){ 
							uSimple.headerSearch(srchVal);
						}
					}); 

					
                }
            },
		
		headerSearch:function (srchVal){			
			 if ($("#headerSearchResults").val() == "" || $("#headerSearchResults").val()==srchVal) {			
                return false;
            }
			
			var searchHeaderStr = $.trim($('#headerSearchResults').val());
				if( $("#headerSearchResults").val().length >100)
				{
					searchHeaderStr = $("#headerSearchResults").val().substr(0,100);
				}						
				var myArray = $("#headerSearchResults").attr('data-action').split('/');
				var locale =  $("#siteHeaderSearchButton").attr('data-ct-locale');				
				if(locale.length > 0)
				{				
					if (myArray.length > 6) {
						var newaction = $("#headerSearchResults").attr('data-action').replace('/' + myArray[5] + '/' + myArray[6], '/' + myArray[5] + '/'+searchHeaderStr);
					} else {
						var newaction = $("#headerSearchResults").attr('data-action') + "/" + searchHeaderStr;
					}					
				}else 
				{
					if (myArray.length > 5) {
						var newaction = $("#headerSearchResults").attr('data-action').replace('/' + myArray[4] + '/' + myArray[5], '/' + myArray[4] + '/'+searchHeaderStr);
					} else {
						var newaction = $("#headerSearchResults").attr('data-action') + "/" + searchHeaderStr;
					}
				}
				//$("#headerSearchResult").attr('action', newaction);				
				window.location.href=newaction;
				CT.trackableItems["ct-site-search"].information = $("#headerSearchResults").val();
		
		}
	
	

}
	


$(function () {
    uSimple.init();
});;/*
 * Basically the script contains the page level tracking
 * code for container tags.
 *
 * Following Parameters are mendatory for page level tracking &
 * these paramters are for UAT & PROD both.
 *
 *     - UDM.GID
 *     - UDM.GAA
 *     - UDM.DOM
 *
 * @project Unilever
 * @date 2012-11-08
 * @author Lokesh Yadav, Sapient India
 * @site Miscellaneous
 */

var CT = window.CT || {};
var _gaq = window.gaq || []; //Global Variable Google Analytics

(function (window, document, $, CT) {

	CT.config = window.CT.config || {}; //CT Config Global Object

	CT.trackableItems = CT.trackableItems || [];

	CT.track = (function () {

		UDM = {},
		onReadyCallbacks = [],
		guid = 1,
		serverURL = "",

		decodeSpecialChars = function (inputStr) {
			var decodedStr = '';
			if (inputStr != undefined) {
				decodedStr = $("<div />").html(inputStr).text();
				decodedStr = decodedStr.replace(/&gt;/g, ">");
				decodedStr = decodedStr.replace(/&lt;/g, "<");
				decodedStr = decodedStr.replace(/&amp;/g, " and ");
				decodedStr = decodedStr.replace(/&[a-z][a-z][a-z][a-z]?;/g, "");
				decodedStr = decodedStr.replace("&", " and ");
				decodedStr = decodedStr.replace(/<\/?[^>]+(>|$)/g, "");
			}

			return decodedStr;
		},

		trackEvent = function (args) {
			args.enabled = typeof(args.enabled) != 'undefined' ? args.enabled : true;
			if (args.enabled) {
				var ctInformation = decodeSpecialChars(args.information);

				/*
				 *   Function : UDM.evq.push(['trackEvent', category, action, information, funnel]);
				 *   For Video Player : Funnel Parameters like Start & Completion needs to passed as value (i.e "Task Start" & "Task End"
				 */
				if (args.information == undefined && args.funnel == undefined) {
					UDM.evq.push(['trackEvent', args.category, args.action]);
				} else if (args.information == undefined) {
					UDM.evq.push(['trackEvent', args.category, args.action, args.funnel]);
				} else if (args.funnel == undefined) {
					UDM.evq.push(['trackEvent', args.category, args.action, ctInformation]);
				} else {
					UDM.evq.push(['trackEvent', args.category, args.action, ctInformation, args.funnel]);
				}
			}
		},

		execTrackItem = function (id) {
			var itemToTrack = CT.trackableItems[id];

			// Track email share button only if the link is a mailto link.
			if (itemToTrack.type && itemToTrack.type === "ctEmailShareButton") {
				if (itemToTrack.element.attr('href').indexOf('mailto') == -1) {
					return;
				}
			}

			trackEvent(itemToTrack);
		},

		trackPage = function () {
			//UDM Param values
			UDM.globalbrand = decodeSpecialChars(CT.config.globalbrand);
			UDM.category = decodeSpecialChars(CT.config.category);
			UDM.channel = decodeSpecialChars(CT.config.channel);
			UDM.localbrand = decodeSpecialChars(CT.config.localbrand);
			UDM.country = decodeSpecialChars(CT.config.country);
			UDM.sitetype='Avinash-Custom';  

			
			/* Server URL : Mandatory */
			if (CT.config.serverurl != undefined) {
				serverURL = decodeSpecialChars(CT.config.serverurl); 
			} else { 
				serverURL = "wa-na.unileversolutions.com"; 
			}
			
			//Set UDM Fabric : optional
			if (CT.config != undefined) {
				UDM.fabric = CT.config.fabric;
			}
			UDM.evq = [];

			u = ('https:' == document.location.protocol ? 'https://' : 'http://') + serverURL;
			UDM.gid = CT.config.gid;
			UDM.gaa = CT.config.gaa;
			UDM.dom = CT.config.dom;

			var a = document.createElement('script');
			a.type = 'text/javascript';
			a.async = 'async';
			a.src = u + '/ct/' + UDM.gid + '/u.js';
			var s = document.getElementsByTagName('script')[0];
			s.parentNode.insertBefore(a, s);
		},

		trackItems = function () {
			$('[data-ct-attr], [data-ct-identifier]').each(function () {
				var $this = $(this),
				propertiesCollection = {
					element : $this,
					category : $this.attr('data-ct-category'),
					action : $this.attr('data-ct-action'),
					information : $this.attr('data-ct-information'),
					funnel : $this.attr('data-ct-funnel'),
					id : undefined,
					type : $this.attr('data-ct-attr'),
					enabled : $this.attr('data-ct-enabled') ? $this.attr('data-ct-enabled') : true
				};

				if ($this.attr('data-ct-identifier') != undefined) {
					propertiesCollection.id = $this.attr('data-ct-identifier');
				} else {
					propertiesCollection.id = $this.attr('id');
					if (propertiesCollection.id == undefined) {
						propertiesCollection.id = 'ctCustomGuid' + guid++;
					}
				}

				CT.trackableItems[propertiesCollection.id] = propertiesCollection;
			});
		},

		/*AddThis Share Widget Services Track*/
		trackShareThis = function (evt) {
			if (evt.type == 'addthis.menu.share') {
				switch (evt.data.service) {
				case 'email':
					trackEvent({
						category : "Referral",
						action : "Share",
						information : "Content"
					});
					break;
				default:
					return;
				}
			}
		},

		trackTweet = function (event) {
			if (event.type === "tweet" || event.type === "retweet") {
				trackEvent({
					category : "Referral",
					action : "Tweet",
					information : "Content"
				});
			} else if (event.type === "follow") {
				trackEvent({
					category : "Referral",
					action : "Follow on Twitter",
					information : "Header"
				});
			} else { //New Addition : Favorite Tweet Tracking
				trackEvent({
					category : "Referral",
					action : "Favorite Tweet",
					information : "Content"
				});
			}
		},

		//New Addition : Google Plus
		trackGooglePlus = function (obj) {
			//trackEvent({ category: "Custom", action: "Google Plus", information: "Content" });
			trackEvent({
				category : "Custom",
				action : "Google Plus",
				information : obj
			});
		},

		//New Addition : YouTube Video Tracking
		trackYTVideo = function () {},

		//New Addition : Ooyala Video Tracking
		trackOoyalaVideo = function () {},

		ready = function (fn) {
			onReadyCallbacks.push(fn);
		},

		execOnReadyCallbacks = function () {
			for (var func in onReadyCallbacks) {
				if (typeof(onReadyCallbacks[func]) === 'function') {
					onReadyCallbacks[func]();
				}
			}
		},

		init = function () {

			//Init Page Level Tracking
			trackPage();

			/*AddThis*/
			if (typeof(addthis) != 'undefined') {
				addthis.addEventListener('addthis.menu.share', trackShareThis);
			}

			//New Addition : GooglePlus
			if (typeof gapi != 'undefined') {
				/*gapi.plusone.render(this, {
				"callback": trackGooglePlus();
				});*/
				function plusone_vote(obj) {
					trackGooglePlus(obj.state);
				}
			}

			//Init Trackable Elements
			trackItems();

			// collection trackableItems contains list of elements to be tracked with their respective tracking variables
			for (var ctItem in CT.trackableItems) {
				if (CT.trackableItems[ctItem].element) {
					CT.trackableItems[ctItem].element.on('tap click', {
						currentItem : CT.trackableItems[ctItem]
					}, function (event) {
						execTrackItem(event.data.currentItem.id);
					});
				} else {
					// TrackableItems has been populated from outside then track all those items
					execTrackItem(CT.trackableItems[ctItem].id);
				}
			}

			window.fbAsyncInit = function () {
				FB.Event.subscribe('edge.create',
					function (href, widget) {
					if (widget.dom.id === "fbBrandLikeButton") {
						trackEvent({
							category : "Referral",
							action : "Like",
							information : "Brand"
						});
					} else {
						trackEvent({
							category : "Referral",
							action : "Like",
							information : "Content"
						});
					}
				});
				//New Addition : FB Comment Tracking
				FB.Event.subscribe('comment.create',
					function (response) {
					trackEvent({
						category : "Referral",
						action : "Comments",
						information : response
					});
				});
			}

			if (typeof twttr !== 'undefined') {
				twttr.ready(function (twttr) {
					twttr.events.bind('tweet', trackTweet);
					twttr.events.bind('retweet', trackTweet);
					twttr.events.bind('follow', trackTweet);
					twttr.events.bind('favorite', trackTweet); //New Addition : Favorite Event Tracking
				});
			}

			// Execute all funtions stacked for ready state.
			execOnReadyCallbacks();
		};

		return {
			init : init,
			trackEvent : trackEvent,
			ready : ready
		}
	})();

	CT.ready = CT.track.ready;
	CT.trackEvent = CT.track.trackEvent;
})(window, document, jQuery, CT);

/*Initialize Init*/
$(function () {
	jQuery(CT.track.init);
});;