function toggleVisibility(id)
{
  if (document.getElementById(id).style.display == "block")
  {
    document.getElementById(id).style.display = "none";
    itemvisible = false;
  }
  else
  {
    document.getElementById(id).style.display = "block";
    itemvisible = true;
  }

  return itemvisible;
}

function setVisibility(id, visible)
{
  if (document.getElementById(id))
  {
    document.getElementById(id).style.display = (visible ? "block" : "none");
  }
}

function clearContent(id)
{
  if (document.getElementById(id))
  {
    document.getElementById(id).value = "";
  }
}

function setFocus(id)
{
  document.getElementById(id).focus();
}

function addComment(blogid)
{
  setVisibility("DivCommentList"+blogid, true);
  setVisibility("comment"+blogid, true);
  setVisibility("commentlink"+blogid, false);
  clearContent("commentname"+blogid);
  clearContent("commenturl"+blogid);
  clearContent("commentemail"+blogid);
  clearContent("commenttext"+blogid);
  setFocus("commentname"+blogid);
}

function getNode(node,tag)
{
  if (node.getElementsByTagName(tag)[0].childNodes[0])
  {
    return node.getElementsByTagName(tag)[0].childNodes[0].nodeValue;
  }

  return "";
}

function fetchComments(blogid)
{
  xmlHttp = getXmlHttp();

  setVisibility("DivCommentList"+blogid, true);
  setVisibility("comment"+blogid, false);

  xmlHttp.onreadystatechange = function()
  {
    if (xmlHttp.readyState == 4)
    {
      var xmldoc = xmlHttp.responseXML;
      var commentlist = xmldoc.getElementsByTagName('commentlist').item(0);
      var rows = commentlist.getAttribute('rows');
      var blog_comments = (rows == 0 ? "add comment" : (rows  == 1 ? "1 comment" : rows + " comments"));

      document.getElementById("commentcount"+blogid).innerText = blog_comments;
      document.getElementById("DivCommentContent"+blogid).innerHTML = "";

      for (var iEntry=0; iEntry<commentlist.childNodes.length; iEntry++)
      {
        var entry = commentlist.childNodes.item(iEntry);

        var comment_id = getNode(entry,"id");
        var comment_name = getNode(entry,"name");
        var comment_url = getNode(entry,"url");
        var comment_content = getNode(entry,"content");
        var comment_stamp = getNode(entry,"posttime");

        var comment_person = (comment_url == "" ? comment_name : "<a href='"+comment_url+"'>"+comment_name+"</a>");

        document.getElementById("DivCommentContent"+blogid).innerHTML +=
          "<br/><div class='plain'>"+comment_content+"</div>"+
          "<div class='commentline'>"+
          "  <span style='color: #7f7f7f; font-family: Century Gothic; font-size: 7pt;'>Posted on "+comment_stamp+" by "+comment_person+"</span>"+
          "</div>";
      }
    }
  }

  xmlHttp.open("GET", "/blogs/blogdb.php?x=c&i="+blogid, true);
  xmlHttp.send(null);
}

function postComment(blogid)
{
  var comment_name = document.getElementById("commentname"+blogid).value;
  var comment_url = document.getElementById("commenturl"+blogid).value;
  var comment_email = document.getElementById("commentemail"+blogid).value;
  var comment_content = document.getElementById("commenttext"+blogid).value;

  var submitstr = "x=a&i="+blogid+"&n="+escape(comment_name)+"&u="+escape(comment_url)+"&e="+escape(comment_email)+"&t="+escape(comment_content);

  xmlHttp = getXmlHttp();
  xmlHttp.onreadystatechange = function()
  {
    if (xmlHttp.readyState == 4)
    {
      fetchComments(blogid);
    }
  }

  xmlHttp.open("POST", "/blogs/blogdb.php", true);
  xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
  xmlHttp.send(submitstr);
}

