
// Proto

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };

// Misc

function echo(str)
{
  document.write(str);
}

function showEl(elemId)
{
  var e = element(elemId);
  if (e) e.style.display = 'block';
}

function hideEl(elemId)
{
  var e = element(elemId);
  if (e) e.style.display = 'none';
}

// Cookie

function GetCurrDate(AddYears)
{
  var oDate = new Date();
  oDate.setFullYear(oDate.getFullYear() + AddYears);
  return oDate;
}

function SetCookie(strName, oValue)
{
  var argv = SetCookie.arguments;
  var argc = SetCookie.arguments.length;
  var oDate = false;
  if ((argc > 2) && (argv[2] != null))
  {
    var nStamp = (typeof(argv[2]) != "number") ?
      Date.parse(argv[2].toString()) : argv[2];
    if (!isNaN(nStamp)) oDate = new Date(nStamp);
  }
  document.cookie = strName + "=" + escape(oValue.toString()) +
    (oDate ? "; expires=" + oDate.toGMTString() : "") +
    (((argc > 3) && (argv[3])) ? "; domain=" + argv[3] : "") +
    (((argc > 4) && (argv[4])) ? "; path=" + argv[4] : "") +
    ((argc > 5) ? (argv[5] ? "; secure" : "") : "");
}

function GetCookie(strName)
{
  if ((typeof(strName) == "string") && strName.length)
  {
    var i = 0, j;
    var strFind = strName + "=";
    var strCookie = document.cookie;
    do
    {
      j = i + strFind.length;
      if (strCookie.substring(i, j) == strFind)
      {
        var nEnd = strCookie.indexOf(";", j);
        if (nEnd < 0) nEnd = strCookie.length;
        return unescape(strCookie.substring(j, nEnd));
      }
    }
    while (i = strCookie.indexOf(" ", j) + 1);
  }
  return "";
}

// ajax

function createAjaxXml()
{
  try { return new XMLHttpRequest(); } catch (e) {
  try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) {
  try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) {
  try { return window.createRequest(); } catch (e) {}}}}
  return null;
}

// Images

function PreloadImages()
{
  if (document.images)
  {
    var imgFiles = PreloadImages.arguments;
    var preloadArray = new Array(imgFiles.length);
    for (var i=0; i<imgFiles.length; i++)
    {
      preloadArray[i] = new Image;
      preloadArray[i].src = imgFiles[i];
    }
  }
}

// Elements

function element(id)
{
  if (document.getElementById) return document.getElementById(id);
  if (document.all) return document.all(id);
  if (document.layers) return document.layers(id);
}

// ToPageTop

function AttToPageTop()
{
  var tpt = element('aToPageTop');
  if (tpt)
  {
    tpt.onmouseover = function() { window.status='Наверх страницы';return true; }
    tpt.onmouseout = function() { window.status='';return true; }
    tpt.onclick = function() { scroll(0,0);return false; }
  }
}

// Page Functions

function AddToFavorites()
{
  var url = window.document.location;
  var title = window.document.title;

  if (window.sidebar) // Firefox
    window.sidebar.addPanel(title, url, "");
  else if (window.external) // IE
    window.external.AddFavorite(url, title);
  else // Other
  {
    var msg = "Извините, ваш браузер не поддерживает автоматическое добавление в закладки.";
    if (window.opera && window.print) // Opera
      msg += " Нажмите 'Ctrl-D' для добавления " + "\'" + title + "\'";
    alert(msg);
  }
}

function AddToMemory()
{
  location.href="http://memori.ru/link/?sm=1&u_data[url]="+encodeURIComponent(document.location.href)+"&u_data[name]="+encodeURIComponent(document.title);
}

// Counters

