﻿
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////

var IFrameContent;
if (!IFrameContent) IFrameContent = {};

IFrameContent.iFrameControl = function(element, src)
{
	this.element = IFrameContent.iFrameControl.getElement(element);
    if (!this.element) {
        alert("iFrameControl:: Objeto experado não encotrado: "+element);
        return false;
    }
	this.AlturaInicial=200;
	this.element.height = this.AlturaInicial;
	this.element.src = "aboutblank.html";
	this.src = (src ? src : "aboutblank.html");
	this._counticonteudo_timer = 1;
	this._counticonteudo_timer_maxcount = 100;
	this.conteudo_onunload();
	this.element.siMesmo = this;
//	this.attachBehaviors();
//	this.setConteudo(this.src);
};

IFrameContent.iFrameControl.getElement = function(ele)
{
	if (ele && typeof ele == "string")
		return document.getElementById(ele);
	return ele;
};

IFrameContent.iFrameControl.addEventListener = function(element, eventType, handler, capture)
{
	try
	{
		if (element.addEventListener)
			element.addEventListener(eventType, handler, capture);
		else if (element.attachEvent)
			element.attachEvent("on" + eventType, handler);
	}
	catch (e) {}
};

IFrameContent.iFrameControl.prototype.addFrameEventListeners = function(iFrame)
{
	self = this;
	IFrameContent.iFrameControl.addEventListener(iFrame, "click", function(e) { return self.conteudo_onload(e, iFrame); }, false);
	IFrameContent.iFrameControl.addEventListener(iFrame, "mouseover", function(e) { return self.onFrameMouseOver(e, iFrame); }, false);
	IFrameContent.iFrameControl.addEventListener(iFrame, "mouseout", function(e) { return self.onFrameMouseOut(e, iFrame); }, false);
	IFrameContent.iFrameControl.addEventListener(iFrame, "load", function(e) { return self.conteudo_onload(e, iFrame) }, false);
	IFrameContent.iFrameControl.addEventListener(iFrame, "scroll", function(e) { return self.conteudo_onload(e, iFrame) }, false);
	IFrameContent.iFrameControl.addEventListener(iFrame, "layoutcomplete", function(e) { return self.conteudo_onload(e, iFrame) }, false);
	IFrameContent.iFrameControl.addEventListener(iFrame, "scroll", function(e) { return self.conteudo_onload(e, iFrame) }, false);
	IFrameContent.iFrameControl.addEventListener(iFrame, "resize", function(e) { return self.conteudo_onload(e, iFrame) }, false);
	IFrameContent.iFrameControl.addEventListener(iFrame, "blur", function(e) { return self.conteudo_onload(e, iFrame) }, false);
	IFrameContent.iFrameControl.addEventListener(iFrame, "focus", function(e) { return self.conteudo_onload(e, iFrame) }, false);
        iFrame.onfocus = function(e) { return self.conteudo_onload(e, this) };
        iFrame.onlayoutcomplete = iFrame.onfocus;
        iFrame.onclick = iFrame.onfocus;
	IFrameContent.iFrameControl.addEventListener(iFrame, "unload", function(e) { return self.conteudo_onunload(e, iFrame) }, false);
};

IFrameContent.iFrameControl.prototype.attachBehaviors = function(element)
{
	this.addFrameEventListeners(this.element);
};

IFrameContent.iFrameControl.prototype.attachBehaviors = function(element)
{
	this.addFrameEventListeners(this.element);
};

IFrameContent.iFrameControl.prototype.setConteudo = function(src, forced){
	if (this.element){
	  if(forced || (this.element.src!=src) || (src=="aboutblank.html")){
		this.src = src;
		this.height = this.AlturaInicial;
		this.element.src = this.src;
		this._counticonteudo_timer = 1;
		this.onContentTimeout(event, this.element);
		return true;
	  }else{
		//element.src="aboutblank.html";
	    //return setConteudo(src);
//		conteudo_onload();
		return false;
	  }
	}else{ 
		alert("Não há elemento para conteudo!");
		return false;
	}
};

IFrameContent.iFrameControl.prototype.conteudo_onunload = function(e, iFrame){
	//alert('onunload:: src:='+iconteudo.src);
	//iFrame.height=25;
	//iconteudo.width=788;
};

