function printPage() {
	window.print();
	return true;
}


var myFavoritesClass = Class.create({
	initialize: function() {
		this.fav = new Array();
	}
});

var slideGalleryClass = Class.create({
	initialize: function() {
		this.jump = 25; // jump in pixels
		
		this.x = 0;
		this.container_w = $('propertyGalleryPicturesContainer').getWidth();
		this.element_w = $('propertyGalleryPictures').getWidth();
		
		this.slideRightInterval = null;
		this.slideLeftInterval = null;
		
		$('arrowRight').observe('mousedown', this.slideLeftHandler.bindAsEventListener(this));
		//$('arrowRight').observe('mouseup', this.slideLeftHandlerStop.bindAsEventListener(this));
		
		$('arrowLeft').observe('mousedown', this.slideRightHandler.bindAsEventListener(this));
		//$('arrowLeft').observe('mouseup', this.slideRightHandlerStop.bindAsEventListener(this));
		
		//alert('Container: ' + $('propertyGalleryPicturesContainer').getWidth() + ' Pictures: ' + $('propertyGalleryPictures').getWidth());
		
		document.observe('mouseup', this.slideHandlerStop.bindAsEventListener(this));
	},
	
	slideLeftHandler: function () {
		this.slideLeftInterval = new PeriodicalExecuter(this.slideLeft.bind(this), 0.03);
	},
	
	slideLeftHandlerStop: function () {
		this.slideLeftInterval.stop();
	},
	
	slideRightHandler: function () {
		this.slideRightInterval = new PeriodicalExecuter(this.slideRight.bind(this), 0.03);
	},
	
	slideRightHandlerStop: function () {
		this.slideRightInterval.stop();
	},
	
	slideHandlerStop: function () {
		if (this.slideLeftInterval) this.slideLeftInterval.stop();
		if (this.slideRightInterval) this.slideRightInterval.stop();
	},
	
	slideLeft: function() {
		var diff = this.element_w-this.container_w;
		if (this.x < diff) {
			this.x = this.x+this.jump;
			var margin = (-1*this.x) + 'px';
			$('propertyGalleryPictures').setStyle({ marginLeft: margin });
		}
	},
	
	slideRight: function () {
		if (this.x > 0) {
			this.x = this.x-this.jump;
			var margin = (-1*this.x) + 'px';
			$('propertyGalleryPictures').setStyle({ marginLeft: margin });
		}
	}
});





/**********************************************************/
/***   ADVANCED SEARCH									  */
/**********************************************************/