function fetchBlog(start, count, month, id, dir)
{
  var monthparam = "";
  var idparam = "";
  var rev = (dir == -1 ? "&r=1" : "");
  xmlHttp = getXmlHttp();

  if (month > 0)
  {
    monthparam = "&m="+month;
  }

  if (id != -1)
  {
    idparam = "&i="+id;
  }

  xmlHttp.onreadystatechange = function()
  {
    if (xmlHttp.readyState == 4)
    {
      var xmldoc = xmlHttp.responseXML;
      var bloglist = xmldoc.getElementsByTagName('list').item(0);
      var rows = bloglist.getAttribute('rows');

      for (var iEntry=0; iEntry<bloglist.childNodes.length; iEntry++)
      {
        var entry = bloglist.childNodes.item(iEntry);
        var blog_id = getNode(entry, "id");
        var blog_title = getNode(entry, "title");
        var blog_content = getNode(entry, "content");
        var blog_stamp = getNode(entry, "timestamp");
        var blog_commentcount = getNode(entry, "commentcount");
        var blog_comments = (blog_commentcount == 0 ? "add comment" : (blog_commentcount == 1 ? "1 comment" : blog_commentcount+" comments"));
        var blog_href = "javascript:addComment("+blog_id+");";

        if (blog_commentcount > 0)
        {
          blog_href = "javascript:fetchComments("+blog_id+");";
        }
        
        document.getElementById("DivBlogList").innerHTML +=
          "<p><span style='font-family:Century Gothic; font-weight:bold;'>"+blog_title+"</span></p>"+
          "<p><span style='color:black; font-family:Century Gothic; font-size:10pt;'>"+blog_content+"</span></p>"+
          "<div style='width:300px; font-size:10pt; font-family:Tw Cen MT; border-top:solid 1px gainsboro;'>"+
          "<span style='color: #7f7f7f; font-family: Century Gothic; font-size: 7pt;'>Posted on "+blog_stamp+" "+
          "[<a id='commentcount"+blog_id+"' href='"+blog_href+"'>"+blog_comments+"</a>]"+
          "</span></div>"+
          "<div id='DivCommentList"+blog_id+"' style='display:none;margin-left:50px;'>"+
          "  <br/>"+
          "  <div class='head1'>Comments</div>"+
          "  <div id='DivCommentContent"+blog_id+"'></div>"+
          "  <div id='commentlink"+blog_id+"'>"+
          "    <br/>"+
          "    <span style='color:black;font-family:Century Gothic;font-size:10pt;'>"+
          "      <a href='javascript:addComment("+blog_id+")'>Add Comment</a>"+
          "    </span>"+
          "  </div>"+
          "  <div id='comment"+blog_id+"' style='display:none;'>"+
          "    <br/>"+
          "      <div style='font-size: 10pt; font-family: Century Gothic; font-weight: bold;'>"+
          "        Name"+
          "      </div>"+
          "      <input id='commentname"+blog_id+"' type='text' style='width:428px;' />"+
          "      <br/><br/>"+
          "      <div style='font-size: 10pt; font-family: Century Gothic; font-weight: bold;'>"+
          "        URL"+
          "      </div>"+
          "      <input id='commenturl"+blog_id+"' type='text' style='width:428px;' />"+
          "      <br/><br/>"+
          "      <div style='font-size: 10pt; font-family: Century Gothic; font-weight: bold;'>"+
          "        Email"+
          "      </div>"+
          "      <input id='commentemail"+blog_id+"' type='text' style='width:428px;' />"+
          "      <br/><br/>"+
          "      <div style='font-size: 10pt; font-family: Century Gothic; font-weight: bold;'>"+
          "        Comment"+
          "      </div>"+
          "      <textarea id='commenttext"+blog_id+"' cols='60' rows='10' ></textarea>"+
          "      <br/><br/>"+
          "      <input type='button' name='submit"+blog_id+"' value='Submit' onclick='javascript:postComment("+blog_id+");'>"+
          "  </div>";
          "</div>";
      }
      if (start+count >= rows || id != -1)
      {
        document.getElementById("divmore").style.display = "none";
      }
      else
      {
        document.getElementById("divmore").style.display = "block";
        document.getElementById("divmore").innerHTML = "<a id='anext' href='javascript:fetchBlog("+(start+count)+","+count+","+month+",-1,"+dir+");'>More &gt;&gt;</a>";
      }
      document.body.style.cursor = 'default';
    }
  }

  document.getElementById("divmore").style.display = "block";
  document.getElementById("divmore").innerHTML = "Loading...";

  xmlHttp.open("GET", "/blogs/blogdb.php?x=b&s="+start+"&c="+count+monthparam+idparam+rev, true);
  xmlHttp.send(null);
}

