 /* 2009 (C) Eugene Krivoruchko */
 /* FlipFlip.Ru */
 /* eugene@krivoruchko.info */

 var startNews = 0;
 var newsBlock = false;
 var nowVideo = 1;
 var nowPhoto = 1;
 var commentParentID = 0;
 var aListen = new Array();

 var filterEmail  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
 var digits = "0123456789";
 var lowerLettersEng = "abcdefghijklmopqrstuvwxyz";
 var upperLettersEng = "ABCDEFGHIJKLMOPQRSTUVWXYZ";
 var otherSingsLogin = "~`!@#$%^&*+=|\\/()[]{}<>,.;:?\"\'";
 var lowerLettersRus = "ячсмитьбюэждлорпавыфйцукенгшщзхъё";
 var upperLettersRus = "ЯЧСМИТЬБЮЭЖДЛОРПАВЫФЙЦУКЕНГШЩЗХЪЁ";
 var otherSigns = "~`!@#$%^&*+-=_|\\/()[]{}<>,.;:?\"\'";

 var passWidth = 254;
 var passHeight = 4;
 var passLabel = new Array('недопустимые символы', 'слишком короткий', 'слабенький', 'слабый', 'нормальный', 'сложный', 'очень сложный');
 var passRation = passWidth / (passLabel.length - 2);

 var passDesc = new Array();
 passDesc[0] = '<p><small><b>'+passLabel[0]+'</b></small></p><div style="width: '+passWidth+'px; height: '+passHeight+'px; background: #ccc;"></div>';
 passDesc[1] = '<p><small><b>'+passLabel[1]+'</b></small></p><div style="width: '+passWidth+'px; height: '+passHeight+'px; background: #ccc;"></div>';
 passDesc[2] = '<p><small><b>'+passLabel[2]+'</b></small></p><div style="width: '+passWidth+'px; height: '+passHeight+'px; background: #ccc;"><div style="width: '+(passRation * 1)+'px; height: '+passHeight+'px; background: #c00;"></div></div>';
 passDesc[3] = '<p><small><b>'+passLabel[3]+'</b></small></p><div style="width: '+passWidth+'px; height: '+passHeight+'px; background: #ccc;"><div style="width: '+(passRation * 2)+'px; height: '+passHeight+'px; background: #f69;"></div></div>';
 passDesc[4] = '<p><small><b>'+passLabel[4]+'</b></small></p><div style="width: '+passWidth+'px; height: '+passHeight+'px; background: #ccc;"><div style="width: '+(passRation * 3)+'px; height: '+passHeight+'px; background: #9fc;"></div></div>';
 passDesc[5] = '<p><small><b>'+passLabel[5]+'</b></small></p><div style="width: '+passWidth+'px; height: '+passHeight+'px; background: #ccc;"><div style="width: '+(passRation * 4)+'px; height: '+passHeight+'px; background: #9f9;"></div></div>';
 passDesc[6] = '<p><small><b>'+passLabel[6]+'</b></small></p><div style="width: '+passWidth+'px; height: '+passHeight+'px; background: #ccc;"><div style="width: '+(passRation * 5)+'px; height: '+passHeight+'px; background: #093;"></div>';

 $(document).ready(function() {
  /* Голосовалка */
  
  $('a.a-result').click(function() {
   var id = $(this).attr('id');
   	
   $('#vote-' + id).hide();
   $('#result-' + id).show();
   return false;
  });

  $('a.a-vote').click(function() {
   var id = $(this).attr('id');
   
   $('#vote-bl' + id + ' form').each(function() {
    var params = getFormData(this);
    
    $.post("/ajax/vote.php", params, function(data){
     if (data == 0) alert(language.c);
     if (data == 1) alert(language.an);
     if (data == 2) alert(language.ap);
     if (data == 3) alert(language.d);
     if (data == 4) alert(language.e);
    });
   });
   return false;
  });

 
  setTimeout("newsTimer()", 10000);
  lastNewsHeight();

  $(".gallery li a").click(function() {
   return hs.expand(this);
  });

  $(".four-picture a").click(function() {
   return hs.expand(this);
  });

  $(".review-rating").stars({
   inputType: "select",
   oneVoteOnly: true,
   split: 2,
   disabled: true
  });

  $(".review-vote").stars({
   inputType: "select",
   oneVoteOnly: true,
   split: 2,
   disabled: false,
   callback: function(el, type, value){
    $.post("/ajax/review.vote.php", { name: $(this).attr('name'), value: value }, function(data){
     if (data == '0') alert(language.f);
     if (data == '1') alert(language.c);
     if (data == '2') alert(language.d);
     if (data == '3') alert(language.e);
    });
   }
  });

  
  $(".popular .header li").click(function() {
   if ($(this).attr('class') == 'select') {
    $('.popular .header li').addClass('select');
    $(this).removeClass('select');
    $('.popular .inner').hide();
    $('#' + $(this).attr('name')).show();
   }
  });
  
  /* быстрые клики */

  $('.to-error').click(function() {
   sendError();   
   return false;
  });
  
  $('.to-favorite').click(function() {
   addFavorite();
   return false;
  });

  $('.to-print').click(function() {
   window.print();
   return false;
  });
  
  $('.menu .colum-3 a.search').click(function() {
   Boxy.load("/inc/search-form.html", {modal: true, title: language.g});
   return false;
  });
  
  $('.menu .colum-1 a.login').click(function() {
   Boxy.load("/inc/login-form.html", {modal: true, title: language.h});
   return false;
  });

  /*
  $('a.subscribe').click(function() {
   Boxy.load("/inc/subscribe-form.html", {modal: true, title: language.i});
   return false;
  });
  */
  
  $('#quick-search a').click(function() {
   $('#quick-search').submit();
   return false;
  });

  $('.search-form-404 a').click(function() {
   $('.search-form-404 form').submit();
   return false;
  });

  /* Комментарии */

  $('a.addcommentary').click(function() {
   $('.commentary-layer li form').slideUp('slow');
   commentParentID = 0;
   $('.add-commentary form').slideToggle('slow');
   return false;
  });

  $('.add-commentary form').submit(function() {
   addComment(this);
   return false;
  });
  
  $('.add-subcommentary').click(function() {
   var id = $(this).parent().parent().parent().find("a").attr('name').replace('comment-','');
   if (commentParentID != id) {
    commentParentID = id;
    $('.add-commentary form').slideUp('slow');
    $('.commentary-layer ul li form').slideUp('slow', function() {
     $(this).remove();
    });
    $('.add-commentary form').clone().insertAfter($(this).parent().parent()).css('display', 'none').slideDown('slow');
    $(this).parent().parent().parent().find("input[name='parent_id']").val(id);

    $('.commentary-layer li form').submit(function() {
     addComment(this);
     return false;
    });
   }
   return false;
  });

  $('.video h3').click(function() {
   if ($(this).attr('name') != nowVideo) {
    $('.video .block-' + nowVideo + ' p').slideUp('slow');
    $('.video .block-' + nowVideo + ' h3').removeClass('select');
    $('.video .block-' + $(this).attr('name') + ' p').slideDown('slow');
    $('.video .block-' + $(this).attr('name') + ' h3').addClass('select');
    nowVideo = $(this).attr('name');
   } else return true;
   return false;
  }); 

  $('.photo h3').click(function() {
   if ($(this).attr('name') != nowPhoto) {
    $('.photo .block-' + nowPhoto + ' p').slideUp('slow');
    $('.photo .block-' + nowPhoto + ' h3').removeClass('select');
    $('.photo .block-' + $(this).attr('name') + ' p').slideDown('slow');
    $('.photo .block-' + $(this).attr('name') + ' h3').addClass('select');
    nowPhoto = $(this).attr('name');
   } else return true;
   return false;
  }); 

  $('.alert').click(function() {
    Boxy.alert(language.j, null, {title: language.j});
    return false;
  });
  
  $('.logotype').click(function() { location.href = '/'; });

  $('.news-with-picture td').mouseover(function() {
   newsBlock = true;
   if ($(this).attr('id').replace('news-', '') != startNews) {
    startNews = $(this).attr('id').replace('news-', '');
    mainPhoto();
   }
  });

  $('.news-with-picture td').mouseout(function() {
   newsBlock = false;
  });

  /*
  $('.media .cover ul li div').hover(function() {
   $('.media .cover ul li div').removeClass('select');
   $(this).addClass('select');
  });
  */
  
  /* Сообщить об ошибке */

  $(window).keydown(function(e){
   if (e.ctrlKey) {
    if (e.keyCode == 69) {
     sendError();
     return false;
    }
   }
  });

  /* Страница вправо, страница влево */
  
  $(window).keypress(function(e){
   var url = false;
   if (e.ctrlKey) {
    if (e.keyCode == 37) {
     url = $('.prev-page').attr('href');
     if (url) location.href = url;
     return false;
    }
    if (e.keyCode == 39) {
     url = $('.next-page').attr('href');
     if (url) location.href = url;
     return false;
    }
   }
  });
 });
 
 function audio(id) {
  if (!aListen[id]) {
   $.post("/inc/audio.php", { id: id });
   aListen[id] = true;
  }
 }
 
 function lastNewsHeight() {
  var height = 0;
  $('.last-news ul li').each(function() {
   if ($(this).height() > height) height = $(this).height();
  });
  
  $('.last-news ul li').css("height", height + "px");
 }
 
 function mainPhoto() {
  $('.photo-main').fadeTo("fast", 0.2, function() {
   $('.news-with-picture td.select').removeClass('select');
   $('#news-' + startNews).addClass('select');

   $(this).find('.label').each(function() {
    $(this).find('a').attr('href', $('#news-' + startNews + ' h3 a:first').attr('href'));
    $(this).find('h2 a').html($('#news-' + startNews + ' h3 a:first').html());
    $(this).find('p a').html($('#news-' + startNews).attr('title'));
   });

   $(this).find('.date p').html($('#news-' + startNews + ' h3').attr('title'));
   $(this).css('background-image', 'url(' + $('#news-' + startNews + ' p img').attr('longdesc') + ')');
   $(this).fadeTo("fast", 1);
  });
 }
 
 function newsTimer() {
  if (!newsBlock) {
   if (startNews > 10) startNews = -1;

   startNews++;
   mainPhoto();
  }
  setTimeout("newsTimer()", 10000);
 }

 function addFavorite() {
  var title = document.title;
  var url = document.URL;
  if (window.sidebar) window.sidebar.addPanel(title, url, "");
  else if (window.external) window.external.AddFavorite(url, title);
   else if(window.opera && window.print){
    Boxy.alert(language.k, null, {title: language.l}); 
   }
 }

 /*
 function subscribe(obj) {
  $.post("/ajax/subscribe.php", { email: obj.email.value }, function(data){
   if (data == '0') alert(language.o);
   if (data == '1') alert(language.n);
   if (data == '2') alert(language.m);

   $(".search-form").each(function() { Boxy.get(this).hide(); });
  });
  return false;
 }
 */
 
 function addComment(obj) {
  $(obj).find('input[type=image]').attr('disabled', 'disabled');
  $.post("/ajax/add.commentary.php", { id: obj.id.value, parent_id: obj.parent_id.value, description: obj.description.value }, function(data){
   if (data == '0') alert(language.r);
   if (data == '1') alert(language.q);
   if (data == '2') {
    alert(language.p);
    var url = document.URL;
    if (url.indexOf('#') > 0) url = url.substr(0, url.indexOf('#'));
    location.href = url + '#comment-' + obj.parent_id.value;
    if (obj.parent_id.value > 0) $('.commentary-layer li form').slideUp('slow');
    else $('.add-commentary form').slideUp('slow');
    location.reload();
   }
   $(obj).find('input[type=image]').attr('disabled', '');
  });
  return false;
 }
 
 function ShowBild(url) {
  return hs.expand(false, { src: url } );
 }
 
 function auth(obj) {
  $('.form-login form img').show();
  $('.form-login form input[type="image"]').hide();
 
  $.post("/ajax/login.php", { member: obj.member.value, action: obj.action.value, email: obj.email.value, password: obj.password.value }, function(data){
   if (data == '0') alert(language.c);
   if (data == '1') alert(language.t);
   if (data == '2') alert(language.s);
   if (data == '3') {

    $(".form-login").each(function() {
     Boxy.get(this).hide();
    });

    var url = document.URL;
    if (url.indexOf('#') > 0) url = url.substr(0, url.indexOf('#'));
    location.href = url;
    location.reload();
   }
   if (data == '4') alert(language.v);
   if (data == '5') alert(language.w);

   $('.form-login form img').hide();
   $('.form-login form input[type="image"]').show();
  });
 }
 
 function sendError() {
   var selectText = false;
   if(window.getSelection) selectText = window.getSelection();
   else if(document.getSelection) selectText = window.document.getSelection();
    else {
     selectText = window.document.selection;
     if (selectText) {
      var errorText = selectText.createRange().text;
      var b = selectText.createRange();
      var a = selectText.createRange();
      selectText = errorText;
      b.moveStart("word", -10);
      b.moveEnd("character", -errorText.length);
      a.moveStart("character", errorText.length);
      a.moveEnd("word", 10);
      selectText = b.text+' ##' + errorText + '## '+a.text;
     }
    }

   if (!selectText || selectText.toString().length < 12) {
    alert(language.z);
   } else {
    if (selectText.toString().length > 512) alert(language.y);
    else if (confirm("Фрагмент текста, в котором\nВы обнаружили ошибку:\n     " + selectText + "\n\nАдрес страницы:\n     " + document.URL + "\n\nОтправить сообщение об этой ошибке редактору сайта?")) {
     $.post("/ajax/send.error.php", { url: document.URL.toString(), description: selectText.toString() }, function(data){
      if (data == '0') alert(language.c);
      if (data == '1') alert(language.x);
     });
    }
   }
 }
 
 function ajaxSelect(obj, elem) {
  var id = $(obj).val();
  if (id > 0) {
   $("#" + elem).removeOption(/./);
   $("#" + elem).ajaxAddOption("/ajax/json.city.php?id=" + id, {}, false);
   $("#" + $("#" + elem).attr('subselect')).removeOption(/./);
  }
 }

 /* Получение данных формы */
 
 function getFormData(obj) {
  var params = {};
  $(obj)
  .find("input[checked], input[type='text'], input[type='hidden'], input[type='password'], input[type='submit'], option[selected], textarea")
  .each(function() {
    params[ this.name || this.id || this.parentNode.name || this.parentNode.id ] = this.value;
  });
  return params;
 }

 function sendSubscribe(obj) {
  $(obj).each(function(){
   var params = getFormData(this);
   $.post("/ajax/save.profile.php", params, function(data){
    if(data == 1) alert(language.ac);
    if(data == 0) alert(language.ad);
   });
  });
 
  return false;
 }
 
 function sendSetting(obj) {
  $(obj).each(function(){
   var params = getFormData(this);
   $.post("/ajax/save.profile.php", params, function(data){
    if(data == 2) alert(language.ac);
    if(data == 1 || data == 3) alert(language.c);
    if(data == 0) alert(language.ad);
   });
  });

  return false; 
 }
 
 function accountSetting(obj) {
  $(obj).each(function(){
   var params = getFormData(this);
   $.post("/ajax/save.profile.php", params, function(data){
    if (data == 0) alert(language.c);
    if (data == 1) alert(language.v);
    if (data == 2) alert(language.ak);
    if (data == 3) alert(language.al);
    if (data == 4) alert(language.am);
    if (data == 5) alert(language.an);
    if (data == 6) { alert(language.ao); Boxy.get(obj).hide(); }
   });
  }); 
  return false;
 }

 function changeBox(obj, fun) {
  Boxy.get(obj).hide();
  eval(fun + '();');
  return false;
 } 

 function showProfile(id) { Boxy.load("/inc/profile.php?id=" + id, {modal: true, title: language.aa}); return false; }
 function editProfile() { Boxy.load("/inc/profile.setting.php", {modal: true, title: language.ab}); return false; }
 function changeAvatar() { Boxy.load("/inc/profile.avatar.php", {modal: true, title: language.ae}); return false; }
 function subscribeProfile() { Boxy.load("/inc/profile.subscribe.php", {modal: true, title: language.af}); return false; }
 function settingAccount() { Boxy.load("/inc/account.setting.php", {modal: true, title: language.ag}); return false; }
 function remeberAccount() { Boxy.load("/inc/remember-form.html", {modal: true, title: language.ah}); return false; }
 function createAccount() { Boxy.load("/inc/registration-form.html", {modal: true, title: language.ai}); return false; }
 
 function updateImage(obj) {
  var src = obj.src;
  if (src.indexOf('?') > 0) src = src.substr(0, src.indexOf('?'));
  obj.src = src + "?r=" + Math.random();
 }

 /* Проверка форм */
 
 function checkCapcha(obj) {
  if (obj.value > 999 && obj.value <= 9999)	{
   obj.style.background = '#cfc';
   return true;
  }
  else {
   obj.style.background = '#fcc';
   return false;
  }
 }
 
 function checkEmail(obj) {
  if (!filterEmail.test(obj.value)) {
   obj.style.background = '#fcc';
   return false;
  }
  else {
   obj.style.background = '#cfc';
   return true;
  }
 }

 function checkLogin(obj) {
  var hasDigits = false;
  var hasLowerLettersRus = false;
  var hasUpperLettersRus = false;
  var hasOtherSingsLogin = false;

  var val = obj.value;

  for(i = 0; i < val.length; i++) {
   hasDigits |= digits.indexOf(val.charAt(i)) >= 0;
   hasLowerLettersRus |= lowerLettersRus.indexOf(val.charAt(i)) >= 0;
   hasUpperLettersRus |= upperLettersRus.indexOf(val.charAt(i)) >= 0;
   hasOtherSingsLogin |= otherSingsLogin.indexOf(val.charAt(i)) >= 0;
  }

  var u = (hasLowerLettersRus? 1: 0) + (hasUpperLettersRus? 1: 0) + (hasOtherSingsLogin? 1: 0);

  if (u > 0 || val.length < 3 || val.length > 20) {
   obj.style.background = '#fcc';
   return false;
  }
  else {
   obj.style.background = '#cfc';
   return true;
  }
 }

 function checkPassword(hash) {
  var password = $('#password1-' + hash).val();

  var hasDigits = false;
  var hasLowerLettersEng = false;
  var hasUpperLettersEng = false;
  var hasLowerLettersRus = false;
  var hasUpperLettersRus = false;
  var hasOtherSigns = false;

  for(i = 0; i < password.length; i++) {
   hasDigits |= digits.indexOf(password.charAt(i)) >= 0;
   hasLowerLettersEng |= lowerLettersEng.indexOf(password.charAt(i)) >= 0;
   hasUpperLettersEng |= upperLettersEng.indexOf(password.charAt(i)) >= 0;
   hasLowerLettersRus |= lowerLettersRus.indexOf(password.charAt(i)) >= 0;
   hasUpperLettersRus |= upperLettersRus.indexOf(password.charAt(i)) >= 0;
   hasOtherSigns |= otherSigns.indexOf(password.charAt(i)) >= 0;
  }

  var m =
   (hasDigits? 10: 0) +
   (hasLowerLettersEng? 26: 0) +
   (hasUpperLettersEng? 26: 0);

  var u =
   (hasLowerLettersRus? 1: 0) +
   (hasUpperLettersRus? 1: 0) +
   (hasOtherSigns? 1: 0);

  var R = Math.pow(m, password.length);
  var intScore = Math.log(R);

  if (u > 0) {
   strVerdict = 0;
  }
  else
  if (intScore < 5 || password.length < 4) {
   strVerdict = 1;
  }
  else
   if (intScore < 16)
    strVerdict = 2;
   else
    if (intScore < 25)
     strVerdict = 3;
    else
     if (intScore < 35)
      strVerdict = 4;
     else
      if (intScore < 45)
       strVerdict = 5;
      else
       strVerdict = 6;
  $('#message-' + hash).html('<p>&nbsp;</p>' + passDesc[strVerdict]);
  if (strVerdict > 1) return true;
  else return false;
 }
 
 function checkEqual(obj, elem) {
  if (obj.value != $('#' + elem).val()) {
   obj.style.background = '#fcc';
   $('#' + elem).css('background', '#fcc');
   return false;
  }
  else {
   obj.style.background = '#cfc';
   $('#' + elem).css('background', '#cfc');
   return true;
  }
 }

 function deleteCommentary(id) {
  $.post("/ajax/delete.commentary.php", { id: id }, function(data){
   if (data == 2) { alert(language.a); location.reload(); }
   if (data == 1) alert(language.b);
   if (data == 0) alert(language.c);
  });
  return false;
 }
 
 var language = {
  'a': 'Комментарий удален',
  'b': 'Удалять может только администратор',
  'c': 'Ошибка передачи данных',
  'd': 'Вы уже голосовали!',
  'e': 'Спасибо! Ваш голос учтен',
  'f': 'Голосовать могут только авторизированные пользователи',
  'g': 'Быстрый поиск по сайту',
  'h': 'Авторизация на сайте',
  'i': 'Подписка на новости сайта',
  'j': 'Временно недоступно',
  'k': 'Возможность добавления закладок автоматически в данном браузере не поддерживается',
  'l': 'Не поддерживается вашим браузером',
  'm': 'Вы успешно подписаны на рассылку PRORAP.RU. Спасибо!',
  'n': 'Данный email уже включен в список рассылки',
  'o': 'Email введен не верно. Проверьте правельность набора',
  'p': 'Ваш комментарий добавлен',
  'q': 'Введено слишком короткое сообщение',
  'r': 'Добавлять комментарии могут только авторизированные пользователи',
  's': 'Email и пароль введены неверно',
  't': 'Данная учетная запись не найдена, или email и пароль введены неверно!',
  'u': 'Вы успешно авторизированны на сайте!',
  'v': 'Сервер openLogin в данный момент не отвечает',
  'w': 'Вы уже авторизованы. Обновите пожалуйста страницу',
  'x': 'Сообщение отправлено. Спасибо!',
  'y': 'Выделен слишком большой фрагмент текста',
  'z': 'Для того чтобы сообщить нам об ошибке в тексте, пожалуйста выделите фрагмент текста и нажмите "сообщить об ошибке" или нажмите на ctrl + e',

  'aa': 'Профиль пользователя',
  'ab': 'Настройки профиля пользователя',
  'ac': 'Ваш профиль обновлен',
  'ad': 'Необходимо авторизироваться на сайте',
  'ae': 'Настройка юзерпика',
  'af': 'Уведомления/Рассылка',
  'ag': 'Управление учетной записью',
  'ah': 'Восстановление пароля',
  'ai': 'Регистрация нового пользователя',

  'ak': 'Вы не указали старый пароль!',
  'al': 'Введеные новые пароли не совпадают',
  'am': 'Старый пароль указан не верно',
  'an': 'Неизвестная ошибка',
  'ao': 'Профиль обновлен, данные будут доступны после следующей авторизации на сайт!',
  'ap': 'Голосование завершено'
  };
 