Type.registerNamespace("Sys.Extended.UI.HtmlEditor.Popups"); Sys.Extended.UI.HtmlEditor.Popups.Popup = function(element) { Sys.Extended.UI.HtmlEditor.Popups.Popup.initializeBase(this, [element]); this._iframe = null; this._top = 0; this._left = 0; this._doc = null; this._initialContent = ""; this._cssPath = ""; this._autoDimensions = true; this._registeredFields = []; this._registeredHandlers = []; this._app_onload$delegate = Function.createDelegate(this, this._app_onload); this.isOpened = false; this.isLoaded = false; this.isLoading = false; } Sys.Extended.UI.HtmlEditor.Popups.Popup.prototype = { getDocument: function() { return this._doc; }, getPopupMediator: function() { if(this._iframe.contentWindow && this._iframe.contentWindow.popupMediator) return this._iframe.contentWindow.popupMediator; else return null; }, get_registeredFields: function() { return this._registeredFields; }, set_registeredFields: function(value) { this._registeredFields = eval(value); }, get_registeredHandlers: function() { return this._registeredHandlers; }, set_registeredHandlers: function(value) { this._registeredHandlers = eval(value); }, get_initialContent: function() { return this._initialContent; }, set_initialContent: function(value) { this._initialContent = value; }, get_cssPath: function() { return this._cssPath; }, set_cssPath: function(value) { this._cssPath = value; }, get_autoDimensions: function() { return this._autoDimensions; }, set_autoDimensions: function(value) { this._autoDimensions = value; }, get_iframe: function() { return this._iframe; }, set_iframe: function(value) { this._iframe = value; }, checkCorrectLoaded: function(func) { var popup = this; if(popup.isLoaded && (popup._iframe.style.height == "0px" || popup._iframe.style.width == "0px")) this.isLoaded = false; if(!this.isLoaded) { if(!this.isLoading) this.reload(); if(typeof func != "undefined") setTimeout(func, 10); return false; } return true; }, _baseOpen: function(callback, top, left) { var popup = this; if(!this.checkCorrectLoaded(function() { popup._baseOpen(callback, top, left); })) return; var element = this.get_element(); if(typeof left != "undefined") this._left = parseInt(left); if(typeof top != "undefined") this._top = parseInt(top); element.style.top = this._top + "px"; element.style.left = this._left + "px"; setTimeout(function() { if(typeof callback == "function") popup._onDocumentLoaded(callback); popup.isOpened = true; }, 0); }, open: function(callback, top, left) { this._baseOpen(callback, top, left); }, close: function(callback) { var element = this.get_element(); this.isOpened = false; element.style.top = "-2000px"; element.style.left = "-2000px"; if(typeof callback == "function") callback(); }, reload: function() { this.isLoading = true; var element = this.get_element(); var _parentNode_ = element.parentNode; document.body.appendChild(element); _parentNode_.appendChild(this.get_element()); this._doc = this._iframe.contentWindow.document; this._doc.open(); var html = new Sys.StringBuilder(); html.append(""); if(this._cssPath.length > 0) html.append(""); html.append(""); if(this._autoDimensions) html.append("
"); html.append(this._initialContent); if(this._autoDimensions) html.append("
"); html.append(""); this._doc.write(html.toString()); this._doc.close(); this.isLoaded = false; this._afterReload(); }, _afterReload: function() { var contentWindow = this._iframe.contentWindow, popup = this; this.isLoaded = contentWindow.__loaded__; if(!(popup._doc.body && popup._doc.body.innerHTML)) this.isLoaded = false; if(!this.isLoaded) { setTimeout(function() { popup._afterReload() }, 10); // waiting for loading return; } this.isLoaded = false; contentWindow.popupMediator = {}; contentWindow.popupMediator.registeredFields = this._registeredFields; contentWindow.popupMediator.registeredHandlers = this._registeredHandlers; contentWindow.popupMediator.get_callMethodByName = function(name) { var handlers = contentWindow.popupMediator.registeredHandlers; for(var i = 0; i < handlers.length; i++) { var handler = handlers[i]; if(handler.name == name) return handler.callMethod; } return null; }; contentWindow.popupMediator.set_callMethodByName = function(name, value) { var handlers = contentWindow.popupMediator.registeredHandlers; for(var i = 0; i < handlers.length; i++) { var handler = handlers[i]; if(handler.name == name) handler.callMethod = value; } }; contentWindow.popupMediator.getField = function(name) { var registeredFields = contentWindow.popupMediator.registeredFields; for(var i = 0; i < registeredFields.length; i++) { var registeredField = registeredFields[i]; if(registeredField.name == name) return contentWindow.document.getElementById(registeredField.clientID); } return null; }; contentWindow.Sys = Sys; for(var i = 0; i < this._registeredHandlers.length; i++) $find(this._registeredHandlers[i].clientID).activate(contentWindow.document.getElementById(this._registeredHandlers[i].clientID)); if(Sys.Extended.UI.HtmlEditor.isIE) { popup._doc.onselectstart = function() { var event = popup._iframe.contentWindow.event; var tagName = event.srcElement.tagName.toUpperCase(); if(tagName == "INPUT" || tagName == "TEXTAREA") return true; return false; }; } else { popup._doc.onmousedown = function disableselect(e) { var tagName = e.target.tagName.toUpperCase(); if(tagName == "INPUT" || tagName == "TEXTAREA" || tagName == "SELECT") return true; if(Sys.Extended.UI.HtmlEditor.isSafari) if(tagName == "TABLE" || tagName == "TR" || tagName == "TD" || tagName == "DIV") return true; return false; }; var aInp = popup._doc.getElementsByTagName('input'); for(var i = 0; i < aInp.length; i++) aInp[i].setAttribute('autocomplete', 'off') } if(this._autoDimensions) { popup._iframe.style.height = "1000px"; popup._iframe.style.width = "1000px"; setTimeout(function() { popup._iframe.style.height = popup._doc.body.firstChild.offsetHeight + "px"; popup._iframe.style.width = popup._doc.body.firstChild.offsetWidth + "px"; popup.isLoaded = true; popup.isLoading = false; }, 0); } else { popup.isLoaded = true; popup.isLoading = false; } }, _onDocumentLoaded: function(callback) { var popup = this; if(!this.isLoaded) { setTimeout(function() { popup._onDocumentLoaded(callback) }, 10); // waiting for loading return; } this.isLoaded = true; callback(this._iframe.contentWindow); }, initialize: function() { this.__appLoaded__ = false; Sys.Extended.UI.HtmlEditor.Popups.Popup.callBaseMethod(this, "initialize"); Sys.Application.add_load(this._app_onload$delegate); }, dispose: function() { Sys.Application.remove_load(this._app_onload$delegate); if(this.isOpened) this.close(); Sys.Extended.UI.HtmlEditor.Popups.Popup.callBaseMethod(this, "dispose"); }, _app_onload: function(sender, e) { if(this.__appLoaded__) return; this.__appLoaded__ = true; var element = this.get_element(); if(Sys.Extended.UI.HtmlEditor.isReallyVisible(element)) { this._parentNode_ = element.parentNode; this.reload(); } } } Sys.Extended.UI.HtmlEditor.Popups.Popup.registerClass("Sys.Extended.UI.HtmlEditor.Popups.Popup", Sys.UI.Control);
Web hosting by Somee.com