$(document).ready( function() {
  login_init();
  remind_init();
  reg_init();
  user_edit_init();
  private_obj_init();
  estate_obj_init();
  gallery_obj_init();
  site_obj_init();
  message_user_init();
  message_form_init();
  message_forum_init();
  message_owner_init();
  comment_form_init();
  newtheme_form_init();
  aviabilet_form_init();
  arendajacht_form_init();
});

var formSubmit = {  // Для проверки форм
  mask:  new RegExp('^[0-9a-z_.]+@[0-9a-z_^.-]+\\.[a-z]{2,}$', 'ig'),
  email: new RegExp('^[0-9a-zA-Z_\.-]+@[0-9a-zA-Z\.-]+$')  // 14.10.11 -
}

function insertError(form, field_name, error_text) {
   if( field_name == 'common' ) {
      alert("Ошибка: \n" + error_text);
   } else {
      alert("Ошибка в поле " + field_name + ": \n" + error_text);
   }
}

function removeError(form, field_name) {
}

function setError(form, response) {
  var error = response.getElementsByTagName( 'error' );
  for( var i = 0; i < error.length; i++ ) {
    var error_text  = error[i].firstChild ? error[i].firstChild.data : '';
    var error_field = error[i].getAttribute( 'name' );
    insertError(form, error_field, error_text);
  }
}

/////////////////////////////

function onclick_site(siteid, banner) {  // для подсчета вызовов при переходе на сайт рейтинга 26.05.11
  
   var pars = {siteid: siteid, banner: banner};
   var url = "/shell/click_site.php";

   $.ajax( {type: "POST", url:  url, data: pars, success: onclick_site_response });
   return false;
}
function onclick_site_response(responseXML, type) {
  
//alert(responseXML);  // ничего не делаем ?

}


////////////////////////////////

function onClick_RoboKassa(user_id) {    // при клике на кнопку ОплатаЧерезРобоКассу // 17.06.11

//  if ( !(user_id == 15576 || user_id == 149) ) {   // 16.09.11 !!???? // 27.10.11
//    alert('Извините, оплата через РобоКассу временно отключена - обратитесь к Администратору');     
//    return false;
//  }

   var form = document.getElementById('robokassa_form');
   var summ = form.OutSum.value;  // 20.10.11

   var pars = {user_id: user_id, summ: summ};
   var url = "/shell/robokassa.php";
 
   if( confirm('Вы хотите выполнить оплату через РобоКассу ?') ) {
      $.ajax({ type: "POST", url:  url, data: pars, success: robokassa_response });
   }
   return false;
}

function robokassa_response(responseXML, type) {

   var form = document.getElementById('robokassa_form');

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {

        var login = response.getAttribute( 'login' );
        var id    = response.getAttribute( 'id' );
        var user  = response.getAttribute( 'user' );
        var crc   = response.getAttribute( 'crc' );
    
        form.MrchLogin.value      = login; 
        form.InvId.value          = id; 
        form.Shp_item.value       = user; 
        form.SignatureValue.value = crc;
        form.Desc.value           = 'ПредОплата за объявления в Черногория клуб пользователем ' + user + ' по счету N ' + id;       
        
        form.submit(); // !
   }
   else setError(form, response);
}

/////////////////////////////
function onclick_raspred_oplat() { // распределение оплаты для отмеченных объектов
   
  var form = document.getElementById('raspred_form');
  var list = '';
  var cnt  = 0;
  for(j = 0; j < form.elements.length; j++) {
    var e    = form.elements[j]; // Текущий элемент
    var type = e.type;
    var id   = e.id;
    if (type=='checkbox' && id.substr(0,3)=='cb_' && e.checked) {
      list += (list=='' ? '' : ',') + id.substr(3);
      cnt++;
    }
  }
  if (cnt==0) {
    alert('Нет отмеченных объектов');       // !?
    return false;
  }
  if( confirm('Оплатить '+cnt+' отмеченных объектов ?') ) {
    
    var user = document.getElementById('user_id');

    var pars = {user: user.value, list: list};
    var url = "/shell/rashod.php";
 
    $.ajax({ type: "POST", url:  url, data: pars, success: raspred_oplat_response });
  }
  return false;
}

function raspred_oplat_response(responseXML, type) {

  var form = document.getElementById('raspred_form');

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
//    alert('Оплата выполнена');
      var pers = response.getAttribute( 'pers' );  // 18.01.12  
      var pses = response.getAttribute( 'pses' );  // 18.01.12   
      location = '/user/balans/?param='+pers+pses; // 18.01.12 !?
   }
   else setError(form, response);
}

function onclick_oplat1_obj(tip, obj, price, ndays, link) { // оплата 1-го объкта
  if ( confirm('Оплатить '+price+' руб. за публикацию на '+ndays+' дн. объекта '+obj+' ?') ) {
    
    var user = document.getElementById('user_id');

    var list = tip+obj;
    var pars = {user: user.value, list: list};
    var url = "/shell/rashod.php";
 
    $.ajax({ type: "POST", url:  url, data: pars, success: oplat1_obj_response });
    
  }
  return false;
}  
function oplat1_obj_response(responseXML, type) {

  var form = document.getElementById('raspred_form');
  
  var response = responseXML.documentElement;
  var status = response.getAttribute( 'status' );
  if( status == 'ok' ) {
//    alert('Оплата выполнена');
      location.reload(true); // !?
  }
  else setError(form, response);
}

///////////////////////

function getParam_Window () {  // ПОКА НЕ ИСПОЛЬЗУЕТСЯ !!??
   var sizeX = -1; var sizeY = -1; var scroX = -1; var scroY = -1;
   if (window.innerWidth) { // Все броузеры, кроме IE
      sizeX = window.innerWidth; 
      sizeY = window.innerHeight;
      scroX = window.pageXOffset; 
      scroY = window.pageYOffset;
   }
   else if (document.documentElement && document.documentElement.clientWidth) { // Эти функции предназначены для IE 6 и документов с объявлением DOCTYPE
      sizeX = document.documentElement.clientWidth; 
      sizeY = document.documentElement.clientHeight; 
      scroX = document.documentElement.scrollLeft;
      scroY = document.documentElement.scrollTop;
   }
   else if (document.body.clientWidth) { // Эти функции предназначены для IE4, IE5 и IE6 без объявления DOCTYPE
      sizeX = document.body.clientWidth; 
      sizeY = document.body.clientHeight; 
      scroX = document.body.scrollLeft; 
      scroY = document.body.scrollTop; 
   }
   return {sizeX : sizeX, sizeY : sizeY, scroX : scroX, scroY : scroY};
}
///////////////////////////////

function create_dialog(hgt, wdt, pos) {  // 24.11.11 создание окна диалога
  
    $('#dialog').dialog({
//    title:    'Корзина объектов',  
      width:    wdt, 
      height:   hgt,
      position: pos,
      resizable: false,
      draggable: true, 
      dragStop: function(event, ui) {
//       alert('top = ' + ui.offset.top + ' left = ' + ui.offset.left);
         var str = ui.offset.left + '-' + ui.offset.top;
         document.cookie = 'basket_coord_X-Y=; path=/; max-age=0';                           // удаление !?
         document.cookie = 'basket_coord_X-Y=' + str + '; path=/; max-age=' + (365*3600*24); // запись на год !?
      },
      close: function(event, ui) {
         is_dialog_ = false;
      },
      buttons: {
//       'Перейти к корзине': function() { location = '/basket/';  },
//       'Закрыть': function() { $(this).dialog('close'); },
      }
    });
}

