var cityArr = new Array();
var language = null;
var window_width=963;

var loadCities = Class.create();
   loadCities.prototype = {
      initialize:function(select_1, select_2, url, cityLayer, cityField){
         this.select_1 = $(select_1);
         this.select_2 = $(select_2);         
         this.url = url;
		 this.cityLayer = $(cityLayer);
		 this.cityField = $(cityField);
         Event.observe(this.select_1,'change',this.change.bind(this));
		 this.change();
      },     
      
      change:function(){          
         var myVars = 'county=' + this.select_1.value;    
		 this.cityLayer.innerHTML = '';
		 //this.cityLayer.className = '';
		 this.cityField.value = '';
		 cityArr = new Array();
         var myAjax = new Ajax.Request(
		     this.url, 
		     {
		       method: 'post', 
		       parameters: myVars, 
		       onComplete: this.showResult.bind(this),
               onFailure:function(){
                 alert('A listát nem sikerült lehívni.');
               }.bind(this)                            		
			 });               	                                             
      },
      
      showResult:function(resp,json){
         var opt, value;
		 this.clearSelect();
		 var opts = resp.responseText.split(';');
		 for(var i=0; i<opts.length; i++)
		 {
			splitter = opts[i].split(',');
			opt = splitter[1];
			if(splitter[0].match('Budapest'))
			{
				value = splitter[1] + ' ' + $lang('district');
			}
			else
			{
				value = splitter[0];
			}			
			this.select_2.options[this.select_2.options.length] = new Option(value, opt);
		 }		 
      },

	  clearSelect:function(){			
		  var opts = this.select_2.getElementsByTagName('option');
		  var optslength = opts.length;
		  while(optslength > 1)
		  {
			this.select_2.options[--optslength] = null;
		  }	
		  this.select_2.options[0].text = (this.select_1.value.match('budapest'))? $lang('alldistricts') : $lang('allcities');
      }
}

var cityChooser = Class.create();
cityChooser.prototype = {
	initialize:function(select, parent, hiddenfield, number){
		this.select = $(select);
		this.parent = $(parent);
		this.hiddenfield = $(hiddenfield);
		this.number = number;		
		this.init();
	},

	init:function(){
		Event.observe(this.select, 'change', this.change.bind(this));
		this.parent.className = 'hidden';
	},

	change:function(){
		if(this.select.value == '#')
		{
			this.parent.innerHTML = '';
			this.parent.className = 'hidden';
			this.hiddenfield.value = '';
			cityArr = new Array();
			return;
		}
		var value = this.select.value;		
		var index = this.select.selectedIndex;
		var text = this.select.options[index].text;
		if(cityArr.indexOf(value) == -1 && cityArr.length < this.number)
		{
			cityArr.push(value);
			if(!this.parent.className.match('filledChooser'))
			{
				this.parent.className = 'filledChooser';
			}
			this.hiddenfield.value = this.cityToString();
			this.showCity(value, text);
		}		
	},

	showCity:function(city, hiddentext){
		var div = document.createElement('div');
		var span_text = document.createElement('span');
		span_text.className = 'cityText';
		span_text.innerHTML = hiddentext;
		var hidden = document.createElement('span');
		hidden.className = 'hidden';
		hidden.innerHTML = city;
		var span_link = document.createElement('span');
		span_link.className = 'cityLink';
		span_link.innerHTML = '[töröl]';
		var clearer = document.createElement('span');
		clearer.className = 'clear';
		div.appendChild(hidden);
		div.appendChild(span_text);
		div.appendChild(span_link);
		div.appendChild(clearer);
		this.parent.appendChild(div);
		Event.observe(span_link, 'click', this.deleteCity.bindAsEventListener(this));
	},

	deleteCity:function(e){
		var item = Event.element(e);
		var link = item.parentNode.getElementsByTagName('span')[0].innerHTML;
		item.parentNode.parentNode.removeChild(item.parentNode);
		cityArr = cityArr.without(link);				
		if(!cityArr.length)
		{
			this.parent.className = 'hidden';
			this.select.value = '#';
		}
		this.hiddenfield.value = this.cityToString();			
	},

	cityToString:function(){
		return cityArr.join(',');
	}
}

