var isDOM = document.getElementById ? true : false;
var isOpera = isOpera5 = window.opera && isDOM;

function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}

function escapeEx(str)
{
  var res = '';
  for (i = 0; i < str.length; i++)
  {
    var n = str.charCodeAt(i);
    if (n >= 0x410 && n <= 0x44F) n -= 0x350;
    else if (n == 0x451) n = 0xB8;
    else if (n == 0x401) n = 0xA8;
    else if (n == 0x2116) n = 0xB9;
    else if (n == 0x20AC) n = 0x88;
    if ((n < 65 || n > 90) && (n < 97 || n > 122) && n < 256)
    {
      if (n < 16)
        res += '%0' + n.toString(16);
      else
        res += '%' + n.toString(16);
    }
    else
      res += String.fromCharCode(n);
  };
  return res;
};

var timer;

function getReg()
{
  clearTimeout(timer);
  timer = window.setTimeout("getRegion();", 300);
}

function getRegion()
{
  //var val = document.mainForm.street.value;
  //if (isOpera) val = escapeEx(val);
  var inpVal = document.getElementById('regNameId').value;
  if (req) req.abort();
  if ((inpVal != '') && (/^[^ ]/.test(inpVal)))
  {
    var req = getXmlHttp();
		
    var statusElem = document.getElementById('regList');
    req.onreadystatechange = function() { 
	
      if (req.readyState == 4) {

        statusElem.innerHTML = '';
        if(req.status == 200) {
		  if (req.responseText == 1) { statusElem.style.display = 'none'; } else
		  {
		    statusElem.innerHTML = req.responseText;
		    statusElem.style.display = 'block';
		  }
	    }
      }
	 
    }
	 
    if (isOpera) inpVal = escapeEx(inpVal);

    var adrtxt = '/ajax/get_reg.php?q='+escapeEx(inpVal)+'&r='+Math.random()+'&e='+Math.random();
    req.open('GET', adrtxt, true); 
	 
    req.send(null);

    statusElem.innerHTML = '';
  } else {  document.getElementById('regList').style.display = 'none'; }
  return false;
}

function insReg(id)
{
  var inp = document.getElementById('regNameId');
  var txt;
  
  if  (document.all){
    txt = document.getElementById(id).innerText;
  } else{
    txt = document.getElementById(id).textContent;
  }

  inp.value = txt;
  document.getElementById('regList').style.display = 'none';
}

function showAddRooms()
{
  var elem = document.getElementById('addRooms');
  if (elem.style.display == 'none')
  {
    elem.style.display = 'inline';
  } else {
    elem.style.display = 'none';
  }
}

function showRegion()
{
  var el1 = document.getElementById('metId');
  var el2 = document.getElementById('regId');

  if (el1.style.display == 'none')
  {
    el1.style.display = 'inline';
    el2.style.display = 'none';
  } else {
    el1.style.display = 'none';
    el2.style.display = 'inline';
  }
}

function alErr(elem, er, txt)
{
    er.innerHTML = txt;
    er.style.borderStyle = 'solid';
    er.style.borderColor = 'red';
    er.style.borderWidth = 1;
    er.style.fontWeight = 'bold';
    elem.focus();
    return false;
}

function CheckPerson(text)
{
  var t = Trim(text);

  if (/^[A-Za-zа-яА-Я ]*$/.test(t)) return true;
  return false;
}

function isDigit(val)
{
  if(/^[123456789]{1}\d{0,}$/.test(val)) return true;
  return false;
}

function isEmpty(val)
{
  if (val == "") return true;
  return false;
}

function checkParam(prm, textPrm, er, bD, bM)
{
  var add;
  if (/Поле/i.test(textPrm)) { add = ' должно быть заполнено'; }
  else { add = ' должно быть указано'; };

  if ((bM) && (isEmpty(prm.value))) 
  {
	  return alErr(prm, er, textPrm + add);
  }
  
  if (bD)
  {	
    if (prm.value == 0 && prm.value != '')         return alErr(prm, er, textPrm + ' не может быть равно 0');	
	if (prm.value*1 < 0 && prm.value != '')     return alErr(prm, er, textPrm + ' должно быть больше нуля');
	if (!isDigit(prm.value) && prm.value != '') return alErr(prm, er, textPrm + ' должно быть числом');
  }
  return true;
}

