var req;

function loadsearch(query) {
var site = document.sitesearchform.site.value;
var start = document.sitesearchform.start.value;
var query = document.sitesearchform.query.value;
var url="/xmlproxy.php?url=http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=sitesearch&query=" + escape(query + " site:" + site) + "&results=5&start=" + start
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = querycomplete;
        req.open("GET", url, true);
        req.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = querycomplete;
            req.open("GET", url, true);
            req.send();
        }
    }
}

function querycomplete() {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            // ...processing statements go here...
		writeResults();
        } else {
            alert("There was a problem retrieving the XML data:\n" + req.statusText);
        }
    }
}

function writeResults() {
   var items = req.responseXML.getElementsByTagName("Result");
   var results = document.getElementById("sitesearchresults");
    while (results.hasChildNodes())
        results.removeChild(results.lastChild);
	var w = document.createElement("DIV");
	w.setAttribute("class","sitesearchnav");
	w.className="sitesearchnav";
	var sty = "";
	if (document.sitesearchform.start.value > 1) {
		sty=sty+"<a href='javascript:document.sitesearchform.start.value=document.sitesearchform.start.value-5;loadsearch();'>&lt;Prev</a>&nbsp;&nbsp;";
	}
	sty=sty+"<a href='javascript:document.sitesearchform.start.value=document.sitesearchform.start.value-0+5;loadsearch();'>Next&gt;";
	w.innerHTML=sty;
	results.appendChild(w);
     for (var i = 0; i < items.length; i++) {
	var s = document.createElement("DIV");
	s.setAttribute("class","sitesearchresult");
	s.className="sitesearchresult";
	var t = document.createElement("DIV");
	t.setAttribute("class","sitesearchresulttitle");
	t.className="sitesearchresulttitle";
	t.innerHTML="<a href='" + getElementTextNS("","Url",items[i],0) + "'>" + getElementTextNS("","Title",items[i],0) + "</a>";
	s.appendChild(t);
	var u = document.createElement("DIV");
	u.setAttribute("class","sitesearchresultsummary");
	u.className="sitesearchresultsummary";
	u.innerHTML=getElementTextNS("","Summary",items[i],0);
	s.appendChild(u);
	var v = document.createElement("DIV");
	results.appendChild(s);
     }
	v.setAttribute("class","poweredbyyahoo");
	v.className="poweredbyyahoo";
	v.innerHTML="Powered by Yahoo!Search<br><a href='http://www.searchguild.com'>Created by SearchGuild</a>";
	results.appendChild(v);

}

function getElementTextNS(prefix, local, parentElem, index) {
    var result = "";
    if (prefix && isIE) {
        // IE/Windows way of handling namespaces
        result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
    } else {
        // the namespace versions of this method 
        // (getElementsByTagNameNS()) operate
        // differently in Safari and Mozilla, but both
        // return value with just local name, provided 
        // there aren't conflicts with non-namespace element
        // names
        result = parentElem.getElementsByTagName(local)[index];
    }
    if (result) {
        // get text, accounting for possible
        // whitespace (carriage return) text nodes 
        if (result.childNodes.length > 1) {
            return result.childNodes[1].nodeValue;
        } else {
            return result.firstChild.nodeValue;    		
        }
    } else {
        return "n/a";
    }
}
