// Dynamic Spotlights version 1.1
// Copyright (c) 1999-2000 Butz Yung. All rights reserved.
// No part of the script may be distributed or modified without permission.
// All comments and notice must be left as is.
// Homepage: http://www.animetheme.com

var light_loaded = false

if (!self.speed_factor)
  var speed_factor = 1
if (!self.z_factor)
  var z_factor = 1
if (!self.base_light)
  var base_light = 25
if (!self.light_interval)
  var light_interval = 200

var activeLight, light_timerID
var lights = new Array()

function Light(target, x,y) {
  this.target = target
  this.x = x
  this.y = y
  this.addX = new Array()
  this.addY = new Array()
  for (var i = 0; i < 3; i++) {
    var xy = randomMove(target)
    this.addX[i] = xy[0]
    this.addY[i] = xy[1]
  }
}

function initLight() {
  if ((!document.all) || (navigator.appVersion.indexOf("Win") == -1))
    return

  var ls = document.all.item("spotlight")
  if (!ls)
    return
  var max = (ls.length) ? ls.length : 1

for (var i = 0; i < max; i++) {
  var target = document.all.item("spotlight", i)
  if (!target.filters.Light)
    return

  var light = target.filters.Light
  var width = target.offsetWidth
  var height = target.offsetHeight
  var x = new Array()
  var y = new Array()
  var color = new Array(255,0,0, 0,255,0, 0,0,255)
  var z = Math.round((width + height) / 5 * z_factor)
  for (var k = 0; k < 3; k++) {
    x[k] = random(width)
    y[k] = random(height)
    light.addPoint(x[k],y[k],z, color[k*3],color[k*3+1],color[k*3+2], 100)
  }

  light.addAmbient(255,255,255, base_light)
  lights[i] = new Light(target, x, y)

  target.onmouseover = new Function("startLight(" + i + ")")
  target.onmouseout = stopLight
}

  light_loaded = true
}

function random(num) {
  return Math.round(Math.random() * (num + 1) - 0.5)
}

function randomMove(target, abs) {
  if (!abs)
    abs = new Array()
  var speed = Math.round((target.offsetWidth + target.offsetHeight) / 20 * speed_factor)
  var xy = new Array()
  xy[0] = random(speed)
  xy[1] = speed - xy[0]
  for (var i = 0; i < 2; i++)
    if ((!abs[i]) && (Math.random() > 0.5))
      xy[i] = -xy[i]
  return xy
}

function moveLight() {
  var target = activeLight.target
  var light = target.filters.Light
  var dim = new Array(target.offsetWidth, target.offsetHeight)
  var abs = new Array(false,false)
  var sign = new Array(1,1)
  for (var i = 0; i < 3; i++) {
    var xy = new Array(activeLight.x[i], activeLight.y[i])
    var isNewLoc = false
    for (var k = 0; k < 2; k++) {
      var num = xy[k]
      if (num <= 0) {
        abs[k] = true
        isNewLoc = true
      }
      else if (num >= dim[k]) {
        abs[k] = true
        sign[k] = -1
        isNewLoc = true
      }
    }
    if (isNewLoc) {
      var addXY = randomMove(target, abs)
      addXY[0] *= sign[0]
      addXY[1] *= sign[1]
      activeLight.addX[i] = addXY[0]
      activeLight.addY[i] = addXY[1]
    }
    xy[0] += activeLight.addX[i]
    xy[1] += activeLight.addY[i]
    activeLight.x[i] = xy[0]
    activeLight.y[i] = xy[1]
    var z = Math.round((dim[0] + dim[1]) / 5 * z_factor)
    light.MoveLight(i, xy[0],xy[1],z, true)
  }
  light_timerID = setTimeout("moveLight()", light_interval)
}

function startLight(id) {
  var target = document.all.item("spotlight", id)
  if (!light_loaded || target.complete == false)
    return
  activeLight = lights[id]
  activeLight.target.filters.Light.enabled = 1
  moveLight()
}

function stopLight() {
  if (!light_loaded || !activeLight)
    return
  if (light_timerID)
    clearTimeout(light_timerID)
  light_timerID = null
  activeLight.target.filters.Light.enabled = 0
  activeLight = null
}