var adv_searchClass = Class.create({

	initialize: function(args) {
		this.args = args ? args : new Array(); 
		this.args['type_img_base'] = args['type_img_base'] || '/images/search/';
		this.args['adv_search_container'] = args['adv_search_container'] || 'adv_search_container';
		this.args['adv_search_calendar'] = args['adv_search_calendar'] || 'adv_search_calendar';
		
		this.criteria = this.args['criteria'] || new Hash();
		
		if (!this.criteria.get('type')) {
			 this.criteria.set('type', new Hash());
			 this.criteria.get('type').set(1, 0);
			 this.criteria.get('type').set(2, 0);
		}
		
		if (!this.criteria.get('city')) this.criteria.set('city', new Hash());
		
		if (!this.criteria.get('pagination')) this.criteria.set('pagination', new Hash());
		if (!this.criteria.get('pagination').get('records')) this.criteria.get('pagination').set('records', 10);
		if (!this.criteria.get('pagination').get('offset')) this.criteria.get('pagination').set('offset', 1);
		
		if (!this.criteria.get('guests')) this.criteria.set('guests', 2);
		if (!this.criteria.get('children')) this.criteria.set('children', 0);
		
		this.property_list = null;
		this.search_fliter = false;
		
		var objCssSel = {  
			'type': '#adv_search_type img',
			'guests': '#adv_search_step_3 div.adv_search_guests_container img',
			'children': '#guests_children'
			}
		this.objCssSel = this.args['objCssSel'] || objCssSel;
		
		//events
		if ($$(this.objCssSel['type'])) {
			$$(this.objCssSel['type']).each(this.addEventToType.bind(this));
		}
		
		if ($$(this.objCssSel['guests'])) {
			$$(this.objCssSel['guests']).each(this.addEventToGuests.bind(this));
		}
		
		if ($$(this.objCssSel['children'])) {
			$$(this.objCssSel['children']).each(this.addEventToChildren.bind(this));
		}
	},
	
	addEventToType: function(obj) {
		obj.observe('click', this.selectType.bindAsEventListener(this));
	},
	
	addEventToGuests: function(obj) {
		obj.observe('click', this.selectGuests.bindAsEventListener(this));
		obj.observe('mouseover', this.mouseOverGuests.bindAsEventListener(this));
		obj.observe('mouseout', this.mouseOutGuests.bindAsEventListener(this));
		obj.setStyle({ 'cursor': 'pointer' });
	},
	
	addEventToChildren: function(obj) {
		obj.observe('click', this.selectChildren.bindAsEventListener(this));
	},
	
	addEventToHeader: function() {
		if (!this.addEventToHeader_flag) {
			this.addEventToHeader_flag = true;
			$('adv_search_headbox').observe('click', this.toggleAdvSearch.bindAsEventListener(this));
			$('adv_search_headbox').setStyle({ 'cursor': 'pointer'});
		}	
	},
	
	toggleAdvSearch: function() {
			$('adv_search_container').toggle();
			$('adv_search_headbox_arrow_up').toggle();
			$('adv_search_headbox_arrow_down').toggle();
	},
	
	setCIW: function(c) {
		this.criteria_in_words = c;
	},
	
	loadSearchCriteria: function(criteria) {
		var c = criteria.evalJSON();
		
		if (c.type) $H(c.type).each(this.loadSearchCriteriaType.bind(this));
		if (c.city) $H(c.city).each(this.loadSearchCriteriaCity.bind(this));
		
		this.criteria.get('pagination').set('records', c.pagination['records']);
		this.criteria.get('pagination').set('offset', c.pagination['offset']);
		
		if (c.guests) this.criteria.set('guests', c.guests);
		this.markGuests();
		
		//if (c.children || c.children === 0) this.criteria.set('children', c.children);
		//$('guests_children_'+c.children).checked = true;
		
		if (c.term) {
			this.criteria.set('term', new Hash());
			this.criteria.get('term').set('start_date', c.term['start_date']);
			this.criteria.get('term').set('end_date', c.term['end_date']);
			
			calendarsSet.selectionObj.loadSelection(c.term['start_date'], c.term['end_date']);
		} 
		
		property_list.setCriteria(this.criteria);
		property_list.loadList();
		
		this.addEventToHeader();
		this.criteria_in_words.setCriteria(this.criteria);
		this.criteria_in_words.create();
	},
	
	loadSearchCriteriaType: function(pair) {
		if (!pair.key) return false;
	
		this.criteria.get('type').set(pair.key, pair.value);
		var s = this.criteria.get('type').get(pair.key) ? 1 : 0; 
		$('type_'+pair.key).src = this.args['type_img_base']+'type_'+pair.key+'_'+s+'.jpg';
	},
	
	loadSearchCriteriaCity: function(pair) {
		if (!pair.key) return false;
		this.criteria.get('city').set(pair.key, pair.value);
	},
	
	
	selectCity: function(id, s) {
		this.criteria.get('city').set(id, s);
	},
	
	selectType: function(event) {
		var obj =  Event.element(event)
		var id = obj.next().value;
		var s = this.criteria.get('type').get(id) ? 0 : 1; 
		this.criteria.get('type').set(id, s);
		obj.src = this.args['type_img_base']+'type_'+id+'_'+s+'.jpg';	
	}, 
	
	selectGuests: function(event) {
		var obj =  Event.element(event);
		
		//if (parseInt(obj.next().value < 2)) return false; // min 2 adults
		
		var g = (parseInt(obj.next().value < 2)) ? 2 : parseInt(obj.next().value);
		this.criteria.set('guests', g); 
		$('guests_adults_total').innerHTML = this.criteria.get('guests');
		this.markGuests();
	}, 
	
	markGuests: function(n) {
		var n = n ? n : this.criteria.get('guests');
		
		var i = n;
		while($('guests_adults_'+i)) {
			var obj = $('guests_adults_'+i);
			obj.src = this.args['type_img_base']+'adult_sel_ico.jpg';
			i--;
		}
		
		var i = n+1;
		while($('guests_adults_'+i)) {
			var obj = $('guests_adults_'+i);
			obj.src = this.args['type_img_base']+'adult_ico.jpg';
			i++;
		}
		
	},
	
	mouseOverGuests: function(event) {
		var obj =  Event.element(event);
		var g = (obj.next().value < 2) ? 2 : obj.next().value; 
		this.markGuests(g);
		//$('guests_adults_total').innerHTML = obj.next().value;
	},
	
	mouseOutGuests: function(event) {
		this.markGuests();
		//$('guests_adults_total').innerHTML = this.criteria.get('guests');
	},
	
	selectChildren: function(event) {
		var obj =  Event.element(event);
		this.criteria.set('children', obj.value);
	},
	
	setPropertyList: function(v) {
		this.property_list = v;
	},
	
	setSearchFilter: function(v) {
		if (v === null)	v = this.search_fliter ? 0 : 1;
		this.search_fliter = v;
	},
	
	folding: function(v) {
		if (v) {
			Effect.SlideDown(this.args['adv_search_container'], { duration: 1.0 });
		} else {
			Effect.SlideUp(this.args['adv_search_container'], { duration: 0.5 });
		}
	},
	
	search: function() {
		this.folding(false);
		$(this.args['adv_search_calendar']).appear({ duration: 0.5, queue: 'end' });
		property_list.setCriteria(this.criteria);
		property_list.loadList();
		
		this.addEventToHeader();
		this.criteria_in_words.setCriteria(this.criteria);
		this.criteria_in_words.create();
	}
	
});


