// JavaScript Document
// callGoogle.js
// Search Bubbler prototype
    
// Cross platform xmlhttprequest
// Create xmlhttprequest object
var xmlhttpGoogle = null;

function callGoogle(searchstr) 
{
    if (window.XMLHttpRequest) {
    xmlhttpGoogle = new XMLHttpRequest();
    //make sure that Browser supports overrideMimeType
    if ( typeof xmlhttpGoogle.overrideMimeType != 'undefined') { 
      xmlhttpGoogle.overrideMimeType('text/xml'); }
    } else if (window.ActiveXObject) {
        xmlhttpGoogle = new ActiveXObject("Microsoft.XMLHTTP");
    }  else {
        alert('Perhaps your browser does not support xmlhttprequests?');
    }
       
    // Create an HTTP GET request
    xmlhttpGoogle.open("POST", "http://api.google.com/search/beta2",true);
 
    // Set the callback function
    xmlhttpGoogle.onreadystatechange = function() 
      {
      if(xmlhttpGoogle.readyState == 4 && xmlhttpGoogle.status == 200) {
        alert(xmlhttpGoogle.responseText)
        parseGoogleResult(xmlhttpGoogle.responseText);
      } else {
        document.getElementById('resultlist').innerHTML =  "Loading...";
        //alert("loading");
        }
      };
    xmlhttpGoogle.setRequestHeader("Man", "POST http://api.google.com/search/beta2 HTTP/1.1")
    xmlhttpGoogle.setRequestHeader("MessageType", "CALL")
    xmlhttpGoogle.setRequestHeader("Content-Type", "text/xml")

    // Make the actual request
    xmlhttpGoogle.send("<?xml version='1.0' encoding='UTF-8'?>"+"\n\n"+"<SOAP-ENV:Envelope"+
      ' xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"'+
      ' xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"'+
      ' xmlns:xsd="http://www.w3.org/1999/XMLSchema">'+
      '<SOAP-ENV:Body><ns1:doGoogleSearch'+
      ' xmlns:ns1="urn:GoogleSearch"'+
      ' SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">'+
      '<key xsi:type="xsd:string">um5PZvNQFHJ7Dw0kDa7kkOmIWq3UdmT4</key> <q'+
      ' xsi:type="xsd:string">'+searchstr+'</q> <start'+
      ' xsi:type="xsd:int">0</start> <maxResults'+
      ' xsi:type="xsd:int">' + 10 + '</maxResults> <filter'+
      ' xsi:type="xsd:boolean">true</filter> <restrict'+
      ' xsi:type="xsd:string"></restrict> <safeSearch'+
      ' xsi:type="xsd:boolean">true</safeSearch> <lr'+
      ' xsi:type="xsd:string"></lr> <ie'+
      ' xsi:type="xsd:string">latin1</ie> <oe'+
      ' xsi:type="xsd:string">latin1</oe>'+
      '</ns1:doGoogleSearch>'+
    '</SOAP-ENV:Body></SOAP-ENV:Envelope>');
  
}

// parseGoogleResult
function parseGoogleResult(parseMeString) {
      var parser = new DOMImplementation();
		  var domDoc = parser.loadXML(parseMeString);
   	   var tagArray = new Array();
      var resliststr = "";
      var currResult;
      var title, hurl, summary;
      

		  if (domDoc == null){
			  alert("There was a problem parsing search results.");
			  return;
		    }
	
		  var docRoot = domDoc.getDocumentElement();
		  
      document.getElementById('resultTotal').innerHTML = "About " + docRoot.getElementsByTagName("estimatedTotalResultsCount").item(0).getFirstChild().getNodeValue() + " results available";
		  
      var results = docRoot.getElementsByTagName("resultElements").item(0).getElementsByTagName("item");
			
      filteredResults = new Array();
			origResults = new Array();
      document.getElementById('refinedCount').innerHTML = results.length + " matches shown";
			document.getElementById('resultCount').innerHTML = " from " + results.length + " results returned";
      
			for (var i=0; i < results.length; i++) {
          currResult = results.item(i);
          
          title = currResult.getElementsByTagName("title").item(0).getFirstChild().getNodeValue();
					hurl = currResult.getElementsByTagName("URL").item(0).getFirstChild().getNodeValue();
					summary = currResult.getElementsByTagName("snippet").item(0).getFirstChild();
          //alert(i + " " + title + " " + hurl + " " + "SUMMARY: " +summary);
          
          if (summary != null) {
            summary = summary.getNodeValue();
           // reslisttext += " " + title + " " + summary;
            uniqueTags(tagArray, title + " " + summary);
            }
          else { 
            uniqueTags(tagArray, title);
          //  reslisttext += " " + title;
            summary = title;
            }
          filteredResults[i] = {title:title, hurl:hurl, summary:summary};
          origResults[i] = filteredResults[i];
                           
					resliststr += "<a target=_blank style='font-size:14px' href=" + hurl + ">" +  title + "</a><br />" + summary + "<br /><span style='color:green'>" +  hurl+ "</span><br /><br />" ;
       	
          }
	   document.getElementById('resultlist').innerHTML = resliststr;
	   //callTermExtraction(reslisttext);
	   
	   tagArray = topNTags(numTagsToDisplay, tagArray);
	   //tagArray = tagArray.sort();
	   
	   document.getElementById('tagscell').innerHTML = writeTagSpans(tagArray);
	   createTagDraggables(tagArray);
}


