sliderTimeout = null
sliderDefaultOnChange = null;
function sliderSlide(options) {
	if (!options) {
		options = {delta : 1, onchange : sliderDefaultOnChange};
	}
	if (sliderTimeout !== null) {
		clearTimeout(sliderTimeout);
	}
	if (!sliderDefaultOnChange && options.onchange) {
		sliderDefaultOnChange = options.onchange;
	}
	sliderTimeout = setTimeout(sliderSlide, options.timeout ? options.timeout : 10000);	
	if (!options.delta && options.go === undefined && options.goinstant === undefined && options.gorandom === undefined) {
		return false;
	}
	var el = $(options.slider ? options.slider : "__slider__");
	var nodes = el.getElementsByTagName(options.slideElement ? options.slideElement : "LI");
	var elWidth = $(nodes[0]).getSize().x;
	var position = Math.round(-el.getStyle("left").toInt() / elWidth);
	var last = nodes.length - 1;
	if (options.gorandom !== undefined) {
		options.goinstant = Math.round(Math.random() * nodes.length);
	} 
	if (options.goinstant !== undefined) {
		position = options.goinstant;
	} else if (options.go !== undefined) {
		position = options.go;
	} else {
		position += options.delta;
	}	
	if (position > last) {
		position = 0;
	} else if (position < 0) {
		position = last;
	}	
	var effect = new Fx.Tween(el, {duration : options.goinstant === undefined ? 250 : 0, link : "chain"});
	effect.__slide__ = nodes[position];
	effect.addEvent("complete", options.onchange);	
	effect.start("left", -elWidth * position);
	nodes = $("__slider_pages__").getElementsByTagName("A");
	var l = nodes.length;
	for (var i = 0; i < l; i++) {
		nodes[i].className = i == position ? "active" : "";
	}
}

function onChangeSlide() {
	var el = $("__slider_category__");
	el.href = this.__slide__.getAttribute("uri_category");
	el.style.display = this.__slide__.hasAttribute("uri_category") ? "" : "none";
}

__offsets_more__ = {}
function showMore(uri, prefix, type, total, onlyappend, limit, startoffset) {
	if (!__offsets_more__[type]) {
		__offsets_more__[type] = startoffset ? startoffset : 0;
	}
	__offsets_more__[type] += limit;
	if (limit < 0) {
		__offsets_more__[type] = -limit;
	}
	offset = __offsets_more__[type];	
	if (limit < 0) {		
		var nodes = $(prefix + "__").childNodes;
		var l = nodes.length;
		var nodesDiv = new Array();
		for (var i = 0; i < l; i++) {
			if (nodes[i] && nodes[i].nodeName === "DIV" && nodes[i].className !== "links") {
				nodesDiv.push(nodes[i]);
			}
		}
		l = nodesDiv.length;
		for (var i = offset; i < l; i++) {
			nodesDiv[i].parentNode.removeChild(nodesDiv[i]);
		}
		$(prefix + "_handle__").style.display = "";
		$(prefix + "_handle_less__").style.display = "none";
		return false;
	}
	var request = new Request({url : uri + offset});
	request.offset = offset;
	request.total = total;
	request.prefix = prefix;
	request.limit = limit;
	request.refresh = function(limit) {
		if (!limit) {
			limit = 0;
		}
		if (this.offset + limit >= this.total) {
			$(this.prefix + "_handle__").style.display = "none";
			var el = $(this.prefix + "_handle_less__");
			if (el) {
				$(this.prefix + "_handle_less__").style.display = "";
			}
			return false;
		}
		return true;
	}
	request.onSuccess = function(responseText) {		
		var el = $(prefix + "__");
		if (onlyappend) {
			el.innerHTML += responseText;
		} else {
			var splitter = '<!--append-->'; // IE HACK
			var parts = el.innerHTML.split(new RegExp(splitter, "i"), 2);
			el.innerHTML = parts[0] + responseText + parts[1];			
		}
		this.refresh(this.limit);
	}	
	if (request.refresh()) {
		request.send();
	}
}

function onChangeWhereAndWhen(uri, tab) {
	uri += ",whereandwhen_city." + $('__whereandwhen_city__').value;
	var nodes = $("__whereandwhen_tabs__").childNodes;
	var l = nodes.length;
	var active_tab = null;
	for (var i = 0; i < l; i++) {
		if (nodes[i].nodeName !== "LI") {
			continue;
		}
		var node = $(nodes[i]);
		if (tab !== undefined) {
			node.removeClass("active");
		} else if (node.hasClass("active")) {
			active_tab = node.getAttribute("alt");
		}
		if (node.getAttribute("alt") == tab) {
			node.addClass("active");
			active_tab = node.getAttribute("alt");
		}
	}
	uri += ",whereandwhen_when." + active_tab;
	var request = new Request({url : uri});
	request.onSuccess = function(responseText) {
		$("__whereandwhen__").innerHTML = responseText;
	}
	request.send();
	return void(0);
}

