/**
 * 版权信息
 *
 * Author: Tiana
 *
 * OICQ: 78479113
 *
 * Email: zhang93419@gmail.com
 *
 * Blog: http://tiana.osphp.cn/
 *
 */

var SlideImage = new Class({
    initialize: function(imageList){
        this.imageList = imageList;
        this.size = Number((imageList.getChildren())[0].getStyle("width").slice(0, -2));
        this.isMove = 0;
        this.x;
        this.timeid;
        this.lr;
        this.interval;
    },

    start: function(interval, speed, lr){
        if(!$defined(interval)) {
            this.interval = 3
        } else {
            this.interval = interval
        }

        if(!$defined(speed)) speed = 0.5;

        if(!$defined(lr)) {
            this.lr = "left";
        }else{
            this.lr = lr;
        }

        this.imageList.style.left =  -(this.size*2) + "px";
        this.x = Number(this.imageList.getStyle("left").slice(0, -2));
        this.timeid = this.imageScroll.periodical(this.interval * 1000, this);

        this.effectObj = this.imageList.effect("left", {duration: speed*1000});
        this.effectObj.addEvent("onStart", this.startScroll.bind(this));
        this.effectObj.addEvent("onComplete", this.endScroll.bind(this));
        this.effectObj.addEvent("onCancel", this.cancelScroll.bind(this));
    },

    imageScroll: function(){
        this.x = Number(this.imageList.getStyle("left").slice(0, -2));
        switch(this.lr){
            case "left":
                this.effectObj.start(this.x - this.size);
                break;
            case "right":
                this.effectObj.start(this.x + this.size);
        }
    },

    startScroll: function(){
        //this.debug("开始移动");
        this.isMove = 1;
    },

    cancelScroll: function(){
        //this.debug("取消移动");
        this.isMove = -1;
    },

    endScroll: function(){
        //this.debug("结束移动");

        var el_first = this.imageList.getFirst();
        var el_last = this.imageList.getLast();

        if(this.lr == "left"){
            el_first.injectAfter(el_last);
        }else if(this.lr == "right"){
            el_last.injectAfter(el_first);
        }
        this.imageList.style.left = this.x + "px";
        this.isMove = 0;
    },

    leftMove: function(){
        if(this.isMove == 0){
            this.stop();
            this.lr = "left";
            this.effectObj.start(this.x - this.size);
            this.timeid = this.imageScroll.periodical(this.interval * 1000, this);
        }
    },

    rightMove: function(){
        if(this.isMove == 0){
            this.stop();
            this.lr = "right";
            this.effectObj.start(this.x + this.size);
            this.timeid = this.imageScroll.periodical(this.interval * 1000, this);
        }
    },

    stop: function(){
        $clear(this.timeid);
    },

    debug: function(str){
        var el = $("debug");
        el.innerHTML = str + "<br />" + el.innerHTML ;
    }

});

