+ __cancelLogin: function(noUIModifications) {
+ if(this.__cancelLoginCallback)
+ this.__cancelLoginCallback(noUIModifications);
+ },
+ __loginConnect: function(e) {
+ new Event(e).stop();
+ if(this.validate() === false)
+ return;
+
+ this.__performLogin(function() {
+ var data = this.validate();
+ if(data === false) {
+ /* we're logged in -- show the normal join button */
+ this.util.exec("[name=connectbutton]", this.util.setVisible(true));
+ return;
+ }
+
+ this.fireEvent("close");
+ this.options.callback(data);
+ }.bind(this), "loginconnectbutton");
+ },
+ __login: function(e) {
+ new Event(e).stop();
+
+ this.__cancelLogin(true);
+
+ this.__performLogin(function() {
+ var focus = "connect";
+ if(!this.options.autoConnect) {
+ var nick = this.rootElement.getElement("input[name=nickname]").value, chan = this.rootElement.getElement("input[name=channels]").value;
+ if(!nick) {
+ focus = "nickname";
+ } else if(!chan) {
+ focus = "channels";
+ }
+ }
+ this.util.exec("[name=" + focus + "]", this.util.focus);
+ }.bind(this), "login");
+ },
+ __performLogin: function(callback, calleename) {
+ Cookie.write("jslogin", "1");
+
+ var handle = window.open("/auth", this.__windowName, "status=0,toolbar=0,location=1,menubar=0,directories=0,resizable=0,scrollbars=1,height=280,width=550");
+
+ if(handle === null || handle === undefined) {
+ Cookie.dispose("jslogin");
+// Cookie.write("redirect", document.location);
+// window.location = "auth?";
+ return;
+ }
+
+ var closeDetector = function() {
+ if(handle.closed)
+ this.__cancelLoginCallback();
+ }.bind(this);
+ var closeCallback = closeDetector.periodical(100);
+
+ this.__cancelLoginCallback = function(noUIModifications) {
+ $clear(closeCallback);
+
+ Cookie.dispose("jslogin");
+
+ try {
+ handle.close();
+ } catch(e) {
+ }
+
+ if(!noUIModifications) {
+ this.util.exec("[name=loggingin]", this.util.setVisible(false));
+ this.util.exec("[name=" + calleename + "]", this.util.setVisible(true));
+ }
+ this.__cancelLoginCallback = null;
+ }.bind(this);
+
+ this.util.exec("[name=loggingin]", this.util.setVisible(true));
+ this.util.exec("[name=" + calleename + "]", this.util.setVisible(false));
+
+ __qwebircAuthCallback = function(username) {
+ this.__cancelLoginCallback(true);
+
+ this.util.exec("[name=loggingin]", this.util.setVisible(false));
+ this.util.exec("[name=loginstatus]", this.util.setVisible(true));
+ this.util.exec("[name=authname]", this.util.setText(username));
+ callback();
+ }.bind(this);
+
+ },