/**********************************************************/
/***   PROPERTY LIST									  */
/**********************************************************/

var property_listClass = new Class.create({
	initialize: function(args) {
	
		this.args = args || new Array();
		this.args['list_container'] = args['list_container'] || 'property_list_container';
	
		//this.pagination = new Array();
		//this.pagination['records'] = 3;
		//this.pagination['offset'] = 0;
		
		this.criteria = null;
		this.postdata = null;
	},
	
	setCriteria: function(criteria) {
		this.criteria = criteria;
	},
	
	preparePostdata: function(key) {
		this.postdata = { 'search': this.criteria.toJSON(),
						  'pagination[records]': this.criteria.get('pagination').get('records'), 
						  'pagination[offset]': this.criteria.get('pagination').get('offset')
						};
	},
	
	setOffset: function(offset) {
		this.criteria.get('pagination').set('offset', offset);
	},
	
	goToPage: function(page) {
		this.setOffset(page);
		this.loadList();
	},
	
	loadList: function() {
		this.preparePostdata();
	
		new Ajax.Request(this.args['url_adv_search_req'], {
  			method: 'post',
 			parameters: this.postdata,
 			onCreate: null,
 			onSuccess: this.updateList.bind(this)
 		});
	},
	
	updateList: function(transport) {
		$(this.args['list_container']).update(transport.responseText);
	}
	
});





