var Dom = YAHOO.util.Dom, History = YAHOO.util.History, Event = YAHOO.util.Event;

Event.onDOMReady(function() {
	var elems = [], tabviews = [], urlBookmarkedState = History
			.getBookmarkedState("url"), urlInitialState = urlBookmarkedState
			|| "";

	Dom.batch(Dom.getElementsByClassName("yui-navset"), function(el) {
		tabviews.push(new YAHOO.widget.TabView(el));
	});

	var listElements = Dom.getElementsByClassName("list-element", "li");

	focusListElement = function(el) {
		Dom.setStyle(Event.getTarget(el).parentNode.childNodes[1],"display","");
	};
	blurListElement = function(el) {
		Dom.setStyle(Event.getTarget(el).parentNode.childNodes[1],"display","none");
	};
	for ( var i = 0; i < listElements.length; i++) {
		Event.addListener(listElements[i].childNodes[0], "mouseover",
				focusListElement);
		Event.addListener(listElements[i].childNodes[0], "mouseout",
				blurListElement);
	}

	Dom.batch(Dom.getElementsByClassName("auto-update"), function(el) {
		elems.push(new Elem(el.id));
	});

	tbClickListener = function(e) {
		History.navigate("url", this.href);
		Event.preventDefault(e);
	};
	urlStateChangeHandler = function(state) {
		var h = Dom.getElementBy(function() {
			return true;
		}, "html"), b = Dom.getElementBy(function() {
			return true;
		}, "body");
		if (state == "") {
			// pagina standard
			Dom.setStyle("toolbar", "display", "none");
			Dom.setStyle("iframe", "display", "none");
			Dom.setStyle("okitalia", "display", "");
			Dom.batch( [ h, b ], function(el) {
				Dom.setStyle(el, "width", "");
				Dom.setStyle(el, "height", "");
				Dom.setStyle(el, "overflow", "");
			});
			try {
				Dom.get("iframe").contentDocument.location.replace("/history.html");
			} catch (e) {
				Dom.get("iframe").src = "/history.html";
			}
		} else {
			// toolbar
			Dom.setStyle("toolbar", "display", "");
			Dom.setStyle("iframe", "display", "");
			Dom.setStyle("okitalia", "display", "none");
			Dom.batch( [ h, b ], function(el) {
				Dom.setStyle(el, "width", "100%");
				Dom.setStyle(el, "height", "100%");
				Dom.setStyle(el, "overflow", "hidden");
			});
			ridimensiona();
			try {
				Dom.get("iframe").contentDocument.location.replace(state);
			} catch (e) {
				Dom.get("iframe").src = state;
			}
		}
	};

	History.onReady(function() {
		var current = History.getCurrentState("url");
		urlStateChangeHandler(current);
		Dom.batch(Dom.getElementsByClassName("tb-link", "a"), function(el) {
			Event.addListener(el, "click", tbClickListener);
		});
	});

	History.register("url", urlInitialState, urlStateChangeHandler);
	History.initialize("yui-history-field", "yui-history-iframe");

	function ridimensiona() {
		Dom.setStyle("iframe", "height", Dom.getViewportHeight() - 26 + 'px');
		Dom.setStyle("iframe", "width", Dom.getViewportWidth() + 'px');
	}
	ridimensiona();

	YAHOO.util.Event.addListener(this, "resize", ridimensiona);
});

Elem = function(oName) {
	var oldHtml = '', extra = '';
	focusListElement = function(el) {
		el.currentTarget.parentNode.childNodes[1].style.display = '';
	};
	blurListElement = function(el) {
		el.currentTarget.parentNode.childNodes[1].style.display = 'none';
	};
	tbClickListener = function(e) {
		History.navigate("url", this.href);
		Event.stopEvent(e);
	};
	doUpdate = function() {
		var callback = {
			success : function(o) {
				Dom.get(oName).innerHTML = o.responseText;
				if (o.responseText.indexOf("<div class=\"nores\">") == -1)
					Dom.get(oName).innerHTML += "<div class=\"extra\">" + extra
							+ "</div>";
				Dom.batch(Dom.getElementsByClassName("list-element", "li", Dom
						.get(oName)), function(el) {
					Event.addListener(el.childNodes[0], "mouseover",
							focusListElement);
					Event.addListener(el.childNodes[0], "mouseout",
							blurListElement);
				});
				Dom.batch(Dom.getElementsByClassName("tb-link", "a", Dom
						.get(oName)), function(el) {
					Event.addListener(el, "click", tbClickListener);
				});
			},
			failure : function(o) {
				Dom.get(oName).innerHTML = oldHtml;
			}
		};
		oldHtml = Dom.get(oName).innerHTML;
		var div = Dom.getElementsByClassName("extra", "div", Dom.get(oName));
		extra = (div.length > 0) ? div[0].innerHTML : "";
		Dom.get(oName).innerHTML = "<div class=\"loader\"></div>";
		var id_tag = (typeof (g_id_tag) == "number") ? "&id_tag=" + g_id_tag
				: "";
		var n = (typeof (g_n) == "number") ? g_n : "5";
		YAHOO.util.Connect.asyncRequest("GET", "/updater.php?feed=" + oName
				+ "&id_comune=" + g_id_comune + id_tag + "&n=" + n, callback);
	};
	doUpdate();
};

