var SALE_MODE = 'E';
var date, flat, house, villa, ground, from, to, min_room, max_room;
//var limiterForSale, limiterForRent, limiter;
var limiter;
var limiterClicked = false; 
var ALLADDS = false;
var reset = false;
var PRICE_LIMITER = false;
var FIRST_LOADED;
var price_min, price_max;
var stateArray = new Array();
var dragger;

var limiterForSale, limiterForRent;
var limitMinStep = 0.15; 
var limitMaxStep = 0.03;
var from, to;

function addOptions(select, optArr)
{
	var opt;	
	for(var i=0; i<optArr.length; i++)
	{
		opt = new Option(optArr[i][0], optArr[i][1], optArr[i][3]);
		select.options[i] = opt;
		if(optArr[i][3]) select.options[i].selected = true;
	}
}

function searchJSON()
{				
	if(SALE_MODE == 'E')
	{		
		limiter = limiterForSale;
		setSearchSettingsForSale();	
		to_show = $('allAdds').checked;
	}

	if(SALE_MODE == 'K')
	{		
		setSearchSettingsForRent();	
		limiter = limiterForRent;
		to_show = $('allAddsRent').checked;
	}		

	if(!PRICE_LIMITER)
	{	
		from = (limiter.minValue)? limiter.minValue : 0;
		to = (limiter.maxValue)? limiter.maxValue: 10000000000000;		
		if(limiter.maxValue >= limiter.max - (limiter.max * limitMaxStep))
		{
			to = limiter.price_max;
		}						

		for(var i=0; i<datalength; i++)	     	   
		{			
			if(data[i].type == SALE_MODE && data[i].datum >= date && 
			  (data[i].type3 == flat || data[i].type3 == house || data[i].type3 == villa || data[i].type3 == ground) &&
			  (data[i].ar) >= from && data[i].ar <= to &&
			  (parseInt(data[i].rooms) + parseInt(data[i].halfrooms) >= min_room &&  (parseInt(data[i].rooms) + parseInt(data[i].halfrooms)) <= max_room) && to_show )
			{						
				smallMarkerArray[i].show();
				bigMarkerArray[i].show();					
			}
			else
			{
				if(data[i].type == SALE_MODE)
				{										
					smallMarkerArray[i].hide();
					bigMarkerArray[i].hide();		
				}
			}			
		}		
	}	
	else
	{
		for(var i=0; i<datalength; i++)	     	   
		{	
			if(data[i].type == SALE_MODE && data[i].datum >= date && 
			  (data[i].type3 == flat || data[i].type3 == house || data[i].type3 == villa || data[i].type3 == ground) &&
			  (data[i].ar <= price_max && data[i].ar >= price_min) &&
			  (parseInt(data[i].rooms) + parseInt(data[i].halfrooms) >= min_room &&  parseInt(data[i].rooms) + parseInt(data[i].halfrooms) <= max_room) && to_show )
			{
				smallMarkerArray[i].show();
				bigMarkerArray[i].show();					
			}
			else
			{
				if(data[i].type == SALE_MODE)
				{
					smallMarkerArray[i].hide();
					bigMarkerArray[i].hide();		
				}
			}		  
	    }
	}	
	/*
	for(var i=0; i<datalength; i++)	 
	{
		if(SALE_MODE == 'E' && smallMarkerArray[i].type == 'K' && $('allAddsRent').checked)
		{
			smallMarkerArray[i].show();
			bigMarkerArray[i].show();
		}
		if(SALE_MODE == 'K' && smallMarkerArray[i].type == 'E' && $('allAdds').checked)
		{
			smallMarkerArray[i].show();
			bigMarkerArray[i].show();
		}
	}
	*/	

	return false;
}

