// watermark object 浮動視窗 by dra[2005/3/25]
// var w0 = new layer_wm(50,50,0,1,99) // (x目標,y目標,(0百分比1像素),(0文件1畫面),z-index)
// w0.layer.innerHTML=wm0data.innerHTML
// w0.play()
// var w1 = new layer_wm(0,100,0,1)
// w1.x0 = 100
// w1.y0 = 100
// w1.layer.innerHTML = w1mdata.innerHTML
// w1.play()

if (!a_layer_wm) {
  var a_layer_wm = []
  layer_wm_resize_bak = window.onresize
  window.onresize = layer_wm_resize
}
var df_wm_x0 = 0; // 起點 X 座標，0 = 同目的地
var df_wm_y0 = 0; // 起點 Y 座標，0 = 目的地上方
var df_wm_x1 = 0;      // 目的地 X 座標
var df_wm_y1 = 100;       // 目的地 Y 座標
var df_wm_z = 5; // 圖層層級
var df_wm_alpha = 50; // 起始透明度
var df_wm_positionStyle = 0; // 座標模式 0 百分比 1 像素
var df_wm_screenStyle = 1; // 定位模式 0 文件 1 畫面
var df_wm_refreshFreq = 50; // 浮動步進間隔
var df_wm_speed = 50; // 浮動速度，1 ~ 100 ( 步進 = 差距*speed/100 )
var df_wm_looplimit = 0; // 抵達目的地幾次後停止浮動，0 無限

var navDOM = window.innerHeight; // Nav DOM flag

function layer_wm_resize() {
  if (layer_wm_resize_bak) layer_wm_resize_bak()
  for (i=0;i<a_layer_wm.length;++i) {
    if (a_layer_wm[i].timer!=null) {
      a_layer_wm[i].init()
    }
  }
}

function layer_wm(x1,y1,ps,ss,z) {
  this.id = a_layer_wm.length
  a_layer_wm[this.id] = this
  this.x1=(x1==null ? df_wm_x1 : x1) // 目標值
  this.y1=(y1==null ? df_wm_y1 : y1) // 目標值
  this.positionStyle=(ps==null ? df_wm_positionStyle : ps)
  this.screenStyle=(ss==null ? df_wm_screenStyle : ss)
  this.z=(z==null ? df_wm_z : z)
  document.write('<div id="layer_wm_'+this.id+'" style="position:absolute; z-index:'+this.z+'; filter:Alpha(Opacity=0)"></div>')
  this.layer=document.getElementById('layer_wm_'+this.id)
  this.height=0
  this.width=0
  this.x0=df_wm_x0 // 現在值
  this.y0=df_wm_y0 // 現在值
  this.alpha=df_wm_alpha
  this.refreshFreq=df_wm_refreshFreq
  this.speed=df_wm_speed
  this.looplimit=df_wm_looplimit
  this.curloop=0
  this.sticking=true
  this.posX0=null // 現在絕對座標
  this.posY0=null // 現在絕對座標
  this.posX1=null // 目標畫面座標
  this.posY1=null // 目標畫面座標
  this.timer = null
  this.init=layer_wm_init
  this.timeout=layer_wm_timeout
  this.play=layer_wm_play
  this.stop=layer_wm_stop
  this.hide=layer_wm_hide
}
function layer_wm_play() {
  if (this.layer.innerHTML=='') return
  this.init()
  this.timer = setTimeout('a_layer_wm['+this.id+'].timeout()',this.refreshFreq)
}
function layer_wm_stop() {
  clearTimeout(this.timer)
}
function layer_wm_hide() {
  this.stop()
  this.layer.style.display='none'
}
function layer_wm_init() {
  var x, y
  var x1 = (typeof(this.x1)=='function' ? this.x1() : this.x1)
  var y1 = (typeof(this.y1)=='function' ? this.y1() : this.y1)
  var winW = (navDOM ? innerWidth : document.body.clientWidth)
  var winH = (navDOM ? innerHeight : document.body.clientHeight)
  var barW = (navDOM && (document.width > winW)) ? 20 : 0
  var barH = (navDOM && (document.height > winH)) ? 20 : 0
  if (this.height < 1) this.height = this.layer.clientHeight
  if (this.width < 1) this.width = this.layer.clientWidth
  if (this.height < 1 || this.width < 1 || x1==null || y1==null) return

  if (this.positionStyle == 0) { // 百分比
    this.posX1 = ((winW - this.width)-barW) * (x1/100)
    this.posY1 = ((winH - this.height)-barH) * (y1/100)
    x = ((winW - this.width) - barW) * (this.x0/100)
    y = ((winH - this.height)-barH) * (this.y0/100)
  } else { // 像素
    this.posX1 = x1
    this.posY1 = y1
    x = this.x0
    y = this.y0
  }

  if (this.posX0==null) {
    this.posX0 = (this.x0==0 ? this.posX1 : x) + (this.screenStyle ? (navDOM?pageXOffset:document.body.scrollLeft) : 0)
    this.layer.style.left=this.posX0
  }
  if (this.posY0==null) {
    this.posY0 = (this.y0==0 ? -this.height : y) + (this.screenStyle ? (navDOM?pageYOffset:document.body.scrollTop) : 0)
    this.layer.style.top=this.posY0
  }
}
function layer_wm_timeout() {
  if (this.height < 1 || this.width < 1 || this.posX1==null || this.posY1==null) {
    this.init()
  } else {
    var x = this.posX1 + (this.screenStyle ? (navDOM?pageXOffset:document.body.scrollLeft) : 0) - this.posX0
    var y = this.posY1 + (this.screenStyle ? (navDOM?pageYOffset:document.body.scrollTop) : 0) - this.posY0
    if (x==0 && y==0 && this.looplimit!=0 && !this.sticking) {
      this.curloop++
      this.sticking = true
    } else {
      x = (Math.abs(x) < 100/this.speed ? (Math.abs(x) < 1 ? x : (x > 0 ? 1 : -1)) : x*this.speed/100)
      y = (Math.abs(y) < 100/this.speed ? (Math.abs(y) < 1 ? y : (y > 0 ? 1 : -1)) : y*this.speed/100)
      this.posX0 += x
      this.posY0 += y
      this.layer.style.left = this.posX0
      this.layer.style.top = this.posY0
      if (this.alpha<100) this.layer.style.filter='Alpha(Opacity='+(this.alpha+=5)+')';
      if (this.sticking) this.sticking=false
    }
  }
  if (this.looplimit==0 || this.curloop < this.looplimit) this.timer = setTimeout('a_layer_wm['+this.id+'].timeout()',this.refreshFreq)
}
