var backend = "backend.php";

function toggleMarked(id, elem) {

	var toggled = false;

	if (elem.getAttribute("toggled") == "true") {
		toggled = 1;
	} else {
		toggled = 0;
	}

	var query = "?op=toggleMarked&id=" + id + "&mark=" + toggled;

	new Ajax.Request(backend, {
		parameters: query,
		onComplete: function (transport) {
			//
		} });
}

function togglePublished(id, elem) {

	var toggled = false;

	if (elem.getAttribute("toggled") == "true") {
		toggled = 1;
	} else {
		toggled = 0;
	}

	var query = "?op=togglePublished&id=" + id + "&mark=" + toggled;

	new Ajax.Request(backend, {
		parameters: query,
		onComplete: function (transport) {
			//
		} });

}

function setPref(elem) {
	var toggled = false;
	var id = elem.id;

	if (elem.getAttribute("toggled") == "true") {
		toggled = 1;
	} else {
		toggled = 0;
	}

	var query = "?op=setPref&id=" + id + "&to=" + toggled;

	new Ajax.Request(backend, {
		parameters: query,
		onComplete: function (transport) {
			//
		} });

}

// Go directly to another item in the same feed
function goToSibling(article_id, feed_id, link, step) {
    var links = linksInFeed(feed_id);
    for (var i=0 ; i<links.length ; i++) {
        var re = new RegExp(".*article\\.php\\?id="+article_id+"&.*");
        if (!re.test(links[i].href)) continue;
        // here, we've found the current article
        var index = i + step;
        if (index < 0) {
            markAsRead(feed_id);
            iui.showPage($("feed-"+feed_id), true);
            return false;
        }
        if (index >= links.length) {
            showRestOfFeed(feed_id);
            return false;
        }
        console.log(links[index]);
        var match = links[index].href.match(/.*article\.php\?(.*)/);
        var qs = match[1];
        var backwards = false;
        if (step < 0) backwards = true;
        link.setAttribute("selected", "progress");
        function unselect() { link.removeAttribute("selected"); }
        iui.showPageByHref("article.php?"+qs, null, null, null, unselect, backwards);
        return false;
    }
    return false;
}
function goPrev(article_id, feed_id, link) {
    return goToSibling(article_id, feed_id, link, -1);
}
function goNext(article_id, feed_id, link) {
    return goToSibling(article_id, feed_id, link, 1);
}

// Get all the links in the feed. The all_links variable includes the "get more article" link
function linksInFeed(feed_id, all_links) {
    var feed_content = $("feed-"+feed_id);
    var links_raw = feed_content.getElementsByTagName("a");
    if (all_links) return links_raw;
    var links = [];
    // filter the array to remove the "get more articles" link
    // and the "search" link (which is always first)
    for (var i=1 ; i<links_raw.length ; i++) {
        if (links_raw[i].href.match(/.*article\.php\?id=.*/)) {
            links.push(links_raw[i]);
        }
    }
    return links;
}

// Adds the "read" class to all read links in the feed
function markAsRead(feed_id) {
    var links = linksInFeed(feed_id);
    for (var j=0 ; j<links.length ; j++) {
        var match = links[j].href.match(/.*article\.php\?id=(\d+)&.*/);
        if ($("article-"+match[1])) {
            links[j].className = "read";
        }
    }
}

// Go the the articles list and expand the "get more articles" link
function showRestOfFeed(feed_id) {
    var links_raw = linksInFeed(feed_id, true);
    var lastlink = links_raw[links_raw.length - 1];
    if (lastlink.target == "_replace") {
        // It's a "get more articles" link
        iui.showPage($("feed-"+feed_id), true);
        // Mark old items a "read"
        markAsRead(feed_id);
        // Simulate click on the "get more articles" link
        lastlink.setAttribute("selected", "progress");
        function unselect() { lastlink.removeAttribute("selected"); }
        setTimeout(window.scrollTo, 0, 0, 1000);
        iui.showPageByHref(lastlink.href, null, null, lastlink, unselect);
    } else {
        iui.showPage($("home"), true);
    }
}