var currentpage=0;

function findMyPos(obj) {
  if (!obj) return 0;
  var top=0;
  if (obj.offsetParent) {
    while (1) {
      top=top+obj.offsetTop;
      if (!obj.offsetParent) break;
      obj=obj.offsetParent;
    }
  } else if (obj.y) {
    top=top+obj.y;
  }
  return top;
}
function initmedia() {
  var td=document.getElementsByTagName("td");
  for (var i=0; i<td.length; i++) {
    if (td[i].className=="media") {
      td[i].onmouseover=function() { this.style.backgroundPosition="right"; }
      td[i].onmouseout=function() { this.style.backgroundPosition="left"; }
      var img=td[i].getElementsByTagName("img");
      if (img.length>0) {
        img[0].onmouseover=function() {  }
        img[0].onmouseout=function() {  }
      }
    }
  }
  var span=document.getElementsByTagName("span");
  for (var i=0; i<span.length; i++) {
    if (span[i].className=="pagenav") {
      span[i].onmouseover=function() { this.style.color="#ffa000"; }
      span[i].onmouseout=function() { this.style.color="#ffffff"; }
    }
  }
  var div=document.getElementsByTagName("div");
  for (var i=0; i<div.length; i++) {
    if (div[i].className=="relatedvideo") {
      div[i].onmouseover=function() { this.style.backgroundPosition="top right"; }
      div[i].onmouseout=function() { this.style.backgroundPosition="top left"; }
    }
  }
}
function makepagination(xml) {
  var pages=xml.getElementsByTagName("page");
  var current=parseInt(getText(xml.getElementsByTagName("current").item(0)));
  var html;
  if (current<2) {
    html="<span class=nonav>&laquo; Previous Page</span>\n";
  } else {
    html="<span onclick=\"loadmedia("+(current-1)+",0)\" class=pagenav>&laquo; Previous Page</span>\n";
  }
/*
  for (var i=0; i<pages.length; i++) {
    var page=pages.item(i);
    var pageno=parseInt(page.getAttribute("number"));
    var pagename=getText(page);
    if (page.getAttribute("selected")&&page.getAttribute("selected")=="yes") {
      html=html+"<span class=thisnav>"+pagename+"</span>\n";
    } else {
      html=html+"<span onclick=\"loadmedia("+pageno+",0)\" class=pagenav>"+pagename+"</span>\n";
    }
  }
*/
  var drop="";
  for (var i=0; i<pages.length; i++) {   
    var page=pages.item(i);
    var pageno=parseInt(page.getAttribute("number"));
    var pagename=getText(page);
    if (page.getAttribute("selected")&&page.getAttribute("selected")=="yes") {
      html=html+"<span onclick=\"dropdown()\" class=thisnav>Page "+(i+1)+" of "+pages.length+"<img src=\"/img/darr.gif\" width=14 height=9 /></span>\n";
    }
    drop=drop+"<div class=dropnav onmouseover=\"this.style.background='#f0a000';this.style.color='#000000'\" onmouseout=\"this.style.background='#000000';this.style.color='#ffffff'\" onclick=\"loadmedia("+pageno+",0)\">"+pagename+"</div>\n";
  }
  html=html+"<div id=pageselect>"+drop+"</div>";
  if (current==pages.length) {
    html=html+"<span class=nonav>Next Page &raquo;</span>\n";
  } else {
    html=html+"<span onclick=\"loadmedia("+(current+1)+",0)\" class=pagenav>Next Page &raquo;</span>\n";
  }
  var obj=document.getElementById("squery");
  var query="";
  if (obj) query=obj.value;
  html=html+"&nbsp;&nbsp;<span class=sbox><input type=text name=\"squery\" value=\""+query+"\" id=squery>&nbsp;<button onclick=\"loadmedia(1)\">Search Photos</button></span>";
  return html;
}
var dropvisible=false;
function dropdown() {
  var g=document.getElementById("pageselect");
  if (!dropvisible) {
    dropvisible=true;
    g.style.display="block";
    g.style.visibility="visible";
  } else {
    dropvisible=false;
    g.style.display="none";
    g.style.visibility="hidden";
  }
}
function loadmedia(page) {
  var identifier=window.location.href;
  if (identifier.indexOf("?")!=-1&&identifier.indexOf("page=")==-1&&identifier.indexOf("user=")==-1) {
    identifier=identifier.substring(identifier.indexOf("?")+1);
    var fp=0;
    if (identifier.indexOf("&")!=-1) {
      fp=identifier.substring(identifier.indexOf("&")+1);
      fp=parseInt(identifier.substring(identifier.indexOf("=")+1));
      identifier=identifier.substring(0,identifier.indexOf("&"));
    }
    var xml=rpcget("/corephoto?service=photo&site=12&identifier="+identifier);
    var url=getText(xml.getElementsByTagName("media").item(0));
    var width=getText(xml.getElementsByTagName("width").item(0));
    var height=getText(xml.getElementsByTagName("height").item(0));
    var title=getText(xml.getElementsByTagName("title").item(0));
    var description=getText(xml.getElementsByTagName("description").item(0));
    var tags=getText(xml.getElementsByTagName("tags").item(0));
    var views=getText(xml.getElementsByTagName("views").item(0));
    var rating=getText(xml.getElementsByTagName("rating").item(0));
    var votes=parseInt(getText(xml.getElementsByTagName("votes").item(0)));
    var table=document.getElementById("medialist");
    var tr=table.insertRow(-1);
    var td=tr.insertCell(-1);
    var img=document.createElement("img");
    img.src=url;
    img.style.marginBottom=3;
    td.appendChild(img);
    var br=document.createElement("br");
    td.appendChild(br);
    var span=document.createElement("span");
    span.innerHTML="<img src=\"/img/viewnewwindow.gif\" width=14 height=10>Click to View Original ("+width+"x"+height+")";
    span.className="vieworiginal";
    span.onclick=function() {
      var w=window.open("/corephoto?service=original&siteid=1&identifier="+identifier,identifier,"width="+(parseInt(width)-4)+",height="+(parseInt(height)-4));
    }
    td.appendChild(span);
    var tr=table.insertRow(-1);
    var td=tr.insertCell(-1);
    var xml=rpcget("/corephoto?service=related&site=12&identifier="+identifier);
    var photo=xml.getElementsByTagName("photo");
    if (photo.length>0) {
      var div=document.createElement("div");
      div.className="related";
      div.innerHTML="View Related Photos";
      td.appendChild(div);
    }
    for (var i=0; i<photo.length; i++) {
      var p=photo.item(i);
      var id=p.getAttribute("id");
      var title=p.getAttribute("title");
      var thumb=getText(p);
      var img=document.createElement("img");
      img.className="related";
      img.src=thumb;
      img.alt=title;
      img.width=90;
      img.height=60;
      img.style.marginRight=8;
      img.setAttribute("identifier",id);
      img.onclick=function() { window.location.href='/photo.html?'+this.getAttribute("identifier"); }
      td.appendChild(img);
    }

    var div=document.getElementById("pagination");
    var url="/photo.html";
    if (fp) url="/photo.html?page="+fp;
    div.innerHTML="<span onclick=\"window.location.href='"+url+"'\" class=pagenav>&laquo; Back to Photos</span>";
    var tr=table.insertRow(-1);
    var td=tr.insertCell(-1);
    td.id="videopagedetails";
    td.style.width=750;
    var html="<b>"+title+"</b>\n";
    html=html+"<br>"+description+"<br>\n";
    html=html+"<div class=tags>Tags: <i>"+tags+"</i></div>\n";
    html=html+"<b>Rating</b> <i id=votescaption>(with "+votes+" vote";
    if (votes!=1) { html=html+"s"; }
    html=html+")</i>: ";
    if (rating>0) {
      html=html+"<h4 id=ratingcaption>"+rating+"</h4> <img src=\"/bin/bigmeter/"+rating+"\" width=79 height=19 id=ratingmeter><br>\n";
    } else {
      html=html+"<h4 id=ratingcaption></h4> <img src=\"/img/bigmeterblank.gif\" width=79 height=19 id=ratingmeter><br>\n";
    }
    html=html+"Rate this photo:\n";
    for (var i=1; i<11; i++) {
      html=html+"<p><input type=radio id=rating"+i+" name=\"rating\" onclick=\"ratephoto('"+identifier+"',"+i+")\">";
      html=html+"<label for=rating"+i+">"+i+"</label></p>\n";
    }
    html=html+"<br><p><input type=checkbox id=cbnext checked> <label for=cbnext>Go to next photo when done rating</label> | ";
    html=html+"<span style=\"font: bold 10px Verdana; cursor: pointer; color: #f0a000; border-bottom: 1px solid #f0a000\" onclick=\"window.location.href='/corephoto?site=12&service=next&identifier="+identifier+"'\">Go to Next Photo Now &raquo;</span></p>\n";
    if (coreuserid) {
      html=html+"<br><br><img src=\"/img/ptool_favorite.gif\" width=13 height=9 />\n";
      html=html+"<span onclick=\"addtofavorites(2,'Photo: "+title+"','"+portalurl+"/photo.html?"+identifier+"')\"  class=addtofavorites>Add this Photo to Favorites</span>\n";
    }
    var comments="<div class=comments>";
    comments=comments+"<b>Comments:</b>\n";
    if (!coreuserid) {
      comments=comments+"<span onclick=\"window.location.href='"+portalurl+"/register.html?target="+portalurl+"/photo.html?"+identifier+"'\">Leave a Comment</span><br>\n";
    } else {
      comments=comments+"<span onclick=\"leavecomment(this,'"+identifier+"')\">Leave a Comment</span><br>\n";
    }
    comments=comments+"<div id=commentlist>\n";
    var xml=rpcget("/corephoto?service=comments&site=12&identifier="+identifier);
    var c=xml.getElementsByTagName("comment");
    if (c.length<1) {
      comments=comments+"<i>There are no comments for this photo.</i>";
    } else {
      for (var i=0; i<c.length; i++) {
        var user=c.item(i).getAttribute("by");
        var date=c.item(i).getAttribute("date");
        var text=getText(c.item(i));
        var cm=makecomment(user,date,text);
        comments=comments+cm;
      }
    }
    comments=comments+"</div></div>";
    td.innerHTML=html+comments;
    initmedia();
    return;
  }
  var username="";
  if (identifier.indexOf("user=")!=-1) {
    username=identifier.substring(identifier.indexOf("user=")+5);
    if (username.indexOf("&")!=-1) { username=username.substring(0,username.indexOf("&")); }
  }
  if (identifier.indexOf("page=")!=-1&&!page) {
    var fp=identifier.substring(identifier.indexOf("page=")+5);
    if (fp.length>0) page=parseInt(fp);
  }
  if (!page) { page=1; }
  currentpage=page;
  var url="/corephoto?service=gallery&site=12&page="+page;
  if (username&&username.length>0) {
    url="/corephoto?service=user&site=12&page="+page+"&username="+username;
  }
// searching
  var obj=document.getElementById("squery");
  var query;
  if (obj) query=obj.value;
  if (query&&query.length>1) {
    url="/corephoto?service=search&site=12&query="+query+"&site=12&page="+page;
  }

  var xml=rpcget(url);
  var media=xml.getElementsByTagName("media");
  var table=document.getElementById("medialist");
  if (media.length>0) clearChildren(table);
  var tr;
  var cnt=0;
  for (var i=0; i<media.length; i++) {
    var item=media.item(i);
    if (item.getAttribute("type")=="jpg") {
      var root=item.getAttribute("root");
      var identifier=item.getAttribute("identifier");
      var title=getText(item.getElementsByTagName("title").item(0));
      var image=item.getElementsByTagName("image").item(0);
      var imageurl=getText(image);
      var width=image.getAttribute("width");
      var owner=getText(item.getElementsByTagName("owner").item(0));
      var views=parseInt(getText(item.getElementsByTagName("views").item(0)));
      var rating=getText(item.getElementsByTagName("rating").item(0));
      var metadata=item.getElementsByTagName("metadata").item(0);
      var dimensions=metadata.getAttribute("width")+"x"+metadata.getAttribute("height");
      var manage=item.getElementsByTagName("manage");
      if (cnt==0) {
        tr=table.insertRow(-1);
      }
      cnt++; if (cnt>3) { cnt=0; }
      td=tr.insertCell(-1);
      td.className="media";
      var html="<a href=\""+root+"?"+identifier+"&fp="+currentpage+"\" onfocus=\"blur()\">";
      html=html+"<img src=\""+imageurl+"\" width="+width+" class=video /></a>\n";
      html=html+"<div>\n<h3 title=\""+title+"\">"+title+"</h3>\n";
      html=html+"Image: "+dimensions+"<br>\n";
      html=html+"Uploaded by: <a href=\"/photo.html?user="+owner+"\" title=\""+owner+"\">"+owner+"</a><br>\n";
      html=html+"Views: "+views+"<br>\n";
      if (rating=="0") {
        html=html+"Rating: <b>None</b>";
      } else {
        html=html+"Rating: <b>"+rating+"</b> <img src=\"/bin/meter/"+rating+"\" width=59 height=7 />";
      }
      if (manage&&manage.length>0) {
        html=html+"<br><button onclick=\"window.location.href='/managephoto.html?"+identifier+"'\">Manage or Delete Photo</button><br>\n</div>";
      } else {
        html=html+"<br>\n</div>";
      }
      td.innerHTML=html;
    }
  }
  var pagination=makepagination(xml);
  if (manage&&manage.length>0) {
    html="<span onclick=\"window.location.href='/photo.html'\" class=pagenav>&laquo; Back to Photos Home</span>\n";
    pagination=html+pagination;
  }
  var div=document.getElementById("pagination");
  div.innerHTML=pagination;
  initmedia();
  inithtmlelements();
}
function ratephoto(id,rating) {
  var radio=document.getElementsByTagName("input");
  for (var i=0; i<radio.length; i++) {
    if (radio[i].type=="radio") {
      radio[i].disabled="true";
    }
  }
  var cbnext=document.getElementById("cbnext").checked;
  var xml=rpcget("/corephoto?service=rate&site=12&identifier="+id+"&rating="+rating);
  var rating=getText(xml.getElementsByTagName("rating").item(0));
  var votes=parseInt(getText(xml.getElementsByTagName("votes").item(0)));
  document.getElementById("ratingcaption").innerHTML=rating;
  var str="(with "+votes+" vote";
  if (votes!=1) { str=str+"s"; }
  str=str+")";
  document.getElementById("votescaption").innerHTML=str;
  document.getElementById("ratingmeter").src="/bin/bigmeter/"+rating;
  if (cbnext) {
    window.location.href="/corephoto?site=12&service=next&identifier="+id;
  }
}
function makecomment(user,date,text) {
  var html="<div class=commentheader>From: <b>"+user+"</b> on "+date+"</div>\n";
  html=html+"<div class=commentbody>"+text+"</div>\n";
  return html;
}
function leavecomment(sender,id) {
  var y=findMyPos(sender)+15;
  var obj=document.getElementById("makecomment");
  if (obj) return;
  var div=document.createElement("div");
  div.id="makecomment";
  div.style.position="absolute";
  div.style.background="#000000";
  div.style.border="1px solid #505050";
  div.style.padding=4;
  div.style.width=250;
  div.style.height=150;
  div.style.left=85;
  div.style.top=y;
  var textarea=document.createElement("textarea");
  textarea.id="comment";
  textarea.style.width=242;
  textarea.style.height=120;
  textarea.style.font="10px Verdana, Tahoma, Sans-serif";
  textarea.style.border="none";
  textarea.style.padding="2px";
  textarea.style.overflow="hidden";
  textarea.setAttribute("identifier",id);
  div.appendChild(textarea);
  var br=document.createElement("br");
  div.appendChild(br);
  var cancel=document.createElement("p");
  cancel.style.display="inline";
  cancel.style.padding=0;
  cancel.style.margin="2 52 0 0";
  cancel.style.borderBottom="1px solid #f0a000";
  cancel.style.float="left";
  cancel.style.font="bold 10px Verdana, Tahoma, Sans-serif";
  cancel.style.cursor="pointer";
  cancel.style.color="#f0a000";
  cancel.innerHTML="Cancel";
  cancel.onclick=function() {
    var obj=document.getElementById("makecomment");
    if (!obj) return;
    while (obj.hasChildNodes()) { obj.removeChild(obj.lastChild); }
    obj.parentNode.removeChild(obj);
  }
  var submit=document.createElement("p"); 
  submit.style.display="inline";
  submit.style.padding=0;
  submit.style.margin="2 0 0 53";
  submit.style.borderBottom="1px solid #f0a000";
  submit.style.float="right";
  submit.style.font="bold 10px Verdana, Tahoma, Sans-serif";
  submit.style.cursor="pointer";
  submit.style.color="#f0a000";
  submit.innerHTML="Submit Comment";
  submit.onclick=function() {
    var textarea=document.getElementById("comment");
    if (!textarea) return;
    var comment=textarea.value;
    if (!comment||comment.length<1) return;
    textarea.style.background="#e0e0e0";
    textarea.style.color="#707070";
    var id=textarea.getAttribute("identifier");
    var xml=rpcget("/corephoto?service=addcomment&site=12&identifier="+id+"&comment="+comment);
    var c=xml.getElementsByTagName("newcomment").item(0);
    if (!c) return;
    var user=c.getAttribute("by");
    var date=c.getAttribute("date");
    var text=getText(c);
    var cm=makecomment(user,date,text);
    var commentlist=document.getElementById("commentlist");
    var html;
    if (commentlist.innerHTML.indexOf("There are no comments")>-1) {
      html=cm;
    } else {
      html=cm+commentlist.innerHTML;
    }
    commentlist.innerHTML=html;
    var obj=document.getElementById("makecomment");
    if (!obj) return;
    while (obj.hasChildNodes()) { obj.removeChild(obj.lastChild); }
    obj.parentNode.removeChild(obj);
  }
  div.appendChild(cancel);
  div.appendChild(submit);
  document.body.appendChild(div);
  var obj=document.getElementById("comment");
  obj.focus();
}
