var ResizeIframe = {   

  wrapperId : "tinc_content",

                

  /**

   * Resizes an iframe sId including oDoc to oDoc's content size.

   * Can be called top-down, i.e. from the including iframe (or it's parents) or bottom-up, i.e. from the included document.

   * In the latter case the iframe element is retrieved programmatically.

   * 

   * @param oDoc  Included page's document object

   * @param sId   ID of including iframe

   */               

  resize : function ( oDoc, sId ) 

  {

    try

    {

      if ( typeof oDoc == "undefined" ) return;

  

      if ( typeof sId != "undefined" ) 

      {

        var iframe = oDoc.getElementById( sId );

        var iframeDoc = iframe.contentWindow.document;

      } else {

        var iframeDoc = oDoc;

        var iframeWindow = iframeDoc.parentWindow || iframeDoc.defaultView;

        var iframe = iframeWindow.frameElement;

      }

      var wrapper = iframeDoc.getElementById( this.wrapperId );



      // make sure we only resize once

      if ( iframeDoc.isIntegrated == true ) { return; }

      

      // switch on transparency for iframe

      iframeDoc.body.style.backgroundColor = "transparent";

      iframe.allowTransparency = "true";

            

      iframeDoc.body.style.padding = "0px";

      iframeDoc.body.style.border = "none";

      

      var tabs = iframeDoc.getElementsByTagName( "table" )

      if ( tabs[0] && tabs[0].className == "dborder" )

     	{		

      	wrapper.setAttribute( "wfx:overridewidth", "true" );

      } else if ( iframeDoc.forms[0] && iframeDoc.forms[0].elements["formname"] ) 

      {

      	wrapper.setAttribute( "wfx:overridewidth", "true" );

      } 

      

      if ( window.addEventListener )

      {   

      	var gcs = iframeDoc.defaultView.getComputedStyle( iframeDoc.body, null);

        var v_margin = parseInt( gcs.getPropertyValue( "margin-top" ) ) + parseInt( gcs.getPropertyValue( "margin-bottom" ) );

        var h_margin = parseInt( gcs.getPropertyValue( "margin-left" ) ) + parseInt( gcs.getPropertyValue( "margin-right" ) );

        var wrapper_width = wrapper.offsetWidth;

        

        var flex = wrapper.getAttribute( "wfx:overridewidth" );

        if ( flex == "true" )

        {

        	wrapper.style.width = "100%";

        } else {

        	iframe.style.width = wrapper_width + h_margin + "px";

        }

        

        // Setting the top padding of the wrapper avoids wrong calculation of the height due to collapsing margins behavior

        wrapper.style.paddingTop = "1px";

        

        height = wrapper.offsetHeight + v_margin ;

      } 

      else if ( window.attachEvent ) 

      {        

        iframeDoc.body.style.margin = "0px";

        var wrapper_width = wrapper.offsetWidth;

        

        var flex = wrapper.getAttribute( "wfx:overridewidth" );

        if ( flex == "true" )

        {

        	wrapper.style.width = "100%";

        } else {

        	iframe.style.width = wrapper_width + "px";

        }

        

        height = wrapper.offsetHeight;

      }



      if ( iframe.scrolling != "yes" ) { height += 20; }

      

      iframe.style.height = height + "px";

      iframeDoc.isIntegrated = true; 

    } catch ( ex )

    {

      return; 

    }

    

    WfxExtrasProcessor.process( oDoc, sId );

  }

}



var WfxExtrasProcessor = {

  process : function ( oDoc, sId)

  {    

    if ( typeof oDoc == "undefined" ) return;

  

    if ( typeof sId != "undefined" ) 

    {

      var iframe = oDoc.getElementById( sId );

      var iframeDoc = iframe.contentWindow.document;

    } else {

      var iframeDoc = oDoc;

      var iframeWindow = iframeDoc.parentWindow || iframeDoc.defaultView;

      var iframe = iframeWindow.frameElement;

    }

    

    // let non-tinc links load in the parent document. this might need some adjustment

    var links = iframeDoc.getElementsByTagName( "a" );

    for ( var i = 0; i < links.length; i++ )

    {

      if ( links[i].href.indexOf( "/tinc" ) == -1 ) links[i].target = "_parent";

    }

    

    // Special case: WebElements forms might do redirection to another page after submission. That's indicated by a non-empty

    // 'redirectionEnabled' attribute of a submit button. 

    var inputs = iframeDoc.getElementsByTagName( "input" );

    for ( var i = 0; i < inputs.length; i++ )

    {

      var input = inputs[i];

      if ( input.getAttribute("redirection") != null && input.getAttribute("redirection") != '' ) 

        input.form.target = "_parent";

    }

  }

}

    

    

