1

Тема: HTA: записная книжка

Программа для хранения текстов, мелких записей, статеек, ссылок и прочей плохо поддающейся структурированию информации.
Своеобразный аналог http://www.amlpages.com/about.shtml или ScrapBook.

<HTML><HEAD>
<TITLE>DataMix(null created)</TITLE>
<meta content="HTML 4.0" name=vs_targetSchema>
<META content=JavaScript name=vs_defaultClientScript>
<META http-equiv=Content-Type content="text/html; charset=windows-1251"><hta:application id=DataMix 
applicationname="DataMix" border="thick" borderstyle="normal" caption="yes" 
contextmenu="yes" innerborder="yes" maximizebutton="yes" minimizebutton="yes" 
navigable="no" scroll="auto" scrollflat="no" showintaskbar="yes" 
singleinstance="no" sysmenu="yes" version="1.0" windowstate="normal" />
<!-- body * { font:9pt/11pt Verdana; color:#005 } -->
<style type=text/css>
  body { margin:0; background:#eee; font-family: verdana; font-size:10px;  }
  td { background:#eee; padding:0.1em; text-indent:0.1em;font-family: verdana; }
  select { width: 270px;}
      
  a.help { text-decoration:none;}
  a.help span { display:none;}
  a.help:hover { position:relative; }
  a.help:hover span { position:absolute; display:block; left:10px; top:-15px;
  

</style>

<SCRIPT event=onunload for=window>
    if (RemoteDataOnlyName!= "Data.xml")
    {
      SaveBase=window.confirm("Используемая вами база, загружена из интернета и имеет имя отличное от Data.xml, Сохранить использумую базу в текущую папку под именем Data.xml?\nЕсли в текущей папке имеется файл с именем Data.xml, то он будет перезаписан.\nТекущая используемая база - "+ RemoteData);
      if (SaveBase==true)
        {
          xmldoc.save("Data.xml");
        }
    }
</SCRIPT>

<SCRIPT language=javascript>
  <!-- скрыть скрипт от браузеров не поддерживающих их
  
  
  var WshShell = new ActiveXObject("WScript.Shell");
  var xmldoc = new ActiveXObject("MSXML.DomDocument");
  var RemoteXML = new ActiveXObject("Microsoft.XMLHTTP");
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  var objIE = new ActiveXObject ("InternetExplorer.Application");
  var UrlPath=window.location.pathname;
  var FileNamePath=UrlPath.replace(/%20/g," ");
  var FolderPath = fso.GetParentFolderName(FileNamePath);   
  var XmlPath = FolderPath+"\\Data.xml";
  var RemoteData=XmlPath;
  var RemoteDataOnlyName="Data.xml";
  
  function resize()    // изменение размера окна к приемлемому виду
  {
    window.resizeTo(screen.width-(screen.width/5),screen.height-(screen.height/6));
  }
  
  function LoadForm()
  {
    window.ListThemes.setAttribute("size",23);

    window.filedialog.style.display="none";
    window.AddForm.style.display="none";
    window.xmltools.style.display="none";
        
    function CreateData_xml()
    {
      try
      {
      var File = fso.CreateTextFile(XmlPath, true);
      File.WriteLine('<?xml version="1.0" encoding="windows-1251"?>');
      BaseName=window.prompt("Введите имя базы","DataMix"); 
      File.WriteLine('<root name="'+BaseName+'">');
      GroupName=window.prompt("Введите имя первой создаваемой вами группы","group"); 
      NodeName=window.prompt("Введите имя темы","node"); 
      File.WriteLine('<group name="'+GroupName+'">');
      File.WriteLine('<node name="'+NodeName+'">');
      File.WriteLine("<![CDATA[");
      File.WriteLine("]]>");
      File.WriteLine("<![CDATA[");
      File.WriteLine("]]>");
      File.WriteLine("</node></group></root>");
      File.close();
      xmldoc.load("Data.xml");
      RemoteDataOnlyName="Data.xml";
      }
      catch (err)
      {
        alert ("Ошибка создания файла Data.xml - "+err.description);
        window.close();
      }
    }
        
    if (fso.FileExists(XmlPath))
    { 
      if (!xmldoc.load("Data.xml"))
      {
        alert("ОШИБКА ПАРСИНГА: " + xmldoc.parseError.reason);
        NewBase=window.confirm("Переписать Data.xml?");
        if (NewBase==true)
        {
          CreateData_xml();
        }
        else
        {
          window.close(); 
        }
      }   
    }
    else
    {
      NewBase=window.confirm("Файл Data.xml не найден в текущей папке.\n\nOK-Создать новый файл\nОТМЕНА-Выбрать файл базы");
      if (NewBase==true)
        {
          CreateData_xml();
          alert ("Создана новая пустая база");
        }
      else
        {
          //диалог выбора файла
          window.filedialog.click();
          if (window.filedialog.value == "")
          {
            alert ("Вы ничего не выбрали");
            window.close();
          }
          if (!xmldoc.load(window.filedialog.value))
          {
          alert("ОШИБКА ПАРСИНГА: " + xmldoc.parseError.reason);
          window.close();
          }
          RemoteData=window.filedialog.value;
          alert("Выбрана база -"+ RemoteData);
        }
    }
  RemoteDataXml.innerHTML="<small>Используемая база - "+RemoteData+"</small>";
  try
  {
    document.title=xmldoc.documentElement.attributes(0).text;
  }
  catch(err)
  {
    document.title="DATAMIX - "+RemoteData;
  }
  }
  
  function loadxml()
  {
    URL=window.prompt("Введите адрес (или путь к файлу) с которого вы хотите загрузить базу","http://x-r-w.narod.ru/Data.xml");
    if (URL!=null)
    {
    RemoteBase=window.confirm("Переписать локальный файл Data.xml?\n\nOK-Переписать\nОТМЕНА-Использовать другое имя");
    BaseName=window.prompt("Введите имя базы","OtherData.xml");
    if (RemoteBase==true)
      {
        RemoteData=FolderPath+"\\Data.xml";
        RemoteDataOnlyName="Data.xml";
      }
    else
      {
        RemoteData=FolderPath+"\\"+BaseName;
        RemoteDataOnlyName=BaseName;
      }
    try
    {
      RemoteXML.open("GET", URL, false);
      RemoteXML.send();
      var XmlData = RemoteXML.responseText;
    
      var oStream = new ActiveXObject("ADODB.Stream")
      adTypeText = 2
      adSaveCreateOverWrite = 2
      oStream.type = 2
      oStream.open ()
      oStream.WriteText(XmlData)
      oStream.savetofile (RemoteData,adSaveCreateOverWrite);
      oStream.close();
      xmldoc.load(RemoteData);
      alert("База загружена из интернета, и сохранена под именем:\n"+RemoteData);
      FillListGroup(ListGroup);
      FillListThemes(ListThemes,ListGroup);
      RemoteDataXml.innerHTML="<small>Используемая база - "+RemoteData+"</small>";
    }
    catch (err) {alert ("Ошибка загрузки - "+err.description+"");}
    }
  }
  
  function loadxmlfromfile()
  {
    window.filedialog.click();
    if (window.filedialog.value == "")
    {
      alert ("Вы ничего не выбрали");
    }
    else
    {
    if (!xmldoc.load(window.filedialog.value))
    {
    alert("ОШИБКА ПАРСИНГА: " + xmldoc.parseError.reason);
    window.close();
    }
  
  RemoteData=window.filedialog.value;  
  RemoteDataXml.innerHTML="<small>Используемая база - "+RemoteData+"</small>";
  try
  {
    document.title=xmldoc.documentElement.attributes(0).text+" - "+RemoteData;
  }
  catch (err)
  {
    document.title="DATAMIX - "+RemoteData;
  }
  
  window.AddForm.style.display="none";
  window.xmltools.style.display="none";
  window.resultat.style.display="";
  FillListGroup(ListGroup);
  FillListThemes(ListThemes,ListGroup)
  }
  }
  
  function Run(CommandString)  // запуск программ
  {
    WshShell.Run(CommandString,1);  
  }
  
  function keyDown()
  {
    var code=event.keyCode;
    
    switch(code) 
    {
      case 112:
           alert("DataMix (null created)");
           break;
      case 116:
           alert ("Внимание нажата клавиша F5, сейчас будет перегружен документ, и будет использоваться стандартная база Data.xml");
    }
  }
  
  function ClearChilds(Element, begin)
  {
    while(Element.length > begin)
    {
      child = Element.item(begin);
      Element.removeChild(child);  
    }
  }
  
  function FillListGroup(ElementNameForFill)
  {
      ClearChilds(ElementNameForFill,0);
      try
      {
        for(i=0; i<xmldoc.documentElement.childNodes.length; i++)
        {
          node = xmldoc.documentElement.childNodes(i);
          var oNewNode = document.createElement("option");  // создаем элемент для списка селект
          ElementNameForFill.appendChild(oNewNode);            // добавляем новый узел в dbsource
          oNewNode.innerText=node.attributes(0).text; //добавляем очередной элемент
          oNewNode.value=i;
        }
      }
      catch (err)
      {
        alert("Кривая база. Проверьте базу или создайте новую!");
        window.close();
      }
  }
  
  function FillListThemes(ElementNameForFill, ParentNode) // parentnode - елемент селект на форме из которого берется имя элемента группы темы которой мы хотим отобразить в текущем селекте
  {
    ClearChilds(ElementNameForFill,0);
    
      ElementNameForFill.clearAttributes();
      if (ElementNameForFill==ListThemes)
      {
      ElementNameForFill.setAttribute("multiple",true);
      window.ListThemes.setAttribute("size",23);
      }
    try
    {
      ListGroupName=xmldoc.documentElement.childNodes(ParentNode.value).childNodes;
            
    for(i=0;i<ListGroupName.length;i++)
    {
    node = ListGroupName(i);        
    
    switch(node.nodeType)    // PDATA и CDATA
      {
        case 1:
          var oNewNode = document.createElement("option");  // создаем элемент для списка селект
          ElementNameForFill.appendChild(oNewNode);            // добавляем новый узел в dbsource
          oNewNode.innerText=node.attributes(0).text; //добавляем очередной элемент
          oNewNode.value=i;
        break;
      }   
    }
    }
    catch (err)
    {
      alert("У группы не существует тем, или у темы нет необходимых аттрибутов.\nПоправьте базу или создайте новую.");      
    }
  }
  function FillAreas()
  {
      try
      {
      ListValuesOfTheme=xmldoc.documentElement.childNodes(window.ListGroup.value).childNodes(window.ListThemes.value).childNodes;
      switch (ListValuesOfTheme(1).text)
      {
        case "text":
          resultat.innerText= ListValuesOfTheme(0).text;
          break;
        case "html":
          resultat.innerHTML= ListValuesOfTheme(0).text;
          break;
          default:
          resultat.innerText= ListValuesOfTheme(0).text;
          break;
      }
      }
      catch (err)
      {
        alert("Ошибка отображения текста. Проверьте вашу базу");
        window.close();
      }
  }
  
  
  function ShowAddTheme()
  {
    AddThemeGroupAdd.value="";
    NewThemesForAddTheme.value="";
    try
    {
      Theme = xmldoc.documentElement.childNodes(window.ListGroup.value).childNodes(window.ListThemes.value);
      NewThemeName.value=Theme.attributes(0).text ;
    }
    catch (err) {}
    NewThemesForAddTheme.value="";
    window.resultat.style.display="none";
    window.AddForm.style.display="";
    window.xmltools.style.display="none";
    
    FillListGroup(ListGroupForAddTheme);
    window.ListGroupForAddTheme.focus();
    window.ListGroupForAddTheme.selectedIndex =window.ListGroup.value;
    window.ListGroupForAddTheme.focus();
    
    FillListThemes(ListThemesForAddTheme,ListGroupForAddTheme);
    window.ListThemesForAddTheme.focus();
    window.ListThemesForAddTheme.selectedIndex=window.ListThemes.value;
    NodeTextAndNotes();
    window.ListThemesForAddTheme.focus();
    
    try
    {
      Theme=Theme.childNodes;
      AddThemeTypeText.value=Theme(1).text;
    }
    catch(err){}
    AddThemeTypeText.focus();
    window.AddThemeText.focus();
  }
  
  function ShowText()  // показываем ячейку в которой отбражается текст
  {
    window.resultat.style.display="";
    window.AddForm.style.display="none";
    window.xmltools.style.display="none";
  }
  
  function showXmlTools()
  {
    window.resultat.style.display="none";
    window.AddForm.style.display="none";
    window.xmltools.style.display="";
  }
  
  function AddTheme(Pre) // добавление темы в xml документ
  {
     try
     {
     var Element;
     if (NewThemesForAddTheme.value=="")
     {
       Element = xmldoc.documentElement.childNodes(ListGroupForAddTheme.value).childNodes(ListThemesForAddTheme.value);
       OldNodeText=Element.childNodes(0);
       NewNodeText=Element.childNodes(0);
       if (Pre == "Pre")
       {
         NewNodeText.text="<pre>"+AddThemeText.value+"</pre>";
       }
       else
       {
         NewNodeText.text=AddThemeText.value;
       }
       Element.replaceChild(NewNodeText,OldNodeText);
       
       OldNodeNote=Element.childNodes(1);
       NewNodeNote=Element.childNodes(1);
       NewNodeNote.text=AddThemeTypeText.value;
       Element.replaceChild(NewNodeNote,OldNodeNote);
       
       xmldoc.save(RemoteData);
       alert("Тема изменена ");
     }
     else
     {
       Element=xmldoc.documentElement.childNodes(ListGroupForAddTheme.value).appendChild(xmldoc.createElement("Node"));
       attribute=xmldoc.createAttribute("Name");
       attribute.value=NewThemesForAddTheme.value;
       Element.setAttributeNode(attribute);
       Element.appendChild(xmldoc.createCDATASection(" "));
       Element.appendChild(xmldoc.createCDATASection(" "));
       
       OldNodeText=Element.childNodes(0);
       NewNodeText=Element.childNodes(0);
          
       if (Pre == "Pre")
       {
         NewNodeText.text="<pre>"+AddThemeText.value+"</pre>";
       }
       else
       {
         NewNodeText.text=AddThemeText.value;
       }
       Element.replaceChild(NewNodeText,OldNodeText);
       
       OldNodeNote=Element.childNodes(1);
       NewNodeNote=Element.childNodes(1);
       
       NewNodeNote.text=AddThemeTypeText.value;
       Element.replaceChild(NewNodeNote,OldNodeNote);
       
       xmldoc.save(RemoteData);
       alert("Тема добавлена!");
     }
     }
     catch (err)
     {
     alert ("В группе нет тем. Введите имя новой создаваемой темы.");
     window.NewThemesForAddTheme.focus();
     }
   }
     
  
  function AddGroup()
  {
    if(AddThemeGroupAdd.value != "")
    {
      group=xmldoc.documentElement.appendChild(xmldoc.createElement("group"));
      attribute=xmldoc.createAttribute("Name")
      attribute.value=AddThemeGroupAdd.value;
      group.setAttributeNode(attribute);
      xmldoc.save(RemoteData);
      FillListGroup(ListGroup);
      FillListGroup(ListGroupForAddTheme);
      alert("Группа добавлена");
    }
    else
    {
    alert("Введите имя группы");
    }
  }
  
  function NodeTextAndNotes()
  {
    try
    {
      Element = xmldoc.documentElement.childNodes(ListGroupForAddTheme.value).childNodes(ListThemesForAddTheme.value);
      AddThemeText.value=Element.childNodes(0).text;
      window.ListThemesForAddTheme.selectedIndex=window.ListThemes.value;
      //AddThemeTypeText.value=Element.childNodes(1).text;
    }
    catch(err)
    {
      AddThemeText.value=" ";
      //AddThemeTypeText.value=" ";
    }
    
  }
  
  function RemoveTheme()
  {
    var Remove=false;
    try
    {
      Element=xmldoc.documentElement.childNodes(ListGroup.value).childNodes(ListThemes.value);
      Remove=window.confirm("Удалить тему - "+Element.attributes(0).text+" ?");
    }
    catch(err)
    {
      alert ("Ошибка! Выберите тему для удаления");
    }
    
    if (Remove==true)
    {
      xmldoc.documentElement.childNodes(ListGroup.value).removeChild(Element);
      xmldoc.save(RemoteData);
      FillListGroup(ListGroup);
      FillListThemes(ListThemes,ListGroup)
      
      RemoteDataXml.innerHTML="<small>Используемая база - "+RemoteData+"</small>";
      
    }
  }
  
  function RemoveGroup()
  {
    var Remove=false;
    try
    {
      Element=xmldoc.documentElement.childNodes(ListGroup.value);
      Remove=window.confirm("Удалить группу - "+Element.attributes(0).text+" ?");
    }
    catch(err)
    {
      alert ("Ошибка! Выберите группу для удаления");
    }
    
    if (Remove==true)
    {
      if (ListGroupName.length >0)
      {
        RemoveNotEmpty=window.confirm("Группа - "+Element.attributes(0).text+" не пустая. Удалить группу со всеми темами?");
        if(RemoveNotEmpty == true)
        {
          xmldoc.documentElement.removeChild(Element);
          xmldoc.save(RemoteData);
          FillListGroup(ListGroup);
          FillListThemes(ListThemes,ListGroup);
          RemoteDataXml.innerHTML="<small>Используемая база - "+RemoteData+"</small>";
        }
      }
      else
      {
        xmldoc.documentElement.removeChild(Element);
        xmldoc.save(RemoteData);
        FillListGroup(ListGroup);
        FillListThemes(ListThemes,ListGroup);
        
        RemoteDataXml.innerHTML="<small>Используемая база - "+RemoteData+"</small>";
      }
    }
  }
  function InsertURL()
  {
    if (AddThemeTypeText.value == "URL")
    {
      address=window.prompt("Введите URL","http://www.ya.ru");
      opisanie=window.prompt("Введите описание для URL","яндекс");
      AddThemeText.value +=' <br><hr width=90% align=center><a href='+address+'>'+opisanie+'</a><br>';
      AddThemeTypeText.selectedIndex=0;
      window.AddThemeText.focus();
    }
  }
  
  function backupxml()
  {
    xmldoc.save(RemoteData+".backup");
    alert ("BackUP сделан");
  }
  
  function RenameTheme()
  {
    if (NewThemeName.value != "")
    {
      try
      {
        Theme = xmldoc.documentElement.childNodes(window.ListGroup.value).childNodes(window.ListThemes.value).attributes(0);
        Theme.text = NewThemeName.value;
        alert ("Тема переименована");
        xmldoc.save(RemoteData);
        FillListGroup(ListGroup);
        FillListThemes(ListThemes,ListGroup);
      }
      catch(err)
      {
        alert ("Выберите тему для переименования из главного списка");
      }
    }
    else
    {
      alert ("Введите имя темы");
      NewThemeName.focus();
      xmldoc.save(RemoteData);
      FillListGroup(ListGroup);
      FillListThemes(ListThemes,ListGroup);
    }
    
  }
  
  function Upload()
  {
    window.uploadprocess.innerHTML="";
    window.clipboardData.setData("Text", RemoteData);
    objIE.Navigate ("http://passport.yandex.ru/passport?mode=auth&retpath=http://narod.yandex.ru/");  //переходим на страницу ввода пароля 
    while(objIE.Busy) { }
    
    login = UserInput("Для того чтобы загрузить базу на www.narod.ru, введите\nЛОГИН:", "login");
    if (login != 0)
    {
      passwd=UserInput("ПАРОЛЬ:", "passwd");
      if ( passwd !=0 )
      {
        try
        {
        window.uploadprocess.innerHTML="<small>Авторизуемся на narod.ru ...</small>";
        //заполняем  форму ввода логина, и посылаем данные
        objForm = objIE.Document.forms("MainLogin");
        objForm.elements("login").value = login;
        objForm.elements("passwd").value = passwd;
        objForm.elements("In").click();
        window.uploadprocess.innerHTML="Переходим в мастерскую ...";
                
        while(objIE.Busy) { }
        objIE.document.getElementsByTagName("b").item(3).click();  //нажимаем на кнопку - Мастреская
        window.uploadprocess.innerHTML="Переходим к странице - загрузка файлов на сайт ...";
        
        while(objIE.Busy) { }
        objIE.document.getElementsByTagName("a").item(34).click(); //переходим по ссылке - Загрузка файлов на сайт
        
        while(objIE.Busy) { }
        window.uploadprocess.innerHTML="Устанавливаем фокус на кнопке выбора файла для загрузки ...";
        localfile = objIE.Document.forms("upload").elements("userfile0");  //получаем диалог указания пути к загружаемому файлу
        localfile.focus();
        objIE.document.parentWindow.resizeTo(0,0);
        window.uploadprocess.innerHTML="Уменьшаем окно IE до миниума, и делаем видимым";
        objIE.Visible=1;
        WshShell.AppActivate("Народ");
        setTimeout('WshShell.SendKeys("^v"); window.uploadprocess.innerHTML="<small>Загружаем базу на сайт</small>"', 10*300);
        setTimeout('objIE.Visible=0', 10*400);
        setTimeout('objIE.Document.forms("upload").submit();', 10*500);
        setTimeout('while(objIE.Busy) { }; window.uploadprocess.innerText="";alert("База успешно загружена на narod.ru!");', 10*500);
        }
        catch (err)
        {
        alert ("Ошибка загрузки - "+err.decription+"\nОшибка произошла на этапе: "+window.uploadprocess.innerText);
        }
      }
    }
  }
  
  function UserInput(text, value)
  {
    userText=window.prompt(text,value);
    switch(userText)
    {
      case null:
        return 0;
        break;
      case "":
        alert ("Вы ничего не ввели");
        return 0;
      default:
        return userText;
        break;
    }
  }
  -->
</SCRIPT>
</HEAD>
<BODY onkeydown=keyDown() bgColor=silver 
onload=resize();LoadForm();FillListGroup(ListGroup);FillListThemes(ListThemes,ListGroup)>
<TABLE height="95%" width="100%" align=center border=0>                                <!-- главная таблица -->
  <TR>
    <TD vAlign=top>
      <table class=border height="95%" width="100%" align=center border=1 
      >
        <TBODY>
        <tr>
          <td vAlign=top align=middle>
            <table align=center border=0 width="95%">
              <tr>
                <td align=middle colSpan=2>
                <select id=ListGroup onclick=FillListThemes(ListThemes,ListGroup)> 
                <option value=GroupS selected >- - - - - - - - - - - GroupS - - - - - - - - - - -</option></select> </td></tr>
              <tr>
                <td align=middle colSpan=2><select 
                  id=ListThemes onchange=ShowText();FillAreas() multiple size=30 
                  > <option value=ThemeS 
                    >- - - - - - - - - - - ThemeS - - - - - 
                    - - - - - -</option></select> </td></tr>
              <tr>
                <td id=RemoteDataXml align=middle colSpan=2 
                ></td></tr>
              <tr>
                <td align=middle>
                  <hr>
                  <button style="WIDTH: 180px; HEIGHT: 25px" 
                  onclick=FillListGroup(ListGroupForAddTheme);FillListThemes(ListThemesForAddTheme,ListGroupForAddTheme);ShowAddTheme();NodeTextAndNotes() 
                  type=button>
                  <center>Добавить/Изменить 
                  тему</center></button> </td></tr>
              <tr>
                <td align=middle><br 
                  ><button 
                  style="WIDTH: 180px; HEIGHT: 25px" onclick=RemoveTheme() 
                  type=button>
                  <center>Удалить тему</center></button> 
              </td></tr>
              <tr>
                <td align=middle><br 
                  ><button 
                  style="WIDTH: 180px; HEIGHT: 25px" onclick=RemoveGroup() 
                  type=button>
                  <center>Удалить группу</center></button> 
                  <hr>
                </td></tr>
              <tr>
                <td align=middle><button id=Button1 
                  style="WIDTH: 180px; HEIGHT: 25px" onclick=showXmlTools() 
                  type=button>
                  <center>Xml инструменты</center></button> </td></tr>
                  </table></td>
          <TD id=resultat vAlign=top align=left width="80%" rowSpan=1 ><br></TD>
          <td id=AddForm vAlign=top align=left width="80%" rowSpan=1>
            <!-- сюда вставляется код для добавления темы в xml файл -->
            <table>
              <tr>
                <td>Создать новую группу </td>
                <td align=left><input id=AddThemeGroupAdd type=text size=38> </td>
                <td align=left><input id=AddGroupButton onclick=AddGroup() type=button value=выполнить> 
                </td></tr>
            <tr>
              <td>
                Переименовать Тему
              </td>
              <td align=left><input id=NewThemeName type=text size=38> </td>
              <td align=left>
                <input id=RenameThemeButton onclick=RenameTheme() type=button value=выполнить> 
              </td>
            </tr>
            </table>
            <hr>

            <table align=left>
              <tr>
                <td></td>
                <td colSpan=2><u 
                  >Создать/Изменить тему</u> </td></tr>
              <tr align=left>
                <td noWrap align=left width="20%" 
                  >Выберите группу </td>
                <td align=left width="80%"><select 
                  id=ListGroupForAddTheme 
                  onclick=FillListThemes(ListThemesForAddTheme,ListGroupForAddTheme) 
                  onchange=FillListThemes(ListThemesForAddTheme,ListGroupForAddTheme);NodeTextAndNotes() 
                  > <option value=GroupS selected >GroupS</option></select> </td></tr>
              <tr>
                <td noWrap>Выберите тему</td>
                <td align=left><select 
                  id=ListThemesForAddTheme onclick=NodeTextAndNotes() 
                  > <option value=ThemeS selected >ThemeS</option></select> </td>
              <tr>
                <td noWrap>или создайте новую </td>
                <td><input id=NewThemesForAddTheme 
                  type=text maxLength=40 size=41></td></tr></tr>
              <tr>
                <td colSpan=3 rowSpan=1><textarea id=AddThemeText rows=25 cols=85></textarea> 

                  <center>Тип содержимого <br 
                  ><select id=AddThemeTypeText onchange=InsertURL()> 
                  <option value=html selected>html</option>
                  <option value=text>text</option>
                  <option value=URL>URL</option>
                  </select> </center></td></tr>
              <tr>
              
                <td align=middle colSpan=3><input id=AddThemeButton onclick='AddTheme("");javascript:ListGroup.onclick()' type=button value=Выполнить> 
<input id=Button2 onclick='AddTheme("Pre");javascript:ListGroup.onclick()' type=button value="Выполнить PRE"> 
                </td>
                
                </tr></table>
                <td id=xmltools valign=top width="80%">
                  <table align=center>
                    <tr>
                      <td>
                        <button id=BUTTON4 style="WIDTH: 180px; HEIGHT: 25px" onclick=loadxml() type=button>
                        <center>Загрузить Xml с сайта </center></button>   
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <button id=Button5 style="WIDTH: 180px; HEIGHT: 25px" onclick=loadxmlfromfile() type=button>
                        <center>Загрузить Xml из файла </center></button>   
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <br>
                        <button id=Button3 style="WIDTH: 180px; HEIGHT: 25px" onclick=backupxml() type=button>
                        <center>Backup xml</center></button> 
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <br>
                        <button id=UpLoadButton style="WIDTH: 180px; HEIGHT: 25px" onclick=Upload() type=button>
                        <center>UpLoad (narod.ru)</center></button> 
                      </td>
                    </tr>
                    <tr>
                      <td id=uploadprocess align=middle>
                      
                      </td>
                    </tr>
                  </table>
                </td>
                
                </td></TD></TR></TABLE></TD></TR></TBODY></TABLE><input 
id=filedialog type=file>

</BODY></HTML>

Автор программы - null.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.