// CROSSBROWSER.JS
// Funzioni di utilita' per manipolare layer ed immagini.
// Sono compatibili con: Netscape>=4, Explorer>=4
// Fra i vari files JS e' il PRIMO che dev essere incluso

layerRef="";
styleRef="";
isN4=0;
isIE=0;
isN6=0;
// document.all            => EXPLORER 4 o superiore
// document.getElementById => NETSCAPE 6
// document.layers         => NETSCAPE 4
if (document.all)
{
	layerRef=".all['";
	styleRef="'].style";
	isIE=1;
}
else if (document.getElementById)
{
	layerRef=".getElementById('";
	styleRef="').style";
	isN6=1;
}
else // (document.layers)
{
	layerRef=".layers['";
	styleRef="']";
	isN4=1;
}

//inizializzazione del browser
navigatorCaptureEvents()

// (solo Netscape Navigator 4): attiva la gestione degli eventi
function navigatorCaptureEvents()
{	if (isN4)
	{
		document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP );
	}
}

// Restituisce il layer con nome "layerName"
function obj(layerName)
{
	if (layerName == "")
		return null;
	else
		return eval("document"+layerRef+layerName+styleRef);
}

// restituisce l'immagine con nome indicato dalla stringa "imageName" contenuta
// nel layer con nome indicato dalla stringa "layerName"
function getImage(layerName, imageName)
{
	if (isN4)
		return document.layers[layerName].document.images[imageName];
	else // (isIE || isN6)
		return document.images[imageName];
}

// mostra il layer "layerRef"
function showLayer(layerRef)
{
	layerRef.visibility = 'visible';
}

// nasconde il layer "layerRef"
function hideLayer(layerRef)
{
	layerRef.visibility = 'hidden';
}

// scrive la stringa "str" sul layer di nome "layerName"
function writeOnLayer(layerName, str)
{
	if (isN4)
	{
		document.layers[layerName].document.write("<body>" + str + "</body>");
		document.layers[layerName].document.close();
	}
	else if (isIE)
	{
		eval(layerName+'.innerHTML = str;');
	}
	else // (isN6)
	{
		//Thanx Reyn!
		rng = document.createRange();
		el = document.getElementById(''+layerName+'');
		rng.setStartBefore(el);
		htmlFrag = rng.createContextualFragment(str)
		while(el.hasChildNodes()) el.removeChild(el.lastChild);
		el.appendChild(htmlFrag);
		// end of Reyn ;)
	}
}

// to be used after a "moveTo" (problems with MSIE)
function moveRel(layerRef, deltaX, deltaY)
{
	if (isN4)
	{
		layerRef.moveBy(deltaX,deltaY);
	}
	else if (isIE)
	{
		layerRef.pixelLeft += deltaX;
		layerRef.pixelTop  += deltaY;
	}
	else // (isN6)
	{
		newLeft = deltaX+parseInt(layerRef.left);
		newTop =  deltaY+parseInt(layerRef.top);
		layerRef.left = newLeft+"px";
		layerRef.top  = newTop+"px";
	}
}

function moveTo(layerRef, absX, absY)
{
	if (isN6)
	{
		layerRef.left = absX+"px";
		layerRef.top  = absY+"px";
	}
	else
	{
		layerRef.left = absX;
		layerRef.top  = absY;
	}
}