function addInBasket_Obj(url, id) // 24.11.11 СЕЙЧАС НЕ ИСПОЛЬЗУЕТСЯ (см. addInBasket_Obj_) !!!
{
  location = url+'?addinbasket='+id+'#'+id;
}

function addInBasket_Obj_Ps(obj) // 03.02.12 при клике на картинку Добавить в корзину на метке карты объекта psector
{
  return addInBasket_Obj_('ps', obj)
}
function addInBasket_Obj_Es(obj) // 03.02.12 при клике на картинку Добавить в корзину на метке карты объекта estate
{
  return addInBasket_Obj_('es', obj)
}
function addInBasket_Obj_(type, obj) // 24.11.11 при клике на картинку Добавить в корзину на странице cписка объектов или метки карты
{
   var pars = {type: type, id : obj, basket_param: 1};
   var url = "/shell/basket.php";
 
   $.ajax({ type: "POST", url:  url, data: pars, success: addinbasket_obj_response });
   return false;
}
function addinbasket_obj_response(responseXML, type) {

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
      var obj  = response.getAttribute( 'obj' );
      var typ  = response.getAttribute( 'typ' );  // 03.02.12
      var tit  = response.getAttribute( 'tit' );
      var src  = response.getAttribute( 'src' );
      var hgt  = parseInt(response.getAttribute( 'hgt' ));
      var wdt  = parseInt(response.getAttribute( 'wdt' ));
      var pos0 = parseInt(response.getAttribute( 'pos0'));
      var pos1 = parseInt(response.getAttribute( 'pos1'));

      var img = document.getElementById('img_'+typ+'_'+obj);       // 03.02.12
      if (img == null) img = document.getElementById('img_'+obj);  // ПОКА ТАК !?
      if (img != null) img.style.display = 'none'; 
      
      var dialog = document.getElementById('dialog');
      if (dialog==null) {
//      alert('ОШИБКА : НЕТ dialog'); // !?
        return;      
      }

      if (is_dialog_) {  // диалог есть и показывается - изменяем
        dialog.innerHTML = src;
        $('#dialog').dialog('option', 'title',  tit);
        $('#dialog').dialog('option', "height", hgt);
        $('#dialog').dialog('option', "width",  wdt);
      }
      else if (dialog.innerHTML.length == 0) {  // нет диалога - создаем новый
        dialog.innerHTML = src;
        dialog.title     = tit;
        create_dialog(hgt, wdt, [pos0,pos1]);       
        is_dialog_ = true;
      }
   }
   else setError(form, response);
}


function onClick_ShowBasket() {  // при клике на кнопку Просмотр карзины  // 18.07.11
  location = '/basket/'; 
}

function onClick_AddInBasket(type, obj) {  // при клике на кнопку Поместить в карзину на странице объекта // 18.07.11
   var pars = {type: type, id : obj};
   var url = "/shell/basket.php";
 
//04.10.11   if( confirm('Вы хотите добавить объект в корзину ?') ) {
      $.ajax({ type: "POST", url:  url, data: pars, success: addinbasket_response });
//   }
   return false;
  
}
function addinbasket_response(responseXML, type) {

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
//     alert("Объект добавлен в карзину"); // !? // 10.11.11 
       var but = document.getElementById('add_in_button');
       if (but != null) but.disables = true;
       location.reload(); // !?
   }
   else setError(form, response);
}

function onClick_DelFromBasket(id) {  // при клике на кнопку Удалить из корзикы на странице объекта // 18.07.11
   var pars = {type: '-', id : id};
   var url = "/shell/basket.php";
 
   if( confirm('Вы хотите удалить объект из корзины ?') ) {
      $.ajax({ type: "POST", url:  url, data: pars, success: delfrombasket_response });
   }
   return false;
  
}
function delfrombasket_response(responseXML, type) {

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
//   alert("Объект удален из карзины"); // !?
     location.reload();
   }
   else setError(form, response);
}

/////////////////////////////////////

function goto_hotel_bronir(id, site) {  // 24.11.11 переход на бронирование отеля

   var pars = {id : id, site : site};
   var url = "/shell/hotel_bronir.php";
   $.ajax({ type: "POST", url:  url, data: pars, success: hotel_bronir_response });
}
function hotel_bronir_response(responseXML, type) {

  var response = responseXML.documentElement;
  var site     = response.getAttribute( 'site' );
  var wnd = window.open(site);
  wnd.focus();
}

/////////////////////////////////////

function onClick_UpdUserStatus(user, newval, opl_bez, balans) {  // при клике на кнопку Изменить статус пользователя // 19.07.11
   var pars = {user : user, newval : newval};
   var url = "/shell/updstatus.php";
   var txt = newval==0 ? 'НЕ коммерческий статус c количеством беcплатных объявлений = '+opl_bez : 'Комммерческий статус c оплатой ВСЕХ услуг'; 
   if( confirm('Вы ДЕЙСТВИТЕЛЬНО хотите установить ' + txt + ' ?') ) {
      $.ajax({ type: "POST", url:  url, data: pars, success: upduserstatus_response });
   }
   return false;
  
}
function upduserstatus_response(responseXML, type) {

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
     var txt = response.getAttribute( 'txt' );
     alert(txt); // !?
     location.reload();
   }
   else setError(form, response);
}

/////////////////////////////////////

function Delete_FailFoto(foto_id, item_id, mod_id, table) {  // удаление файла фото // 24.01.12
   var pars = {foto_id : foto_id, item_id : item_id, mod_id : mod_id, table : table};
   var url = "/shell/delete_foto.php";
 
   $.ajax({ type: "POST", url:  url, data: pars, success: deleteFailFoto_response });
   return false;
  
}
function deleteFailFoto_response(responseXML, type) {

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
//   alert("Файл фото удален"); // !?
     location.reload();
   }
   else setError(form, response);
}


////////////////////////////
// для работы с файлами фото

function strFotos() { // строка описания файлов фото [см. /js/dd.js AppendPhotos() и /inc/common.inc.php update_foto_object()]
  var str = '';
  if(typeof(formData[1]['photosNode'])=='object') {
    var node = formData[1]['photosNode'];
    node = node.firstChild;
    while ( node != null ) {
      objid    = node.getAttribute('objid');
      imgnode  = node.firstChild;
      classimg = imgnode.className;
      lead     = (classimg == 'ImgDragBoxLeader') ? '+' : '-'; // равно 1 символ
      altnode  = document.getElementById('form_1_alt_'+objid);
      alt      = altnode.value;
      alt1     = '';
      for (i=0; i<alt.length; i++) {  // без символа-разделителя '~' !?
        ch = alt.charAt(i);
        if (ch=='~') ch='-';  
        alt1 += ch;
      }
      while (objid.length < 11 ) objid += ' '; // равно 11 символов
      str      += ((str == '') ? '' : '~') + lead + objid + alt1; // !?
      node = node.nextSibling;
    }
  }
  return str;
}

function afterSaveFormFotos() {  // действия после сохранения формы с фото 
  var trash = document.getElementById('form_1_trash'); // = formData[1]['trashNode'];
  if (trash != null) {                              // очистить и скрыть узел "Удаленные фотографии"
    while ( true ) {
      node = trash.lastChild;
      if (node == null) break;
      trash.removeChild(node);
    }
    trash.parentNode.style.display = 'none'; 
  }
  var remem = document.getElementById('form_1_saveremember');
  if (remem != null) remem.style.display = 'none';  // и скрыть напоминание  
}