function onClickCategoryGroup(event) {
	var node = (new Event(event)).target;
	if (node.nodeName === "SPAN") {
		node = node.parentNode;
	}
	node.parentNode.className = node.parentNode.className === "active" ? "" : "active";
}

function setItemDescriptionFull(show) {
	$("txt_description").style.display = show ? "" : "none";
	$("txt_description_short").style.display = !show ? "" : "none";
}

function addToFavorites(id) {
	var data = getCookie('__favorites__');
	data = data ? data.split(";") : new Array();
	data.push(id);
	data = data.slice(Math.max(0, data.length - 10), data.length);
	setCookie('__favorites__', data.join(";"), 360);
	$("favorites_button_container_is").style.display = "";
	$("favorites_button_container").style.display = "none";
}

function removeFromFavorites(id) {
	var el = $("__favorite__" + id);
	el.parentNode.removeChild(el);
	var data = getCookie('__favorites__');
	data = data ? data.split(";") : new Array();
	var l = data.length;
	var new_data = new Array();
	for (var i = 0; i < l; i++) {
		if (data[i] != id) {
			new_data.push(data[i]);
		}
	}
	data = new_data;
	data = data.slice(Math.max(0, data.length - 10), data.length);
	setCookie('__favorites__', data.join(";"), 360);
	if (data.length <= 0) {
		$("__favorite__0").style.display = "";
	}
}

__favorites_timeout = null;
function autoshowTopBlock(id) {
	setTopBlockVisible(id, true);
	__favorites_timeout = setTimeout("setTopBlockVisible('" + id + "', false)", 3000);
}

function setTopBlockVisible(id, show, autosize) {	
	var el = $(id);
	show = show === undefined ? el.className.indexOf("visible") === -1 : show;
	if (show) {
		el.addClass("visible");
		if (autosize) {
			autosizeTopBlock(id);
		}
	} else {
		el.removeClass("visible");
		if (autosize) {
			el.getElementsByTagName("A")[0].style.width = "";
		}
	}
	if (__favorites_timeout !== null) {
		clearTimeout(__favorites_timeout);
		__favorites_timeout = null;
	}
}
function autosizeTopBlock(id) {
	var el = $(id);
	var elHandle = el.getElementsByTagName("A")[0];
	var elContainer = el.getElementsByTagName("DIV")[0];
	elContainer.style.visibility = "hidden";
	elContainer.style.display = "block";
	elContainer.style.width = "";
	elHandle.style.width = "";
	var width = Math.max($(elHandle).getSize().x + 5, $(elContainer).getSize().x - 16);	
	elContainer.style.visibility = "";
	elContainer.style.display = "";
	elContainer.style.width = width + "px";
	elHandle.style.width = (width + 5) + "px";
}

function initializeTopBlock(id) {
	var el = $(id);
	el.addEvent('mouseenter', function(event){setTopBlockVisible(this.id, true, true)});
	el.addEvent('mouseleave', function(event){setTopBlockVisible(this.id, false, true)});
}

function onChangeMapCategory() {
	var elCategory = $("__map_filter_category__");
	var nodes = $("__map_filter_subcategory__").childNodes;
	var l = nodes.length;
	for (var i = 0; i < l; i++) {
		var node = nodes[i];
		if (node.nodeName === "SPAN") {
			node.style.display = "none";
		}
	}
	var elContainer = $("__map_filter_subcategory__" + elCategory.value);
	var nodes = elContainer.getElementsByTagName("INPUT");
	l = nodes.length;
	for (var i = 0; i < l; i++) {
		nodes[i].checked = true;
	}
	elContainer.style.display = "";
	resetMapCategories();
}

function resetMapCategories() {
	el = jQuery("#__map_filter_subcategory__" + $("__map_filter_category__").value);
	jQuery(".top_filter").css("display", el.find("label").length > 0 ? "" : "none");	
}

function toggleMapCategories() {
	var el = jQuery(".top_filter");
	if (el.hasClass("closed top_filter_closed")) {
		el.removeClass("closed top_filter_closed");
	} else {
		el.addClass("closed top_filter_closed");
	}
}

