PseudoFrame = function(element){
  var pseudoFrames = Selector.findChildElements(element, ['.PseudoFrame']);;
  pseudoFrames.each(function(pseudoFrame){

    pseudoFrame.show = function(){
      if(!this.loaded){
        this.load(false);
      }
      this.style.display = 'block';
	  this.onshow();
    }
    $A(['onload','onshow','onhide']).each(function(str){
      var sEvent = pseudoFrame.getAttribute(str);
      pseudoFrame[str] = (sEvent!=null)?new Function('',sEvent):Prototype.emptyFunction;
    });
	pseudoFrame.nbreload = 0;
	pseudoFrame.maxRefresh = pseudoFrame.getAttribute('maxrefresh')!=null?parseInt(pseudoFrame.getAttribute('maxrefresh')):100;
	pseudoFrame.checkReload =function(){
    	var me = this;
    	var sRefresh = this.getAttribute('refresh');
    	if(sRefresh!=null && parseInt(sRefresh)>0 && me.nbreload<me.maxRefresh){
	    	setTimeout(function(){
				me.nbreload ++;
				me.invalidate();        	
        	},parseInt(sRefresh)*1000);
        }
    }; 
    pseudoFrame.load = function(async){
    	
    	var animationclass = this.getAttribute('animationclass');
    	if(animationclass != null)
    		Element.addClassName(this,animationclass);
    	var me = this;	
    	var params = {
          onComplete:function(){
            pseudoFrame.loaded = true;
            pseudoFrame.onload();
            PseudoFrame(pseudoFrame);
            Element.removeClassName(pseudoFrame,animationclass);
            me.checkReload();
            if(pseudoFrame.style.display!='none'){
            	window.onloadpassive(null,pseudoFrame);
            }
          },
          evalScripts: true,
          asynchronous:async
        }
        var httpParam = eval(this.getAttribute('params'));
        if(httpParam!=null){
        	params.parameters = httpParam;
        }
           
    	var a =new Ajax.Updater({success:this,failure:document.createElement('div')},this.getAttribute('src'),params);
    }

    pseudoFrame.hide = function(){
      Element.hide(this);
      this.onhide();
    }
	pseudoFrame.toogle = function(){
      if(this.style.display!='none'){
        this.hide();
      }else{
        this.show();
      }
    }
	pseudoFrame.navigate = function(o){
	  var f = null;
	  try{
	    f = eval(this.getAttribute('params').replace(/Form\.serialize\(|\)/g,''));
	  }catch(e){}
	  navigatePseudoFrame(o,[],[this],[],f);
	}
    pseudoFrame.invalidate = function(async){
      if(async==null){
      	async = true;
      }
      this.loaded = false;
      if(this.style.display!='none'){
        this.load(async);
      }
    }
    if(pseudoFrame.firstChild==null){
      pseudoFrame.invalidate();
    }else{
      pseudoFrame.onload();
      pseudoFrame.loaded = true;
      pseudoFrame.checkReload();
    }
    
  });
}
DOMLoadedInit=EventConcat(DOMLoadedInit,function(){PseudoFrame(document.body)});

