function google() {
  function ac() {
    // this.Suggest_apply = sendRPCDone;
    this.h = function(args) { sendRPCDone("none",args[0],args[1],"none") };
  }
  this.ac = new ac();
}

window.google = new google();

function addRPCScript(searchValue) {
  var script = document.body.lastChild;
  if(script.id == "RPCScript")
    document.body.removeChild(script);
  script = document.body.appendChild(document.createElement('script'));
  script.id = "RPCScript";
  script.type = "text/javascript";
  script.src = "http://www.google.com/complete/search?hl=en&js=true&qu=" + escape(searchValue);
  return false;
}

var cloudSource = "general";
var cs;
var source = "google";
var amazon_category = "books";
var click_action;
var keyword;
var controlsHTML = "<div style='background-color:blue;color:white;'><form name='control'><input type='radio' name='source' onclick='setSource(\"google\");' value='google'> Google Suggest<br><input type='radio' name='source' onclick='setSource(\"amazon\");' value='amazon'>Amazon <select name='amazon_category' onchange='setAmazonCategory();'><option value='apparel'>Apparel &amp; Accessories</option><option value='automotive'>Automotive</option><option value='baby'>Baby</option><option value='beauty'>Beauty</option><option value='books'>Books</option><option value='photo'>Camera &amp; Photo</option><option value='wireless-phones'>Cell Phones &amp; Service</option><option value='classical'>Classical Music</option><option value='pc-hardware'>Computers</option><option value='videogames'>Computer &amp; Video Games</option><option value='dvd'>DVD</option><option value='electronics'>Electronics</option><option value='gourmet'>Gourmet Food</option><option value='grocery'>Grocery</option><option value='garden'>Home &amp; Garden</option><option value='hpc'>Health &amp; Personal Care</option><option value='industrial'>Industrial &amp; Scientific</option><option value='jewelry'>Jewelry &amp; Watches</option><option value='kitchen'>Kitchen &amp; Housewares</option><option value='magazines'>Magazine Subscriptions</option><option value='universal'>Miscellaneous</option><option value='music'>Music</option><option value='mi'>Musical Instruments</option><option value='software'>Software</option><option value='sporting'>Sports &amp; Outdoors</option><option value='tools'>Tools &amp; Hardware</option><option value='toys'>Toys &amp; Games</option><option value='amazontv'>Unbox Video Downloads</option><option value='vhs'>VHS</option></select></form></div>";

function setSource(src) {
  source = src;
  if(source == 'google') {
    showGoogleData();
  }
  else if(source == 'amazon') {
    showAmazonData();
  }
}

function setDefaultSource() {
  var sources = document.control.source;
  for(var i=0;i<sources.length;i++)
    if(sources[i].value == source) {
      sources[i].checked = true;
      break;
    }
}

function setDefaultAmazonCategory() {
  var cats = document.control.amazon_category.options;
  for(var i=0;i<cats.length;i++) {
    if(cats[i].value == amazon_category) {
      cats.selectedIndex = i;
      break;
    }
  }
}

function setDefaults() {
  setDefaultSource();
  setDefaultAmazonCategory();
}

function setAmazonCategory() {
  amazon_category = document.control.amazon_category.options[document.control.amazon_category.selectedIndex].value;
  if(source == 'amazon')
    showAmazonData();
}

function showAmazonData() {
  var suggestArea = document.getElementById("suggestarea");
  var html = "<iframe src='http://rcm.amazon.com/e/cm?t=itsablo-20&o=1&p=12&l=st1&mode="+amazon_category+"&search="+escape(keyword)+"&fc1=000000&lt1=&lc1=3366FF&bg1=FFFFFF&f=ifr' marginwidth='0' marginheight='0' width='300' height='250' border='0' frameborder='0' style='border:none;' scrolling='no'></iframe>";
  suggestArea.innerHTML = "<center>"+html+"</center>"+controlsHTML;
  setDefaults();
}

function showGoogleData() {
  addRPCScript(keyword);
  setDefaults();
}

function getEventSource(event) {
  event = getEvent(event);
  var target;
  if(event.target)
    target = event.target;
  else if(event.srcElement)
    target = event.srcElement;
  if (target.nodeType == 3) // defeat Safari bug
    target = target.parentNode;
  return target;
} 

function a(event,searchValue) {
  cs = cloudSource;
  keyword = searchValue;
  if(click_action == "delete") {
    var target = getEventSource(event);
    if(target.previousSibling)
      target.previousSibling.nodeValue = target.previousSibling.nodeValue.substring(0,target.previousSibling.nodeValue.length-1);
    if(target.nextSibling) {
      if(target.nextSibling.nodeName == '#text')
        target.nextSibling.nodeValue = " ";
      else
        target.parentNode.removeChild(target.nextSibling);
    }
    var pnode = target.previousSibling;
    target.parentNode.removeChild(target);
    return false;
  }
  if(source == "amazon") {
    showPopup(event,'suggestarea',false);
    showAmazonData();
    return false;
  }
  else {
    var suggestArea = document.getElementById("suggestarea");
    suggestArea.innerHTML = "Loading ...";
    showPopup(event,'suggestarea',false);
    return addRPCScript(searchValue);
  }
}

function n(event,searchValue) {
  window.open('http://news.google.com/news?q='+escape(searchValue),'news');
  return false;
}

function sendRPCDone(frame,word,words,whatisthis) {
  var suggestArea = document.getElementById("suggestarea");
  var html = "";
  html += "<table style='border: 1px solid orange;'>";
  var url = "http://www.google.com/search?hl=en&q=";
  for(var i=1;i<words.length;i++) {
    html += "<tr><td nowrap>";
    html += "<a href='";
    html += url+escape(words[i][0])+"' target='_new'>"+words[i][0]+"</a></td>";
    html += "<td align='right' nowrap>"+words[i][1]+"</td></tr>";
  }
  if(words.length == 0)
    html += "<tr><td colspan='2'>No suggestions found for <a href='"+url+escape(word)+" target='_new'>"+word+"</a></td></tr>";
  else
    html += "<tr><td colspan='2' align='center'>data by <a href='http://labs.google.com/suggest/' target='_new'>google suggest</a></td></tr>";
  html += "</table>";
  suggestArea.innerHTML = "<center>"+html+"</center>"+controlsHTML;
  setDefaults();
}