function onChangeMainFilter() {
	$("citylistmain").disabled = $("categoryList").value <= 0 && $("subcategoryList").value <= 0;
}

function hashRedirect() {
	var path = String(document.location);
	var position = path.indexOf("#");
	if (position === -1) {
		return false;
	}
	document.location = path.substr(0, position) + "?" + path.substr(position + 1) + "&hash=1";
}

hashRedirect();

function toggleNode(el, only_hide) {
	el = $(el);
	if (!el) {
		return false;
	}
	if (only_hide) {
		var show = el.style.visibility === "hidden";
		el.style.visibility = show ? "" : "hidden";
		el.style.position = show ? "relative" : "absolute";
		el.style.left = show ? "" : "-2000px";
	} else {
		el.style.display = el.style.display === "none" ? "" : "none";
	}
}

function rountToPhpFloat(value) {
	var delta = 1000000000000;
	return Math.round(value * delta) / delta;
}
__qr_code_fx__ = null;
__qr_code_height__ = null;
__qr_code_expanded__ = false;
function setQRCodeExpanded(expanded) {
	var el = $("qrcode_container");	
	if (expanded === undefined) {
		expanded = !__qr_code_expanded__;
	}	
	__qr_code_expanded__ = expanded;
	if (__qr_code_height__ === null) {
		el.style.position = "absolute";
		el.style.visibility = "hidden";
		el.style.display = "";
		__qr_code_height__ = el.getSize().y;
		el.style.height = 0;
		el.style.display = "none";
		el.style.position = "";
		el.style.visibility = "";
	}
	el.style.display = "";
	if (__qr_code_fx__ === null) {
		__qr_code_fx__ = new Fx.Tween(el);
		__qr_code_fx__.el = el;
		__qr_code_fx__.onComplete = function() {
			if (__qr_code_expanded__) {
				__qr_code_fx__.el.style.overflow = "";
			}
		}
		__qr_code_fx__.addEvent('complete', __qr_code_fx__.onComplete);
	}
	el.style.overflow = "hidden";
	__qr_code_fx__.cancel();
	__qr_code_fx__.start('height', expanded ? 0 : __qr_code_height__, !expanded ? 0 : __qr_code_height__);
}
__tweet__ = 0;
__tweet_timeout__ = null;
function gotoTweet(delta) {
	if (__tweet_timeout__ !== null) {
		clearTimeout(__tweet_timeout__);
	}
	$("__tweet_" + __tweet__ + "__").style.display = "none";
	__tweet__ += delta;
	var el = $("__tweet_" + __tweet__ + "__");
	if (!el) {
		__tweet__ = 0;
		el = $("__tweet_" + __tweet__ + "__");
	}
	el.style.display = "";
	$("__tweet_date__").innerHTML = el.getAttribute("datetime");
	//__tweet_timeout__ = setTimeout("gotoTweet(1)", 4000);
}

EditObject = function() {
	this.container = $("__edit_object_places__");
	this.uri = this.container.getAttribute("uri");
}

EditObject.instance = null;

EditObject.getInstance = function() {
	if (EditObject.instance === null) {
		EditObject.instance = new EditObject();
	}
	return EditObject.instance;
}

EditObject.prototype.removePlace = function() {

}

EditObject.prototype.addPlace = function() {
	var request = new Request({url : this.uri + ",new.1", data : $("object-form").toQueryString(), evalScripts : false});
	request.__parent = this;
	__document_loaded__ = true;
	request.onSuccess = function(responseText) {
		this.__parent.container.innerHTML = this.xhr.responseText;
		this.xhr.responseText.stripScripts(true);
	}
	request.send();
	return void(0);
}

__document_loaded__ = false;

function initializeEditPlaceAutocomplete(uri, elPlace, elCity) {
	var listener = function(uri, elPlace, elCity) {
		if (uri) {
			this.uri = uri;
		}
		if (elPlace) {
			this.elPlace = elPlace;
		}
		if (elCity) {
			this.elCity = elCity;
		}
		this.onSubmit = function(el) {
			if (el[0]) {
				el = el[0];
			}
			$(this.elCity).value = el.inputUri;
			$(this.elPlace).value = el.inputValue;
		}	
		new Autocompleter.Ajax.Json(
			$(this.elPlace), this.uri, {
				'minLength': 3,
				'width': 'auto',
				'postVar': 'query',
				'selectFirst': false,
				'autoSubmit': true,
				'filterSubset': true,                        
				'delay': 0,
				'onSubmit' : this.onSubmit.bind(this)
			}
		);
	}
	listener.uri = uri;
	listener.elPlace = elPlace;
	listener.elCity = elCity;
	
	if (!__document_loaded__) {
		window.addEvent('domready', listener.bind(listener));
	} else {		
		listener(uri, elPlace, elCity);
	}
}

