var offset = 0;
var offsetUnit = 20;
var offsetUnitPlus = offsetUnit + 1;
var totalPages, totalCount;
var residue;
var ppNow, sbNow;
var pageLines = [];

var nextBibId = "";
var existBibId = "";


function constructSelBibSql() {
  qry_par = "";
  var sbtable = $('sbtb1');
  var title    = sbtable.childNodes[0].childNodes[0].childNodes[1].childNodes[0].value;
  var author   = sbtable.childNodes[0].childNodes[1].childNodes[1].childNodes[0].value;
  var publ     = sbtable.childNodes[0].childNodes[2].childNodes[1].childNodes[0].value;

  var pubdt1   = sbtable.childNodes[0].childNodes[3].childNodes[1].childNodes[0].value;
  var pubdtc   = sbtable.childNodes[0].childNodes[3].childNodes[1].childNodes[1].value;
  var pubdt2   = sbtable.childNodes[0].childNodes[3].childNodes[1].childNodes[2].value;

  var ptbl     = sbtable.childNodes[0].childNodes[4].childNodes[1].childNodes[0].value;
  var clsSite  = sbtable.childNodes[0].childNodes[5].childNodes[1].childNodes[0].value;
  var clsLocal = sbtable.childNodes[0].childNodes[6].childNodes[1].childNodes[0].value;


  if(title!='') { where_title = "title like '%" + title + "%' "; }
  else          { where_title = ""; }

  if(author!='') { where_author = "author like '%" + author + "%' "; }
  else           { where_author = ""; }

  if(publ!='') { where_publ = "publ like '%" + publ + "%' "; }
  else         { where_publ = ""; }

  switch(pubdtc) {
    case "0": if(pubdt1!='') { where_pubdt = "pubdt like '%" + pubdt1 + "%' "; }
              else           { where_pubdt = ""; }
              break;
    case "1": if(pubdt1!='') { where_pubdt = "pubdt <= '" + pubdt1 + "' "; }
              else           { where_pubdt = ""; }
              break;
    case "2": if(pubdt1!='') { where_pubdt = "pubdt >= '" + pubdt1 + "' "; }
              else           { where_pubdt = ""; }
              break;
    case "3": if(pubdt1!='') {
                if(pubdt2!='') { where_pubdt = "pubdt >= '" + pubdt1 + "' and pubdt <= '" + pubdt2 + "' "; }
                else           { where_pubdt = "pubct >= '" + pubdt1 + "' "; }
              }
              else           { where_pubdt = ""; }
              break;
  }

  if(ptbl!='') { where_ptbl = "ptbl like '%" + ptbl + "%' "; }
  else         { where_ptbl = ""; }

  if(clsSite!='') { where_clsSite = "cls_site like '" + clsSite + "%' "; }
  else            { where_clsSite = ""; }

  if(clsLocal!='') { where_clsLocal = "cls_local like '%" + clsLocal + "%' "; }
  else             { where_clsLocal = ""; }

  var sbtable = $('sbtb3');
  var sortkey1 = sbtable.childNodes[0].childNodes[0].childNodes[1].childNodes[0].value;
  var sortjun1 = sbtable.childNodes[0].childNodes[0].childNodes[2].childNodes[0].value;
  var sortkey2 = sbtable.childNodes[0].childNodes[1].childNodes[1].childNodes[0].value;
  var sortjun2 = sbtable.childNodes[0].childNodes[1].childNodes[2].childNodes[0].value;

  var sbtable = $('sbtb4');
//  alert(sbtable.childNodes[0].childNodes[0].firstChild.innerHTML);
//  alert(sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[1].innerHTML);
//  alert(sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[1][0].value);
//  alert(sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[1][0].selected);
//  alert(sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[1][1].selected);
//  alert(sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[1][2].selected);
//  alert(sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[1][3].selected);
//  alert(sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[3][0].value);
//  alert(sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[3][0].selected);
//  alert(sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[3][1].selected);
//  alert(sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[3][2].selected);
//  alert(sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[3][3].selected);

  sel_idx = 0;
  for(var i=0; i<5; i++) {
    if(sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[1][i].selected) {
      sel_idx = i;
      break;
    }
  }
  var limit1 = sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[1][sel_idx].value;

  sel_idx = 0;
  for(var i=0; i<6; i++) {
    if(sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[3][i].selected) {
      sel_idx = i;
      break;
    }
  }
  var limit2 = sbtable.childNodes[0].childNodes[0].childNodes[0].childNodes[3][sel_idx].value;

  qry_sel = "select * from bibs ";

  qry_where = "";
  if(where_title!='') { qry_where = "where " + where_title; }
  if(where_author!='') {
    if(qry_where=='') { qry_where += "where " + where_author; }
    else              { qry_where += " and " + where_author; }
  }
  if(where_publ!='') {
    if(qry_where=='') { qry_where += "where " + where_publ; }
    else              { qry_where += " and " + where_publ; }
  }
  if(where_pubdt!='') {
    if(qry_where=='') { qry_where += "where " + where_pubdt; }
    else              { qry_where += " and " + where_pubdt; }
  }
  if(where_ptbl!='') {
    if(qry_where=='') { qry_where += "where " + where_ptbl; }
    else              { qry_where += " and " + where_ptbl; }
  }
  if(where_clsSite!='') {
    if(qry_where=='') { qry_where += "where " + where_clsSite; }
    else              { qry_where += " and " + where_clsSite; }
  }
  if(where_clsLocal!='') {
    if(qry_where=='') { qry_where += "where " + where_clsLocal; }
    else              { qry_where += " and " + where_clsLocal; }
  }

  if(sortkey1=='none') {
    if(sortkey2=='none') { qry_order = ''; }
    else {
      if(sortkey2=='ptbln') { qry_order = "order by abs(" + sortkey2 + ") "; }
      else                  { qry_order = "order by " + sortkey2 + " "; }
      qry_order += " " + sortjun2 + " ";
    }
  }else{
    if(sortkey2=='none') {
      if(sortkey1=='ptbln') { qry_order = "order by abs(" + sortkey1 + ") "; }
      else                  { qry_order = "order by " + sortkey1 + " "; }
      qry_order += sortjun1 + " ";
    }else{
      if(sortkey1=='ptbln') { qry_order = "order by abs(" + sortkey1 + ") "; }
      else                  { qry_order = "order by " + sortkey1 + " "; }
      qry_order += " " + sortjun1 + ", ";
      if(sortkey2=='ptbln') { qry_order += " abs(" + sortkey2 + ") "; }
      else                  { qry_order += " " + sortkey2 + " "; }
      qry_order += sortjun2 + " ";
    }
  }

  if(limit2=="0") { qry_limit = ""; }
  else            { qry_limit = "limit " + (limit1-1) + ", " + limit2 + ";"; }

  qry_par = qry_sel + qry_where + qry_order + qry_limit;
//alert(URLa+"---"+DBNa);
//alert(qry_par);
}