criteria_in_wordsClass = new Class.create({
	initialize: function() {
		this.criteria = null;
		this.lang = new Array();
		this.txt = '';
	},
	
	setCriteria: function(c) {
		this.criteria = c;
	},
	
	create: function() {
		this.txt = '';
		this.city_flag = false;
		
		if (this.criteria.get('type').get(1)) this.txt = this.txt + this.lang['type'][1];
		if (this.criteria.get('type').get(2)) this.txt = this.txt + '/' + this.lang['type'][2];
		if (this.criteria.get('type').get(1) === 0 && this.criteria.get('type').get(2) === 0) this.txt = this.txt + this.lang['dowolna_nieruchomosc'];
			
		this.txt = this.txt + ' | ';
		
		if (this.criteria.get('city')) this.criteria.get('city').each(this.itCity.bind(this));
		if (!this.city_flag) this.txt = this.txt + this.lang['dowolna_miejscowosc'];
		
		this.txt = this.txt + ' | ';
		
		if (this.criteria.get('guests') > 1 && this.criteria.get('guests') <= 4) {
			this.txt = this.txt + this.criteria.get('guests') + ' ' + this.lang['osoby'];
		} else if (this.criteria.get('guests') > 4) {
			this.txt = this.txt + this.criteria.get('guests') + ' ' + this.lang['osob'];
		} else {
			this.txt = this.txt + this.criteria.get('guests') + ' ' + this.lang['osoba'];
		}
		
		if (this.criteria.get('children') && parseInt(this.criteria.get('children')) > 0) {
			this.txt = this.txt + ' (' + this.lang['w_tym']+ ' ';
			
			if (parseInt(this.criteria.get('children')) > 1) {
				this.txt = this.txt + this.criteria.get('children') + ' ' + this.lang['lub_wiecej'] + ' ' + this.lang['dzieci'];
			} else {
				this.txt = this.txt + this.criteria.get('children') + ' ' + this.lang['dziecko'];
			}
			
			this.txt = this.txt + ')';
		}
		
		$('adv_search_headbox_criteria').innerHTML = this.txt;
		
	},
	
	itCity: function(pair) {
		if (parseInt(pair.key) && parseInt(pair.value)) {
			if (this.city_flag) this.txt = this.txt + '/';
			this.txt = this.txt + this.lang['city'][pair.key];
			this.city_flag = true;
		}		
	}
});




function clients_display_company(s) {
	if (s) {
		$$('tr.singup_company').each(function(obj) { obj.show(); });
	} else {
		$$('tr.singup_company').each(function(obj) { obj.hide(); });
	}
}

function clients_display_post_address(s) {
	if (s) {
		$$('tr.signup_post').each(function(obj) { obj.hide(); });
	} else {
		$$('tr.signup_post').each(function(obj) { obj.show(); });
	}
}




function fadeEfectClass(b) {
	
	this.changeOpac = changeOpac;
	this.fadeIn = fadeIn;
	this.fadeOut = fadeOut;
	
	var b = b;
	var opcaityTimer1;
	var opcaityTimer2;
	var opacityN = 1;
	
	function changeOpac(opacity, id) {
	    var object = document.getElementById(id).style;
	 try {   object.opacity = (opacity / 100); } catch (e) { }
	 try {   object.MozOpacity = (opacity / 100);} catch (e) { }
	 try {   object.KhtmlOpacity = (opacity / 100);} catch (e) { }
	 try {   object.filter = "alpha(opacity=" + opacity + ")";} catch (e) { }
	}
	
	
	function fadeIn(id) { 
		if(opacityN < 100) { 
			clearTimeout(opcaityTimer2);
			opacityN = opacityN+5;
			changeOpac(opacityN, id);
			opcaityTimer1 = setTimeout(b+'.fadeIn(\''+id+'\')', 15);
		}
	}
	
	function fadeOut(id) { 
		if(opacityN > 5) {
			clearTimeout(opcaityTimer1);
			opacityN = opacityN-5;
			changeOpac(opacityN, id);
			opcaityTimer2 = setTimeout(b+'.fadeOut(\''+id+'\')', 15);
		}
	}
}

b1 = new fadeEfectClass('b1');
b2 = new fadeEfectClass('b2');
b3 = new fadeEfectClass('b3');
b4 = new fadeEfectClass('b4');
b5 = new fadeEfectClass('b5');
b6 = new fadeEfectClass('b6');
b7 = new fadeEfectClass('b7');
b8 = new fadeEfectClass('b8');
b9 = new fadeEfectClass('b9');
b10 = new fadeEfectClass('b10');
b11 = new fadeEfectClass('b11');