savaitgalis = {}

savaitgalis.initialize = function() {
	new savaitgalis.bottombar();
	new savaitgalis.popular();
	savaitgalis.twitter.initialize();
}

savaitgalis.weather = function() {
	jQuery(".weathershort a.expander").attr("href", "javascript:void(0)")
		.click(jQuery.proxy(this.toggleCities, this))
	jQuery(".weathershort_cities a").click(jQuery.proxy(this.showCity, this))
	jQuery(".weathershort_day")
		.mouseover(jQuery.proxy(this.overDay, this)).mouseout(jQuery.proxy(this.outDay, this));
	this.nodeCities = jQuery(".weathershort_cities");
	this.positioned = false;
	
	var city = getCookie("weather");
	if (city) {
		this.showCity({"target" : jQuery("#weather_city_" + city)});	
	}
}

savaitgalis.weather.prototype.toggleCities = function(event) {
	var el = jQuery(event.target);	
	var position = el.offset();
	position.top += el.height() + 2;
	this.nodeCities.toggle();
	this.nodeCities.offset(position);
}

savaitgalis.weather.prototype.showCity = function(event) {
	var el = jQuery(event.target);
	jQuery(".weathershort").hide();
	jQuery("#" + el.attr("id") + "_container").show();	
	this.nodeCities.hide();
	var parts = el.attr("id").split("_")
	setCookie("weather", parts[parts.length - 1], 60);
}

savaitgalis.weather.prototype.overDay = function(event) {
	var el = jQuery(event.target);
	if (!el.hasClass("weathershort_day")) {
		el = el.parents(".weathershort_day");
	}
	jQuery(".weathershort_info")
		.removeClass("weathershort_info_0").removeClass("weathershort_info_1").removeClass("weathershort_info_2")
		.addClass("weathershort_info_" + (el.prevAll().length - 1))
		.html(el.attr("alt"))
		.show();
	if (!this.positioned) {
		this.positioned = true;
		var elParent = jQuery(".weathershort_current:visible");
		var position = elParent.offset();
		position.left += elParent.width() + 2;
		position.top += elParent.height() + 4;
		jQuery(".weathershort_info").offset(position);
	}
	el.parents(".weathershort").find(".weathershort_day").removeClass("weathershort_day_active");
	el.addClass("weathershort_day_active");
}

savaitgalis.weather.prototype.outDay = function(event) {
	var el = jQuery(event.target);
	if (!el.hasClass("weathershort_day")) {
		el = el.parents(".weathershort_day");
	}
	el.removeClass("weathershort_day_active");
	jQuery(".weathershort_info").hide();
}

savaitgalis.popular = function() {
	
	jQuery("#txt_right .upcoming_events .tabs li").click(jQuery.proxy(this.changeTab, this));
	jQuery(".upcoming-events .grey-links a").click(jQuery.proxy(this.showMore, this));
	this.delta = 5;
	this.reset();
	
}

savaitgalis.popular.prototype.getActiveType = function() {
	return jQuery("#txt_right .upcoming_events .tabs li.active").hasClass("first") ? "today" : "week";
}

savaitgalis.popular.prototype.getActiveElements = function(only_hidden) {
	return jQuery(".__popular_" + this.getActiveType() + "__" + (only_hidden ? ":hidden" : ""));
}

savaitgalis.popular.prototype.changeTab = function(event) {
	var el = jQuery(event.target);
	if (el.get(0).nodeName !== "LI") {
		el = el.parent();
	}	
	el = el.parent();
	jQuery("#txt_right .upcoming_events .tabs li").removeClass("active");
	el.addClass("active");
	jQuery(".__popular_" + this.getActiveType() + "__").hide();
	jQuery(".upcoming-events div.item").hide();	
	
	this.showMore();
}

savaitgalis.popular.prototype.reset = function(event) {
	var type = this.getActiveType();
	var el = jQuery("#txt_right .upcoming-events .grey-links a");
	el.find("span").hide();
	jQuery(el.find("span").get(this.getActiveElements(true).length > 0 ? 0 : 1)).show();
	el.css("display", jQuery(".__popular_" + type + "__").length <= this.delta ? "none" : "");
}