function XML_parse(text) {
  if (typeof DOMParser != "undefined") {     // Mozilla, Firefox и родственные броузеры
    return (new DOMParser()).parseFromString(text, "application/xml");
  }
  if (typeof ActiveXObject != "undefined") { // Internet Explorer.
    var doc = XML.newDocument(); // Создать пустой документ
    doc.loadXML(text); // Выполнить синтаксический разбор текста в документе
    return doc; 
  }
// последняя возможность попытаться загрузить документ с URL адреса со спецификатором data
  var url = "data:text/xml;charset=utf-8," + encodeURIComponent(text);
  var request = new XMLHttpRequest();
  request.open("GET", url, false);
  request.send(null);
  return request.responseXML;
}


function Uploadify_onOpen(queueID, fileObj) {  // 30.11.11
   var butSav = document.getElementById('form_1_save1');
   if (butSav != null) {
      butSav.disabled = true;         // запрещаем кнопку Сохранить !?
      butSav.value    = "Загрузка фото ..." // 01.12.11
   }   
   formData[1]['isOpen'] = 1; // !?
   return true;
}  

function Uploadify_onComplete(queueID, fileObj, responseXML, data) {
  
 //alert(responseXML);
  
   var docXML = XML_parse(responseXML);
   var response = docXML.documentElement;
   var status = response.getAttribute( 'status' );
   var name   = response.getAttribute( 'name' );
   if( status == 'ok' ) {
      formData[1]['cntUpload']++;
      var id  = response.getAttribute( 'id' );
      var ext = response.getAttribute( 'ext' );
      var cnt = response.getAttribute( 'cnt' );
      var add = response.getAttribute( 'add' );
      eval(add); 
//    alert('Файл '+name+' загружен : id='+id+' '+cnt+ext); // !??
   }
   else {
      var err = response.getAttribute( 'err' );
      alert('ОШИБКА загрузки файла '+name+' : '+err + '#' + status + "#");       // 07.02.12 !?
   }
   return true; // !
}

function Uploadify_onAllComplete(data, table) {
// alert( 'Добавлено ' + formData[1]['cntUpload'] + ' фaйлов из ' + data.filesUploaded );   // !?
// if (table == 'gallery') gallery_obj_request1();
// else                    alert('? НEВЕРНАЯ таблица '+table); // !??

   var butSav = document.getElementById('form_1_save1'); // 30.11.11
   if (butSav != null) {
     butSav.disabled = false;       // разрешаем кнопку Сохранить !?
     butSav.value    = "Сохранить"  // 01.12.11
   }  
   formData[1]['isOpen']    = 0;   // !?
   formData[1]['cntUpload'] = 0;
   return true; // !?
}

//////////////////////////////////////////////////////////////////////////
// Авторизация
function login_init() {
   form = $('#log');
   if( form ) {
      form.bind('submit', login_request);
   }
}

function login_request(event) {
    
   event.stopPropagation();

   var form = document.getElementById('log');

   var login = $('#log-login').val();  // email => login 28.05.11
   var pswd  = $('#log-pswd').val();
   var pars  = {login: login, pswd: pswd};
   var url = "/shell/login.php";
      
   $.ajax({ type: "POST", url:  url, data: pars, success: login_response });
   return false;
}
 
function login_response(responseXML, type) {

   var form = document.getElementById('log');

   var response = responseXML.documentElement;
   var status   = response.getAttribute( 'status' );
   if( status == 'ok' ) {
      location.reload();
   }
   else setError(form, response);
}

//////////////////////////////////////////////////////////////////////////
// Напоминание пароля
function remind_init() {
   form = $('#remind');
   if( form ) {
      form.bind('submit', remind_request);
   }
}

function remind_request(event) {
    
   event.stopPropagation();
    
   var form = document.getElementById('remind');

   var email = form.email.value;
   var pars = {email: email, remind: 1};
   var url = "/shell/login.php";

   $.ajax( {type: "POST", url:  url, data: pars, success: remind_response });
   return false;
}

function remind_response(responseXML, type) {

   var form = document.getElementById('remind');
   
   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
      alert('Пароль выслан на указанный email');
      location = '/'; // !?
   }
   else setError(form, response);
}

//////////////////////////////////////////////////////////////////////////
// Регистрация
function reg_init() {
   var form = $('#reg');
   if( form != null ) {
      form.bind('submit', reg_request);
   }
}

function reg_request(event) {
 
   event.stopPropagation();
 
   var form = document.getElementById('reg');
   
   pars = check_registration(form);
 
   if( !pars['is_error'] ) { 
      var url = "/shell/registration.php";
      $.ajax({ type: "POST", url:  url, data: pars, success: reg_response });
   }
   return false;
}
  
function reg_response(responseXML, type) {

   var form = document.getElementById('reg');

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
       var divform  = document.getElementById('divform');  // 24.06.11
       var divregok = document.getElementById('divregok');
       divform.style.display  = "none";  
       divregok.style.display = "block";
   }
   else setError(form, response);
}

function check_registration(form) {
 
   var is_error = false;

   var login     = form.login.value;
   var pswd      = form.password.value;
   var email     = form.email.value;
   var phone     = form.phone.value;
   var fio       = form.fio.value;
   var town      = form.town.value;
   var city      = form.city.value;
   var commerce  = form.commerce.value;
   var commerce2 = form.commerce2.value;
   var userlang  = form.userlang.value;
   var about     = form.additional.value;

   // Проверка полей
   if(email == '') {
      insertError(form, 'email', 'Укажите E-mail');
      is_error = true;
   } else if (!formSubmit.email.test(email)) {
      insertError(form, 'email', 'Некорректный E-mail ');
      is_error = true;
   } else {
      removeError(form, 'email');
   }

   if (pswd == '') {
      insertError(form, 'password', 'Укажите пароль');
      is_error = true;
   } else if (pswd.length < 3) {
      insertError(form, 'password', 'Короткий пароль');
      is_error = true;
   } else {
      removeError(form, 'password');
   }

   if (fio == '') {
      insertError(form, 'fio', 'Наберите что-нибудь');
      is_error = true;
   } else if (fio.length < 3) {
      insertError(form, 'fio', 'Короткое ФИО');
      is_error = true;
   } else {
      removeError(form, 'fio');
   }

   if (login == '') {
      insertError(form, 'login', 'Наберите что-нибудь');
      is_error = true;
   } else if (login.length < 3) {
      insertError(form, 'login', 'Короткий Логин');
      is_error = true;
   } else {
      removeError(form, 'login');
   }
 
   return {is_error  : is_error,
           fio       : fio,
           login     : login,
           email     : email,
           phone     : phone,
           pswd      : pswd,
           town      : town,
           city      : city,
           commerce  : commerce,
           commerce2 : commerce2,
           userlang  : userlang,
           about     : about 
          };
}

//////////////////////////////////////////////////////////////////////////
// Редактирование профиля пользователя
function user_edit_init() {
   var form = $('#user_edit');
   if( form != null ) {
      form.bind('submit', user_edit_request);
   }
}

function user_edit_request(event) {
 
   event.stopPropagation();
 
   var form = document.getElementById('user_edit');
   
   user = check_registration(form);  // проверка как при регистрации !
 
   if( !user['is_error'] ) { 
      var url = "/shell/user_edit.php";
      var fotos = strFotos(); // 05.12.11
      var pars = {login    : user['login'],
                  pswd     : user['pswd'],
                  email    : user['email'],
                  phone    : user['phone'],
                  fio      : user['fio'],
                  town     : user['town'],
                  city     : user['city'],
                  commerce : user['commerce'],
                  commerce2: user['commerce2'],
                  userlang : user['userlang'],
                  about    : user['about'],
                  about_1  : form.about_1.value,  // 17.01.12
                  about_2  : form.about_2.value,
                  about_3  : form.about_3.value,
                  about_4  : form.about_4.value,
                  about_5  : form.about_5.value,
                  about_6  : form.about_6.value,
                  about_7  : form.about_7.value,
                  about_8  : form.about_8.value,
                  fotos    : fotos,
                  id       : form.user_id.value        
                 };
                 
      $.ajax({ type: "POST", url:  url, data: pars, success: user_edit_response });
   }
   return false;
}
  
