
var k=0; // Номер текущего сообщения (комментария)


// Отображение всей гостевой
function guestbook() {
  var res=main_html;
  res=get_cookies(res);
  res=res.replace(/%PAGEBAR%/g,'<script>pagebar("'+username+'",'+curr+','+last+');</script>');
  res=res.replace(/%BANNER%/g,banner_html);
  res=res.replace(/%CURR%/g,curr);
  res=res.replace(/%LAST%/g,last);
  res=res.replace(/%TOTAL%/g,total);
  res=res.replace(/%SMILES%/g,smiles('mess0'));
  res=res.replace(/%MAINPAGE%/g,mainpage);
  res=res.replace(/%MESSAGES%/g,all_mess());
  res=res.replace(/%ACTION%/g,'add.php?username='+username+'&mess_id=0');
  res=res.replace(/%GRAPH%/g,graph);
  if(ubb2=='y') res=ifelse(res,'UBB',1);
  else res=ifelse(res,'UBB',0);
  if(reg=='y') res=ifelse(res,'REG',1);
  else res=ifelse(res,'REG',0);
  document.write(res);
}

// Отображение всех сообщений
function all_mess() {
  var res='';
  while(k<m) { res=res+mess(k); k++; }
  return res;
}

// Отображение одного сообщения
function mess() {
  var res=message_html;
  res=get_cookies(res);
  res=admin_panel(res);
  res=res.replace(/%DATE%/g,date[k]);
  res=res.replace(/%TIME%/g,time[k]);
  res=res.replace(/%NAME%/g,chars(name[k]));
  res=res.replace(/%EMAIL%/g,chars(antispam(email[k])));
  res=res.replace(/%URL%/g,chars(url[k]));
  res=res.replace(/%ICQ%/g,chars(icq[k]));
  res=res.replace(/%CITY%/g,chars(city[k]));
  res=res.replace(/%MESS_ID%/g,mess_id[k]);
  res=res.replace(/%COMM_ID%/g,comm_id[k]);
  res=res.replace(/%MESSAGE%/g,make_html(chars(message[k])));
  res=res.replace(/%MESS_BR%/g,chars(message[k]));
  res=res.replace(/%ANSWER%/g,make_html2(chars(answer[k])));
  res=res.replace(/%ANSW_BR%/g,chars(answer[k]));
  res=res.replace(/%SMILES%/g,smiles('mess'+mess_id[k]));
  res=res.replace(/%ACTION%/g,'add.php?username='+username+'&mess_id='+mess_id[k]);
  res=res.replace(/%GRAPH%/g,graph);
  res=makephoto(res);
  if(num_comm(mess_id[k])<max_comm) res=ifelse(res,'COMM',1);
  else res=ifelse(res,'COMM',0);
  if(ubb2=='y') res=ifelse(res,'UBB',1);
  else res=ifelse(res,'UBB',0);
  if(reg=='y') res=ifelse(res,'REG',1);
  else res=ifelse(res,'REG',0);

  // Новые ключевые выражения от 29.12.2007
  if(email[k]!='') res=ifelse(res,'EMAIL',1);
  else res=ifelse(res,'EMAIL',0);
  if(url[k]!='') res=ifelse(res,'URL',1);
  else res=ifelse(res,'URL',0);

  if(auth) res=admin_words(res);
  res=res.replace(/%COMMENTS%/g,all_comm());
  return res;
}

// Отображение всех комментариев
function all_comm() {
  var res='';
  while((k<m-1)&&(mess_id[k+1]==mess_id[k])) { k++; res=res+comm() };
  return res;
}

// Отображение одного комментария
function comm() {
  var res=comment_html;
  res=admin_panel(res);
  res=res.replace(/%DATE%/g,date[k]);
  res=res.replace(/%TIME%/g,time[k]);
  res=res.replace(/%NAME%/g,chars(name[k]));
  res=res.replace(/%EMAIL%/g,chars(antispam(email[k])));
  res=res.replace(/%URL%/g,chars(url[k]));
  res=res.replace(/%ICQ%/g,chars(icq[k]));
  res=res.replace(/%CITY%/g,chars(city[k]));
  res=res.replace(/%MESS_ID%/g,mess_id[k]);
  res=res.replace(/%COMM_ID%/g,comm_id[k]);
  res=res.replace(/%MESSAGE%/g,make_html(chars(message[k])));
  res=res.replace(/%MESS_BR%/g,chars(message[k]));
  res=res.replace(/%ANSWER%/g,make_html2(chars(answer[k])));
  res=res.replace(/%ANSW_BR%/g,chars(answer[k]));
  res=res.replace(/%GRAPH%/g,graph);

  // Новые ключевые выражения от 29.12.2007
  if(email[k]!='') res=ifelse(res,'EMAIL',1);
  else res=ifelse(res,'EMAIL',0);
  if(url[k]!='') res=ifelse(res,'URL',1);
  else res=ifelse(res,'URL',0);

  res=makephoto(res);
  if(auth) res=admin_words(res);
  return res;
}

