/*!
 * RevealTrans
 * Copyright (c) 2010 cloudgamer
 * Blog: http://cloudgamer.cnblogs.com/
 * Date: 2008-5-23
 */


var isIE = (document.all) ? true : false;


var Class = {
    create: function() {
        return function() { this.initialize.apply(this, arguments); }
    }
}

var Extend = function(destination, source) {
	for (var property in source) {
		destination[property] = source[property];
	}
}

var Bind = function(object, fun) {
	return function() {
		return fun.apply(object, arguments);
	}
}

var Each = function(list, fun){
	for (var i = 0, len = list.length; i < len; i++) { fun(list[i], i); }
};


//ie only

var RevealTrans = Class.create();
RevealTrans.prototype = {
    initialize: function(container, options) {
        this._img = document.createElement("img");
        this._a = document.createElement("a");

        this._timer = null; //计时器
        this.Index = 0; //显示索引
        this._onIndex = -1; //当前索引

        this.SetOptions(options);

        this.Auto = !!this.options.Auto;
        this.Pause = Math.abs(this.options.Pause);
        this.Duration = Math.abs(this.options.Duration);
        this.Transition = parseInt(this.options.Transition);
        this.List = this.options.List;
        this.onShow = this.options.onShow;

        //初始化显示区域
        this._img.style.visibility = "hidden"; //第一次变换时不显示红x图
        this._img.style.width = this._img.style.height = "100%"; this._img.style.border = 0;
        this._img.onmouseover = Bind(this, this.Stop);
        this._img.onmouseout = Bind(this, this.Start);
        isIE && (this._img.style.filter = "revealTrans()");

        this._a.target = "_blank";
        $("#" + container)[0].appendChild(this._a).appendChild(this._img);
    },
    //设置默认属性
    SetOptions: function(options) {
        this.options = new Object();
        this.options.Auto = true;
        this.options.Pause = 3000;
        this.options.Duration = 1;
        this.options.Transition = 23;
        this.options.List = new Array();
        this.options.onShow = function() { };
        //        this.options = {//默认值
        //            Auto: true, //是否自动切换
        //            Pause: 3000, //停顿时间(微妙)
        //            Duration: 1, //变换持续时间(秒)
        //            Transition: 23, //变换效果(23为随机)
        //            List: new Array(), //数据集合,如果这里不设置可以用Add方法添加
        //            onShow: function() { } //变换时执行
        //        };
        Extend(this.options, options || {});
    },
    Start: function() {
        clearTimeout(this._timer);

        //如果没有数据就返回
        if (!this.List.length) return;
        //修正Index
        if (this.Index < 0 || this.Index >= this.List.length) { this.Index = 0; }
        //如果当前索引不是显示索引就设置显示
        if (this._onIndex != this.Index) { this._onIndex = this.Index; this.Show(this.List[this.Index]); }
        //如果要自动切换
        if (this.Auto) {
            this._timer = setTimeout(Bind(this, function() { this.Index++; this.Start(); }), this.Duration * 1000 + this.Pause);
        }
    },
    //显示
    Show: function(list) {
//        if (isIE) {
//            //设置变换参数
//            alert(this._img.src);   
//            this._img.filters.revealTrans.Transition = this.Transition;
//            this._img.filters.revealTrans.Duration = this.Duration;
//            this._img.filters.revealTrans.apply();
//            this._img.filters.revealTrans.play();

//        }
       
        this._img.style.visibility = "";
        //设置图片属性
        this._img.src = list.img; this._img.alt = list.text;
        //设置链接
        !!list["url"] ? (this._a.href = list["url"]) : this._a.removeAttribute("href");
        //附加函数
        this.onShow();
    },
    Add: function(sIimg, sText, sUrl) {
        this.List.push({ img: sIimg, text: sText, url: sUrl });
    },
    //停止
    Stop: function() {
        clearTimeout(this._timer);
    }
};