function user_edit_response(responseXML, type) {

   var form = document.getElementById('user_edit');

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
        alert("Профиль изменен");  // !?
        location.reload();     // 05.12.11 !?
   }
   else setError(form, response);
}

//////////////////////////////////////////////////////////////////////////
// Обработка объекта ЧастныйСектор

function private_obj_init() {
   var form = $('#private_obj');
   if( form != null ) {
      form.bind('submit', private_obj_request);
   }
}

function private_obj_request(event) {

   if ( formData[1]['isOpen'] ) {  // 30.11.11
       alert( "Дождитесь окончания загрузки фото" ); // !?
       return false;
   }
 
   event.stopPropagation();

   var form = document.getElementById('private_obj');
   
   if (!before_save_Coord(form)) return false; // 09.11.11
   
   pars = check_private(form);
   if( !pars['is_error'] ) { 
      var url = "/shell/user_private_obj.php";
      $.ajax({ type: "POST", url:  url, data: pars, success: private_obj_response });
   }
   return false;
}
  
function private_obj_response(responseXML, type) {
   var form     = document.getElementById('private_obj');
   var response = responseXML.documentElement;
   var status   = response.getAttribute( 'status' );
   var id       = response.getAttribute( 'id' );
   var act      = response.getAttribute( 'act' );
   if( status == 'ok' ) {
     if (act == 'add') { 
     //alert( "Создан объект "+id" ); // !?
       location = '/user/private-add/?edit='+id+'#edit'; // переход на страницу изменения       
     } 
     else { 
       afterSaveFormFotos();       // вместо обновления страницы изменения !
       after_save_Coord(form);     // 09.11.11
       alert( "Объект сохранен" ); // !?
     } 
   } 
   else { 
     setError(form, response);
   } 
}

function check_private(form) {
 
   var is_error = false;

   var user      = form.user_id.value;
   var type      = form.type.value;
   var town      = form.town.value;
   var area      = parseFloat(form.area.value);
   var price     = parseFloat(form.price.value);
   var capa      = parseInt(form.capa.value);
   var priceby   = form.priceby.value;
   var prices    = form.prices1.value + ','
                 + form.prices2.value + ','
                 + form.prices3.value + ','
                 + form.prices4.value + ','
                 + form.prices5.value + ','
                 + form.prices6.value + ','  // 19.09.11 
                 + form.prices7.value + ','
                 + form.prices8.value + ','
                 + form.prices9.value + ','
                 + form.prices10.value + ','
                 + form.prices11.value + ','
                 + form.prices12.value; 
   var notice    = form.notice.value;
   var text      = form.text.value;
   var comment   = form.comment.value;
   var id        = form.obj_id.value;

   var geo1      = form.yandexGeoCoord1.value; // 09.11.11
   var geo2      = form.yandexGeoCoord2.value; 

   var domorj    = parseInt(form.domorj.value); // 25.01.11
   
   var month     = new Date().getMonth();  // 16.11.11 цена = цене тек.месяца !
   if      (month==0)  price = form.prices1.value;
   else if (month==1)  price = form.prices2.value;
   else if (month==2)  price = form.prices3.value;
   else if (month==3)  price = form.prices4.value;
   else if (month==4)  price = form.prices5.value;
   else if (month==5)  price = form.prices6.value;
   else if (month==6)  price = form.prices7.value;
   else if (month==7)  price = form.prices8.value;
   else if (month==8)  price = form.prices9.value;
   else if (month==9)  price = form.prices10.value;
   else if (month==10) price = form.prices11.value;
   else                price = form.prices12.value;
   
   // Проверка полей
   if(type == 0) {
      insertError(form, 'type', 'Выберите тип');
      is_error = true;
   } else {
      removeError(form, 'type');
   }
   if(town == 0) {
      insertError(form, 'town', 'Выберите город');
      is_error = true;
   } else {
      removeError(form, 'town');
   }
   if(!(area > 0)) {
      insertError(form, 'area', 'Неверная площадь');
      is_error = true;
   } else {
      removeError(form, 'area');
   }
   if(!(price > 0)) {
      insertError(form, 'price', 'Неверная цена текущего месяца');
      is_error = true;
   } else {
      removeError(form, 'price');
   }
   if(!(capa >= 0)) {
      insertError(form, 'capa', 'Неверная вместимость');
      is_error = true;
   } else {
      removeError(form, 'capa');
   }
 
   var fotos = strFotos();
 
   return {is_error  : is_error,
           user      : user,
           town      : town,
           type      : type,
           domorj    : domorj.toString(), // 25.01.12
           area      : area.toString(),
           price     : price.toString(),
           capa      : capa.toString(),
           priceby   : priceby,
           prices    : prices,
           notice    : notice,
           text      : text,
           comment   : comment,
           fotos     : fotos,
           geo1      : geo1,  // 09.11.11
           geo2      : geo2,
           max_ord   : -1,    // < 0 !
           id        : id
          };
}

//////////////////////////////////////////////////////////////////////////
// Обработка объекта Недвижимость

function estate_obj_init() {
   var form = $('#estate_obj');
   if( form != null ) {
      form.bind('submit', estate_obj_request);
   }
}

function estate_obj_request(event) {
  
   if ( formData[1]['isOpen'] ) {  // 30.11.11
       alert( "Дождитесь окончания загрузки фото" ); // !?
       return false;
   }
  
   event.stopPropagation();
   
   var form = document.getElementById('estate_obj');
   
   if (!before_save_Coord(form)) return false; // 09.11.11
   
   pars = check_estate(form);
   if( !pars['is_error'] ) { 
      var url = "/shell/user_estate_obj.php";
      $.ajax({ type: "POST", url:  url, data: pars, success: estate_obj_response });
   }
   return false;
}
  
function estate_obj_response(responseXML, type) {
   var form     = document.getElementById('estate_obj');
   var response = responseXML.documentElement;
   var status   = response.getAttribute( 'status' );
   var id       = response.getAttribute( 'id' );
   var act      = response.getAttribute( 'act' );
   if( status == 'ok' ) {
     if (act == 'add') { 
     //alert( "Создан объект "+id" ); // !?
       location = '/user/estate-add/?edit='+id+'#edit'; // переход на страницу изменения       
     } 
     else { 
       afterSaveFormFotos();       // вместо обновления страницы изменения !
       after_save_Coord(form);     // 09.11.11
       alert( "Объект сохранен" ); // !?
     } 
   } 
   else { 
     setError(form, response);
   } 
}