function selectBib() {
  var url  = URLa;
  var dbn  = DBNa;
  var qry  = qry_par;
  var onCmplt = saveSelectedBib;
  sendAndQuery(url,dbn,qry,'true',onCmplt);
}

function saveSelectedBib(oj) {
  respJSON = oj.responseText;
//alert(respJSON);
  respData = eval( '(' + respJSON + ')' );
//alert(respData);
//alert("query number "+respData.qrys[0].qryn);                  // query number
//alert("number of rows "+respData.qrys[0].nrows);                 // number of rows
//alert(respData.qrys[0].names.length);          // number of columns
//alert(respData.qrys[0].names[0]);              // names of second index of vals
//alert(respData.qrys[0].vals[0][0]+" id");      // id (first second index) of first index
//alert(respData.qrys[0].vals[0][1]+" f_or_c");  // f_or_c
//alert(respData.qrys[0].vals[0][2]+" bib_id");  // bib_id
//alert(respData.qrys[0].vals[0][3]+" has_vol");   // has_vol
//alert(respData.qrys[0].vals[0][4]);  // title
//alert(respData.qrys[0].vals[0][5]);  // author

  rows  = respData.qrys[0].nrows;
  cells = respData.qrys[0].names.length;

  bibGot = new Array(rows);
  for(var i=0; i<rows; i++) {
    bibGot[i] = new Array(cells);
    for(var j=0; j<cells; j++) {
      bibGot[i][j] = respData.qrys[0].vals[i][j];
    }
  }

  totalCount = rows;
  residue    = totalCount - Math.floor(totalCount/offsetUnit)*offsetUnit;
  totalPages = Math.ceil(totalCount/offsetUnit);
  for(var i=0; i<totalPages; i++) {
    if(i==(totalPages-1)) {
      pageLines[i] = residue;
    }else{
      pageLines[i] = offsetUnit;
    }
  }
  offset = 0;
  ppNow = 1;
  showSBSubPage();
}

