// Java Script Dion [18 Февраля 2011]
// * rev. 3 Декабря 2011

// [#] Import Ajax
// --------------------------------------------------|
function NewAjax() {
 // Переменные    
 var GetAjax;
 var brow = navigator.appName; // Определяем браузер
  // В зависимости от Браузера 
  // [?] В Разных браузерах спецефическое объявление XMLHttpRequest
  if(brow == "Microsoft Internet Explorer")
   {
     // Internet Explorer
     GetAjax = new ActiveXObject("Microsoft.XMLHTTP");
   } 
   else 
   {
     // Остальные браузеры
     GetAjax = new XMLHttpRequest();
   }
   return GetAjax;
} // End: NewAjax
// --------------------------------------------------|   

// [!] Назначаем переменную обмена с сервером:
var gAjax = NewAjax();

// | Ф У Н К Ц И И |

// # Добавление комментариев
// [?] addcommentg - g(в конце) означает Гостями

// [!] Назначаем переменную обмена с сервером:
var gAjax = NewAjax();

function newcom(u_cat, u_id, u_url){
    // Функция добавления нового комментария с предпроверкой данных
    var resCh = checkuform();
    if (resCh == 'true') {addcommentg(u_cat, u_id, u_url); } 
    else {document.getElementById('add-stat').innerHTML = '<b>Ошибка:</b> ' + resCh + '<br/><font color="#bd0000"><b>Комментарий не добавлен!</b></font>';}
    document.getElementById('add-stat').style.visibility = 'visible';
    document.getElementById('add-stat').style.padding = '10px';
    document.getElementById('add-br').style.height = '10px';
}

function checkuform() {
    // * checkuform - check user form (проверка стандартной формы гостя)
    //   [?] Если всё введено верно и проверка не выявила недопустимых ошибок в полях формы, функция вернёт 'true'
    //       В остальных случаях, функция возвращает текст ошибки
    var chName;
    var chValue;
    var chMail; // Строка Email
    chName = document.comform.user_name.value;
    chValue = document.comform.com_value.value;
    chMail = document.comform.user_mail.value; // Заполняем переменную
    
    // Удаление лишних пробелов в конце и в начале строк (Текст и Имя)
    chName = chName.trim();
    document.comform.user_name.value = chName;
    
    chValue = chValue.trim();
    document.comform.com_value.value = chValue
    
    // Обработка пробелов
    // Email: не должен содержать пробелов!
    document.comform.user_mail.value = spacedel(chMail) // Обновляем строку Mail без пробелов (позже лучше сделать первоначальную проверку на пробел)
    // Имя: не является ли имя одним или несколькими пробелами?
    var NameNoSpace = spacedel(chName) // Удаляем все пробелы из Имени
    if(NameNoSpace == ''){chName = ''; document.comform.user_name.value = '';} // Очищаем переменную и текстовое поле
    // Текст сообщения: так же проверка на только пробелы в сообщении
    var ValueNoSpace = spacedel(chValue) // Удаляем все пробелы из Текста
    if(ValueNoSpace == ''){chValue = ''; document.comform.com_value.value = '';} // Очищаем переменную и текстовое поле
    
    // [!] * Сделать проверку на пробелы в полях (частые случае отправки пробелов)
    
    var cresult = 'true';
    // [#] Правила:
    // Текст сообщения - не может быть короче двух символов. В тексте не должно содеражаться ссылок ("http://")
    if(chValue.length < 2 || chValue == '') {cresult = 'Слишком короткий текст сообщения.';}
    if(chValue.indexOf("http://") != -1) {cresult = 'В тексте обнаружена ссылка. Ссылки в комментариях запрещены.';}
    // Email - обязательное наличие символа "@" (Собачка), "." разделяющая имя домена и как минимум 8 символов (ab@ab.ru). Не должно содержать пробелов
    //         [!] * Реализовать проверку, только латинские буквы (регулярные выражения)
    var chMailBool = true; // Результат проверки поля: true - всё хорошо, false - допущена ошибка...
    if(chMail.indexOf("@") == -1) {chMailBool = false;}
    if(chMail.indexOf(".") == -1) {chMailBool = false;}
    if(chMail.length < 8) {chMailBool = false;}
    if(chMailBool == false) {cresult = 'Поле Email заполнено неверно';}
    // Имя - Минимум 3 символа
    if (chName.length < 3 || chName == '') {cresult = 'Имя должно содержать не менее трёх символов';}
    
    return cresult;
}

function addcommentg(q_cat, q_id, q_url){
    
  // addcommentg - функция добавки комментария методом Ajax
  // * q_cat - Зарегестрированный раздел сайта (например: soft)
  // * q_id  - ID материала,
  // * q_url - доменное имя сайта формата site.ru, необходимо для специфических операций
  
  // [?] Элементы user_name, user_mail, com_value - должны присутствовать в форме на страничке с которой происходит отправка сообщения
  // # Расфасовка значений полей в переменные
    p_name = document.comform.user_name.value;  // Nik
    p_mail = document.comform.user_mail.value;  // E-mail
    p_value = document.comform.com_value.value; // Комментарий
    
    var poststr = 'name='+ p_name + '&mail=' + p_mail + '&value=' + p_value + '&cat=' + q_cat + '&id=' + q_id;
    gAjax.open('POST', '/engine/addcom.php', true);

  gAjax.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // Форма
  gAjax.setRequestHeader("Content-length", poststr.length); // Размер отсылаемых данных
  gAjax.setRequestHeader("Connection", "close");

gAjax.onreadystatechange = function() {
  if (gAjax.readyState == 4 && gAjax.status == 200) {
     
     
       var gComand = gAjax.responseText;
       
       
       // В зависимости от условий
       if(gComand == 'true')
       {
         // Всё прошло успешно и сообщение добавлено в базу
         // Сообщим об этом пользователю
         document.getElementById('add-stat').innerHTML =  '<font color="blue"><b>Комментарий успешно добавлен!</b></font> <img src="http://' + q_url + '/engine/skins/imgold/smile-wink.gif" border="0" /><br/>Чтобы увидеть ваше сообщение или добавить ещё одно, обновите страницу (F5)';
         document.getElementById('add-stat').style.backgroundColor = '#edffb4';
         // document.comform.user_name.value = ''; 
         // document.comform.user_mail.value = '';
         // document.comform.com_value.value = '';
         document.comform.user_add.style.visibility = 'hidden'; // Делаем кнопку добавления невидимой
         document.comform.user_name.disabled = 1;
         document.comform.user_mail.disabled = 1;
         document.comform.com_value.disabled = 1;
       }
       else
       {
         document.getElementById('add-stat').innerHTML = gComand + '<br/><br/>';
       }
       
  }
};
gAjax.send(poststr);


}

function spacedel(myStr) {
    // Функция удаления всех пробелов в строке
    var RegStr = new RegExp("\\s+", "g");
    var NewStr = myStr.replace(RegStr, '');
    return NewStr;
}