var setTypeSelects = Class.create();
setTypeSelects.prototype = {
	initialize:function(select, boxes){
		this.select = $(select);
		this.boxes = boxes;
		this.init();
	},

	init:function(){		
		Event.observe(this.select,'change', this.change.bind(this));
		this.change();
	},

	change:function(){
		this.boxes.each(
			function(item){
				$(item).hide();
				if(item.match(this.select.value))
				{					
					$(item).style.display = 'block';
				}
			}.bind(this)
		)
		if(this.select.value.match('elado') || this.select.value.match('forsale'))
		{
			$('priceFromSale').value = limiterForSale.minValue;
			$('priceFromTextSale').value = limiterForSale.minValueObj.innerHTML;
			$('priceToSale').value = limiterForSale.maxValue;
			$('priceToTextSale').value = limiterForSale.maxValueObj.innerHTML;
		}
		else
		{
			$('priceFromRent').value = limiterForRent.minValue;
			$('priceFromTextRent').value = limiterForRent.minValueObj.innerHTML;
			$('priceToRent').value = limiterForRent.maxValue;
			$('priceToTextRent').value = limiterForRent.minValueObj.innerHTML;
		}
	}
}


var setRoomNumberLayer = Class.create();
setRoomNumberLayer.prototype = {
	initialize:function(select, layer){
		this.select = $(select);
		this.layer = $(layer);
		this.init();
	},

	init:function(){		
		Event.observe(this.select,'change', this.change.bind(this));
		if(this.select.value == 'lakas')
		{
			this.change();
		}
	},

	change:function(){
		if(this.select.value == 'lakas')
		{
			this.layer.style.display = 'block';
			$('roomFrom').value = '';
			$('roomTo').value = '';
		}
		else
		{
			this.layer.style.display = 'none';
			$('roomFrom').value = '';
			$('roomTo').value = '';
		}
	}
}


var setDateLayer = Class.create()
setDateLayer.prototype = {
	initialize:function(dateLayer, dateLayerText, dateLayerOptions, dateLayerClose, dates){
		this.dateLayer = $(dateLayer);
		this.dateLayerText = $(dateLayerText);
		this.dateLayerOptions = $(dateLayerOptions);
		this.dateLayerClose = $(dateLayerClose);
		this.dateLayers = dates;
		this.dates = [0,1,3,7,0];
		this.lastClicked = null;
		this.init();
	},

	init:function(){
		Event.observe(this.dateLayerText,'click',this.textClick.bindAsEventListener(this));
		Event.observe(this.dateLayerClose,'click',this.closeClick.bindAsEventListener(this));		
		Event.observe('dateFromPicker','click',function(){return false;});	
		this.dateLayers.each(
			function(item){
				Event.observe(item,'click',this.dateLayerClick.bindAsEventListener(this));
			}.bind(this)
		)
		this.lastClicked = $(this.dateLayers[0]);
		this.lastClicked.className += ' dateOptionActive';
		$('dateFrom').value = this.setDate($(this.dates[0]));
	},

	dateLayerClick:function(e){
		var src = Event.element(e);
		Event.stop(e);
		var days = this.dates[this.dateLayers.indexOf(src.id)];
		$('dateLayerSelectedOption').style.display = 'none';		
		if(this.lastClicked)
		{
			this.lastClicked.className = this.lastClicked.className.replace(' dateOptionActive','');
		}
		this.lastClicked = src;	
		
		this.lastClicked.className += ' dateOptionActive';

		if(this.lastClicked.id.match('dateSpecified'))
		{			
			if(calendar.displayed)                                                                           
			  calendar.close();                                                                            
		    else                                                                                              
			  calendar.display();				
		}
		else
		{
			$('dateChooserLayer').style.display = 'none';			
			$('dateFrom').value = this.setDate(days);	
			$('dateFromPicker').innerHTML = '';			
			if(calendar.displayed)                                                                           
			  calendar.close();  
			this.closeClick();
		}						
	},	

	setText:function(){
		var fromText = '';
		for(var i=0; i<this.lastClicked.childNodes.length; i++)
		{
			if(this.lastClicked.childNodes[i].nodeValue != 'null' || this.lastClicked.childNodes[i].nodeValue != '')
			{
				if(this.lastClicked.childNodes[i].nodeName == '#text')
				{
					fromText += this.lastClicked.childNodes[i].nodeValue;
				}
				if(this.lastClicked.childNodes[i].nodeName == 'SPAN')
				{
					fromText += this.lastClicked.childNodes[i].innerHTML;
				}				
			}
		}	
		return fromText;
	},

	setDate:function(days){	
		if(days == 0) 
		{
			return 0;
		}
		var date = new Date();
		var time = date.setTime(date.getTime() - (1000*60*60*24*days));		
		var month = (date.getMonth()+1 < 10)? '0' + parseInt(date.getMonth()+1) : date.getMonth()+1;
		var day = (date.getDate() < 10)? '0' + date.getDate() : date.getDate();		
	    return (date.getFullYear() + '' + month + '' + day);
	},

	textClick:function(){
		this.dateLayerClose.style.display = 'block';
		this.dateLayerOptions.style.display = 'block';
		this.dateLayer.className = 'dateLayerActive';
		$('dateLayerSelectedOption').style.display = 'none';
		this.dateLayerText.style.backgroundImage = 'url(css/blank.gif)';
		this.dateLayerText.style.paddingLeft = '3px';
	},

	closeClick:function(){
		this.dateLayerClose.style.display = 'none';
		this.dateLayerOptions.style.display = 'none';
		this.dateLayer.className = this.dateLayer.className.replace('dateLayerActive','');
		this.dateLayerText.style.backgroundImage = 'url(css/date_icon.png)';
		this.dateLayerText.style.paddingLeft = '18px';
		if(calendar.displayed)                                                                           
		  calendar.close();   	
		if(this.lastClicked)
		{
			$('dateLayerSelectedOption').style.display = 'block';
			$('dateLayerSelectedOption').innerHTML = this.lastClicked.innerHTML;
			var spans = $('dateLayerSelectedOption').getElementsByTagName('span');
			if(spans.length) spans[0].id = '';
		}
	}
}


