function submitSearch(event)
{
    var uploadRoot = getUploadRoot(event.target);
    if (!uploadRoot)
        return;
        
    var http_string = "update.php";
    var params = getServerParams(uploadRoot);
    ajax_post(http_string, 
    function(xml) 
    {
        receiveSearchFromServer(uploadRoot, xml);
    }, 
    params);
}

function submitSearchEnter(event)
{
    if (event.keyCode == 13)
        submitSearch(event);
}

// Receive xml from the server, and apply it to syncNode.
function receiveSearchFromServer(syncNode, xml)
{
    // We have received info from the server, so need to update
    // Expect everything to be wrapped in a "result" element.
    if (xml.nodeName != "result" || xml.childNodes == null)
    {
        alert(xmlToString(xml));
        return;
    }
       
    if (xml.getAttribute('status') != 1)
    {
        var newnode = newElement("fieldset", {"upload":"comment"}, 
            xmlToString(xml.firstChild), 
            [
            ["legend", {}, "Server error"],
            ["button", {onmousedown:'cancelForm(event)'}, "Bother."]
            ]);
        syncNode.parentNode.replaceChild(newnode, syncNode);
        return;
    }
    
    var newnode = null;
    
    var cardCount = xml.getAttribute('count');
    var searchString = xml.getAttribute('search');

    // Show results
    var resultArea = document.getElementById('search_result_area');
    resultArea.innerHTML = "";
    
    if (xml.childNodes.length == 0)
    {
        resultArea.appendChild(newElement("text", {}, "No results"));
    }

    for (var i = 0; i < xml.childNodes.length; i++)
    {
        var cardDetails = getCardHTML(xml.childNodes[i]);
        
        var newnode = newElement("tr", {}, null, [["td", {}, null, [
            ["button", {onmousedown:"searchCardSelected(event);"}, null, [["div", {}, xml.childNodes[i].getAttribute('name')], cardDetails]]
            ]
            ]]);
        newnode.firstChild.firstChild.firstChild.nextSibling.style.display = "none";    
        resultArea.appendChild(newnode);
    }
    
} 

function searchCardSelected(event)
{
    var cardname = event.target.childNodes[0];
    if (event.target.childNodes.length == 2)
    {
        // Add the image node and start loading it.
        var newnode = newElement("img", {src:getWizardsUrl(cardname.textContent), onload:"searchCardLoaded(event)", style:"display:none;", loaded:"false"});
        event.target.insertBefore(newnode, event.target.childNodes[1]);
    }
    
    var cardimage = event.target.childNodes[1];
    var cardfulltext = event.target.childNodes[2];
    
    if (cardname.style.display != "none")
    {
        // currently displaying cardname
        cardname.style.display = "none";
        if (cardimage.getAttribute("loaded") == "true")
        {
            cardimage.style.display = "";
        }
        else
        {
            cardfulltext.style.display = "";
        }
    }
    else if (cardimage.style.display != "none")
    {
        cardimage.style.display = "none";
        cardname.style.display = "";
    }
    else
    {
        cardfulltext.style.display = "none";
        cardname.style.display = "";
    }
}

function searchCardLoaded(event)
{
    if (event.target.nextSibling.style.display != "none")
    {
        event.target.style.display = "";
        event.target.nextSibling.style.display = "none";
    }
    event.target.setAttribute("loaded", "true");
}


