﻿var marqueeBox = {
    "jBox":null,
    "cFrame":0,
    "setCFrame":function(cFrame){
        return this.cFrame = cFrame;
    },
    "targetFrame":0,
    "isShowList":false,
    "childEleName":"div",
    "speed":"slow",
    "isRuning":true,
    "isMouseEven":true,
    "startRun":function(){
        return this.isRuning = true;
    },
    "stopRun":function(){
        return this.isRuning = false;
    },
    "getFrameList":function(){
        return jQuery("."+this.frameClass,this.jBox);
    },
    "frameClass":null,
    "getUFrame":function(){
        return this.getFrameList().length;
    },
    "getNextFrame":function(neNum){
        neNum = (neNum==undefined)?1:neNum;
        var neFrame = this.cFrame+neNum;
        neFrame = (neFrame < this.getUFrame())?neFrame:0;
        return neFrame;
    },
    "getPreFrame":function(prNum){
        prNum = (prNum==undefined)?1:prNum;
        var prFrame = this.cFrame-prNum;
        prFrame = (prFrame>=0)?prFrame:this.getUFrame()-1;
        return prFrame;
    },
    "changeFrame":function(){
        this.getFrameList().css("display","none");
        this.getFrameList().eq(this.targetFrame).fadeIn(this.speed);
        this.setCFrame(this.targetFrame);
    },
    "prev" : function(){
        this.targetFrame = this.getPreFrame();
        this.changeFrame();
    },
    "next" : function(){
        this.targetFrame = this.getNextFrame();
        this.changeFrame();
    },
    "jump" : function(frameNo){
        if (frameNo < this.getUFrame() && frameNo >= 0)
        {
            this.targetFrame = frameNo;
            this.changeFrame();
        }
    },
    "stop" : function(){
        this.stopRun();
    },
    "goOn" : function(){
        this.startRun();
    },
    "run" : function(){
        if (this.isRuning)
        {
            this.next();
        }
    },
    "init" : function(jBox,frameClass,childEleName,speed,isRuning,isMouseEven){
        this.jBox = jBox;
        this.frameClass = frameClass;
        if (typeof(childEleName) != "undefined")
        {
            this.childEleName = childEleName;
        }
        if (typeof(speed) != "undefined")
        {
            this.speed = speed;
        }
        if (typeof(isRuning)!="undefined")
        {
            this.isRuning = isRuning;
        }
        if (typeof(isMouseEven)!="undefined")
        {
            this.isMouseEven = isMouseEven;
        }
        if (this.isMouseEven){
            this.getFrameList().mouseover(function(){
                marqueeBox.stop();
            });
            this.getFrameList().mouseout(function(){
                marqueeBox.goOn();
            });
        }
    },
    /**
    * 触发器参数
    * 1,boxId 幻灯块 ID
    * 2,timeOut 间隔时间
    * 3,frameClass 帧标识Class名称
    * 4,childEleName 帧标识 元素名称 默认 div
    * 5,speed 帧淡出速度   默认 slow
    * 6,isRuning 是否自动运行 默认 true
    * 7,isMouseEven 是否支持鼠标事件(鼠标在帧上时暂时停止)  默认 true
    * 方法集
    * 1,prev() 上一帧
    * 2,next() 下一帧
    * 3,jump(frameNo) 跳到帧 frameNo:帧 (以0起始)
    * 4,stop() 停止滚动
    * 5,goOn() 继续滚动
    **/
    "getTrigger":function(boxId,timeOut,frameClass,childEleName,speed,isRuning,isMouseEven){
        jBox = jQuery("#"+boxId);
        // 初始化幻灯机
        marqueeBox.init(jBox,frameClass,childEleName,speed,isRuning,isMouseEven);
        // 载入动作
        window.setInterval("marqueeBox.run();",timeOut);
    }
}