function setSearchSettingsForSale()
{			
	if($('dateChecker').checked)
	{
		var month = ($('search_month').value.length == 1)? '0' + ($('search_month').value) : $('search_month').value;
		var day = ($('search_day').value.length == 1)? '0' + $('search_day').value : $('search_day').value;
		date = $('search_year').value + month + day + '0000';		
	}
	else
	{
		date = 0;
	}

	if($('flat').checked)
	{
		flat = 1;
	}
	else
	{
		flat = 0;
	}
	
	if($('house').checked)
	{
		house = 2;
	}
	else
	{
		house = 0;
	}

	if($('villa').checked)
	{
		villa = 4;
	}
	else
	{
		villa = 0;
	}

	if($('ground').checked)
	{
		ground = 3;
	}
	else
	{
		ground = 0;
	}
		
	//from = (limiterForSale.setted)? limiterForSale.minValue : 0;
	//to = (limiterForSale.setted)? limiterForSale.maxValue : 100000000000;

	if(parseInt($('room_min').value) < parseInt($('room_max').value))
	{
		min_room = parseInt($('room_min').value);
		max_room = (parseInt($('room_max').value) == 5)? 55 : parseInt($('room_max').value);
	}
	else
	{
		min_room = 1;
		max_room = 55;
	}
}

function setSearchSettingsForRent()
{		
	if($('dateChecker').checked)
	{
		var month = ($('search_month').value.length == 1)? '0' + $('search_month').value : $('search_month').value;
		var day = ($('search_day').value.length == 1)? '0' + $('search_day').value : $('search_day').value;
		date = $('search_year').value + month + day + '0000';		
	}
	else
	{
		date = 0;
	}

	if($('flatRent').checked)
	{
		flat = 1;
	}
	else
	{
		flat = 0;
	}
	
	if($('houseRent').checked)
	{
		house = 2;
	}
	else
	{
		house = 0;
	}

	if($('villaRent').checked)
	{
		villa = 4;
	}
	else
	{
		villa = 0;
	}

	if($('groundRent').checked)
	{
		ground = 3;
	}
	else
	{
		ground = 0;
	}
	
	//from = (limiterForRent.setted)? limiterForRent.minValue : 0;
	//to = (limiterForRent.setted)? limiterForRent.maxValue : 10000000000000;
	
	if( parseInt($('room_min_rent').value) < parseInt($('room_max_rent').value) )
	{
		min_room = parseInt($('room_min_rent').value);
		max_room = ( parseInt($('room_max_rent').value) == 5 )? 55 : parseInt($('room_max_rent').value);
	}
	else
	{
		min_room = 1;
		max_room = 55;
	}
}

function setSearchBoxesForSale()
{
	$('flat').onclick = function()
	{	
		if(!$('allAdds').checked) return;
		searchJSON();
	}

	$('house').onclick = function()
	{	
		if(!$('allAdds').checked) return;
		searchJSON();
	}

	$('villa').onclick = function()
	{	
		if(!$('allAdds').checked) return;
		searchJSON();
	}

	$('ground').onclick = function()
	{	
		if(!$('allAdds').checked) return;
		searchJSON();
	}

	$('room_min').onchange = function()
	{
		if(!$('allAdds').checked) return;
		if(this.value < $('room_max').value)
		{
			searchJSON();
		}
	}
	$('room_max').onchange = function()
	{
		if(!$('allAdds').checked) return;
		if(this.value > $('room_min').value)
		{
			searchJSON();
		}
	}

	$('allAdds').onclick = function()
	{				
		if(this.checked)
		{	
			if($('allAddsRent').checked)
			{
				saveState('K');
			}
			hideAllAdds('E');			
			searchJSONAfterEvent();			
		}
		else
		{
			saveState('E');
			saveState('K');
			hideAllAdds('E');
			if(!$('allAddsRent').checked)
			{
				hideAllAdds('K');
			}				
		}		
	}	
}

