/*
 * @file
 * Функции для приема и обработки данных формы поиска и построения таблицы с результатами
 * (почти целиком перенесены из предыдущей версии, с небольшими модификациями)
 * 
 */

function isPositiveNumber(inputVal)
{
inputStr = inputVal.toString();
var isRightSpace = false;
var isLeftSpace = true;
var isPoint = false;
for (var i = 0; i < inputStr.length; i++) {
    var oneChar = inputStr.charAt(i);
    if (isLeftSpace && ((oneChar == ' ') || (oneChar == '\t')))
       continue;
    else
       isLeftSpace = false;
    if ((isLeftSpace == false) && (oneChar == '+') ){
       continue;
       }
    if ((isRightSpace ==false) &&(isLeftSpace == false) && (oneChar < '0' || oneChar > '9') ){
        if ( (oneChar == ' ') || (oneChar == '\t')){
           isRightSpace=true;
		   continue;
		   }
		 if ( (oneChar == '.')   && (isPoint == false)) {
		    isPoint = true;
		    continue;
		    }
			
		   
        return false;
        }
	if ((isRightSpace ==true) && ( (oneChar != ' ') && (oneChar != '\t')))
	      return false;

   }
return true;

}


// general purpose function to see if a suspected numeric input
// is a positive  integer
function isPositiveInteger(inputVal)
{
inputStr = inputVal.toString();
var isRightSpace = false;
var isLeftSpace = true;
for (var i = 0; i < inputStr.length; i++) {
   var oneChar = inputStr.charAt(i);
   if (isLeftSpace && ((oneChar == ' ') || (oneChar == '\t')))
      continue;
   else
     isLeftSpace = false;
   if ((isLeftSpace == false) && (oneChar == '+') ){
      continue;
      }
   if ((isRightSpace ==false) &&(isLeftSpace == false) && (oneChar < '0' || oneChar > '9') ){
      if ( (oneChar == ' ') || (oneChar == '\t')){
        isRightSpace=true;
		continue;
		}
      return false;
      }
	  if ((isRightSpace ==true) && ( (oneChar != ' ') && (oneChar != '\t')))
	      return false;

   }
return true;
}


var search_url_base="";
var cur_page=0;
var cur_sortby = "";

