var num_news_default = 5;

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//
// 初期化関数
//
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function init() {
  loadHead('top', 0);
  // 関数： ログイン後，ページをロードする
  var loadPage = function() {
    loadBackground_h2();
    loadNews(num_news_default, '.*', '.*');
    loadGuide();
    loadFoot(0);
    countAccess('top');
  }
  login(loadPage);
  return true;
}



////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//
// ニュースを読み込む
//
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//
// 関数： loadNews の前準備
//
var loadNews_ = function(e) {
  var query = getTargetElement(e).query.split(';');
  var num = query[0], category = query[1], yearmonth = query[2];
  loadNews(num, category, yearmonth);
  return;
}


function loadNews(num, category, yearmonth) {
  window.scrollTo(0, 0);
  var left = document.getElementById('content_left'); left.innerHTML = 'データを読み込んでいます．．．'; 
  var center = document.getElementById('content_center'); center.innerHTML = 'データを読み込んでいます．．．';
  
  // 関数： 読み込み後の処理
  var func = function(xml) {
    left.innerHTML = '';
    center.innerHTML = '';
    var i;

    ////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
    //
    // 【中央】 お知らせの処理
    //
    ////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
    //
    // 新規追加 （管理者のみ）
    //
    if( isRoot() ) {
      var div = document.createElement('div');
      div.style.textAlign = 'right';
      div.style.marginBottom = '.66em';
      div.style.padding = '0 4px 3px 4px';
      div.style.borderBottom = '#ffcc99 1px dotted';

      var a = document.createElement('a'); a.className = 'linklike';
      a.innerHTML = '新規作成';
      addListener(a, 'click', editNews, false);
      div.appendChild(a);

      center.appendChild(div);
    }

    var dl_news = document.createElement('dl');
    center.appendChild(dl_news);

    for( i = 0; i < getNode(xml, 'news', -1).length; i++ ) {
      var news = getNode(xml, 'news', i);
      //
      // 記事タイトル
      //
      var dt = document.createElement('dt');
      dt.innerHTML = '[' + getNodeValue(news, 'category', 0) + ']&nbsp; ' + getNodeValue(news, 'title', 0);
      //
      // 記事内容
      //
      var dd = document.createElement('dd');
      // 編集，削除 （管理者のみ）
      if( isRoot() ) {
        var div = document.createElement('div'); div.style.textAlign = 'right'; div.style.margin = '-.66em 0 .33em 0';
        var a_edit = document.createElement('a'), a_delete = document.createElement('a');
        a_edit.className = a_delete.className = 'linklike';
        a_edit.nid = a_delete.nid = getNodeValue(news, 'nid', 0);
        a_edit.innerHTML = '編集';
        addListener(a_edit, 'click', editNews, false);
        a_delete.style.marginLeft = '.66em';
        a_delete.innerHTML = '削除';
        addListener(a_delete, 'click', deleteNews, false);
        div.appendChild(a_edit);
        div.appendChild(a_delete);
        dd.appendChild(div);
      }
      var div = document.createElement('div'); div.innerHTML = getNodeValue(news, 'content', 0);
      dd.appendChild(div);
      //
      // リンク先 URL
      //
      
      //
      // 投稿・編集日時
      //
      var p_postinfo = document.createElement('p'); p_postinfo.className = 'postinfo';
      p_postinfo.innerHTML = 'Posted: ' + (new Date(parseInt(getNodeValue(news, 'nid', 0)) * 1000)).toLocaleString();
      if( getNodeValue(news, 'nid', 0) != getNodeValue(news, 'lastmod', 0) ) {
        p_postinfo.innerHTML += '<br />Last modified: ' + (new Date(parseInt(getNodeValue(news, 'lastmod', 0)) * 1000)).toLocaleString();
      }
      dd.appendChild(p_postinfo);


      var p_others = document.createElement('p'); p_others.style.textAlign = 'right'; p_others.style.fontSize = '95%';
      //
      // リンク
      //
      var a_link = document.createElement('a'); a_link.className = 'linklike';
      a_link.innerHTML = 'リンク';
      addListener(a_link, 'click', load1News_, false);
      //
      // コメント数
      //
      var a_comment = document.createElement('a'); a_comment.className = 'linklike';
      a_comment.innerHTML = 'コメント （' + getNodeValue(news, 'count_comment', 0) + '）';
      a_comment.id_anchor = 'h_comment_content';
      addListener(a_comment, 'click', load1News_, false);
      //
      // コメントの投稿
      //
      var a_post = document.createElement('a'); a_post.className = 'linklike';
      a_post.innerHTML = 'コメントの投稿';
      a_post.id_anchor = 'h_comment_post';
      addListener(a_post, 'click', load1News_, false);
      //
      a_link.style.marginLeft = a_comment.style.marginLeft = a_post.style.marginLeft = '.66em';
      a_link.nid = a_comment.nid = a_post.nid = getNodeValue(news, 'nid', 0);
      p_others.appendChild(a_link);
      p_others.appendChild(a_comment);
      p_others.appendChild(a_post);
      dd.appendChild(p_others);
      
      
      dl_news.appendChild(dt);
      dl_news.appendChild(dd);
    }

    ////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
    //
    // 【左】 分類の処理
    //
    ////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
    var dl_classific = document.createElement('dl'); left.appendChild(dl_classific);
    //
    // 最近の．．．
    //
    var dt_latest = document.createElement('dt'); dt_latest.innerHTML = '最近の．．．'; dl_classific.appendChild(dt_latest);
    var dd_latest = document.createElement('dd'); dl_classific.appendChild(dd_latest);
    var ul_latest = document.createElement('ul'); dd_latest.appendChild(ul_latest);
    if( true ) {
      var li_1 = document.createElement('li'), a_1 = document.createElement('a'); a_1.className = 'linklike';
      var li_5 = document.createElement('li'), a_5 = document.createElement('a'); a_5.className = 'linklike';
      var li_10 = document.createElement('li'), a_10 = document.createElement('a'); a_10.className = 'linklike';
      var li_all = document.createElement('li'), a_all = document.createElement('a'); a_all.className = 'linklike';
      a_5.innerHTML = '5件';   a_5.query = '5;.*;.*'; addListener(a_5, 'click', loadNews_, false);
      a_10.innerHTML = '10件'; a_10.query = '10;.*;.*'; addListener(a_10, 'click', loadNews_, false);
      a_all.innerHTML = '全記事 （' + getNodeValue(getNode(xml, 'count_all', 0), 'content', 0) + '）'; a_all.query = '-1;.*;.*'; addListener(a_all, 'click', loadNews_, false);
      li_1.appendChild(a_1);
      li_5.appendChild(a_5);
      li_10.appendChild(a_10);
      li_all.appendChild(a_all);
      ul_latest.appendChild(li_1);
      ul_latest.appendChild(li_5);
      ul_latest.appendChild(li_10);
      ul_latest.appendChild(li_all);
    }
    //
    // カテゴリ
    //
    var dt_category = document.createElement('dt'); dt_category.innerHTML = 'カテゴリ別'; dl_classific.appendChild(dt_category);
    var dd_category = document.createElement('dd'); dl_classific.appendChild(dd_category);
    var ul_category = document.createElement('ul'); dd_category.appendChild(ul_category);
    for( i = 0; i < getNode(xml, 'count_category', -1).length; i++ ) {
      var count_category = getNode(xml, 'count_category', i);
      var li = document.createElement('li');
      var a = document.createElement('a'); a.className = 'linklike';
      a.innerHTML = getNodeValue(count_category, 'category', 0) + ' （' + getNodeValue(count_category, 'content', 0) + '）';
      a.query = '-1;' + getNodeValue(count_category, 'category', 0) + ';.*';
      addListener(a, 'click', loadNews_, false);
      li.appendChild(a);
      ul_category.appendChild(li);
    }
    //
    // 年月
    //
    var dt_yearmonth = document.createElement('dt'); dt_yearmonth.innerHTML = '年月別'; dl_classific.appendChild(dt_yearmonth);
    var dd_yearmonth = document.createElement('dd'); dl_classific.appendChild(dd_yearmonth);
    var ul_yearmonth = document.createElement('ul'); dd_yearmonth.appendChild(ul_yearmonth);
    for( i = 0; i < getNode(xml, 'count_yearmonth', -1).length; i++ ) {
      var count_yearmonth = getNode(xml, 'count_yearmonth', i);
      var li = document.createElement('li');
      var a = document.createElement('a'); a.className = 'linklike';
      getNodeValue(count_yearmonth, 'yearmonth', 0).match(/^(\d{4})(\d{2})$/);
      a.innerHTML = RegExp.$1 + '.' + RegExp.$2 + ' （' + getNodeValue(count_yearmonth, 'content', 0) + '）';
      a.query = '-1;.*;' + getNodeValue(count_yearmonth, 'yearmonth', 0);
      addListener(a, 'click', loadNews_, false);
      li.appendChild(a);
      ul_yearmonth.appendChild(li);
    }

    return;
  }
  var query = new Array();
  query.push('cmd=index');
  query.push('num=' + num);
  query.push('category=' + category);
  query.push('yearmonth=' + yearmonth);
  httpXMLRequest(dir('cgi', 0) + 'news.cgi', 'POST', array2queryString(query), func, httpError, 'cgi_news_index', true);
  return;
}