function check_estate(form) {
   var is_error  = false;
   var user      = form.user_id.value;
   var type      = form.type.value;
   var town      = form.town.value;
   var area      = parseFloat(form.area.value);
   var area1     = parseFloat(form.area1.value);
   var area2     = parseFloat(form.area2.value);
   var price     = parseFloat(form.price.value);
   var notice    = form.notice.value;
   var text      = form.text.value;
   var comment   = form.comment.value;
   var id        = form.obj_id.value;
   
   var geo1      = form.yandexGeoCoord1.value; // 09.11.11
   var geo2      = form.yandexGeoCoord2.value; 
   
   // Проверка полей
   if(type == 0) {
      insertError(form, 'type', 'Выберите тип');
      is_error = true;
   } else {
      removeError(form, 'type');
   }
   if(town == 0) {
      insertError(form, 'town', 'Выберите город');
      is_error = true;
   } else {
      removeError(form, 'town');
   }
   if(!(area > 0)) {
      insertError(form, 'area', 'Неверная общая площадь');
      is_error = true;
   } else {
      removeError(form, 'area');
   }
   if(!(area1 >= 0)) {
      insertError(form, 'area1', 'Неверная жилая площадь');
      is_error = true;
   } else {
      removeError(form, 'area1');
   }
   if(!( area2 > 0  || ( (type==169 || type==170) && area2==0) )) {  // 28.09.11 для Квартиры или Дома/Виллы МОЖЕТ = 0 !
      insertError(form, 'area2', 'Неверная площадь участка');
      is_error = true;
   } else {
      removeError(form, 'area2');
   }
   if(!(price > 0)) {
      insertError(form, 'price', 'Неверная стоимость');
      is_error = true;
   } else {
      removeError(form, 'price');
   }

   var fotos = strFotos();
  
   return {is_error  : is_error,
           user      : user,
           town      : town,
           type      : type,
           area      : area.toString(),
           area1     : area1.toString(),
           area2     : area2.toString(),
           price     : price.toString(),
           notice    : notice,
           text      : text,
           comment   : comment,
           fotos     : fotos,
           geo1      : geo1,  // 09.11.11
           geo2      : geo2,
           max_ord   : -1,    // < 0 !
           id        : id
          };
}

//////////////////////////////////////////////////////////////////////////
// Обработка объекта Галерея

function gallery_obj_init() {
   var form = $('#gallery_obj');
   if( form != null ) {
      form.bind('submit', gallery_obj_request);
   }
}

function gallery_obj_request(event) {  // запрос на добавление или изменение

   if ( formData[1]['isOpen'] ) {  // 30.11.11
       alert( "Дождитесь окончания загрузки фото" ); // !?
       return false;
   }
 
   event.stopPropagation();

   var form = document.getElementById('gallery_obj');
   
   pars = check_gallery(form);
 
   if( !pars['is_error'] ) { 
      var url = "/shell/user_gallery_obj.php";
      $.ajax({ type: "POST", url:  url, data: pars, success: gallery_obj_response });
   }
   return false;
}
function gallery_obj_response(responseXML, type) {
   var form     = document.getElementById('gallery_obj');
   var response = responseXML.documentElement;
   var status   = response.getAttribute( 'status' );
   var id       = response.getAttribute( 'id' );
   var act      = response.getAttribute( 'act' );
   if( status == 'ok' ) {
     if (act == 'add') { 
     //alert( "Создана галерея "+id" ); // !?
       location = '/user/gallery-add/?edit='+id+'#edit'; // переход на страницу изменения       
     } 
     else { 
   ////location.replace('/user/gallery-add/?edit='+id+'#edit');  // !?
     //location.reload(true);
     //location.hash = "#edit";
       afterSaveFormFotos(); // вместо обновления страницы изменения !
       alert( "Галерея сохранена" ); // !?
     } 
   } 
   else { 
     setError(form, response);
   } 
}
function check_gallery(form) {
 
   var is_error = false;

   var user      = form.user_id.value;
   var name      = form.name.value;
   var tags      = form.tags.value;
   var text      = form.text.value;
   var id        = form.obj_id.value;
   
   // Проверка полей
   if(name == '') {
      insertError(form, 'name', 'Нет названия');
      is_error = true;
   } else {
      removeError(form, 'name');
   }
   
   var fotos = strFotos();
  
   return {is_error  : is_error,
           user      : user,
           name      : name,
           tags      : tags,
           text      : text,
           fotos     : fotos,
           max_ord   : -1,    // < 0 !
           id        : id
          };
}


function gallery_obj_request1() { // запрос на изменение после добавления файлов фото (НЕ ИСПОЛЬЗУЕТСЯ !!??)
   var form = document.getElementById('gallery_obj');
   var id        = form.obj_id.value;
   var max_ord   = formData[1]['maxOrder'];
   var fotos     = strFotos();
   pars = {
           fotos     : fotos,
           max_ord   : max_ord, // >= 0 !
           id        : id
          }; 
   var url = "/shell/user_gallery_obj.php";
   $.ajax({ type: "POST", url:  url, data: pars, success: gallery_obj_response1 });
   return false;
}
function gallery_obj_response1(responseXML, type) {
   var form = document.getElementById('gallery_obj');
   var response = responseXML.documentElement;
   var status   = response.getAttribute( 'status' );
   var id       = response.getAttribute( 'id' );
   if( status == 'ok' ) {
   //alert("Галерея сохранена"); // !?
   }   
   else {
     setError(form, response);
   }   
 //location.replace('/user/gallery-add/?edit='+id+'#edit');   // обновление страницы !
   location.reload(true); // !?
 //location.hash = "#edit";
}

//////////////////////////////////////////////////////////////////////////
// Обработка объекта Сайт

function site_obj_init() {
   var form = $('#site_obj');
   if( form != null ) {
      form.bind('submit', site_obj_request);
   }
}

function site_obj_request(event) {
 
   event.stopPropagation();
 
   var form = document.getElementById('site_obj');
   
   pars = check_site(form);
 
   if( !pars['is_error'] ) { 
      var url = "/shell/user_site_obj.php";
      $.ajax({ type: "POST", url:  url, data: pars, success: site_obj_response });
   }
   return false;
}
  
function site_obj_response(responseXML, type) {

   var form = document.getElementById('site_obj');

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
        var act = response.getAttribute( 'act' );
        if (act == 'add') {
          var id = response.getAttribute( 'id' );
          alert("Добавлен новый сайт : ID="+id);  // !?
          location = '/user/site-edit/';   // 15.02.12 site-edit !?
        }
        else {
          alert("Сайт сохранен");  // !?
        }
   }
   else setError(form, response);
}

function check_site(form) {
 
   var is_error = false;

   var user      = form.user_id.value;
   var type      = form.type.value;
   var url       = form.url.value;
   var name      = form.name.value;
   var text      = form.text.value;
   var banner    = form.bann_num.value;  
   var id        = form.obj_id.value;
   
   // Проверка полей
   if(type == 0) {
      insertError(form, 'type', 'Выберите тип');
      is_error = true;
   } else {
      removeError(form, 'type');
   }
   if(url == '') {
      insertError(form, 'url', 'Нет url');
      is_error = true;
   } else {
      removeError(form, 'url');
   }
   if(name == '') {
      insertError(form, 'name', 'Нет названия');
      is_error = true;
   } else {
      removeError(form, 'name');
   }
   if(text == '') {
      insertError(form, 'text', 'Нет описания');
      is_error = true;
   } else {
      removeError(form, 'text');
   }
 
   return {is_error  : is_error,
           user      : user,
           type      : type,
           url       : url,
           name      : name,
           text      : text,
           banner    : banner,
           id        : id
          };
}

//////////////////////////////////////////////////////////////////////////
// Сообщение пользователю

function message_user_init() {
   var form = $('#message_user');
   if( form != null ) {
      form.bind('submit', message_user_request);
   }
}

