/*
*	Funktionen um den Browser mit einem Layer zu sperren.
*/

var browserHiddenLayerID 	    = "browserHiddenLayer";
var dataLoadIconURL			    = "";
var aktionsLayerCss			    = "aktionsLayerBasis";
var browserLayerWidth           = 0;
var browserLayerHeight          = 0;
var aktiveLayer				    = new Array();
var elementsVisibility_arr	    = new Array(); 
var scrollbarpos                = 0;
var ajaxDataLoadLayerName       = "ajaxDataLoadLayer";




function confirm_close(warningMsg)
{
	var msg = gt("javascript","Möchten Sie das Fenster wirklich schliessen?");
	if(warningMsg)
	{
		msg = warningMsg;
	}

	
	var check=confirm(msg);

	if (check != false)
	{
		closeBrowserLayer();
		
	}
}

//Erstellen Borwserlayer mit einem AktionsLayer und Loadicon
function setBrowserLayer( aktionsLayerID, layerWidth, layerHeight, showCloseButton,warningFlag,warningMsg )
{
	scrollbarpos=document.documentElement.scrollTop;
	var status = false;
	
	if( aktionsLayerID.length > 2 )
	{
		//setzten der Hoehe und Breite
        browserLayerWidth     = layerWidth;
        browserLayerHeight    = layerHeight;        
        
        //setzten der aktionslayer in das view Array
		aktiveLayer.push( aktionsLayerID );
		
		//setzten elemente hidden
		setElementsVisibilityStatus( "hidden" );
		
		var berechnung = 0;
		var browserLayer_OBJ  = document.createElement("div");
       	browserLayer_OBJ.setAttribute('id',browserHiddenLayerID);
				browserLayer_OBJ.setAttribute('name',browserHiddenLayerID);
				

				
				if(warningFlag)
				{
					//browserLayer_OBJ.setAttribute('onclick', "confirm_close("+warningMsg+")");
					
					browserLayer_OBJ.onclick = function() { confirm_close(warningMsg); }

					
				}
				else
				{
					//browserLayer_OBJ.setAttribute('onclick', "closeBrowserLayer();");
					
					browserLayer_OBJ.onclick = function() { closeBrowserLayer(); }
					
				}
				

        browserLayer_OBJ.className = browserHiddenLayerID;


		var aktionsLayer_OBJ = document.createElement("div");
				aktionsLayer_OBJ.setAttribute("id", aktionsLayerID);
				aktionsLayer_OBJ.className = aktionsLayerCss+" "+aktionsLayerID;

		//setzten der neuen width
		if( layerWidth )
		{
			aktionsLayer_OBJ.style.width = layerWidth+"px";
			berechnung = layerWidth / 2;
			aktionsLayer_OBJ.style.marginLeft = "-"+berechnung+"px";
		}

		//setzten der neuen Height
		if( layerHeight )
		{
			aktionsLayer_OBJ.style.height = layerHeight+"px";
			berechnung = layerHeight / 2;
			aktionsLayer_OBJ.style.marginTop = "-"+berechnung+"px";
		}		
			
		if( setBorwserscrollbarStatus( "hidden" ) )
		{
			if( document.body.appendChild( browserLayer_OBJ ) )
			{
				document.body.appendChild( aktionsLayer_OBJ );
				setDataLoadLayer( aktionsLayerID );
				status = true;
			}	
		}		
	}

	return status;
}

//loeschen der browserlayers mit den Aktionslayerm
function closeBrowserLayer()
{
	var puffer_OBJ = "";

	//setzten elemente shown
	setElementsVisibilityStatus( "show" );
	
	for( var i=0; i < aktiveLayer.length; i++ )
	{
		puffer_OBJ = document.getElementById( aktiveLayer[i] );
		if( puffer_OBJ )
		{
			document.body.removeChild( puffer_OBJ );
		}
	}
	
	aktivLayer = new Array();
	
	puffer_OBJ = document.getElementById( browserHiddenLayerID );
	
	if( puffer_OBJ )
	{
		document.body.removeChild( puffer_OBJ );
	}
	
	setBorwserscrollbarStatus( "show" );
	
	window.scrollTo(0,scrollbarpos);
	
}

