if(t==this){
 t.xxtree2.setDefer();
}else{
 t.xxtree2.setSubload();
 t.xxtree2.emptyNodes();
 t.xxtree2.setUndefer();
}
t.xxtree2.add(2,-1,'Technical stuffs','');
t.xxtree2.add(3,2,'What is MyPitSelf ?','MyPitSelf is a system to develop and maintain programs and data in a database. \n<br />\nEach development has its own environment with: \n<br />\n<br />\nOne "system" database containing: \n<br />\n- the description of the data,\n<br />\n- the source of the programs,\n<br />\n- a list of settings like constants, working directories.... \n<br />\n<br />\nOne or more "data" databases containing the data to maintain. \n<br />\n<br />\nDuring the development, environments are included in the main environment. \n<br />\n<br />\nAfter the development mode, one can produce a set which is independant of the main environment.\n<br />\n<br />\n<img src="img/systemdb_datadb.gif" alt="" />\n<br /><br />\nAs a developer, with MyPitSelf, you will build the environments for other programs and fill the "system" databases of the other programs. \n<br />\n<br />\nIts target is to develop multi-user programs so there is a user authorization context with password entry. \n');
t.xxtree2.add(4,2,'Why MyPitSelf ?','Three main reasons: \n<br />\n<br />\n1°) Databases are good to store and use data. They can also be good to store and use programs. The programs had to be written in a way that they can be organized in a database, so that they can be linked to the data they compute. That is why there is a language. This also means that programs are considered as data, consequently, one can treat programs like data. \n<br />\n<br />\n2°) Once the data are defined, the programs compute them. In this system, the first step is to define all the data needed, after which the programs can be written. The original types of data are those given by the database. \n<br />\n<br />\n3°) The first program done with this system is the system itself because if this system can organize and compute any data, it can organize and compute a system to organize and compute data. \n<br />\n<table border="0" cellpadding="2" cellspacing="0" summary=""><tr>\n<td>\nThis explains the loop in this image<\/td>\n<td>\n\n<div style="float:right">\n<a href="javascript:OpenOutWindow1(\'img/systemdb_datadb.gif\',0,0,335,145)">\n<img src="img/systemdb_datadb_s.gif" alt="" /><\/a>\n<\/div>\n\n<\/td><\/tr><\/table> \n');
t.xxtree2.add(5,2,'How is it done ?','<p>Thanks to PHP, MySql, Javascript and Apache with Linux/Win2K on Firefox/IE. <br />\n<br />\nThe tools used are mainly MyPitSelf, The W2k NotePad, and PhpMyAdmin. <br />\nLcc has been used to write a program to launch Batch jobs, It is an adaptation of mikehup.exe written by Michael Kohn (naken@naken.cc), Web page: http://www.naken.cc/ <br />\n<br />\nI use <strong>SVG <\/strong>to draw the tables with the links. <br />\n<br />\nPHP us used to write the basic functions. <br />\n<br />\nAll user functions should be written in the MyPitSelf language. The basis of this language is: <br />\n <\/p>\n<ul>\n    <li>Data define actions ( thanks to SQL ) therefor a part of the language. SQL requests once written generate functions which will be used by the language.<\/li>\n    <li>It can be transformed in a table view to be able to trace the use of each data and to be reverse-ingeenered.<\/li>\n<\/ul>\n<p>It is also based on: <br />\n <\/p>\n<ul>\n    <li>A call stack containing variables dropped by programs.<\/li>\n    <li>A variable stack containing pre-defined variables and the program variables.<\/li>\n    <li>function calls.<\/li>\n<\/ul>\n<p style="text-align: justify"><u><strong>Note on the translation:<\/strong><\/u> although I\'m french, I started to write this software in english afterwhich I added the possibility to have a localised ( french in my case ) version on-line, so I could write in both languages, especially this documentation. <br />\nSome chapters have been written directly in french, then translated into english. For others, it is the opposite. Mark has corrected a part of the English translation, The good english comes from him, I assume all the errors. <br />\nAs a result of time constraints, there are sometimes differences in documentation but I think these are of minor importance and you will know how to deal with them. <br />\n<br />\n<br />\nI will will concentrate on the French version and the English version. If other contributors accept to translate this software in other languages, I\'ll be able to propose their traductions in the distribution. <br />\nLater in this documentation, ( chap How TO\'S ), I talk about the translation.<\/p>');
t.xxtree2.add(7,2,'State of MyPitSelf','<p>Never Finished because I always want to add some more functions! But good enough to have some production programs.  <\/p>\n<p>Currently, functions like versioning, testcase scenarios, automatic documentation, Internationalisation ... that I have started but they are not achieved yet.  <br />\nAt least, the existing ones allowed me to do what you are going to see ( if you go on ).  <br />\n<br />\nI can\'t tell you when the next version will come out because I can\'t do this at 100%.  <br />\n<br />\nNow, let\'s see what it looks like.<\/p>');
t.xxtree2.add(230,2,'An example','');
t.xxtree2.add(231,230,'Data','Suppose you have a data model with a table of information about people (names, age etc.). \n<br />\n<br />\nAlso suppose that you have generated several requests with the system, including the one which has the number, say, 1012. \n<pre>\nSELECT   T0.Id,T0.Name,T0.Age \nFROM     $Data.People T0 \nWHERE    T0.Age <= %SQLPAR0% \nORDER BY T0.Name ASC\n<\/pre>\nA function called R_1012_Select() has then been generated and it takes one parameter which is the age (xxx). \n<br />\n<br />\nThe system must generate the requests thanks to your specifications because all the parameters (tables, fields, conditions, sort orders) are stored in the system. \n<br />\n<br />\nThen, the system can generate the SQL sentence and the function using this sentence\n');
t.xxtree2.add(232,230,'Program','A possible use of this function could be to output all the people whose ages are >= 30. \n<br />\nThis will give a program which looks like (comments are preceded by //) : \n<pre>\nTac(                // Take and call: put values in the call stack and/or call functions.\n Cst(30),           // constant 30 pushed in the call stack\n R_1012_Select(     // select list of these people (1 parameter xxx taken from the call stack)\n  Do(\n   Take(T0.Name),   // Pushes the name in the call stack\n   out(1)           // displays the first element contained in the call stack\n  )                 // The name is popped here\n )\n)                           \n<\/pre> \nRemarque: lines breaks are ignored, one can also write this function like: \n<br />\n<pre>\nTac(Cst(30),R_1203_Select(Do(Take(T0.Nom),out(1))))\n<\/pre> \n<br />\nComas are not mandatory after  ), an other way to write this function would be : \n<pre>\nTac(\n Cst(30)\n R_1203_Select(\n  Do(Take(T0.Nom),out(1))\n )\n)\n<\/pre> \nBlocks comments are delimited by /* and */ , they MUST start at the first column and can be nested. ');
t.xxtree2.add(233,230,'Table program','This program has this table format: : \n<br />\n<table cellspacing="1" cellpadding="0" summary="">\n <tr class="zz_headerlist">\n  <td style="border:1px black solid;">Ind<\/td>\n  <td style="border:1px black solid;">Function #<\/td>\n  <td style="border:1px black solid;">Parent #<\/td>\n  <td style="border:1px black solid;">Order In<br />Parent<\/td>\n  <td style="border:1px black solid;">Function<br />Name<\/td>\n  <td style="border:1px black solid;">Function<br />Type<\/td>\n  <td style="border:1px black solid;">Number Of<br />Children<\/td>\n  <td style="border:1px black solid;">Level<\/td>\n  <td style="border:1px black solid;width:100px;">C1<\/td>\n  <td style="border:1px black solid;width:100px;">C2<\/td>\n <\/tr>\n <tr CLASS="zz_list" onmouseover="sc(this,1)" onmouseout="sc(this,0)" ondblclick="sc11(this)">\n\n<td>0<\/td>    <td>0<\/td>    <td>-1<\/td>    <td>0<\/td>    <td>0<\/td>    <td>INIT<\/td>    <td>1<\/td>    <td>0<\/td>    <td><\/td>    <td><\/td>  <\/tr>\n  <tr CLASS=LIST onmouseover="sc(this,1)" onmouseout="sc(this,0)" ondblclick="sc11(this)"><td>1<\/td>    <td>1<\/td>    <td>0<\/td>    <td>1<\/td>    <td>Tac<\/td>    <td>formula<\/td>    <td>2<\/td>    <td>1<\/td>    <td><\/td>    <td><\/td>  <\/tr>\n  <tr CLASS=LIST onmouseover="sc(this,1)" onmouseout="sc(this,0)" ondblclick="sc11(this)"><td>2<\/td>    <td>2<\/td>    <td>1<\/td>    <td>1<\/td>    <td>Cst<\/td>    <td>formula<\/td>    <td>1<\/td>    <td>2<\/td>    <td><\/td>    <td><\/td>  <\/tr>\n  <tr CLASS=LIST onmouseover="sc(this,1)" onmouseout="sc(this,0)" ondblclick="sc11(this)"><td>3<\/td>    <td>3<\/td>    <td>2<\/td>    <td>1<\/td>    <td>30<\/td>    <td>Value<\/td>    <td>0<\/td>    <td>3<\/td>    <td><\/td>    <td><\/td>  <\/tr>\n  <tr CLASS=LISTS onmouseover="sc(this,1)" onmouseout="sc(this,0)" ondblclick="sc11(this)"><td>4<\/td>    <td>4<\/td>    <td>1<\/td>    <td>2<\/td>    <td>R_1203_Select<\/td>    <td>formula<\/td>    <td>1<\/td>    <td>2<\/td>    <td><\/td>    <td><\/td>  <\/tr>\n  <tr CLASS=LIST onmouseover="sc(this,1)" onmouseout="sc(this,0)" ondblclick="sc11(this)"><td>5<\/td>    <td>5<\/td>    <td>4<\/td>    <td>1<\/td>    <td>Do<\/td>    <td>formula<\/td>    <td>2<\/td>    <td>3<\/td>    <td><\/td>    <td><\/td>  <\/tr>\n  <tr CLASS=LIST onmouseover="sc(this,1)" onmouseout="sc(this,0)" ondblclick="sc11(this)"><td>6<\/td>    <td>6<\/td>    <td>5<\/td>    <td>1<\/td>    <td>Take<\/td>    <td>formula<\/td>    <td>1<\/td>    <td>4<\/td>    <td><\/td>    <td><\/td>  <\/tr>\n  <tr CLASS=LIST onmouseover="sc(this,1)" onmouseout="sc(this,0)" ondblclick="sc11(this)"><td>7<\/td>    <td>7<\/td>    <td>6<\/td>    <td>1<\/td>    <td>T0.Name<\/td>    <td>zone<\/td>    <td>0<\/td>    <td>5<\/td>    <td><\/td>    <td><\/td>  <\/tr>\n  <tr CLASS=LIST onmouseover="sc(this,1)" onmouseout="sc(this,0)" ondblclick="sc11(this)"><td>8<\/td>    <td>8<\/td>    <td>5<\/td>    <td>2<\/td>    <td>out<\/td>    <td>formula<\/td>    <td>1<\/td>    <td>4<\/td>    <td><\/td>    <td><\/td>  <\/tr>\n  <tr CLASS=LIST onmouseover="sc(this,1)" onmouseout="sc(this,0)" ondblclick="sc11(this)"><td>9<\/td>    <td>9<\/td>    <td>8<\/td>    <td>1<\/td>    <td>1<\/td>    <td>Value<\/td>    <td>0<\/td>    <td>5<\/td>    <td><\/td>    <td><\/td>  <\/tr>\n<\/table>\n\n<br />\nWith this format, a program can analyse and identify the treatments with the data implied because all information about request #1012 are stored in the system. \n<br />\n<br />\nIn other words, one can reverse-engineer this program. \n<br />\n<br />\nIf you put this table format in the database, you can update the records with a program. Then, the system can regenerate the source format. \n\n');
t.xxtree2.add(234,230,'Source','<pre>\n< ? php\nfunction f_5001(){\n global $XVS,$XCS;  // variable stack and call stack\n $xxSI=sizeof($XCS);  // call stack init pos\n $xxSC=0;  // Stack push count\n //===== Start of function =====\n //===================\n $req4 = "\n SELECT  T0.Nom  FROM  `Gens` T0\n WHERE  T0.Age<=30\n ORDER BY  T0.Nom ASC " ;\n //===================\n $result4=mysql_query($req4);\n if(mysql_errno()==0){\n  while($mpsrow4=mysql_fetch_row($result4)){\n   echo \'<span class="DBG">\'.$mpsrow4[0].\'<\/span><br />\';   // output\n  }\n }else{\n  return(xxErrSql(\'1203_SELECT\',mysql_error(),$req4,$xxSI));\n }\n mysql_free_result($result4);\n //===== End of function =====\n return(true);\n}\n?>\n<\/pre>\nThis example is quite simple but you will see by a click here <a href="javascript:popup(\'mypitself_ExempleDeCode\')"><img src="img/sc.gif" /><\/a> \nsomething which is not: it is one of the function which does reverse ingineering of the execution of a program, it updates the table format of the function.\n<br />');
t.xxtree2.add(8,2,'Installation','I assume that Apache (1.3.29), Php (4.3.3), MySql (4.0), firefox or IE(6.0) are running fine on your system. The versions numbers are the one I currently use but I suppose that it will work with newer versions. \n<br />\n<br />\nI assume that you know a minimum on these software and particulary the way to make them run together. \n<br />\nIf this is not the case, please see the enormous amount of documentation about them. \n<br />');
t.xxtree2.add(9,8,'Unzip','There are two files to Unzip: \n<br />\nThe mypitselfw ( Web files ) to unzip in the htdocs folder of the web server \n<br />\nThe mypitselfp ( Program files ) to unzip somewhere else but not in a htdocs subfolder. \n<br />\n<br />\nOn a linux system, you should thew execute these commands:\n<br />\n<br />\ncd /var/www # assuming that you have put the folders mypitselfw and mypitselfp in /var/www\n<br />\nchmod -R o+w mypitselfp\n<br />\nchmod -R o+w mypitselfw\n<br />\ncd mypitselfp\n<br />\nchown root:root batch_linux.exe\n<br />\nchmod -R o+x batch_linux.exe');
t.xxtree2.add(10,8,'Php and Apache','');
t.xxtree2.add(67,10,'Php Configuration','<span class=ECHO>\nThe use of php.ini-recommended given with your php installation is strongly recommended\n<\/span>\n<br />\nAnyway, if you use something else at your own risk, at least check that that the settings below are:\n<br />\nregister_globals = Off\n<br />\n<br />\n<br />\nI use the setting\n<br />\ndisplay_errors = on\n<br />\ndisplay_startup_errors = On\n<br />\nerror_reporting  =  E_ALL\n<br />\nEven if those settings are not recommended but it is for debuggings reasons.\n');
t.xxtree2.add(68,10,'Apache Configuration','I assume Apache/php is running on your system. \n<br />\nAdd this setting to go directly to the index.php\n<pre>\n< IfModule mod_dir.c>\n DirectoryIndex index.php\n< /IfModule>\n<\/pre>');
t.xxtree2.add(11,8,'MyPitSelf Installation','  <br />\n  When you tried to connect to the first screen, you saw a screen like this one<br />\n  <br />\n  If this is not the case, something went wrong. Try to re-install it, deleting the folders and the database. \n  <!-- =============================================== BeginOfScreen ===================== -->\n  <table border="1" summary="">\n   <tr>\n    <td class="zz_record">\n     <span class="LISTTITLE">MyPitSelf installation.<\/span><br />\n     <table border="1" summary="">\n      <tr>\n       <td class="zz_record">\n        Enter here the connection string to mysql\n       <\/td>\n       <td class="zz_record">\n        <input type="text" value="localhost:3306" />\n       <\/td>\n      <\/tr>\n      <tr>\n       <td class="zz_record">\n        Enter here a valid user name<br />\n        to access to mysql\n       <\/td>\n       <td class="zz_record">\n        <input type="text" name="USER" value="" />\n       <\/td>\n      <\/tr>\n      <tr>\n       <td class="zz_record">\n        Enter here a valid password to access to mysql\n       <\/td>\n       <td class="zz_record">\n        <input type="text" name="PASSWORD" value="" />\n       <\/td>\n      <\/tr>\n      <tr>\n       <td class="zz_record">\n        Enter the full name ( path included ) of the file<br />\n        MyPitSelf root web path.txt<br />\n        ( It should be already filled )\n       <\/td>\n       <td class="zz_record">\n        <input class="zz_record" type="text" name="MYPITSELFWEBPATH" size="20" value=\n        "c:/mypitself/htdocs/mypitselfw/MyPitSelf root web path.txt" />\n       <\/td>\n      <\/tr>\n      <tr>\n       <td class="zz_record">\n        Use the button to point on the file<br />\n        MyPitself root program path.txt<br />\n        ( It is in the MyPitSelfP directory )\n       <\/td>\n       <td class="zz_record">\n        <input class="zz_record" name="FILEMYPITSELFPROGRAMPATH" type="file" size="20" />\n       <\/td>\n      <\/tr>\n     <\/table>Database initialisation <input type="hidden" name="ACTION" value="" /><br />\n     <a class="ACTION">Create database<\/a> <a class="ACTION">Delete database<\/a><br />\n     <br />\n     <br />\n     <br />\n    <\/td>\n   <\/tr>\n  <\/table><br />\n  <!--=================================== EndOfScreen ===================================-->\n  <br />\n  <br />\n  If you have entered correct information in the fields and then have clicked on <a class="ACTION">Create database<\/a> and after\n  a while you should have seen this screen<br />\n  <br />\n  <!--=============================================== BeginOfScreen =====================-->\n  <table border="1" summary="">\n   <tr>\n    <td class="zz_record">\n     <span class="LISTTITLE">MyPitSelf installation.<\/span>\n     <table border="1" summary="">\n      <tr>\n       <td class="zz_record">\n        Enter here the connection string to mysql\n       <\/td>\n       <td class="zz_record">\n        <input type="text" name="CONNECT" value="localhost:3306" />\n       <\/td>\n      <\/tr>\n      <tr>\n       <td class="zz_record">\n        Enter here a valid user name to access to mysql\n       <\/td>\n       <td class="zz_record">\n        <input type="text" name="USER" value="first" />\n       <\/td>\n      <\/tr>\n      <tr>\n       <td class="zz_record">\n        Enter here a valid password to access to mysql\n       <\/td>\n       <td class="zz_record">\n        <input type="text" name="PASSWORD" value="test" />\n       <\/td>\n      <\/tr>\n      <tr>\n       <td class="zz_record">\n        Enter the full name ( path included ) of the file<br />\n        MyPitSelf root web path.txt<br />\n        ( It should be already filled )\n       <\/td>\n       <td class="zz_record">\n        <input class="zz_record" type="text" name="MYPITSELFWEBPATH" size="20" value=\n        "c:/mypitself/htdocs/mypitselfw/MyPitSelf root web path.txt" />\n       <\/td>\n      <\/tr>\n      <tr>\n       <td class="zz_record">\n        Use the button to point on the file<br />\n        MyPitself root program path.txt<br />\n        ( It is in the MyPitSelfP directory )\n       <\/td>\n       <td class="zz_record">\n        <input class="zz_record" name="MYPFILEITSELFPROGRAMPATH" type="file" size="20" />\n       <\/td>\n      <\/tr>\n     <\/table><br />\n     <span class="LISTTITLE">Database MyPitSelfxxyzz created successfully.<\/span> <a href="#" class="ACTION">you can go to the\n     menu.<\/a><br />\n     <input type="hidden" name="ACTION" value="CREATE" /><br />\n     <span class="LISTTITLE">or you can<\/span> <a class="ACTION">Delete database<\/a><br />\n     <br />\n     <br />\n     <br />\n    <\/td>\n   <\/tr>\n  <\/table><br />\n  <!--=================================== EndOfScreen ===================================-->\n  If you did see it, it is all right, you should obtain a screen that ask you a user name and a password.<br />\n  If this is not the case, well, something went wrong, try to reinstall it, deleting the folders and the database.\n');
t.xxtree2.add(12,8,'First Loggin','  <p>\n   Click on this button: <a href="javascript:OpenWindowMyPitSelf();" class="OPTION">Go to MyPitSelf<\/a><br />\n   You should see a window asking you for a user name and a password<br />\n   <br />\n   Enter 1 in both fields and click on the "Enter" Button. Now if you see a window that looks like the one below, you can\n   <span class="LISTTITLE">be happy :).<\/span><br />\n   <br />\n  <\/p>\n  <table border="1" width="800" summary="" >\n   <tbody>\n    <tr>\n     <td class="RECORD">\n      <span><img src="img/l_myps_026_675.png" alt="" /><\/span>\n      <div style="border-width: 0px; padding: 0px; width: 675px; height: 28px;" class="body">\n       <div style="padding: 1px; float: left; height: 26px;">\n        <span><a style="border: 0px none ; padding: 1px 3px 2px; color: lightgrey; background-color: black;" class="ACTION" name="xxxmenu0"><img src="img/hs.gif" alt="" /><\/a> <span  class=\n        "ACTION"><a style="border-width: 0px; padding: 0px;" class="ACTION" name="BACKMENULI"><img src=\n        "img/picto/13x13/bacs.png" alt="" /><\/a><\/span> <a style="padding-bottom: 0px; padding-top: 0px;" class=\n        "ACTION" name="xxxmenu1"><img src="img/picto/13x13/cc.png" alt="" /><\/a> <a class="ACTION" name=\n        "xxxmenu10">Projects<\/a><a title="Profil" class="ACTION" name="xxxmenu1001">Profile<\/a><\/span>\n       <\/div>\n       <div style="padding: 1px; float: right; height: 26px;">\n        <a target="_blank" style="border-width: 0px; padding: 0px;" class="ACTION" name="XXXMD"><img src="img/q.gif"\n        alt="" /><\/a> <a style="border-width: 0px; padding: 0px;" class="ACTION" name="XXXMQ"><img src="img/quit.gif"\n        alt="" /><\/a>\n       <\/div>\n      <\/div><br />\n      <br />\n      <table border="1" width="500" summary="">\n       <tbody>\n        <tr>\n         <td class="record">\n          <hr />\n          <span class="LISTTITLE">MyPitSelf<\/span>\n          <hr />\n         <\/td>\n        <\/tr>\n       <\/tbody>\n      <\/table><br />\n      <br />\n     <\/td>\n    <\/tr>\n   <\/tbody>\n  <\/table>\n  <p>\n   <br />\n   On this screen, there are several buttons in a menu bar that lead to number of lists.<br />\n   You can click on them if you want but please, for the moment, avoid clicking the non-menu buttons.<br />\n   <br />\n   Let\'s look at the 3 first options :<br />\n   <br />\n   The <img src="img/h.gif" alt="" /> button: allows you to come back to the initial screen.<br />\n   <br />\n   The <img src="img/back.gif" alt="" /> button: allows you to come back to the previous screen if it was a list or a "view"\n   screen ( a screen to see informations ).<br />\n   <br />\n   The <img src="img/quit.gif" alt="" /> button: allows you to quit. Try it now and re-enter 1/1 as user/password to come back to\n   the initial screen.<br />\n   <br />\n   You will see in examples to see how to use MyPitSelf some screen copies containing buttons with a standard meaning:<br />\n   <img src="img/picto/13x13/n.png" alt="" />: New element<br />\n   <img src="img/picto/13x13/du.png" alt="" />: Duplicate an element<br />\n   <img src="img/picto/13x13/s.png" alt="" />: see an element<br />\n   <img src="img/picto/13x13/u.png" alt="" />: update an element<br />\n   <img src="img/picto/13x13/d.png" alt="" />: supress an element<br />\n   <img src="img/picto/13x13/p.png" alt="" />: properties of an element<br />\n   <img src="img/picto/13x13/m.png" alt="" />: Move an element\n  <\/p>\n');
t.xxtree2.add(281,2,'Generated documentation','Out of the informations you have entered to create your program, MyPitSelf can generate a technical documentation\n<br />\nClick here <a href="indext_lang_1.htm" target="_blank"><img src="img/picto/13x13/wi.png" alt="" /><\/a> to see it.\n');
t.xxtree2.SetLoaded();