function message_user_request(event) {
 
   event.stopPropagation();
 
   var form = document.getElementById('message_user');
   
   pars = check_message_user(form);
 
   if( !pars['is_error'] && confirm('Отправить сообщение ?') ) {
      var url = "/shell/message_user.php";
      $.ajax({ type: "POST", url:  url, data: pars, success: message_user_response });
   }
   return false;
}
  
function message_user_response(responseXML, type) {

   var form = document.getElementById('message_user');

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
        var id = response.getAttribute( 'id' );
        alert("Сообщение отправлено : ID="+id);  // !?
        form.message.value = "";
   }
   else setError(form, response);
}

function check_message_user(form) {
 
   var is_error = false;

   var from      = form.from_id.value;
   var to        = form.to_id.value;
   var fio       = form.to_fio.value; 
   var text      = form.message.value;
   
   // Проверка полей
   if(text == "") {
      insertError(form, 'message', 'Введите сообщение');
      is_error = true;
   } else {
      removeError(form, 'message');
   }
 
   return {is_error  : is_error,
           from      : from,
           to        : to,
           fio       : fio,
           text      : text
          };
}

//////////////////////////////////////////////////////////////////////////
// Cообщение администратору

function message_form_init() {
   var form = $('#message_form');
   if( form != null ) {
      form.bind('submit', message_form_request);
   }
}

function message_form_request(event) {
 
   event.stopPropagation();
 
   var form = document.getElementById('message_form');
   
   pars = check_message_form(form);
 
   if( !pars['is_error'] && confirm('Отправить сообщение ?') ) {
      var url = "/shell/message_form.php";
      $.ajax({ type: "POST", url:  url, data: pars, success: message_form_response });
   }
   return false;
}
  
function message_form_response(responseXML, type) {

   var form = document.getElementById('message_form');

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
        var id = response.getAttribute( 'id' );
        alert("Сообщение отправлено"); // : ID="+id);  // !?
        form.message.value = "";
   }
   else setError(form, response);
}

function check_message_form(form) {
 
   var is_error = false;

   var type      = form.type.value;
   var from      = form.from_id.value;
// var to        = form.to_id.value;
// var fio       = form.to_fio.value; 
   var text      = form.message.value;
   var section   = form.section.value;
   var fio0      = '';
   var contact   = '';
   
   // Проверка полей
   if ( from == 0 ) {
    var fio0      = form.fio.value;
    var contact   = form.contact.value;
    if (fio0.length < 5) {
      insertError(form, 'fio', 'Ваше имя должно быть не менее 5 символов');
      is_error = true;
    } else {
      removeError(form, 'fio');
    }
    if (contact.length < 5) {
      insertError(form, 'contact', 'Ваши контакты должны быть не менее 5 символов');
      is_error = true;
    } else {
      removeError(form, 'contact');
    }
   }  
   if (text.length < 10) {
      insertError(form, 'message', 'Cообщение должно быть не менее 10 символов');
      is_error = true;
   } else {
      removeError(form, 'message');
   }
   
   return {is_error  : is_error,
           type      : type,
           fio0      : fio0,
           contact   : contact,
           section   : section,
           from      : from,
   //      to        : to,
   //      fio       : fio,
           text      : text
          };
}

//////////////////////////////////////////////////////////////////////////
// Заказ авиабилетов

function aviabilet_form_init() {   // 14.10.11
   var form = $('#aviabilet_form');
   if( form != null ) {
      form.bind('submit', aviabilet_form_request);
   }
}

function aviabilet_form_request(event) {
 
   event.stopPropagation();
 
   var form = document.getElementById('aviabilet_form');
   
   pars = check_aviabilet_form(form);
 
   if( !pars['is_error'] ) { // && confirm('Отправить сообщение ?') ) {  // 04.11.11
      var url = "/shell/aviabilet_form.php";
      $.ajax({ type: "POST", url:  url, data: pars, success: aviabilet_form_response });
   }
   return false;
}
  
function aviabilet_form_response(responseXML, type) {

   var form = document.getElementById('aviabilet_form');

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
        var id = response.getAttribute( 'id' );
        alert("Сообщение отправлено"); // : ID="+id);  // !?
        form.message.value = "";
        form.cnt1.value    = "";
        form.cnt2.value    = "";
        form.dat1.value    = "";
        form.dat2.value    = "";
   }
   else setError(form, response);
}

function check_aviabilet_form(form) {
 
   var is_error = false;

   var from      = form.from_id.value;
   var text      = form.message.value;
   var section   = form.section.value;
   var cnt1      = form.cnt1.value;
   var cnt2      = form.cnt2.value;
   var dat1      = form.dat1.value;
   var dat2      = form.dat2.value;
   var fio0      = '';
   var telef0    = '';
   var email0    = '';
   
   // Проверка полей
   if ( from == 0 ) {
    var fio0    = form.fio.value;
    var telef0  = form.telefon.value;
    var email0  = form.email.value;
    if (fio0.length < 5) {
      insertError(form, 'fio', 'Ваше имя должно быть не менее 5 символов');
      is_error = true;
    } else {
      removeError(form, 'fio');
    }
    if (telef0.length < 7) {
      insertError(form, 'contact', 'Ваш телефон должен быть не менее 7 символов');
      is_error = true;
    } else {
      removeError(form, 'contact');
    }
   }  
   if (cnt1.length < 1) {
     insertError(form, 'cnt', 'Нет числа взрослых');
     is_error = true;
   } else {
     removeError(form, 'cnt');
   }
   if (dat1.length < 5) {
     insertError(form, 'dat', 'Дата вылета туда должна быть не менее 5 символов');
     is_error = true;
   } else {
     removeError(form, 'dat');
   }
   
   return {is_error  : is_error,
           from      : from,
           fio0      : fio0,
           telef0    : telef0,
           email0    : email0,
           section   : section,
           dat1      : dat1,
           dat2      : dat2,
           cnt1      : cnt1,
           cnt2      : cnt2,
           text      : text
          };
}

//////////////////////////////////////////////////////////////////////////
// Заказ аренды яхт // 14.10.11

function arendajacht_form_init() {
   var form = $('#arendajacht_form');
   if( form != null ) {
      form.bind('submit', arendajacht_form_request);
   }
}

function arendajacht_form_request(event) {
 
   event.stopPropagation();
 
   var form = document.getElementById('arendajacht_form');
   
   pars = check_arendajacht_form(form);
 
   if( !pars['is_error'] ) { // && confirm('Отправить сообщение ?') ) { // 04.11.11
      var url = "/shell/arendajacht_form.php";
      $.ajax({ type: "POST", url:  url, data: pars, success: arendajacht_form_response });
   }
   return false;
}
  
function arendajacht_form_response(responseXML, type) {

   var form = document.getElementById('arendajacht_form');

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
        var id = response.getAttribute( 'id' );
        alert("Сообщение отправлено"); // : ID="+id);  // !?
        form.message.value  = "";
        form.srok.value     = "";
        form.cnt1.value     = "";
        form.dat1.value     = "";
   }
   else setError(form, response);
}

