if(t==this){
 t.xxtree279.setDefer();
}else{
 t.xxtree279.setSubload();
 t.xxtree279.emptyNodes();
 t.xxtree279.setUndefer();
}
t.xxtree279.add(279,-1,'Comment faire','');
t.xxtree279.add(317,279,'Définir les css','<div style="float:right">\n\n<table border="0" cellspacing="0" cellpadding="0" summary="">\n<tr>\n<td class="RECORD">\nA screen copy of this <br />tool can be seen here.\n<\/td>\n<td>\n\n<a href="javascript:OpenOutWindow1(\'img/colordef.gif\',100,100,650,650)"><img src="img/colordef_s.gif" alt="" /><\/a> \n<\/td>\n<\/tr>\n<\/table>\n\n\n<\/div>\n\nAs the css definition was a real nightmare, a tool to produce the css files is avaible in the menu Tools/Set up css.\n<br />\n<br />\nThe tool can be used only with firefox for the moment and produces css files, they are compatible also with IE.\n<br />\n<br />\nSee an example of the result with the\n<span style="background-color: white;"><img src="img/picto/13x13/skis.png" alt="" /> <font color="red">Ma<\/font><font color="blue">qui<\/font><font color="green">lla<\/font><font color="black">ge<\/font><\/span> button');
t.xxtree279.add(361,279,'Créer des arbres','<div style="float:right"><img src="img/modtree.gif" /><\/div>\nSuppose you have two table that looks like this ( The CRM example uses it ).\n<br />\n<br />\nIn this example, the table MyTree is seld-referenced so it is a tree.\n<br />\n<br />\nFurthermore, the user table is using it for reference.\n<br />\n<br />\nA function to generate the source for managing this tree can be used. See this <a href="javascript:popup(\'genererunarbre\')"><img src="img/sc.gif" /><\/a>. \n<br />\n<br />\nThe set of functions to manage this tree can bee seen here <a href="javascript:popup(\'fonctionsarbre\')"><img src="img/sc.gif" /><\/a>.\n<br />\n<br />\nThen you can create the first record of the tree doing this: <a href="javascript:popup(\'creerpremierrecursif\')"><img src="img/sc.gif" /><\/a>\n<br />\n<br />\nFinally, you can use this tree. See the example here: <a href="javascript:popup(\'utiliserarbre\')"><img src="img/sc.gif" /><\/a>\n<br />\n<hr />\n\nNow, we are going to generate the function so that when we create/update a user, we will be able to assign him/her a branch of a tree.\n<br />\n<br />\nA function to generate the source for managing this can be used. See this <a href="javascript:popup(\'genererselectionsurarbre\')"><img src="img/sc.gif" /><\/a>. \n<br />\n<br />\nThe set of functions to manage this tree can bee seen here <a href="javascript:popup(\'fonctionsselectarbre\')"><img src="img/sc.gif" /><\/a>.\n\n<br />\n<br />\nThen you have to update one of the functions generated to match the field name and tell the screen to update a user to use this function to fetch the tree reference like this : <a href="javascript:popup(\'modifierfonctionselectarbre\')"><img src="img/sc.gif" /><\/a>.\n<br />\n<br />\nFinally, you can use this tree. See the example here: <a href="javascript:popup(\'utiliserselectarbre\')"><img src="img/sc.gif" /><\/a>\n');
t.xxtree279.add(280,279,'Raz du mot de passe de super','Le mot de passe en md5 de l\'utilisateur ayant comme login/mt de passe=1/1 est:\n<br />\n6512bd43d9caa6e02c990b0a82652dca\n<br />\nVous pouvez utiliser la requête suivante pour le mettre à jour.\n<xmp>\nupdate yUser SET Name=\'1\', PassWord=\'6512bd43d9caa6e02c990b0a82652dca\' WHERE Code=1\n<\/xmp>');
t.xxtree279.add(328,279,'Enregistrer les écrans','I think the best way to make a documentation of a program is to give screen copies of the actions to do.\n<br />\n<br />\nIf you want to do this, use the menu "profile/Record the next actions for documentation".\n<br />\nWhen this mode is set, a screen copy of each screen will be output in an html file.\n<br />\n<br />\nYou can see the result of this in the example chapter.');
t.xxtree279.add(329,279,'Générer la doc','Perform the actions described here <a href="javascript:popup(\'genererladoc\')"><img src="img/sc.gif" /><\/a>');
t.xxtree279.add(283,279,'En savoir plus','Allez sur <a href="http://fr.wikipedia.org/wiki/R%C3%A9tro-ing%C3%A9nierie" target="_blank">http://fr.wikipedia.org/<\/a> pour en savoir plus sur la rétro analyse.\n<br />\n<br />\n');
t.xxtree279.add(341,279,'Convertir une base access','\'As I do not like ODBC, I prefered do this and work directly in MySql\n<br />\nFirst, check that you have something like this in the visual basic project library list ( tools/references )\n<br />\n<img src="img/access_import.gif">\n<br />\nThen create a new module containing the code under and read carefully the first 10 lines\nof comments\n<br />\n<xmp>\nOption Compare Database\nOption Explicit\n\'====================================================================================\n\' This VB procedure extract from an Access database to a mysql format :\n\' the table structure and puts it in a file named c:\\temp\\stru.sql,\n\' the table values    and puts it in a file named c:\\temp\\data.sql,\n\'================================== It can be easily modified to match your criterias\n\'====================================================================================\n\'<<<<<<<<<<<<<<< UPDATE THIS FOR your local window setting >>>>>>>>>>>>>>>>>>>>>>>>>>\nConst Mydecimalseparator = "," \' france,italy,spain:"," , US,GB:"." ,\n\'====================================================================================\n\'Create a directory name c:\\temp\\\n\'Insert this in a vb module, place your cursor inside the extract function, and press\n\' the F5 key (run) on your keyboard\n\' If a case is not provided, the output contains an XX string so you can find\n\' problems looking for the "XX" string\n\'====================================================================================\nType typfld\n nam As String\n typ As Integer\nEnd Type\n\n\'====================================================================================\nSub Extract()\n Dim tdf  As DAO.TableDef\n Dim fld  As DAO.Field\n Dim i    As Integer\n Dim j    As Integer\n Dim typ  As String\n Dim dba  As Database\n Dim rst0 As Recordset\n Dim shea As String\n Dim sdat As String\n Dim ttypfld(0 To 499) As typfld\n Dim val  As Variant\n Dim fou  As Boolean\n Dim dattim As Date\n Dim auto As String\n Dim dbl  As Double\n Open "c:\\temp\\stru.sql" For Output Access Write As #1\n Open "c:\\temp\\data.sql" For Output Access Write As #2\n For Each tdf In CurrentDb.TableDefs\n  If Mid(tdf.Name, 1, 4) = "MSys" Then \' do not take MSACCESS system tables\n  Else\n   Print #1, "CREATE TABLE `" & MyNam(tdf.Name) & "` ("\n   i = 0\n   auto = ""\n   For Each fld In tdf.Fields\n    ttypfld(i).nam = fld.Name\n    ttypfld(i).typ = fld.Type\n    typ = ""\n    If fld.Type = 1 Then typ = "ENUM(\'0\',\'1\')"\n    If fld.Type = 3 Then typ = "INTEGER"\n    If fld.Type = 4 Then typ = "BIGINT"\n    If fld.Type = 5 Then typ = "DECIMAL(17,2)"\n    If fld.Type = 6 Then typ = "FLOAT"\n    If fld.Type = 7 Then typ = "DOUBLE"\n    If fld.Type = 8 Then typ = "datetime"\n    If fld.Type = 10 Then typ = "varchar(" & fld.Size & ")"\n    If fld.Type = 11 Then typ = "BLOB"\n    If fld.Type = 12 Then typ = "TEXT"\n    If typ = "" Then typ = "XX " & fld.Type & " XX"\n    \n    If fld.Required Then\n     typ = typ & " NOT NULL"\n    End If\n    \n    If fld.Attributes = 17 Then\n     typ = typ & " AUTO_INCREMENT NOT NULL"\n     auto = MyNam(fld.Name)\n    ElseIf fld.Attributes = 1 Or fld.Attributes = 2 Then\n     typ = typ \' I don\'t know\n    ElseIf fld.Attributes = 32770 Then\n     typ = typ & "" \' hypertext link\n    Else\n     typ = typ & " XXX" & fld.Attributes & "XXX "\n    End If\n        \n    If fld.AllowZeroLength Then\n     typ = typ & " fld.AllowZeroLength"\n    End If\n        \n    Print #1, " `" & MyNam(fld.Name) & "` " & typ & ","\n    i = i + 1\n   Next\n   If auto <> "" Then Print #1, "  PRIMARY KEY  (`" & auto & "`),"\n   Print #1, ");"\n   Print #1, ""\n   shea = "INSERT INTO " & MyNam(tdf.Name) & " VALUES("\n   Set dba = CurrentDb()\n   Set rst0 = dba.OpenRecordset(" SELECT * FROM [" & tdf.Name & "] ", dbOpenDynaset)\n   Do Until rst0.EOF\n    sdat = ""\n    For j = 0 To i - 1\n     val = rst0(ttypfld(j).nam)\n     fou = False\n     If ttypfld(j).typ = 1 Then\n      sdat = sdat & "\'"\n      If val Then\n       sdat = sdat & "1\',"\n      Else\n       sdat = sdat & "0\',"\n      End If\n      fou = True\n     End If\n     \n     If ttypfld(j).typ = 3 Or ttypfld(j).typ = 4 Or ttypfld(j).typ = 5 Or ttypfld(j).typ = 6 Or ttypfld(j).typ = 7 Then\n      If IsNull(val) Then\n       sdat = sdat & "NULL,"\n      Else\n       dbl = val\n       sdat = sdat & Replace(CStr(dbl), Mydecimalseparator, ".") & ","\n      End If\n      fou = True\n     End If\n     \n     If ttypfld(j).typ = 10 Or ttypfld(j).typ = 12 Then\n      If IsNull(val) Then\n       sdat = sdat & "NULL,"\n      Else\n       sdat = sdat & "\'" & Replace(Replace(Replace(val, "\\", "\\\\"), "\'", "\\\'"), vbCrLf, "\\r\\n") & "\',"\n      End If\n      fou = True\n     End If\n    \n     If ttypfld(j).typ = 8 Then\n      If IsNull(val) Then\n       sdat = sdat & "NULL,"\n      Else\n       dattim = val\n       sdat = sdat & "\'" & Format(dattim, "yyyy") & "-" & Format(dattim, "mm") & "-" & Format(dattim, "dd") & " " & Format(dattim, "hh:mm:ss") & "\',"\n      End If\n      fou = True\n     End If\n     \n     If ttypfld(j).typ = 11 Then\n      If IsNull(val) Then\n       sdat = sdat & "NULL,"\n      Else\n       sdat = sdat & "\'\',"\n      End If\n      fou = True\n     End If\n     \n     If fou Then\n     Else\n      sdat = sdat & " XXX " & val & " XXX "\n     End If\n    Next\n    sdat = Mid(sdat, 1, Len(sdat) - 1) & ");"\n    If fou Then\n     Print #2, shea & sdat\n    Else\n     Print #2, "#" & shea & sdat\n    End If\n    rst0.MoveNext\n   Loop\n  End If\n  Print #2, ""\n Next\n Close #1\n Close #2\nEnd Sub\n\'====================================================================================\nFunction MyNam(nam) As String \' Converts a fancy table name like "Détails commandes"\n                              \' to "details_commandes"\n Dim i As Integer\n MyNam = ""\n Dim c As String\n For i = 1 To Len(nam)\n  c = Mid(nam, i, 1)\n  If (Asc(c) >= Asc("a") And Asc(c) <= Asc("z")) Or (Asc(c) >= Asc("A") And Asc(c) <= Asc("Z")) Or (Asc(c) >= Asc("0") And Asc(c) <= Asc("9")) Then\n   MyNam = MyNam & LCase(c)\n  ElseIf c = "é" Or c = "è" Then \' ( this is for france, update it for other languages )\n   MyNam = MyNam & "e"\n  ElseIf c = "à" Then\n   MyNam = MyNam & "a"\n  Else\n   MyNam = MyNam & "_"\n  End If\n Next\nEnd Function\n\'====================================================================================\n<\/xmp>');
t.xxtree279.add(356,279,'Une page','Pour voir cette documentation en une page, <a href="index_lang_2.htm">cliquez ici<\/a>.\n<br />\n<br />\nPour voir cette documentation en multipage, <a href="index_l_2.php">cliquez ici<\/a>.\n<br />\n<br />\n');
t.xxtree279.add(365,279,'Utiliser google maps','Pour jouer avec Google maps, <a href="http://www.mypitself.com/gmaps.html">Cliquez ici<\/a>.\n<br />\n<br />\n');
t.xxtree279.add(369,279,'SQL JOIN','This documentation helps me sometimes ( I do NOT like SQL Join but I must admit that sometimes, it helps ! )\n\n<xmp>\nDROP TABLE IF EXISTS `Group`;\nCREATE TABLE `Group` (\n`IdGroup` BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT ,\nUNIQUE (`IdGroup` )\n);\n\nINSERT INTO `Group` VALUES (1),(2),(3),(4),(5);\n\nDROP TABLE IF EXISTS `Auth`;\nCREATE TABLE `Auth` (\n  `groupId` BIGINT(20) UNSIGNED NOT NULL default \'0\',\n  `menuId`  BIGINT(20) UNSIGNED NOT NULL default \'0\'\n);\n\n\nINSERT INTO `Auth` VALUES (0, 1);\nINSERT INTO `Auth` VALUES (2, 1) , (2, 2) , (2, 3) , (2, 4) , (2, 5) ;\nINSERT INTO `Auth` VALUES (3, 1) , (3, 2) , (3, 3) , (3, 4) ,         (3, 9) ;\n\n# tous les groupes et leurs autorisations ( NULL si aucune autorisation pour un utilisateur )\nSELECT  T1.IdGroup, T0.menuId FROM `Auth` T0 RIGHT OUTER JOIN `Group` T1 ON ( T0.groupId = T1.IdGroup ) ;\n#returns: 1,NULL| 2,1 | 2,2 | 2,3 | 2,4 | 2,5 | 3,1 | 3,2 | 3,3 | 3,4 | 3,9 | 4,NULL | 5,NULL\n\n\n# tous les groupes qui n\'ont pas d\'autorisations\nSELECT T1.IdGroup, T0.menuId    FROM `Auth` T0 RIGHT OUTER JOIN `Group` T1 ON ( T0.groupId = T1.IdGroup ) WHERE T0.menuId IS NULL ;\n#returns: 1,NULL | 4,NULL | 5,NULL\n\n# tous les groupes avec autorisations\nSELECT  T1.IdGroup, T0.menuId   FROM `Auth` T0 INNER JOIN `Group` T1 ON (T0.groupId=T1.IdGroup);\n#returns: 2,1 | 2,2 | 2,3 | 2,4 | 2,5 | 3,1 | 3,2 | 3,3 | 3,4 | 3,9\n\n# Groupes dans la table des autorisations qui ne sont pas référencés dans la table des groupes\nSELECT T0.groupId , T0.menuId FROM Auth T0 LEFT JOIN `Group` T1 ON T0.groupId=T1.IdGroup  WHERE T1.IdGroup IS NULL;\n#returns: 0,1\n\n<\/xmp>');
t.xxtree279.add(380,279,'fckEditor configuration','The fck editor may be used and if you define a data as HTML type and you give the name mypsFckHtml1\nto this type, then you must add this definition to the file fckconfig.js.\n<br />\n<xmp>\nFCKConfig.ToolbarSets["mypsFckHtml1"] = [\n	[\'Source\',\'NewPage\',\'Cut\',\'Copy\',\'Paste\',\'PasteText\',\'PasteWord\'],\n	[\'Undo\',\'Redo\',\'Find\',\'Replace\',\'SelectAll\',\'RemoveFormat\',\'JustifyLeft\',\'JustifyCenter\',\'JustifyRight\',\'JustifyFull\'],\n        [\'OrderedList\',\'UnorderedList\'],\n	\'/\',\n	[\'Bold\',\'Italic\',\'Underline\',\'StrikeThrough\',\'Subscript\',\'Superscript\',\'FontSize\',\'TextColor\',\'BGColor\'],\n	[\'Outdent\',\'Indent\',\'Blockquote\'],\n	[\'Table\',\'Rule\',\'SpecialChar\',\'PageBreak\',\'ShowBlocks\',\'About\']\n] ;\n<\/xmp>');
t.xxtree279.add(384,279,'Pangramme','Ceci est un nouveau texte créé dans « word » sans mise en forme initial. On ajoute des retours à la ligne comme après le point suivant.\nMaintenant, on ajoute des caractères GRAS ou italiques ou soulignés, voir même, les trois à la fois.\n<br />\n<br />\nAvec un double saut de ligne et\nun saut de ligne forcé en restant dans \nle même paragraphe ( shift entrée ).\n<br />\n<br />\n\nPortez ce vieux whisky au juge blond qui fume sur son île intérieure, à côté de l\'alcôve ovoïde, où les bûches se consument dans l\'âtre, ce qui lui permet de penser à la cænogenèse de l\'être dont il est question dans la cause ambiguë entendue à Moÿ, dans un capharnaüm qui, pense-t-il, diminue çà et là la qualité de son œuvre\n<br />\n<br />\n\nL\'île exiguë <br />\nOù l\'obèse jury mûr<br /> \nFête l\'haï volapük,<br />\nÂne ex æquo au whist,<br />\nÔtez ce vœu déçu.<br />\n\n<br />\n\nDès Noël où un zéphyr haï me vêt de glaçons würmiens, je dîne d’exquis rôtis de bœuf au kir à l’aÿ d’âge mûr & cætera ! ·	\n<br /> \nil y a une tabulation à la fin de la ligne précédente.\n<br />\n<br />\n\n&é~\'{}\'()[]-|è`_\\ç^ à@°+=¨µ*%ù§!/:.;?,<>¤£²\n<br />\nL’essai a-t-il été concluant ?\n\nmodif 1 € , un backtick => `\n“Guillemets bizarres” de « word » ‘ça passe ?′ \n\n‘’‚‛“”„‰…•!"#$%&\'()*+,-./:;<=>?[\\]^_`{|}~°®©¡£¤¥¦§¨©ª\n«ÉÈËÊ¿¾½¼»±²³´µ·¸¹ºæ÷\nαβγδεζηθικμνξοπρςστυφχψω\n℅™€⅓⅔⅛⅜⅝⅞♠♣♥♦♪♫\'... \n\n');
t.xxtree279.add(390,279,'simpleXml sub tree','<xmp>\n<?php\n$string = <<<XML\n<a>\n <b>\n  <c>text <b>hello<\/b><i>hello<\/i><\/c>\n  <c>stuff<\/c>\n <\/b>\n <d>\n  <c>hella<\/c>\n <\/d>\n<\/a>\nXML;\n\nfunction subTree( $s , $tag ){\n if(substr($s,0,1+strlen($tag))!=\'<\'.$tag) return false;\n $news=\'\';\n for($i=1+strlen($tag);$i<strlen($s);$i++){\n  if(substr($s,$i,1) == \'>\') break;\n }\n $news=substr($s,$i+1);\n if( substr($news,strlen($news)-strlen($tag)-3) !=\'<\/\'.$tag.\'>\') return false;\n return(substr($news,0,strlen($news)-strlen($tag)-3));\n}\n\n$xml = new SimpleXMLElement($string);\n\necho \'<textarea rows="10" cols="40">\' . $xml->asXML() . \'<\/textarea><br />\';\necho \'<textarea rows="6" cols="40">\' . $xml->b->asXML() . \'<\/textarea><br />\' ;\necho \'<textarea rows="6" cols="40">\' . subTree( $xml->b->asXML() , \'b\' ) . \'<\/textarea><br />\' ;\n\n?>\n<\/xmp>');
t.xxtree279.add(386,279,'Liens sympas :-)','<br />\n<a target="_blank" href="http://fr.youtube.com/watch?v=zlfKdbWwruY" >Where the hell is matt ?<\/a>\n<br />\n\nTED.COM:\n\n<br />\n<a target="_blank" href="http://www.ted.com/index.php/talks/barry_schwartz_on_the_paradox_of_choice.html" >Paradox of choice<\/a>\n\n<br />\n<a target="_blank" href="http://www.ted.com/index.php/talks/dan_gilbert_asks_why_are_we_happy.html" >Why are we happy<\/a>\n\n<br />\n<a target="_blank" href="http://www.ted.com/index.php/talks/dan_gilbert_researches_happiness.html" >Why are we happy (more)<\/a>\n<br />\nthe expected value of any of our actions that is the goodness that we can count on getting \n<br />\nis the product of \n<br />\nthe odd that this action will allow us to gain something\n<br />\nand\n<br />\nthe value of that gain to us\n<br />\n<a target="_blank" href="http://www.ted.com/index.php/talks/richard_st_john_s_8_secrets_of_success.html" > 8 secrets of success<\/a>\n<br />\n<br />\n<a target="_blank" href="http://www.mypitself.com/jj.html" >Bouing !<\/a> :-))\n\n');
t.xxtree279.SetLoaded();