function showSBSubPage() {
  if(totalCount>0) {
    var linesData = "<table border='0'>";
    offsetNext = offset + offsetUnit;
    for(var i=offset; i<offsetNext; i++) {
      var title  = bibGot[i][ 4];
      var author = bibGot[i][ 5];
      var publ   = bibGot[i][ 8];
      var pubdt  = bibGot[i][ 9];
      var phys   = bibGot[i][10];
      var ptbl   = bibGot[i][11];
      linesData += "<tr><td>" + (i+1) + "</td>";
      linesData += "<td><a href=\"javascript:showSelectedSingleBib("+i+");\">";
      linesData += "<span style='font-weight:bold'>" + title + "</span>";
      if(author!="") linesData += " / " + author;
      if(publ!="")   linesData += ". -- " + publ;
      if(pubdt!="")  linesData += ", " + pubdt;
      if(phys!="")   linesData += ". -- " + phys;
      if(ptbl!="")   linesData += " -- (" + ptbl + ") ";
      linesData += "</a></td></tr>";
      if(i==(totalCount-1)) break;
    }
    linesData += "</table></br>";
    $('sblp_lines').innerHTML = linesData;

    var sblpPgCon = document.getElementById("sblp_pgcon");
    sblpPgCon.innerHTML = "";
    sblpPgCon.style.textAlign = "center";
    for(var pp=1; pp<totalPages+1; pp++) {
      if(Math.ceil(offset/offsetUnit)==(pp-1)) {
        var aspan = document.createElement("span");
        aspan.style.color = "red";
        aspan.style.fontWeight = "bold";
        aspan.appendChild(document.createTextNode(pp));
        sblpPgCon.appendChild(aspan);
      }else{
        var alink = document.createElement("a");
        alink.setAttribute("href","javascript:changeSBSubPage("+pp+");");
        var aspan = document.createElement("span");
        aspan.style.color = "maroon";
        aspan.appendChild(document.createTextNode(pp));
        alink.appendChild(aspan);
        sblpPgCon.appendChild(alink);
      }
    }

    var sblpNrs = document.getElementById("sblp_nrs");
    var text3 = "<span style=\"text-align:center\">検索結果　件数 = " + rows + "件; 　ページ数 = " + totalPages + "ページ</span>";
    sblpNrs.innerHTML = text3;
  }else{
    $('sblp_lines').innerHTML = "";
    $('sblp_pgcon').innerHTML = "";
    var sblpNrs = document.getElementById("sblp_nrs");
    var text3 = "<span style=\"text-align:center\">検索結果　件数 = " + rows + "件; 　ページ数 = " + totalPages + "ページ</span>";
    sblpNrs.innerHTML = text3;
  }
}

function changeSBSubPage(pp) {
  ppNow = pp;
  offset = offsetUnit * (pp-1);
  showSBSubPage();
}