function check_arendajacht_form(form) {
 
   var is_error = false;

   var from      = form.from_id.value;
   var text      = form.message.value;
   var tipjacht  = form.tipjacht.value;
   var cnt1      = form.cnt1.value;
   var dat1      = form.dat1.value;
   var srok      = form.srok.value;
   var fio0      = '';
   var telef0    = '';
   var email0    = '';
   
   // Проверка полей
   if ( from == 0 ) {
    var fio0    = form.fio.value;
    var telef0  = form.telefon.value;
    var email0  = form.email.value;
    if (fio0.length < 5) {
      insertError(form, 'fio', 'Ваше имя должно быть не менее 5 символов');
      is_error = true;
    } else {
      removeError(form, 'fio');
    }
    if (telef0.length < 7) {
      insertError(form, 'contact', 'Ваш телефон должен быть не менее 7 символов');
      is_error = true;
    } else {
      removeError(form, 'contact');
    }
   }  
   if (cnt1.length < 1) {
     insertError(form, 'cnt', 'Нет числа пассажиров');
     is_error = true;
   } else {
     removeError(form, 'cnt');
   }
   if (dat1.length < 5) {
     insertError(form, 'dat', 'Начало аренды должно быть не менее 5 символов');
     is_error = true;
   } else {
     removeError(form, 'dat');
   }
   if (srok.length < 1) {
     insertError(form, 'cnt', 'Нет срока аренды');
     is_error = true;
   } else {
     removeError(form, 'cnt');
   }
   
   return {is_error  : is_error,
           from      : from,
           fio0      : fio0,
           telef0    : telef0,
           email0    : email0,
           tipjacht  : tipjacht,
           dat1      : dat1,
           cnt1      : cnt1,
           srok      : srok,
           text      : text
          };
}

//////////////////////////////////////////////////////////////////////////
// Cообщение владельцу объекта

function message_owner_init() {
   var form = $('#message_owner');
   if( form != null ) {
      form.bind('submit', message_owner_request);
   }
}

function message_owner_request(event) {
 
   event.stopPropagation();
 
   var form = document.getElementById('message_owner');
   
   pars = check_message_owner(form);
 
   if( !pars['is_error'] && confirm('Отправить сообщение ?') ) {
      var url = "/shell/message_owner.php";
      $.ajax({ type: "POST", url:  url, data: pars, success: message_owner_response });
   }
   return false;
}
  
function message_owner_response(responseXML, type) {

   var form = document.getElementById('message_owner');

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
        var id  = response.getAttribute( 'id' );
        var tip = response.getAttribute( 'tip' );  // 30.06.11
        alert("Сообщение отправлено : ID="+id);  // !?
        form.text_message_owner.value = ""; // !
        if (tip==1) location.reload();  // !?
   }
   else setError(form, response);

}

function check_message_owner(form) {
 
   var is_error = false;

   var mod_id   = form.mod_id_.value;
   var obj_id   = form.obj_id_.value;
   var user_id  = form.user_id_.value;
   var owner_id = form.owner_id_.value;
   var text     = form.text_message_owner.value;
   var tip      = form.tipmessage.value; // 30.06.11
   
   var fio      = ''; 
   var email    = ''; 
   var phone    = '';
   
   // Проверка полей
   if(text == "") {
      insertError(form, 'message', 'Введите сообщение');
      is_error = true;
   } else {
      removeError(form, 'message');
   }
   if (user_id == 0) {
    fio   = form.fio_from.value;
    email = form.email_from.value;
    phone = form.phone_from.value;
    
    if(email == '') {
      insertError(form, 'email', 'Укажите E-mail');
      is_error = true;
    }
    else if (!formSubmit.email.test(email)) {
      insertError(form, 'email', 'E-mail некорректный');
      is_error = true;
    }
    else {
      removeError(form, 'email');
    }
    if ( mod_id == 24 && phone == "") {
      insertError(form, 'phone', 'Укажите телефон');
      is_error = true;
    }
    else {
      removeError(form, 'phone');
    }
   }
   
   return {is_error  : is_error,
           mod_id    : mod_id,
           obj_id    : obj_id,
           user_id   : user_id,
           owner_id  : owner_id,
           fio       : fio,
           email     : email,
           phone     : phone,
           text      : text,
           tip       : tip
          };
}

//////////////////////////////////////////////////////////////////////////
// Ответ на форуме

function on_ReplyForum(obj, act, id, nom) {
  
  var form     = document.getElementById('message_forum');
  var comment  = document.getElementById('variable_1_comment');
  var hdrForum = document.getElementById('header_forum');
  var butForum = document.getElementById('button_forum');
  var actForum = document.getElementById('act_forum');
  var idForum  = document.getElementById('id_forum');
  var citForum = document.getElementById('cit_forum');
  var hdr = '';
  if (act == 'go') {
    actForum.value = 'add';
    idForum.value  = id.toString();
    hdr = 'Ответ на сообщение ' + nom;
    hdrForum.innerHTML = '<div class=\"add-comment\" id =\"header_forum\">' + hdr +'</div>'; // hdrForum.nodeValue = hdr; // !??
    butForum.value = 'Ответить';       
    comment.focus();
    comment.value  = '';
    citForum.value = '';
  }
  else if (act == 'cit') {
    actForum.value = 'add';
    idForum.value  = id.toString();
    hdr = 'Ответ с цитатой на сообщение ' + nom;
    hdrForum.innerHTML = '<div class=\"add-comment\" id =\"header_forum\">' + hdr +'</div>'; // hdrForum.nodeValue = hdr; // !??
    butForum.value = 'Ответить';       
    var txt = obj.parentNode.parentNode.innerHTML;
    txt = txt.substring(txt.toLowerCase().indexOf('<p>')+3);
    txt = '<span>' + txt.substring(0, txt.toLowerCase().indexOf('</p>')) + '</span>';
    comment.focus();
    comment.value  = txt;
    citForum.value = txt;
  }
  else if (act == 'upd') {
    actForum.value = 'upd';
    idForum.value  = id.toString();
    hdr = 'Редактирование cообщения ' + nom;
    hdrForum.innerHTML = '<div class=\"add-comment\" id =\"header_forum\">' + hdr +'</div>'; // hdrForum.nodeValue = hdr; // !??
    butForum.value = 'Сохранить';       
    var txt = obj.parentNode.parentNode.innerHTML;
    txt = txt.substring(txt.toLowerCase().indexOf('<p>')+3);
    txt = txt.substring(0, txt.toLowerCase().indexOf('</p>'));
    comment.focus();
    comment.value = txt;
    citForum.value = ''; // !?
  }  
  else if (act == 'del') {
    if( !confirm('Удалить сообщение ' + nom + ' ?') ) return;
    actForum.value = 'del';
    idForum.value  = id.toString();
    comment.value  = ''; // !?
    citForum.value = ''; // !?
    message_forum_request(null); //form.submit(); // submit НЕ РАБОТАЕТ !??
  }
}

function message_forum_init() {
   var form = $('#message_forum');
   if( form != null ) {
      form.bind('submit', message_forum_request);
   }
}

function message_forum_request(event) {
 
   var isDel = (event == null); // это удаление сообщения 
   if (!isDel) event.stopPropagation();
 
   var form = document.getElementById('message_forum');
   
   pars = check_message_forum(form);
 
   if( !pars['is_error'] ) {
//      if ( !isDel )
//        if ( !confirm('Отправить сообщение ?') ) return false;
      var url = "/shell/message_forum.php";
      $.ajax({ type: "POST", url:  url, data: pars, success: message_forum_response });
   }
   return false;
}
function message_forum_response(responseXML, type) {

   var form = document.getElementById('message_forum');
   var act  = form.act_forum.value;

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
//      var act = response.getAttribute( 'act' );
//      var id = response.getAttribute( 'id' );
//      if      (act == 'del') alert("Сообщение удалено");          // !?
//      else if (act == 'upd') alert("Сообщение сохранено");        // !?
//      else if (act == 'add') alert("Ответ записан : ID="+id);     // !?
//      else                   alert("НЕверная act = <"+act+">" );  // !??
   }
   else setError(form, response);
   location.reload(); // ВЫДАЕТ вопрос о подтверждении !????
}

