﻿var cmsInterval = new Object;
jQuery.fn.cmsScrollNews = function () {
    var o = $(this);
    var timeName = $(this).selector;

    var params = arguments[0] || {};
    if (!params.nfoHolder) params.nfoHolder = "#cmsScrollNewsHolder";
    if (!params.newsList) params.newsList = "li";
    if (!params.sclass) params.sclass = "cmsScrollNewsSelected";
    //params.addLink

    if (!params.fspeed) params.fspeed = 5000;
    //params.fade = false;
    if (!params.fout) params.fout = 400;
    if (!params.fin) params.fin = 800;

    var maxHeight = 0;
    $(o).find(params.newsList).each(function (index) {
        $(this).mouseenter(function () {
            fadeIt(index, true);
        });
        $(o).find(params.nfoHolder).html($(this).html());
        var curHeight = $(o).find(params.nfoHolder).children(":first").height();
        maxHeight = (maxHeight < curHeight) ? curHeight : maxHeight;
    });

    function fadeIt(mIndex, fade) {
        $(o).find(params.nfoHolder).children(":first").css("height", maxHeight + "px");
        $(o).find(params.nfoHolder).css("height", $(o).find(params.nfoHolder).children(":first").outerHeight() + "px");

        $(o).find(params.newsList).removeClass(params.sclass);
        $(o).find(params.newsList).eq(mIndex).addClass(params.sclass);

        var oldDetail = $(o).find(params.nfoHolder).children(":first");
        var newDetail = $(oldDetail).clone();

        $(newDetail).html($(o).find(params.newsList).eq(mIndex).children(":first").html());
        $(newDetail).hide();
        $(oldDetail).after(newDetail);

        if (params.addLink) {
            var href = $(o).find(params.newsList).eq(mIndex).attr("href");
            $(newDetail).find(params.addLink).wrap('<' + 'a href="' + href + '" /' + '>');
        }

        if ($(newDetail).is(":hidden")) {
            if (params.fade && fade) {
                $(oldDetail).animate({ opacity: 1 }, 0, function () {
                    //$(oldDetail).fadeOut(params.fout);
                });

                $(newDetail).animate({ opacity: 1 }, 0, function () {
                    $(newDetail).fadeIn(params.fin);
                });
            } else {
                $(oldDetail).hide();
                $(newDetail).show();
                params.fout = 0;
            }
            $(oldDetail).delay(params.fout).remove();
        }

        mIndex = ((mIndex) >= ($(o).find(params.newsList).length - 1)) ? 0 : mIndex + 1;

        clearInterval(cmsInterval[timeName]);
        cmsInterval[timeName] = setInterval(function () {
            fadeIt(mIndex, true);
        }, params.fspeed);
    }

    fadeIt(0, false);
};


