if(t==this){
 t.xxtree269.setDefer();
}else{
 t.xxtree269.setSubload();
 t.xxtree269.emptyNodes();
 t.xxtree269.setUndefer();
}
t.xxtree269.add(269,-1,'Examples','');
t.xxtree269.add(339,269,'First example: world','It\'s a programme to see the data from the "world" database avaible on the <a href="http://www.mysql.com/" target="_blank">MySql<\/a> website.\n<br />\n<br />\nThe database design is this one.\n<br />\n<img src="img/world-db.gif" alt="" />\n<br />\n<br />\nClick \n<a class="ACTION" href="javascript:OpenWindowUrl(\'http://www.mypitself.com/w01/\');"><img src="img/blinkdore.gif" alt="" /> here<\/a> to test this.\n<br />\n<br />\n');
t.xxtree269.add(271,269,'Second example: CRM','This program is a little CRM for IT services providers to give the possibility to client companies to manage their own contacts.\n<br />\n<br />\nEvery company will have a main user called manager in the rest.\n<br />\nThe manager creates the contacts ( first name, name ....) \n<br />\nThe manager defines informations that will be linked to the concacts according to the company needs.\n<br />\n<br />\nThese informations are two types:\n<br />\nEvent: it is a meeting, a meal at one date.\n<br />\nRelation: it is a fact concerning the contact like he is important, medium, small, he speaks french, english, or italien ...\n<br />\n<br />\nThe list of contacts is unique for every company, and it will be shared between the company users with relation with the contacts.\n<br />\n<br />\nThe manager defines the users ( login, name last name, password ).\n<br />\n<br />\nThe user will have a list of contacts that he will pick from the list of contacts of the company.\n<br />\n<br />\nFor every contact, he will be able to add relations or events that the manager hed previously defined.\n<br />\n<br />\nA contact can be shared by several users.\n<br />\n<br />\nA request system allow the user to list among his own contacts the ones that satisfy certains relation. The result of these requests can be combined with AND, OR, NOT, XOR functions.\n<br />\n<br />\nThe manager can do requests on all contacts of the company.\n<br />\nThe data design is the one under.\n\n<div style="float:left">\n<a href="javascript:OpenOutWindow1(\'img/modmypitcrm.gif\',5,5,720,520)"><img src="img/modmypitcrm_s.gif" alt="" /><\/a>\n<\/div>\n\n<br />\n<br />\nYou can see the general documentation ( normaly there is one specific for every type of user )\nclicking <a class="ACTION" href="http://www.mypitself.com/crm01/doc/index_g_0_lang_1.php" target="_blank"> here <img src="img/picto/13x13/qs.png" alt="" /><\/a>.\n<br />\n<br />\nIf you want to try it online, send me a mail with the contact page of this site and I will send you a login/password.\nThis programm can be reached <a class="ACTION" href="javascript:OpenWindowUrl(\'http://www.mypitself.com/crm01/\');"> <img src="img/blinkdore.gif" alt="" /> here <\/a>.\n<br />\n<br />\nIt\'s only a little CRM but you have seen the possibility of MyPitSelf.\n<br />\n<br />\nI didn\'t want to load this program with many buttons but it\'s quite easy to add for example the list of user that use a contact from the contact file. \n<br />\n<br />\nOne can add also company tables, links between companies and contacts and many other things that require a little more programming.\n<br />\n<br />\nA bientôt.\n<br />\n\n\n');
t.xxtree269.add(14,269,'Third example','Now we are going to use this examples to see the use of this system. \n<br />\nThe aim is to build a program in this environment. \n<br />\nThere is a minimal set of explanations. Don\'t worry if you don\'t catch all of them, it will come later. \n<br />\nThe project approach will have three different layers : \n<br />\n<br />\n<span class=LISTTITLE>\nOrganisation layer ( Client needs ) \n<\/span>\n<br />\nThe client wants to have a system to do his task list. Each user of the system will be able to put some new tasks in the system with a name and a priority level. The priority level is a number and each user will be able to see the task list according to its priority level. \n<br />\nThe client also wants to find tasks according defined sequences ( word match research ). \n<br />\nSome users ( eg managers ) must be able to see the tasks of all other users but most of then will see only their own tasks. \n<br />\nA user can modify each task ( priority and text ), add or delete one. \n<br />\n<br />\n<span class=LISTTITLE>\nFunctional layer ( what do we have to do ) \n<\/span>\n<br />\nA Task table with a user ID, a task name and a task priority. \n<br />\nA user table with the user ID, his logging name, first name and last name. \n<br />\n<br />\nWe will need to have a function to display a list of tasks according to its priority and according to the fact that the task contains a certain word. From this list, one will be able to create new tasks, modify existing ones or delete them. \n<br />\nAn other functon ( manager ) will display a task list with the user name. \n<br />\nSo according to the user profile, differents menu will be displayed. \n<br />\nUser: See my tasks Manager: See my tasks, see all tasks \n<br />\n<br />\nA super user will have the possibility to enable other users and to assign them a user level ( manager or user ). \n<br />\nA manager will be considered as a user for his ( or her ) own tasks. \n<br />\n<br />\n<span class=LISTTITLE>\nTechnical layer ( how are we going to do this ? ). \n<\/span>\n<br />\nSee the next chapters. \n<br />\n<br />\n<strong><em><u>Comment:<\/u><\/em><\/strong> \nDuring the modification of a record, a lock is set up and during the next procedures, you might close windows during a modification and so, the lock will remain. \n<br />\nTo take it off, go to the <a class="ACTION">Profil<\/a> menu then choose the option \n<a class="ACTION">See the locks<\/a> then click on the <a class="ACTION">Unlock<\/a> button. \n');
t.xxtree269.add(15,14,'A new environment','<br />\n<a class="ACTION" href="javascript:OpenWindowMyPitSelf();">Click here to open a new window on MyPitSelf <\/a>, \nenter 1/1 as username / password \n<br />\n<br />\nThe first thing to do is to create a new environment. \n<br />\n<br />\nNote: for the moment, I have not worked enough on the privileges on the database so there is not a fine tunning of them. \n<br />\nThe way it works is to define for each environment a mysql user/password ( or have always the same one ) and authorizations are set um for this user. \n<br />\nI advise you to use MyPitSelfDev, it works ! \n\n<br />\n<br />\nTo do this, click here <a href="javascript:popup(\'CreateNewEnvironment\')"><img src="img/sc.gif" /><\/a> and perform the actions described. \n<br />\n<br />\nTo create a new environment means to create directories and a system database. ( look in folders mypitselfp and mypitselfw )\n');
t.xxtree269.add(71,14,'A new manager','<a class="ACTION" href="javascript:ShowWindowItself();">\nClick here to open a window if it\'s not already open.<\/a> on the MyPitSelf environment and log in as 1/1. \n<br />\n<br />\nWe have to create a manager who will have the ability to use the new environment. \n<br />\nFor the moment, there are 3 profiles in MyPitSelf: \n<ul>\n <li>The super user can do everything. <\/li>\n <li>The developer who cannot create or modify elements of the architecture of the system. <\/li>\n <li>The manager who can do quite many things. <\/li>\n<\/ul>\nso we will have to \n<ul>\n <li>move into the new environment <\/li>\n <li>Create the new user <\/li>\n <li>Add this user into the new environment <\/li>\n<\/ul>\nTo do this, click here <a href="javascript:popup(\'newdmanager\')"><img src="img/sc.gif" /><\/a> and perform the actions described. \n<br />\n<br />\nA user has been created, his name is m, his password is 1.');
t.xxtree269.add(17,14,'Start to develop','');
t.xxtree269.add(261,17,'Initialize the environment','<a class="ACTION" href="javascript:ShowWindowItself();">Cliquez ici pour ouvrir une nouvelle fenetre si ce n\'est déjà fait<\/a> \n<br />\nQuittez l\'environnement principal si vous êtes connecté en tant qu\'utilisateur 1/1 \n<br />\net connectez vous en tant que <span class=LISTTITLE>m/1 <\/span>\n<br />\n<br />\nComme vous vous êtes connecté en tant qu\'utilisateur m, vous ne voyez pas les mêmes menus que précédamment, en particulier, les menus permettant de gérer les utilisateurs sont réservés au super utilisateur. \n<br />\n<br />\nEn revanche d\'autres menus sont apparus et vous permettront de développer. \n<br />\nIl faut tout d\'abord créer une image de la base de donnée. En fait cette image a déjà été créée lors de la création de l\'environnement. Vous pouvez la voir en cliquant sur le bouton <a class="ACTION">base<\/a> du menu. \n<br />\n<br />\nPuis il faut donner à cette image une existance réelle c\'est à dire créer réellement la base dans MySql. \n<br />Pour ce faire, exécutez les actions que vous voyez en cliquant ici \n<a href="javascript:popup(\'CreerLaBaseDeDonnees\')"><img src="img/sc.gif" /><\/a>. \n<br />\n<br />\nRemarque: La base contient déjà 2 tables: Une table utilisateurs et Lock ( verrous ). \n<br />\nCes deux tables sont créées car MyPitSelf est conçu pour travailler en environnement multi utilisateur. \n<br />\nElles peuvent être supprimées ou modifiées mais pour l\'instant, nous n\'allons pas y toucher. \n');
t.xxtree269.add(262,17,'Create a table','Puis il faut créer la table des tâches. Cette table est rattachée à la base et contient : <ul>\n<li>Un champ ID = identifiant unique de chaque tâche <\/li>\n<li>Un champ Nom = nom de la tâche sur 64 caractères non vides <\/li>\n<li>Un champ priorite = priorité de la tâche numérique entier <\/li>\n<li>Un champ utilisateur = Référence de l\'utilisateur créant la tâche <\/li>\n<\/ul>\n\n<br />\n<br />\nDes types de données existent déjà, nous allons les utiliser sans créer des nouveaux types. Voir le bouton <a class="ACTION">donnee<\/a> du menu. \n<br />\n<br />\nPour ce faire, exécutez les actions que vous voyez en cliquant ici <a href="javascript:popup(\'CreerLaTableTaches\')"><img src="img/sc.gif" /><\/a>. \n<br />\n');
t.xxtree269.add(263,17,'Create a list request','Maintenant il faut créer une requête permettant de lister les tâches. Elle resemblera à: \n<xmp>\nSELECT T0.ID,T0.Nom,T0.Priorite,T0.xRefUser  \nFROM\n$Data.Taches T0 \nWHERE T0.Priorite <= %SQLPAR0% and\n      T0.Nom LIKE  \'%%SQLPAR1%%\'  and\n      T0.xRefUser = %SQLPAR2%   \nORDER BY \n      T0.Priorite DESC ,\n      T0.ID DESC  \nLIMIT $xxxlistStart , $xxxlistCount\n<\/xmp>\n<br />\n<br />\n%SQLPAR0% et %SQLPAR1% sont les deux critères de recherche possibles des tâches, \n<br />\n%SQLPAR2% limite la recherche à un utilisateur donné. \n<br />\n<br />\nMyPitSelf contient un utilitaire permettant de générer les requêtes sur la base de donnée. \n<br />\n<br />\nNous allons l\'utiliser pour créer une requête de type <span class=ECHO>SELECT LIST<\/span>. <br />\n\nCe type de requêtes a été défini car il permet de générer des instructions propres à l\'affichage d\'une liste. \n<br />\n<br />\nPour l\'utiliser, exécutez les actions que vous voyez en cliquant ici <a href="javascript:popup(\'Creerlapremiererequete\')"><img src="img/sc.gif" /><\/a>. \n<br />\n<br />\nLe résultat de cette action, visible en cliquant sur le menu <a class="ACTION">Requête<\/a> est une requête SQL ayant un Code 1201 dans notre cas. \n<br />\n<br />\nNous avons coché le champ Hidden et Constant car lors de l\'affichage de la liste des tâches, il ne faut pas afficher l\'ID utilisateur ( c\'est l\'utilisateur en cours ) et le critère d\'affichage des tâches est pour l\'utilisateur en cours donc constant. \n<br />\n');
t.xxtree269.add(264,17,'Create a menu','Maintenant, il faut créer un menu permettant d\'afficher la liste des tâches. \n<br />\nCeci passe tout d\'abord par la création d\'une fonction écrite en langage MyPitSelf. \n<br />\nCette fonction sera ensuite attachée à un menu. \n<br />\nPour ce faire, exécutez les actions que vous voyez en cliquant ici <a href="javascript:popup(\'Creerlepremiermenu\')"><img src="img/sc.gif" /><\/a>.\n<br />\nUtilisez un copier/coller pour éviter de réécrire la fonction. \n<br />\nUn petit mot ici sur le langage MyPitSelf puisque cette fonction a été écrite dans ce langage: <br />\nCette fonction permettant d\'afficher la liste des tâches de l\'utilisateur \n<xmp>\nTac(\n Cst(999999999),    // paramètre priorité de la tâche\n Cst(),             // paramètre Nom de la tâche ( chaine vide )\n VarG(xxUserCode), // Code de l\'utilisateur ( variable globale )\n Cst(3),            // 3 paramètres\n a0_list(           // afficher la liste basée sur ...\n  Sql(1201)         // ... la requête 1201\n )\n)\n<\/xmp>\nveut dire: \n<br />\nTac ==> Take and Call: c\'est l\'INSTRUCTION principale de ce langage: Elle permet \n<ul>\n<li>\nsoit d\'ajouter des valeurs dans la pile d\'appel <\/li>\n<li>soit d\'appeler des fonctions <\/li>\n<\/ul>\nIci, on met des constantes dans la pile d\'appel ( 999999999, chaine vide et la valeur 3) \n<br />\nOn met aussi une variable globale initialisée par le système. Elle représente l\'unique ID de l\'utilisateur. \n<br />\nLa fonction appelée est a0_list avec un paramètre qui est le numéro de la requête à appeler. \n<br />\n<br />\nL\'instruction Tac sait reconnaître les fonctions permettant de mettre des variables dans la pile et celles exécutant des actions. \n<br />\nCe langage est basé sur des fonctions qui peuvent être imbriquées les unes dans les autres ou appelées séquentiellement. \n<br />\ncette fonction peut aussi s\'écrire de la façon suivante: \n<br />\n<xmp>\nTac( Cst(999999999), Cst(), VarG(xxUserCode), Cst(3), a0_list(  Sql(1201) ) )\n<\/xmp>\nLa fonction a0_list par définition prend 1 ou plusieurs paramètres dans la pile de variables, le premier paramètre ( 3 dans notre cas ) indiquant le nombre de paramètres à prendre dans la pile ( 99999, chaine vide, code utilisateur. \n<br />\n<br />\nVous avez compris que // indique un commentaire. \n<br />\n');
t.xxtree269.add(265,17,'Créer les fonctions','Maintenant, il faut créer une fonction permettant d\'ajouter une tâche. \n<br />\n<br />\nNous allons utiliser l\'outil pour créer une requête de type <span class=ECHO>SELECT VALUE<\/span>. \n<br />\nCe type de requêtes a été défini car il permet de générer des instructions propres à l\'affichage d\'une entrée dans la base. Pour ce faire, exécutez les actions que vous voyez en cliquant ici <a href="javascript:popup(\'selectvaluesurtache\')"><img src="img/sc.gif" /><\/a>. \n<br />\n<br />\nEnfin, nous pouvons créer la fonction de type <span class=ECHO>LISTTOP<\/span> rattachée à la liste affichant la requête <span class=ECHO>1201<\/span> \n<br />\nPour ce faire, exécutez les actions que vous voyez en cliquant ici <a href="javascript:popup(\'fonctionnouvelletache\')"><img src="img/sc.gif" /><\/a>. <br />\n<br />\nEnfin la dernière étape sera de regénérer toutes les requêtes, de compiler toutes las fonctions, d\'établir la langue par défaut du programme et de créer les utilisateurs initiaux ( 0 = tous, 1 = super user ) \n<br />\nPour ce faire, exécutez les actions que vous voyez en cliquant ici <a href="javascript:popup(\'postinitialisation\')"><img src="img/sc.gif" /><\/a>. \n<br />\n<br />\nFinalement, on peut commencer à tester l\'application qui contient maintenant quelque chose.');
t.xxtree269.add(18,14,'Testing','');
t.xxtree269.add(266,18,'Add Todos',' <a class="ACTION" href="javascript:ShowWindowMain();">Cliquez ici<\/a>et choisisez le bouton <a class=ACTION>Test<\/a> pour ouvrir une fenêtre sur votre nouveau programme en vous connectant avec le nom/mot de passe 1/1. \n<br />\n<br />\nMaintenant, vous êtes le super utilisateur du NOUVEAU PROGRAMME, vous pourrez définir les autres utilisateurs et leurs droits tout comme vous avez défini un nouvel utilisateur dans l\'environnement principal. \n<br />\n<br />\nTout d\'abord, il faut savoir que par défaut, le super utilisateur est aussi un utilisateur normal et peut avoir accès à tous les menus.Si lors de la création du menu ( plus haut ) , vous ne cochez pas la case "pas pour super", le menu est disponible pour le super utilisateur. \n<br />\n<br />\nMaintenant, nous allons tester le menu tâches en cliquant ici <a href="javascript:popup(\'testerlestaches\')"><img src="img/sc.gif" /><\/a>. \n<br />\n<br />\n');
t.xxtree269.add(267,18,'Ajouter des utilisateurs','Puis nous allons ajouter deux utilisateurs en les rattachant à des groupes d\'utilisateurs\nmanager et utilisateurs qu\'il faudra ensuite créer dans l\'environnement de développement.\n<br />\nPour créer ces utilisateurs, exécutez les actions que vous voyez en cliquant ici <a href="javascript:popup(\'ajouterutilisateurs\')"><img src="img/sc.gif" /><\/a>.\n<br />\n<br />\n');
t.xxtree269.add(268,18,'Ajouter les groupes','Puis nous allons définir deux groupes d\'utilisateurs ( manager et utilisateurs ) \ndans l\'environnement de développement\n<br />\nLes actions à faire sont celles que vous obtenez en cliquant ici <a href="javascript:popup(\'ajoutergroupes\')"><img src="img/sc.gif" /><\/a>. \n<br />\n<br />\nPour leur assigner des menus, les actions à faire sont celles que vous obtenez en cliquant ici <a href="javascript:popup(\'assignerlesmenus\')"><img src="img/sc.gif" /><\/a>. \n');
t.xxtree269.add(20,14,'Add functions','Return to the development environment <a class="ACTION" href="javascript:ShowWindowItself();">clicking here<\/a> \nand log in as <span class=ECHO>m/1<\/span>. \n<br />\n<br />\nWe will add functions to be able to see, update, duplicate or supress a task. \n<br />\n<br />\nTo supress a task, we need to create a request with a <span class=ECHO>DELETE VALUE<\/span> type. Look the request number created, we will use it in the functions. \n<br />\nThen we will create functions with <span class=ECHO>LISTFUNCT<\/span> type. \n<br />\nTo do this, perform the actions you see when you click here <a href="javascript:popup(\'Ajouterrequetesupp\')"><img src="img/sc.gif" /><\/a> .\n\n<br />\n<br />\nNow we are going to test these functions \n<br />\n<a class="ACTION" href="javascript:ShowWindowFirstExample1();">Click here<\/a>and choose the <a class="ACTION">Test<\/a> button to open a window on your new program, log in as user/password <span class=ECHO>m1/1<\/span>. \n<br />\nThen test doing what you see when you click here <a href="javascript:popup(\'testerfonctionstaches\')"><img src="img/sc.gif" /><\/a>\n<br />\n<br />\nVoilà, the first part of the organisational part is finished, now we will add functions to allow the manager to see all tasks.');
t.xxtree269.add(23,14,'A New request.','Now we will built a menu to see tasks of all users for the managers. \n<br />\nTo do this, we will have to create a request to list the tasks and the name of the user who has created this task. \n<br />\nThis request will have two tables : the User table and the task table. \n<br />\n<br />\nAnd, finally, we will create a new function and a new menu attached to this function. \n<br />\nPerform the action you see when you click here <a href="javascript:popup(\'requetetoutestaches\')"><img src="img/sc.gif" /><\/a>. \n<br />\n<br />\nThen <a class="ACTION" href="javascript:ShowWindowFirstExample1();">click here<\/a> and choose the <a class="ACTION">Test<\/a> button to open a window on your new program, log in as 1/1. \n<br />\n<br />\nAttach the new menu to the manager group performing the actions you see when you click here\n<a href="javascript:popup(\'fonctionstoutestaches\')"><img src="img/sc.gif" /><\/a>.\n<br />\n<br />\nAs you are user 1, you can try to click on the button of the menu now. ');
t.xxtree269.add(25,14,'linked table','The client wants to add functions: \n<br />\nFrom the task list, the mananager should be able to \n<br />\nCreate a task for a use other than himself. \n<br />\nUpdate a user task and particulary, change the user of the task. \n<br />\n<br />\nHow can this be done ? \n<br />\n<br />\nI think you understood that MyPitSelf uses linked tables. \n<br />\nFor example, during the development, you have noticed \nthat we have attached a menu to a function, a table to a database, \na field to a table, a menu to a group of users, etc ... \n<br />\nWe are going to create a link specification. \n<br />\n<br />\nThe link here is that a task is attached to a user. \n<br />\nWhen a manager has to give a user task to an other user, he must be able \nto choose a user in the existing user list ie the user table. \n<br />\n<br />\nWe will have to create \n<ul>\n <li>A user list ( Select with type <span class=LISTTITLE>SELECT LIST<\/span> ), <\/li>\n <li>A function with the type <span class=LISTTITLE>XREF<\/span> which uses this list. <\/li>\n <li>The creation of a link between the task table ( Field User ) and the user table ( Field ID ) \n     using this function ( a task is attached to a user but a user doesn\'t always have a task ). <\/li>\n<\/ul>\n\nConnect to MyPitSelf with the user m/1 and perform the actions you see when you click here <a href="javascript:popup(\'CreerlienTacheutilisateur\')"><img src="img/sc.gif" /><\/a>.  \n\n<ul>\n <li>A request with the type <span class=LISTTITLE>SELECT VALUE<\/span> to allow the manager to update a task. <\/li>\n <li>A function with the type <span class=LISTTITLE>LISTFUNCT<\/span> in front of the task to update it. <\/li>\n <li>A function with the type <span class=LISTTITLE>LISTTOP<\/span> to create a new task. <\/li>\n<\/ul>\n\n<br />\n<br />\nConnect to MyPitSelf with the user m/1 and perform the actions you see when you click here <a href="javascript:popup(\'CreerfonctionTacheutilisateur\')"><img src="img/sc.gif" /><\/a>. \n<br />\n<br />\n\n\nNow, go to your program, with user/password m/1 and perform the actions you see when you \nclick here <a href="javascript:popup(\'testertacheutilisateur\')"><img src="img/sc.gif" /><\/a>. \n\n<br />\n<br />\nNow we are going to add the function ( type <span class=LISTTITLE>LISTTOP<\/span> ) to create a new task. \n<br />\n<br />\nConnect to MyPitSelf with the user m/1 and perform the actions you see when you click here <a href="javascript:popup(\'creernouvelletacheutilisateur\')"><img src="img/sc.gif" /><\/a>.\n<br />\n<br />\nNow go to your program, log in as 1/1 and do the actions you see when you click here <a href="javascript:popup(\'testernouvelletacheutilisateur\')"><img src="img/sc.gif" /><\/a> \n<br />\n<br />\nnow, log out and log in as user <span class=LISTTITLE>u/1<\/span> and you will see that this user has a new task.\n');
t.xxtree269.add(27,14,'Conclusion','These examples have showed you how to develop with MyPitSelf and a part of its functionnalities. \n<br />\n<br />\nAs MyPitSelf is mostly done with MyPitSelf, the best example of developement can be obtained \nwhen you connect to the MyPitSelf environment with user/password 1/1 . <br />Then click on the "tool" \nmenu and then choose the button "Set or unset developing mode for MyPitSelf". <br />All menus will \nbe seen then and you will be able to see the core. \n<br />\nYou also can use the button "See/hide function call" in the "profile" menu to see which requests/functions are used. \n<br />\n<br />\nAn essential point in MyPitSelf is that fonctions written in its language are parsed to units \nthat are visible using the button print facing the source of the functions in the function list\n( try it in front of function 4003 ). \n<br />\nThe ressult of this parsing is a grid that can be put in a database table. \n<br />\nRecords of this table can be analysed and updated with the MyPitSelf Language. \n<br />\nOne can then reverse ingeener the functionnalities on this grid and regenerate the source. \n<br />\nSee the chapter "language reference" for more details about this subject. \n<br />\n<br />\nSee also the next chapters. \n<br />\n<br />\nI haven\'t mentioned many other aspects, I have to enhance this documentation but I\'m pretty sure you got the main points. <br />\nMyPitSelf will evolve because there are still functionnal gaps, but as nearly everything is \nin a database, including programs, that programs and data \nare linked and programs are finally considered as data to treat , \nthe "only thing" to do is to add data and treat them. \n<br />\n<br />\n<br />\nWhen one has to develop data models that look like the MyPitself data model you have seen on the home page, it is nice to have a tool to help.\n<br />\n<br />\nI think MyPitSelf is cool to deal with data models with many links.');
t.xxtree269.SetLoaded();