function setSearchBoxesForRent()
{	
	$('flatRent').onclick = function()
	{	
		if(!$('allAddsRent').checked) return;
		searchJSON();
	}

	$('houseRent').onclick = function()
	{	
		if(!$('allAddsRent').checked) return;
		searchJSON();
	}

	$('villaRent').onclick = function()
	{	
		if(!$('allAddsRent').checked) return;
		searchJSON();
	}

	$('groundRent').onclick = function()
	{	
		if(!$('allAddsRent').checked) return;
		searchJSON();
	}	


	$('room_min_rent').onchange = function()
	{
		if(!$('allAddsRent').checked) return;
		if(this.value < $('room_max_rent').value)
		{
			searchJSON();
		}
	}
	$('room_max_rent').onchange = function()
	{
		if(!$('allAddsRent').checked) return;
		if(this.value > $('room_min_rent').value)
		{
			searchJSON();
		}
	}
	
	$('allAddsRent').onclick = function()
	{
		if(this.checked)
		{		
			if($('allAdds').checked)
			{
				saveState('E');
			}	
			hideAllAdds('K');	
			searchJSONAfterEvent();
			if(!$('allAdds').checked)
			{
				hideAllAdds('E');
			}			
		}
		else
		{
			saveState('E');
			saveState('K');
			hideAllAdds('K');
			if(!$('allAdds').checked)
			{
				hideAllAdds('E');
			}				
		}		
	}	
}


function searchJSONAfterEvent()
{		
	stateArraySale = new Array();	
	stateArrayRent = new Array();	

	for(var i=0; i<datalength; i++)	     	   
	{			
		if(!smallMarkerArray[i].isHidden())
		{
			if(SALE_MODE == 'E')
	 			stateArraySale.push(i);
			else
				stateArrayRent.push(i);
		}	
		if(!bigMarkerArray[i].isHidden())
		{
			if(SALE_MODE == 'E')
	 			stateArraySale.push(i);
			else
				stateArrayRent.push(i);
		}			
		smallMarkerArray[i].hide();
		bigMarkerArray[i].hide();			
	}		
	searchJSON();

	if(SALE_MODE == 'E')
	{		
		if(!$('allAdds').checked && !$('allAddsRent').checked)
		{						
			hideAllAdds('E');
			hideAllAdds('K');
			return false;
		}
		if($('allAdds').checked && !$('allAddsRent').checked)
		{			
			hideAllAdds('K');
			return false;
		}
		if(!$('allAdds').checked && $('allAddsRent').checked)
		{				
			searchJSONInverse();
			hideAllAdds('E');
			return false;
		}
		if($('allAdds').checked && $('allAddsRent').checked)
		{					
			searchJSONInverse();
			return false;			
		}

	}
		
	if(SALE_MODE == 'K')
	{		
		if(!$('allAdds').checked && !$('allAddsRent').checked)
		{
			hideAllAdds('E');
			hideAllAdds('K');
			return false;
		}
		if($('allAdds').checked && !$('allAddsRent').checked)
		{		
			searchJSONInverse();
			hideAllAdds('K');			
			return false;
		}
		if(!$('allAdds').checked && $('allAddsRent').checked)
		{					
			hideAllAdds('E');
			return false;
		}
		if($('allAdds').checked && $('allAddsRent').checked)
		{			
			searchJSONInverse();		
			return false;
		}
	}	
}

