
function buildPaginator(xmldata) {
    
    var searchResults = dojo.byId('searchResults');

    domUl = document.createElement('ul');
    domUl.setAttribute('class', 'pageSelector');

    var domLi = document.createElement('li');
    var tmp = dojo.query("result pageprev", xmldata);
    var prev = (tmp && tmp[0]) ? tmp[0].firstChild.nodeValue : '';
    if (prev) {
        var domA = document.createElement('a');
        var domText = document.createTextNode('Forrige');
        dojo.connect(domA, 'onclick', updateArticleSearch);
        domA.startPage = prev;
        domA.preventDefault = true;
        domA.appendChild(text);
        domLi.appendChild(domA);
    }
    domUl.appendChild(domLi);

    var pages = dojo.query("result pages", xmldata)[0];
    for (var i=0; i < pages.childNodes.length; i++) {
        var page = pages.childNodes[i];

        var tmp = dojo.query("name", page);
        var name = (tmp && tmp[0]) ? tmp[0].firstChild.nodeValue : '';
        var tmp = dojo.query("start", page);
        var start = (tmp && tmp[0]) ? tmp[0].firstChild.nodeValue : '';
        var tmp = dojo.query("selected", page);
        var selected = (tmp && tmp[0]) ? tmp[0].firstChild.nodeValue : '';

        var domLi = document.createElement('li');
        var domA = document.createElement('a');
        var text = document.createTextNode(name);
        domA.appendChild(text);
        domA.preventDefault = true;
        domA.startPage = start;
        if (selected)
            domA.className = 'selected';

        dojo.connect(domA, 'onclick', updateArticleSearch);

        domLi.appendChild(domA);
        domUl.appendChild(domLi);
    }

    var domLi = document.createElement('li');
    var tmp = dojo.query("result pagenext", xmldata);
    var next = (tmp && tmp[0]) ? tmp[0].firstChild.nodeValue : '';
    if (next) {
        var domA = document.createElement('a');
        var text = document.createTextNode('Neste');
        dojo.connect(domA, 'onclick', updateArticleSearch);
        domA.startPage = next;
        domA.preventDefault = true;
        domA.appendChild(text);
        domLi.appendChild(domA);
    }
    domUl.appendChild(domLi);

    searchResults.appendChild(domUl);
}

function buildPreambleTable(xmldata) {
    var preambles = dojo.query("return preambles", xmldata)[0];
    var searchResults = dojo.byId('searchResults');
    searchResults.innerHTML = "";

    var numHits = dojo.query("result resulthits", xmldata)[0].firstChild.nodeValue;
    var start = dojo.query("result resultstart", xmldata)[0].firstChild.nodeValue;
    var end = dojo.query("result resultend", xmldata)[0].firstChild.nodeValue;


    var domP = document.createElement('p');
    var text = document.createTextNode("Fant " + numHits + " treff.  Viser " + start + " - " + end + ".");
    domP.appendChild(text);
    searchResults.appendChild(domP);

    var domTable = document.createElement('table');
    var domTHead = document.createElement('thead');
    var domTBody = document.createElement('tbody');
    var domTr = document.createElement('tr');

    var domTh = document.createElement('th');
    var text = document.createTextNode("");
    domTh.appendChild(text);
    domTr.appendChild(domTh);
    var domTh = document.createElement('th');
    var text = document.createTextNode("Tittel");
    domTh.appendChild(text);
    domTr.appendChild(domTh);
    var domTh = document.createElement('th');
    var text = document.createTextNode("Dato");
    domTh.appendChild(text);
    domTr.appendChild(domTh);
    domTHead.appendChild(domTr);

    for (var i=0; i < preambles.childNodes.length; i++) {
        var preamble = preambles.childNodes[i];
        
        var tmp = dojo.query("headline", preamble);
        var headline = (tmp && tmp[0]) ? tmp[0].firstChild.nodeValue : '';
        var tmp = dojo.query("articleurl", preamble);
        var articleurl = (tmp && tmp[0]) ? tmp[0].firstChild.nodeValue : '';
        var tmp = dojo.query("text", preamble);
        var text = (tmp && tmp[0]) ? tmp[0].firstChild.nodeValue : '';
        var tmp = dojo.query("published", preamble);
        var published = (tmp && tmp[0]) ? tmp[0].firstChild.nodeValue : '';
        var tmp = dojo.query("articletype", preamble);
        var articletype = (tmp && tmp[0]) ? tmp[0].firstChild.nodeValue : '';
        var tmp = dojo.query("imageurl", preamble);
        var imageurl = (tmp && tmp[0]) ? tmp[0].firstChild.nodeValue : '';

        var domTr = document.createElement('tr');

        var domTd = document.createElement('td');
        var text = document.createTextNode(articletype);
        domTd.appendChild(text);
        domTr.appendChild(domTd);
        var domTd = document.createElement('td');
        var domA = document.createElement('a');
        domA.setAttribute("href", articleurl);
        var domImg = document.createElement('img');
        domImg.setAttribute('src', imageurl);
        domImg.setAttribute('width', 60);
        domImg.setAttribute('height', 40);
        domA.appendChild(domImg);
        var domText = document.createElement('h3');
        var text = document.createTextNode(headline);
        domText.appendChild(text);
        domA.appendChild(domText);
        domTd.appendChild(domA);
        domTr.appendChild(domTd);
        var domTd = document.createElement('td');
        var text = document.createTextNode(published);
        domTd.appendChild(text);
        domTr.appendChild(domTd);

        domTBody.appendChild(domTr);
    }
    domTBody.appendChild(domTr);
    domTable.appendChild(domTHead);
    domTable.appendChild(domTBody);
    searchResults.appendChild(domTable);
}