// Отображение линейки смайликов для формы f
function smiles(f) {
  var res='';
  for(i=0; i<sm; i++) {
    res=res+'<a href="#1" onclick="addsmile(\''+f+'\','+(i+1)+')"><img src="'+smile[i]+'" hspace=5 border=0></a> ';
  }
  return res;
}

// Замена (:xx:) на HTML код смайлика
function makesmiles(txt) {
  for(i=0; i<sm; i++) {
    var reg=new RegExp('\\(:'+(i+1)+':\\)','g');
    var str='<img src="'+smile[i]+'" hspace=5>';
    txt=txt.replace(reg, str);
  }
  return txt;
}

// Дешифрация e-mail адреса
function antispam(txt) { 
  return txt.replace(/[a-z]@/g,"@");
}

// Автозаполнение полей формы данными из куков
function get_cookies(res) {
  res=res.replace(/(name=['"]?name['"]?)([ >])/g, '$1 value="'+your_name+'"$2');
  res=res.replace(/(name=['"]?email['"]?)([ >])/g,'$1 value="'+your_email+'"$2');
  res=res.replace(/(name=['"]?url['"]?)([ >])/g,  '$1 value="'+your_url+'"$2');
  res=res.replace(/(name=['"]?icq['"]?)([ >])/g,  '$1 value="'+your_icq+'"$2');
  res=res.replace(/(name=['"]?city['"]?)([ >])/g, '$1 value="'+your_city+'"$2');
  res=res.replace(/(name=['"]?get_mail['"]?)([ >])/g, '$1 '+your_get_mail+'$2');
  return res;
}

// Прорисовка панели управления администратора
function admin_panel(res) {
  if(auth==0) return res;
  return res.replace(/%ANSWER%/g,'%ANSWER% '+admin_html);
}

// Построение HTML кода текста сообщения
function make_html(res) {
  if((ubb2=='y')&&(auth==0)) res=ubb(res);
  res=res.replace(/\n/g,'<br>');
  res=makesmiles(res);
  //res=makelinks(res);
  //res=bigwords(res);
  return res;
}

// Построение HTML кода ответа владельца книги
function make_html2(res) {
  if((ubb3=='y')&&(auth==0)) res=ubb(res);
  res=res.replace(/\n/g,'<br>');
  res=makesmiles(res);
  //res=makelinks(res);
  //res=bigwords(res);
  return res;
}


// Установка кука
function setcookie(name, value, days) {
  var expire = new Date ();
  expire.setTime(expire.getTime() + (days * 24 * 3600000));
  document.cookie = name+"="+escape(value)+"; expires="+expire.toGMTString();
}

// Удаление "плохих" символов
function chars(txt) {
  txt=txt.replace(/\</g,'&lt;');
  txt=txt.replace(/\>/g,'&gt;');
  txt=txt.replace(/\$/g,'&#36;');
  txt=txt.replace(/\%/g,'&#37;');
  txt=txt.replace(/\{/g,'&#123;');
  txt=txt.replace(/\|/g,'&#124;');
  txt=txt.replace(/\}/g,'&#125;');
  return txt;
}

// Определение числа комментариев данного сообщения
function num_comm(m_id) {
  var res=0;
  for(i=0; i<m; i++) {
    if(mess_id[i]==m_id) res=res+1;
  }
  return res-1;
}

// Обработка конструкции if/else
function ifelse(txt, word, bool) {
  var r = new RegExp('\{'+word+'[|]([^|]*)[|]([^\}]*)\}','g');
  if(bool==1) return txt.replace(r,'$1');
  else return txt.replace(r,'$2');
}

// Обработка UBB кодов
function ubb(txt) {
  txt=txt.replace(/\"/g,'&quot;');
  txt=txt.replace(/\[\/b\]/g,'\u1001');
  txt=txt.replace(/\[\/i\]/g,'\u1002');
  txt=txt.replace(/\[\/u\]/g,'\u1003');
  txt=txt.replace(/\[\/s\]/g,'\u1004');
  txt=txt.replace(/\[\/q\]/g,'\u1005');
  txt=txt.replace(/\[\/url\]/g,'\u1006');
  txt=txt.replace(/\[\/email\]/g,'\u1007');
  txt=txt.replace(/\[\/img\]/g,'\u1008');
  txt=txt.replace(/\[\/l\]/g,'\u1009');
  txt=txt.replace(/\[\/center\]/g,'\u100A');
  txt=txt.replace(/\[\/r\]/g,'\u100B');
  txt=txt.replace(/\[\/j\]/g,'\u100C');
  txt=txt.replace(/\[\/sub\]/g,'\u100D');
  txt=txt.replace(/\[\/sup\]/g,'\u100E');
  txt=txt.replace(/\[\/list\]/g,'\u100F');
  txt=txt.replace(/\[\/color\]/g,'\u1010');
  txt=txt.replace(/\[\/size\]/g,'\u1011');
  txt=txt.replace(/\[\/font\]/g,'\u1012');
  txt=txt.replace(/\[b\]([^\u1001]*)\u1001/g,'<b>$1</b>');
  txt=txt.replace(/\[i\]([^\u1002]*)\u1002/g,'<i>$1</i>');
  txt=txt.replace(/\[u\]([^\u1003]*)\u1003/g,'<u>$1</u>');
  txt=txt.replace(/\[s\]([^\u1004]*)\u1004/g,'<strike>$1</strike>');
  txt=txt.replace(/\[q\]([^\u1005]*)\u1005/g,'<blockquote><b>Цитата:</b><hr size=1>$1<hr size=1></blockquote>');
  txt=txt.replace(/\[q=([^\]]+)\]([^\u1005]*)\u1005/g,'<blockquote><b>Цитата ($1):</b><hr size=1>$2<hr size=1></blockquote>');
  txt=txt.replace(/\[url\]([^\u1006]*)\u1006/g,'<a href="$1" target="_blank">$1</a>');
  txt=txt.replace(/\[email\]([^\u1007]*)\u1007/g,'<a href="mailto:$1">$1</a>');
  txt=txt.replace(/\[url=([^\]]+)\]([^\u1006]*)\u1006/g,'<a href="$1" target="_blank">$2</a>');
  txt=txt.replace(/\[email=([^\]]+)\]([^\u1007]*)\u1007/g,'<a href="mailto:$1">$2</a>');
  txt=txt.replace(/\[img\]([^\u1008]*)\u1008/g,'<img src="$1?xbase">');
  txt=txt.replace(/\[img width=(\d+) height=(\d+)\]([^\u1008]*)\u1008/g,'<img width="$1" height="$2" src="$3?xbase">');
  txt=txt.replace(/\[img height=(\d+) width=(\d+)\]([^\u1008]*)\u1008/g,'<img height="$1" width="$2" src="$3?xbase">');
  txt=txt.replace(/\[color=([^\]]+)\]([^\u1010]*)\u1010/g,'<font color="$1">$2</font>');
  txt=txt.replace(/\[size=([1-6])\]([^\u1011]*)\u1011/g,'<font size="$1">$2</font>');
  txt=txt.replace(/\[font=([^\]]+)\]([^\u1012]*)\u1012/g,'<font face="$1">$2</font>');
  txt=txt.replace(/\[l\]([^\u1009]*)\u1009/g,'<p align="left">$1</p>');
  txt=txt.replace(/\[center\]([^\u100A]*)\u100A/g,'<p align="center">$1</p>');
  txt=txt.replace(/\[r\]([^\u100B]*)\u100B/g,'<p align="right">$1</p>');
  txt=txt.replace(/\[j\]([^\u100C]*)\u100C/g,'<p align="justify">$1</p>');
  txt=txt.replace(/\[sub\]([^\u100D]*)\u100D/g,'<sub>$1</sub>');
  txt=txt.replace(/\[sup\]([^\u100E]*)\u100E/g,'<sup>$1</sup>');
  txt=txt.replace(/\[hr\]/g,'<hr>');
  txt=txt.replace(/\[list\]([^\u100F]*)\u100F/g,'<ol type="disc">$1</ol>');
  txt=txt.replace(/\[list=1\]([^\u100F]*)\u100F/g,'<ol type="1">$1</ol>');
  txt=txt.replace(/\[list=I\]([^\u100F]*)\u100F/g,'<ol type="I">$1</ol>');
  txt=txt.replace(/\[list=A\]([^\u100F]*)\u100F/g,'<ol type="A">$1</ol>');
  txt=txt.replace(/\[\*\]/g,'<li>');
  txt=txt.replace(/[\u1001-\u1012]/g,'[/?]');
  return txt;            
}

// Отображение мини фотографии
function makephoto(res) {
  if(reg=='n') return res.replace(/%PHOTO%/g,'');  
  if(login[k]==your_gorodsnov) rnd0 = '?'+your_rnd;
  else rnd0 = '';
  if(login[k]=='') {
    res=res.replace(/%PHOTO%/g,'<img src="graph/guest.jpg" width=75 height=100 border=1 style="border-color=#808080">');
  }
  else {
    res=res.replace(/%PHOTO%/g,'<a href="anketa.php?'+login[k]+'" target="_blank"><img src="'+photos+'/photos_small/'+login2[k]+'/'+login[k]+'_0.jpg'+rnd0+'" width=75 height=100 border=1 style="border-color=#808080"></a>');  
  }
  return res;
}

// Определение разрешения экрана и часового пояса
var s=screen;
var s2=s.width+'x'+s.height+'x'+(s.colorDepth?s.colorDepth:s.pixelDepth);
var tz=-(new Date()).getTimezoneOffset();
setcookie('screen',s2,360);
setcookie('timezone',tz,360);
