window.onerror = null;
var topMargin = 30;
var topOffset = 600;
var slideTime = 1200;
var ns6 = (!document.all && document.getElementById);
var ie4 = (document.all);
var ns4 = (document.layers);
var ie7 = (!ns6 && (document.documentElement));

function startFloater() {
  if (ie7) {
    pageWidth = document.documentElement.clientWidth;
    pageHeight = document.documentElement.clientHeight;
    layerSetup();
    floatObject();
  } else if(ie4) {
    pageWidth = document.body.clientWidth;
    pageHeight = document.body.clientHeight;
    layerSetup();
    floatObject();
   } else if (ns6||ns4) {
    pageWidth = innerWidth;
    pageHeight = innerHeight;
    layerSetup();
    floatObject();
  }
}

function layerSetup() {
  floatLyr = new layerObject('floatLayer', 30);
  window.setInterval("main()", 10);
}

function layerObject(id,left) {
  if (ns6 || ie7) {
    this.obj = document.getElementById(id).style;
    this.obj.left = left;
    return this.obj;
  }
  else if(ie4) {
    this.obj = document.all[id].style;
    this.obj.left = left;
    return this.obj;
  }
  else if(ns4) {
    this.obj = document.layers[id];
    this.obj.left = left;
    return this.obj;
   }
}

function floatObject() {
  if (ie7) {
    findHt = document.documentElement.clientHeight;
  } else if(ie4) {
    findHt = document.body.clientHeight;
   } else if (ns4 || ns6) {
    findHt = window.innerHeight;
  }
}

function main() {
	var x,y;
	if (self.pageYOffset) // all except Explorer
	{
		x = self.pageXOffset;
		y = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
		// Explorer 6/7 Strict
	{
		x = document.documentElement.scrollLeft;
		y = document.documentElement.scrollTop;
	}
	else if (document.body) // all other Explorers
	{
		x = document.body.scrollLeft;
		y = document.body.scrollTop;
	}
	this.scrollTop = y;

  if (ie7) {
    this.currentY = floatLayer.style.pixelTop;
    mainTrigger();
  } else if(ie4) {
    this.currentY = floatLayer.style.pixelTop;
    mainTrigger();
   } else if (ns4) {
    this.currentY = document.layers["floatLayer"].top;
    mainTrigger();
  } else if(ns6) {
    this.currentY = parseInt(document.getElementById('floatLayer').style.top);
    mainTrigger();
  }
}

function mainTrigger() {
  var newTargetY = this.scrollTop + this.topMargin;
  if (newTargetY < topOffset) {
    newTargetY = topOffset;
  }
  if ( this.currentY != newTargetY ) {
    if ( newTargetY != this.targetY ) {
      this.targetY = newTargetY;
      floatStart();
    }
    animator();
   }
}

function floatStart() {
  var now = new Date();
  this.A = this.targetY - this.currentY;
  this.B = Math.PI / ( 2 * this.slideTime );
  this.C = now.getTime();
  if (Math.abs(this.A) > this.findHt) {
    this.D = this.A > 0 ? this.targetY - this.findHt : this.targetY + this.findHt;
    this.A = this.A > 0 ? this.findHt : -this.findHt;
  }
  else {
    this.D = this.currentY;
   }
}

function animator() {
  var now = new Date();
  var newY = this.A * Math.sin( this.B * ( now.getTime() - this.C ) ) + this.D;
  newY = Math.round(newY);
  if (( this.A > 0 && newY > this.currentY ) || ( this.A < 0 && newY < this.currentY )) {
    if ( ie4 )document.all.floatLayer.style.pixelTop = newY;
    if ( ns6 )document.getElementById('floatLayer').style.top = newY + "px";
    if ( ns4 )document.layers["floatLayer"].top = newY;
   }
}