function parseArticleSearch(response, ioArgs) {
    if (response) {
        buildPreambleTable(response);
        buildPaginator(response);
    }
}

function updateArticleSearch(evt) {
    var searchResults = dojo.byId('searchResults');
    var searchField = dojo.byId('preambleSearchField');
    searchResults.innerHTML = "<img src='http://static.tek.raw.no/images/main/spinner.gif' alt='Laster..' />";
    
    if (evt.target.startPage) 
        dojo.byId('preambleSearchStart').value = evt.target.startPage;

    if (searchField.value == 'Søk') 
        searchField.value = '';

    document.location.hash = dojo.formToQuery();
    dojo.xhrGet({
        url: '?module=TekArticleSearch&service=Search',
        handleAs: 'xml',
        timeout: 10000,
        handle: parseArticleSearch,
        form: dojo.byId('preambleSearchForm')
    });
}

/*
 * Because we hide our checkboxes with visibility: hidden, IE fails to check
 * the checkbox via a click on an associated <label>-tag so we have to do this
 * the old manual way.  We persume the <label> and <input type=checkbox> share
 * the same parent-node.
 */
function toggleCheckbox(evt)  {
    var label = evt.target;
    var checkbox = label.parentNode.getElementsByTagName('input')[0];

    if (dojo.hasClass(label, 'checked')) {
        dojo.removeClass(label, 'checked');
        checkbox.checked = false;
    } else {
        dojo.addClass(label, 'checked');
        checkbox.checked = true;
    }
}

/*
 * Function for converting checkbox + label to just the label with 
 * an added 'checked' class
 */
/*
function hideCheckboxes() {
    var elements = dojo.byId('preambleSearchForm');

    for (var i=0; i < elements.length; i++) {
        if (elements[i].type == 'checkbox') {
            var label = elements[i].parentNode.getElementsByTagName('label')[0];
            if (label) {
                elements[i].style.visibility = 'hidden';
                if (elements[i].checked) {
                    dojo.addClass(label, 'checked');
                }

                dojo.connect(label, 'onclick', toggleCheckbox);
                dojo.connect(label, 'onclick', updateArticleSearch);
            }
        }
    }
}
*/



/*
 * Clear search field of our own inserted message.
 */ 
function onSearchSubmit(evt) {
    var searchField = dojo.byId("preambleSearchField");

    if (searchField.value == 'Søk') {
        searchField.value = '';
    }
}

function onSearchFieldBlur(evt) {
    if (evt.target.value == '') evt.target.value = 'Søk'
}

function onSearchFieldFocus(evt) {
    if (evt.target.value == 'Søk') 
        evt.target.value = ''; 
    else 
        evt.target.select();
}

function onSearchFieldKeypress(evt) {
    preambleSearchFieldX = dojo.byId('preambleSearchFieldX');

    if (evt.target.value != '') {
        preambleSearchFieldX.style.visibility = 'visible';
    }
}

function onSearchFieldXClick(evt) {
    var preambleSearchField = dojo.byId('preambleSearchField');
    preambleSearchField.value = ''; 
    preambleSearchField.focus();
    evt.target.style.visibility = 'hidden';
}

function initForm() {
/*
    dojo.require("doox.dom");
    var preambleSearch = dojo.byId("preambleSearch");
    var preambleSearchField = dojo.byId("preambleSearchField");
    var preambleSearchFieldX = dojo.byId("preambleSearchFieldX");
    dojo.connect(preambleSearch, "onsubmit", onSearchSubmit);
    dojo.connect(preambleSearchField, "onfocus", onSearchFieldFocus);
    dojo.connect(preambleSearchField, "onblur", onSearchFieldBlur);
    dojo.connect(preambleSearchField, "onkeypress", onSearchFieldKeypress);
    dojo.connect(preambleSearchFieldX, "onclick", onSearchFieldXClick);
*/
//    preambleSearchField.value = 'Søk';

    contractExpandableLists();
}

function findSiblingByType(node, type) {
    while (node.nodeName != type)
        node = node.nextSibling;

    return node;
}

function showExpandableList(evt) {
    var elem = evt.target;
    debugA = elem;
    var list = findSiblingByType(elem.parentNode, 'UL');
    
    elem.parentNode.innerHTML = '';
    list.style.display = 'block';
}

function expandExpandableList(evt) {
    expandableList = evt.target.parentNode.parentNode;
    var listItems = expandableList.getElementsByTagName('li');

    for (var i = 0; i < listItems.length; i++) {
        var listItem = listItems[i];

        if (!dojo.hasClass(listItem, "popular")) {
            listItem.style.display = 'block';
        }
    }

    expandableList.removeChild(expandableList.lastChild);
}

function contractExpandableLists() {
    var expandableLists = dojo.query('ul.expandableList');
    for (var i = 0; i < expandableLists.length; i++) {
        var expandableList = expandableLists[i];
        var listItems = expandableList.getElementsByTagName('li');

        for (var j = 0; j < listItems.length; j++) {
            var listItem = listItems[j];

            if (!dojo.hasClass(listItem, "popular")) {
                listItem.style.display = 'none';
            }
        }

        var domLi = document.createElement('li');
        var domA = document.createElement('a');
        var text = document.createTextNode('Vis alle');
        domA.appendChild(text);
        domA.style.cursor = 'pointer';
        domLi.appendChild(domA);
        expandableList.appendChild(domLi);

        dojo.connect(domA, 'onclick', expandExpandableList);
    }
}

dojo.addOnLoad(initForm);

/*
legend dato 

 onclick="this.parentNode.childNodes[3].style.display = (this.parentNode.childNodes[3].style.display == 'block') ? 'none' : 'block'"
*/