function check_entry() {
	  var f = document.find_form;

	  // Контроль цены 'от'
	  // Пусто или целое чило?
	if (!isPositiveInteger(f.price_from.value) )
	  {
	    f.price_from.focus();
	   alert("Цена 'от' должна быть целым неотрицательным числом!");
	   return false;
	  }

	// Контроль цены 'до'
	// Пусто или целое чило?
	  if (!isPositiveInteger(f.price_to.value ))
	  {
	    f.price_to.focus();
	    alert("Цена 'до' должна быть целым неотрицательным числом!");
	    return false;
	  }

	  // Контроль диапазона цен
	  if (parseInt(f.price_to.value,10) < parseInt(f.price_from.value,10))
	  {
	    f.price_to.focus();
	    alert("Пожалуйста, введите значение цены 'до' больше , чем цены 'от'!");
	    return false;
	  }

	  //------------------------------
	  // Контроль площади 'от'
	  // Пусто или целое чило?
	if (!isPositiveNumber(f.square_from.value) )
	  {
	    f.square_from.focus();
	   alert("Площадь 'от' должна быть целым неотрицательным числом!");
	   return false;
	  }

	// Контроль площади 'до'
	// Пусто или целое чило?
	  if (!isPositiveNumber(f.square_to.value ))
	  {
	    f.square_to.focus();
	    alert("Площадь 'до' должна быть целым неотрицательным числом!");
	    return false;
	  }

	  // Контроль диапазона площади
	  if (parseFloat(f.square_to.value) < parseFloat(f.square_from.value))
	  {
	    f.square_to.focus();
	    alert("Пожалуйста, введите значение площади 'до' больше , чем площади 'от'!");
	    return false;
	  }


	// формирование строки запроса
	//-------------------------------------------------------------
	var search_url="search.php?";
	var i=0;
	var form  = document.getElementById("find_form");
	
   // 0.-- Поиск по : "зонам г.Саратова/районам города и области"   zone/Rent
/*
   for (var ist = 0; ist < form.searchtype.length; ist++) {
		if (form.searchtype[ist].checked) {
			search_url += "searchtype=" + form.searchtype[ist].value;
			break;
		}
	}
*/
   for (var ist = 0; ist < form.searchtype_town_options.length; ist++) {
		if (form.searchtype_town_options[ist].checked) {
			search_url += "searchtype=" + form.searchtype_town_options[ist].value;
			break;
		}
	}
	
	
	// 1.-- Операции "Продажа/Аренда"   Sale/Rent
	for (var iop = 0; iop < form.operations.length; iop++) {
		if (form.operations[iop].checked) {
			break;
			}
		}
	search_url += "&operations=" + form.operations[iop].value;
	
	
	// 2.-- Тип недвижимости 
    var realty_type_list = document.getElementById('realtyType');	
	var chosenItemD = realty_type_list.options[realty_type_list.selectedIndex].value;
	
	search_url += "&realty_type_id=" + chosenItemD;
	
	
	// 3.-- подтип  "Все/1-x  комнатные/2-x комнатные	 .....
    // $realty_subtype_list
	// формируем списки множественного выбора
    var rcsv = "";
	var e = document.getElementById("object_subtype_id");
	var firstI=true;
	for (i=0; i<e.length; i++) {
		if (e.options[i].selected) {
		    if (firstI)
			   firstI=false;
			else
				rcsv += ";";
		
			rcsv +=  e.options[i].value;
			}
		}
	
	/*
	if (rcsv == "") {
		alert("Уточните тип искомой недвижимости в третьем сверху списке.");
		return false;
	}
	*/

	//alert(rcsv);
	search_url += "&realty_subtype_list=" + rcsv;

	
	
	// 4. -- Выбранные микрорайоны
	// 1) формируем список выбранных микрорайонов- 
	var mcsv = "";
	// 2010
	$.each($("#ulMicrodistrictsList li input"), function(i, item) {
		if(item.value > 0) {	// "Любой микрорайон" с кодом 0 не включаем
			if (item.checked) {
				if (mcsv == "")
					mcsv += item.value;
				else
					mcsv += ";" + item.value;
			}
		}
	});

	// 14.09.2010 - Снято ограничение - можно не выбирать микрорайон
	/*
	if (mcsv == "") {
		   alert("Необходимо выбрать хотя бы один микрорайон.");
		   return false;
	}
	 */
	
	search_url += "&chkMicroDistrictsList=" + mcsv;
	
	
	//5. Этажность 
    var floor_cond_list = document.getElementById('floor_cond');	
	chosenItemD = floor_cond_list.options[floor_cond_list.selectedIndex].value;
	
	search_url += "&floor_cond=" + chosenItemD;
	
	
	
	// 6. Ограничения по этажу 

	// 6.1. Кроме первых 
	var floor_limit_NFF  = document.getElementById("NFF");	
	if(floor_limit_NFF.checked==true) 
		search_url += "&floor_limit_NFF=true"; 
	else
		search_url += "&floor_limit_NFF=false"; 
	// 6.2. Кроме последних
	var floor_limit_NLF  = document.getElementById("NLF");	
	if(floor_limit_NLF.checked==true) 
		search_url += "&floor_limit_NLF=true"; 
	else
		search_url += "&floor_limit_NLF=false"; 

	
	// 6.3. Только первый
	var floor_limit_ONF  = document.getElementById("ONF");		
	if(floor_limit_ONF.checked==true) 
		search_url += "&floor_limit_ONF=true"; 
	else
		search_url += "&floor_limit_ONF=false"; 
	
	// 7. 	  Цена 
    // 7.1.  Цена  от
	var v_price_from  = document.getElementById("price_from");		
	search_url += "&price_from=" + v_price_from.value; 
	
    // 7.2.  Цена  до
	var v_price_to  = document.getElementById("price_to");	
	search_url += "&price_to=" + v_price_to.value; 

	// 8. 	  Площадь
    // 8.1.  Площадь  от
	var v_square_from  = document.getElementById("square_from");		
	search_url += "&square_from=" + v_square_from.value; 
	
    // 8.2.  Площадь  до
	var v_square_to  = document.getElementById("square_to");	
	search_url += "&square_to=" + v_square_to.value; 
	
	
	
	// 9. записей на страницу
    var rpp_list = document.getElementById('rpp');	
	chosenItemD = rpp_list.options[rpp_list.selectedIndex].value;
	
	search_url += "&rpp=" + chosenItemD;
	

	// -----  конец базового запроса 
	search_url_base=search_url;
	// по нажатиям "ссылок" внутри результатов поиска (сортировка по признаку, номер страницы)
	
	
	// 9. номер страницы
	search_url += "&p=1" ;
	cur_page=1;

    // 10. сортировать по  (поумолчанию)
    search_url += "&sortby=" ; 
    //alert(search_url);
	
	// 
	//alert(search_url);
	document.body.style.cursor = "wait";
    retrieveURL(search_url);
	
	// выполнить поиск , используя AJAX    f.submit();
    timeout(3000);
    
	$(".lightbox").lightbox({
	    fitToScreen: true,
	    imageClickClose: false
    });
	
}


 
  var req;
  var which;
  
  
  

  function retrieveURL(url) 
  {
  
    if (window.XMLHttpRequest) { // Non-IE browsers
      req = new XMLHttpRequest();
      req.onreadystatechange = processStateChange;
      try {
        req.open("GET", url, true);
      } catch (e) {
        alert(e);
      }
      req.send(null);
    } else if (window.ActiveXObject) { // IE
      req = new ActiveXObject("Microsoft.XMLHTTP");
      if (req) {
        req.onreadystatechange = processStateChange;
        req.open("GET", url, true);
        req.send();
      }
    }
  }


