// Copyright (C) 2006 by Eugene Ivanov, eugene.ivanov@gmail.com
var comments = new Array();
var refresh_timer = 0;

function InitComments(){
 if (s = get_el("span_add_comment2")) s.style.display = "block";
 if (!(comments = load_comments())) return false;
 setTimeout("comments_create_table(comments)", 500);
 return true;
}

function DeInitComments(){
 if (comments) delete comments;
 return true;
}

String.prototype.parseJSON = function () {try { return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(this.replace(/"(\\.|[^"\\])*?"/g, ''))) && eval('(' + this + ')');} catch (e) { return false;}};

function CommentsRefresh(){
 clearTimeout(refresh_timer); refresh_timer = null;

 var id_page = get_el("id_page").innerHTML;
 get_el('span_add_comment').innerHTML="<font color='grey'>Обновляется...</font>";
 Ajax_RefreshComment(id_page);
 
 refresh_timer = setTimeout("CommentsRefresh()", 180000);
}

function load_comments(){
 c = new Array();

 if (dc = get_el("div_comments_in"))
 {
  if (cn = dc.childNodes)
   if (cn.length > 0)
   {
    dat_c = "";
    for (i=0; i < cn.length; i++)
     dat_c += cn.item(i).nodeValue;
   }

  s = new String(dat_c);
  s = s.parseJSON();

  c = new Array();
  for (i in s)  c[i] = s[i];

  delete s;

  dc.innerHTML = "";
 }
 return c;
}

function comments_create_table(c){
 if (!(div_tb = get_el("div_comments"))) return false;

 if (c && c.length >0)
 {
  var tt = '';
  var writestring = "";

  for (i=0; i < c.length; i++)
  {
   ii = c[i][0];

//   email = replaceString('@', ' &copy; ', c[i][3]);
/*   if (c[i][8] != "")
    ip_t = '<i>'+c[i][8]+'</i>,';
   else
    ip_t = '';
*/
   string = new Array();

   string.push('<div class="cmt" id="cmt['+ii+']"><div class="cmt_first"><div class="cmt_left">'+c[i][5]+'</div><div class="cmt_right"><b>'+c[i][4]+'</b>, <small>'+c[i][2]+', '+c[i][3]+'</small></div>&nbsp;</div><div class="cmt_cnt">'+c[i][6]+'</div></div>');

   writestring = string.join('');
   tt = tt + writestring;
   delete string;
  }

  div_tb.innerHTML = tt;
 }

 refresh_timer = setTimeout("CommentsRefresh()", 180000);
 return true;
}

function submit_AddComment(){
 var name = get_el("add_comment_name").value;
 var email = get_el("add_comment_email").value;
 var subject = get_el("add_comment_subject").value;
 var text = get_el("add_comment_text").value;
 var id_page = get_el("id_page").innerHTML;

 get_el("button_submit").disabled = true;
 get_el('div_add_comment').className='dn';
 get_el('span_add_comment').innerHTML="<font color='grey'>Подождите, комментарий добавляется...</font>";
 Ajax_AddComment(id_page, name, email, subject, text);

 return false;
}

function ChgTxt(){
 var ok = 0;
 var name = get_el("add_comment_name").value;
 var email = get_el("add_comment_email").value;
 var subject = get_el("add_comment_subject").value;
 var text = get_el("add_comment_text").value;

 var b = get_el("button_submit");

 if (name != '') ok++;
 if (subject != '') ok++;
 if (text != '') ok++;
 if (text.length > 2048) ok--;
 if (email != '') ok++;

 s = email.search(/\w+-*\w*@\w+-*\w*\.\w+/i);
 if (s == -1) ok--;

 if (ok == 4)
  b.disabled = false;
 else
  b.disabled = true;

 return true;
}

function Restore_span_addcomment() {
 var t0 = "Передумать добавлять комментарий";
 var t1 = "Добавить комментарий";

 l=get_el('div_add_comment');
 if (l.className=='dn')
  t = t1;
 else
  t = t0;

 get_el('span_add_comment').innerHTML=t;
 ChgTxt();
}

function submit_AddComment_real_err(s){
 get_el('span_add_comment').innerHTML="<font color='red'>Ошибка добавления</font>";
 setTimeout("Restore_span_addcomment()", 1000);

 return false;
}

function submit_AddComment_real_no(){
 get_el('span_add_comment').innerHTML="<font color='#808000'>Нет новых комментариев</font>";
 setTimeout("Restore_span_addcomment()", 1000);

 return false;
}

function submit_AddComment_real(s){
 get_el('span_add_comment').innerHTML="<font color='green'>Комментарий добавлен</font>";
 var tb = get_el("div_comments");

 s = new String(s.substring(10));
 s = s.parseJSON();
 len = s.length;
 if (s.length > 0)
 {
  c = new Array();
  for (i in s)
  {
   // email = replaceString('@', ' &copy; ', email);

   comments[comments.length] = c[i] = s[i];

   string = new Array();
   string.push('<div class="cmt" id="cmt['+c[i][0]+']"><div class="cmt_first"><div class="cmt_left">'+c[i][5]+'</div><div class="cmt_right"><b>'+c[i][4]+'</b>, <small>'+c[i][2]+', '+c[i][3]+'</small></div>&nbsp;</div><div class="cmt_cnt">'+c[i][6]+'</div></div>');

   ws = string.join('');
   delete string;
  
   if (comments.length == 0)
    tb.innerHTML = ws;
   else
    tb.innerHTML += ws;
  
  }
  delete c;
 }
 delete s;

 setTimeout("Restore_span_addcomment()", 1000);
 t = len*100 + 200;
 window.scrollBy(0, t);

 return false;
}

function Ajax_AddComment(id_page, name, email, subject, text){
 var url = host + "/addcomment.php?update_type=1";

 last_id = 0;
 if (comments.length == 0)
  last_id = 0;
 else
  last_id = comments[comments.length-1][0];

 data = "&id_page=" + encodeURIComponent(id_page) + "&name=" + encodeURIComponent(name) + "&email=" + encodeURIComponent(email) + "&subject=" + encodeURIComponent(subject) + "&text=" + encodeURIComponent(text) + "&last_id=" + encodeURIComponent(last_id);
 makeRequest('POST', url, data);
}

function Ajax_RefreshComment(id_page){
 var url = host + "/addcomment.php?update_type=2";

 if (comments.length == 0)
  last_id = 0;
 else
  last_id = comments[comments.length-1][0];

 data = "&id_page=" + encodeURIComponent(id_page) + "&last_id=" + encodeURIComponent(last_id);
 makeRequest('POST', url, data);
}
