//alert('loading quickSearch');
function getPrevTabId(tabId) {
	if (tabId == 99)
		return 7;
	if (tabId == 1)
		return 0;
	var temp = tabId - 1;
	while (!$('quickSearchTab_' + temp + '_1')) {
		temp = temp - 1;
		if (temp == 0) return 0;
	}
	return temp;
}
function changeSearchType(_value) {

	var hiddenFieldId, id_to_hide, id_to_show, tab_to_inactive, tab_to_active;
	var td1ToInactive, td2ToInactive, td3ToInactive;
	var td1ToActive, td2ToActive, td3ToActive;
	var leftNeighbor;
	
	hiddenFieldId='searchType';
	id_to_hide = 'div_searchtype_' + $(hiddenFieldId).value;

	var currentId = parseInt($(hiddenFieldId).value);
	var currentTab = positions[currentId];
	var activeTab = positions[_value];

	// make the currently selected TAB inactive
	td1ToInactive = document.getElementById('quickSearchTab_' + $(hiddenFieldId).value + '_1');
	td2ToInactive = document.getElementById('quickSearchTab_' + $(hiddenFieldId).value + '_2');
	td3ToInactive = document.getElementById('quickSearchTab_' + $(hiddenFieldId).value + '_3');	

	td2ToInactive.className = 'search_buttoninactive';
	td2ToInactive.innerHTML = '<div id="quickSearchText_' + $(hiddenFieldId).value + '" class="search_buttoninactive_text"><a href="javascript:void(0);" onclick="changeSearchType(' + $(hiddenFieldId).value + ')" class="searchnavioben">' + searchTypesArray[parseInt($(hiddenFieldId).value)] + '</a></div>';

	if (currentTab == 1) {
		td1ToInactive.innerHTML = search_left_inactive;		
	} else {
		td1ToInactive.innerHTML = '';
	} 
	
	if (currentTab + 1 != activeTab) {
		td3ToInactive.innerHTML = search_right_inactive;		
	} else {
		td3ToInactive.innerHTML = '';		
	}
	
	// make inactive the right border of the tab which is at the left of the active
	if (activeTab > 1) {
		leftNeighbor = document.getElementById('quickSearchTab_' + getPrevTabId(_value) + '_3');
		leftNeighbor.innerHTML = '';
	}
	
	// make active the right border of the tab which was at the left of the active
	if (currentTab > 1) {
		leftNeighbor = document.getElementById('quickSearchTab_' + getPrevTabId(currentId) + '_3');
		leftNeighbor.innerHTML = search_right_inactive;
	}	
	
	// make the currently selected TAB inactive
	td1ToActive = document.getElementById('quickSearchTab_' + _value + '_1');
	td2ToActive = document.getElementById('quickSearchTab_' + _value + '_2');
	td3ToActive = document.getElementById('quickSearchTab_' + _value + '_3');

	td1ToActive.innerHTML = search_left_active;
	td2ToActive.className = 'search_buttonactive';
	td2ToActive.innerHTML = '<div id="quickSearchText_' + _value + '" class="search_buttonactive_text">' + searchTypesArray[parseInt(_value)] + '</div>';
	td3ToActive.innerHTML = search_right_active;
	
	// set the currently selected type of just actived value	
	$(hiddenFieldId).value=_value;
	
	id_to_show = 'div_searchtype_' + $(hiddenFieldId).value;

	if (id_to_hide != id_to_show) {
		$(id_to_hide).style.display='none';
		$(id_to_show).style.display='inline';
	}
}
function isZip(_zipcity) {
	var reg = new RegExp('^[0-9].*');
	return reg.test(_zipcity);
}
function fillParameters(parameters) {
	var value;
	var searchTypeValue = $('searchType').value;
	parameters['searchType'] = searchTypeValue;

	var field = $('time_dist_range_'+searchTypeValue);
	if (!field.disabled) {
		var rType = field.value.split(':')[1];
		value = field.value.split(':')[0];
//		if(value && value!='0') {
//			if(rType==1) {
				parameters['range'] = value;
				parameters['radius'] = value;
//			} else {
//				parameters['timeRange'] = value;
//			}
//		}
	}

	if (searchTypeValue == '1') {
		value = $('subtype_1').value;
		if (value && (value != '0')) parameters['searchSubType'] = value;
		value = $('country_1').value;
		if (value && (value != '0')) parameters['country'] = value;
		
		value = $('city_1').value;
		if (value && value!=defaultCityValue) {
			if (isZip(value)) {
				parameters['zip'] = value;
			} else {
				parameters['city'] = value;
			}
		}
		
		value = $('typeOfContract_1_1').checked;
		parameters['typeOfContract'] = value ? 1 : 2;
		value = $('description_1').value;if (value != '' && value!=defaultDescription1) parameters['description'] = value;
	} else if (searchTypeValue == '2') {
		value = $('subtype_2').value;
		if (value != '') parameters['searchSubType'] = value;
		value = $('typeOfContract_2_1').checked;
		parameters['typeOfContract'] = value ? 1 : 2;
		value = $('country_2').value;
		if (value && (value != '0')) parameters['country'] = value;
		value = $('city_2').value;
		if (value && value!=defaultCityValue) if (isZip(value)) {
			parameters['zip'] = value;
		} else {
			parameters['city'] = value;
		}
		value = $('description_2').value;if (value != '' && value!=defaultDescription2) parameters['description'] = value;
	} else if (searchTypeValue == '3') {
		value = $('subtype_3').value;
		if (value && (value != '0')) parameters['searchSubType'] = value;
		value = $('country_3').value;
		if (value && (value != '0')) parameters['country'] = value;
		value = $('city_3').value;
		if (value && value!=defaultCityValue) if (isZip(value)) {
			parameters['zip'] = value;
		} else {
			parameters['city'] = value;
		}
		value = $('description_3').value;if (value && value!=defaultDescription3) parameters['description'] = value;
		value = $('date_3_day').value;if (value && (value != '0')) parameters['day'] = value;
		value = $('date_3_month').value;if (value && (value != '0')) parameters['month'] = value;
		value = $('date_3_year').value;if (value && (value != '0')) parameters['year'] = value;
	} else if (searchTypeValue == '4') {
		value = $('subtype_4').value;
		if (value && (value != '0')) parameters['searchSubType'] = value;
		value = $('country_4').value;
		if (value && (value != '0')) parameters['country'] = value;
		value = $('city_4').value;
		if (value && value!=defaultCityValue) if (isZip(value)) {
			parameters['zip'] = value;
		} else {
			parameters['city'] = value;
		}
		value = $('persons_4').value;if (value && (value != '0')) parameters['persons'] = value;
		/*value = $('duration_4').value;
		if (value && (value != '0')) {
		//HERE
			parameters['durationHoliday'] = value;
		}*/
		value = $('description_4').value;if (value && value!=defaultDescription4) parameters['description'] = value;
		value = $('date_4').value;
		if(value && value!='' && value!=defaultDateValue) {
			var parts = value.split('.');
			if(parts && parts.length==3) {
				parameters['day'] = parts[0];
				parameters['month'] = parts[1];
				parameters['year'] = parts[2];
				parameters['availabilityType']=3;
			}
		}
	} else if (searchTypeValue == '5') {
		value = $('country_5').value;
		if (value && (value != '0')) parameters['country'] = value;
		value = $('city_5').value;
		if (value && value!=defaultCityValue) if (isZip(value)) {
			parameters['zip'] = value;
		} else {
			parameters['city'] = value;
		}
		value = $('furnitured_5').value;if (value && (value != '0')) parameters['furnitured'] = value;
		value = $('duration_5').value;if (value && (value != '0')) parameters['durationWG'] = value;
		value = $('description_5').value;if (value && value!=defaultDescription5) parameters['description'] = value;
	} else if (searchTypeValue == '6') {
		value = $('country_6').value;
		if (value && (value != '0')) parameters['country'] = value;
		value = $('city_6').value;
		if (value && value!=defaultCityValue) if (isZip(value)) {
			parameters['zip'] = value;
		} else {
			parameters['city'] = value;
		}
		value = $('typeOfContract_6_1').checked;
		parameters['typeOfContract'] = value ? 1 : 2;
		value = $('description_6').value;if (value != '' && value!=defaultDescription6) parameters['description'] = value;
	} else if (searchTypeValue == '7') {
		value = $('subtype_7').value;
		if (value && (value != '0')) parameters['searchSubType'] = value;
		value = $('country_7').value;
		if (value && (value != '0')) parameters['country'] = value;
		value = $('city_7').value;
		if (value && value!=defaultCityValue) if (isZip(value)) {
			parameters['zip'] = value;
		} else {
			parameters['city'] = value;
		}
		value = $('typeOfContract_7_1').checked;
		parameters['typeOfContract'] = value ? 1 : 2;
		value = $('description_7').value;if (value != '' && value!=defaultDescription7) parameters['description'] = value;
	} else if (searchTypeValue == '99') {
		value = $('subtype_99').value;
		if (value && (value != '0')) parameters['searchSubType'] = value;
		value = $('country_99').value;
		if (value && (value != '0')) parameters['country'] = value;
		value = $('city_99').value;
		if (value && value!=defaultCityValue) if (isZip(value)) {
			parameters['zip'] = value;
		} else {
			parameters['city'] = value;
		}
		value = $('typeOfContract_99_1').checked;
		parameters['typeOfContract'] = value ? 1 : 2;
		value = $('description_99').value;if (value != '' && value!=defaultDescription99) parameters['description'] = value;
	}
	// Add coordinateX/coordinateY if available
	if(cityLocationFlag == parameters['city'] && cityLocation && parameters['range']
			&& parameters['range'] != '0' && parameters['city']){
		parameters['coordinateY'] = cityLocation.lat();
		parameters['coordinateX'] = cityLocation.lng();
	} else {
		parameters['coordinateY'] = null;
		parameters['coordinateX'] = null;
		if(parameters['city'] && (cityLocationFlag != parameters['city'] || !cityLocation) 
				&& !(parameters['range'] && parameters['range'] == '0')) {
			parameters['coordsNotFound'] = 'true';
		}
	}
}
function setRangeAvail() {
}