function processStateChange() 
  {
    if (req.readyState == 4) { // Complete
	  document.body.style.cursor = "default";
      if (req.status == 200) { // OK response
	  
	    // alert(req.responseText.toString());  // отладка
        document.getElementById("search_results").innerHTML = req.responseText;
      } else {
        alert("Problem: " + req.statusText);
      }
    }
  }


function sortCol(sortpar)
  {
     // alert(sortpar);
    var search_url=search_url_base;
	
	// 9. номер страницы
	search_url += "&p=" +cur_page;


    // 10. сортировать по  (поумолчанию)
	cur_sortby = sortpar;
    search_url += "&sortby=" + cur_sortby; 
	
 
 	//alert(search_url);
	document.body.style.cursor = "wait";
    retrieveURL(search_url);
   }


 // alert(sortpar);
 
function setThisPage(npage) 

  {
     // alert(sortpar);
    var search_url=search_url_base;
	
	// 9. номер страницы
	cur_page=npage;
	search_url += "&p=" +cur_page;


    // 10. сортировать по  (поумолчанию)
    search_url += "&sortby=" + cur_sortby;
 
 	//alert(search_url);
	document.body.style.cursor = "wait";
    retrieveURL(search_url);

}

function setPrevPage() 
{
    var npage=cur_page;

	if (npage <= 1) return;
	npage=npage-1;
	setThisPage(npage); 
}

function setNextPage(maxpages) 
{
    var npage=cur_page;

	if (maxpages <= npage ) return;
	npage=npage+1;
	setThisPage(npage); 
}


function showRealtyImage(s) {
	var imwstr ='<html><head><title>';
	    imwstr +='Недвижимость';
		imwstr +='</title></head><body>';
	    imwstr +='<img src="'+s+'" />';
	    imwstr +='</body></html>';
		
	var parstr	 =  'status=1';
	    parstr	+= 	',resizable=1';
		// parstr	+= 	',menubar=1';
		parstr	+= 	',height=200';
		parstr	+= 	',width=300';
	
	
	var winImage=window.open(s,'',parstr);
	    winImage.focus();
	    
		// write HTML to new window document	
		winImage.document.write(imwstr);
	    winImage.document.close(); // close layout stream
}


function showPhotos(id) {
	$("#photos_" + id).css("display","");
	
	// Activating Lightbox plugin
	$(".lightbox").lightbox({
	    fitToScreen: true,
	    imageClickClose: false
    });
}

