﻿var isIE = (document.all) ? true : false;

    var $$ = function (id) {
        return "string" == typeof id ? document.getElementById(id) : id;
    };

    var Class = {
      create: function() {
        return function() {
          this.initialize.apply(this, arguments);
        }
      }
    }

    Object.extend = function(destination, source) {
        for (var property in source) {
            destination[property] = source[property];
        }
        return destination;
    }

    //ie only
    var TransView = Class.create();
    TransView.prototype = {
      initialize: function(arrList, idShow, idList, idText, options) {
        if(!arrList || arrList.length == 0) return;
        
        var oThis = this, oShow = $$(idShow), oList = $$(idList), oText = $$(idText), img = document.createElement("img"), a = document.createElement("a");
        
        //初始化显示区域
        img.src = "javascript:;"; a.target = "_blank"; if(isIE){ img.style.filter = "revealTrans(duration=1)"; };
        a.appendChild(img); oShow.appendChild(a);

        this._oList = oList;
        this._oText = oText;
        this._list = arrList;
        this._img = img;
        this._a = a;
        this._timer = null;
        this._index = -1;
        
        this.SetOptions(options);
        
        this.Time = Math.abs(this.options.Time);
        this.Auto = !!this.options.Auto;
        this.ClassOn = this.options.ClassOn;
        this.ClassOff = this.options.ClassOff;
        
        this.Set();
      },
      //设置默认属性
      SetOptions: function(options) {
        this.options = {//默认值
          ClassOn:        "",//显示时样式
          ClassOff:        "",//不显示时样式
          Auto:            true,//是否自动切换
          Time:            5000//切换时间
        };
        Object.extend(this.options, options || {});
      },
      //设置
      Set: function() {
        this.Each(function(list, i){
            var oThis = this;
	        img = document.createElement("img");
            
            img.src = list["img"];
            img.alt = list["text"];
            img.width = list["width"];
            
            img.onmouseover = function(){ oThis.Show(i); };
            img.onmouseout = function(){ if(oThis.Auto){ oThis._timer = setTimeout(function(){ oThis.Run(); }, oThis.Time); } };
            
            this._list[i]["obj"] = img;
            
            //这里封装的不好
            this._oList.appendChild(img);
        });
        
        this.Run();
      },
      //显示
      Show: function(i) {
        this.Stop();
        
        if(i < 0 || i >= this._list.length) i = 0;

        if(isIE){
            this._img.filters.revealTrans.Transition = Math.floor(Math.random() * 23);
            this._img.filters.revealTrans.apply();
            this._img.filters.revealTrans.play();
        }
        
        this._img.src = this._list[i]["img"];
        this._img.alt = this._list[i]["text"];
        this._img.width = this._list[i]["width"];
        
        if(!this._list[i]["url"]){
            this._oText.innerHTML = this._list[i]["text"];
            this._a.removeAttribute("href");
        } else {
            this._oText.innerHTML= "<a href='" + this._list[i]["url"] + "' target='_blank'>" + this._list[i]["text"] + "</a>";
            this._a.href = this._list[i]["url"];
        }
        
        if(this._index >= 0) this._list[this._index]["obj"].className = this.ClassOff;
        this._list[i]["obj"].className = this.ClassOn;
        this._index = i;
      },
      //开始
      Run: function() {
        this.Show(this._index + 1);
        if(this.Auto){ var oThis = this; this._timer = setTimeout(function(){ oThis.Run(); }, oThis.Time); }
      },
      //停止
      Stop: function() {
        clearTimeout(this._timer);
      },
      //
      Each:function(fun) {
        for (var i = 0, len = this._list.length; i < len; i++)
            fun.call(this, this._list[i], i);
      }  
    };


