/***********************************************************************************************************************************
 *    RunString плагин
 *    Created 2010/03/30 by dolcom
 *    icq: 386166115 e-mail: dolcom20@gmail.com, dolcom87@yandex.ru
 *
 *    Пользовательский интерфейс
 *
 *    direction (направление) может принимать любое из пяти значений:
 *        right - слева направо
 *        left - справа налево
 *        alternate - слева направо и обратно
 *        top - снизу вверх
 *        bottom - сверху вниз
 *
 *    time - дополнительный параметр влияющий на скорость по умолчанию time равен 10
 *    милисекунд. Рекомендуется устанавливать значения в диапазоне от 10 до 50 милисекунд.
 *
 *    speed - скорость перемещения. Количество пикселей на которое перемещается текст за time
 *
 *    loop - количество раз скроллинга. Если 0 - скролл бесконечeн
 *    stopOnMOver - Останавливаться при наведении курсора мыши
 ***********************************************************************************************************************************/

    onload = function(){
        init();
    }

    function init(){

//        alert(document.getElementsByClassName('marquee')[0].innerHTML);
        // создаём новый элемент
        elem = document.createElement('div');

        // приписываем ему ид
        elem.setAttribute('id', 'runstring');

        // сохраняем контент нашего "маркви"
        elem.innerHTML = document.getElementById('scrolltext').innerHTML;

        // очищаем контейнер
        document.getElementById('scrolltext').innerHTML = "";

        // помещаем наш элемент с контентом в контейнер
        document.getElementById('scrolltext').appendChild(elem);

        // Инициализируем переменные.
        // Получаем значения атрибутов иначе умолчания
        if(document.getElementById('scrolltext').getAttribute("loop"))
            loop = parseInt(document.getElementById('scrolltext').getAttribute("loop"));
        else
            loop = 0;

        if(document.getElementById('scrolltext').getAttribute("direction"))
            direction = document.getElementById('scrolltext').getAttribute("direction");
        else
            direction = "left";

        if(document.getElementById('scrolltext').getAttribute("time"))
            time = document.getElementById('scrolltext').getAttribute("time");
        else
            time = 10;

        if(document.getElementById('scrolltext').getAttribute("speed"))
            speed = parseInt(document.getElementById('scrolltext').getAttribute("speed"));
        else
            speed = 1;

        if(document.getElementById('scrolltext').getAttribute("stoponmover"))
            stopOnMOver = true;
        else
            stopOnMOver = false;

        // Текущий круг
        curLoop = 0;

        switch(direction){
            case "right": document.getElementById('runstring').style.left = -document.getElementById('runstring').clientWidth + "px"; break;

            case "alternate":
                document.getElementById('runstring').style.left = (document.getElementById('scrolltext').clientWidth - document.getElementById('runstring').clientWidth)/2 + "px"; // на середину
                subDirection = "right";
            break;

            case "top":
                document.getElementById('runstring').style.top = document.getElementById('runstring').clientHeight + "px";
                document.getElementById('runstring').style.whiteSpace = "normal";
            break;

            case "bottom":
                document.getElementById('runstring').style.top = -document.getElementById('runstring').clientHeight + "px";
                document.getElementById('runstring').style.whiteSpace = "normal";
            break;

            default: document.getElementById('runstring').style.left = document.getElementById('scrolltext').clientWidth + "px"; break;
        }

        if(stopOnMOver)
        {
            document.getElementById('runstring').onmouseover = function(){clearTimeout(timer)}
            document.getElementById('runstring').onmouseout = function(){timer = setTimeout("run_string()", 10);}
        }

        // для опции alternate смотрим длину бегущей строки и контейнера
        if(document.getElementById('runstring').clientWidth >= document.getElementById('scrolltext').clientWidth)
            more = true;
        else
            more = false;

        // Запускаем
        run_string();
    }


    function run_string(){
        switch(direction){
            case "right":  // Скролл вправо
                document.getElementById('runstring').style.left = parseInt(document.getElementById('runstring').style.left) + speed + "px";

                if(parseInt(document.getElementById('runstring').style.left) > document.getElementById('scrolltext').clientWidth)
                    document.getElementById('runstring').style.left = -document.getElementById('runstring').clientWidth + "px";

                if(parseInt(document.getElementById('runstring').style.left) >= 0 && parseInt(document.getElementById('runstring').style.left) < speed)
                    curLoop++; // Считаем круги
            break;

            case "alternate": // Скролл влево вправо
                if(subDirection == "right")
                    document.getElementById('runstring').style.left = parseInt(document.getElementById('runstring').style.left) + speed + "px";
                else
                    document.getElementById('runstring').style.left = parseInt(document.getElementById('runstring').style.left) - speed + "px";

                if(more) // если скролируемый контент > контейнера
                {
                    if((parseInt(document.getElementById('runstring').style.left) >= 0
                        && parseInt(document.getElementById('runstring').style.left) < speed))
                        {
                            subDirection = "left";
                            curLoop++;
                        }

                    if(parseInt(document.getElementById('runstring').style.left) + document.getElementById('runstring').clientWidth < document.getElementById('scrolltext').clientWidth + speed
                        && parseInt(document.getElementById('runstring').style.left) + document.getElementById('runstring').clientWidth >= document.getElementById('scrolltext').clientWidth)
                            subDirection = "right";
                }
                else // иначе
                {
                    if(parseInt(document.getElementById('runstring').style.left) + document.getElementById('runstring').clientWidth >= document.getElementById('scrolltext').clientWidth - speed
                        && parseInt(document.getElementById('runstring').style.left) + document.getElementById('runstring').clientWidth < document.getElementById('scrolltext').clientWidth)
                        {
                            subDirection = "left";
                            curLoop++;
                        }

                    if(parseInt(document.getElementById('runstring').style.left) >= 0
                        && parseInt(document.getElementById('runstring').style.left) < speed )
                            subDirection = "right";
                }
            break;

            case "top":
                document.getElementById('runstring').style.top = parseInt(document.getElementById('runstring').style.top) - speed + "px";

                if(parseInt(document.getElementById('runstring').style.top) >= -document.getElementById('runstring').clientHeight - speed
                    && parseInt(document.getElementById('runstring').style.top) <= -document.getElementById('runstring').clientHeight)
                        document.getElementById('runstring').style.top = document.getElementById('runstring').clientHeight + "px";

                if(parseInt(document.getElementById('runstring').style.top) > -document.getElementById('scrolltext').clientHeight - speed
                    && parseInt(document.getElementById('runstring').style.top) <= -document.getElementById('scrolltext').clientHeight)
                        curLoop++;
            break;

            case "bottom":
                document.getElementById('runstring').style.top = parseInt(document.getElementById('runstring').style.top) + speed + "px";

                if(parseInt(document.getElementById('runstring').style.top) <= document.getElementById('runstring').clientHeight + speed
                    && parseInt(document.getElementById('runstring').style.top) >= document.getElementById('runstring').clientHeight)
                        document.getElementById('runstring').style.top = -document.getElementById('runstring').clientHeight + "px";

                if(parseInt(document.getElementById('runstring').style.top) < speed
                    && parseInt(document.getElementById('runstring').style.top) >= 0)
                        curLoop++;
            break;

            default:  // По умолчанию скролл влево
                document.getElementById('runstring').style.left = parseInt(document.getElementById('runstring').style.left) - speed + "px";

                if(parseInt(document.getElementById('runstring').style.left) + document.getElementById('runstring').clientWidth < 0)
                    document.getElementById('runstring').style.left = document.getElementById('scrolltext').clientWidth + "px";

                if((parseInt(document.getElementById('runstring').style.left) + document.getElementById('runstring').clientWidth) > (document.getElementById('scrolltext').clientWidth - speed)
                    && (parseInt(document.getElementById('runstring').style.left) + document.getElementById('runstring').clientWidth) <= document.getElementById('scrolltext').clientWidth)
                            curLoop++;
            break;
        }

        if(loop != 0 && curLoop == loop && stopOnMOver)
        {   // Отключаем события мыши если установлено ограниченное колчество кругов
            stopOnMOver = false;
            document.getElementById('runstring').onmouseover = function(){return false}
            document.getElementById('runstring').onmouseout = function(){return false};
        }

        if(loop != 0)
        {
            if(curLoop < loop)
                timer = setTimeout("run_string()", time);
        }
        else
            timer = setTimeout("run_string()", time);
    }
