(function ($) {
    function isNumber(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
    }
    function findTruncPoint(maxWidth, text, start, end, $workerEl, token, fromEnd) {
    var opt1,
    opt2,
    mid;

    if (fromEnd) {
    opt1 = start === 0 ? '' : text.slice(-start);
    opt2 = text.slice(-end);
    } else {
    opt1 = text.slice(0, start);
    opt2 = text.slice(0, end);
    }

    if ($workerEl.html(opt2 + token).width() < $workerEl.html(opt1 + token).width()) {
    return end;
    }

    mid = parseInt((start + end) / 2, 10);
    opt1 = fromEnd ? text.slice(-mid) : text.slice(0, mid);

    $workerEl.html(opt1 + token);
    if ($workerEl.width() === maxWidth) {
    return mid;
    }

    if ($workerEl.width() > maxWidth) {
    end = mid - 1;
    } else {
    start = mid + 1;
    }

    return findTruncPoint(maxWidth, text, start, end, $workerEl, token, fromEnd);
    }

    $.fn.truncate = function (options) {
    var defaults = {
    width: 'auto',
    token: '&hellip;',
    center: false,
    addclass: false,
    addtitle: false
    };
    options = $.extend(defaults, options);

    return this.each(function () {
    var $element = $(this),
    fontCSS = {
    'fontFamily': $element.css('fontFamily'),
    'fontSize': $element.css('fontSize'),
    'fontStyle': $element.css('fontStyle'),
    'fontWeight': $element.css('fontWeight'),
    'font-variant': $element.css('font-variant'),
    'text-indent': $element.css('text-indent'),
    'text-transform': $element.css('text-transform'),
    'letter-spacing': $element.css('letter-spacing'),
    'word-spacing': $element.css('word-spacing'),
    'display': 'none'
    },
    elementText = $element.text(),
    $truncateWorker = $('<span/>').css(fontCSS).html(elementText).appendTo('body'),
    originalWidth = $truncateWorker.width(),
    truncateWidth = isNumber(options.width) ? options.width : $element.width(),
    truncatedText;

    if (originalWidth > truncateWidth) {
    $truncateWorker.text('');
    if (options.center) {
    truncateWidth = parseInt(truncateWidth / 2, 10) + 1;
    truncatedText = elementText.slice(0, findTruncPoint(truncateWidth, elementText, 0, elementText.length, $truncateWorker, options.token, false))
    + options.token
    + elementText.slice(-1 * findTruncPoint(truncateWidth, elementText, 0, elementText.length, $truncateWorker, '', true));
    } else {
    truncatedText = elementText.slice(0, findTruncPoint(truncateWidth, elementText, 0, elementText.length, $truncateWorker, options.token, false)) + options.token;
    }

    if (options.addclass) {
    $element.addClass(options.addclass);
    }

    if (options.addtitle) {
    $element.attr('title', elementText);
    }

    $element.html(truncatedText);

    }

    $truncateWorker.remove();
    });
    };
})(jQuery);

 $(document).ready(function(){
    promoRotator();
    promoRotatorTagging();
    $('div.sliderHorizontal .item .titleText h4').truncate({
        width: 220,
        after: '&hellip;',
        center: false,
        addclass: false,
        addtitle: false
    });
    targetContentTagging();
 });