var setLinks = Class.create();
setLinks.prototype = {
	initialize:function(parent, img){
		this.parent = $(parent);
		this.img = img;
		this.init();
		this.actClass = document.body.className;
	},

	init:function(){
		var as = $A(this.parent.getElementsByTagName('a'));		
		as.each(
			function(item){
				Event.observe(item,'mouseover',this.over.bindAsEventListener(this));
				Event.observe(item,'mouseout',this.out.bindAsEventListener(this));				
			}.bind(this)
		)					
	},

	over:function(e){
		var src = Event.element(e);		
		if(this.actClass == src.id) return;
		src.style.backgroundImage = 'url(css/'+LANG+'/' + src.id + '_ON_.gif)';		
	},

	out:function(e){
		var src = Event.element(e);
		if(this.actClass == src.id) return;
		src.style.backgroundImage = 'url(css/'+LANG+'/' + src.id + '_OFF.gif)';			
	}
}


function setSearchButton(obj)
{
	$('searchButton').onclick = function()
	{				
		$('dateFromText').value = obj.setText();				
	}

	$('searchButton').onmousedown = function()
	{	
		var pos = (this.currentStyle)	? this.currentStyle.backgroundImage : getComputedStyle(this,'').getPropertyValue('background-position');		
		this.style.backgroundPosition = 'center bottom';						
	}

	$('searchButton').onmouseover = function()
	{										
		var pos = (this.currentStyle)	? this.currentStyle.backgroundImage : getComputedStyle(this,'').getPropertyValue('background-position');		
		this.style.backgroundPosition = 'center center';		
	}

	$('searchButton').onmouseout = function()
	{			
		var pos = (this.currentStyle)	? this.currentStyle.backgroundImage : getComputedStyle(this,'').getPropertyValue('background-position');
		this.style.backgroundPosition = 'top center';			
	}
}

function cssPreloadImages() 
{ 
	var i, j, img; 
	for (i=0; i<document.styleSheets.length; i++) 
	{ 
		var pos = document.styleSheets[i].href.lastIndexOf("/"); 
		var cssDir = (pos != -1) ? document.styleSheets[i].href.substring(0, pos + 1) : ""; 
		var rules = document.styleSheets[i].cssRules ? document.styleSheets[i].cssRules : document.styleSheets[i].rules; 
		for (j=0; j<rules.length; j++) 
		{ 
			var style = rules[j].style; 
			if (style.backgroundImage.toLowerCase().substr(0,4) == "url(") 
			{ 
				var filename = style.backgroundImage.substring(4, style.backgroundImage.length - 1); 
				if (filename.indexOf("http://") != 0 && filename.indexOf("/") != 0) 
					filename = cssDir + filename; 
				var img = new Image(); 
				img.src = filename; 
			} 
		} 
	} 
} 