////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//
// お知らせを1つ，付属情報つきで読み込む
//
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function load1News_(e) {
  load1News(getTargetElement(e).nid, getTargetElement(e).id_anchor);
  return;
}
function load1News(nid, id_anchor) {
  var center = document.getElementById('content_center'); center.innerHTML = 'データを読み込んでいます．．．';

  // 関数： 読み込み後の処理
  var func = function(xml) { center.innerHTML = '';
    var dl_news = document.createElement('dl');
    center.appendChild(dl_news);
    ////////////////////////////////////////////////////////////////
    //
    // お知らせ内容
    //
    ////////////////////////////////////////////////////////////////
    //
    // 記事タイトル
    //
    var dt = document.createElement('dt');
    dt.innerHTML = '[' + getNodeValue(xml, 'category', 0) + ']&nbsp; ' + getNodeValue(xml, 'title', 0);
    //
    // 記事内容
    //
    var dd = document.createElement('dd');
    /*
    // 編集，削除 （管理者のみ）
    if( isRoot() ) {
      var div = document.createElement('div'); div.style.textAlign = 'right'; div.style.margin = '-.66em 0 .33em 0';
      var a_edit = document.createElement('a'), a_delete = document.createElement('a');
      a_edit.className = a_delete.className = 'linklike';
      a_edit.nid = a_delete.nid = getNodeValue(xml, 'nid', 0);
      a_edit.innerHTML = '編集';
      addListener(a_edit, 'click', editNews, false);
      a_delete.style.marginLeft = '.66em';
      a_delete.innerHTML = '削除';
      addListener(a_delete, 'click', deleteNews, false);
      div.appendChild(a_edit);
      div.appendChild(a_delete);
      dd.appendChild(div);
    }
    */
    var div = document.createElement('div'); div.innerHTML = getNodeValue(xml, 'content', 0);
    dd.appendChild(div);
    //
    // リンク先 URL
    //
      
    //
    // 投稿・編集日時
    //
    var p_postinfo = document.createElement('p'); p_postinfo.className = 'postinfo';
    p_postinfo.innerHTML = 'Posted: ' + (new Date(parseInt(getNodeValue(xml, 'nid', 0)) * 1000)).toLocaleString();
    if( getNodeValue(xml, 'nid', 0) != getNodeValue(xml, 'lastmod', 0) ) {
      p_postinfo.innerHTML += '<br />Last modified: ' + (new Date(parseInt(getNodeValue(xml, 'lastmod', 0)) * 1000)).toLocaleString();
    }
    dd.appendChild(p_postinfo);

    ////////////////////////////////////////////////////////////////
    //
    // コメント
    //
    ////////////////////////////////////////////////////////////////
    var h3_comment = document.createElement('h3');
    h3_comment.id = 'h_comment_content';
    h3_comment.innerHTML = 'コメント';
    dd.appendChild(h3_comment);
    // コメントエリア
    var div_comment = document.createElement('div');
    dd.appendChild(div_comment);
    if( definedXMLTagName(xml, 'comment') ) {
      var i; for( i = 0; i < getNode(xml, 'comment', -1).length; i++ ) {
        var comment = getNode(xml, 'comment', i);
        var name = getNodeValue(comment, 'name', 0);
        var content = getNodeValue(comment, 'content', 0);
        var datetime = (new Date(parseInt(getNodeValue(comment, 'datetime', 0)) * 1000)).toLocaleString();
        //
        // 本文
        //
        div_comment.innerHTML += content;
        //
        // 投稿情報（投稿者，日時）
        //
        var p_postinfo = document.createElement('p'); p_postinfo.className = 'postinfo';
        p_postinfo.innerHTML = 'Commenter: ' + name + '<br />Posted: ' + datetime;
        div_comment.appendChild(p_postinfo);
      }
    }
    else {
      var p = document.createElement('p');
      p.innerHTML = 'コメントはありません．';
      div_comment.appendChild(p);
    }

    ////////////////////////////////////////////////////////////////
    //
    // コメント投稿フォーム
    //
    ////////////////////////////////////////////////////////////////
    var form = document.createElement('div'); form.id = 'form_comment';
    form.nid = nid;
    dd.appendChild(form);
    // フラグ
    var flg_submit = new Array();
    flg_submit['name'] = isUser()  ?  true  :  false;
    flg_submit['content'] = false;
    // 関数： 書き込み可能かどうかチェックする
    var submittable = function(elem, b) {
      flg_submit[elem] = b;
      var flg =   flg_submit['name']  &&  flg_submit['content'];
      document.getElementById('comment_submit').disabled = !flg;
    }
    var h3_post = document.createElement('h3');
    h3_post.id = 'h_comment_post';
    h3_post.innerHTML = 'コメントの投稿';
    form.appendChild(h3_post);
    //
    // ユーザ名
    // 
    form.appendChild(document.createTextNode('お名前: '));
    var input_name = document.createElement('input');
    input_name.id = 'comment_name'; input_name.className = 'commentForm';
    input_name.type = 'text';
    input_name.style.width = '40%';
    // ユーザの場合，
    if( isUser() ) {
      input_name.value = getUName();
      input_name.disabled = true;
      form.appendChild(input_name);
      form.appendChild(document.createTextNode(' （入力不要）'));
    }
    else {
      // 関数：
      var checkUName = function() {
        document.getElementById('comment_name').value.match(/^\s*$/)  ?  submittable('name', false)  :  submittable('name', true);
        return;
      }
      addListener(input_name, 'keyup', checkUName, false);
      addListener(input_name, 'blur', checkUName, false);
      form.appendChild(input_name);
      form.appendChild(document.createTextNode(' （Guest）'));
    }
    form.appendChild(document.createElement('br'));
    //
    // 本文
    //
    var textarea = document.createElement('textarea');
    textarea.id = 'comment_content'; textarea.className = 'commentForm';
    textarea.style.height = '8em';
    // 関数： 本文が空かどうかチェックする
    var checkContent = function() {
      document.getElementById('comment_content').value.match(/^\s*$/)  ?  submittable('content', false)  :  submittable('content', true);
      return;
    }
    addListener(textarea, 'keyup', checkContent, false);
    addListener(textarea, 'blur', checkContent, false);
    form.appendChild(textarea);
    //
    // ボタンエリア
    //
    var div_button = document.createElement('div');
    div_button.style.textAlign = 'right';
    form.appendChild(div_button);
    //
    // ボタン： 書き込む
    //
    var button_submit = document.createElement('input');
    button_submit.id = 'comment_submit'; button_submit.className = 'btn_commentForm';
    button_submit.type = 'button';
    button_submit.value = '書き込む';
    button_submit.title = 'コメントを書き込みます．';
    button_submit.disabled = true;
    addListener(button_submit, 'click', saveComment, false);
    div_button.appendChild(button_submit);

    dl_news.appendChild(dt);
    dl_news.appendChild(dd);

    // id_anchor というIDをもつ要素の位置へスクロールさせる
    id_anchor  ?  window.scrollTo(0, getPosition(document.getElementById(id_anchor)).y)  :  window.scrollTo(0, 0);
    return;
  }
  var query = new Array();
  query.push('cmd=1news');
  query.push('nid=' + nid);
  httpXMLRequest(dir('cgi', 0) + 'news.cgi', 'POST', array2queryString(query), func, httpError, 'cgi_news_1news.' + nid, true);
  return;
}
////////////////////////////////////////////////////////////////////////////////
//
// コメントを書き込む
//
////////////////////////////////////////////////////////////////////////////////
function saveComment(e) {
  getTargetElement(e).disabled = true;
  var nid = document.getElementById('form_comment').nid;
  var name = isUser()  ?  document.getElementById('comment_name').value  :  document.getElementById('comment_name').value + ' ＠Guest';
  var content = text2queryValue(document.getElementById('comment_content').value);

  var func = function(xml) {
    load1News(nid);
  }
  var query = new Array();
  query.push('cmd=comment_save');
  query.push('nid=' + nid);
  query.push('name=' + name);
  query.push('content=' + content);
  httpXMLRequest(dir('cgi', 0) + 'news.cgi', 'POST', array2queryString(query), func, httpError, 'cgi_news_comment_save.' + nid, true);
  return;
}



