﻿// class
var CrossDomainIframe = Object();
CrossDomainIframe.SmartIframe = function(ReaderURL, returnedVarName, IFrameID, IFrameURL, ListenerIFrameID)
{
    this.ScriptID = "GETHEIGHTSCRIPTID";
    this.ReaderURL = ReaderURL;
    this.ReturnedVarName = returnedVarName;
    this.IFrameID = IFrameID;
    this.IFrameURL = IFrameURL;
    this.ListenerIFrameID = ListenerIFrameID;
    this.iHeight = -1;
    
    this.DomHeader = document.getElementsByTagName('head')[0];

    this.init = function()
    {
        this.DomIframe = document.getElementById(this.IFrameID);
        
        this.DomHiddenListenerIframe = document.createElement('iframe');
        this.DomHiddenListenerIframe.setAttribute('id', this.ListenerIFrameID);
        this.DomHiddenListenerIframe.setAttribute('name', this.ListenerIFrameID);
        this.DomHiddenListenerIframe.style.display = "none";
        
        document.body.insertBefore(this.DomHiddenListenerIframe, document.body.childNodes[0]);
        if(self.frames[this.ListenerIFrameID].name != this.ListenerIFrameID) 
        { 
            /* *** IMPORTANT: This is a BUG FIX for Internet Explorer *** */ 
            self.frames[this.ListenerIFrameID].name = this.ListenerIFrameID; 
        }
        
        if (document.all)
            this.DomHiddenListenerIframe.attachEvent("onload", this.GetFrameHeight(this));
        else
            this.DomHiddenListenerIframe.addEventListener("load", this.GetFrameHeight(this), false);        
        
        this.DomIframe.setAttribute('src', this.IFrameURL);
    }

    this.GetFrameHeight = function (oSmartFrame)
    {
        if (typeof(oSmartFrame) == 'undefined')
        {
            return;
        }

        return function()
        {
            while (true)
            {
                var ScriptReader = document.getElementById(oSmartFrame.ScriptID);
                if (ScriptReader == null)
                    break;
               try
               {
                    oSmartFrame.DomHeader.removeChild(ScriptReader);
               }
               catch (e)
               {
                    break;
               }
            }
                
            oSmartFrame.DomScript = document.createElement('script');
            oSmartFrame.DomScript.setAttribute('id', oSmartFrame.ScriptID);
            oSmartFrame.DomScript.setAttribute('type', 'text/javascript');
            oSmartFrame.DomScript.setAttribute('src', oSmartFrame.ReaderURL+"&t="+Math.random());
            
            if (document.all)
            {
                oSmartFrame.DomScript.onreadystatechange = oSmartFrame.AutoFitIframeHeight(oSmartFrame);
            }
            else
            {
                oSmartFrame.DomScript.onload = oSmartFrame.AutoFitIframeHeight(oSmartFrame);
            }
            oSmartFrame.DomHeader.appendChild(oSmartFrame.DomScript);
        }
    }
    
    this.AutoFitIframeHeight = function (oSmartFrame)
    {
        return function()
        {
          var height;
            try
            {
                eval("height="+"benesoft_iframe_height");
                if (oSmartFrame.iHeight == height)
                    return;
                else
                    oSmartFrame.iHeight = height;
            }
            catch(e)
            {
                return;
                alert("Height not found.");
            }
            if(document.all) {height += 4;}
            else if(window.opera) {height += 1;}
            else if(!document.all) {height += 10;}
            oSmartFrame.DomIframe.height = height;
        }
    }
}
var BeneSoftware = Object();
BeneSoftware.AutoFitIframeHeight = function (iframeID, iframeSrc)
{
	var contentIframeID = iframeID;
	var contentIframeSrc = iframeSrc;
	var GET_HEIGHT_SERVER_SCRIPT = "http://www.benesoftware.com/orderforms/crossdomain.aspx?o=gh";
	var LISTENER_IFRAME_ID = "listenerFrame";
	var oSmartIframe = new CrossDomainIframe.SmartIframe(GET_HEIGHT_SERVER_SCRIPT, 
							"benesoft_iframe_height", contentIframeID, contentIframeSrc, 
							LISTENER_IFRAME_ID);
							
	oSmartIframe.init();
}
