// TODO: Competency Links should open in a new window.

function keySearch(event) {
	if (event.keyCode == 13) {
		do_search();
	}
}

function elem(id) {
    return document.getElementById(id);
}

function setHTML(id, html) {
    elem(id).innerHTML = html;
}

function getValue(id) {
    return elem(id).value;
}

function gridHTML(results, func_name) {
    var html = '';
    for(var x in results) {
        var result = results[x];
        var call = 'javascript: ' + func_name + '("' + result.filename + '");';
        if(result.url == '') {
        	html += result.filename + "<br/>";
        } else {
        	if (result.url.indexOf(".") > -1) {
        		html += "<a href='" + result.url + "' target='_blank'>" + result.text + "</a> <a href='" + call + "'><img src='img/Details.jpg' border='0'/></a><br/>";        		
        	} else {
        		html += result.text + " <a href='" + call + "'><img src='img/Details.jpg' border='0'/></a><br/>";
        	}
        }
    }
    return html;
}

function detailLink(url, text, id, func) {
	if (url == '') {
		html = text + " <a href=\"javascript: " + func + "('" + id + "')\"><img src='img/Details.jpg' border='0'/></a><br/>";
	} else {
		html = "<a href='" + url + "'>" + text + "</a> <a href=\"javascript: " + func + "('" + id + "')\"><img src='img/Details.jpg' border='0'/></a><br/>";
	}
	return html;
}

// Build an accordion instead of just links
function gridHTMLSmall(results, func_name) {
    var html = '';
    for(var x in results) {
        var result = results[x];
        if (result.filename == '') {
        	html += result.text + "<br/>";
        } else {
        	html += detailLink(result.url, result.text, result.filename, func_name);
        }
    }
    return html;
}

function updateLOMGrid(pageNum) {
    Searcher.lomPage(pageNum, function(results) {
        setLOMDivs('', '', '');
        setHTML("tblLOM", gridHTML(results, "updateLOMDetails")); 
    });
}

function updateCompGrid(pageNum) {
    Searcher.compPage(pageNum, function(results) {
        setHTML("tblComp", gridHTML(results, "updateCompDetails"));
    });
}

function setLOMDivs(title, author, desc, competencies) {
    setHTML("lomTitle", title);
    setHTML("lomAuthor", author);
    setHTML("lomDescription", "<pre wrap>" + desc + "</pre>");
    setHTML("lomCompetencies", gridHTMLSmall(competencies, "switchToComp"));
}

function setCompDivs(title, desc, loms, parents, children) {
    setHTML("compTitle", title);
    setHTML("compDescription", desc);
    setHTML("compLOMs", gridHTMLSmall(loms, "switchToLOM"));
    setHTML("compParents", gridHTMLSmall(parents, "updateCompDetails"));
    setHTML("compChildren", gridHTMLSmall(children, "updateCompDetails"));
}

function updateLOMDetails(db_location) {
    Searcher.lomDetails(db_location, function(doc) {
        setLOMDivs(doc.title, doc.author, doc.description, doc.competencies);
    });
}

function updateCompDetails(db_location) {
    Searcher.compDetails(db_location, function(doc) {
    	setCompDivs(doc.title, doc.description, doc.loms, doc.parents, doc.children);
    });
}

// draws the navigation panel
function navHTML(pages, updater) {
    var html = '';
    if (pages > 1) {
        for(var i = 1; i <= pages; i++) {
            html += '<a href="#" onclick="' + updater + '(' + i + ');">' + i + '</a> ';
        }
    }
    return html;
}

function do_search() {
    var query = getValue("txtSearch");
    setLOMDivs('', '', '');
    setCompDivs('', '', '');
    // mainPanel.setSelectedIndex(0); - may annoy user if focussing on only comps
    
    Searcher.search(query, function(count) {
        updateLOMGrid(1);
        updateCompGrid(1);
        setHTML("navBarLOM", navHTML(count.lomCount, "updateLOMGrid"));
        setHTML("navBarComp", navHTML(count.compCount, "updateCompGrid"));
        setFeedHTML(query);
    });
}

function setFeedHTML(query) {
	
	query = escape(query)
	
	links =  'Monitor this search<br/>'
	links +=  '<a href="/Merg/FeedServlet?format=rss&feed=' + query + '" target="_blank">'
	links += '<img border="0" src="/Merg/img/rss.png"/>'
	links += '</a> <a href="/Merg/FeedServlet?format=atom&feed=' + query + '" target="_blank">'
	links += '<img border="0" src="/Merg/img/atom.gif"/></a>'
	
	setHTML("feedLOM", links);
	setHTML("feedComp", links);
}

function switchToLOM(db_location) {
    updateLOMDetails(db_location);
    mainPanel.setSelectedIndex(0);
}

function switchToComp(db_location) {
    updateCompDetails(db_location);
    mainPanel.setSelectedIndex(1);
}