var nUtils={
	getScriptPath:function(scriptname){
		var scripts=$A(document.getElementsByTagName("script"));
		for(var i=0; i < scripts.length; i++){
			var s=scripts[i];
			if(s.src && s.src.indexOf(scriptname) != -1){
				return s.src.substring(0, s.src.lastIndexOf('/'));
			}
		}
	},
	getLang:function(){
    var lang='de';
    if(location.search){
      var query=location.search.substr(1);
      query.split('&').each(function(v){
        var pair=v.split("=");
        if(pair[0]=='L' && pair[1]==1){
          lang='en';
          throw $break;
        }
      });
    }
    return lang;
  },
	setProgressState:function(el, bool){	
		if(!$(el)) return false;
		el=$(el);
		if(bool && ! $(el).progressState){
			
			var path=nUtils.getScriptPath('nUtils.js');
			var progDiv=document.createElement('div');			
			var pos=$(el).positionedOffset();
			var dim=Element.getDimensions($(el));
			
			with(progDiv.style){
				position='absolute';
				background="transparent url("+path+"/img/progress.gif) center no-repeat";
				zIndex=550;
				left=pos[0]+'px';
				top=pos[1]+'px';
				width=dim['width']+'px';
				height=dim['height']+'px';
			}
			Element.setOpacity($(el), 0.5);

			if(el.nextSibling) el.parentNode.insertBefore(progDiv, el.nextSibling);
			else el.parentNode.appendChild(progDiv);
			$(el).progressState=true;
			$(el).progressDiv=progDiv;
		}else if($(el).progressState){	
			Element.setOpacity($(el), 1);	
			$(el).parentNode.removeChild($(el).progressDiv);
			$(el).progressState=false;
		}
	},
	loadCSS:function(cssFile){
		var head = document.getElementsByTagName("head")[0];
		var link = document.createElement('link');
		link.setAttribute('href', nFileBrowser.cssFile);
		link.setAttribute('rel', 'stylesheet');
		link.setAttribute('type', 'text/css');
		head.appendChild(link);	
	},
	preloadImg:function(img, func){
		if(img.complete) {
			func();
		}
		else {
			setTimeout(function(){
					nUtils.preloadImg(img, func);
			}, 50);
		}
	}
}

nUtils.overlay=Class.create();
nUtils.overlay.prototype={
  initialize:function(options){
    this.basePath=nUtils.getScriptPath('nUtils.js');
	this.lang=nUtils.getLang();
    this.options=Object.extend({
      createInDomEl:$$('body')[0],
      opacity:0.7,
      style:{
        position:'absolute',
        top:'0px',
        left:'0px',
        width:'100%',
        height:'100%',
        display:'none',
        zIndex:100,
        backgroundColor:'#000000'
      },
      closeBtn:true
    }, options);
    this.additionalLayers=[];
    this.maxZindex=this.options.style.zIndex;
    this.overlay=new Element('div');
    $(this.overlay).setStyle(this.options.style);
    this.options.createInDomEl.appendChild(this.overlay);
    if(this.options.opacity < 1)$(this.overlay).setOpacity(this.options.opacity);

    if(this.options.closeBtn){
      var closeDiv=new Element('div');
      this.closeDiv=closeDiv;
      $(closeDiv).setStyle({
        position:'absolute',
        top:this.options.style.top,
        right:'1px',
       width:'110px',
        display:'none',
        background:'transparent url('+this.basePath+'/img/close_bgleft.gif) left top no-repeat',
        zIndex:++this.maxZindex
      });
      var closeDescr=new Element('div');
      closeDescr.innerHTML=this.lang=='en' ? 'close' : 'schliessen';
      $(closeDescr).setStyle({
        paddingRight:'25px',
        paddingTop:'3px',
        height:'22px',
        background:'transparent url('+this.basePath+'/img/close_bg.gif) left top repeat-x',
        fontSize:'11px',
        marginLeft:'33px',
		textAlign:'right'
      });
      closeDiv.appendChild(closeDescr);
      var closeBtn=new Element('div');
      $(closeBtn).setStyle({
        position:'absolute',
        top:'0px',
        right:'0px',
        width:'22px',
        height:'20px',
        cursor:'pointer',
        background:'transparent url('+this.basePath+'/img/close.gif) center no-repeat'
      });    
      closeDescr.appendChild(closeBtn);
      
      $(closeDiv).observe('click', this.hide.bindAsEventListener(this));  
      this.options.createInDomEl.appendChild(closeDiv);
    }
  },
  show:function(){
    $(this.overlay).show();
    if(this.closeDiv) $(this.closeDiv).show();
    this.additionalLayers.each(function(l){
      if($(l)){
        $(l).setStyle({
          display:'block'
        });
      }
      else l.show();
      
    });
    this.visible=true;
  },
  isVisible:function(){
    return this.visible;
  },
  hide:function(){
    $(this.overlay).hide();
    if(this.closeDiv) $(this.closeDiv).hide();
    this.additionalLayers.each(function(l){
      $(l).hide();
    });
    this.visible=false;
  },
  setStyle:function(style){
    $(this.overlay).setStyle(style);
  },
  appendLayer:function(layer){
    this.additionalLayers.push(layer);
    $(layer).setStyle({
      zIndex:++this.maxZindex
    });
	if(this.closeDiv){
		$(this.closeDiv).setStyle({
		  zIndex:++this.maxZindex
		});
	}
  
  }

}