function Trim(s)
{
  s = s.replace(/^\s*/, '');
  s = s.replace(/\s*$/, '');

  return s;
}

function CheckPhone(text) {
  var t = text;

    t = Trim(t);
    if (!(/^[12345679]\d[- ]?\d[- ]?\d[- ]?\d[- ]?\d\d$/.test(t) || 
          /^(8[- ]?)?(\(\d\d\d\)|\d\d\d)[- ]?[12345679]\d[- ]?\d[- ]?\d[- ]?\d[- ]?\d\d$/.test(t) ||
          /^(8[- ]?)?(\(\d\d\d\d\)|\d\d\d\d)[- ]?[12345679]\d[- ]?\d[- ]?\d[- ]?\d\d$/.test(t) || 
          /^(8[- ]?)?(\(\d\d\d\d\d\)|\d\d\d\d\d)[- ]?[12345679][- ]?\d[- ]?\d[- ]?\d\d$/.test(t) || 
          /^(8[- ]?|\+?7[- ]?)?([12345679]\d\d|\([12345679]\d\d\))[- ]?\d\d[- ]?\d[- ]?\d[- ]?\d[- ]?\d\d$/.test(t) || 
          /^$/.test(t) 
         ) || (t.replace(/\D/g, '').length > 11))
    {
      return false;
    };
	
  return true;
}

