Subversion Repositories Applications.papyrus

Rev

Blame | Last modification | View Log | RSS feed

if(!dojo._hasResource["dijit._base.window"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dijit._base.window"] = true;
dojo.provide("dijit._base.window");

dijit.getDocumentWindow = function(doc){
        //      summary
        //      Get window object associated with document doc

        // With Safari, there is not way to retrieve the window from the document, so we must fix it.
        if(dojo.isSafari && !doc._parentWindow){
                /*
                        This is a Safari specific function that fix the reference to the parent
                        window from the document object.
                */
                var fix=function(win){
                        win.document._parentWindow=win;
                        for(var i=0; i<win.frames.length; i++){
                                fix(win.frames[i]);
                        }
                }
                fix(window.top);
        }

        //In some IE versions (at least 6.0), document.parentWindow does not return a
        //reference to the real window object (maybe a copy), so we must fix it as well
        //We use IE specific execScript to attach the real window reference to
        //document._parentWindow for later use
        if(dojo.isIE && window !== document.parentWindow && !doc._parentWindow){
                /*
                In IE 6, only the variable "window" can be used to connect events (others
                may be only copies).
                */
                doc.parentWindow.execScript("document._parentWindow = window;", "Javascript");
                //to prevent memory leak, unset it after use
                //another possibility is to add an onUnload handler which seems overkill to me (liucougar)
                var win = doc._parentWindow;
                doc._parentWindow = null;
                return win;     //      Window
        }

        return doc._parentWindow || doc.parentWindow || doc.defaultView;        //      Window
}

}