function counter_li()
{
  echo("<img src='http://counter.yadro.ru/hit?r" + escape(document.referrer) + ((typeof(screen)=="undefined")?"":";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?screen.colorDepth:screen.pixelDepth)) + ";u" + escape(document.URL) + ";" + Math.random() + "' width=1 height=1 alt=''>");
}

// Comments

var cmtSID = '0';

function cmt_init(sid)
{
  cmtSID = sid;
  hideEl('noComments');

  echo('<p><a href="javascript:CmtFrmShow()" class="cmtbtadd" id="aShowCmtFrm"></a>');
  AttachEvents('aShowCmtFrm', 'Добавить комментарий');
  echo('<div id="cmtFrmCnt"></div>');
}

function CmtFrmShow()
{
  hideEl('aShowCmtFrm');

  var cmtForm = element('cmtForm');
  if (!cmtForm)
  {
    var cmtFrmCnt = element('cmtFrmCnt');
    if (cmtFrmCnt)
    {
      // clear url from #xxx
      var url = document.URL;
      var pos = url.indexOf('#');
      if (pos > 0) url = url.substr(0, pos);

      cmtFrmCnt.innerHTML = '<div class="cmtformcont"><div class="cmtformbg"><div class="cmtcaption"><h4>Добавить комментарий</h4><a href="javascript:CmtFrmHide()" title="Закрыть" class="cmtbtclose" id="aCmtClose"></a></div><form method="post" action="'+url+'#cmtLast" class="cmtform" id="cmtForm"><input type="hidden" name="sid" value="'+cmtSID+'"><table class="tbcc"><tr><td class="tdw">Ваше имя:<td><input name="author" size="28" class="text" id="author"><tr><td>Текст комментария:<td><textarea name="comment" id="comment"></textarea><tr><td>Цифры с картинки:<td><img src="captcha.'+cmtSID+'.img" alt="Цифры загружаются..." class="captchaimg"><input name="captcha" size="5" class="text" id="captcha"><div class="capallowed">(допустимые цифры: 0-9)</div><tr><td colspan="2"><div align="center" class="cmtfooter"><a href="javascript:SendComment()" class="cmtbtsend" id="aCmtSend"></a></div></table></form></div></div>';
      AttachEvents('aCmtClose', 'Закрыть форму ввода комментария');
      AttachEvents('aCmtSend', 'Добавить комментарий');

      var author = element('author');
      if (author)
      {
        var auname = GetCookie('cmtAuthor');
        if (auname) author.value = auname;
      }
    }
  }
  else showEl('cmtFrmCnt');
  // focus
  if (!author)
    var author = element('author');
  if (author)
  {
    if (author.value != '')
    {
      comment = element('comment');
      if (comment) comment.focus();
    }
    else author.focus();
  }
}

function CmtFrmHide()
{
  hideEl('cmtFrmCnt');
  showEl('aShowCmtFrm');
}

function checkValue(elemId, errMsg)
{
  var e = element(elemId);
  if (e)
  {
    if (e.value.trim() == '')
    {
      alert(errMsg);
      e.focus();
      return false;
    }
  }
  return true;
}

function checkCaptcha()
{
  var cap = element('captcha');
  if (cap.value.replace(/[0-9]+/, '').trim() != '')
  {
    alert('Вы неверно ввели цифры с картинки! Допустимы только цифры.');
    return false;
  }
  var ajxml = createAjaxXml();
  if (ajxml)
  {
    ajxml.open('GET', 'http://'+location.host+'/captcha.'+cmtSID+'.'+cap.value+'.sid', false);
    ajxml.send(null);
    if (ajxml.responseText != 'capOK')
      alert('Вы неверно ввели цифры с картинки!');
    else return true;
  }
  else return true;
}

function SendComment()
{
  // first - check values
  if (checkValue('author', 'Введите Ваше имя!') &&
      checkValue('comment', 'Введите Ваш комментарий!') &&
      checkValue('captcha', 'Введите цифры с картинки!') &&
      checkCaptcha())
  {
    var au = element('author');
    var cf = element('cmtForm');
    if (au) SetCookie('cmtAuthor', au.value, GetCurrDate(10));
    if (cf) cf.submit();
  }
}

// Rekla

function gas_news_prepare()
{
  google_ad_client = "pub-6773028262265173";
  google_ad_slot = "6604179559";
  google_ad_width = 160;
  google_ad_height = 600;
}

function google_as_request()
{
  echo('<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js"><\/script>');
}

function gas_news()
{
  gas_news_prepare();
  google_as_request();
}

// Init

function AttachEvents(elemId, statMsg, aHref)
{
  var e = element(elemId);
  if (e)
  {
    e.onmouseover = function() { window.status=statMsg;return true; }
    e.onmouseout = function() { window.status='';return true; }
    if (aHref) e.href = aHref;
  }
}

function AttToHeadMenu()
{
  var v1 = 'ma'+'il'+'to'+':ad'+'mi'+'n@'+'ip'+'oi'+'nf'+'.'+'r'+'u';
  var v2 = '?'+'su'+'bj'+'ec'+'t=';
  AttachEvents('aAddToFavor', 'Добавить текущую страницу в закладки', 'javascript:AddToFavorites()');
  AttachEvents('aAddToMem', 'Запомнить текущую страницу на Memory.ru', 'javascript:AddToMemory()');
  AttachEvents('aRssFeed', 'Подписаться на новости (RSS)');
  AttachEvents('aPrint', 'Отобразить страницу в виде текста для печати');
  AttachEvents('aSiteMap', 'Посмотреть карту сайта');
  AttachEvents('aSendMail', 'Написать письмо администрации сайта', v1+v2+'Message from www.ipoinf.ru');
}

function js_init()
{
  AttToHeadMenu();
  AttToPageTop();
}