function checkForm()
{
  var frm = document.forms["mForm"];
  var er = document.getElementById('erTxt');

  if (frm.name.value == '')
  {
    return alErr(frm.name, er, 'Пожалуйста, заполните поле ФИО.');
  }

  if (!CheckPerson(frm.name.value)) return alErr(frm.name, er, 'Поле ФИО может содержать только буквы.');

  if (frm.phone.value == '')
  {
    return alErr(frm.phone, er, 'Пожалуйста, укажите ваш номер телефона.');
  }

  if (!CheckPhone(frm.phone.value)) return alErr(frm.phone, er, '' + frm.phone.value + ' не удалось распознать как номер телефона.');

  if ((frm.email.value != '') && (!(/^[a-z0-9][a-z0-9_\.-]*[a-z0-9_]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i.test(frm.email.value)))){
    return alErr(f.email, er, 'E-mail должен быть записан правильно или оставьте это поле пустым');
  }

  if (frm.user_adress.value == '' && frm.region.value == 1)
  {
    return alErr(frm.user_adress, er, 'Пожалуйста, укажите ближайшую станцию метро.');
  }

  if (frm.regName.value == '' && frm.region.value == 2)
  {
    return alErr(frm.user_adress, er, 'Пожалуйста, укажите населеный пункт.');
  }

  if (frm.str.value == '')
  {
    return alErr(frm.str, er, 'Необходимо указать улицу.');
  }

  if (frm.root_to_metro.value != '' && /[^\d]/.test(frm.root_to_metro.value))
  {
    return alErr(frm.root_to_metro, er, 'Расстояние до метро должно быть числом.');
  }

  if (frm.floor.value != '' && /[^\d]/.test(frm.floor.value))
  {
    return alErr(frm.floor, er, 'Этаж должен быть числом.');
  }

  if (frm.total_floors.value != '' && /[^\d]/.test(frm.total_floors.value))
  {
    return alErr(frm.total_floors, er, 'Этажность должна быть числом.');
  }

  if (frm.floor.value > frm.total_floors.value)
  {
    return alErr(frm.floor, er, 'Этаж не может быть больше этажности.');
  }

  //alert (frm.floor.value);
  //alert (frm.total_floors.value);

  if (frm.rooms.value == '')
  {
    return alErr(frm.rooms, er, 'Необходимо указать количество комнат.');
  } else {
    if ( /[^\d]/.test(frm.rooms.value) )
    {
      return alErr(frm.rooms, er, 'Количество комнат в квартире должно быть числом.');
    }
  }

  if (frm.realty.value*1 == 2)
  {

    if (frm.roomsTl.value == '')
    {
      return alErr(frm.roomsTl, er, 'Необходимо указать общее количество комнат.');
    } else {
      if ( /[^\d]/.test(frm.roomsTl.value) )
      {
        return alErr(frm.roomsTl, er, 'Общее количество комнат в квартире должно быть числом.');
      } else if (frm.rooms.value*1 > frm.roomsTl.value*1)
      {
        return alErr(frm.rooms, er, 'Количество сдаваемых/продаваемых комнат не может быть \nбольше общего количества комнат в квартире.');
      }
    }

  }

  if (frm.lsq.value == '')
  {
    return alErr(frm.lsq, er, 'Пожалуйста, укажите жилую площадь квартиры.');
  } else {
    if ( /[^\d]/.test(frm.lsq.value) )
    {
      return alErr(frm.lsq, er, 'Жилая площадь квартиры должна быть числом.');
    }
  }

  if (frm.ksq.value != '' && /[^\d]/.test(frm.ksq.value))
  {
    return alErr(frm.ksq, er, 'Площадь кухни должна быть числом.');
  }

  if (frm.msq.value == '')
  {
    return alErr(frm.msq, er, 'Пожалуйста, укажите общую площадь квартиры.');
  } else {
    if ( /[^\d]/.test(frm.msq.value) )
    {
      return alErr(frm.msq, er, 'Общая площадь квартиры должна быть числом.');
    }
  }

  if (frm.ksq.value*1 + frm.lsq.value*1 > frm.msq.value*1)
  {
    return alErr(frm.lsq, er, 'Общая площадь не может быть больше чем сумма жилой площади и кухни.');
  }

  if (frm.price1.value == '' && frm.price2.value == '' && frm.price3.value == '')
  {
    return alErr(frm.price1, er, 'Вы должны указать цену хотя бы в одних единицах');
  }

  if ( /[^\d]/.test(frm.price1.value) || /[^\d]/.test(frm.price2.value) || /[^\d]/.test(frm.price3.value))
  {
    return alErr(frm.price1, er, 'Поля цен могут содержать только цифры.');
  }

  var dLimRub;
  var upLimRub;
  var dLimDol;
  var upLimDol;
  var catStr;

  if (frm.action.value*1 == 1)
  {
    dLimRub = 310000;
    upLimRub = 450000000;
    dLimDol = 10000;
    upLimDol = 15000000;
    dLimEur = 7000;
    upLimEur = 13000000;
    catStr = '(для продажи)'
  } else {
    dLimRub = 200;
    upLimRub = 5000000;
    dLimDol = 7;
    upLimDol = 180000;
    dLimEur = 7;
    upLimEur = 120000;
    catStr = '(для аренды)'
  }

  if ( (frm.price1.value*1 < dLimRub) && (frm.price1.value != '') )
  {
    return alErr(frm.price1, er, 'Цена в рублях ' + catStr + ' не может быть меньше ' + dLimRub);
  }

  if ( (frm.price1.value*1 > upLimRub) && (frm.price1.value != '') )
  {
    return alErr(frm.price1, er, 'Цена в рублях ' + catStr + ' не может быть больше ' + upLimRub);
  }

  if ( (frm.price2.value*1 < dLimDol) && (frm.price2.value != '') )
  {
    return alErr(frm.price2, er, 'Цена в долларах ' + catStr + ' не может быть меньше ' + dLimDol);
  }

  if ( (frm.price2.value*1 > upLimDol) && (frm.price2.value != '') )
  {
    return alErr(frm.price2, er, 'Цена в долларах ' + catStr + ' не может быть больше ' + upLimDol);
  }

  if ( (frm.price3.value*1 < dLimEur) && (frm.price3.value != '') )
  {
    return alErr(frm.price3, er, 'Цена в евро ' + catStr + ' не может быть меньше ' + dLimEur);
  }

  if ( (frm.price3.value*1 > upLimEur) && (frm.price3.value != '') )
  {
    return alErr(frm.price3, er, 'Цена в евро ' + catStr + ' не может быть больше ' + upLimEur);
  }

  document.getElementById('plus').disabled = true;

  frm.action = '/googlemap/add_item.php';
  return true;
}

//window.onload = function() { document.mForm.reset(); }