IFrameContent.iFrameControl.prototype.conteudo_onload = function(e, iconteudo){
	this._counticonteudo_timer = this._counticonteudo_timer + 1;
	if(!iconteudo){
        if(e){
          iconteudo = e.srcElement;
          //alert("conteudo_onload: "+iconteudo.id+"."+e.type+":: "+this._counticonteudo_timer);
        }else{
          if (this._counticonteudo_timer > this._counticonteudo_timer_maxcount){
//                return false;
          }
        }
	};
	if(!iconteudo){
		iconteudo = this.element;
	};
	if(!iconteudo) return false;
/*
	var HH=this.AlturaInicial;
	HH = iconteudo.scrollHeight;
    if((HH>=this.AlturaInicial)||(HH==0)){
        try{
          var oBody = iconteudo.document.body;
          if (!oBody)
          try{
            oBody = (iconteudo.contentWindow) ? iconteudo.contentWindow.document: iconteudo.document.body;
            oBody = (iconteudo.contentDocument) ? iconteudo.contentDocument : iconteudo.contentWindow.document;
          }catch(e){
          };
          if (oBody.readyState == "complete"){
            HH = oBody.scrollHeight;// + (oBody.offsetHeight - oBody.clientHeight);
            // altura mínima 260px no iframe //
          };
          HH = Math.round(HH * 0.8);
        }catch(e){
                window.status = 'Error: ' + e.number + '; ' + e.description;
//                alert(window.status);
        }
	}
	iconteudo.height=HH;
*/
        try{
          if (iconteudo.contentDocument && iconteudo.contentDocument.body.offsetHeight) {
              // W3C DOM (and Mozilla) syntax
              iconteudo.height = iconteudo.contentDocument.body.offsetHeight;
          } else if (iconteudo.Document && iconteudo.Document.body.scrollHeight) {
              // IE DOM syntax
              iconteudo.height = iconteudo.Document.body.scrollHeight;
          }
        }catch(e){
        }

        /*
    if (myIframe) {
        if (myIframe.contentDocument && myIframe.contentDocument.body.offsetHeight) {
            // W3C DOM (and Mozilla) syntax
            myIframe.height = myIframe.contentDocument.body.offsetHeight;
        } else if (myIframe.Document && myIframe.Document.body.scrollHeight) {
            // IE DOM syntax
            myIframe.height = myIframe.Document.body.scrollHeight;
        }
    }
        */

//	if(iconteudo.scrollBottom) iconteudo.scrollBottom();
//iconteudo.width=iconteudo.width;
//	if (this._counticonteudo_timer<=this._counticonteudo_timer_maxcount){
//		conteudo_onload_Timeout(get_nomedoconteudo(),527*this._counticonteudo_timer);
//	}
};

IFrameContent.iFrameControl.prototype.verificaTimer = function (){
	return (this._counticonteudo_timer > this._counticonteudo_timer_maxcount);
};

IFrameContent.iFrameControl.prototype.onContentTimeoutAction = function (e, iFrame){
	e = (e?e:event);
	this.conteudo_onload(e, iFrame);
	/*if (this.verificaTimer()){
		return true;
	}else{
		this.onContentTimeout(e, iFrame);
	}*/
        this.onContentTimeout(e, iFrame);
};

IFrameContent.iFrameControl.prototype.onContentTimeout = function (e, iFrame){
	if(getObj(iFrame.id)) 
		getObj(iFrame.id).siMesmo = this;
	var scriptExec = 
		"setTimeout( " +
		"function(e){ " +
		"   var frm = getObj(\""+iFrame.id+"\"); " +
		"   frm.siMesmo.onContentTimeoutAction(e, frm); "+
//		"   frm.siMesmo.conteudo_onload(e, frm); " +
//		"   if (frm.siMesmo.verificaTimer()){ "+
//		"	   frm.siMesmo.onContentTimeout(e, frm); " +
//		"  } " +
		"}, 20"+((this.verificaTimer())?"00":"0")+")";
	eval(scriptExec);
};

//var FrameTest = new IFrameContent.iFrameControl("frmProcedimentos", "aboutblank.html");