////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//
// お知らせを編集または新規作成する
//
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//
//
// 編集フォームを生成
//
//
function editNews(e) {
  if( document.getElementById('form') ) { document.getElementById('form').parentNode.removeChild(document.getElementById('form')); }
  
  var target = getTargetElement(e);
  var center = document.getElementById('center');
  var form = document.createElement('div'); form.id = 'form';

  //
  // 関数： 編集ならば真を返す
  //
  var isEdit = function() { return target.nid  ?  true  :  false; }
  
  //
  // フォームの位置設定
  //
  form.style.left = 0;
  form.style.top = target.offsetTop + 'px';
  form.style.width = center.offsetWidth - 18 + 'px';
  center.appendChild(form);

  //
  // 主要変数
  //
  form.nid = isEdit()  ?  target.nid  :  parseInt((new Date()).getTime() / 1000).toString(); // お知らせID


  //
  // 関数： フォームを生成する．編集時は，保存内容を表示する
  //
  var createForm = function(xml) {
    var h3 = document.createElement('h3');
    h3.innerHTML = isEdit()  ?  'お知らせの編集'  :  'お知らせの新規作成';
    form.appendChild(h3);
  
    ////////////////////////////////////////////////////////////////////////////////
    //
    // フォーム： カテゴリ選択 
    //
    ////////////////////////////////////////////////////////////////////////////////
    var h4_category = document.createElement('h4');
    h4_category.innerHTML = 'カテゴリの選択';
    form.appendChild(h4_category);
    //
    // カテゴリ選択
    //
    var select_category = document.createElement('select');
    select_category.id = 'news_category';
    select_category.style.width = '10em';
    form.appendChild(select_category);
    var option0 = document.createElement('option');
    option0.value = '0';
    option0.innerHTML = '選択してください';
    select_category.appendChild(option0);
    // 関数： カテゴリリストをロードする
    var loadCategories = function(xml_) {
      var i;  for( i = 0; i < getNode(xml_, 'category', -1).length; i++ ) {
        var category = getNode(xml_, 'category', i);
        var option = document.createElement('option');
        option.value = option.innerHTML = getNodeValue(category, 'name', 0);
        select_category.appendChild(option);
        // 【編集時】 作成時に選択したカテゴリの項目を選択状態にする
        if( isEdit()  &&  option.value == getNodeValue(xml, 'category', 0) ) { option.selected = 'selected'; }
      }
    }
    httpXMLRequest(dir('cgi', 0) + 'news.cgi', 'POST', 'cmd=category_index', loadCategories, httpError, 'cgi_news_category_index', true);
    //
    // 新規カテゴリ入力
    //
    var input_category = document.createElement('input');
    input_category.id = 'news_category_new';
    input_category.style.width = '8em';
    input_category.type = 'text';
    form.appendChild(document.createTextNode(' or '));
    form.appendChild(input_category);
    //
    // 追加ボタン
    //
    var button_category_add = document.createElement('input');
    button_category_add.id = 'news_category_add';
    button_category_add.className = 'btn';
    button_category_add.type = 'button';
    button_category_add.value = 'Add';
    // 関数： カテゴリをリストに追加する
    var addCategory = function(e) {
      var cid = parseInt((new Date()).getTime() / 1000).toString();
      var cname = input_category.value;  if( input_category.value.match(/^\s*$/) ) { return; }
      var func = function(xml_) {
        var option = document.createElement('option');
        option.value = option.innerHTML = getNodeValue(xml_, 'name', 0);
        option.selected = true;
        select_category.appendChild(option);
        document.getElementById('news_category_new').value = '';
      }
      var query = new Array();
      query.push('cmd=category_add');
      query.push('cid=' + cid);
      query.push('cname=' + cname);
      httpXMLRequest(dir('cgi', 0) + 'news.cgi', 'POST', array2queryString(query), func, httpError, 'cgi_news_category_add.' + cid, true);
      return;
    }
    addListener(button_category_add, 'click', addCategory, false);
    form.appendChild(button_category_add);
  
    ////////////////////////////////////////////////////////////////////////////////
    //
    // フォーム： タイトル 
    //
    ////////////////////////////////////////////////////////////////////////////////
    var h4_title = document.createElement('h4');
    h4_title.innerHTML = 'タイトル';
    form.appendChild(h4_title);
    //
    // テキストボックス
    //
    var input_title = document.createElement('input');
    input_title.id = 'news_title';
    input_title.type = 'text';
    form.appendChild(input_title);
    // 【編集時】 保存内容を表示
    if( isEdit() ) { input_title.value = getNodeValue(xml, 'title', 0); }

    ////////////////////////////////////////////////////////////////////////////////
    //
    // フォーム： 内容 
    //
    ////////////////////////////////////////////////////////////////////////////////
    var h4_content = document.createElement('h4');
    h4_content.innerHTML = 'お知らせ内容';
    form.appendChild(h4_content);
    //
    // テキストエリア
    //
    var textarea = document.createElement('textarea');
    textarea.id = 'news_content';
    textarea.style.height = '12em';
    form.appendChild(textarea);
    // 【編集時】 保存内容を表示
    if( isEdit() ) { textarea.value = tag2textarea(getNodeValue(xml, 'content', 0)); }

    ////////////////////////////////////////////////////////////////////////////////
    //
    // フォーム： リンク先
    //
    ////////////////////////////////////////////////////////////////////////////////
    var h4_link = document.createElement('h4');
    h4_link.innerHTML = 'リンク先 URL';
    form.appendChild(h4_link);
    //
    // テキストボックス
    //
    var input_link = document.createElement('input');
    input_link.id = 'news_link';
    input_link.type = 'text';
    form.appendChild(input_link);
    // 【編集時】 保存内容を表示
    if( isEdit() ) { input_link.value = definedXMLTagName(xml, 'link')  ?  getNodeValue(xml, 'link', 0)  :  ''; }
    // 【新規作成時】 デフォルトURLを表示
    else { input_link.value = 'http://www.imasaramario2.com/'; }


    ////////////////////////////////////////////////////////////////////////////////
    //
    // フォーム： ボタン群
    //
    ////////////////////////////////////////////////////////////////////////////////
    //
    // ボタンエリア
    //
    var foot_form = document.createElement('div');
    foot_form.style.marginTop = '1em';
    foot_form.style.paddingTop = '.66em';
    foot_form.style.textAlign = 'right';
    foot_form.style.borderTop = '#ffcc99 1px dotted';
    form.appendChild(foot_form);
    //
    // Cancel ボタン
    //
    var button_cancel = document.createElement('input');
    button_cancel.id = 'news_cancel';
    button_cancel.className = 'btn';
    button_cancel.type = 'button';
    button_cancel.value = 'Cancel';
    button_cancel.title = 'お知らせの作成を中止します．';
    // 関数： キャンセル（フォームを消去）
    var cancel = function() {
      form.parentNode.removeChild(form);
      return;
    }
    addListener(button_cancel, 'click', cancel, false);
    foot_form.appendChild(button_cancel);
    //
    // Create・Save ボタン
    //
    var button_send = document.createElement('input');
    button_send.id = 'news_save';
    button_send.className = 'btn';
    button_send.type = 'button';
    button_send.value = isEdit()  ?  'Save'  :  'Create';
    button_send.title = isEdit()  ?  '変更を保存します．'  :  'お知らせを作成します．';
    addListener(button_send, 'click', saveNews, false);
    foot_form.appendChild(button_send);

    return;
  }
  var query = new Array();
  query.push('cmd=edit');
  query.push('nid=' + form.nid);
  httpXMLRequest(dir('cgi', 0) + 'news.cgi', 'POST', array2queryString(query), createForm, httpError, 'cgi_news_edit.' + form.nid, true);
  return;
}
//
//
// お知らせを保存・新規作成する
//
//
function saveNews(e) {
  var form = document.getElementById('form');

  var nid = form.nid
  var category = document.getElementById('news_category').options[document.getElementById('news_category').selectedIndex].value;
  var title = document.getElementById('news_title').value;
  var content = text2queryValue(document.getElementById('news_content').value);
  var link = document.getElementById('news_link').value;
  // 関数： 保存後の処理
  var func = function(xml) {
    form.parentNode.removeChild(form);
    loadNews(num_news_default, '.*', '.*');
    return;
  }
  var query = new Array();
  query.push('cmd=save');
  query.push('nid=' + nid);
  query.push('category=' + category);
  query.push('title=' + title);
  query.push('content=' + content);
  if( link != '' ) { query.push('link=' + link); }
  if( getTargetElement(e).value == 'Save' ) { query.push('lastmod=' + parseInt((new Date()).getTime() / 1000).toString()); }
  httpXMLRequest(dir('cgi', 0) + 'news.cgi', 'POST', array2queryString(query), func, httpError, 'cgi_news_save.' + nid, true);

  return;
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//
// お知らせを削除する
//
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function deleteNews(e) {

  return;
}








////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//
// ガイドを読み込む
//
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
function loadGuide() {
  var guide = document.createElement('div'); guide.id = 'guide';
  document.getElementById('content_right').appendChild(guide);
  var dl = document.createElement('dl');
  guide.appendChild(dl);

  dl.innerHTML += '<p>この部分には今後，当サイトをご利用いただくにあたってのヒント等を掲載していこうかと思います．</p><p>例えば，以下のような感じで．．．</p>';
  dl.innerHTML += '<dt>ナビゲーションメニューはどこ？</dt><dd><p>左上のタイトル部分ににマウスを乗せると出てきます．</p><p>ナビゲーションメニューからマウスが外れると隠れます．</p></dd>';
}





addListener(window, 'load', init, false);