function setPopups()
{	
	var items = document.getElementsByClassName("premierlink");
	for(var i=0; i<items.length; i++)
	{		
		items[i].onclick = function(e)
		{		
			var id = this.id.split('_')[1];
			window.open(ROOT + id, '', 'width=' + window_width + ',height=700,scrollbars=yes,menubar=yes,resizable=no');
			//window.open('Premier', '', 'width=' + window_width + ',height=700,scrollbars=yes,menubar=yes,resizable=no');			
			return false;
		}
	} 
}

window.onload = function(){
   var oXML = new FCKXml();
   oXML.LoadUrl('/xml/catalog_' + lang + '.xml', function(xml){ 
	   language = xml;	      	
	   new loadCities('county','city', '/load_cities.php','cityChooserLayer','cityChooser');   
	   
	   limiterForSale = new Limiter(0,80000000, 1000000, {min:'priceFromSale' , max:'priceToSale'}, $('pricebarSale').clientWidth, 2, $lang('mft'), {limitMin:'',limitMax:$lang('andmore')});   	   	  
	   limiterForRent = new Limiter(0,150000, 1000, {min:'priceFromRent' , max:'priceToRent'},$('pricebarRent').clientWidth, 3, $lang('eft'),{limitMin:'',limitMax:$lang('andmore')});
	   roomSetter = new Limiter(1,5, 1, {min:'roomFromNum' , max:'roomToNum'}, $('pricebarRoom').clientWidth, 0, '', {limitMin:'',limitMax:'+'});   	   

	   limiterForSale.setValues = function()
	   {		  
			$('priceFrom').value = this.minValue;
			$('priceTo').value = this.maxValue;
			$('priceFromText').value = this.minValueObj.innerHTML;
			$('priceToText').value = this.maxValueObj.innerHTML;			
	   }

	   limiterForRent.setValues = function()
	   {
			$('priceFrom').value = this.minValue;
			$('priceTo').value = this.maxValue;
			$('priceFromText').value = this.minValueObj.innerHTML;
			$('priceToText').value = this.maxValueObj.innerHTML;		   
	   }

	   roomSetter.setValues = function()
	   {
			$('roomFrom').value = this.minValue;
			$('roomTo').value = this.maxValue;
			$('roomFromText').value = this.minValueObj.innerHTML;
			$('roomToText').value = this.maxValueObj.innerHTML;		   
	   }

	   dragger = new Dragger([['pusherMinSale','pusherMaxSale'],['pusherMinRent','pusherMaxRent'],['pusherMinRoom','pusherMaxRoom']], ['frameSale','frameRent','frameRoom'], ['pricebarSale','pricebarRent','pricebarRoom'], [limiterForSale,limiterForRent,roomSetter],[0,0,0]);		   

	   new setRoomNumberLayer('type3','filterbox_room');

	   new setTypeSelects('type1',['filterbox_' + forsale,'filterbox_' + forrent,'filterbox_0']);
	   var chooser = new cityChooser('city','cityChooserLayer','cityChooser',5);	   	   

	   var dates = ['allDate','dateToday','dateLastThreeDay','dateLastWeek','dateSpecified'];
	   var dateHandler = new setDateLayer('dateLayer','dateLayerSelectedOption','dateLayerOptions','dateLayerClose', dates);	   
	   calendar = new Calendar('dateSpecified',{field:'dateFromPicker',hiddenField:'dateFrom',obj:dateHandler,months:eval($lang('months'))});

	   setSearchButton(dateHandler);
	   new setLinks('menuheader_main','css/links_mainpage.gif');
	   cssPreloadImages() ;
	   new windowOpener('main_login','login_popup',400,150,'');
	   new windowOpener('footer_login','login_popup',400,150,'');
	   new windowOpener('main_forgotpass','lostpass',400,230,'');
	   new windowOpener('new_account','new_account',470,600,',scrollbars=1');
	   setPopups();
	})
}