


var Tabs = new Object;

Tabs.switchTabCloud = function(ident,id) {
	var tabs = $$('.'+ident+' .tab');
	tabs.each(function(t){
		t.hide();
	});
	$$('.'+ident+' .tab'+id).each(function(e){
		e.show();
	});
	
	var ident = 'tag_cloud_'+ident;
	
	var tabs = $$('.'+ident+' .tab');
	tabs.each(function(t){
		t.removeClassName('act');
	});
	$$('.'+ident+' .tab'+id).each(function(e){
		e.addClassName('act');
	});
}

Tabs.switchTab = function(p,menu,content,id) {
	
	Element.adjacent(p,'.'+content).each(function(e){
		e.hide();
	});
	
	Element.adjacent(p,'.'+menu).each(function(e){
		e.removeClassName('act');
	});
	
	Element.adjacent(p,'.'+content+'-'+id)[0].show();
	Element.adjacent(p,'.'+menu+'-'+id)[0].addClassName('act');		

}


var Navi = new Object;
Navi.timeout = false;
Navi.lock = false;
Navi.window = false;

Navi.loadingHtml = '<div style="text-align:center;margin-top:15px;"><img src="/public/images/admin/spinner.gif" /><br />Trwa ładowanie...</div>';

Navi.relativeUrl = function(url) {
	if(url.indexOf('http:/') > -1) {
		var http = true; var b = 2;
		var url = url.replace('http:/','');
	} else {
		var http = false; var b = 1;
	}	
	var arr = url.split('/');
	var len = arr.length;
	var rel = '';
	for(var i = b; i < len; i++) {
		rel += arr[i]+'/';
	}
	return rel;
}

Navi.loadContentP = function(action,controller,module,pars) {
	Navi.loadContent(module+'/'+controller+'_'+action,pars);
}

Navi.refresh = function(div,pars) {
	var url = Global.get('tasks_path')+'/'+Global.get('tasks_action');
	Navi.loadContent(url,pars,div);
}

Navi.loadContent = function(url,pars,div,otherResp) {
		
	if(!Navi.lock) {
		if(!div) { var div = 'content'; }
		
		var resp = function(req) {
			$('systemWorking').hide();
					
			window.setTimeout(function() {
				if (div != 'silent') {
					$(div).innerHTML = req.responseText;
				}
				window.clearTimeout(Navi.timeout);
				Navi.hideLoading();
				Navi.lock = false;				
				if (div != 'silent') {
					req.responseText.evalScripts();
				}
				if(otherResp) {
					eval(otherResp);
				}
			}, 0);		
		}
		
		if(!pars) { var pars = 'foo=true'; }
		
		var gridOffset = ReservationGrid.getOffset();
		if(gridOffset > 0) { 
			var gtag = '&gridOffset='+gridOffset;
		} else {
			var gtag = '';
		}
		pars += '&targetDiv='+div+gtag;
		
		var url = url.replace('http://localhost/','');
		//var url = Navi.relativeUrl(url);
		var url = Global.get('link_path')+'admin/'+url;		
		//alert(url);
		
		ReservationGrid.isRendered = false;
		var myAjax = new Ajax.Request(url,{ method: 'post',parameters: pars,evalScripts: true,onComplete:resp});
		
		Navi.timeout = Navi.showLoading.delay(0);
		Navi.lock = true;
	}
}

Navi.adjustSize = function() {
	var width = document.viewport.getWidth();
	var height = document.viewport.getHeight();	
	$('contentLoading').style.width = width+'px';
	$('contentLoading').style.height = height+'px';
}

Navi.showLoading = function() {
	Navi.adjustSize();
	$('contentLoadingBg').show();
	$('contentLoading').show();
	$('contentLoadingBg').fade({ duration: 0.2, from: 0, to: 0.1});
}
Navi.hideLoading = function() {
	Navi.adjustSize();
	$('contentLoading').fade({ duration: 0.2, from: 0.5, to: 0});
	$('contentLoadingBg').fade({ duration: 0.2, from: 0.1, to: 0});
}

Navi.popup = function(url,pars,width,height) {
	AjaxForm.editor = false;
	
	$$('.prototip').each(function(n){ n.hide(); });
	
	if(!width) { var width = 600; }
	if(!height) { var height = 500; }
	
	Windows.overlayShowEffectOptions = null;
	Windows.overlayHideEffectOptions = null;
	
	if (!$('adminPopup')) {
		var windowPars = {
			className: 'mac_os_x',
			width: width,
			height: height,
			destroyOnClose: true,
			draggable: false,
			resizable: false,
			closable: true,
			minimizable: false,
			maximizable: false,
			showEffect: Element.show,
			hideEffect: Element.hide,
			effectOptions: {
				duration: 0
			}
		}
		Navi.window = new Window('adminPopup', windowPars);
		Navi.window.setAjaxContent(url, {
			method: 'post',
			parameters: pars
		}, true, true);
		Navi.window.showCenter();
	} else {
		Navi.loadContent(url,pars,'adminPopup_content');
	}
}

Navi.setPopupTitle = function(title) {
	Navi.window.setTitle('test test');
}

Navi.openWindow = function(url) {
	var w = window.open(url,'pop','toolbars=no,scrolling=yes,width=700,height=800');
}




var FormObj = new Object;


FormObj.validate = function(ref) {

	var st = true;
	var f = $(ref).adjacent('.required');
	var errorCnt = 0;
	
	f.each(function(e) {
		if (e.type == 'checkbox') {
			if(!e.checked) {
				e.addClassName('error');
				errorCnt++;
				if (errorCnt == 1) {
					e.focus();
				}
				st = false;
			}
		}
		else {
			if (e.value == '') {
				e.addClassName('error');
				errorCnt++;
				if (errorCnt == 1) {
					e.focus();
				}
				st = false;
			}
		}
	});
	
	if(errorCnt > 0) { 
		alert('Prosimy o wypełnienie wszystkich pól oznaczonych gwiazdką *');
	}
	
	f.each(function(e) {
		//e.onblur = function() { this.removeClassName('error'); }
		e.onclick = function() { this.removeClassName('error'); }
	});
	
	return st;
	
}

FormObj.validateEmail = function(email) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   if(reg.test(email) == false) {
      return false;
   } else {
   	  return true;
   }
}

FormObj.submit = function(ref,token) {
	
	$('token').value = token;
	
	if(FormObj.validate(ref)) {
		ref.submit();
	}
	
}


function RotatingBaner() {
	var interval;
	var divId;
	var time;
	var slidesCount;	
	var currentId;
	var instanceName;
	var hold;
}

RotatingBaner.prototype.init = function(div,instanceName,time) {
	
	this.divId = div;
	this.div = $(div);
	this.time = time;
	this.instanceName = instanceName;
	this.zIndex = 0;
	this.currentId = 0;
	this.hold = false;
	this.phold = false;
	
	var slides = $$('.'+div+' .Slide');
	this.slidesCount = slides.length;

	$$('.'+div)[0].onmouseover = this.getHoldFn(instanceName);
	$$('.'+div)[0].onmouseout = this.getUnHoldFn(instanceName);
	//$$('.'+div)[0].onclick = this.getPHoldFn(instanceName);
	
	this.show(this.currentId,true);	
	this.start();	
}

RotatingBaner.prototype.rotate = function() {
	if((!this.hold)&&(!this.phold)) {
		var id = this.currentId+1;
		if(id > (this.slidesCount-1)) { var id = 0; }
		this.show(id);	
	}
}

RotatingBaner.prototype.show = function(id,nofade) {
	
	var selector = '.'+this.divId+' .SlidesContent .Slide';
	var s = $$(selector);
	
	for(var i = 0; i < s.length; i++) {
		if(i == this.currentId) {
			s[i].style.zIndex = 1;
		} else {
			s[i].style.zIndex = 0;
		}
	}
	
	var selector = '.'+this.divId+' .SlidesNavi .Switch';
	var s = $$(selector);
	s.each(function(e){
		e.removeClassName('act');		
	});
	
	var selector = '.'+this.divId+' .SlidesNavi .Switch'+id;
	$$(selector)[0].addClassName('act');

	var selector = '.'+this.divId+' .SlidesContent .Slide'+id;	
	var s = $$(selector)[0];
		
	s.style.visibility = 'visible';
	s.style.zIndex = 2;
	if(!nofade) {
		var appear = {type: 'opacity', from:0, to:100, step: 3, delay:10}
		$fx(s).fxAdd(appear).fxRun();	
	}
	this.currentId = id;
}

RotatingBaner.prototype.start = function() {
	this.interval = setInterval(this.getRotateFn(this.instanceName),this.time*1000);
}

RotatingBaner.prototype.stop = function() {
	clearInterval(this.interval);
}

RotatingBaner.prototype.getRotateFn = function(instanceName) {

	var r = function() {
		eval(instanceName+'.rotate()');
	}
	
	return r;

}

RotatingBaner.prototype.getHoldFn = function(instanceName) {
	var f = function() {
		eval(instanceName+'.hold = true;');
	}
	return f;
}

RotatingBaner.prototype.getPHoldFn = function(instanceName) {
	var f = function() {
		eval(instanceName+'.phold = true;');
	}
	return f;
}

RotatingBaner.prototype.getUnHoldFn = function(instanceName) {
	var f = function() {
		eval(instanceName+'.hold = false;');
	}
	return f;
}

var Search = new Object;
Search.defaultText = 'szukaj...';

Search.focus = function() {
	if($('search').value == Search.defaultText) {
		$('search').value = '';
	}
	$('search').onkeypress = Search.key;
}

Search.blur = function() {
	if($('search').value == '') {
		$('search').value = Search.defaultText;
	}
}

Search.search = function() {
	var v = $('search').value;
	if((v != Search.defaultText)&&(v != '')) {
		document.location.href='/szukaj/?s='+v;
	}
}

Search.key = function(evt) {
	if(evt.keyCode == 13) {
		Search.search();
	}
}






var Cookies = new Object;