function showSelectedSingleBib(i) {
  $('an_sblp_line').style.fontSize = "small";
  $('an_ssb').style.fontSize = "small";

  sbNow = i;
  var id        = bibGot[i][ 0];
  var f_or_c    = bibGot[i][ 1];
  var bib_id    = bibGot[i][ 2];
  var has_vol   = bibGot[i][ 3];
  var title     = bibGot[i][ 4];
  var author    = bibGot[i][ 5];
  var ed        = bibGot[i][ 6];
  var pubp      = bibGot[i][ 7];
  var publ      = bibGot[i][ 8];
  var pubdt     = bibGot[i][ 9];
  var phys      = bibGot[i][10];
  var ptbl      = bibGot[i][11];
  var ptblt     = bibGot[i][12];
  var ptbln     = bibGot[i][13];
  var cw        = bibGot[i][14];
  var note      = bibGot[i][15];
  var summary   = bibGot[i][16];
  var vollist   = bibGot[i][17];
  var ttlhdng   = bibGot[i][18];
  var al        = bibGot[i][19];
  var sh1       = bibGot[i][20];
  var sh2       = bibGot[i][21];
  var cls_ndc9  = bibGot[i][22];
  var cls_site  = bibGot[i][23];
  var cls_local = bibGot[i][24];

  var bibDigest = "<br /><b>" + (i+1) + "</b> ";
  bibDigest += title;
  if(author!="") bibDigest += " / " + author;
  if(publ!="")   bibDigest += ". -- " + publ;
  if(pubdt!="")  bibDigest += ", " + pubdt;
  if(phys!="")   bibDigest += ". -- " + phys;
  if(ptbl!="")   bibDigest += " -- (" + ptbl + ") ";
  $('an_sblp_line').innerHTML = bibDigest;

  var singleBib = "<br /><table class='tb1'>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>id</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + id + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>完結or継続</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + f_or_c + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>書誌id</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + bib_id + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>巻号有無 (0-1) </td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + has_vol + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>タイトル</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + title + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>責任表示</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + author + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>版表示</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + ed + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>出版事項</td>";
  var pub = "";
  if(pubp=="") {
    if(publ=="") {
      if(pubdt=="") { pub = ""; }
      else          { pub = "[ ] : [ ], " + pubdt; }
    }else{
      if(pubdt=="") { pub = "[ ] : " + publ + ", [ ]"; }
      else          { pub = "[ ] : " + publ + ", " + pubdt; }
    }
  }else{
    if(publ=="") {
      if(pubdt=="") { pub = pubp + " : " + "[ ], [ ]"; }
      else          { pub = pubp + " : " + "[ ], " + pubdt; }
    }else{
      if(pubdt=="") { pub = pubp + " : [ ], " + pubdt; }
      else          { pub = pubp + " : " + publ + ", " + pubdt; }
    }
  }
  singleBib += "<td class='rightitemcontent1 td1b'>" + pub + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>形態事項</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + phys + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>シリーズ</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + ptbl + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>内容著作注記　</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + cw + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>注記</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + note + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>要約</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + summary + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>刊行済巻号</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + vollist + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>タイトル標目</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + ttlhdng + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>著者標目</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + al + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>件名1</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + sh1 + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>件名2</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + sh2 + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>分類(NDC9)</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + cls_ndc9 + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>(遺跡所在地)　</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + cls_site + "</td></tr>";
  singleBib += "<tr class='tr1'><td class='leftitemname2 td1'>(資料区分)　</td>";
  singleBib += "<td class='rightitemcontent1 td1b'>" + cls_local + "</td></tr>";
  singleBib += "</table></br /><br />";

  singleBib += "<input type=\"button\" id=\"ssb_prev\" value=\"前\" onclick=\"ssbPrevClicked(" + (i-1) + ");\">";
  singleBib += "<span> 第 " + (i+1) + " 件 </span>";
  singleBib += "<input type=\"button\" id=\"ssb_next\" value=\"次\" onclick=\"ssbNextClicked(" + (i+1) + ");\">";
  singleBib += "<span>　　(現在" + (Math.ceil(offset/offsetUnit)+1) + "ページ [" + (offset+1) + "から" + offsetNext + "まで] ) <span>";
  singleBib += "<br /><br />";

  $('an_ssb').innerHTML = singleBib;

  if(has_vol==0 || has_vol =='') { 
    if($('ssbpVolList').disabled != true)  $('ssbpVolList').disabled = true;
    if($('ssbpCopList').disabled != false) $('ssbpCopList').disabled = false;
  }else{
    if($('ssbpVolList').disabled != false) $('ssbpVolList').disabled = false;
    if($('ssbpCopList').disabled != true) $('ssbpCopList').disabled = true;
  }

  changeVisiblePanel('searched_single_bib_panel');
}

function ssbpChangeToSbp() {
  changeVisiblePanel('search_bib_panel');
}

function ssbpChangeToSblp() {
  changeVisiblePanel('searched_bib_lines_panel');
}

function ssbPrevClicked(p) {
  if(p<offset) {
    $('ssb_prev').style.display = "none";
    $('ssb_next').style.display = "block";
  }else{
    showSelectedSingleBib(p);
  }
}

function ssbNextClicked(n) {
  if(n>=offsetNext || n >= totalCount) {
    $('ssb_prev').style.display = "block";
    $('ssb_next').style.display = "none";
  }else{
    showSelectedSingleBib(n);
  }
}

