/***********************************************************************************************************
 * com.tapogen.javascript.TapogenClass
 * Location: http://www.tapogen.com/library/net/tapogen/javascript/tapogenclass/2010042500/TapogenClass.js
 * Created 2009040200
 * Version 2010042500
 * © tapogen.com (http://www.tapogen.com/)
***********************************************************************************************************/

if (typeof com == "undefined") {net = {};};
if (typeof com.tapogen == "undefined") {com.tapogen = {};};
if (typeof com.tapogen.javascript == "undefined") {com.tapogen.javascript = {};};

if (typeof com.tapogen.javascript.TapogenClass == "undefined") {
 com.tapogen.javascript.TapogenClass = function() {};
 com.tapogen.javascript.TapogenClass.prototype = new com.oclib.javascript.lang.Root();  

 com.tapogen.javascript.TapogenClass.prototype.classCreated = "2009040200"; 
 com.tapogen.javascript.TapogenClass.prototype.classCreator = "http://www.tapogen.com/"; 
 com.tapogen.javascript.TapogenClass.prototype.classIndexLocation = "http://www.tapogen.com/library/net/tapogen/"; 
 com.tapogen.javascript.TapogenClass.prototype.classLocation = "http://www.tapogen.com/library/net/tapogen/javascript/TapogenClass.js"; 
 com.tapogen.javascript.TapogenClass.prototype.className = "TapogenClass"; 
 com.tapogen.javascript.TapogenClass.prototype.classNamespace = "com.tapogen.javascript.TapogenClass"; 
 com.tapogen.javascript.TapogenClass.prototype.classVersion = "2010042500"; 
 com.tapogen.javascript.TapogenClass.prototype.classVersionIndexLocation = "http://www.tapogen.com/library/net/tapogen/javascript/tapogenclass/2010042500/";
 com.tapogen.javascript.TapogenClass.prototype.classVersionLocation = "http://www.tapogen.com/library/net/tapogen/javascript/tapogenclass/2010042500/TapogenClass.js";  

 com.tapogen.javascript.TapogenClass.prototype.dom = null;  
  com.tapogen.javascript.TapogenClass.prototype.getDom = function () {return this.dom;};
  com.tapogen.javascript.TapogenClass.prototype.setDom = function (dom) {this.dom = dom;};
 com.tapogen.javascript.TapogenClass.prototype.events = null;   
  com.tapogen.javascript.TapogenClass.prototype.getEvents = function () {return this.events;};
  com.tapogen.javascript.TapogenClass.prototype.setEvents = function (events) {this.events = events;};
 com.tapogen.javascript.TapogenClass.prototype.typogenerator = null;   
  com.tapogen.javascript.TapogenClass.prototype.getTypoGenerator = function () {return this.typogenerator;};
  com.tapogen.javascript.TapogenClass.prototype.setTypoGenerator = function (typogenerator) {this.typogenerator = typogenerator;};
 com.tapogen.javascript.TapogenClass.prototype.str = null;   
  com.tapogen.javascript.TapogenClass.prototype.getStr = function () {return this.str;};
  com.tapogen.javascript.TapogenClass.prototype.setStr = function (str) {this.str = str;};
  
 com.tapogen.javascript.TapogenClass.prototype.a = "";
 com.tapogen.javascript.TapogenClass.prototype.adult = "";
 com.tapogen.javascript.TapogenClass.prototype.errorcode = "";
 com.tapogen.javascript.TapogenClass.prototype.li = ""; 
 com.tapogen.javascript.TapogenClass.prototype.lastGenerateTimeout = 0; 
 com.tapogen.javascript.TapogenClass.prototype.progressbarTimeout = 0; 
 com.tapogen.javascript.TapogenClass.prototype.startTime = 0;
 com.tapogen.javascript.TapogenClass.prototype.urlRegistreSearch = "/cgi-bin/library/com/tapogen/cpp/registresearch/2010042500/registresearch";   

 com.tapogen.javascript.TapogenClass.prototype.init = function() {
  if(this.mustTrace()) {this.getLog().println("com.tapogen.javascript.TapogenClass.init is runing...");};
  this.a = this.dom.getTextContent("a");
  if(this.mustDebug()) {this.getLog().println("com.tapogen.javascript.TapogenClass.init this.a:"+this.a);};
  this.adult = this.dom.getTextContent("adult");
  if(this.mustDebug()) {this.getLog().println("com.tapogen.javascript.TapogenClass.init this.adult:"+this.adult);};
  this.li = this.dom.getTextContent("li");
  if(this.mustDebug()) {this.getLog().println("com.tapogen.javascript.TapogenClass.init this.li:"+this.li);};
  var the = this;
  this.events.addEventListener("generateButton", "click", function(e) {the.generate(e);}, false);
  this.events.addEventListener("searchButton", "click", function(e) {the.search(e);}, false);  
  this.events.addEventListener("searchTerm", "keypress", function(e) {if(e.keyCode != 13 && e.which != 13){return -1;}; the.search(e);}, false);
  this.dom.doVisible("generateButton");
  this.events.addEventListener("clearAll", "click", function(e) {the.clear(e);}, false);
  this.dom.doVisible("clearAll");
 };

 com.tapogen.javascript.TapogenClass.prototype.clear = function(e) {
  if(this.mustTrace()) {this.getLog().println("com.tapogen.javascript.TapogenClass.clear is runing...");};
  this.dom.doHidden("errorEmpty");
  this.dom.doHidden("errorNoSwitches");
  this.dom.doHidden("progressbar");
  this.dom.doHidden("progresstext");
  this.typogenerator.removeMethods();
  this.typogenerator.removeOptions();
  this.typogenerator.clearSource();
  document.getElementById("userInputTextArea").value = "";
  this.dom.removeChilds("results");  
  this.dom.removeChilds("typosNumber"); 
  this.dom.doVisible("generateButton");
 };

 com.tapogen.javascript.TapogenClass.prototype.generate = function(e) {
  if(this.mustTrace()) {this.getLog().println("com.tapogen.javascript.TapogenClass.generate is runing...");};
  this.dom.doHidden("errorEmpty");
  this.dom.doHidden("errorNoSwitches");
  this.dom.doHidden("clearAll");
  this.typogenerator.removeMethods();
  var ch = 0;
  if(document.getElementById("skipLetter").checked) {ch=1; this.typogenerator.setSkipLetter();};
  if(document.getElementById("doubleLetters").checked) {ch=1; this.typogenerator.setDoubleLetters();};
  if(document.getElementById("reverseLetters").checked) {ch=1; this.typogenerator.setReverseLetters();};
  if(document.getElementById("skipSpaces").checked) {ch=1; this.typogenerator.setSkipSpaces();};
  if(document.getElementById("missedKey").checked) {ch=1; this.typogenerator.setMissedKey();};
  if(document.getElementById("insertedKey").checked) {ch=1; this.typogenerator.setInsertedKey();};
  if(document.getElementById("lookAlikes").checked) {ch=1; this.typogenerator.setLookAlikes();};
  if(document.getElementById("phoneticKey").checked) {ch=1; this.typogenerator.setPhoneticKey();};
  //if(this.mustDebug()) {this.getLog().println("com.tapogen.javascript.TapogenClass.generate ch:"+ch);};
  if(ch == 0) {
   this.dom.doVisible("errorNoSwitches");
   return;
  };
  this.typogenerator.removeOptions();
  if(document.getElementById("skipTLD").checked) {this.typogenerator.setSkipTLD();};
  if(document.getElementById("skipWWW").checked) {this.typogenerator.setSkipWWW();};
  if(document.getElementById("validDomain").checked) {this.typogenerator.setValidDomain();};
  if(document.getElementById("groupIdentical").checked) {this.typogenerator.setGroupIdentical();};
  if(document.getElementById("removeSource").checked) {this.typogenerator.setRemoveSource();};
  if(document.getElementById("sortPopulary").checked) {this.typogenerator.setSortPopulary();};
  var sourceString =  document.getElementById("userInputTextArea").value;
  sourceString = this.str.trim(sourceString);
  if(sourceString.length == 0) {
   this.dom.doVisible("errorEmpty");
   return;
  };
  //if(this.mustDebug()) {this.getLog().println("com.tapogen.javascript.TapogenClass.generate sourceString:"+sourceString);};
  this.dom.removeChilds("results");
  this.dom.removeChilds("typosNumber");
  this.dom.doHidden("typosTimeSpan");
  this.dom.removeChilds("typosTime");
  this.typogenerator.clearSource();
  this.typogenerator.setSourceFromString(sourceString);
  var the=this; this.progressbarTimeout = setTimeout(function() {the.progress()}, 5);
  this.dom.doHidden("generateButton");
  this.dom.doVisible("progressbar");
  this.dom.doVisible("progresstext");
  this.startTime = new Date().getTime();
  this.typogenerator.generate();
  var the=this; this.lastGenerateTimeout = setTimeout(function() {the.viewResult()}, 300);
 };

 com.tapogen.javascript.TapogenClass.prototype.progress = function() {
  //if(this.mustTrace()) {this.getLog().println("com.tapogen.javascript.TapogenClass.progress is runing...");};
  var d=this.typogenerator.whatDo();
  //if(this.mustDebug()) {this.getLog().println("com.tapogen.javascript.TapogenClass.progress  d:"+d);};
  this.dom.removeChilds("progresstextWhat");
  var tc = this.dom.getTextContent(d);
  //if(this.mustDebug()) {this.getLog().println("com.tapogen.javascript.TapogenClass.progress  tc:"+tc);};
  document.getElementById("progresstextWhat").appendChild(document.createTextNode(tc));
  var p=this.typogenerator.whatProgress();
  //if(this.mustDebug()) {this.getLog().println("com.tapogen.javascript.TapogenClass.progress  p:"+p);};
  document.getElementById("progressbarDiv").style.width = p+"%";
  // p = (p>=100) ? 0 : p+10;
  //if(this.mustDebug()) {this.getLog().println("com.tapogen.javascript.TapogenClass.progress  p:"+p);};
  var the=this; this.progressbarTimeout = setTimeout(function() {the.progress(p)}, 500);
 };

 com.tapogen.javascript.TapogenClass.prototype.search = function(e) {
  if(this.mustTrace()) {this.getLog().println("com.tapogen.javascript.TapogenClass.search is runing...");};  
  var s = document.getElementById("searchTerm").value;
  if(s==""||s==" "||s=="  "||s=="   "||s==".") return;  
  var data = "li="+this.li
             +"&from="+encodeURIComponent(this.dom.getTextContent("pn"))
             +"&to="+encodeURIComponent(s);              
  if(this.mustDebug()) {this.getLog().println("com.tapogen.javascript.TapogenClass.search 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.searchGoto(s);});
  loader.setDoIfSuccess(function() {the.searchGoto(s);});
  loader.makeRequest(this.method, this.urlRegistreSearch, data); 
 };

 com.tapogen.javascript.TapogenClass.prototype.searchGoto = function(s) {
  if(this.mustTrace()) {this.getLog().println("com.tapogen.javascript.TapogenClass.searchGoto is runing...");};
  var newUri = "http://"+window.location.host+"/typos/li/"+this.li+"/pt/v/pn/"+encodeURIComponent(s)+"/";
  window.location = newUri;
 };

 com.tapogen.javascript.TapogenClass.prototype.viewResult = function() {
  //if(this.mustTrace()) {this.getLog().println("com.tapogen.javascript.TapogenClass.viewResult is runing...");};
  //if(this.mustDebug()) {this.getLog().println("com.tapogen.javascript.TapogenClass.viewResult this.typogenerator.getReady():"+this.typogenerator.getReady());};
  if(this.typogenerator.getReady()==0) {
   var the=this; this.lastGenerateTimeout = setTimeout(function() {the.viewResult();}, 300);
  } else {
   var resultArray = this.typogenerator.getResultArray();
   var resultElement = document.createElement("div");
   for(var i = 0; i < resultArray.length; i++) {
    var resultItem = document.createElement("div");
    resultItem.className = "rs";
    resultItem.appendChild(document.createTextNode(resultArray[i]));
    resultElement.appendChild(resultItem);
   };
   document.getElementById("results").appendChild(resultElement);
   document.getElementById("typosNumber").appendChild(document.createTextNode(resultArray.length));
   document.getElementById("typosTime").appendChild(document.createTextNode(((new Date().getTime()-this.startTime)/1000)));
   clearTimeout(this.progressbarTimeout);
   this.dom.doHidden("progressbar");
   this.dom.doHidden("progresstext");
   this.dom.doVisible("typosTimeSpan");
   this.dom.doVisible("generateButton");
  this.dom.doVisible("clearAll");
  };
 };
};

