
function setArea(me) {
 var F=me.form, n=me.value;
 var selectCity=F.city, selectCountry=F.country;
 var ctys={ }, City, Country;

 selectCity.options.length=1; selectCountry.options.length=1;
 for (var i in CITIES) {
	if ( (City=CITIES[i]) && (Country=COUNTRIES[City.z]) && ( (!n) || (Country.z==n) ) ) {
		var O=new TOption(i,City.n,selectCity);
		if (!ctys[Country.id]) ctys[Country.id]=Country.n;
	}
 } 
 ctys=objSort(ctys);
 addOptsToCombo(selectCountry,ctys);
}

function setCountry(me) {
 var F=me.form, n=me.value;
 var OBJ=F.city;
 OBJ.options.length=1;
 for (var i in CITIES)
	if ((City=CITIES[i]) && ((!n) || (City.z==n)) ) {
		var O=new TOption(i,City.n,OBJ);
	}
}

function setCity(me) {
 var F=me.form, n=me.value;
 if (!n) return;
 var selectArea=F.area, selectCountry=F.country;
 var City=CITIES[n];
 var Country=COUNTRIES[City.z];
 var Area=COUNTRIES[Country.z];
 selectArea.value=Area.id;
 selectCountry.value=Country.id;
}

function rowMatch(row,S) {
 var MATCH;

 if (S.xplace) {

	MATCH=(row.location.search(S.xplace)>=0) && ((!S.xname) || (row.name.search(S.xname)>=0));

 } else {

	if (S.city) 
		MATCH=(row.xcity==S.city);
	 else if (S.country) 
		MATCH=(row.country==S.country);
	 else
		MATCH=((!S.area) || (row.area==S.area));
 }

 if (S.xname) {
	MATCH=MATCH && row.name.search(S.xname)>=0;
 }

 MATCH=MATCH &&
	((!S.location) || contains(row.situation,S.location)) &&
	((!S.airportkm) || (row.airportkm<=S.airportkm)) &&

	((!S.htypes) || (containsAny(row.htype,S.htypes))) &&
//	((!S.hcategs) || (contains(S.hcategs,row.categ))) &&
	((!S.nrooms) || (row.nrooms<=S.nrooms)) &&
	((!S.nmeetings) || (row.nmeetings<=S.nmeetings)) &&
	((!S.maxcap) || (row.maxcap<=S.maxcap)) &&
	((!S.activities) || (containsAll(row.activities,S.activities)));

 return MATCH;

}

var SEARCH;

function doSearch() {

 var F=document.form1;
 var S={ 
	qplace: F.qplace.value,
	qname: F.qname.value,
	area: F.area.value,
	country: F.country.value,
	city: F.city.value, 
	location: F.location.value,
	airportkm: F.airportkm.value*1,
	nrooms: F.nrooms.value,
	nmeetings: F.nmeetings.value,
	maxcap: F.maxcap.value,
//	htypes: getCheckValues(F['htypes[]']),
	htypes: F.actype.value,
//	hcategs: getCheckValues(F['hcategs[]']),
	activities: getCheckValues(F['activities[]'])
 }
 SEARCH=S;
 
 if (S.qname.length>=3) S.xname=new RegExp(S.qname,'i');
 if (S.qplace.length>=3) S.xplace=new RegExp(S.qplace,'i');

 var res={ ix: [] }, N=0;
 for (var i in ROWS) if (row=ROWS[i]) {
	if (rowMatch(row,S)) {
		res.ix[N++]=i;
		res[i]=row;
	}
 }

 F.Results=res;
 setObjContent('nHotels',res.ix.length);
 getObj('goListBtn').disable=res.ix.length>0;
 var goodLook;
 if (res.ix.length==1) {
	var row=ROWS[res.ix[0]];
	goodLook='<b>' + row.name + '</b>&nbsp;&nbsp;('+row.city+', '+COUNTRIES[row.country].n +')' +
	'&nbsp;&nbsp;<a href="hotel_det.html?id='+row.id+'">View</a>';
 } else
	goodLook='<br>';
 setObjContent('goodLook',goodLook);
}

var T_refresh;
function refresh() {
 if (T_refresh) clearTimeout(T_refresh);
 doSearch();
 T_refresh=setTimeout('refresh()',500);
}

function goResults(me) {
 if ((!me.Results) || (!me.Results.ix.length)) {
	alert('There are no result to show'); return false;
 }
 me._getFor.value=QueryString.getfor || '';
 me._idList.value=me.Results.ix.join(',');
 document.cookie='lastSearch='+serialize(SEARCH);
 me.submit();
}

function TGeoIndex(ROWS,COUNTRIES) {
 var AREAS={ }, CITIES={ };

 var row,city,City,Country;

 for (var i in ROWS) {
      row=ROWS[i];
      if (city=row.city.toLowerCase()) {
            row.xcity=city;
            if (!CITIES[city]) {
                  var City={ id: row.city, z: row.country, n: row.city }
                  CITIES[city]=City;
            }
      }

      row.location=row.city;
      if (Country=COUNTRIES[row.country]) {
            if (!AREAS[Country.z]) AREAS[Country.z]=COUNTRIES[Country.z];
            row.area=Country.z;
            row.location+=' ' + Country.n;
      }
 }

 var obj={ Areas: objSort(AREAS,'n'), Countries: COUNTRIES, Cities: objSort(CITIES,'n') };
 return obj;
}

function newSearch(me) {

 var obj={
 	qlocation: '',
 	qplace: '',
 	qname: '',
// 	htypes: '',
 	area: '',
 	country: '',
 	city: '',
 	location: '',
 	airportkm: '',
// 	hcategs: '',
 	nrooms: '',
 	nmeetings: '',
 	maxcap: '',
 	activities: ''
 }
 setArea(me.area);
 fillForm(me,obj);
 return false;
}

var CITIES={ }, AREAS={ };
var ACTIVITIES=objSubSet(ACTIVITIES,[ 20, 7, 6, 16, 17, 19 ]);

function initialize() {

 var GeoIndex=new TGeoIndex(ROWS,COUNTRIES);

 AREAS=GeoIndex.Areas;
 CITIES=GeoIndex.Cities;

 addOptsToCombo(document.form1.area,AREAS,'n');
 addOptsToCombo(document.form1.location,LOCATIONS);
 addOptsToCombo(document.form1.actype,OTHERACCTYPES)

 setArea(document.form1.area);
 
 if (QueryString.modif) {
	var obj=getCookie('lastSearch');
	if (obj) fillForm(document.form1,unserialize(obj));
 }

 // setTimeout('refresh()',100);
}

chainOnload(initialize);

