var lastLayer;

function getLayer(whichLayer){

	var thisLayer;
	if (document.getElementById)	{
		// this is the way the standards work
		thisLayer = document.getElementById(whichLayer);
	}else if (document.all){
		// this is the way old msie versions work
		thisLayer = document.all[whichLayer];
	}else if (document.layers){
		// this is the way nn4 works
		thisLayer = document.layers[whichLayer];
	}	
	
	return thisLayer;
}

function toggleLayer(whichLayer){
	lastLayer=whichLayer;
	var thisLayer = getLayer(whichLayer);

	if(thisLayer!=null)	
		thisLayer.style.display =  thisLayer.style.display=="block" ? "none" : "block";
}

function hideLayer(whichLayer){
	lastLayer=whichLayer;
	var thisLayer = getLayer(whichLayer);
	
	if(thisLayer!=null)
		thisLayer.style.display = "none";
}

function showLayer(whichLayer){
	lastLayer=whichLayer;	
	var thisLayer = getLayer(whichLayer);
	
	if(thisLayer!=null)
		thisLayer.style.display = "block";
}

function appendLayer(sourceLayer,destinationLayer,layerCount){

	var thisLayer = getLayer(sourceLayer);
	var thatLayer = getLayer(destinationLayer);

//	thatLayer.innerHTML = thatLayer.innerHTML  + thisLayer.innerHTML;
	var newDiv;
	if(thisLayer!=null && thatLayer!=null){
		var newLayer = document.createElement('div');
		newDiv = new Date().getTime();
		newLayer.setAttribute("id",newDiv);
		var innerHTML = thisLayer.innerHTML;
		if(layerCount){
			innerHTML = innerHTML.replace(/__ROW__/ig,layerCount);
		}
		newLayer.innerHTML = innerHTML;
		thatLayer.appendChild(newLayer);
	}
	return newDiv;

}
function moveLayer(sourceLayer,destinationLayer){
	var newDiv = appendLayer(sourceLayer,destinationLayer);
	removeLayer(sourceLayer);
	return newDiv;

}
function removeLayer(whichLayer){
	
	var thisLayer = getLayer(whichLayer);

//	thisLayer.innerHTML = '';
	if(thisLayer){
		thisLayer.style.display = "block";
		thisLayer.parentNode.removeChild(thisLayer);
	}


}

function removeLayerContents(whichLayer){
	
	var thisLayer = getLayer(whichLayer);

//	thisLayer.innerHTML = '';
	if(thisLayer){
		thisLayer.style.display = "block";
		thisLayer.innerHTML = '';
	}


}

function copyLayer(sourceLayer, destinationLayer){
	
	// remove destination layer's contents
	removeLayerContents(destinationLayer);
	appendLayer(sourceLayer, destinationLayer);
}


function fadeLayer(whichLayer,startOpacity,finishOpacity,stepOpacity,timeoutOpacity,opacity){
	
	//console.log("fadeLayer('"+whichLayer+"',"+startOpacity+","+finishOpacity+","+stepOpacity+","+timeoutOpacity+","+opacity+")");
	
	var thisLayer = getLayer(whichLayer);
	if(!startOpacity && thisLayer.style.display == 'none'){
		startOpacity = 0; // fade in
		finishOpacity = 100;
	}else if(!startOpacity && thisLayer.style.display != 'none'){
		startOpacity = 100; // fade out
		finishOpacity = 0;
	}
	
	if(!timeoutOpacity)
		timeoutOpacity = 300;
	if(!stepOpacity)
		stepOpacity = 10;
		
	if(!opacity){opacity=startOpacity;}
	//~ if(!opacity && startOpacity < finishOpacity){opacity=startOpacity;}
	//~ else if(!opacity && startOpacity > finishOpacity){opacity=finishOpacity;}

	if(startOpacity < finishOpacity && opacity<=startOpacity){
			showLayer(whichLayer);
	}
	if(startOpacity > finishOpacity && opacity-stepOpacity<=finishOpacity){
			hideLayer(whichLayer);	
	}		
	

	if (document.getElementById)	{
		// this is the way the standards work
		thisLayer.style.opacity=(opacity/100);
		
	}
	if (document.all){
		thisLayer.style.filter = 'alpha(opacity='+opacity+')';
	//	thisLayer.style.filters.alpha.opacity=30; //IE4 syntax
	}
	if(document.layers){
		thisLayer.style.MozOpacity=(opacity/100);         //NS6 syntax	
	}
	
	//window.status = "fadeLayer('"+whichLayer+"',"+startOpacity+","+finishOpacity+","+stepOpacity+","+timeoutOpacity+","+opacity+")";	

	
	if(startOpacity < finishOpacity && opacity <= finishOpacity){
		opacity += stepOpacity; 	
	}else if(startOpacity > finishOpacity && opacity >= finishOpacity){
		opacity -= stepOpacity; 
	} 

	if((startOpacity < finishOpacity && opacity > startOpacity && opacity <= finishOpacity) || (startOpacity > finishOpacity && opacity < startOpacity && opacity >= finishOpacity)){
		setTimeout("fadeLayer('"+whichLayer+"',"+startOpacity+","+finishOpacity+","+stepOpacity+","+timeoutOpacity+","+opacity+")",timeoutOpacity);
	}
}