//steuern der Browser scrollbars
function setBorwserscrollbarStatus( aktion )
{
	var status = false;

	var html_OBJ = $("htmlid");
	var body_OBJ = $("body");


	if( html_OBJ && body_OBJ )
	{
		window.scrollTo(0,0);

		switch( aktion )
		{
			case "hidden":
				html_OBJ.style.overflow = "hidden";
				body_OBJ.style.overflow = "hidden";

			  if( body_OBJ.scroll )
				{
					body_OBJ.scroll = "no";
				}
				
				status = true;
			break
			
			case "show":
				html_OBJ.style.overflow = "";
				body_OBJ.style.overflow = "";

				if( body_OBJ.scroll )
				{
					body_OBJ.scroll = "yes";
				}				
				status = true;
			break;
			
			default: status = true; break;
		}
	}	
	 
	return status;
}

//setzten des DatenLoadLayer
function setDataLoadLayer( zielLayerID )
{
	var status 			= false;
	var newLayer_OBJ 	= "";
	var zielLayer_OBJ 	= $( zielLayerID );
        
	if( zielLayer_OBJ )
	{		
		var	layer_str	 = '<div class="layerCloseIcon" ><a href="javascript:;" onclick="closeBrowserLayer();">X</a></div>';
			layer_str	+= '<div id="'+zielLayerID+'_content"></div>';	
            layer_str	+= '<div id="'+ajaxDataLoadLayerName+'" class="'+ajaxDataLoadLayerName+'" style="width:'+browserLayerWidth+'px; height:'+browserLayerHeight+'px;">&nbsp;</div>';
		    zielLayer_OBJ.innerHTML = layer_str;
		    status = true;
	}
	return status;
}

//setzten des status fuer den ajaxLoadLayer
function setajaxLoadLayerStatus( status ){
    switch (status) {
        case "show":
            showAjaxLoadLayer();
        break;
        case "hidden":
            window.setTimeout("hiddenAjaxLoadLayer()", 500);
        break;            
    }
    return true;
}

function showAjaxLoadLayer(){
    var ajaxLoadLayer_OBJ = document.getElementById(ajaxDataLoadLayerName);
    if( ajaxLoadLayer_OBJ ){
        ajaxLoadLayer_OBJ.style.display = 'block';
    }
    return true;
}

function hiddenAjaxLoadLayer(){
    var ajaxLoadLayer_OBJ = document.getElementById(ajaxDataLoadLayerName);
    if( ajaxLoadLayer_OBJ ){
        ajaxLoadLayer_OBJ.style.display = 'none';
    }
    return true;
}

//set elements visibility
function setElementsVisibilityStatus( aktion )
{
	var elementsTags_arr = new Array();
	elementsTags_arr.push("input");
	elementsTags_arr.push("select");
	elementsTags_arr.push("checkbox");
	elementsTags_arr.push("radio");
	elementsTags_arr.push("textarea");

	switch( aktion )
	{
		case "hidden":
			//auslesen der elemente aus dem HTML DOM
			for(var i=0; i < elementsTags_arr.length; i++ )
			{
				var list_elements_arr = document.getElementsByTagName( elementsTags_arr[i] );
				
				//setzten visibility hidden
				for(var io=0; io < list_elements_arr.length; io++ )
				{
					if( list_elements_arr[io].style.visibility != "hidden")
					{
						list_elements_arr[io].style.visibility = "hidden";
						elementsVisibility_arr.push( list_elements_arr[io] );			
					}
				}
			}		
		break;
		
		case "show":
		
			for(var i=0; i < elementsVisibility_arr.length; i++ )
			{
				elementsVisibility_arr[i].style.visibility = "visible";
			}
			
			elementsVisibility_arr = new Array();
		break;
		
		default:
	}
	
	return true;
}
