forked from: flash on 2010-11-17

by raa
♥0 | Line 547 | Modified 2010-12-30 17:58:41 | GPLv3 License
play

ActionScript3 source code

/**
 * Copyright raa ( http://wonderfl.net/user/raa )
 * GNU General Public License, v3 ( http://www.gnu.org/licenses/quick-guide-gplv3.html )
 * Downloaded from: http://wonderfl.net/c/pGQW
 */

// forked from tartou2's flash on 2010-11-17
package {
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
// Author: Ruben Montecinos
// http://www.viewpoint.cl - Official Website - Drawings - Programming - 3D - and more
// http://www.facebook.com/rubenmontecinos - Author's facebook
// http://twitter.com/rubenmontecinos - franX Bot news
// Free for non massive commercial use.
// You can use it in personal o commercial websites. You cant sell this project.
// Last Update: August 8, 2009

// Variables
var genderUser = "man";
var numberInput:int;

var userName:String;
var userNameToOutPut:String;
var userNameOk:String;
var gotOutput = "answX";
var dataBaseArray:Array = new Array();
var inpText:String;
var inputText:Array;

var botName = "franX";
var botNameSay = "franX: ";

var myCheckNumber = 0;

var questionsToAnswer:XML;

var botQuestionAge:XMLList;
var ageAnswerYes:XMLList;

var ageAnswerKid:XMLList;
var ageAnswerYoung:XMLList;
var ageAnswerTeen:XMLList;
var ageAnswerAdult:XMLList;
var ageAnswerOld:XMLList;
var ageAnswerNop:XMLList;


var answerGenderWoman:XMLList;
var answerGenderMan:XMLList;

var userNameId:XML;
var userNameGender:XML;

var requestAge = false;
var questionAge:int;
var requestGender = false;
var questionGender:String;
var requestThree = false;

// This var gets a true or false value.
// 搜寻第一个词 - true, false - boolean
// 最初の単語を捜しなさい - true, false - boolean
var foundOne = false;
var foundAnswer = false;


// Get the position of the found word in the dataBase Array
// 查找位置 在数据库中
// 位置を見つけなさい データベース
var positionOne:int;
var positionTwo:int;
var positionThree:int;
var positionFour:int;
var positionFive:int;
var actualPosition:int;

var myTimeNow:Date = new Date();
var myDateNew = "(" + myTimeNow.toLocaleTimeString() + ") ";

var botQuestionGender:String;

var whatIs:String;

outputField.text = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n";

// Listener for buttons
// 按钮的听众
// 耳をそば立てることはボタンがかかる
sendUsername_btn.addEventListener(MouseEvent.CLICK, clickUserName);
function clickUserName(event:MouseEvent):void {
    searchName();
}

send_btn.addEventListener(MouseEvent.CLICK, clickToChat);
function clickToChat(event:MouseEvent):void {
    beginWriting();
}


// Listener for input fields (ENTER key)
// 听众文本领域 输入文本 (enter键)
// 聞くテキスト分野 (入力キーを)
usernameField.addEventListener(KeyboardEvent.KEY_DOWN, sendUsername);
inputField.addEventListener(KeyboardEvent.KEY_DOWN, enterChat);


function sendUsername(event:KeyboardEvent):void { //calls searchName function
    if (event.keyCode == Keyboard.ENTER) {
        searchName();    
    }
}


function enterChat(event:KeyboardEvent):void {
    if (event.keyCode == Keyboard.ENTER) {
        beginWriting();    
    }
}

//This function gets the username string and search in the female names database
// 功能 : 获得用户名
// 機能: ユーザー名を得なさい
function searchName():void {
        var online:onlineSound = new onlineSound();
        var channel:SoundChannel = online.play();
        userName = usernameField.text;
        bgLogin.alpha = 0;
        usernameField.y = -100;
        sendUsername_btn.y = -150;
        userNameToOutPut = usernameField.text;
        cleanUsername(userName);
        infoField.appendText(userNameToOutPut + ", hola" + "\n");
        this.usernameField.text = "";
        loadDatabase();
        stage.focus = inputField;
        this.addChild(mySb);
        mySb.enabled = true;
        addChild(send_btn);
        

}


//This function begins the process
// 开始进程
// プロセスを開始しなさい
function beginWriting():void {
        inpText = inputField.text;
        var lghUser:int = userNameToOutPut.length;
        var userNameSay = userNameToOutPut + ": ";
        outputField.htmlText += <b>{myDateNew + userNameSay}</b> + <font color="#006666">{inpText}</font> + "\n";
        inpText = inpText.toLowerCase();
        this.inputField.text = "";
        mySb.update();
        mySb.scrollPosition = 1000;
        foundOne = false;
        foundAnswer = false;
        positionOne = -1;
        myCheckNumber = (myCheckNumber+1);
        inputProcessing(inpText);
        theBotAsk();
}

//The bot asks a question when it is invocaated
// 有时机器人问问题
// ロボットは質問を時々する
function theBotAsk(){

         if (myCheckNumber == 3)
        {
            soundAnswer();
            outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{botQuestionAge}</font> + "\n";
            mySb.scrollPosition = 1000;
            requestAge = true;
        }
        if (myCheckNumber == 8){
            requestAge = false;
        }
        if (myCheckNumber == 7)
        {
            soundAnswer();
            outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{botQuestionGender}</font> + "\n";
            mySb.scrollPosition = 1000;
            requestGender = true;
        }
        if (myCheckNumber == 16){
            requestGender = false;
        }

}

// Load XML
// 得到XML数据库
// XMLのデータベースを得なさい

function loadDatabase(){
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();

   xmlLoader.addEventListener(Event.COMPLETE, LoadXML);

   xmlLoader.load(new URLRequest("bdenglish.xml"));
   
   
function LoadXML(e:Event):void {
   xmlData = new XML(e.target.data);


questionsToAnswer = xmlData;

// Get data for Bot Questions (the bot can ask questions). Also it gets bot's name an age
botQuestionAge = questionsToAnswer.botquestions.age.text();


ageAnswerKid = questionsToAnswer.botquestions.answerAgeKid.text();
ageAnswerYoung = questionsToAnswer.botquestions.answerAgeYoung.text();
ageAnswerTeen = questionsToAnswer.botquestions.answerAgeTeen.text();
ageAnswerAdult = questionsToAnswer.botquestions.answerAgeAdult.text();
ageAnswerOld = questionsToAnswer.botquestions.answerAgeOld.text();
ageAnswerNop = questionsToAnswer.botquestions.answerAgeNop.text();

answerGenderWoman = questionsToAnswer.requestYesWoman.answX.text();
answerGenderMan = questionsToAnswer.requestYesMan.answX.text();

// Add new nodes <learning>. After you can add only data to the multidimensional array.
// 您能增加新的XML结 <learning> - 在您以后必须增加数据到多维数组
// 新しいXMLノードを加えなさい <learning> - それの後で、多次元配列にデータを加えなければならない


// It adds the username to XML node <learning>
userNameId = <username><answX>{userNameToOutPut}</answX></username>;
questionsToAnswer.learning.username += userNameId;

// It adds a new node with the user genre in <learning>
userNameGender = <genderuser><answX>{genderUser}</answX></genderuser>;
questionsToAnswer.learning.genderuser += userNameGender;

// It will add a new node with the user age in <learning>
var userNameAge = <age><answX>{numberInput}</answX></age>;
questionsToAnswer.learning.age += userNameAge;

// Converts the XML to an multidimensional Array
// XML数据库 ----> 多维数组
// XMLのデータベース ----> 多次元アレイ
var structureFromNode:XMLList = questionsToAnswer.children();

var i:Number = 0;


var childNode:XML;


     for each (childNode in structureFromNode){
     var j:Number = 0;
    dataBaseArray[i] = new Array();
    if(childNode.name() != undefined){
    dataBaseArray[i][0] = childNode.name();
    j++;
    }

    
var node:XML;


      for each (node in childNode.children()){
        if(node.name() != undefined){
        dataBaseArray[i][j] = node.name();
        j++;
        }
        
        if(node.text() != undefined){
        dataBaseArray[i][j] = node.text();
        j++;
        }

        
var threeNode:XML;       

       
      for each(threeNode in node.children()){ 
        if(threeNode.name() != undefined){
        dataBaseArray[i][j] = threeNode.name();
        j++;
        }
        
        if(threeNode.text() != undefined){
        dataBaseArray[i][j] = threeNode.text();
        j++;
        }

        
var fourNode:XML;

       for each(fourNode in threeNode.children()){
         if(fourNode.name() != undefined){
         dataBaseArray[i][j] = fourNode.name();
         j++;
         }
         
         if(fourNode.text() != undefined){
         dataBaseArray[i][j] = fourNode.text();
         j++;
         }
    
    
var fiveNode:XML;

     for each(fiveNode in fourNode.children()){
         if(fiveNode.name() != undefined){
         dataBaseArray[i][j] = fiveNode.name();
         j++;
         }
    
         if(fiveNode.text() != undefined){
         dataBaseArray[i][j] = fiveNode.text();
         j++;
         }

         
var sixtyNode:XML;

     for each(sixtyNode in fiveNode.children()){
         if(sixtyNode.name() != undefined){
         dataBaseArray[i][j] = sixtyNode.name();
         j++;
         }
    
     if(sixtyNode.text() != undefined){
         dataBaseArray[i][j] = sixtyNode.text();
         j++;

         }
        }
       }  
      } 
    }
  }
    
i++;
            
}


}

}


// This function processes the input string, it deletes characters or transform the input string
// 输入串过程 - 改变或删除字符 - 小写字母
// 入力ひもプロセス - 変更または削除の特性 - 小文字
function inputProcessing(inpText){
    var charactCleanInput = new Array("ø","?", ",", "°", "!", "'", ".", "(", ")", ";", "&", "*", "$", "#");
    for(var charMore in charactCleanInput){
        inpText = inpText.split(charactCleanInput[charMore]);
        inpText = inpText.join("");
        }
    // Example: this replace a word
    inpText = inpText.split("helo").join("hello");
    inpText = inpText.split("are u ").join("are you ");
    
    
    
    var someBadWords = new Array(" fuck", " sheet ", "porn", " tits", "fuck");
    for(var badWord in someBadWords){
        inpText = inpText.split(someBadWords[badWord]);
        inpText = inpText.join(" badWords ");
        trace(inpText);
   }
       
    var haWordsTwo = new Array("haha", "hehe", "hahaha", "jaja", "xd", "hihi", "hi hi", ":)", "XD");
    for(var haSmile in haWordsTwo){
        inpText = inpText.split(haWordsTwo[haSmile]);
        inpText = inpText.join(" actionsmile ");
   }
       
    var someOkThree = new Array("okkk", "okk", " oki ", "esta bien");
    for(var okOk in someOkThree){
        inpText = inpText.split(someOkThree[okOk]);
        inpText = inpText.join(" OK ");
   }
   
       var iAmWoman = new Array("I am a girl", "I am a woman", "I am a little girl", "my gender is female");
    for(var wGender in iAmWoman){
        inpText = inpText.split(iAmWoman[wGender]);
        inpText = inpText.join(" iamwoman");
   }
   
    var iamMan = new Array("I am a boy", "I am male", "I am a man");
    for(var mGender in iamMan){
        inpText = inpText.split(iamMan[mGender]);
        inpText = inpText.join(" iamman");
   }
   

   
    inpText = inpText.split("·").join("a");
    inpText = inpText.split("È").join("e");
    inpText = inpText.split("Ì").join("i");
    inpText = inpText.split("Û").join("o");
    inpText = inpText.split("·").join("u");
    inpText = inpText.split("Ò").join("n");
    inpText = inpText.split("tell me who").join("who");
    inpText = inpText.split("do you know who").join("who");
    inpText = inpText.split("my name is").join("i am ");
    inpText = inpText.split("what is my").join("learning ");
    inpText = inpText.split(" im ").join("i am ");
    

    if((inpText.charAt(0)) == " "){
            var iTextNumber:Number = inpText.length;
            inpText = inpText.substr(1, iTextNumber);
        }
        
    inputText = inpText.split(" ");
    
    if(requestGender == true){ 
       if(inputText[0] == "yes"){
           if(genderUser == "woman"){
             inputText[0] = "requestYesWoman";
             genderUser = "woman";
             requestGender = false;
           }
           if(genderUser == "man"){
             inputText[0] = "requestYesMan";
             genderUser = "man";
             requestGender = false;

           }
       }
    }
    //
    if(requestGender == true){
        if(inputText[0] == "no"){
           if(genderUser == "woman"){
             inputText[0] = "requestYesMan";
             genderUser = "man";
             requestGender = false;
           }
       }
       
       if(inputText[0] == "no"){
         if(genderUser == "man"){
             inputText[0] = "requestYesWoman";
             genderUser = "woman";
             requestGender = false;
           }
       }
       
    }
    
    
    botIsWriting();
        
    
}

// Timer delays
// 定时器延迟
// タイマーは遅れる
function botIsWriting(){
  var timerBot:Timer = new Timer(100, 7);

   timerBot.addEventListener(TimerEvent.TIMER, timerWait);
   timerBot.addEventListener(TimerEvent.TIMER, okToTalk);

    function timerWait(event:TimerEvent):void {
        var timerCount = timerBot.currentCount;
    infoField.text = timerCount;
    isWriting.text = botName + " is writing an answer";
    }
    
    timerBot.start();
    
    // count: 1,2,3,4,5,6,7
    function okToTalk(event:TimerEvent):void {
        if (timerBot.currentCount == 7) {
        infoField.text = "OK";
        isWriting.text = "";
        talkingMe(inputText, dataBaseArray);
                }
    }



}



// This function gets the first found string position. The bot must find it.
// 作用 : 首先找到 -------> 机器人必须发现第一个词
// 機能 : 最初に見つけられる ---------> ロボットはそれを見つけなければならない
function talkingMe(inputText, dataBaseArray):void
{
    soundAnswer();
    trace(inputText + " THIS IS INPUT");
          for (var k:int = 0; k < dataBaseArray.length; k++) {
          var l:int = 0;
            if(dataBaseArray[k][l] == inputText[0]){
            positionOne = k;
            foundOne = true;
               if(dataBaseArray[positionOne][(positionTwo+1)] == "answX"){
                  //outputField.appendText(botNameSay + dataBaseArray[positionOne][(positionTwo+2)] + "\n");
                  outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{dataBaseArray[positionOne][(positionTwo+2)]}</font> + "\n";
                  mySb.scrollPosition = 1000;
                }
                else{
                   NewStringFinding();
                }
            }


        }

             if(foundOne == false){
            // another possibility
                 activeQuestion();
       }
}


// Waiting an answer
// 机器人等待回答
// ロボットは答えを待っている
function activeQuestion()
{       
         
         if(requestGender == true){
             if(inputText[0] == "iamwoman"){
              outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{answerGenderWoman}</font> + "\n";
              requestGender = false;
              genderUser = "woman";
              foundOne = true;
              foundAnswer = false;
              mySb.scrollPosition = 1000;
              }
          }
        
          if(requestGender == true){
             if(inputText[0] == "iamman"){
              outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{answerGenderMan}</font> + "\n";
               requestGender = false;
               genderUser = "man";
              foundOne = true;
              foundAnswer = false;
               mySb.scrollPosition = 1000;
             }
          }
          
        if (requestAge == true){
         numberInput = (inputText[0] || inputText[1] || inputText[2]);
          // Add age number to multidimensional array (learning)
          // 增加多维数组数据
          // 多次元アレイデータを追加しなさい
         dataBaseArray[2][9] = numberInput;
         
         
         // answer to user age
           if((numberInput > 5) && (numberInput < 10) ){
              outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{ageAnswerKid}</font> + "\n";
              mySb.scrollPosition = 1000;
              foundOne = true;
              foundAnswer = false;
              requestAge = false;
           }
            if((numberInput >= 10) && (numberInput < 15) ){
              outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{ageAnswerYoung}</font> + "\n";
              mySb.scrollPosition = 1000;
              foundOne = true;
              foundAnswer = false;
              requestAge = false;
           }
                if((numberInput >= 15) && (numberInput < 20) ){
              outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{ageAnswerTeen}</font> + "\n";
              mySb.scrollPosition = 1000;
              foundOne = true;
              foundAnswer = false;
              requestAge = false;
           }
                if((numberInput >= 20) && (numberInput < 60) ){
              outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{ageAnswerAdult}</font> + "\n";
              mySb.scrollPosition = 1000;
              foundOne = true;
              foundAnswer = false;
              requestAge = false;
           }
                if((numberInput >= 60) && (numberInput < 99) ){
              outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{ageAnswerOld}</font> + "\n";
              mySb.scrollPosition = 1000;
              foundOne = true;
              foundAnswer = false;
              requestAge = false;
              }
                 if(numberInput >= 99){
              outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{ageAnswerNop}</font> + "\n";
              mySb.scrollPosition = 1000;
              foundOne = true;
              foundAnswer = false;
              requestAge = false;
           }
           
         }
         
         if(foundOne == false){
                 idontKnow();
         
       }


}



// Search function
// 查寻多维数组
// 多次元配列の単語を見つけなさい

function NewStringFinding()
{   
var n:int = 1;
    
    for (var m:int = 1; m < dataBaseArray[positionOne].length; m++) {
            
            

        if(dataBaseArray[positionOne][m] == inputText[1]){
            trace("Element 1 exists on position [" + positionOne + "][" + m + "]" + " findind twoInput");
            if(dataBaseArray[positionOne][(m+1)] == "answX"){
               foundAnswer = true;
               outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{dataBaseArray[positionOne][(m+2)]}</font> + "\n";
               mySb.scrollPosition = 1000;
               break;
            }
            actualPosition = m;
            
        }
        if(dataBaseArray[positionOne][m] == inputText[2]){
            trace("Element 2 exists on position [" + positionOne + "][" + m + "]" + " findind twoInput");
            if(dataBaseArray[positionOne][(m+1)] == "answX"){
               foundAnswer = true;
               outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{dataBaseArray[positionOne][(m+2)]}</font> + "\n";
               mySb.scrollPosition = 1000;
               break;
            }
            actualPosition = m;
        }
        if(dataBaseArray[positionOne][m] == inputText[3]){
            trace("Element 3 exists on position [" + positionOne + "][" + m + "]" + " findind twoInput");
            if(dataBaseArray[positionOne][(m+1)] == "answX"){
               foundAnswer = true;
               outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{dataBaseArray[positionOne][(m+2)]}</font> + "\n";
               mySb.scrollPosition = 1000;
               break;
            }
            actualPosition = m;
        }
        if(dataBaseArray[positionOne][m] == inputText[4]){
            trace("Element 4 exists on position [" + positionOne + "][" + m + "]" + " findind twoInput");
            if(dataBaseArray[positionOne][(m+1)] == "answX"){
               foundAnswer = true;
               outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{dataBaseArray[positionOne][(m+2)]}</font> + "\n";
               mySb.scrollPosition = 1000;
               break;
            }
            actualPosition = m;
        }
         if(dataBaseArray[positionOne][m] == inputText[5]){
            trace("Element 5 exists on position [" + positionOne + "][" + m + "]" + " findind twoInput");
            if(dataBaseArray[positionOne][(m+1)] == "answX"){
               foundAnswer = true;
               outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{dataBaseArray[positionOne][(m+2)]}</font> + "\n";
               mySb.scrollPosition = 1000;
               break;
            }
            actualPosition = m;
        }
         if(dataBaseArray[positionOne][m] == inputText[6]){
            trace("Element 6 exists on position [" + positionOne + "][" + m + "]" + " findind twoInput");
            if(dataBaseArray[positionOne][(m+1)] == "answX"){
               foundAnswer = true;
               outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{dataBaseArray[positionOne][(m+2)]}</font> + "\n";
               mySb.scrollPosition = 1000;
               break;
            }
            actualPosition = m;
        }
         if(dataBaseArray[positionOne][m] == inputText[7]){
            trace("Element 7 exists on position [" + positionOne + "][" + m + "]" + " findind twoInput");
            if(dataBaseArray[positionOne][(m+1)] == "answX"){
               foundAnswer = true;
               outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{dataBaseArray[positionOne][(m+2)]}</font> + "\n";
               mySb.scrollPosition = 1000;
               break;
            }
            actualPosition = m;
        }
         

        else{

            trace("another");
            
            
        }
                    
    }
    idontKnow();
}


function idontKnow(){
        whatIs = "Sorry, I don't understand it, " + userNameToOutPut;
        if(foundOne == false){
             trace(" the bot doesnt find an answer");
             outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{whatIs}</font> + "\n";
             mySb.scrollPosition = 1000;
             return;
             }
         trace("!!!!!!!");
         trace(foundAnswer + " foundAnswer");
        if(foundAnswer == false){
             trace(" the bot doesnt find an answer");
             outputField.htmlText += <b>{myDateNew + botNameSay}</b> + <font color="#660033">{whatIs}</font> + "\n";
             mySb.scrollPosition = 1000;
             return;
             }
         trace("!!!!!!!");
         trace(foundAnswer + " foundAnswer");
}


// Get user gendre
// 作用: 男性或女性
// 機能 : 男性か女性

function cleanUsername(userName)
    {
    var charactClean = new Array("ø","?", ",", "°", "!", "'", ".", "(", ")", ";", "&");
    for(var i in charactClean){
        userName = userName.split(charactClean[i]);
        userName = userName.join("");
        userNameOk = userName;        }
        loginUser(userNameOk, femaleNames);
    }

// Female names database
// 女性命名数据库
// 女性ユーザー名のデータベース
var femaleNames:Array = ["lindsay, angelina, heather, alejandra", "adelaida", "aida", "alicia", "amalia", "amelia", "ana", "anastasia", "angela", "angelica", "angelina", "anisia", "antonia", "aquilina", "arabia", "argentea", "ariana", "aria", "artemia", "artemisa", "asela", "augusta", "aurea", "aurelia", "aurora", "berta", "diva", "barbara", "basilia", "beatriz", "benedicta", "benita", "bibiana", "bonita", "brigida", "calixta", "candida", "caridad", "carlota", "casilda", "catalina", "cecilia", "celerina", "cirenia", "clara", "claudia", "clerodiae", "clotilde", "concesa", "condesa", "constancia", "cornelia", "cristina", "cuartila", "cunegunda", "daria", "dartina", "demetria", "deotila", "dominga", "dominica", "dona", "donna", "britney", "britany", "donata", "donatta", "donatella", "dorotea", "edelmira", "evelyn", "eve", "edit", "edith", "elena", "eliana", "elvira", "emilia", "emilie", "emily", "emiliana", "ema", "emma", "escolastica", "esperanza", "eudocia", "eudoxia", "eufemia", "eufrasia", "eufrosina", "eugenia", "eulalia", "eutropia", "eva", "evenilda", "faustina", "felicia", "felicidad", "felipa", "fermina", "filancia", "filomena", "filotea", "flamina", "flavia", "flodoberta", "flora", "florencia", "florentina", "fiorella", "fiorela", "floriana", "gala", "galatea", "gaia", "gaudelia", "gema", "genoveva", "gerburga", "genoveba", "gertrudis", "gisela", "gisella", "gliceria", "gracia", "gundelinda", "heraclea", "heraclia", "hermenegilda", "hilaria", "ifigenia", "iluminada", "ines", "inocencia", "iraides", "irene", "isabel", "isidora", "joaquina", "juana", "juanita", "julia", "juliana", "justa", "lelia", "lesly", "leoncia", "leonila", "leonor", "lidia", "livia", "liliosa", "lili", "liliana", "lioba", "lorenza", "lucia", "lucila", "lucilla", "lucinia", "lucresia", "luisa", "luminosa", "maca", "macarena", "makarena", "marcela", "marcelina", "margarita", "maria", "mariana", "marianella", "marianela", "marina", "marta", "martina", "matilde", "maura", "maxima", "menodora", "modesta", "monica", "natalia", "nataly", "natalie", "naty", "ninfa", "noelia", "obdulia", "ada", "hada", "oda", "odilia", "olga", "oliva", "olivaria", "osia", "osiria", "osiris", "carla", "paladia", "patricia", "paula", "paola", "paulina", "paulette", "perpetua", "petronila", "placida", "polisena", "prisca", "priscilla", "priscila", "pricila", "quinta", "quiona", "radegunda", "raquel", "rebeca", "regina", "reinalda", "reinaldina", "ricarda", "romania", "romanita", "romula", "rosa", "rose", "rosalia", "rosalina", "rosalinda", "rufica", "carola, carolina", "carol", "caro", "sabina", "sara", "sarita", "segunda", "serafina", "severiana", "silvia", "silvie", "sira", "sofia", "sonia", "susana", "susy", "susan", "susanne", "teodora", "teodosia", "teofila", "teresa", "teresina", "tertula", "vale", "valentina", "valeriana", "verona", "veronica", "vicenta", "victoria", "viqui", "vicky", "vileta", "yolanda", "zoe", "miriam", "mirella", "eliza", "elisa", "elizaberth", "elizabeth", "andrea", "angie", "klaudia", "karla", "tania", "tanya", "orieta", "carmen", "guillermina", "pamelita", "pamela", "daniela", "luz", "pia", "paz", "coni", "cony", "constanza", "jenny", "gaby", "gabriela", "gabrielle", "loreto", "alice", "paulita", "irene", "valeria", "valeska", "vania", "vannia", "viviana", "maribel", "pepi", "pepita", "alena", "alana", "sole", "soledad", "ximena", "jimena", "roly", "tatiana", "soraya", "danae", "danette", "lina", "fernanda", "manuela", "triana", "yeisy", "mitsy", "isabel", "camila", "camille", "marie", "kamila", "lia", "mia", "lya", "karina", "kelly", "lynne", "roxanna", "roxana", "clara", "samara", "luzmira", "rina", "simonette", "simona", "simoneta", "liz", "loredana", "luli", "laura", "rosalba", "rocio", "romina", "abril", "avril", "shakira", "abigail", "adela", "adela", "josefa", "adriana", "agnes", "agostina", "agustina", "agripina", "adoracion", "ailin", "ailyn", "aileen", "alba", "alda", "alessandra", "alejandrina", "alexia", "alfonsina", "aline", "alina", "alondra", "paloma", "estrella", "amanda", "amparo", "amy", "anabel", "analia", "antonella", "antonieta", "ofelia", "noelia", "ariela", "astrid", "aurelia", "lisette", "ayelen", "sandra", "beatriz", "nicolette", "nicole", "belinda", "bernarda", "bianca", "brigida", "brisa", "brunilda", "canela", "karen", "carmela", "caterina", "katy", "katherine", "celia", "chloe", "cinthya", "cintia", "cinthia", "clarisa", "clarisse", "concepcion", "corina", "cristal", "dafne", "daira", "dalia", "dalila", "joyce", "dana", "denisse", "denise", "desiree", "devota", "debora", "dina", "dolores", "dulce", "colomba", "ignacia", "filomena", "eduarda", "edna", "elaine", "elba", "elcira", "eleana", "eleonor", "eloisa", "elida", "emilce", "inmaculada", "anais", "lucy", "esmeralda", "erika", "estefania", "stephany", "ester", "evangelina", "fabiana", "fabiola", "fanny", "francisca", "fausta", "felipa", "federica", "flor", "flora", "francesca", "frida", "gala", "georgia", "francia", "ginebra", "gioconda", "giuliana", "gladis", "gladys", "glenda", "gloria", "greta", "guadalupe", "lupe", "hannah", "haydee", "heidi", "hortensia", "hilda", "irma", "ines", "indira", "iris", "ivana", "ivonne", "jaqueline", "jaqui", "javiera", "jazmin", "jennifer", "jeanette", "jessie", "judith", "julieta", "katerina", "katia", "keira", "kiara", "kimberly", "layla", "leslie", "leticia", "libertad", "lilian", "linda", "lola", "lourdes", "luciana", "lucila", "ludmila", "mabel", "magda", "maya", "amaya", "magaly", "magali", "mirna", "yasna", "yamna", "maia", "maite", "malena", "mara", "mariangeles", "marian", "marianne", "maricruz", "marilu", "marite", "marisa", "marlene", "martha", "melanie", "melina", "melinda", "micaela", "mercedes", "milene", "miranda", "mireya", "montserrat", "nadia", "nancy", "naomi", "natacha", "nayla", "nazarena", "belen", "nelida", "nelly", "nilda", "nina", "nora", "odette", "oriana", "olimpia", "olivia", "ornela", "ornella", "penelope", "ursula", "piedad", "pilar", "purificacion", "ramona", "roberta", "rosalia", "rosana", "rosina", "sabrina", "samanta", "samantha", "sally", "selena", "selene", "sebastiana", "selva", "serena", "sigrid", "silvana", "silvina", "sylvia", "tabatha", "tamara", "taty", "telma", "teodora", "bernardita", "teresita", "tiara", "trinidad", "vanessa", "venecia", "vivian", "virginia", "wendy", "xiomara", "yesenia", "jessica", "yamila", "yamile", "yanella", "yadira", "yanet", "yanina", "yaninna", "gianinna", "yasmin", "ivette", "yvette", "yvonne", "zulma", "zelma", "zulema", "zunilda", "grace", "isadora", "oriana", "dina"];




function loginUser(userNameOk, femaleNames):void 
    {   
        userNameOk = userNameOk.toLowerCase();
        for(var i:Number = 0; i < femaleNames.length; i++)
        {
             if(femaleNames[i] == userNameOk)
             {
                 infoField.appendText(userNameToOutPut + ", you are a woman" + "\n");
                 // 用户性别
                 // ユーザーの性(男性か女性)
                 genderUser = "woman";
                trace("she is a " + genderUser);
             }
        }
        botQuestionGender = "øare you a " + genderUser + "?";
    }



function createOutputBox(userNameToOutput:String):void
     {
      trace(userNameToOutPut + " function createOutputBox");
      addChild(infoField);
      infoField.text = userNameToOutPut + ", hi";
     }

return;

// Player sound
// 球员声音
// 可聴周波プレーヤー
function soundAnswer(){
    var typing:typingSound = new typingSound();
    var answerSound:SoundChannel = typing.play();
}            
        }
    }
}