var bV=parseInt(navigator.appVersion);
var ns=(document.layers) ? 1 : 0;
var ie=((document.getElementById) && (bV >= 4)) ? 1 : 0;
var ff = ((navigator.appName == "Netscape") && (bV >= 5)) ? 1 : 0;
var flag = (ns || ie) ? 1 : 0;
var timerID;
var timerIDl;
var timerIDr;
var kurs = -0.5;
var nomer = 0;
var lasta = 8;
var egx = 0;
var egy = 0;
var egvx = 4;
var egvy = 2;
var tut = 200;

var vmin = 1;
var vmax = 10;
var vr = 5;


function createLayer(name, left, top, width, Height, visible, content) {
	var layer;
	if (ns) {
		document.writeln('<layer name="' + name + '" left=' + left + ' top=' + top + ' width='+width+' height='+Height+' visibility=' + (visible ? '"show"' : '"hide"') + '>');
		document.writeln(content);
		document.writeln('</layer>');
		layer = getLayer(name);
		layer.width = width;
		layer.height = Height;
	}
	if (ie) {
		document.writeln('<div id="' + name + '" style="position:absolute; left:' + left + 'px; top:' + top + 'px; width:'+width+'px; height:'+Height+'px; visibility:' + (visible ? 'visible;' : 'hidden;') + '">');
		document.writeln(content);
		document.writeln('</div>');
	}
}

function Flake(chipname) {	this.name = chipname; }

function startFlakes() {
	if (!flag) { return; }
	var i;
	getWindowSize();
			egx = pageW * Math.random() + pageX;
	   	egy = pageH * Math.random() + pageY;
	for (i = 0; i < flakes.length; i++) {
		moveLayer(flakes[i].name, egx, egy);
		hideLayer(flakes[i].name);
  	}
	buzz();
}

function moveLayer(name, x, y) {
	var layer = getLayer(name);
	if (ns) { layer.moveTo(x, y); }
	if (ie) { layer.left = x; layer.top  = y; }
}
function moveLayer2(l, x, y) {
	if (ns) { l.moveTo(x, y); }
	if (ie) { l.left = x; l.top  = y; }
}

function showLayer(name) {
	var layer = getLayer(name);
	if (ns) { layer.visibility = "show"; }
	if (ie) { layer.visibility = "visible"; }
}

function hideLayer(name) {
	var layer = getLayer(name);
	if (ns) { layer.visibility = "hide"; }
	if (ie) { layer.visibility = "hidden"; }
}



function getLayer(name) {
	if (ns) {
		return(document.layers[name]);
	} else if (ie) {
		layer = eval('document.getElementById("' + name + '").style');
		return(layer);
	} else {
		return(null);
	}
}

/*
function getLayer(name){
 //DOM1
  if(document.getElementById) return document.getElementById(name);
 //MSIE4
  if(document.all) return document.all[name];
 //Netscape 4
  if(document.layers) return document.layers[name];
 //неподдерживаемый браузер
  return null;
}*/

//рекурсивный поиск по слоям
function findLayer(what, where){
  if(!where) return
  var i,l,parent
  var len=where.length
  for(i=0;i<len;i++){
    parent=where[i].document.layers
    l=parent[what]
    if(l) return l
    l=findLayer(what, parent)
  }
  return false
}

function getLayerRec(layerName, parentLayerName){
  if(document.getElementById) return document.getElementById(layerName)
  if(document.all) return document.all[layerName]
  if(document.layers){
    if(parentLayerName){
      return findLayer(layerName, eval(parentLayerName))
    }else{
      return findLayer(layerName, document.layers)
    }
  }
}

// X-координата верха слоя

function getLayerLeft(xlayer){
  //if(isMSIE || isOpera5 || isMozilla){
  var ytop=0;
  if(ie) {
  	ytop=xlayer.offsetLeft;
  	layer=xlayer.offsetParent;
  	while(xlayer !=document.body) {
  		ytop+=xlayer.offsetLeft;
  		xlayer=xlayer.offsetParent;
  	}
  	
    return ytop;
  }else if(ns) {//if(isNetscape4){
    return xlayer.pageX
  }
  return 0;
}

// Y-координата верха слоя

function getLayerTop(xlayer){
  //if(isMSIE || isOpera5 || isMozilla){
  var ytop=0;
  if(ie) {
  	ytop=xlayer.offsetTop;
  	layer=xlayer.offsetParent;
  	while(xlayer !=document.body) {
  		ytop+=xlayer.offsetTop;
  		xlayer=xlayer.offsetParent;
  	}
  	
    return ytop;
  }else if(ns) {//if(isNetscape4){
    return xlayer.pageY
  }
  return 0;
}

function getWindowSize() {
	if(ns || ff) {
		pageX=window.pageXOffset;
		pageW=window.innerWidth - 20 - 120;
		pageY=window.pageYOffset;
		pageH=window.innerHeight - 8 - 84;
		if (ff) pageH -= 4;
	} else {
		pageX=document.body.scrollLeft;
		pageW=document.body.offsetWidth - 20 - 120;
		pageY=document.body.scrollTop;
		pageH=document.body.offsetHeight - 8 - 84;
	} } 


function buzz() {

	hideLayer(flakes[ lasta ].name);
	getWindowSize();
	egx += egvx*kurs*6;
	egy += egvy*2;
	if(egy >= pageY + pageH) { egvy *= -1; egy = pageY + pageH; }
	if(egy <= pageY) { egvy = egvy *= -1; egy = pageY; }
	if (egx < pageX) { egx = pageX; }
	if (egx > pageX + pageW) { egx = pageX + pageW; }
		
	egvx += vr * (Math.random()-0.5);
	if(egvx > vmax)  { egvx = vmax*2 - egvx; }
	if(egvx < vmin) { egvx = vmin*2 - egvx; }
	egvy += (Math.random()-0.5);
	if((egvy > (vmax/2))||(egvy < (-vmax)/2))  { egvy = 0; }
	
	if (	(Math.random() > 0.96) || (egx <= pageX) || (egx >= pageX + pageW)	)
	{
	  showLayer(flakes[ lasta ].name);
	  kurs *= -1;
	  timerID = setTimeout("buzz()", tut*2);
	  
	  if (kurs < 0)
	  	{
	  buzr();
	  timerIDr = setTimeout("buzl()", tut);
	   }
	   else
	   {	  
	  buzl();
	  timerIDr = setTimeout("buzr()", tut);
	   }
   }

	else 
	
	{	
		nomer = nomer + 2;
   	if ( nomer >= 8 ) { nomer = nomer - 8; }	
   	lasta = nomer + 0.5 + kurs;
		moveLayer(flakes[ lasta ].name, egx, egy);
		showLayer(flakes[ lasta ].name);	
		timerID = setTimeout("buzz()", tut);		
	}	
}


function buzl() {
   hideLayer(flakes[ lasta ].name);
	lasta = 8;
   moveLayer(flakes[ lasta ].name, egx, egy);
	showLayer(flakes[ lasta ].name);	
}

function buzr() {
   hideLayer(flakes[ lasta ].name);
   lasta = 9;
	moveLayer(flakes[ lasta ].name, egx, egy);
	showLayer(flakes[ lasta ].name);	
}
