

// Masker ÅäÖÃ
var Masker = {	version:0.1,
				id: "id_masker",
				//className:"class_mask", 
				isShown: false,
				disableTab: true,
				disableSelect: true,
				
				ie: (navigator.appName.indexOf("Explorer") > -1),
				ie6: (navigator.appName.indexOf("Explorer") > -1 && navigator.appVersion.indexOf("6.") > -1)
			};


Masker.mask = function() {
	if(Masker.isShown) return;

	var body = document.getElementsByTagName('BODY')[0];
	var masker = document.getElementById(Masker.id);

	if(!masker) {
		masker = document.createElement('div');	
		masker.id = Masker.id;
		masker.style.position='absolute';
		masker.style.top = "0px";
		masker.style.left = "0px";
		masker.style.border='0px';	
		masker.style.backgroundColor='darkgray';
		masker.style.zIndex=200;
		body.appendChild(masker);
	}
	
	masker.style.width = body.scrollWidth + "px";
	masker.style.height = body.scrollHeight + "px";
	
	//For IE6
	if(Masker.ie6){
		var fullHeight = getViewportHeight();
		var fullWidth = getViewportWidth();		
		if (fullHeight < body.scrollHeight) fullHeight = body.scrollHeight;		
		if (fullWidth < body.scrollWidth) fullWidth = body.scrollWidth;			
		masker.style.height = fullHeight + "px";
		masker.style.width = fullWidth + "px";		
	}
		
	if (Masker.ie) masker.style.filter="alpha(opacity=30)";
	else masker.style.opacity=30/100;
	
	masker.style.display = 'block';
	Masker.isShown = true;

	if(Masker.ie6 && Masker.disableSelect) Masker.hideSelect();		
	if(Masker.disableTab) Masker.disableTabIndex();	
}

Masker.unmask = function (){
	if(!Masker.isShown) return;
	
	var masker = document.getElementById(Masker.id);
	masker.style.display = 'none';	
	
	Masker.isShown = false;
	
	if(Masker.ie6 && Masker.disableSelect) Masker.showSelect();		
	if(Masker.disableTab) Masker.enableTabIndex();
}


Masker.hideSelect = function(){
	if(arguments.length==0)	Masker.visibable(new Array(document), "hidden");
	else Masker.visibable(arguments, "hidden");
}

Masker.showSelect = function(){
	if(arguments.length==0)	Masker.visibable(new Array(document), "visible");
	else Masker.visibable(arguments, "visible");
}

Masker.visibable = function(divs, visibility) {
	var selects = new Array();
	var elements = null;	
	try {
		for(var i=0;i<divs.length;i++) {
			if(typeof divs[i]=='string') 
				elements = document.getElementById(divs[i]).getElementsByTagName('SELECT');
			else
				elements = divs[i].getElementsByTagName('SELECT')
	
			for (var j=0; j<elements.length; j++)
				selects[selects.length] = elements[j]; 				
		}
				
		for (var k=0; k<selects.length; k++)
			selects[k].style.visibility= visibility;
	}catch(e){
		//alert(e.message);
	}
}
	
Masker.disableTabIndex = function(){
	var tabbableTags = new Array("A","BUTTON","TEXTAREA","INPUT","IFRAME","SELECT");
	Masker.tabElements = new Array();
	Masker.tabIndexes = new Array();
	
	for (var i = 0; i < tabbableTags.length; i++) {
		var tagElements = document.getElementsByTagName(tabbableTags[i]);		
		for (var j = 0 ; j < tagElements.length; j++) {				
			Masker.tabElements[Masker.tabElements.length] = tagElements[j];
			Masker.tabIndexes[Masker.tabIndexes.length] = tagElements[j].tabIndex
			tagElements[j].tabIndex="-1";
		}
	}
}

Masker.enableTabIndex = function(){
	for (var i = 0; i < Masker.tabElements.length; i++) 			
		Masker.tabElements[i].tabIndex = Masker.tabIndexes[i];

	Masker.tabElements = null;
	Masker.tabIndexes = null;
}

function getViewportHeight() {
	if (window.innerHeight!=window.undefined) return window.innerHeight;
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientHeight;
	if (document.body) return document.body.clientHeight; 

	return window.undefined; 
}
function getViewportWidth() {
	var offset = 17;
	var width = null;
	if (window.innerWidth!=window.undefined) return window.innerWidth; 
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientWidth; 
	if (document.body) return document.body.clientWidth; 
}