/**
 * Variable to store city coordinates fetched in location call-back function
 */
var cityLocation;
var cityLocationFlag;
/**
 * Call-back function for GClientGeocoder
 * @param point city location 
 */
function cityLocationCallback (point) {
	if(point){
		cityLocation = point;
	}
}

/**
 * Function to fetch city location basing on city address or ZIP code
 */
function getCityLocation() {
	var searchTypeValue = $('searchType').value;
	var cityName = $('city_' + searchTypeValue).value;
	var countrySelect = $('country_' + searchTypeValue);
	var searchString = cityName;
	
	// Save current city value to cityLocationFlag
	cityLocationFlag = cityName;
	
	if(countrySelect) {
		var countryText = countrySelect.options[countrySelect.selectedIndex].text;
		searchString += ', ' + countryText;
	}
	var geocoder = new GClientGeocoder();
	geocoder.getLatLng(searchString, cityLocationCallback);
}

function onCityNameChange() {
	setRangeAvail();
}
function onCountryChange() {
	setRangeAvail();
}

var parameters;
var locFlag;

function doSearch(loc) {
	parameters = new Array();
	locFlag = loc;
	parameters['action'] = 'search';

	// Get city location 
	getCityLocation();
	// Wait Google Maps callback for 1s
	setTimeout("continueSearch();", 1000);
	return false;
}
function doMapSearch(loc) {
	parameters = new Array();
	locFlag = loc;
	parameters['action'] = 'map_search';
	
	// Get city location 
	getCityLocation();
	// Wait Google Maps callback for 1s
	setTimeout("continueSearch();", 1000);
	return false;
}