function showText(id)
{
  document.getElementById("imagedesc"+id).style.visibility = "visible";
}

function hideText(id)
{
  document.getElementById("imagedesc"+id).style.visibility = "hidden";
}

function showPhotos(albumid)
{
  window.location.href="pic_index.php?aid="+albumid;
}

function showPic(pid,aid,start,recent)
{
  window.location.href="view_index.php?pid="+pid+"&aid="+aid+"&s="+start+(recent?"&n=1":"");
}

function fetchAlbums(start,count,more)
{
  xmlHttp = getXmlHttp();

  xmlHttp.onreadystatechange = function()
  {
    if (xmlHttp.readyState == 4)
    {
      var xmldoc = xmlHttp.responseXML;
      var albumlist  = xmldoc.getElementsByTagName('albumlist').item(0);
      var rows = albumlist.getAttribute('rows');
      var total = (albumlist.childNodes.length + (albumlist.childNodes.length%4 == 0 ? 0 : 4-albumlist.childNodes.length%4));
      var inner = "<table style='border-style:none;width:600px;margin-left:auto;margin-right:auto;'>";

      for (var iEntry=0; iEntry<total; iEntry++)
      {
        var shade = (iEntry%3 == 0 ? 2 : 1);

        if (iEntry % 4 == 0)
        {
          inner += "<tr>";
        }

        if (iEntry < albumlist.childNodes.length)
        {
          var entry = albumlist.childNodes.item(iEntry);

          var album_id = getNode(entry, "id");
          var album_title = getNode(entry, "title");
          var album_date = getNode(entry, "albumdate");
          var album_stamp = getNode(entry, "timestamp");
          var album_thumb = getNode(entry, "thumb")

          inner += "<td class='greysquare"+shade+"' style='background-image:url(albums/"+album_id+"/Thumbnails/"+album_thumb+");' onmouseover='javascript:showText("+album_id+");' onmouseout='javascript:hideText("+album_id+");' onmouseup='javascript:showPhotos("+album_id+");'>"+
                   "  <table id='imagedesc"+album_id+"' style='width: 100%; height: 100%; vertical-align: bottom; visibility:hidden; background-color: black; opacity: 0.5; filter: alpha(opacity=50);'>"+
                   "    <tr>"+
                   "      <td style='vertical-align:bottom'>"+
                   "      <span class='photodate'>"+album_date+"</span><br />"+
                   "      <span class='phototitle'>"+album_title+"</span>"+
                   "      </td>"+
                   "    </tr>"+
                   "  </table>"+
                   "</td>";
        }
        else
        {
          inner += "<td class='greysquare"+shade+"'>&nbsp;</td>";
        }

        if (iEntry % 4 == 3)
        {
          inner += "</tr>";
        }
      }
      inner+="</table>";
      document.getElementById("DivAlbumList").innerHTML += inner;

      if (more)
      {
        if (start+count >= rows)
        {
          document.getElementById("divmore").style.display = "none";
        }
        else
        {
          document.getElementById("divmore").style.display = "block";
          document.getElementById("divmore").innerHTML = "<a id='anext' href='javascript:fetchAlbums("+(start+count)+","+count+",true);'>More &gt;&gt;</a>";
        }
      }
    }
  }

  xmlHttp.open("GET", "/photos/photodb.php?x=b&s="+start+"&c="+count+"&r=1"+(more?"":"&n=1"), true);
  xmlHttp.send(null);
}