Cookies.createCookie = function(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

Cookies.readCookie = function(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

Cookies.eraseCookie = function(name) {
	createCookie(name,"",-1);
}

var Corners = new Object;

Corners.addCorners = function(t, size, color){
		
	if((t.style.position != 'relative')&&(t.style.position != 'absolute')) {
		t.style.position = 'relative';
	}
	
	if(!size) {
		var size = '5px';
	}
	
	if(!color) {
		var color = 'White';
	}

	var lt = document.createElement('div');
	lt.className = 'Corner CornerLT Corner' + size + ' Corner' + color;
	
	var rt = document.createElement('div');
	rt.className = 'Corner CornerRT Corner' + size + ' Corner' + color;
	
	var lb = document.createElement('div');
	lb.className = 'Corner CornerLB Corner' + size + ' Corner' + color;
	
	var rb = document.createElement('div');
	rb.className = 'Corner CornerRB Corner' + size + ' Corner' + color;
	
	t.appendChild(lt);
	t.appendChild(rt);
	t.appendChild(lb);
	t.appendChild(rb);
	
	t.removeClassName('rounded');
	
}

Corners.addAll = function() {
	
	var divs = $$('.rounded');
	
	divs.each(function(e){
		Corners.addCorners(e);
	});	
}

Corners.refresh = function() {
	Corners.addAll();
}


function Map() {
	
	this.map = false;
	this.div = false;
	this.markers = false;
	this.full = false;
	this.markersObj = Array();
	this.markersByHotels = Array();
	this.clusters = false;
	this.infoBoxRegistry = Array();
			
}

Map.prototype.initialize = function(div,pos) {
	
 geocoder = new google.maps.Geocoder;
 this.div = div;
   	
 if(CurrentMap.full&&!pos) {
 	var pos = this.getPosition();	
 }
 
 if (!pos) {
 	if (!pos) {
 		var pos = this.getCenter();
 	}
 	else {
 		if (!pos.pos) {
 			var pos = this.getCenter();
 		}
 	}
 }
 
  var myOptions = {
    zoom: pos.zoom,  
	center: pos.pos,  	
    mapTypeId: google.maps.MapTypeId.TERRAIN
  }
  
  if(!this.full) {
  	myOptions.mapTypeControl = false;
	myOptions.zoomControl = false;
	myOptions.streetViewControl = false;
  } else {
  	myOptions.streetViewControl = false;
	myOptions.panControl = false;
	myOptions.zoomControlOptions = {
		position: google.maps.ControlPosition.TOP_LEFT
	};
  }
  
  this.map = new google.maps.Map($(div), myOptions);
     
  google.maps.event.addListener(this.map,'zoom_changed',function(){		
		if(CurrentMap.full)	{
			var z = CurrentMap.map.getZoom();
			//Listing.updateUrl();
			if(z < 6) {
				CurrentMap.map.setZoom(6);
			}
			CurrentMap.savePosition();
			CurrentMap.updateListing();			
		} else {
			var position = CurrentMap.getCenter();			
			if (CurrentMap.map.getZoom() != position.zoom) {
				CurrentMap.map.setZoom(position.zoom);
			}
			CurrentMap.map.setCenter(position.pos);
		}
  });
  
  google.maps.event.addListener(this.map,'dragend',function() {  		
		if(CurrentMap.full) {
			//Listing.updateUrl();
			CurrentMap.savePosition();
			CurrentMap.updateListing();		
		} else {
			var position = CurrentMap.getCenter();			
			if (CurrentMap.map.getZoom() != position.zoom) {
				CurrentMap.map.setZoom(position.zoom);
			}
			CurrentMap.map.setCenter(position.pos);
		}
  }); 
  
}

Map.prototype.savePosition = function() {	
	Cookies.createCookie('map_bounds',this.serialize());
}

Map.prototype.getPosition = function() {
	var c = Cookies.readCookie('map_bounds');
	if(!c) { return false; }
	return this.parseBounds(c);
}

Map.prototype.setId = function(id) {
	this.id = id;
}


Map.prototype.toggle = function(pos) {	
	Map.showPopup(pos);
}

Map.showPopup = function(pos) {
	Popup.show(false,false,false,true);
	Popup.setPosition(950,600);
	$('popup_inner').style.height = '470px';
	$('popup_content').addClassName('map');
	$('popup_inner').innerHTML = '<div id="map_navi"></div><div id="popup_map"></div><div id="map_listing"></div><div id="map_preloader"></div>';	
	PopupMap = new Map;
	
	PopupMap.full = true;
	CurrentMap = PopupMap;
		
	PopupMap.initialize('popup_map',pos);
	PopupMap.id = BanerMap.id;
	
	$('map_preloader').innerHTML = '<img src="/p/global/img/spinner.gif" /><br />Trwa aktualizacja mapy...';	
	PopupMap.updateListing();
}

Map.prototype.getToggleStatus = function() {
	return this.full;
}

Map.prototype.getCenter = function() {
	var l =  new google.maps.LatLng(52.1, 19.145136);
	if (this.full) {
		var zoom = 6;
	} else {
		var zoom = 5;
	}
	var r = {pos:l,zoom:zoom};
	return r;
}

Map.prototype.serialize = function() {
	var c = this.map.getCenter();
	
	var lat = c.lat();
	var lng = c.lng();
	var zoom = this.map.getZoom();
	var t = this.getToggleStatus();
	
	var str = lat+','+lng+','+zoom+','+t;
	return str;
}

Map.prototype.parseBounds = function(str) {
	var pieces = str.split(',');
	
	if(!isNaN(pieces[0])) {
		var pos = new google.maps.LatLng(pieces[0],pieces[1]);		
	}
	
	var obj = new Object;
	obj.pos = pos;
	obj.zoom = parseInt(pieces[2]);
	obj.toggle = pieces[3];
	
	return obj;
}

Map.prototype.checkMarkers = function() {
	var bounds = this.map.getBounds();
	var ne = bounds.getNorthEast();
	var sw = bounds.getSouthWest();	
}

Map.prototype.getBounds = function() {
	var bounds = this.map.getBounds();
	
	if (bounds) {
		var ne = bounds.getNorthEast();
		var sw = bounds.getSouthWest();
		var str = 'bound_ne=' + ne.lat() + ',' + ne.lng() + '&bound_sw=' + sw.lat() + ',' + sw.lng();
	} else {
		var str = '';
	}
	return str;
}

Map.prototype.setMarkers = function(m) {
	if(this.clusters) {
		this.clusters.clearMarkers();
	}
	this.map.clearMarkers();
	this.markersObj = new Array;
	this.markersByHotels = new Array;
			
	this.markers = m;
	var markersArr = new Array;
									
	for(var i in this.markers) {		
		if (isInt(i)) {			
			markersArr.push(this.markers[i]);
			this.addMarker(this.markers[i]);			
		}
	}
			
	this.markers = markersArr;
	
	var styles = [{
        url: '/p/global/img/map_icon_cluster.png',
        height: 32,
        width: 32,       
        textColor: 'white',
        textSize: 13
      }];
	  
    var mcOptions = {
			gridSize: 40, 
			maxZoom: 7, 
			styles: styles			
		};
		
	if(CurrentMap == BanerMap) {
		mcOptions.click = CurrentMap.clusterClickFn;
	}
	
	if(CurrentMap == PopupMap) {
		mcOptions.mouseOver = CurrentMap.clusterMouseOverFn;
		mcOptions.mouseOut = CurrentMap.clusterMouseOutFn;
	}
	
	this.clusters = new MarkerClusterer(this.map,this.markersObj,mcOptions);
	var calc = function(markers,numStyles) {		
		 var index = 0;
		  //var count = markers.length;
		  var subtotal = 0;
		  var count = markers.length;
		  
		  for(var i = 0; i < markers.length; i++) {
		  	subtotal += markers[i].subtotal;
		  }
		  
		  var dv = count;
		  while (dv !== 0) {
		    dv = parseInt(dv / 10, 10);
		    index++;
		  }
		
		  index = Math.min(index, numStyles);
		  return {
		    text: count,
		    index: index,
			sub: subtotal
		  };
	}
	this.clusters.setCalculator(calc);
}

Map.prototype.clusterMouseOverFn = function(icon) {
	var fn = function() {
		var m = icon.cluster_.markers_[0];
		
		if(Listing.ident == 'hotele') {
			var cnt = icon.sums_.text+' hoteli.';
		} else {
			var cnt = icon.sums_.sub+' pakietów w '+icon.cluster_.markers_.length+' hotelach.';			
		}
		cnt += '<br />Kliknij, aby przybliżyć mapę.';
			
		var ib = CurrentMap.getInfoBox(cnt,true);
		ib.clusterInfoBox = true;
		ib.open(CurrentMap.map, m);
		m.ib = ib;
		CurrentMap.clusterIconHighlight(icon);
	}
	return fn;
}

Map.prototype.clusterMouseOutFn = function(icon) {
	var fn = function() {
		var m = icon.cluster_.markers_[0];
		m.ib.close();
		CurrentMap.clusterIconOff(icon);
	}
	return fn;
}

Map.prototype.clusterClickFn = function(icon) {
	var fn = function() {
		var b = icon.cluster_.getBounds();
		var obj = {pos:b.getCenter(),zoom:8};		
		CurrentMap.toggle(obj);
	}
	return fn;
}

Map.prototype.clusterIconHighlight = function(icon) {
	if (icon.div_) {
		icon.div_.style.backgroundImage = 'url(/p/global/img/map_icon_cluster_hover.png)';
	}
}

Map.prototype.clusterIconOff = function(icon) {
	if (icon.div_) {
		icon.div_.style.backgroundImage = 'url(/p/global/img/map_icon_cluster.png)';
	}
}

Map.prototype.buildIcon = function(url) {
	var s = new google.maps.Size(28,26);
	var p = new google.maps.Point(9,20);
	var o = new google.maps.Point(20,20);
	var path = '/p/global/img/'+url;
	var img = new google.maps.MarkerImage(path,s,false,p);
	return img;
}

Map.prototype.addMarker = function(m) {
	var latLng = new google.maps.LatLng(m.lat,m.lng);
	
	if (m.id == this.id) {
		var ico = this.buildIcon('map_icon_hover.png');				
	} else {
		var ico = this.buildIcon('map_icon.png');
	}

	var s =  {coord: [10, 10, 9], type: "circle"};
		
	var marker = new google.maps.Marker({
       map: this.map, 
       position: latLng,
	   icon: ico,	   
	   shape: s 
    });
	marker.subtotal = m.subtotal;
	marker.id = m.id;
	
	this.markersObj.push(marker);
	this.markersByHotels[m.id] = marker;
	
	/*var infowindow = new google.maps.InfoWindow({
    	content: m.name
	});*/
				
	google.maps.event.addListener(marker, 'click', function() {		
		if (Listing.ident == 'hotele'||(!CurrentMap.full)) {
			Listing.redirect(m.url);
		} else {
			CurrentMap.updateListing('&id_hotels='+m.id);
			if (CurrentMap == PopupMap) {
				marker.ib.close();
			}
		}
	});
	
	google.maps.event.addListener(marker, 'mouseover', function() {
		if (m.id != CurrentMap.id) {
			CurrentMap.markerHighlight(m.id);
		}
	});
	
	google.maps.event.addListener(marker, 'mouseout', function() {
		if (m.id != CurrentMap.id) {
			CurrentMap.markerOff(m.id);
		}
	});
		

}

Map.prototype.getInfoBox = function(cnt,cluster) {
	var off = new google.maps.Size(-110, -30);
	var opt = {
				content: cnt,
				closeBoxURL: '',
				alignBottom: true,
				pixelOffset: off,
				boxClass: 'mapInfo',
				disableAutoPan: true
			}
	if(cluster) { opt.boxClass = 'mapInfoCluster' }
	var ib = new InfoBox(opt);
	this.infoBoxRegistry.push(ib);
	return ib;
}

Map.prototype.hideInfoBoxes = function() {
	for(var i = 0; i < this.infoBoxRegistry.length; i++) {
		if (this.infoBoxRegistry[i]) {
			this.infoBoxRegistry[i].close();
			delete this.infoBoxRegistry[i];
		}
	}
}

Map.prototype.markerHighlight = function(id) {
	
	if (this.clusters) {
		var exposed = this.clusters.markersExposed[id];
		
		if (exposed) {
			var icon = exposed.clusterIcon_;
			this.clusterIconHighlight(icon);
		}
	}
	
	
	var marker = CurrentMap.markersByHotels[id];
	var img = CurrentMap.buildIcon('map_icon_hover.png');
	marker.setIcon(img);			
	if (CurrentMap == PopupMap) {	
		if (!marker.ib||marker.ib.clusterInfoBox) {			
			var cnt = PopupMap.buildInfoContent(id);
			var ib = CurrentMap.getInfoBox(cnt);
			ib.open(CurrentMap.map, marker);
			marker.ib = ib;
		} else {
			if(!marker.ib.div_) {
				marker.ib.draw();
			}
			marker.ib.show();
		}
	}
}

Map.prototype.markerOffInterval = function() {
	
}

Map.prototype.markerOff = function(id) {
	
	if (this.clusters) {
		var exposed = this.clusters.markersExposed[id];
		
		if (exposed) {
			var icon = exposed.clusterIcon_;
			this.clusterIconOff(icon);
		}
	}
	
	var marker = CurrentMap.markersByHotels[id];
	var img = CurrentMap.buildIcon('map_icon.png');
	marker.setIcon(img);	
	if (CurrentMap == PopupMap) {
		if (marker.ib) {
			if(!marker.ib.div_) {
				marker.ib.draw();
			}
			marker.ib.hide();
		}
	}
}

Map.prototype.buildInfoContent = function(id) {
	var cnt = $('map-info-'+id).innerHTML;
	return cnt;
}

Map.prototype.gotoHotelsURL = function(id) {
	document.location.href = '/hotele/'+id;
}

Map.prototype.showHint = function(t) {
	$('map_hint').show();
	$('map_hint').innerHTML = t;	
}

Map.prototype.reset = function() {
	if($('map-tags')) {
		$('map-tags').selectedIndex = 0;
	}
	var c = this.getCenter();
	this.map.setCenter(c.pos);
	var zoom = this.map.getZoom();
	if (zoom != c.zoom) {
		this.map.setZoom(c.zoom);
	} else {
		this.updateListing();
	}
}


Map.prototype.updateListing = function(p) {
					
	$('map_preloader').show();
	var bounds = this.getBounds();	
	this.hideInfoBoxes();
	
	var resp = function(req) {
		var m = req.responseJSON.markers;
		PopupMap.hideInfoBoxes();
		PopupMap.setMarkers(m);
				
		var html = req.responseJSON.html;
		var navi = req.responseJSON.navi;
		if(navi) {
			$('map_navi').innerHTML = navi;			
		}
		$('map_listing').innerHTML = html;		
		
		Stars.refresh();
		$('map_preloader').hide();		
	}
	
	var pars = bounds+'&params__map=true';
	
	if (Listing.ident == 'hotele') { var url = '/zone/listing_hoteli';	}
	if (Listing.ident != 'hotele') { 
		var url = '/zone/listing_pakietow';
		var tagselect = $('map-tags');
		if (tagselect) {
			var tag = tagselect.value;
			if (tag) {
				var urlalias = tagselect.options[tagselect.selectedIndex].attributes.urlalias.value;
				pars += '&id_tags=' + tag + '&urlalias=' + urlalias;
			}
		}
	}
	if(p) { pars += p; }
	
	var myAjax = new Ajax.Request(url,{ method: 'post',parameters: pars,evalScripts: true,onComplete:resp});
}


var url = new Object;
url.params = Array;

url.sc = function(ref) {
	saveScroll();
	Listing.redirect(ref.href);
	return false;
}

url.set = function(id,val) {
	url.params[id] = val;
}

url.base = function() {
	var u = $url('ident')+'/'+$url('tag')+'/'+$url('page')+'/'+$url('id')+$url('tab')+'/';
	return u;
}

function $url(id) {
	return url.params[id];
}


var Stars = new Object;

Stars.defaultColor = "#afa8a1";

Stars.shape = [
	{x:0,y:0},
	{x:1.27595,y:-2.58545},
	{x:4.12915,y:-3},
	{x:2.06455,y:-5.0125},
	{x:2.55195,y:-7.85415},
	{x:0,y:-6.5125},
	{x:-2.552,y:-7.85415},
	{x:-2.0646,y:-5.0125},
	{x:-4.1292,y:-3},
	{x:-1.276,y:-2.58545}
];

Stars.setColor = function(color) {
	Stars.color = color;
}

Stars.count = function(str) {
	var c = 0;
	var m = '*';
	for (var i=0;i<str.length;i++) {
	if (m == str.substr(i,m.length))
		c++;
	}
	return c;
}

Stars.refresh = function() {
	Stars.draw();
}

Stars.drawStar = function(cl) {
	var size = 1.2;
	
	var c = document.createElement('canvas');
	
	c.width = size*10;
	c.height = size*8;
	
	if(c.getContext) {
	    var context = c.getContext('2d');
 		context.strokeStyle = "none";
		
		if (cl) {
			context.fillStyle = cl;
		} else {
			context.fillStyle = Stars.color;
		}
		
		context.lineWidth = 0;
		context.beginPath();
				
		var x = c.width/2;
		var y = 0;
		
		var starCoords = Stars.shape;		
		context.moveTo(x,y);
		for(var i=0; i<starCoords.length; i++){
			var coord = starCoords[i];
			context.lineTo(x - coord.x * size,y - coord.y * size);
		}
				
		context.closePath();
		//context.stroke();
		context.fill();
	}
		
	return c;
}

Stars.draw = function(parent) {
	
	if(!Stars.color) {
		Stars.color = Stars.defaultColor;
	}
	
	if(parent) {
		var st = $(parent).adjacent('.stars');
	} else {
		var st = $$('.stars');
	}
	
	st.each(function(e){
		var color = e.getStyle('color');
		
		var ch = e.childElements();
				
		if (ch[0]) {
			var c = ch.length;
		}
		else {
			var c = e.innerHTML * 1;
		}
		
		var html = '';
		e.innerHTML = '';
		
		for (var i = 0; i < c; i++) {
			html += '* ';
			e.appendChild(Stars.drawStar(color));
		}
	});
	
}


var Popup = new Object;
Popup.div = false;

Popup.create = function() {
	if(!Popup.div) {
		
		var main = document.createElement('div');
		main.setAttribute('id','popup');
		
		var bg = document.createElement('div');
		bg.setAttribute('id','popup_bg');
		
		main.appendChild(bg);
		
		var content = document.createElement('div');
		content.setAttribute('id','popup_content');
		
		var inner = document.createElement('div');
		inner.setAttribute('id','popup_inner');
		
		content.appendChild(inner);
		
		var c = document.createElement('div');
		c.setAttribute('id','popup_close');
					
		main.appendChild(content);
		main.appendChild(c);
		
		var o = document.createElement('div');
		o.setAttribute('id','popup_overlay');
		document.body.appendChild(o);
				
		document.body.appendChild(main);
		Popup.div = $('popup');
		
		$('popup_close').onclick = function() {
			Popup.hide();
		}
		
		$('popup').hide();
		
	}
}

Popup.setPosition = function(w,h) {
	
	if (w && h) {
		$('popup').style.width = w + 'px';
		$('popup').style.height = h + 'px';
		
		$('popup_bg').style.width = w + 'px';
		$('popup_bg').style.height = h + 'px';
		
		$('popup_content').style.width = (w - 16) + 'px';
		$('popup_content').style.height = (h - 16) + 'px';
	}
	
	var viewport = document.viewport.getDimensions();
	var sc = document.viewport.getScrollOffsets();

	var wd = $('popup').getWidth();
	var hd = $('popup').getHeight();
	
	var l = (viewport.width-wd)/2;
	var t = ((viewport.height-hd)/2)+sc.top;
	
	$('popup').style.left = l+'px';
	$('popup').style.top = t+'px';
	
	$('popup_overlay').style.width = viewport.width + 'px';
	$('popup_overlay').style.height = viewport.height + 'px';
	$('popup_overlay').style.position = 'absolute';
	$('popup_overlay').style.left = '0px';
	$('popup_overlay').style.top = sc.top+'px';
	$('popup_overlay').style.zIndex = 250;
}

Popup.show = function(url,tid,id,ovr) {	
	Popup.create();
	
	if(!ovr) {
		$('popup_overlay').hide();
	} else {
		$('popup_overlay').show();
	}
	
	Event.observe(window,'scroll',Popup.setPosition);
	Popup.setPosition();
	$('popup_content').removeClassName('map');
	$('popup').show();
		
	//var popupAppear = {type: 'opacity', from:0, to:100, step: 20, delay:50}
	//$fx('#popup').fxAdd(popupAppear).fxRun();
	
	if(url) { Popup.load(url,tid,id); }
}

Popup.hide = function() {
	CurrentMap = BanerMap;
	Event.stopObserving(window,'scroll');
	$('popup').hide();
	$('popup_overlay').hide();
	//var popupAppear = {type: 'opacity', from:100, to:0, step: -20, delay:50}
	//$fx('#popup').fxAdd(popupAppear).fxRun();
}

Popup.load = function(url,tid,id) {
	Popup.tid = tid;
	Popup.id = id;
	
	if (url) {
		var resp = function(req){
			$('popup_inner').innerHTML = req.responseText;
			Cufon.replace("#popup .cufon");
			if(Popup.tid) { HotelPopup.switchTab(Popup.tid); Popup.tid = false; }
			if(Popup.id) { HotelPopup.switchDesc(Popup.id); Popup.id = false;	}
		}
		
		var pars = '&params__id_hotels=' + Listing.id + '&id_hotels=' + Listing.id;
		var myAjax = new Ajax.Request(url, {
			method: 'post',
			parameters: pars,
			evalScripts: true,
			onComplete: resp
		});
	}
}

Popup.pre = function() {
	$('popup_inner').innerHTML = '<p style="text-align:center;"><img src="/p/global/img/spinner.gif" /></p>';
}


google.maps.Map.prototype.markers = new Array();

google.maps.Map.prototype.getMarkers = function() {
    return this.markers
};

google.maps.Map.prototype.clearMarkers = function() {
    for(var i=0; i<this.markers.length; i++){
        this.markers[i].setMap(null);
    }
    this.markers = new Array();
};

google.maps.Marker.prototype._setMap = google.maps.Marker.prototype.setMap;

google.maps.Marker.prototype.setMap = function(map) {
    if (map) {
        map.markers[map.markers.length] = this;
    }
    this._setMap(map);
}

 function isInt(x) {
   var y=parseInt(x);
   if (isNaN(y)) return false;
   return x==y && x.toString()==y.toString();
 } 


function getScrollTop() {
	var ScrollTop = document.body.scrollTop;

	if (ScrollTop == 0) {
	    if (window.pageYOffset) {
			ScrollTop = window.pageYOffset;
		} else {
			ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
		}

	}
	
	return ScrollTop;
}

function smoothScroll(pos) {
	
	var startY   = getScrollTop();
	var stopY    = pos;
	
	var distance = stopY > startY ? stopY - startY : startY - stopY;
	if (distance < 100) {
		scrollTo(0, stopY); return;
	}
	var speed = Math.round(distance / 100);
	if (speed >= 20) speed = 20;
	var step  = Math.round(distance / 25);
	var leapY = stopY > startY ? startY + step : startY - step;
	var timer = 0;
	if (stopY > startY) {
		for ( var i=startY; i<stopY; i+=step ) {
			setTimeout("window.scrollTo(0, "+leapY+")", timer * speed);
			leapY += step; if (leapY > stopY) leapY = stopY; timer++;
		} return;
	}
	for ( var i=startY; i>stopY; i-=step ) {
		setTimeout("window.scrollTo(0, "+leapY+")", timer * speed);
		leapY -= step; if (leapY < stopY) leapY = stopY; timer++;
	}
}

	
function saveScroll(){
	var sc = getScrollTop();
	Cookies.createCookie('scroll', sc, 1);
}

function restoreScroll() {
	var sc = Cookies.readCookie('scroll');
	Cookies.createCookie('scroll', 0, 1);
	if (sc) {
		smoothScroll(sc);
	}
}




eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('q $1y(g){7(g.18&&g.18==1)8 h=g;t 7(1z(g).19(/^#([^$]+)$/i)){8 h=1A.1B(K.$1+\'\');7(!h)9 Q}t 9 Q;7(W(h.6)!=\'X\'&&h.6){h.6.R();9 h};h.1C=0.1;h.6={};h.6.4=[];h.6.C=0;7(W(h.L)!=\'X\')1a{1b h.L}1c(1d){h.L=Q}8 k={\'1e|1f|1D|1E|1g|1h|1F|1G|1H|1i|1j\':\'1I\',\'1J\':\'1K\',\'E\':\'\'};8 l=!!1L.1M.19(/1N/1O);8 m={1k:S,H:5,D:\'\'};8 n={E:q(a,b){a=u(a);7(z(a)){7(l){8 c=(T K(\'1l\\\\s*\\\\(E\\\\s*=\\\\s*(\\\\d+)\\\\)\')).Y(h.v.1m+\'\');7(c)9 u(c[1]);t 9 1}t{9 Z.1P((h.v.E?1Q(h.v.E):1)*S)}}t{a=Z.1R(S,Z.1S(0,a));7(l){h.v.1T=1;h.v.1m=\'1l(E=\'+a+\');\'}t{h.v.E=a/S}}},\'1i\':q(a,b){a=u(a);8 x=0,y=0;8 c=(T K(\'^(-?\\\\d+)[^\\\\d\\\\-]+(-?\\\\d+)\')).Y(h.v.U+\'\');7(c){x=u(c[1]);y=u(c[2])}7(z(a))9 x;t{h.v.U=a+b+\' \'+y+b}},\'1j\':q(a,b){a=u(a);8 x=0,y=0;8 c=(T K(\'^(-?\\\\d+)[^\\\\d\\\\-]+(-?\\\\d+)\')).Y(h.v.U+\'\');7(c){x=u(c[1]);y=u(c[2])}7(z(a))9 y;t{h.v.U=x+b+\' \'+a+b}}};8 o={1g:q(){9 u(h.1U)},1h:q(){9 u(h.1V)},1e:q(){8 a=0;A(8 b=h;b;b=b.1n)a+=u(b.1W);9 a},1f:q(){8 a=0;A(8 b=h;b;b=b.1n)a+=u(b.1X);9 a}};h.1o=q(){3.6.R();9 3};h.1p=q(a,b){7(h.6.4[3.6.C].I)9 3;8 b=u(b);3.6.4[z(b)?3.6.C:b].10=a;9 3};h.1q=q(c){8 d=3.6.C;7(3.6.4[d].I)9 3;A(8 p 1r m){7(!c[p])c[p]=m[p]};7(!c.D){A(8 e 1r k)7((T K(e,\'i\').1Y(c.r))){c.D=k[e];1Z}};c.J=(c.J&&c.J.B)?c.J:q(){};c.M=(c.M&&c.M.B)?c.M:q(){};7(!3.6[c.r]){7(n[c.r])3.6[c.r]=n[c.r];t{8 f=3;3.6[c.r]=q(a,b){7(W(a)==\'X\')9 u(f.v[c.r]);t f.v[c.r]=u(a)+b}}};7(z(c.F)){7(z(3.6[c.r]()))7(o[c.r])c.F=o[c.r]();t c.F=0;t c.F=3.6[c.r]()}c.11=c.F;3.6[c.r](c.F,c.D);3.6.4[d].w.20(c);9 3};h.1s=q(a,b,c){8 d=h.6.C;7(3.6.4[d].I){9 3}1t(q(){7(h.6.4[d].I)9 h;h.6.4[d].I=12;7(h.6.4[d].N>0)9 h;h.6.4[d].13=(a&&a.B)?a:q(){};h.6.4[d].1u=(c&&c.B)?c:q(){};7(!z(b))h.6.4[d].V=b;A(8 i=0;i<h.6.4[d].w.G;i++){h.6.4[d].w[i].J.B(h);h.6.O(d,i)}},h.6.4[d].10);9 3};h.1v=q(a,b){3.6.4[!z(b)?b:3.6.C].14=a;9 3};h.1w=q(a){3.6.4[!z(a)?a:3.6.C].15=12;9 3};h.1x=q(){A(8 i=0;i<3.6.4.G;i++){A(8 j=0;j<3.6.4[i].w.G;j++){8 a=3.6.4[i].w[j];7(z(a.11))3.6[a.r](\'\',\'\');t 3.6[a.r](a.11,a.D)}}8 b=[\'6\',\'1p\',\'1q\',\'1o\',\'1s\',\'1v\',\'1w\',\'1x\'];A(8 i=0;i<b.G;i++)1a{1b 3[b[i]]}1c(1d){3[b[i]]=Q}3.L=12};h.6.R=q(){8 a=3.4.G;3.C=a;3.4[a]={};3.4[a].V=1;3.4[a].15=16;3.4[a].w=[];3.4[a].N=0;3.4[a].P=0;3.4[a].10=0;3.4[a].14=16;3.4[a].I=16;3.4[a].13=q(){};9 3};h.6.O=q(a,b){7(!3.4[a]||3.4[a].15||h.L)9;8 c=3.4[a].w[b];8 d=3[c.r]();7((c.H>0&&d+c.H<=c.17)||(c.H<0&&d+c.H>=c.17)){7(!3.4[a].14)3[c.r](d+c.H,c.D);8 e=3;1t(q(){7(e.O)e.O(a,b)},c.1k)}t{3[c.r](c.17,c.D);3.4[a].N++;c.M.B(h);7(3.4[a].w.G==3.4[a].N){3.4[a].N=0;3.4[a].P++;3.4[a].1u.B(h,3.4[a].P);7(3.4[a].P<3.4[a].V||3.4[a].V==-1){A(8 i=0;i<3.4[a].w.G;i++){3[c.r](c.F,3.4[a].w[i].D);3.4[a].w[i].J.B(h,3.4[a].P);3.O(a,i)}}t{3.4[a].13.B(h)}}}};h.6.R();9 h}',62,125,'|||this|sets||_fx|if|var|return|||||||||||||||||function|type||else|parseInt|style|_queue|||isNaN|for|call|_currSet|unit|opacity|from|length|step|_isrunning|onstart|RegExp|_fxTerminated|onfinish|_effectsDone|_process|_loopsDone|null|_addSet|100|new|backgroundPosition|_loops|typeof|undefined|exec|Math|_holdTime|_initial|true|_onfinal|_paused|_stoped|false|to|nodeType|match|try|delete|catch|err|left|top|width|height|backgroundx|backgroundy|delay|alpha|filter|offsetParent|fxAddSet|fxHold|fxAdd|in|fxRun|setTimeout|_onloop|fxPause|fxStop|fxReset|fx|String|document|getElementById|fxVersion|right|bottom|margin|padding|spacing|px|font|pt|navigator|userAgent|MSIE|ig|round|parseFloat|min|max|zoom|offsetWidth|offsetHeight|offsetLeft|offsetTop|test|break|push'.split('|'),0,{}))


function Slider(id,items,instanceId) {
	var id;
	var obj;
	var items;
	var width;
	var itemWidth
	var instanceId;	
	var slidingObj;
	var lastX;
	var currentItem;
			
	this.lastX = 0;
	this.currentItem = 1;
	
	this.setup(id,items,instanceId);
}

Slider.prototype.setup = function(id,items,instanceId) {
			
	this.id = id;
	this.obj = $(id);
	this.items = items;
	
	this.slidingObj = $(this.id+'_inner');
	this.instanceId = instanceId;
	
	this.itemWidth = this.slidingObj.getWidth();
	this.width = this.itemWidth*items;
		
	this.slidingObj.style.width = this.width+'px';
	this.slidingObj.style.position = 'absolute';
	this.slidingObj.style.left = 0+'px';
	
	this.render();
}

Slider.prototype.next = function() {
	var n = this.currentItem+1;
	if(n > this.items) {
		var n = 1;
	}
	this.slide(n);
}

Slider.prototype.slide = function(item) {
	var x = 0-((item-1)*this.itemWidth);
	
	$$('#'+this.id+'_navi .slider_switch').each(function(e){
		e.removeClassName('act');
	});
	
	$$('#'+this.id+'_navi .sw'+item)[0].addClassName('act');
	
	if (this.lastX > x) {
		var p = {
			type: 'left',
			to: x,
			step: -30,
			delay: 20
		}
	}
	else {
		var p = {
			type: 'left',
			to: x,
			step: 30,
			delay: 20
		}
	}
	
	$fx(this.slidingObj).fxAdd(p).fxRun();
	
	this.lastX = x;
	this.currentItem = item;
}

Slider.prototype.next = function() {
	var n = this.currentItem+1;
	if(n > this.items) {
		n = 1;
	}
	this.slide(n);
}

Slider.prototype.render = function() {
	var d = '<div id="'+this.id+'_navi" class="slider_navi">';
	document.write(d);
	
	for(var i = 0; i < this.items; i++) {
		var d = '<div class="sw'+(i+1)+' slider_switch" onclick="'+this.instanceId+'.slide('+(i+1)+');">'+''+'</div>';
		document.write(d);
	}
	
	document.write('<div class="cl"></div></div>');
	$$('#'+this.id+'_navi .sw1')[0].addClassName('act');
}


var Listing = new Object;

Listing.id = false;
Listing.id_offers = false;
Listing.newsid = false;
Listing.baner = false;
Listing.alias = false;

Listing.reset = function() {
	Cookies.createCookie('listing_params','');
}

Listing.hover = function(ref,id) {
	//$(ref).adjacent('.hotel_img')[id].hide();
	//$(ref).adjacent('.hotel_map')[id].show();
	$(ref).addClassName('hv');
	Stars.draw(ref);
}

Listing.out = function(ref,id) {
	//ref.adjacent('.hotel_img')[id].show();
	//ref.adjacent('.hotel_map')[id].hide();
	$(ref).removeClassName('hv');
	Stars.draw(ref);
}

Listing.setIdent = function(ident) {
	Listing.ident = ident;
}

Listing.setAlias = function(alias) {
	Listing.alias = alias;
}

Listing.setId = function(id,id_offers) {
	Listing.id = id;
	if (id_offers) {
		Listing.id_offers = id_offers;
	}
}

Listing.setNewsId = function(id) {
	Listing.newsid = id;
}

Listing.parseUrl = function() {
	
	var url = Cookies.readCookie('listing_params'); //document.location.href;
	//console.log(url);
	if (url) {
		var sp = url.split('#');
	} else {
		var sp = false;
	}

	if (sp[1]) {
		var url = sp[1];
		var sp = url.split('/');
		sp.shift();
		
		var params = new Object;
		
		for (var i = 0; i < sp.length; i = i + 2) {
			params[sp[i]] = sp[i + 1];
		}
		Listing.params = params;
	} else {
		Listing.params = false;
	}
	
	if(Listing.url_tag) {
		if (Listing.params.tags) {
			Listing.params.tags += ',' + Listing.url_tag;
		} else {
			Listing.params.tags = Listing.url_tag;
		}
	}
	
	var u = false;
	
	if((Listing.params.p)&&(Listing.params.p != 'false')) {
		Listing.switchPage(Listing.params.p,true);
		u = true;
	}
		
	if(Listing.params.days) {
		Listing.setDays(Listing.params.days);
		var u = true;
	}
	
	if(Listing.params.tags) {
		Listing.resetTags();
		var t = Listing.params.tags.split(',');
		for(var i = 0; i < t.length; i++) {
			var tg = $$('.tag-'+t[i])[0];
			if (tg) {
				tg.addClassName('act');
			}
		}
		u = true;
	}
	
	if(Listing.params.date_from) {
		$('baner__date').value = Listing.params.date_from;
		u = true;
	}
	
	if(Listing.url_tag) {
		u = false;
	}
	
	if (u) {
		Listing.update();
	}	
}

Listing.redirect = function(id) {
	var url = Listing.url(id);
	document.location.href = url;
}

Listing.url = function(u) {
	/*var url = u;
	var path = url+'/'+Listing.urlParams();			
	return path;*/
	return u;
}

Listing.setDays = function(val) {
	var o = $('baner__days');
	if (o) {
		for (var i = 0; i < o.options.length; i++) {
			if (o.options[i].value == val) {
				o.options[i].selected = true;
			}
		}
	}
}

Listing.getDays = function() {
	var o = $('baner__days');
	if (o) {
		return o.options[o.selectedIndex].value;
	} else {
		return false;
	}
}

Listing.filterDays = function(days) {
	var o = $('baner__days');
	for(var i = 0; i < o.options.length; i++) {
		var opt = o.options[i];
		var v = opt.value
		if (v != 0) {
			if (!days[v]) {
				opt.hide();
			}
			else {
				opt.show();
			}
		}
	}
}

Listing.filterTags = function(cnt) {
	var tags = $$('.tags .tagdiv').each(function(e){
		var c = e.className;
		if(c.indexOf('-') > -1) {
			var sp = c.split('-');
			var id = sp[1];		
		}		
		var c = cnt[id];
		if(!c || (c==undefined)) { var c = '0'; }
		
		$$('.tagdiv-'+id+' a .cnt')[0].innerHTML = '('+c+')';
	});
}

Listing.urlParams = function() {
	
	var tags = Listing.serialize();
	var page = Listing.getPage();
	
	if (Listing.ident != 'aktualnosci') {
		var bounds = false //PopupMap.serialize();
		if (Listing.ident != 'vouchery') {
			var days = Listing.getDays();
			var date_from = $('baner__date').value;
		}
	}
	
	var p = '';
	
	
	if(tags) { p+= '/tags/'+tags; }
	if (bounds) {
		if (bounds != '52.1,19.145136,5') {
			p += '/map/' + bounds;
		//Cookies.createCookie('map_bounds', bounds);
		}
	}
	if(page&&page!=1) { p+= '/p/'+page; }
	if(days&&days!=0) { p+= '/days/'+days; }
	if(date_from) { p += '/date_from/'+date_from; }
	
	//console.log(p);
	
	if (p != '') {
		return '#' + p;
	} else {
		return p;
	}
}

Listing.updateUrl = function() {
	/*var sc = getScrollTop();
	if (Listing.urlParams()!='') {
		document.location.href = Listing.urlParams();		
		window.scrollTo(0, sc);
	}*/
	Cookies.createCookie('listing_params',Listing.urlParams());
}

Listing.setTag = function(ref) {
	if(Listing.ident == 'aktualnosci') {
		Listing.resetRegions();
	}
	
	if(ref.hasClassName('btn')) {
		var e = $$('.regiony .btn');
		e.each(function(el){
			el.removeClassName('act');
		});
		ref.addClassName('act');
	}
	
	if(ref.hasClassName('chk')) {
		var a = ref.hasClassName('act');
		var e = $$('.tags .chk');
		e.each(function(el){
			el.removeClassName('act');
		});
		//if (!a) {
			ref.addClassName('act');
		//}
	}
	
	ref.blur();
	
	var href = ref.href;
	var href = href.split('/');
	var href = href[href.length-1];
	if (href) {
		Listing.setAlias(href);
	}
	
	Listing.switchPage(1,true);
	
	if (Listing.id||Listing.newsid) {
		Listing.redirect('/'+Listing.ident);
	}
	else {
		Listing.update();
	}
}

Listing.resetTags = function() {
	var tags = Array();
	
	var e = $$('.baner_sub .tag');
	e.each(function(el){
		el.removeClassName('act');
	});
}

Listing.resetRegions = function() {
	$$('.regiony .btn').each(function(e){
		e.removeClassName('act');
	});
	$('btn_wszystkie').addClassName('act');
}

Listing.serialize = function() {
	var tags = Array();
	
	var e = $$('.baner_sub .tag');
	e.each(function(el){
		if(el.hasClassName('act')) {
			var t = Listing.extractTag(el);
			if (t != 0) {
				tags.push(t);
			}
		}
	});	
	
	if(Listing.url_tag) {
		tags.push(Listing.url_tag);
	}
	
	return tags.join(',');
}

Listing.getPage = function() {
	
	if (Listing.id) {
		var p = $$('.paginator .current_page')[0].innerHTML;
		return p;
	} else {
		var i = 1;
		var ret = false;
		
		//var parent = $$('.paginator')[0];
		
		$$('.paginator .page').each(function(e){
			if (e.hasClassName('act')) {
				if (!ret) {
					ret = i;
				}
			}
			if (!e.hasClassName('ignore')) {
				i++;
			}
		});
		
		return ret;
	}
	
}

Listing.switchPage = function(p,noupdate) {
		
	if (Listing.id) {
		$$('.paginator .current_page')[0].innerHTML = p;
	}
	else {
		$$('.paginator .page').each(function(e){
			e.removeClassName('act');
		});
		
		$$('.page-' + p).each(function(e){
			e.addClassName('act');
		});
	}
	
	if (!noupdate) {
		Listing.update();
	}
}

Listing.extractTag = function(e) {
	var c = e.className;
	var sp = c.split(' ');
	for(var i = 0; i < sp.length; i++) {
		if(sp[i].search('tag-') > -1) {
			var exp = sp[i].split('-');
			var id = exp[1];
		}
	}
	return id;
}

Listing.cancelTag = function(id) {
	if((id == 28)||(id == 56)||(id == 57)) {
		Listing.setTag($$('.btn_wszystkie')[0]);
	} else {
		var tags = Listing.serialize();
		var sp = tags.split(',');
		if (sp.length == 1) {
			Listing.resetTags();
			Listing.setTag($$('.btn_wszystkie')[0]);
		} else {
			Listing.setTag($$('.tag-' + id)[0]);
		}
	}
}

Listing.update = function() {
			
	if(Listing.baner) {
		Listing.baner.stop();
	}
	
	var tags = Listing.serialize();
	var page = Listing.getPage();
	
	if (Listing.ident != 'aktualnosci') {
		var days = Listing.getDays();
		var d = $('baner__date');
		if(d) {
			var date_from = d.value;
		}
	}
					
	Listing.adjustOverlay();
	$$('#listing .overlay')[0].show();
	$$('.path').each(function(e){
		e.innerHTML = 'Trwa ładowanie...';
	});
	
	switch(Listing.ident) {
		case 'video': var url = '/zone/listing_hoteli'; var tags = 287; break;
		case 'hotele': var url = '/zone/listing_hoteli'; break;
		case 'pakiety': var url = '/zone/listing_pakietow'; break;
		case 'aktualnosci': var url = '/zone/news_listing'; break;
		case 'vouchery': var url = '/zone/listing_voucherow'; break;
	}
	
	var resp = function(req) {		
	
		var t = req.responseJSON;
				
		$('listing_content').innerHTML = t.html;
		$$('#listing .overlay')[0].hide();
		
		if ((Listing.ident != 'aktualnosci')&&(BanerMap.map)) {
			BanerMap.setMarkers(t.markers);
			
			if (Listing.ident != 'vouchery') {
				if (t.cancelDays) {
					Listing.setDays(0);
				}
				if ((days == 0) && (t.days)) {
					Listing.filterDays(t.days);
				}
			}
			Listing.filterTags(t.tagsCount);
		}
		
		$$('.path').each(function(e){
			e.innerHTML = t.path;
		});
		Listing.updateUrl();
		Cufon.refresh();
		Stars.refresh();	
		Corners.refresh();
		
		Listing.initBaner();
		
	}
		
	var pars = '&id_tags='+tags+'&ident='+Listing.ident;
	if(page) { pars += '&page='+page; }
	if(days) { pars += '&days='+days; }
	if(date_from) { pars += '&date_from='+date_from; }
	if(Listing.alias) { pars += '&urlalias='+Listing.alias; }
	if(Listing.id) { pars += '&params__side=true&params__id_hotels='+Listing.id+'&id='+Listing.id; }
	if(Listing.id_offers) { pars += '&params__id_offers='+Listing.id_offers+'&id_offers='+Listing.id_offers; }
				
	var myAjax = new Ajax.Request(url,{ method: 'post',parameters: pars,evalScripts: true,onComplete:resp});
	
}

Listing.initBaner = function() {
	Listing.baner = new RotatingBaner;
	Listing.baner.init('PromoBaner','Listing.baner',5);	
}

Listing.adjustOverlay = function() {
	var h = $('listing').getHeight();
	var w = $('listing').getWidth();
	
	$$('#listing .overlay')[0].style.width = w+'px';
	$$('#listing .overlay')[0].style.height = h+'px';
	
	$$('#listing .overlay .bg')[0].style.width = w+'px';
	$$('#listing .overlay .bg')[0].style.height = h+'px';
	
	var lw = 300;
	$$('#listing .overlay .loading')[0].style.left = ((w-lw)/2)+'px';
}

Listing.showInfo = function(top,content) {
	Listing.adjustOverlay();
	$$('#listing .overlay')[0].show();
	$$('#listing .overlay .loading')[0].hide();
	$$('#listing .overlay .bg')[0].hide();
	$$('#listing .overlay .info')[0].show();
	$$('#listing .overlay .info')[0].style.top = top+'px';
	$$('#listing .overlay .info .info_content')[0].innerHTML = content;
}

Listing.hideInfo = function() {
	$$('#listing .overlay')[0].hide();
	$$('#listing .overlay .info')[0].hide();
	$$('#listing .overlay .loading')[0].show();
	$$('#listing .overlay .bg')[0].show();
}


var HotelOffers = new Object;

HotelOffers.toggle = function(id) {
	var d = $$('.hotel_offer');
	d.each(function(e){
		e.removeClassName('hotel_offer_act');
	});
	
	$('hotel_offer'+id).addClassName('hotel_offer_act');
	
	var off = $('hotel_offer'+id).cumulativeOffset();
	var doff = document.viewport.getScrollOffsets();
	
	//if((doff.top < (off.top-50)) || (doff.top > (off.top+50))) {
		smoothScroll(off.top-50);
	//}

}

HotelOffers.loadTags = function(hotel,id) {
	
	if(id == undefined) {
		var t = $$('.tag_cloud_hotel_oferty .act')[0];
		var c = t.className;
		var c = c.split(' ');
		var c = c[0];
		var c = c.replace('tab','');
		var id = c;
	}
	
	var date_from = $('offers_date').value;
	if(!date_from) {
		if(!('baner__date'.value)) {
			$('offers_date').value = $('baner__date').value;
			var date_from = $('offers_date').value;
		}
	}
	
	$$('.tag_cloud_hotel_oferty .tab').each(function(e){
		e.removeClassName('act');
	})
	
	$$('.tag_cloud_hotel_oferty .tab'+id)[0].addClassName('act');
	
	var url = '/zone/hotel_oferty';
	var resp = function(req) {
		$('hotel_offers_inner').innerHTML = req.responseText;
		Cufon.refresh();
	}
	var pars = '&id='+hotel;
	
	if(id != 0) { pars += '&id_tags='+id; }
	if(date_from) { pars += '&date_from='+date_from; }
	if(Listing.alias) { pars += '&urlalias='+Listing.alias; }
	
	var myAjax = new Ajax.Request(url,{ method: 'post',parameters: pars,evalScripts: true,onComplete:resp});
}

HotelOffers.share = function(url) {
	
	if (FormObj.validate('offer_share_form')) {
					
		var pars = Form.serialize('offer_share_form');
		var resp = function(req){
			$('popup_inner').innerHTML = '<p style="text-align:center;">Oferta została wysłana na wskazany adres email.</p>';
		}
		
		var myAjax = new Ajax.Request(url, {
			method: 'post',
			parameters: pars,
			onComplete: resp
		});
		
		Popup.pre();
		
	}
	
}


var HotelPopup = new Object;

HotelPopup.switchDesc = function(id) {
	Tabs.switchTab($('popup'),'desc-tab','desc-content',id);
	HotelPopup.tid = id;	
}

HotelPopup.switchTab = function(id) {
	Tabs.switchTab($('popup'),'tab','tab-content',id);	
	
	if(id == 3) {
		var lat = $('popup_map_lat').value;
		var lng = $('popup_map_lng').value;
		HotelPopup.showMap(lat,lng);
	}
}

HotelPopup.loadPhoto = function(file,target) {
	$$('.popup_gallery_pre-'+HotelPopup.tid)[0].show();
	$('popup_cache').src = file;	
}

HotelPopup.showPhoto = function() {
	var img = $('popup_cache').src;	
	$$('.popup_main_img-'+HotelPopup.tid)[0].style.backgroundImage = "url('"+img+"')";
	$$('.popup_gallery_pre-'+HotelPopup.tid)[0].hide();
}

HotelPopup.showMap = function(lat,lng) {
	var myLatlng = new google.maps.LatLng(lat,lng);
	var myOptions = {
		zoom: 9,
		center: myLatlng,		
		mapTypeId: google.maps.MapTypeId.TERRAIN
	}
	var m = new google.maps.Map(document.getElementById("popup_map"), myOptions);
	
	var marker = new google.maps.Marker({
       map: m, 
       position: myLatlng
    });
}


var ToolTip = new Object;
ToolTip.t = false;

ToolTip.show = function(n,ref,w,cl) {	
	var pos = $(ref).cumulativeOffset();
	//console.log(pos);
	ToolTip.create(n,pos,w,cl);
	Event.observe(ref,'mouseout',ToolTip.hide);
	
	//var p = {type:'opacity',from:0,to:100,step:5,delay:20}
	//$fx(ToolTip.t).fxAdd(p).fxRun();
}

ToolTip.hide = function(e) {
	ToolTip.destroy();
	Event.stopObserving(e.element,'mouseout',ToolTip.hide);
}

ToolTip.destroy = function() {
	ToolTip.t.remove();
}

ToolTip.create = function(n,pos,w,cl) {
	
	var t = document.createElement('div');	
	t.style.position = 'absolute';
	t.className = 'tooltip_outer';
	t.style.left = pos[0]+'px';
	t.style.top = (pos[1]-40)+'px';	
	t.style.zIndex = '1000';
	
	if(w) {
		t.style.width = w+'px';
	}
	
	var b = document.createElement('div');
	b.className = 'tooltip_box shadow';
	
	var i = document.createElement('div');
	i.className = 'tooltip_inner';
	if(cl) {
		i.className += ' '+cl;
	}

	i.innerHTML = n;			
	b.appendChild(i);
	
	var a = document.createElement('div');
	a.className = 'tooltip_arr';
	
	t.appendChild(b);
	t.appendChild(a)
	
	
	ToolTip.t = document.body.appendChild(t);		
	
	var h = i.getHeight();	
	t.style.top = (pos[1])-h-15+'px';
	
}






var HotelSystemsApiIntegrator = new Object;
HotelSystemsApiIntegrator._initialized = false;

HotelSystemsApiIntegrator.show = function(hotel,offer) {
	$('booking_offer').hide();
	$('booking').show();
	
	if(!this._initialized) {
		var config = new Object;
		var res = new Object;
		res.id_offers = offer;
		config.id_hotels = hotel;
		config.div = $('booking');
		config.proxy = '/public/proxy/proxy.php';
		config.reservation = res;
		HotelSystemsApi.init(config);
		this._initialized = true;
	}
}

HotelSystemsApiIntegrator.hide = function() {
	$('booking_offer').show();
	$('booking').hide();
}

var HotelSystemsApi = new Object;

HotelSystemsApi.bookingCache = false;
HotelSystemsApi._params = false;


HotelSystemsApi.init = function(params) {
	
	var e = false;
	
	params.path = 'http://api.v162.hotelsystems.pl/v2/';
			
	//set default values
	if(!params.reservation) { params.reservation = new Object; }
	if (!params.skin) { 	params.skin = 'default'; }
	if (!params.adapter) { 	params.adapter = 'default'; }	
	if (!params.preloaderHtml) { params.preloaderHtml = this.preloaderHtml; }
	if (!params.footerHtml) { params.footerHtml = this.footerHtml; }
	
	//validate
	if(!params.id_hotels) { var e = 'Nie podano hotelu!'; }
	if(!params.proxy) { var e = 'Nie podano adresu PHP proxy!'; }
	if(!params.div) { var e = 'Nie podano obiektu docelowego!'; }
	
	//if (!params.reservation.date_from) { params.reservation.date_from = '2011-12-16'; }
	if (!params.reservation.days) { params.reservation.days = '2'; }
	if (!params.reservation.id_hotels) { params.reservation.id_hotels = params.id_hotels; }
	if (!params.reservation.id_partners) { params.reservation.id_partners = 1; }
	if (params.reservation.id_offers) {		
		params.reservation['rooms[0][id_offers]'] = params.reservation.id_offers;
		params.reservation['rooms[0][is_offer]'] = true;
		params.reservation.id_offers = false;
	}
	
	this._params = params;
	
	if (e) {
		alert(e);
	} else {
		this.build(this._params.div);
	}	
	
}

HotelSystemsApi.build = function(div) {
			
	var initObj = $H(this._params.reservation);
	var initParams = new Object;
	initObj.each(function(pair) {
		var nk = 'reservations__'+pair.key;
		initParams[nk] = pair.value;
	});
	
	var params = $H(initParams).toQueryString();	
	
	var resp = function(req) {
		var json = req.responseText.evalJSON();
		div.innerHTML = json.html;
		HotelSystemsApi.ovr(0);
		HotelSystemsApi.setup(0);
		HotelSystemsApi.debug(json);
	}
		
	HotelSystemsApi.call('bookinghtml',resp,params);
}

HotelSystemsApi.call = function(action,resp,params,t) {
	
	HotelSystemsApi.ovr(1);
	
	var form = $('HSBooking-Form');
	
	if (!params) {
		if (form) {
			var params = this.buildQuery(t);			
			HotelSystemsApi.ovr(1);
		}
		else {
			var params = '';
		}
		params += '&reservations__id_hotels=' + this._params.id_hotels + '&key=' + HotelSystemsApi.key;
		params += '&reservations__id_partners=1';
		
	}
	
	var abs = this._params.path;
		
	var url = abs+action;
	var proxyurl = this._params.proxy + '?proxy_url='+url;
	
	if (!resp) {		
		var resp = function(req){
			alert(req.responseText);
		}
	}
	
	var pars = params;
	var args = {method:'post',parameters: pars, onComplete: resp};
	var myReq = new Ajax.Request(proxyurl,args);
	
}

HotelSystemsApi.debug = function(json) {
	if(json.debug) {
		console.log(json.debug);
	}
}

HotelSystemsApi.tab = function(id) {
	
	var f = $('HSBooking-TabId');	
	
	if((!id)&&(id != 0)) {
		return f.value*1;
	} else {
		f.value = id;
	}
	
}

HotelSystemsApi.switchTab = function(id,update) {
	
	if ((this.tab() == id) && (!update)) {
	
	}
	else {
	
		var v = this.validate(id);
		
		if (v.length == 0) {
		
			HotelSystemsApi.hideErrors();
			
			var prevTab = HotelSystemsApi.tab();
			
			HotelSystemsApi.tab(id);
			HotelSystemsApi.switchTabCss('HSBooking-Tab', id);
			
			var resp = function(req){				
				var json = req.responseText.evalJSON();
				$('HSBooking-TabContent').innerHTML = json.html;
				$('HSBooking-Footer').innerHTML = json.footer;
				HotelSystemsApi.ovr(0);
				HotelSystemsApi.setup(id);
				HotelSystemsApi.debug(json);
			}
			HotelSystemsApi.call('bookinghtml', resp, false, prevTab);
			
		}
		else {
		
			this.showErrors(v);
			
		}
		
	}
	
}

HotelSystemsApi.update = function() {
	var id = HotelSystemsApi.tab();
	
	this.ovr(1);
	this.hideErrors();
	
	if (id == 10) {
		var resp = function(req) {
			var json = req.responseText.evalJSON();
			$('HSBooking-Rooms').innerHTML = json.html;
			if (json.footer) {
				$('HSBooking-Footer').innerHTML = json.footer;
			} else {
				$('HSBooking-Footer').innerHTML = '';
			}
			HotelSystemsApi.ovr(0);
			HotelSystemsApi.setupVariants();
			HotelSystemsApi.debug(json);
		}
		HotelSystemsApi.call('bookinghtml',resp);
	}
	else {
		HotelSystemsApi.switchTab(id,true);
	}
}

HotelSystemsApi.buildQuery = function(t) {
	var form = $('HSBooking-Form');
	
	if(form) {
		var current = Form.serialize('HSBooking-Form',true);		
	}
	
	if (this.bookingCache) {
		var b = this.bookingCache;
	} else {
		var b = new Object;
	}
	
	b['HSBooking-Show'] = false;	
	if(t == 1) { b['reservations__rooms[0][id_board][]'] = false; }
	
	var current = $H(current);
	current.each(function(pair){		
		b[pair.key] = pair.value;
	});
		
	this.bookingCache = b;	
	var query = $H(this.bookingCache).toQueryString();
	
	return query; //console.log(query);
	
}

HotelSystemsApi.ovr = function(s) {
	if($('HSBooking-Overlay')) {
		if (s) {
			var h = ($('HSBooking').getHeight() - 40) + 'px';
			
			var off = $('HSBooking-Overlay').cumulativeOffset();
			var pre = $$('.HSBooking .HSBooking-OverlayPre')[0];
			var pre = $(pre);
			var sc = document.viewport.getScrollOffsets();
			
			var o = sc.top-off.top;
			if(o < 0) { o = 0; }
			pre.style.top = (o + 200) + 'px';
			//console.log(sc.top+' '+off.top);
			
			$('HSBooking-Overlay').style.height = h;
			$$('.HSBooking-OverlayBg')[0].style.height = h;
			$('HSBooking-Overlay').show();
		} else {
			$('HSBooking-Overlay').hide();
		}
	}
}

HotelSystemsApi.setup = function(id) {
	
	$('HSBooking-Prev').onclick = this.prev;
	$('HSBooking-Next').onclick = this.next;
	
	if(id==0) {
		$('HSBooking-Prev').hide();
	} else {
		$('HSBooking-Prev').show();
	}
	
	if(id != 0 ) {
		$('HSBooking-Buttons').show();
	}
			
	switch(id) {
		case 0:
			$('HSBooking-Buttons').hide();		
			HotelSystemsApi.setupCalendar();	
			//HotelSystemsApi.setupVariants();
		break;
		
		case 1:
			var tid = $('reservations__options_tab').value;
			if(tid) {
				this.switchOptionCat(tid);
			}
		break;	
		
		case 2:
			HotelSystemsApi.toggleSumup();
			$('HSBooking-Next').onclick = this.book;
		break;
	}
	
}

HotelSystemsApi.setupCalendar = function() {
	var inputId = 'HSBooking-FormDateFrom';
			var dateStatusP = function(dt){
				now = new Date();
				if (dt >= now) {
					return false;
				}
				else {
					return true;
				}
			}
								
			var onClose = function(calendar) {
				calendar.hide();
			}
			
			var onSelect = function(calendar,date) {
				if (calendar.dateClicked) {
					HotelSystemsApi.setFormValue('date_from',date);
					$(inputId).value = date;					
					calendar.hide();
					HotelSystemsApi.update();					
				}
			}
							
			Calendar.setup(
			   {
			      inputField  : inputId,         // ID of the input field
			      ifFormat    : "%Y-%m-%d",    // the date format
			      button      : 'HSBooking-CalendarButton', // ID of the button
				  dateStatusFunc : dateStatusP	,
				  onSelect : onSelect			      
			   }
	 );	
}

HotelSystemsApi.fixDate = function(d) {
	HotelSystemsApi.setFormValue('date_from',d);
	$('HSBooking-FormDateFrom').value = d;
	HotelSystemsApi.update();
	return false;
}

HotelSystemsApi.linkOffer = function(url) {
	document.location.href = url;
}

HotelSystemsApi.setFormValue = function(id,val) {	
	var fid = 'reservations__'+id;
	var field = $(fid);	
	field.value = val;
}

HotelSystemsApi.getFormValue = function(id) {
	var fid = 'reservations__'+id;
	var field = $(fid);
	return field.value;
}

HotelSystemsApi.setupVariants = function() {
	$$('.HSBooking-Room').each(function(e){
		var fn = function() {			
			var p = $(this).up();			
			HotelSystemsApi.selectRoom(p);
		}
		var ovr = $(e).select('.HSBooking-RoomOvr')[0];
		ovr.onclick = fn
		var more = $(e).select('.HSBooking-RoomFull')[0];
		more.style.display = 'none';
		var btn = $(e).select('.HSBooking-RoomReadMore')[0];
		btn.more = more;
		btn.onclick = function() { $(this.more).toggle(); }
	});
}

HotelSystemsApi.selectRoom = function(ref,v) {
	/*var ref = $(ref);
	var variantInfo = ref.select('.HSBooking-RoomVariantInfo');
	var variantInfo = variantInfo[0].innerHTML;
	var variantInfo = variantInfo.split(',');*/
	this.setFormValue('id_rooms_types',ref);
	if(v > 0) { 
		this.setFormValue('id_offers_variants',v);		
	} else {
		this.setFormValue('id_offers_variants',0);
	}
	this.switchTab(1);
}

HotelSystemsApi.zoom = function(img,id) {
	var path = img + '&w=335&h=200';
	$('HSBooking-RoomGallery'+id).src = path;
}

HotelSystemsApi.optionPlus = function(id) {	
	var v = $('OptionCount-' + id).value*1;
	
	var div = $$('.HSBooking-Option' + id)[0];
	$(div).addClassName('HSBooking-OptionLock');
	
	$('OptionCount-' + id).value = v+1;
	HotelSystemsApi.update();
}
HotelSystemsApi.optionMinus = function(id){
	var v = $('OptionCount-' + id).value * 1;
	
	var div = $$('.HSBooking-Option' + id)[0];
	$(div).addClassName('HSBooking-OptionLock');
	
	if (v > 0) {
		$('OptionCount-' + id).value = v - 1;
		HotelSystemsApi.update();
	}
}

HotelSystemsApi.switchTabCss = function(c,id) {
	$$('.'+c).each(function(e){
		$(e).removeClassName('HSAct');
	});
	var t = $$('.'+c+''+id)[0];
	if (t) {
		t.addClassName('HSAct');
	}
	
	if (c == 'HSBooking-Tab') {
		$$('.HSBooking-Tabs')[0].removeClassName('HSBooking-Tabs0');
		$$('.HSBooking-Tabs')[0].removeClassName('HSBooking-Tabs1');
		$$('.HSBooking-Tabs')[0].removeClassName('HSBooking-Tabs2');
		$$('.HSBooking-Tabs')[0].removeClassName('HSBooking-Tabs3');
		$$('.HSBooking-Tabs')[0].addClassName('HSBooking-Tabs' + id);
	}
}

HotelSystemsApi.extendCss = function(c,id) {
	
	$$('.'+c).each(function(e){
		$(e).style.height = '';
		$(e).removeClassName('HSFull');		
	});
	
	if (id) {
		var t = $$('.' + c + '' + id)[0];
		if (t) {
			t.addClassName('HSFull');
			if (c == 'HSBooking-Option') {
				var h = $$('.' + c + '' + id + ' .HSBooking-OptionFull')[0];
				var hi = $$('.' + c + '' + id + ' .HSBooking-OptionInfo')[0];
				var h = $(h).getHeight();
				var hi = $(hi).getHeight();
				$(t).style.height = (h+hi+30) + 'px';
			}
		}
	}
}

HotelSystemsApi.toggleSumup = function() {
	var nh = $('HSBooking-SumupContent').getHeight();
	var e = $($$('.HSBooking-DateInfo')[0]);
	if (e.hasClassName('HSFull')) {
		e.style.height = '';
		e.removeClassName('HSFull');
	}
	else {
		e.style.height = (nh + 40) + 'px';
		e.addClassName('HSFull');
	}
}

HotelSystemsApi.switchOptionCat = function(id) {
	$$('.HSBooking-OptionsCat').each(function(e){
		$(e).hide();
	});
	$('HSBooking-OptionsCat'+id).show();
	HotelSystemsApi.switchTabCss('HSBooking-OptionsTab',id);
	$('reservations__options_tab').value=id;
}

HotelSystemsApi.gotoOptionsTab = function(id) {
	var t = this.tab();
	if (id) {
		$('reservations__options_tab').value = id;
		if(t == 1) {
			this.switchOptionCat(id);
		}
	}	
	if (t != 1) {
		HotelSystemsApi.switchTab(1);
	}
}

HotelSystemsApi.boardSwitch = function(id) {
	var div = $$('.HSBooking-OptionB'+id)[0];
	$(div).addClassName('HSBooking-OptionLock');
	var chk = $('HSBoard'+id);
	if(chk.checked) {
		chk.checked = false;		
	} else {
		chk.checked = true;
	}
	HotelSystemsApi.update();
}

HotelSystemsApi.optionCheckbox = function(id) {
	var v = $('OptionCount-' + id).value*1;
	if(v > 0) {
		var nv = 0;
	} else {
		var nv = 1;
	}
	$('OptionCount-' + id).value = nv;
	HotelSystemsApi.update();
}

HotelSystemsApi.next = function() {
	var t = HotelSystemsApi.tab();	
	HotelSystemsApi.switchTab(t+1);
	return false;
}

HotelSystemsApi.prev = function() {
	var t = HotelSystemsApi.tab();
	HotelSystemsApi.switchTab(t-1);
	return false;
}

HotelSystemsApi.validate = function(id) {
	var errors = new Array;
	if(id > 0) {
		if(!this.getFormValue('id_rooms_types')) { 
			var e = {id:1,msg:'Proszę wybrać typ pokoju.'};
			errors.push(e);
			e = false;
		}
	}
	
	if(id > 2) {
		var error = false;
		var fields = $$('.HSBooking .required');
		fields.each(function(f){			
			if(f.value == '') {
				error = {id:2,msg:'Proszę wypełnić wszystkie pola oznaczone gwiazdką (*)'};
			}
		});
		if (fields.length == 0) {
			error = {
				id: 3,
				msg: 'Proszę wypełnić formularz.'
			};
		}
		else {
			if (!$('HSBooking-TermsAccept').checked) {
				error = {
					id: 4,
					msg: 'Proszę zaakceptować regulamin rezerwacji.'
				};
			}
		}
		if(error) { errors.push(error); }
	}
	return errors;
}

HotelSystemsApi.book = function() {
	
	var v = HotelSystemsApi.validate(3);
	
	if(v.length > 0) {
		if (v[0].id == 3) {
			HotelSystemsApi.switchTab(2);
		}
		else {
			HotelSystemsApi.showErrors(v);
		}
	} else {
		HotelSystemsApi.switchTabCss('HSBooking-Tab',3);
		$$('.HSBooking-Tab').each(function(e){
			e.onclick = function() { return false; }
		});		
		HotelSystemsApi.submit();
	}
	
	return false;
	
}

HotelSystemsApi.loadCard = function() {
	
	var nr = $('HSBooking-CardNr').value;
	var email = $('HSBooking-CardEmail').value;
	
	var pars = 'karty_spa__nr_karty='+nr+'&karty_spa__email='+email;
	
	var resp = function(req) {
		//Booking.setLoading(false);
		var t = req.responseText.evalJSON();		
		HotelSystemsApi.ovr(0);
		if(t.rabat) {
			$('reservations__rabat_kwota').value = t.rabat;
			$('reservations__id_card').value = t.id;						
			alert('Kwota rezerwacji została obniżona o '+t.rabat+' zł');
			HotelSystemsApi.update();
		} else {
			alert('Wprowadzone dane są nieprawidłowe');
		}
	}
	
	//Booking.setLoading(true,'Trwa sprawdzanie Karty SPA. Proszę czekać...');
	HotelSystemsApi.call('checkcard',resp,pars);
	return false;
	
}

HotelSystemsApi.switchCard = function(ref) {
	$$('.karta_option').each(function(e){
		e.removeClassName('act');
	});
	ref.addClassName('act');
	if (ref.id == 'karta_option1') {
		$$('.karta_form')[0].hide();
	} else {
		$$('.karta_form')[0].show();
	}
}

HotelSystemsApi.wstepna = function() {
	$('rezBtnAllpay').style.display = 'none';
	$('rezBtnWstepna').style.display = 'none';
	$('wstepna_info1').style.display = 'none';
	$('rez_pay_box').style.display = 'none';
	$('wstepna_info2').style.display = 'block';
}

HotelSystemsApi.submit = function() {
	var resp = function(req) {
		var json = req.responseText.evalJSON();
		//alert(json);
		$('HSBooking').innerHTML = json.html;
		HotelSystemsApi.ovr(0);
	}
	HotelSystemsApi.call('book',resp);
	return false;
}

HotelSystemsApi.hideErrors = function() {
	$('HSBooking-Validation').hide();
}

HotelSystemsApi.showErrors = function(errors) {
	
	var v = $('HSBooking-Validation');
	var html = '';
	errors.each(function(e){
		html += '<div class="HSBooking-Error">'+e.msg+'</div>';
	});
	v.innerHTML = html;
	v.show();
	
}


var Newsletter = new Object;

Newsletter.add = function() {
	var email = $('newsletter').value;
	var url = '/newsletter';
	var params = 'email='+email;
	
	var test = FormObj.validateEmail(email);
	
	var resp = function(req) {
		alert(req.responseText);
		$('newsletter_status').hide();
		$('newsletter_email').show();
		$('newsletter').value = '';
	}
	
	if (test) {
		var myAjax = new Ajax.Request(url,{ method: 'post',parameters: params,evalScripts: true,onComplete:resp});
		$('newsletter_email').hide();
		$('newsletter_status').show();
	} else {
		alert('Proszę wpisać poprawny adres email.');
	}
}

Newsletter.setMsg = function(txt) {
	$('newsletter_email').innerHTML = txt;
}


var Gallery = new Object;

Gallery.x = 0;
Gallery.id = 0;
Gallery.photos = new Array;
Gallery.currentVideo = false;
Gallery.mode = 'gallery';

Gallery.add = function(url,hotel,hotel_url,desc) {
	var obj = new Object;
	obj.url = url;
	obj.hotel = hotel;
	obj.hotel_url = hotel_url;
	obj.desc = desc;
	Gallery.photos.push(obj);
}

Gallery.init = function() {
	Gallery.sc = $$('.thumbnails .sc')[0];
	Gallery.container = $$('.thumbnails')[0];
			
	if (Gallery.mode == 'gallery') {
		var thumbs = $$('.thumbnails .gthumb');	
	} else {
		var thumbs = $$('.thumbnails .vthumb');
	}
	
	var len = thumbs.length;
	
	Gallery.pageWidth = 656;
	Gallery.pages = Math.ceil(len/10);
	Gallery.firstPage();
			
	$$('.gallery .gallery_right')[0].onclick = function(){
		if (Gallery.page < (Gallery.pages - 1)) {
			Gallery.nextPage();
		}
	}
	
	$$('.gallery .gallery_left')[0].onclick = function(){
		if ((Gallery.page > 0)&&(Gallery.pages > 1)) {
			Gallery.prevPage();
		}
	}
	
	$$('.gallery .gallery_left')[0].onmouseover = function() { this.addClassName('act'); }
	$$('.gallery .gallery_left')[0].onmouseout = function() { this.removeClassName('act'); }
	
	$$('.gallery .gallery_right')[0].onmouseover = function() { this.addClassName('act'); }
	$$('.gallery .gallery_right')[0].onmouseout = function() { this.removeClassName('act'); }
	
	Gallery.checkPages();
	$('cache').onload = function() { Gallery.showPhoto(); }
}

Gallery.firstPage = function() {
	Gallery.page = 0;
	Gallery.sc.style.left = '0px';
}

Gallery.nextPage = function() {
	Gallery.page++;
	var x = 0-(Gallery.page*Gallery.pageWidth);
	var p = {type:'left',to:x,step:-30,delay:20}
	$fx(Gallery.sc).fxAdd(p).fxRun();
	Gallery.checkPages();
}

Gallery.prevPage = function() {
	Gallery.page--;
	var x = 0-(Gallery.page*Gallery.pageWidth);
	var p = {type:'left',to:x,step:+30,delay:20}
	$fx(Gallery.sc).fxAdd(p).fxRun();
	Gallery.checkPages();
}

Gallery.checkPages = function() {		
	if(Gallery.page == 0) {
		$$('.gallery .gallery_left')[0].addClassName('disabled');
		$$('.gallery .gallery_right')[0].removeClassName('disabled');
	} else if(Gallery.page == (Gallery.pages-1)) {
		$$('.gallery .gallery_left')[0].removeClassName('disabled');
		$$('.gallery .gallery_right')[0].addClassName('disabled');
	} else {
		$$('.gallery .gallery_left')[0].removeClassName('disabled');
		$$('.gallery .gallery_right')[0].removeClassName('disabled');
	}
	
	if(Gallery.pages < 2) {
		$$('.gallery .gallery_left')[0].addClassName('disabled');
		$$('.gallery .gallery_right')[0].addClassName('disabled');
	}
}

Gallery.slider = function() {
	var p = Gallery.sc.positionedOffset();	
}

Gallery.loadPhoto = function(file,id) {
	$('gallery_pre').show();
	$('cache').src = Gallery.photos[id].url;
	
	var gd = $('gallery_desc');
	if(gd) {
		$('gallery_hotel').innerHTML = '<a href="'+Gallery.photos[id].hotel_url+'">'+Gallery.photos[id].hotel+'</a>';
		$('gallery_info').innerHTML = Gallery.photos[id].desc;
	}
	Gallery.id = id;
}

Gallery.showPhoto = function() {
	var img = $('cache').src;	
	$('main_img').style.backgroundImage = "url('"+img+"')";
	$('gallery_pre').hide();
}

Gallery.nextPhoto = function() {
	var nid = Gallery.id + 1;
	if(nid > (Gallery.photos.length-1)) {
		var nid = 1;
	}
	var url = Gallery.photos[nid].url;
	Gallery.loadPhoto(url,nid);
}

Gallery.prevPhoto = function() {
	var nid = Gallery.id - 1;
	if(nid < 0) {
		var nid = (Gallery.photos.length-1);
	}
	var url = Gallery.photos[nid].url;
	Gallery.loadPhoto(url,nid);
}

Gallery.showVideo = function() {
	$('main_img').hide();
	$('main_video').show();
	$('gallery_slider').hide();
	$('video_slider').show();
	$('tab_video').addClassName('act');
	$('tab_gallery').removeClassName('act');
	Gallery.playVideo();
	Gallery.mode = 'video';
	Gallery.init();	
}

Gallery.showGallery = function() {
	//$('main_video').innerHTML = '';
	$('main_img').show();
	$('main_video').hide();
	$('video_slider').hide();
	$('gallery_slider').show();
	$('tab_gallery').addClassName('act');
	$('tab_video').removeClassName('act');	
	Gallery.mode = 'gallery';
	Gallery.init();
}

Gallery.playVideo = function(flv) {
	if(!flv) { var flv = Gallery.currentVideo; }
	$('player_swf').playVideoSWF(flv);
	$$('.vthumb').each(function(e){
		e.removeClassName('act');
	});
	$$('#video_slider .thumb'+flv)[0].addClassName('act');
}


var Lang = new Object;

Lang.dayOfWeek = function(id) {
	var days = Array('Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota');
	return days[id];
}

Lang.month = function(id) {
	var months = Array('Sty','Lut','Mar','Kwi','Maj','Cze','Lip','Sie','Wrz','Paź','Lis','Gru');
	return months[id];
}

Lang.dateFormat = function(date) {
	var d = Lang.dayOfWeek(date.getDay())+', '+date.getDate()+' '+Lang.month(date.getMonth())+' '+date.getFullYear();
	return d;
}



