var m_strSearchTerm = '';

function Search(p_strSearchTerm, p_intStart) {
    if (p_strSearchTerm == null || p_strSearchTerm.length == 0) return;
    m_strSearchTerm = p_strSearchTerm;
    document.getElementById('SearchedAtString').innerHTML = "'" + m_strSearchTerm + "'";
    if (p_intStart == null) p_intStart = 0;
    var l_objScript = document.getElementById('googleSearch');
    var l_strSrc = "http://ajax.googleapis.com/ajax/services/search/web";
    l_strSrc += '?q=' + m_strSearchTerm + ' site:www.nirov.nl -filetype:pdf';
    l_strSrc += "&v=1.0"; //protocol version number
    l_strSrc += "&userip=" + m_strUserIp; //ip address of end-user
    l_strSrc += "&rsz=large"; //small == 4 results, large == 8 results
    l_strSrc += "&hl=nl"; //host language
    l_strSrc += "&key=" + m_strGoogleKey; //application's key for referer header
    l_strSrc += "&start=" + p_intStart; //start index of the first search result
    l_strSrc += "&callback=GoogleSearchCallback"; //javascript function to call
    l_objScript.src = l_strSrc;
}
 
function GoogleSearchCallback(p_objJSON) {
    BindElementToJSON(document.getElementById("Result"), p_objJSON.responseData.results);
    GetPageLinkJSON(p_objJSON);
}
 
function GetJSONValue(p_jsonData, p_strKey) {
    if (p_jsonData == null || p_strKey == null) return null;
    var l_arrKey = p_strKey.split('.');
    var l_jsonData = p_jsonData;
    for (l_strKey in l_arrKey) {
        l_strKey = l_arrKey[l_strKey];
        if (l_jsonData == null) break;
        if (l_strKey.length == 0) {
            l_jsonData = l_jsonData[0];
        } else if (/#\d+/.test(l_strKey)) {
            l_jsonData = l_jsonData[parseInt(l_strKey.substr(1))];
        } else {
            l_jsonData = l_jsonData[l_strKey];
        }
    }
    return l_jsonData;
}
 
function SetNodeValueFromJSON(p_objNode, p_jsonData) {
    var l_strId = p_objNode.id;
    if (l_strId != null) {
        var l_jsonData = GetJSONValue(p_jsonData, l_strId)
        if (l_jsonData != null) {
            var l_strTagname = p_objNode.tagName;
            if (l_strTagname != null) {
                l_strTagname = l_strTagname.toLowerCase();
                switch (l_strTagname) {
                    case "a":
                        p_objNode.href = decodeURIComponent(l_jsonData);
                        break;
                    case "div":
                        p_objNode.innerHTML = decodeURIComponent(l_jsonData);
                        break;
                    case "img":
                        p_objNode.src = l_jsonData;
                        break;
                    default:
                        break;
                }
            }
        }
    }
}
 
function SetNodeValuesFromJSON(p_objNode, p_jsonData) {
    SetNodeValueFromJSON(p_objNode, p_jsonData);
    var l_intLength = p_objNode.childNodes.length;
    for (var l_intIndex = 0; l_intIndex < l_intLength; l_intIndex++) {
        var l_objNode = p_objNode.childNodes[l_intIndex];
        SetNodeValuesFromJSON(l_objNode, p_jsonData);
    }
}
 
function BindElementToJSON(p_objElement, p_jsonData) {
    p_objElement.style.display = 'block';
    var l_objParentNode = p_objElement.parentNode;
    for (var l_intIndex = l_objParentNode.childNodes.length - 1; l_intIndex >= 0; l_intIndex--) {
        var l_objChildNode = l_objParentNode.childNodes[l_intIndex];
        if (l_objChildNode.tagName == p_objElement.tagName && l_objChildNode.id == p_objElement.id && l_objChildNode != p_objElement) l_objParentNode.removeChild(l_objChildNode);
    }
    for (l_Key in p_jsonData) {
        var l_jsonRecord = p_jsonData[l_Key];
        var l_objElement = p_objElement.cloneNode(true);
        l_objParentNode.insertBefore(l_objElement, p_objElement);
        SetNodeValuesFromJSON(l_objElement, l_jsonRecord);
    }
    p_objElement.style.display = 'none';
}


function GetPageLinkJSON(p_objJSON) {
    var l_intCurrentPage = p_objJSON.responseData.cursor.currentPageIndex + 1;    
    var l_intCount = 1
    var l_intResults = p_objJSON.responseData.cursor.estimatedResultCount;
    var l_intTotalPages = Math.ceil(l_intResults / 8);
    var l_strMoreResults = p_objJSON.responseData.cursor.moreResultsUrl.replace('start=0', 'start=64');
    
    //Pagelinks
    for (l_intCount = l_intCount; l_intCount<=l_intTotalPages && l_intCount<=8;l_intCount++) {
        document.getElementById('PageLink_'+l_intCount).style.display = 'inline';
    }
    for (l_intCount = l_intCount;l_intCount<=8;l_intCount++) {
        document.getElementById('PageLink_'+l_intCount).style.display = 'none';    
    }
    
    //Read more link
    if (l_intTotalPages > 8) {
        document.getElementById('MoreLink').href = l_strMoreResults;
        document.getElementById('PageLink_More').style.display = 'inline';
    } else {
        document.getElementById('PageLink_More').style.display = 'none';
    }
    document.getElementById('PreviousNext').style.display = 'block';
    
    if (!l_intResults) {
        document.getElementById('FirstResultOnPage').innerHTML = 0;
        document.getElementById('LastResultOnPage').innerHTML = 0;
        document.getElementById('TotalPages').innerHTML = 0;
    } else {
        document.getElementById('FirstResultOnPage').innerHTML = ((l_intCurrentPage - 1) * 8) + 1;
        document.getElementById('LastResultOnPage').innerHTML = Math.min(l_intCurrentPage * 8, l_intResults);
        document.getElementById('TotalPages').innerHTML = l_intTotalPages;
    }
}