function continueSearch () {
	fillParameters(parameters);
	$for (parameters, function(key, value) {
		parameters[key]=encodeURIComponent(parameters[key]);
	});
	redirect('/' + locFlag + '/index/search', parameters);
}

/*
 * Function redirects to search agent creation form
 */
function doCreateSearchAgent (isAuthenticated, loc) {
	var parameters = new Array();
	fillParameters(parameters);
	var url = contextPath + '/'+loc+'/index/secure/agent?no_rewrite=1&from=';
	url += escape(window.location.href);
	url += '&parameters=';
	url += encodeURI(getParamString(parameters));

	if(isAuthenticated) {
		window.location.href = url;
	} else {
		window.location.href=contextPath+'/'+loc+'/index/register?search_agent=1&redirectUrl='+encodeURIComponent(url);
	}
	return false;
} 

var rangeType=1;
function changeRangeType() {
	if(rangeType==2) {
		rangeType=1;
	} else {
		rangeType=2;
	}
}

function fillZIPCityFromHidden(_ZipCityId) {
	if ($('city').value == '') {
		$(_ZipCityId).value = $('zip').value;
	} else {
		$(_ZipCityId).value = $('city').value;
	}
}
function fillFormFromHiddenFields(_type) {
//	setTabActive('quickSearchTab'+_type,true);
	onTypeOfContractSpecialChange('1');
	onTypeOfContractSpecialChange('2');
	onTypeOfContractSpecialChange('99');
	fillZIPCityFromHidden('city_'+_type);
}
function fillAutocompleteData(startChars,maxResults) {
	if (isZip(startChars)) {
		getZipsFromServer(startChars,maxResults);
	} else {
		getCitiesFromServer(startChars,maxResults);
	}
}
function onAutocompleteSelect() {
	onCityNameChange();
}
function getArrayFromList(list) {
	var result = new Array();
	for(var key in list) {
		result[key] = new Array();
		var temp = list[key].split('/');
		for (var i=0;i<temp.length;i++) {
			var temp2 = temp[i].split(':');
			if (temp2.length == 2) {
				result[key][temp2[0]]=
				decodeURIComponent(temp2[1]);
			}
		}
	}
	return result;
}
function getCitiesFromServer(startChars,maxResults) {
	var parameters = new Array();
	fillParameters(parameters);
	var paramstring = getParamString(parameters);
	pubFacade.retrieveCitiesAndPropertiesCount(startChars,maxResults,paramstring,
		{callback:function(list){
			if (list) {
				autocompleteArray = getArrayFromList(list);
				showInfo = false;
				optionalShowAutocomplete(startChars);
			}
		}
	});
}
function getZipsFromServer(startChars,maxResults) {
	var parameters = new Array();
	fillParameters(parameters);
	var paramstring = getParamString(parameters);
	pubFacade.retrieveZipsAndPropertiesCount(startChars,maxResults,paramstring,
		{callback:function(list){
			if (list) {
				autocompleteArray = getArrayFromList(list);
				showInfo = false;
				optionalShowAutocomplete(startChars);
			}
		}
	});
}
fillFormFromHiddenFields($('searchType').value);

function hide(e,value) {
	if(value==e.value) {
		e.value='';
	}
}
function show(e,value) {
	if(e.value=='') {
		e.value=value;
	}
}