savaitgalis.popular.prototype.showMore = function(event) {
	var type = this.getActiveType();
	var nodes = this.getActiveElements(true);
	var l = Math.min(nodes.length, this.delta);
	if (l <= 0) {
		var nodes = this.getActiveElements();
		nodes.hide();
		l = Math.min(nodes.length, this.delta);
		if (l <= 0) {
			return false;
		}
	}
	for (var i = 0; i < l; i++) {
		jQuery(nodes[i]).show();
	}
	this.reset();
}

savaitgalis.facebook = function() {	
	FB.getLoginStatus(savaitgalis.facebook.initialize);	
}

savaitgalis.facebook.logged = false;
savaitgalis.facebook.uid = null;

savaitgalis.facebook.initialize = function(response) {
	savaitgalis.facebook.logged = response.session ? true : false;
	if (response.session) {
		savaitgalis.facebook.uid = response.session.uid;
	}
	if (RendererSuggest.__instance__) {
		RendererSuggest.__instance__.renderer.reset();
	}
}

savaitgalis.facebook.login = function() {
	FB.login(savaitgalis.facebook.initialize);
}

savaitgalis.facebook.getIsLoggedIn = function() {
	return savaitgalis.facebook.logged;
}

savaitgalis.facebook.getUserId = function() {
	return savaitgalis.facebook.uid;
}

savaitgalis.bottombar = function() {
	this.container = jQuery(".bottom-line");
	if (this.container.length > 0) {
		this.container.show();
		jQuery(window).resize(jQuery.proxy(this.reset, this));
		this.reset();
		this.container.find("a.toggler").click(jQuery.proxy(this.toggle, this));				
		var remembered = getCookie("collapsed");
		if (!remembered) {
			var date = new Date();
			var weekday = date.getDay();
			remembered = weekday == 0 || weekday >= 5 ? -1 : 1;
		}
		if (remembered != 1) {			
			this.toggle();
		}
		this.toggle();
	}
}

savaitgalis.bottombar.prototype.toggle = function(event) {
	var expand = this.container.hasClass("closed");
	if (expand) {
		this.container.removeClass("closed");		
	} else {
		this.container.addClass("closed");
	}
	var elDocument = jQuery(document);
	var maxScroll = elDocument.height() - jQuery(window).height();		
	setCookie("collapsed", expand ? -1 : 1, 60);
	jQuery("#footer").css("padding-bottom", (expand ? 70 : 0) + "px");	
	if (maxScroll == elDocument.scrollTop()) {
		elDocument.scrollTop(elDocument.height() - jQuery(window).height());
	}
}

savaitgalis.bottombar.prototype.reset = function() {
	this.container.width(jQuery(window).width());
}

savaitgalis.twitter = function(options) {
	this.container = jQuery(options.container);
	this.items = this.container.find(".twitter_item");
	this.next = this.container.find(".twitter_next");
	this.prev = this.container.find(".twitter_prev");
	this.next.click(jQuery.proxy(this.gotoNext, this));
	this.prev.click(jQuery.proxy(this.gotoPrevious, this));
	this.reset();
}

savaitgalis.twitter.initialize = function() {
	var nodes = jQuery(".twitter_container");
	for (var i = 0; i < nodes.length; i++) {
		new savaitgalis.twitter({"container" : nodes[i]});
	}
}

savaitgalis.twitter.prototype.getPosition = function() {
	var position = 0;
	for (; position < this.items.length; position++) {
		if (jQuery(this.items[position]).css("display") !== "none") {
			break;
		}
	}
	return position;
}

savaitgalis.twitter.prototype.gotoNext = function() {
	this.gotoDelta(1);
}

savaitgalis.twitter.prototype.gotoPrevious = function() {
	this.gotoDelta(-1);
}

savaitgalis.twitter.prototype.gotoDelta = function(delta) {
	this.gotoPosition(this.getPosition() + delta);
}

savaitgalis.twitter.prototype.gotoPosition = function(position) {
	this.items.hide();
	jQuery(this.items.get(Math.min(Math.max(position, 0), this.items.length - 1))).show();
	this.reset();
}

savaitgalis.twitter.prototype.reset = function() {
	this.next.hide();
	this.prev.hide();
	if (this.items.length <= 0) {		
		return false;
	}
	var position = this.getPosition();
	if (position > 0) {
		this.prev.show();
	}
	if (this.items.length > 0 && position < this.items.length - 1) {
		this.next.show();
	}
}

jQuery(window).ready(savaitgalis.initialize)