function searchJSONInverse()
{
	if(SALE_MODE == 'E')
	{		
		setSearchSettingsForRent();		
	}

	if(SALE_MODE == 'K')
	{		
		setSearchSettingsForSale();	
	}
	
	var sale_mode = (SALE_MODE == 'E')? 'K' : 'E';
		
	if(!PRICE_LIMITER)
	{
		//console.log('inverse ' + from + ' - ' + to + ' - ' + date)
		for(var i=0; i<datalength; i++)	     	   
		{				
			if(data[i].type == sale_mode && data[i].datum >= date && 
			  (data[i].type3 == flat || data[i].type3 == house || data[i].type3 == villa || data[i].type3 == ground) &&
			  (data[i].ar) >= from && data[i].ar <= to &&
			  (parseInt(data[i].rooms) + parseInt(data[i].halfrooms) >= min_room &&  parseInt(data[i].rooms) + parseInt(data[i].halfrooms) <= max_room) )
			{				
				smallMarkerArray[i].show();
				bigMarkerArray[i].show();					
			}
			else
			{
				if(data[i].type == sale_mode)
				{
					smallMarkerArray[i].hide();
					bigMarkerArray[i].hide();		
				}
			}			
		}				
	}	
	else
	{
		if(sale_mode == 'E')
		{
			price_min = limiterForSale.price_min;
			price_max = limiterForSale.price_max;
		}
		else
		{
			price_min = limiterForRent.price_min;
			price_max = limiterForRent.price_max;			
		}
		for(var i=0; i<datalength; i++)	     	   
		{	
			if(data[i].type == sale_mode && data[i].datum >= date && 
			  (data[i].type3 == flat || data[i].type3 == house || data[i].type3 == villa || data[i].type3 == ground) &&
			  (data[i].ar <= price_max && data[i].ar >= price_min) &&
			  (parseInt(data[i].rooms) + parseInt(data[i].halfrooms) >= min_room &&  parseInt(data[i].rooms) + parseInt(data[i].halfrooms) <= max_room) )
			{
				smallMarkerArray[i].show();
				bigMarkerArray[i].show();					
			}
			else
			{
				if(data[i].type == sale_mode)
				{
					smallMarkerArray[i].hide();
					bigMarkerArray[i].hide();		
				}
			}		  
	    }
	}
	return false;
}

function hideAllAdds(sale_mode)
{
	for(var i=0; i<datalength; i++)	     	   
	{	
		if(data[i].type == sale_mode)
		{
			smallMarkerArray[i].hide();
			bigMarkerArray[i].hide();		
		}
	}		
}

function saveState(sale_mode)
{
	stateArray = new Array;	

	for(var i=0; i<datalength; i++)	     	   
	{	
		if(smallMarkerArray[i].isHidden() && data[i].type == sale_mode)
		{
			stateArray.push(['hidden' , data[i].type]);			
		}
		else
		{
			stateArray.push(['shown', data[i].type]);			
		}
		if(bigMarkerArray[i].isHidden() && data[i].type == sale_mode)
		{
			stateArray.push(['hidden' , data[i].type]);			
		}
		else
		{
			stateArray.push(['shown', data[i].type]);			
		}			
	}		
}

function showAllAdds()
{
	for(var i=0; i<datalength; i++)	     	   
	{					
		smallMarkerArray[i].show();
		bigMarkerArray[i].show();			
	}		
}


function setDateChecker()
{
	$('dateChecker').onclick = function(e)
	{					
		if(!$('allAddsRent').checked && !$('allAdds').checked) return;
		setSearchSettingsForSale()
		setSearchSettingsForRent()
		searchJSONAfterEvent();					
	}

	$('search_year').onchange = function()
	{	
		if(!$('allAddsRent').checked && !$('allAdds').checked) return;
		searchJSONAfterEvent();
	}

	$('search_month').onchange = function()
	{	
		if(!$('allAddsRent').checked && !$('allAdds').checked) return;
		searchJSONAfterEvent();
	}

	$('search_day').onchange = function()
	{	
		if(!$('allAddsRent').checked && !$('allAdds').checked) return;
		searchJSONAfterEvent();
	}
}

function setHidden()
{	
	if(!$('allAddsRent').checked)
	{
		hideAllAdds('K');
	}	
	if(!$('allAdds').checked)
	{
		hideAllAdds('E');
	}			
}

function setMarkerStates()
{
	var statesE = new Array();
	var statesK = new Array();

	var arr = (smallMarkerArray.length > 0)? smallMarkerArray : bigMarkerArray;
	for(var i=0; i<arr.length; i++)	     	   
	{	
		if(SALE_MODE == 'E' && arr[i].type == 'K' && $('allAddsRent').checked)
		{
			arr[i].show();	
		}
		if(SALE_MODE == 'K' && arr[i].type == 'E' && $('allAdds').checked)
		{
			arr[i].show();					
		}
	}		
}