/***********************************************************************************************************
 * com.lovedrome.javascript.Lovedrome
 * Location: http://www.lovedrome.com/library/com/lovedrome/javascript/Lovedrome.js
 * Version Location: http://www.lovedrome.com/library/com/lovedrome/javascript/lovedrome/builds/20070616/Lovedrome.js
 * Index Version Location: http://www.lovedrome.com/library/com/lovedrome/javascript/lovedrome/index.html
 * © Open Class Library (http://www.lovedrome.com/)
***********************************************************************************************************/
if (typeof com == "undefined") {com = {};};
if (typeof com.lovedrome == "undefined") {com.lovedrome = {};};
if (typeof com.lovedrome.javascript == "undefined") {com.lovedrome.javascript = {};};

if (typeof com.lovedrome.javascript.Lovedrome == "undefined") {
 com.lovedrome.javascript.Lovedrome = function() {};
 
 com.lovedrome.javascript.Lovedrome.prototype = new com.oclib.javascript.lang.Root(); 
 
 com.lovedrome.javascript.Lovedrome.prototype.classCreated = "20070603"; 
 com.lovedrome.javascript.Lovedrome.prototype.classCreator = "http://www.lovedrome.com/"; 
 com.lovedrome.javascript.Lovedrome.prototype.classIndexLocation = "http://www.lovedrome.com/library/com/lovedrome/"; 
 com.lovedrome.javascript.Lovedrome.prototype.classLocation = "http://www.oclib.com/library/com/lovedrome/javascript/Lovedrome.js"; 
 com.lovedrome.javascript.Lovedrome.prototype.className = "Log"; 
 com.lovedrome.javascript.Lovedrome.prototype.classNamespace = "com.lovedrome.javascript.Lovedrome"; 
 com.lovedrome.javascript.Lovedrome.prototype.classVersion = "20070615"; 
 com.lovedrome.javascript.Lovedrome.prototype.classVersionIndexLocation = "http://www.lovedrome.com/library/com/lovedrome/javascript/lovedrome/builds/20070616/index.html";  
 com.lovedrome.javascript.Lovedrome.prototype.classVersionLocation = "http://www.lovedrome.com/library/com/lovedrome/javascript/lovedrome/builds/20070616/Lovedrome.js";
 
 com.lovedrome.javascript.Lovedrome.prototype.dom = new com.oclib.javascript.util.Dom();
  com.lovedrome.javascript.Lovedrome.prototype.getDom = function () {return this.dom;};
  com.lovedrome.javascript.Lovedrome.prototype.setDom = function (dom) {this.dom = dom; return 1;};
 com.lovedrome.javascript.Lovedrome.prototype.email;
  com.lovedrome.javascript.Lovedrome.prototype.getEmail = function () {return this.email;};
  com.lovedrome.javascript.Lovedrome.prototype.setEmail = function (email) {this.email = email; return 1;};
 com.lovedrome.javascript.Lovedrome.prototype.events;
  com.lovedrome.javascript.Lovedrome.prototype.getEvents = function () {return this.events;};
  com.lovedrome.javascript.Lovedrome.prototype.setEvents = function (events) {this.events = events; return 1;};
 com.lovedrome.javascript.Lovedrome.prototype.friendsAll = new com.lovedrome.javascript.Friends();
  com.lovedrome.javascript.Lovedrome.prototype.getFriendsAll = function () {return this.friendsAll;};
  com.lovedrome.javascript.Lovedrome.prototype.setFriendsAll = function (friendsAll) {this.friendsAll = friendsAll; return 1;};
 com.lovedrome.javascript.Lovedrome.prototype.friendsAllElementName = "allFriendsList";
 com.lovedrome.javascript.Lovedrome.prototype.friendsBest = new com.lovedrome.javascript.Friends();
  com.lovedrome.javascript.Lovedrome.prototype.getFriendsBest = function () {return this.friendsBest;};
  com.lovedrome.javascript.Lovedrome.prototype.setFriendsBest = function (friendsAll) {this.friendsBest = friendsBest; return 1;};
 com.lovedrome.javascript.Lovedrome.prototype.friendsBestElementName = "bestFriendsList";
 com.lovedrome.javascript.Lovedrome.prototype.languageInterface = "";
  com.lovedrome.javascript.Lovedrome.prototype.getLanguageInterface = function () {return this.languageInterface;};
  com.lovedrome.javascript.Lovedrome.prototype.setLanguageInterface = function (languageInterface) {this.languageInterface = languageInterface; return 1;};
 com.lovedrome.javascript.Lovedrome.prototype.logined = false;
  com.lovedrome.javascript.Lovedrome.prototype.getLogined = function () {return this.logined;};
  com.lovedrome.javascript.Lovedrome.prototype.setLogined = function (logined) {this.logined = logined; return 1;};
 com.lovedrome.javascript.Lovedrome.prototype.name = "";
  com.lovedrome.javascript.Lovedrome.prototype.getName = function () {return this.name;};
  com.lovedrome.javascript.Lovedrome.prototype.setName = function (name) {this.name = name; return 1;};
 com.lovedrome.javascript.Lovedrome.prototype.password = "";
  com.lovedrome.javascript.Lovedrome.prototype.getPassword = function () {return this.password;};
  com.lovedrome.javascript.Lovedrome.prototype.setPassword = function (password) {this.password = password; return 1;};
 com.lovedrome.javascript.Lovedrome.prototype.s = "";
  com.lovedrome.javascript.Lovedrome.prototype.getS = function () {return this.s;};
  com.lovedrome.javascript.Lovedrome.prototype.setS = function (s) {this.s = s; return 1;};
 com.lovedrome.javascript.Lovedrome.prototype.url = "/cgi-bin/library/com/lovedrome/perl/account.cgi";
  com.lovedrome.javascript.Lovedrome.prototype.getUrl = function () {return this.url;};
  com.lovedrome.javascript.Lovedrome.prototype.getURL = function () {return this.getUrl();};
  com.lovedrome.javascript.Lovedrome.prototype.setUrl = function (url) {this.url = url; return 1;};
  com.lovedrome.javascript.Lovedrome.prototype.setURL = function (url) {return this.setUrl(url);};
 com.lovedrome.javascript.Lovedrome.prototype.uid = "";
  com.lovedrome.javascript.Lovedrome.prototype.getUid = function () {return this.uid;};
  com.lovedrome.javascript.Lovedrome.prototype.setUid = function (uid) {this.uid = uid; return 1;};
 
 com.lovedrome.javascript.Lovedrome.prototype.add = function() {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.add is runing...");};
  var friendName = document.getElementById("friendName").value;
  var el = document.getElementById("friendS"); var friendS = el.options[el.selectedIndex].value;
  var friendEmail = document.getElementById("friendEmail").value;
  var friendMeeting = document.getElementById("friendMeeting").checked;
  var friendSex = document.getElementById("friendSex").checked;
  if(this.mustDebug()) {this.getLog().println("Lovedrome.add friendName="+friendName+"; friendS="+this.friendS+"; friendEmail="+friendEmail+"; friendMeeting="+friendMeeting+"; friendSex="+friendSex);};
  if(friendName == "" || friendS == "" || friendEmail == "") {
   this.dom.doVisible("errorAdd");
  } else if(friendEmail.indexOf("@") < 1 || friendEmail.indexOf(".") < 1 || friendEmail.length < 7) {
   this.dom.doVisible("errorAddEmail");
  } else {
   this.dom.doHidden("errorAdd");
   var friend = new com.lovedrome.javascript.Friend();
   friend.email =  friendEmail;
   friend.meeting =  friendMeeting;
   friend.name =  friendName;
   friend.s =  friendS;
   friend.sex =  friendSex;
   var data = "action=addDeleteChangeFriend"
              +"&languageInterface="+escape(this.languageInterface)
              +"&email="+escape(this.email)
              +"&password="+escape(this.password)
              +"&friendName="+escape(friendName)
              +"&friendS="+escape(friendS)
              +"&friendEmail="+escape(friendEmail)
              +"&friendMeeting="+escape(friendMeeting)
              +"&friendSex="+escape(friendSex)
              +"&friendActive=true";
   if(this.mustDebug()) {this.getLog().println("Lovedrome.change add="+data);};
   var loader = new com.oclib.javascript.util.Loader();
   loader.setDebugging(this.getDebugging()); loader.setLog(this.getLog()); loader.setTracing(this.getTracing());
   loader.setMethod("POST");
   var the = this;
   loader.setDoIfError(function() {the.addError(loader, friend);});
   loader.setDoIfSuccess(function() {the.addSuccess(loader, friend);});
   loader.makeRequest(this.method, this.url, data);
  };
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.addError = function(loader, friend) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.addError is runing...");};
  this.dom.doHidden("errorAddEmail");
  this.dom.doVisible("errorAdd");
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.addSuccess = function(loader, friend) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.addeSuccess is runing...");};
  this.dom.doHidden("errorAddEmail");
  var responseXML = loader.xml;  
  if(responseXML.getElementsByTagName("status") && responseXML.getElementsByTagName("status").item(0) && responseXML.getElementsByTagName("status").item(0).firstChild) {
   var status = responseXML.getElementsByTagName("status").item(0).firstChild.data;
   if(this.mustDebug()) {this.getLog().println("Lovedrome.addSuccess: status="+status);};
   if(status == "success") {
    if(this.mustTrace()) {this.getLog().println("Lovedrome.addSuccess: success...");};
	this.friendsAll.addFriend(friend);
    this.friendsAll.show();
	this.dom.doHidden("addPanel");
   } else {
    this.addError(loader);
   };
  };
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.change = function() {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.change is runing...");};
  this.newName = document.getElementById("newName").value;
  this.oldEmail = document.getElementById("oldEmail").value;
  this.newEmail = document.getElementById("newEmail").value;
  this.oldPassword = document.getElementById("oldPassword").value;
  this.newPassword = document.getElementById("newPassword").value;
  if(this.mustDebug()) {this.getLog().println("Lovedrome.change newName="+this.newName+"; oldEmail="+this.newEmail+"; oldEmail="+this.password+"; oldPassword="+this.oldPassword+"; newPassword="+this.newPassword);};
  if(this.newName == "" || this.oldEmail == "" || this.newEmail == "" || this.oldPassword == "" || this.newPassword == "") {
   this.dom.doVisible("errorChange");
  } else {
   var data = "action=change"
              +"&languageInterface="+escape(this.languageInterface)
              +"&newName="+escape(this.newName)
              +"&email="+escape(this.oldEmail)
              +"&newEmail="+escape(this.newEmail)
              +"&password="+escape(this.oldPassword)
              +"&newPassword="+escape(this.newPassword);
   if(this.mustDebug()) {this.getLog().println("Lovedrome.change data="+data);};
   var loader = new com.oclib.javascript.util.Loader();
   loader.setDebugging(this.getDebugging()); loader.setLog(this.getLog()); loader.setTracing(this.getTracing());
   loader.setMethod("POST");
   var the = this;
   loader.setDoIfError(function() {the.changeError(loader);});
   loader.setDoIfSuccess(function() {the.changeSuccess(loader);});
   loader.makeRequest(this.method, this.url, data);
  };
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.changeError = function(loader) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.changeError is runing...");};
  this.dom.doHidden("okChange");
  this.dom.doVisible("errorChange");
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.changeSuccess = function(loader) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.changeSuccess is runing...");};
  var responseXML = loader.xml;  
  if(responseXML.getElementsByTagName("status") && responseXML.getElementsByTagName("status").item(0) && responseXML.getElementsByTagName("status").item(0).firstChild) {
   var status = responseXML.getElementsByTagName("status").item(0).firstChild.data;
   if(this.mustDebug()) {this.getLog().println("Lovedrome.changeSuccess: status="+status);};
   if(status == "success") {
    if(this.mustTrace()) {this.getLog().println("Lovedrome.changeSuccess: success...");};
    this.dom.doHidden("errorChange");
    this.dom.doVisible("okChange");
   } else {
    this.changeError(loader);
   };
  };
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.init = function() {
  if(this.mustTrace()) {this.getLog().println("com.lovedrome.javascript.Lovedrome.init is runing...");}; 
  this.languageInterface = document.getElementById("languageInterface").value;
  if(this.mustDebug()) {this.getLog().println("Lovedrome.login languageInterface="+this.languageInterface);};
  var the = this;
  events.addEventListener("addButton", "click", function() {the.add();}, false);
  events.addEventListener("allFriendsList", "click", function(e) {the.selector(e);}, false);
  events.addEventListener("email", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13){return -1;}; the.login(e);}, false);
  events.addEventListener("changePasswordButton", "click", function() {the.change();}, false);
  events.addEventListener("closeAddPanel", "click", function() {the.dom.doHidden("addPanel");}, false);
  events.addEventListener("closeChangePasswordPanel", "click", function() {the.dom.doHidden("changePasswordPanel");}, false);
  events.addEventListener("closeEmptyAllPanel", "click", function() {the.dom.doHidden("emptyAllPanel");the.showCenteredPanel("registrationPanel");}, false);
  events.addEventListener("closeEmptyUidPasswordPanel", "click", function() {the.dom.doHidden("emptyUidPasswordPanel");}, false);
  events.addEventListener("closeLoginErrorPanel", "click", function() {the.dom.doHidden("loginErrorPanel");}, false);
  events.addEventListener("closeRegistrationErrorPanel", "click", function() {the.dom.doHidden("registrationErrorPanel");the.showCenteredPanel("registrationPanel");}, false);
  events.addEventListener("closeRegistrationPanel", "click", function() {the.dom.doHidden("registrationPanel");}, false);
  events.addEventListener("closeRememberPasswordPanel", "click", function() {the.dom.doHidden("rememberPasswordPanel");}, false);
  events.addEventListener("friendName", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13){return -1;}; the.add();}, false);
  events.addEventListener("friendEmail", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13){return -1;}; the.add();}, false);
  events.addEventListener("loginButton", "click", function() {the.login();}, false);
  events.addEventListener("myEmail", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13){return -1;}; the.registration();}, false);
  events.addEventListener("myName", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13){return -1;}; the.registration();}, false);
  events.addEventListener("myPassword", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13){return -1;}; the.registration();}, false);
  events.addEventListener("newEmail", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13){return -1;}; the.change();}, false);
  events.addEventListener("newName", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13){return -1;}; the.change();}, false);
  events.addEventListener("newPassword", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13){return -1;}; the.change();}, false);
  events.addEventListener("oldEmail", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13){return -1;}; the.change();}, false);
  events.addEventListener("oldPassword", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13){return -1;}; the.change();}, false);
  events.addEventListener("password", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13) {return -1;}; the.login(e);}, false);
  events.addEventListener("registrationButton", "click", function() {the.registration();}, false);
  events.addEventListener("rememberEmail", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13){return -1;}; the.remember();}, false);
  events.addEventListener("rememberPasswordButton", "click", function() {the.remember();}, false);
  events.addEventListener("toAdd", "click", function() {
                                             the.dom.doHidden("errorAdd");
                                             the.dom.doHidden("errorAddEmail");
											 document.getElementById("friendName").value = "";
											 document.getElementById("friendEmail").value = "";
                                             the.showCenteredPanel("addPanel");
											}, false);
  events.addEventListener("toChangeButton", "click", function() {the.dom.doHidden("okChange");the.dom.doHidden("errorChange");the.showCenteredPanel("changePasswordPanel");}, false);
  events.addEventListener("toRegistrationButton", "click", function() {
                                                            the.dom.doHidden("errorRegistrationEmail");
											                document.getElementById("myName").value = "";
											                document.getElementById("myEmail").value = "";
											                document.getElementById("myPassword").value = "";
                                                            the.showCenteredPanel("registrationPanel");
                                                           }, false);
  events.addEventListener("toRememberButton", "click", function() {the.dom.doHidden("okRememberEmail");the.dom.doHidden("errorRememberEmail");the.showCenteredPanel("rememberPasswordPanel");}, false);
  events.addEventListener("toPrivate", "click", function() {the.toPrivate();}, false);
  events.addEventListener("toTitle", "click", function() {if(!the.logined) {return;};the.toTitle();}, false);
  //events.addEventListener("rememberPasswordButton", "click", function() {the.remember();}, false);
  events.addEventListener("exitButton", "click", function() {the.toPublic();}, false);
  this.dom.doVisible("loginForm");
  document.getElementById("email").focus();
 };
 
 com.lovedrome.javascript.Lovedrome.prototype.login = function() {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.login is runing...");};
  this.email = document.getElementById("email").value;
  this.password = document.getElementById("password").value;
  if(this.mustDebug()) {this.getLog().println("Lovedrome.login email="+this.email+"; password="+this.password);};
  if(this.email == "" || this.password == "") {
   this.showCenteredPanel("emptyUidPasswordPanel");
  } else {
   var data = "action=login"
              +"&languageInterface="+escape(this.languageInterface)
              +"&email="+escape(this.email)
              +"&password="+escape(this.password);
   if(this.mustDebug()) {this.getLog().println("Lovedrome.loginRequest data="+data);};
   var loader = new com.oclib.javascript.util.Loader();
   loader.setDebugging(this.getDebugging()); loader.setLog(this.getLog()); loader.setTracing(this.getTracing());
   loader.setMethod("POST");
   var the = this;
   loader.setDoIfError(function() {the.loginError(loader);});
   loader.setDoIfSuccess(function() {the.loginSuccess(loader);});
   loader.makeRequest(this.method, this.url, data);
  };
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.loginError = function(loader) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.loginError is runing...");};
  this.setEmail("");this.setPassword("");
  this.showCenteredPanel("loginErrorPanel");
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.loginSuccess = function(loader) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.loginSuccess is runing...");};
  var responseXML = loader.xml;  
  if(responseXML.getElementsByTagName("status") && responseXML.getElementsByTagName("status").item(0) && responseXML.getElementsByTagName("status").item(0).firstChild) {
   var status = responseXML.getElementsByTagName("status").item(0).firstChild.data;
   if(this.mustDebug()) {this.getLog().println("Lovedrome.loginSuccess: status="+status);};
   if(status == "success") {
    if(this.mustTrace()) {this.getLog().println("Lovedrome.loginSuccess: success...");};
    if(responseXML.getElementsByTagName("friend")) {
	 var friendXML = responseXML.getElementsByTagName("friend");
	 this.parseFriends(friendXML);
	};
    this.toPrivate();
   } else {
    this.loginError();
   };
  };
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.parseFriends = function(friendXML) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.parseFriends is runing...");};
  this.friendsAll = new com.lovedrome.javascript.Friends();
  this.friendsAll.setDebugging(this.getDebugging()); this.friendsAll.setLog(this.getLog()); this.friendsAll.setTracing(this.getTracing());
  this.friendsAll.elementName = this.friendsAllElementName;
  this.friendsAll.type = "a";
  var friendsAll = new Array();
  this.friendsBest = new com.lovedrome.javascript.Friends();
  this.friendsBest.setDebugging(this.getDebugging()); this.friendsBest.setLog(this.getLog()); this.friendsBest.setTracing(this.getTracing());
  this.friendsBest.elementName = this.friendsBestElementName;
  this.friendsBest.type = "b";
  var friendsBest = new Array();
  var i = 0;
  while(friendXML.item(i)) {
   var friendAll = new com.lovedrome.javascript.Friend();
   if(friendXML.item(i).getElementsByTagName("name") && friendXML.item(i).getElementsByTagName("name").item(0) && friendXML.item(i).getElementsByTagName("name").item(0).firstChild) {
    friendAll.name = friendXML.item(i).getElementsByTagName("name").item(0).firstChild.data;
   };
   if(friendXML.item(i).getElementsByTagName("s") && friendXML.item(i).getElementsByTagName("s").item(0) && friendXML.item(i).getElementsByTagName("s").item(0).firstChild) {
    friendAll.s = friendXML.item(i).getElementsByTagName("s").item(0).firstChild.data;
   };
   if(friendXML.item(i).getElementsByTagName("email") && friendXML.item(i).getElementsByTagName("email").item(0) && friendXML.item(i).getElementsByTagName("email").item(0).firstChild) {
    friendAll.email = friendXML.item(i).getElementsByTagName("email").item(0).firstChild.data;
   };
   if(friendXML.item(i).getElementsByTagName("meeting") && friendXML.item(i).getElementsByTagName("meeting").item(0) && friendXML.item(i).getElementsByTagName("meeting").item(0).firstChild) {
    friendAll.meeting = friendXML.item(i).getElementsByTagName("meeting").item(0).firstChild.data == 1 ? true : false;
   };
   if(friendXML.item(i).getElementsByTagName("sex") && friendXML.item(i).getElementsByTagName("sex").item(0) && friendXML.item(i).getElementsByTagName("sex").item(0).firstChild) {
    friendAll.sex = friendXML.item(i).getElementsByTagName("sex").item(0).firstChild.data == 1 ? true : false;
   };
   friendsAll[friendsAll.length] = friendAll;
   var bestMeeting = "", bestSex = "", bestFriend;
   if(friendXML.item(i).getElementsByTagName("bestMeeting") && friendXML.item(i).getElementsByTagName("bestMeeting").item(0) && friendXML.item(i).getElementsByTagName("bestMeeting").item(0).firstChild) {
    bestMeeting = friendXML.item(i).getElementsByTagName("bestMeeting").item(0).firstChild.data;
   };
   if(friendXML.item(i).getElementsByTagName("bestSex") && friendXML.item(i).getElementsByTagName("bestSex").item(0) && friendXML.item(i).getElementsByTagName("bestSex").item(0).firstChild) {
    bestSex = friendXML.item(i).getElementsByTagName("bestSex").item(0).firstChild.data;
   };
   if(this.mustDebug()) {this.getLog().println("Lovedrome.parseFriends bestMeeting="+bestMeeting+"; bestSex="+bestSex);};
   if(this.mustDebug()) {this.getLog().println("Lovedrome.parseFriends (bestMeeting == 1)="+(bestMeeting == 1)+"; (bestSex == 1)="+(bestSex == 1));};
   if(bestMeeting == 1 || bestSex == 1) {
    if(this.mustDebug()) {this.getLog().println("Lovedrome.parseFriends findBest!");};
    bestFriend = friendAll.clone();
    bestFriend.meeting = (bestMeeting == 1) ? true : false;
    bestFriend.sex = (bestSex == 1) ? true : false;
    friendsBest[friendsBest.length] = bestFriend;
   };
   i++;
  };
  this.friendsAll.friends = friendsAll;
  this.friendsBest.friends = friendsBest;
  if(this.mustDebug()) {this.getLog().println("Lovedrome.parseFriends this.friendsAll.friends.length="+this.friendsAll.friends.length);};
  if(this.mustDebug()) {this.getLog().println("Lovedrome.parseFriends this.friendsBest.friends.length="+this.friendsBest.friends.length);};
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.registration = function() {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.login is registration...");};
  this.name = document.getElementById("myName").value;
  this.email = document.getElementById("myEmail").value;  
  var el = document.getElementById("mySex"); this.s = el.options[el.selectedIndex].value;
  this.password = document.getElementById("myPassword").value;
  if(this.mustDebug()) {this.getLog().println("Lovedrome.registration name="+this.name+";  email="+this.email+";  s="+this.s+"; password="+this.password);};
  if(this.name == "" || this.email == "" || this.s == "" ||  this.password == "") {
   this.dom.doHidden("registrationPanel");
   this.showCenteredPanel("emptyAllPanel");
  } else if(this.email.indexOf("@") < 1 || this.email.indexOf(".") < 1 || this.email.length < 7) {
   this.dom.doVisible("errorRegistrationEmail");
  } else {
   var data = "action=registration"
              +"&languageInterface="+escape(this.languageInterface)
              +"&name="+escape(this.name)
              +"&s="+escape(this.s)
              +"&email="+escape(this.email)
              +"&password="+escape(this.password);
   if(this.mustDebug()) {this.getLog().println("Lovedrome.loginRequest data="+data);};
   var loader = new com.oclib.javascript.util.Loader();
   loader.setDebugging(this.getDebugging()); loader.setLog(this.getLog()); loader.setTracing(this.getTracing());
   loader.setMethod("POST");
   var the = this;
   loader.setDoIfError(function() {the.registrationError(loader);});
   loader.setDoIfSuccess(function() {the.registrationSuccess(loader);});
   loader.makeRequest(this.method, this.url, data);
  };
 };
 
 com.lovedrome.javascript.Lovedrome.prototype.registrationError = function(loader) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.registrationError is runing...");};
  this.setEmail("");this.setPassword("");
  this.dom.doHidden("errorRegistrationEmail");
  this.dom.doHidden("registrationPanel");
  this.showCenteredPanel("registrationErrorPanel");
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.registrationSuccess = function(loader) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.registrationSuccess is runing...");};
  this.dom.doHidden("errorRegistrationEmail");
  var responseXML = loader.xml;  
  if(responseXML.getElementsByTagName("status") && responseXML.getElementsByTagName("status").item(0) && responseXML.getElementsByTagName("status").item(0).firstChild) {
   var status = responseXML.getElementsByTagName("status").item(0).firstChild.data;
   if(this.mustDebug()) {this.getLog().println("Lovedrome.loginParseResponse: status="+status);};
   if(status == "success") {
    if(this.mustTrace()) {this.getLog().println("Lovedrome.loginParseResponse: success...");};
    if(responseXML.getElementsByTagName("friend")) {
	 var friendXML = responseXML.getElementsByTagName("friend");
	 this.parseFriends(friendXML);
	};
    this.toPrivate();
   } else {
    this.registrationError();
   };
  };
 };		
 
 com.lovedrome.javascript.Lovedrome.prototype.remember = function() {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.remember is runing...");};
  this.email = document.getElementById("rememberEmail").value;
  if(this.mustDebug()) {this.getLog().println("Lovedrome.remember email="+this.email);};
  if(this.email == "") {
   this.dom.doVisible("errorRememberEmail");
  } else {
   var data = "action=remember"
              +"&languageInterface="+escape(this.languageInterface)
              +"&email="+escape(this.email);
   if(this.mustDebug()) {this.getLog().println("Lovedrome.remember data="+data);};
   var loader = new com.oclib.javascript.util.Loader();
   loader.setDebugging(this.getDebugging()); loader.setLog(this.getLog()); loader.setTracing(this.getTracing());
   loader.setMethod("POST");
   var the = this;
   loader.setDoIfError(function() {the.rememberError(loader);});
   loader.setDoIfSuccess(function() {the.rememberSuccess(loader);});
   loader.makeRequest(this.method, this.url, data);
  };
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.rememberError = function(loader) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.rememberError is runing...");};
  this.dom.doHidden("okRememberEmail");
  this.dom.doVisible("errorRememberEmail");
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.rememberSuccess = function(loader) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.rememberSuccess is runing...");};
  var responseXML = loader.xml;  
  if(responseXML.getElementsByTagName("status") && responseXML.getElementsByTagName("status").item(0) && responseXML.getElementsByTagName("status").item(0).firstChild) {
   var status = responseXML.getElementsByTagName("status").item(0).firstChild.data;
   if(this.mustDebug()) {this.getLog().println("Lovedrome.rememberSuccess: status="+status);};
   if(status == "success") {
    if(this.mustTrace()) {this.getLog().println("Lovedrome.rememberSuccess: success...");};
    this.dom.doHidden("errorRememberEmail");
    this.dom.doVisible("okRememberEmail");
   } else {
    this.rememberError(loader);
   };
  };
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.selector = function(e) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.selector is runing...");}; 
  var targetElement;
  if (e.target) {
   targetElement = e.target;
  } else if (e.srcElement) {
   targetElement = e.srcElement;
  };
  if (targetElement.nodeType == 3) {targetElement = targetElement.parentNode;}; // defeat Safari bug
  if(this.mustDebug()) {this.getLog().println("Lovedrome.selector targetElement.id="+targetElement.id);};
  var id = targetElement.id;
  var action = id.substr(0, 4);
  var n = id.substr(5, id.length-5);
  if(this.mustDebug()) {this.getLog().println("Lovedrome.selector action="+action+"; n="+n);};
  if(action == "edit") {
   document.getElementById("friendName").value = this.friendsAll.friends[n].name;
   if(this.friendsAll.friends[n].s == "m") {document.getElementById("friendS").selectedIndex = 1;};
   document.getElementById("friendEmail").value = this.friendsAll.friends[n].email;
   document.getElementById("friendMeeting").checked = this.friendsAll.friends[n].meeting;
   document.getElementById("friendSex").checked = this.friendsAll.friends[n].sex;
   this.dom.doHidden("errorAdd");
   this.dom.doHidden("errorAddEmail");
   this.showCenteredPanel("addPanel");
   return;
  };
  action = id.substr(0, 6);
  n = id.substr(7, id.length-7);
  if(this.mustDebug()) {this.getLog().println("Lovedrome.selector action="+action+"; n="+n);};
  if(action == "delete") {
   var data = "action=addDeleteChangeFriend"
              +"&languageInterface="+escape(this.languageInterface)
              +"&email="+escape(this.email)
              +"&password="+escape(this.password)
              +"&friendName="+escape(this.friendsAll.friends[n].name)
              +"&friendS="+escape(this.friendsAll.friends[n].s)
              +"&friendEmail="+escape(this.friendsAll.friends[n].email)
              +"&friendMeeting="+escape(this.friendsAll.friends[n].meeting)
              +"&friendSex="+escape(this.friendsAll.friends[n].sex)
              +"&friendActive=false";
   if(this.mustDebug()) {this.getLog().println("Lovedrome.selector data="+data);};
   var loader = new com.oclib.javascript.util.Loader();
   loader.setDebugging(this.getDebugging()); loader.setLog(this.getLog()); loader.setTracing(this.getTracing());
   loader.setMethod("POST");
   var the = this;
   loader.setDoIfError(function() {the.selectorError(loader, n);});
   loader.setDoIfSuccess(function() {the.selectorSuccess(loader, n);});
   loader.makeRequest(this.method, this.url, data);
  };
 };		
 
 com.lovedrome.javascript.Lovedrome.prototype.selectorError = function(loader) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.selectorError is runing...");};
 };	
 
 com.lovedrome.javascript.Lovedrome.prototype.selectorSuccess = function(loader, n) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.selectorSuccess is runing...");};
  var responseXML = loader.xml;  
  if(responseXML.getElementsByTagName("status") && responseXML.getElementsByTagName("status").item(0) && responseXML.getElementsByTagName("status").item(0).firstChild) {
   var status = responseXML.getElementsByTagName("status").item(0).firstChild.data;
   if(this.mustDebug()) {this.getLog().println("Lovedrome.changeSuccess: status="+status);};
   if(status == "success") {
    if(this.mustTrace()) {this.getLog().println("Lovedrome.changeSuccess: success...");};
    this.friendsAll.deleteFriend(n);
	this.friendsAll.show();
   } else {
    this.selectorError(loader);
   };
  };
 };
 
 com.lovedrome.javascript.Lovedrome.prototype.showCenteredPanel = function(id) {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.showCenteredPanel is runing for id="+id);};
  var e = document.getElementById(id);
  if(this.mustDebug()) {this.getLog().println("Lovedrome.showCenteredPanel e="+e);};
  e.style.position = "absolute";
  if(this.mustDebug()) {this.getLog().println("Lovedrome.showCenteredPanel e.style.top="+(this.getScrollY()+this.getWindowHeight()/2-50));};
  e.style.top = this.getScrollY()+this.getWindowHeight()/3-100 + "px";
  if(this.mustDebug()) {this.getLog().println("Lovedrome.showCenteredPanel e.style.top="+e.style.top);};
  if(this.mustDebug()) {this.getLog().println("Lovedrome.showCenteredPanel e.style.left="+(this.getScrollX()+this.getWindowWidth()/2-100));};
  e.style.left = this.getScrollX()+this.getWindowWidth()/2-200 + "px";
  if(this.mustDebug()) {this.getLog().println("Lovedrome.showCenteredPanel e.style.left="+e.style.left);};
  e.style.visibility = "visible";
 };		
 
 com.lovedrome.javascript.Lovedrome.prototype.toPrivate = function() {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.toPrivate is runing...");};
  this.logined = true;
  this.dom.doHidden("mainFrame"); 
  this.dom.doHidden("loginButton"); 
  this.dom.doHidden("email"); 
  this.dom.doHidden("passwordLabel"); 
  this.dom.doHidden("password");
  this.dom.doHidden("registrationPanel"); 
  this.dom.doHidden("toPrivate"); 
  this.dom.doHidden("toRegistrationButton"); 
  this.dom.doHidden("toRememberButton"); 
  this.dom.changeTextContent("realEmail", this.getEmail());
  this.dom.doVisible("realEmail"); 
  this.dom.doVisible("privateFrame"); 
  this.dom.doVisible("exitButton");
  if(this.mustDebug()) {this.getLog().println("Lovedrome.toPrivate this.friendsAll.friends.length="+this.friendsAll.friends.length);};
  if(this.mustDebug()) {this.getLog().println("Lovedrome.toPrivate this.friendsBest.friends.length="+this.friendsBest.friends.length);};
  if(this.mustDebug()) {this.getLog().println("Lovedrome.toPrivate all hided");};
  this.friendsAll.show();
  this.friendsBest.show();
 };
 
 com.lovedrome.javascript.Lovedrome.prototype.toPublic = function() {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.toPublic is runing...");};
  this.setEmail("");this.setName("");this.setPassword("");this.logined = false;
  this.dom.changeTextContent("realEmail", this.getEmail());
  this.dom.doHidden("realEmail"); 
  this.dom.doHidden("privateFrame"); 
  this.dom.doHidden("exitButton"); 
  this.dom.doHidden("toPrivate"); 
  this.dom.doVisible("email"); 
  this.dom.doVisible("passwordLabel");
  this.dom.doVisible("password");
  this.dom.doVisible("mainFrame"); 
  this.dom.doVisible("loginButton");
  this.dom.doVisible("toRegistrationButton"); 
  this.dom.doVisible("toRememberButton"); 
  document.getElementById("email").value = "";
  document.getElementById("password").value = "";
  document.getElementById("email").focus();
 };
 
 com.lovedrome.javascript.Lovedrome.prototype.toTitle = function() {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.toPublic is runing...");};
  this.dom.changeTextContent("realEmail", this.getEmail());
  this.dom.doHidden("privateFrame"); 
  this.dom.doVisible("toPrivate"); 
  this.dom.doVisible("mainFrame");
 };
 
 /*---------------------------------------------------------------------------------*/ 
 com.lovedrome.javascript.Lovedrome.prototype.getScrollX = function() {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.getScrollX is runing...");};
  var x = 0;
  if(typeof(window.pageYOffset) == "number") {
   //Netscape compliant
   x = window.pageXOffset;
  } else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
   //DOM compliant
   x = document.body.scrollLeft;
  } else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
   //IE6 standards compliant mode
   x = document.documentElement.scrollLeft;
  };
  return x;
 };

 com.lovedrome.javascript.Lovedrome.prototype.getScrollY = function() {
  if(this.mustTrace()) {this.getLog().println("Lovedrome.getScrollX is runing...");};
  var y = 0;
  if(typeof(window.pageYOffset) == "number") {
   //Netscape compliant
    y = window.pageYOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
   //DOM compliant
   y = document.body.scrollTop;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
   //IE6 standards compliant mode
   y = document.documentElement.scrollTop;
  };
  return y;
 };

 com.lovedrome.javascript.Lovedrome.prototype.getWindowWidth = function() {
  var w = 0;
  if( typeof(window.innerWidth) == "number") {
   //Non-IE
   w = window.innerWidth;
  } else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
   //IE 6+ in 'standards compliant mode'
   w = document.documentElement.clientWidth;
  } else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
   //IE 4 compatible
   w = document.body.clientWidth;
  };
  return w;
 };

 com.lovedrome.javascript.Lovedrome.prototype.getWindowHeight = function() {
  var h = 0;
  if( typeof(window.innerWidth) == 'number') {
   //Non-IE
   h = window.innerHeight;
  } else if( document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
   //IE 6+ in 'standards compliant mode'
   h = document.documentElement.clientHeight;
  } else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
   //IE 4 compatible
   h = document.body.clientHeight;
  };
  return h;
 };
};