function fetchPhotos(albumid,start,count,recent)
{
  xmlHttp2 = getXmlHttp();

  xmlHttp2.onreadystatechange = function()
  {
    if (xmlHttp2.readyState == 4)
    {
      var xmldoc = xmlHttp2.responseXML;
      var photolist = xmldoc.getElementsByTagName('photolist').item(0);
      var rows = photolist.getAttribute('rows');
      var total = (photolist.childNodes.length + (photolist.childNodes.length%4 == 0 ? 0 : 4-photolist.childNodes.length%4));
      var inner = "<table style='border-style:none;width:600px;margin-left:auto;margin-right:auto;'>";
      for (var iEntry=0; iEntry<total; iEntry++)
      {
        if (iEntry % 4 == 0)
        {
          inner += "<tr>";
        }
        if (iEntry < photolist.childNodes.length)
        {
          var entry = photolist.childNodes.item(iEntry);

          var pic_id = getNode(entry, "id");
          var pic_stamp = getNode(entry, "posttime");
          var pic_count = getNode(entry, "viewcount");
          var pic_file = getNode(entry, "filename");
          var pic_albumid = albumid;

          if (recent == true)
          {
            pic_albumid = getNode(entry, "albumid");
          }

          inner += "<td class='blacksquare' style='background-image:url(albums/"+pic_albumid+"/Thumbnails/"+pic_file+");' onmouseover='javascript:showText("+pic_id+");' onmouseout='javascript:hideText("+pic_id+");' onmouseup='javascript:showPic("+pic_id+","+pic_albumid+","+(iEntry+start)+","+recent+");'>"+
                   "  <table id='imagedesc"+pic_id+"' style='width:100%; vertical-align:bottom; visibility:hidden; background-color:black; opacity:0.6; filter:alpha(opacity=60);'>"+
                   "    <tr>"+
                   "      <td style='vertical-align:bottom'>"+
                   "        <span class='photodate'>"+pic_count+" views</span><br />"+
                   "      </td>"+
                   "    </tr>"+
                   "  </table>"+
                   "</td>";
        }
        else
        {
          inner += "<td class='blacksquareblank'>&nbsp;</td>";
        }

        if (iEntry % 4 == 3)
        {
          inner += "</tr>";
        }
      }
      inner+="</table>";
      document.getElementById("DivPhotoList").innerHTML += inner;

      if (recent == false)
      {
        if (start+count >= rows)
        {
          document.getElementById("divmore").style.display = "none";
        }
        else
        {
          document.getElementById("divmore").style.display = "block";
          document.getElementById("divmore").innerHTML = "<a id='anext' href='javascript:fetchPhotos("+albumid+","+(start+count)+","+count+","+recent+");'>More &gt;&gt;</a>";
        }
      }
    }
  }

  params = (recent ? "&r=1" : "&aid="+albumid);

  xmlHttp2.open("GET", "/photos/photodb.php?x=p&s="+start+"&c="+count+params, true);
  xmlHttp2.send(null);
}

function loadPic(pid,aid,start,recent,full)
{
  xmlHttp3 = getXmlHttp();

  xmlHttp3.onreadystatechange = function()
  {
    if (xmlHttp3.readyState == 4)
    {
      var xmldoc = xmlHttp3.responseXML;
      var photolist = xmldoc.getElementsByTagName('photolist').item(0);
      var rows = photolist.getAttribute('rows');

      var entry = photolist.childNodes.item(0);
      var pic_id = getNode(entry,"id");
      var pic_stamp = getNode(entry,"posttime");
      var pic_count = getNode(entry,"viewcount");
      var pic_file = getNode(entry,"filename");
      var pic_desc = getNode(entry,"description");
      var pic_albumid = getNode(entry,"albumid");

      document.getElementById("Img").src = "albums/"+pic_albumid+"/Pictures/"+pic_file;
      document.getElementById("LinkIndex").href = "pic_index.php?aid="+pic_albumid;
      document.getElementById("DivDescription").innerHTML = pic_desc;
      if (start != 0)
      {
        document.getElementById("DivPrev1").style.visibility = "visible";
        document.getElementById("LinkPrev1").href = "javascript:loadPic("+pid+","+aid+","+(start-1)+","+recent+","+full+")";
      }
      else
      {
        document.getElementById("DivPrev1").style.visibility = "hidden";
      }

      if (start+1 < rows)
      {
        document.getElementById("DivNext1").style.visibility = "visible";
        document.getElementById("LinkNext1").href = "javascript:loadPic("+pid+","+aid+","+(start+1)+","+recent+","+full+")";
      }
      else
      {
        document.getElementById("DivNext1").style.visibility = "hidden";
      }
    }
  }

  xmlHttp3.open("GET", "/photos/photodb.php?x=p&desc=1&aid="+aid+"&s="+start+"&c=1"+(recent ? "&n=1" : "")+"&v=1", true);
  xmlHttp3.send(null);
}

