
function comments() {
    arts = document.getElementsByClassName("comment_location");
    new Ajax.Request(
         '/comments/comment/xlist?list='+arts.pluck('id').join(",") ,
        {method: 'post',  onComplete: comments_response}
    );

}

var allcomments
var story


function comments_response( request ) {
    allcomments = new Object();
    story = new Object();
    resp = request.responseText;
    json = resp.substring(resp.indexOf('['),resp.lastIndexOf(']')+1);
    allcomments = eval( json );

    allcomments.each( function( comment ){
        if ( ! story[ comment.key ] )
           story[ comment.key ] = 1;
        else
           story[ comment.key ] ++;
    });

    name=null;
    c = getCookie( 'comment-stuff' );
    if ( c != null ){
            x = c.split("\$");
            name = x[0];
    }

    arts = document.getElementsByClassName("comment_location");
    arts.pluck("id").each( function x(id){ 
         showComments(id, name);
    });
}

function mk2(dig) {
  if (dig<10)
     return "0"+dig;
  return dig;
}

function mkHour(dig) {
  if (dig>12)
     return dig-11;
  return dig;
}

function showComments(key){
        art = $( key );
        if (typeof(story[key])=="undefined"  || story[key] == 0 ) {
            Element.update(art, "<span id='ac"+key+"'><a class='addcomment' href=\"javascript:addComment('"+key+"')\"><span><small>Add Comment</small></a></span>" );
            return;
       }
       s="s";
       if (story[key] == 1 )
          s="";
       cdoc="<table class='tcomment' ><tr><td><font color=gray>Comments</font>";
//       cdoc += "<span id='ro"+key+"' >";
       allcomments.each(function(comment){
            if( comment.key != key )
                return "";
            cdoc += "<tr><td>";
            cdoc += render(comment, name);
        });
       cdoc += "<tr><td><span id='ac"+key+"'><a class='addcomment' href=\"javascript:addComment('"+key+"')\"><small>Add Comment</small></a></span>";
       cdoc += "</table>";
       Element.update( art , cdoc);
}

function render( comment, name ){
            d = comment.creation
            ds = "now"
            if (d){
	            ds = mkHour(d.getHours())+":"+mk2(d.getMinutes());
	           if ( d.getHours()>12 )
	              ds+="pm";
	           else
	              ds+="am";
	           ds += " "+ (d.getMonth()+1)+"/"+d.getDate()+"/"+d.getFullYear();
            }
            var cdoc = "<span class='comment'>"+comment.name+" <font color=gray>says:</font> "+comment.comment+" <font color=gray>("+ds+")</font>";
            if ( name != null && (name == comment.name) ){
                cdoc += " <a href='#' onClick='deleteComment(this,"+comment.id+");return false'>Delete</a>";
            }
            return  cdoc + "</span>";
}

function deleteComment(driver, id){
    Element.replace(driver,"<b>Working...</b>");
    var myAjax = new Ajax.Request(
        '/comments/comment/delete/'+id,
        {method: 'post',  onComplete: comments });
    return false;
}

function addComment(key){
        e = $( 'ac'+key );
        c = getCookie( 'comment-stuff' );
        name="";
        email="";
        if ( c != null ){
            x = c.split("\$");
            name = x[0];
            email = x[1];
        }
        Element.update( $('ac' + key) ,
            "<SPAN class='comment_location' id='newSample"+key+"'></SPAN>"+
            "<form onsubmit='javascript: processAddedComment(this);return false;'>"+
            " Name: <input id='name-"+key+"' name=name type=text lenght=20 value='"+name+
            "' onKeyUp='updateSample( \""+key+"\")'>"+
            "<input name=key type=hidden value='"+key+"'>"+
            " email: <input name=email type=text lenght=20 value='"+email+"'> (email used to provide updates)<br>"+
            " <textarea id='ta-"+key+"' name=comment cols=80 rows=3 onKeyUp='updateSample(\""+key+"\")'></textarea><br>"+
            " <input name=save type=submit value='Save Comment'> "+
            " <INPUT name=cancel TYPE='button' Value='Cancel' onClick='showComments(\""+key+"\")' >"+
            "</form>");
       if ( name == "" )
         $( 'name-'+key ).focus();
       else
         $( 'ta-'+key ).focus();

}

function updateSample( key ){
    var freshcomment = new Object();
    freshcomment.submited = new Date().toString();
    freshcomment.name = $( 'name-'+key ).value;
    freshcomment.comment = scrubComment( $( 'ta-'+key ).value );
    Element.update( "newSample"+key , render( freshcomment ));
}
    
function scrubComment(c){
    c = c.replace( /&/g, "&amp;" );
    c = c.replace( /</g, "&lt;" );
    c = c.replace( />/g, "&gt;" );
    c = c.replace( /\r/g, " " );
    c = c.replace( /\n/g, " " );
    return c;
}

function processAddedComment(ev){
    
    h = {};
    h = argy(h, ev, 'key');
    h = argy(h, ev, 'name');
    h = argy(h, ev, 'email');
    h = argy(h, ev, 'comment', scrubComment( ev.comment.value ));
    h = $H(h);
    setCookie( 'comment-stuff', ev.name.value + "$"+ ev.email.value);
    var myAjax = new Ajax.Request(
        '/comments/comment/save?'+h.toQueryString(),
        {method: 'get',  onComplete: comments });
    return false;
}

function argy( h, ev, name, value ) {
    if ( typeof(value)=="undefined")
        value = ev[name].value;
    h[name] = value;
    ev[name].disabled = true;
    return h;
}
  


//   http://www.w3schools.com/js/js_cookies.asp 
function getCookie(c_name)
{
  if (document.cookie.length<=0)
      return null;

  c_start=document.cookie.indexOf(c_name + "=")
  if (c_start==-1)
        return null 

  c_start=c_start + c_name.length+1 
  c_end=document.cookie.indexOf(";",c_start)
  if (c_end==-1) c_end=document.cookie.length
  return unescape(document.cookie.substring(c_start,c_end))
}

function setCookie(c_name,value)
{
    var exdate=new Date()
    exdate.setDate(365)
    document.cookie=c_name+ "=" +escape(value)+";expires="+exdate;
}