function promoRotatorTagging(){
    var panelTitle = [];
    var panelOffer = [];
    $(".js-panelLink").each(function(i){
        panelTitle.push($(".js-panelLink").eq(i).attr("title").split(":").shift());
        panelOffer.push($(".js-panelLink").eq(i).attr("title").split(":").pop());
    });
    unicaHomeBannerView("Home_Banner_View",panelTitle[0],panelOffer[0],panelTitle[1],panelOffer[1],panelTitle[2],panelOffer[2],panelTitle[3],panelOffer[3]);
    $(".js-promoPanel .panel").each(function(i){
        $(this).bind("click",function(){
            var sPosition = i+1;
            var sBanDesc = ($(".js-promoPanel .panel img").eq(i).attr("alt").split(":").shift());
            var sOfferDesc = ($(".js-promoPanel .panel img").eq(i).attr("alt").split(":").pop());
            unicaHomeBannerClick("Home_Banner_Click",sPosition,sBanDesc,sOfferDesc);
        });

    });
}
function targetContentTagging(){
    var targetContentTitle = [];
    var targetContentOffer = [];
    $(".rightContent a img").each(function(i){
        targetContentTitle.push($(".rightContent a img").eq(i).attr("alt").split(":").shift());
        targetContentOffer.push($(".rightContent a img").eq(i).attr("alt").split(":").pop());
    });
    unicaHomeTargetContentView("Home_TargetContent_View",targetContentTitle[0],targetContentOffer[0],targetContentTitle[1],targetContentOffer[1],targetContentTitle[2],targetContentOffer[2],targetContentTitle[3],targetContentOffer[3]);
}
function promoRotator(){
    $("#banner-text").html($(".js-panelLink").eq(0).attr("title").split(":").shift());
    if( site.data.imagePanelIntervals != undefined )
    { clearInterval( site.data.imagePanelIntervals[0] ); }

    site.data.imagePanelIntervals = [];

    $(".js-promoPanel").each(function(i) {
        site.data.imagePanelIntervals[i] = null;
        var thisRotator = this;

        /* Create the itemFader obj */
        var thisItemFader = new lib.obj.itemFader({
            viewport: ".js-promoPanel:eq(" + i + ")",
            item: ".js-promoPanel:eq(" + i + ") .panel",
            circular : true,
            preFadeCallback : function() {
                /* Show the Panel Link as Active */
                $(".js-panelLink", thisRotator).eq(thisItemFader.faderInfo.index).triggerHandler("click.button");
                 var htm = $(".js-panelLink", thisRotator).eq(thisItemFader.faderInfo.index).attr("title").split(":").shift();
                $("#banner-text").html(htm);
            },
            interval : 1000
        });
        /* ----------------------- */

        /* Create the Panel Links as Buttons */
        new lib.obj.button({
            cssButton: true,
            hasClick: true,
            hasHover: true,
            activeId: "js-activePromoPanelButton",
            cssOff: "off",
            cssHover: "on",
            cssOn: "on",
            buttonSelector: ".js-promoPanel:eq(" + i + ") .js-panelLink",
            buttonCollectionSelector : ".js-promoPanel:eq(" + i + ") .js-panelLink"
        });
        /* ------------------- */

        /* Setup the Events for clicking a Panel Link */
        $(".js-panelLink", this).each(function(x) {
            $(this).bind("click.promoPanel", function(evt) {
                evt.preventDefault();

                /* Stop the Rotator */
                $(".js-pause", thisRotator).triggerHandler("click.promoPanel");
                /* ----------- */

                /* Update the Status of the itemFader, and fade it */
                thisItemFader.faderInfo.prevIndex = thisItemFader.faderInfo.index;
                thisItemFader.faderInfo.index = x;
                thisItemFader.fade();
                /* ---------------------- */
                var sPosition = $(".js-panelLink").eq(x).html();
                var sBanDesc = $(".js-panelLink").eq(x).attr("title").split(":").shift();
                var sOfferDesc = $(".js-panelLink").eq(x).attr("title").split(":").pop();
                unicaHomeBannerClick("Home_Banner_Click",sPosition,sBanDesc,sOfferDesc);
            });
        }).eq( thisItemFader.faderInfo.index ).triggerHandler("click.button");
        /* -------------------- */

        /* Setup the Play / Pause events */
        $(".js-play", thisRotator).bind("click.promoPanel", function(evt) {
            evt.preventDefault();
            $(".js-pause", thisRotator).show();
            $(this).hide();

            /* Start the Rotator */
            clearInterval( site.data.imagePanelIntervals[i] );
            site.data.imagePanelIntervals[i] = setInterval(function() {
                thisItemFader.forward();
            }, 5000);
            /* ---------------- */
        });
        /* -------------------- */

        $(".js-pause", thisRotator).bind("click.promoPanel", function(evt) {
            evt.preventDefault();
            $(".js-play", thisRotator).show();
            $(this).hide();

            /* Stop the Rotator */
            clearInterval( site.data.imagePanelIntervals[i] );
        });
        /* ----------------- */

        /* Wait Until All Panel Images have loaded, then start the rotator */
        var tempInterval = setInterval( function() {
            if( lib.image.isComplete(".js-promoPanel:eq(" + i + ") img") )
            { clearInterval(tempInterval); $(".js-play", thisRotator).click(); }
        }, 250);
        /* ------------------------ */

    });
}

function unicaHomeBannerView(eventName,sBanDesc1,sOfferDesc1,sBanDesc2,sOfferDesc2,sBanDesc3,sOfferDesc3,sBanDesc4,sOfferDesc4)
{
    ntptAddPair( "Banner1",  sBanDesc1);
    ntptAddPair( "Offer1", sOfferDesc1 );
    ntptAddPair( "Banner2",  sBanDesc2);
    ntptAddPair( "Offer2", sOfferDesc2 );
    ntptAddPair( "Banner3",  sBanDesc3);
    ntptAddPair( "Offer3", sOfferDesc3 );
    ntptAddPair( "Banner4",  sBanDesc4);
    ntptAddPair( "Offer4", sOfferDesc4 );
    ntptEventTag("ev=" + eventName);
}
function unicaHomeBannerClick(eventName,sPosition,sBanDesc1,sOfferDesc1)
{
    ntptAddPair( "Position",  sPosition);
    ntptAddPair( "Banner",  sBanDesc1);
    ntptAddPair( "Offer", sOfferDesc1 );
    ntptEventTag("ev=" + eventName);
}
function unicaHomeView(eventName,skus)
{
    ntptAddPair( "rtv", skus);
    ntptEventTag("ev=" + eventName);
}
function unicaHomeTargetContentView(eventName,sBanTcDesc1,sOfferTcDesc1,sBanTcDesc2,sOfferTcDesc2,sBanTcDesc3,sOfferTcDesc3,sBanTcDesc4,sOfferTcDesc4)
{
    ntptAddPair( "Banner1",  sBanTcDesc1);
    ntptAddPair( "Offer1", sOfferTcDesc1 );
    ntptAddPair( "Banner2",  sBanTcDesc2);
    ntptAddPair( "Offer2", sOfferTcDesc2 );
    ntptAddPair( "Banner3",  sBanTcDesc3);
    ntptAddPair( "Offer3", sOfferTcDesc3 );
    ntptAddPair( "Banner4",  sBanTcDesc4);
    ntptAddPair( "Offer4", sOfferTcDesc4 );
    ntptEventTag("ev=" + eventName);
}
function unicaHomeTargetContentClick(eventName,sTcPosition,sTcBanDesc1,sTcOfferDesc1)
{
    ntptAddPair( "Position",  sTcPosition);
    ntptAddPair( "Banner",  sTcBanDesc1);
    ntptAddPair( "Offer", sTcOfferDesc1 );
    ntptEventTag("ev=" + eventName);
}