function check_message_forum(form) {
 
   var is_error = false;

   var user_id   = form.user_id_forum.value; // !?
// var dir_id    = form.dir_id_forum.value;  // !??
   var thr_id    = form.thr_id_forum.value;
   var text      = form.text_forum.value;
   var act       = form.act_forum.value;
   var id        = form.id_forum.value;
   var cit       = form.cit_forum.value;     // !?

   // Проверка полей
   if ( act != 'del') { // !?
    if(text == "") {
        insertError(form, 'message', 'Введите текст сообщения');
        is_error = true;
    }
    else {
        removeError(form, 'message');
    }
   }  
   
   return {is_error  : is_error,
           act       : act,
           id        : id,
           user_id   : user_id,  // !?
           thr_id    : thr_id, 
           cit       : cit,      // !?
           text      : text
          };
}

//////////////////////////////////////////////////////////////////////////
// Комментарий объекта

function comment_form_init() {
   var form = $('#comment_form');
   if( form != null ) {
      form.bind('submit', comment_form_request);
   }
}

function comment_form_request(event) {
 
   event.stopPropagation();
 
   var form = document.getElementById('comment_form');
   
   pars = check_comment_form(form);
 
   if( !pars['is_error'] && confirm('Отправить комментарий ?') ) {
      var url = "/shell/comment_form.php";
      $.ajax({ type: "POST", url:  url, data: pars, success: comment_form_response });
   }
   return false;
}
function comment_form_response(responseXML, type) {

   var form = document.getElementById('comment_form');

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
        var id = response.getAttribute( 'id' );
        alert("Комментарий добавлен : ID="+id);  // !?
        form.text_comment.value = ""; // !
   }
   else setError(form, response);
   location.reload(); // !
}

function check_comment_form(form) {
 
   var is_error = false;

   var mod_id    = form.mod_id_comment.value;
   var item_id   = form.item_id_comment.value;
   var foto_id   = form.foto_id_comment.value;
   var user_id   = form.user_id_comment.value;
   var action    = form.action_comment.value;
   var text      = form.text_comment.value;

   // Проверка полей
   if(text == "") {
      insertError(form, 'message', 'Введите комментарий');
      is_error = true;
   } else {
      removeError(form, 'message');
   }
   
   return {is_error  : is_error,
           mod_id    : mod_id,
           item_id   : item_id,
           foto_id   : foto_id,
           user_id   : user_id,  // !?
           action    : action,   // !?
           text      : text
          };
}

//////////////////////////////////////////////////////////////////////////
// Комментарий объекта

function newtheme_form_init() {
   var form = $('#newtheme_form');
   if( form != null ) {
      form.bind('submit', newtheme_form_request);
   }
}

function newtheme_form_request(event) {
 
   event.stopPropagation();
 
   var form = document.getElementById('newtheme_form');
   
   pars = check_newtheme_form(form);
 
   if( !pars['is_error'] && confirm('Создать тему ?') ) {
      var url = "/shell/newtheme_form.php";
      $.ajax({ type: "POST", url:  url, data: pars, success: newtheme_form_response });
   }
   return false;
}
function newtheme_form_response(responseXML, type) {

   var form = document.getElementById('newtheme_form');

   var response = responseXML.documentElement;
   var status = response.getAttribute( 'status' );
   if( status == 'ok' ) {
        var id = response.getAttribute( 'id' );
        if (id > 0) alert("Тема добавлена : ID="+id);  // !? // 14.02.12 if (id>0)
        form.hdr_theme.value = ""; // !?
        form.txt_theme.value = ""; // !?
   }
   else setError(form, response);
   location.reload(); // !
}

function check_newtheme_form(form) {
 
   var is_error = false;

   var dir_id    = form.dir_id_theme.value;
   var user_id   = form.user_id_theme.value;
   var hdr       = form.hdr_theme.value;
   var txt       = form.txt_theme.value;

   // Проверка полей
   if (hdr.length < 5) {
      insertError(form, 'name', 'Заголовок должен быть не менее 5 символов'); // !?
      is_error = true;
   } else {
      removeError(form, 'name');
   }
   if (txt.length < 10) {
      insertError(form, 'message', 'Сообщение должно быть не менее 10 символов'); // !?
      is_error = true;
   } else {
      removeError(form, 'message');
   }
   
   return {is_error  : is_error,
           dir_id    : dir_id,
           user_id   : user_id,  
           name      : hdr,
           text      : txt
          };
}

/////////////////////////////////

function before_save_Coord(form) {  // 09.11.11
  if (_yandexRegim == null) return true; // !
  _yandexRegim = 0;
  var sX = form.yandexGeoCoord1.value;
  var sY = form.yandexGeoCoord2.value;
  var x = parseFloat(sX);
  var y = parseFloat(sY);
  var isAdd = false;
  var isUpd = false;
  if (sX == '' && sY == '') {
    if (_yandexPlace != null) {
        if( !confirm('Вы хотите УБРАТЬ координаты объекта ?') ) {
          return false;
        }
        _yandexRegim = -1;
    }    
  }
  else {
    if (x<=0 || y<=0 || x>=360 || y>=90) {
      alert('НЕДОПУСТИМОЕ значение координат !'); // !?
      return false;
    }
    sX = x.toString()
    sY = y.toString()
    var x1 = parseFloat(sX);
    var y1 = parseFloat(sY);
    if (x != x1 || y != y1) {
      alert('НЕВЕРНОЕ значение координат !'); // !?
      return false;    
    }
    if (_yandexPlace == null) {
        if( !confirm('Вы хотите Установить координаты объекта ?') ) {
          return false;
        }
        _yandexRegim = 2;
    }
    _yandexRegim = 1;
  }
  _yandexPoint = new YMaps.GeoPoint(x, y);
  return true;
}  

function after_save_Coord(form) {
  if (_yandexRegim == null) return; // !
  if        (_yandexRegim == 2)  {  // добавление
    add_placemark(_yandexPoint, form); 
  } else if (_yandexRegim == -1) {  // удаление
      _yandexMap.removeOverlay(_yandexPlace);
      _yandexPlace = null;
      form.yandexGeoCoord1.value = '';
      form.yandexGeoCoord2.value = '';
  } else if (_yandexRegim == 1) {   // изменение
        _yandexPlace.setCoordPoint(_yandexPoint);
//      _yandexMap.setCenter(point); // !?
  }
  set_yandexHelp(form);
}

function add_placemark(point, form) {
    var placemark = new YMaps.Placemark(point, {hideIcon: false, style: 'default#redPoint', draggable: true});
    placemark.name        = 'ID = ' + form.obj_id.value;
    placemark.description = form.notice.value;     // !?
    placemark.setBalloonOptions({maxWidth:250});   // 27.01.12
    _yandexMap.addOverlay(placemark);
    _yandexPlace = placemark;
//  _yandexMap.setCenter(point);
    form.yandexGeoCoord1.value = point.getX().toString();
    form.yandexGeoCoord2.value = point.getY().toString();
    YMaps.Events.observe(placemark, placemark.Events.DragEnd, function (obj) {
        var po = obj.getGeoPoint();
        form.yandexGeoCoord1.value = po.getX().toString();
        form.yandexGeoCoord2.value = po.getY().toString();
//      obj.setBalloonContent('Переместили'); // !?
        obj.update();
    });
}

function set_yandexHelp(form) {
 form.yandexHelp.value =
// (_yandexPlace == null) ? 
    'щелчком задайте место объекта или введите его координаты'
//: 'переместите объект на карте или введите его координаты'
  ;
}  

