﻿//------------------------------------------------------------------------------
// 此文件由 邹宏宇 创建
//------------------------------------------------------------------------------

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:            3000//切换时间
    };
    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.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"];
    
    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);
  },
  //添加
  Add:function(img, text, url) {
    this.Stop();
    var len = this._list.length;
    this._list[len] = {'img': img, 'text': text, 'url': url }
    this._oList.innerHTML = "";
    
    this.Set();
  },
  //删除
  Delete:function(index) {
    index--;
    if(index < 0 || index > this._list.length) return;
    
    this.Stop();
    var _arr = [];
    var m =0;
    
    this.Each(function(list, i){ if(i != index)    _arr[m++] = list; });
    this._list = _arr;
    this._oList.innerHTML = "";
    
    this.Set();
  }
};


function Add(){
    tv.Add($("textImg").value, $("textText").value, $("textUrl").value);
}

function Delete(i){
    var i = $("textIndex").value;
    if(!isNaN(i)) tv.Delete(parseInt(i));
}
//前台直接调用函数
function CreatePic() {
    //filterImage();
    var tv = new TransView([
        { 'img': 'Images/image01.jpg', 'text': 'image01', 'url': '#' },
        { 'img': 'Images/image02.jpg', 'text': 'image02', 'url': '#' },
        { 'img': 'Images/image03.jpg', 'text': 'image03', 'url': '#' },
        { 'img': 'Images/image04.jpg', 'text': 'image04', 'url': '#' }
        ], "idPicShow", "idPicList", "idPicText", { ClassOn: "on" }
        );
}


var objID=0;
function filterImage()
{
    if(objID<=0)
    {
        objID++;
    }
    else if(objID<=1)
    {
        document.getElementById("td" + objID).className = "";
        objID++;
    }
    else if(objID>1)
    {
        
        document.getElementById("td" + objID).className = "";
        document.getElementById("td" + (objID-1)).className = "";
    }
    setInterval(filterImage,3000);
}

