var searchControl;
var searchForm;
var inSearch = false;
var moreSearch = false;
var page = null;
var oldsearch = null;
var selectedTab = null;
var selectedPane = null;
var previewTitle = null;
var previewUrl = null;
var phrases = new Array();

function setup() {
  var index = navigator.userAgent.indexOf("MSIE");
  if (index >= 0) {
    if (navigator.userAgent.charAt(index + 5) < '7') {
      document.getElementById("HeaderBottom").style.backgroundImage = "url()";
      document.getElementsByTagName("body")[0].style.backgroundImage = "url()";
      alert("Here");
    }
  }
      
  searchControl = new GSearchControl(null);

  // add in a full set of searchers
  var options = new GsearcherOptions();
  options.setRoot(document.getElementById("ResultsNews"));  

  options.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);
  searchControl.addSearcher(new GnewsSearch(), options);  

  options = new GsearcherOptions();
  options.setRoot(document.getElementById("ResultsBlog"));  
  options.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);
  searchControl.addSearcher(new GblogSearch(), options);  

  options = new GsearcherOptions();
  options.setRoot(document.getElementById("ResultsVideo"));  
  options.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);
  searchControl.addSearcher(new GvideoSearch(), options);  

  options = new GsearcherOptions();
  options.setRoot(document.getElementById("ResultsWeb"));  
  options.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);
  webSearch = new GwebSearch();
  webSearch.setUserDefinedLabel("Web");
  searchControl.addSearcher(webSearch, options);  

  searchControl.setSearchCompleteCallback(this, onSearchComplete);
  searchControl.setSearchStartingCallback(this, onSearchStarting);
  searchControl.setResultSetSize(GSearch.LARGE_RESULTSET);
  searchControl.setLinkTarget("Page");  

  var drawOptions = new GdrawOptions();
  drawOptions.setDrawMode(GSearchControl.DRAW_MODE_TABBED);
  searchControl.draw(document.getElementById("Input"));
  
  var container = document.getElementById("Input2");
  searchForm = new GSearchForm(true, container);
  searchForm.setOnSubmitCallback(this, function(form) {
    oldsearch = null;
    updateSearch();
    addSearchPhrase(searchForm.input.value);
    return false;
  });
  searchForm.setOnClearCallback(this, function(form) {
    searchForm.input.value = "";
    return false;
  });
  searchForm.input.onkeyup = function(event) {
    updateSearch();
  }
  
  searchControl.setOnKeepCallback(this, function (result) {
    document.getElementById("ContainerHelp").style.display = "none";
    document.getElementById("ContainerClear").style.display = "block";
    
    var url = result.url;
    if (result.GsearchResultClass == GblogSearch.RESULT_CLASS) {
      url = result.postUrl;
    }
    
    var node = document.createElement("div");
    var title = document.createElement("a");
    title.className = "containerContentTitle";
    title.href = result.url;
    title.target = "Page";
    var text = result.title;
    var maxLength = 80;
    if (text.length > maxLength) {
      text = text.substring(0, maxLength - 3) + "...";
    }
    title.innerHTML = text;
    title.title = "Open in Preview";
    node.appendChild(title);
    
    var link = document.createElement("a");
    link.className = "containerContentLink";
    link.href = result.url;
    link.target = "_blank";
    var text = "link";
    if (result.GsearchResultClass == GvideoSearch.RESULT_CLASS) {
      text = "video";
    }
    if (result.GsearchResultClass == GwebSearch.RESULT_CLASS) {
      text = result.visibleUrl;
    }
    if (result.GsearchResultClass == GnewsSearch.RESULT_CLASS) {
      text = result.publisher;
    }
     if (result.GsearchResultClass == GblogSearch.RESULT_CLASS) {
      text = result.blogUrl;
    }
    link.innerHTML = text;
    link.title = "Open in new window";
    node.appendChild(link);

    var savedResults = document.getElementById("ContainerContent");
    savedResults.insertBefore(node, savedResults.firstChild);
    selectBarTab("Container");
  });  
  
  page = top.document.getElementById("Page");
  page.src = "defaultPage.html";
  page.onload = function () {
  }

  selectedTab = document.getElementById("ResultsWebTab");
  selectedPane = document.getElementById("ResultsWeb");

  selectedBarTab = document.getElementById("HistoryTab");
  selectedBarPane = document.getElementById("History");

}

function search() {
  var query = searchForm.input.value;
  if (query.length == 0) {
    searchControl.clearAllResults();
    oldsearch = null;
    onSearchComplete();
  }
  else {
    if (oldsearch != query) {
      document.getElementById("Loading").style.visibility = "visible";  
      document.getElementById("ResultsPane").style.backgroundColor = "#F0F0F0";  
      document.getElementById("ResultsTitle").innerHTML = "Searching...";
      searchControl.setLinkTarget("Page");  
      searchControl.execute(query);
      oldsearch = query;
    }  
  }
}

function updateSearch() {
  if (inSearch) {
    moreSearch = true;
  }
  else {    
    search();
  }
}

function onSearchComplete(sc, searcher) {
  document.getElementById("Loading").style.visibility = "hidden";  
  document.getElementById("ResultsPane").style.backgroundColor = "white";  
  if (oldsearch) {
    document.getElementById("ResultsTitle").innerHTML = "Results for <i>" + oldsearch + "</i>";
  }
  else {
    document.getElementById("ResultsTitle").innerHTML = "No Results";
  }  
  inSearch = false;
  if (moreSearch) {
    moreSearch = false;
    search();    
  }
}

function onSearchStarting(sc, searcher, query) {
  inSearch = true;
}

function addSearchPhrase(phrase) {
  document.getElementById("HistoryHelp").style.display = "none";
  document.getElementById("HistoryClear").style.display = "block";
  var content = document.getElementById("HistoryContent");

  for (var i = 0; i < phrases.length; i++) {
  	if (phrases[i] == phrase) {
  	  content.removeChild(content.childNodes[i]);
  	  break;
  	}
  }
  
  phrases.unshift(phrase);
  
  var node = document.createElement("div");
  var link = document.createElement("a");
  link.className = "historyContentPhrase"
  //link.href = "";
  link.onclick = function() {
    searchFromHistory(this.phrase);
  }  
  link.phrase = phrase;
  link.appendChild(document.createTextNode(phrase));
  link.title = "Search for '" + phrase + "'";
  node.appendChild(link);
  
  content.insertBefore(node, content.firstChild); 
  selectBarTab("History");
}

function searchFromHistory(phrase) {
  searchForm.input.value = phrase;
  search();
}

function selectTab(key) {
  selectedTab.className = "resultsTab resultsTabUnselected";
  selectedPane.className = "resultsUnselected";

  var tab = document.getElementById("Results" + key + "Tab");
  tab.className = "resultsTab resultsTabSelected";
  selectedTab = tab;
  var pane = document.getElementById("Results" + key);
  pane.className = "resultsSelected";
  selectedPane = pane;
}    

function selectBarTab(key) {
  selectedBarTab.className = "resultsTab resultsTabUnselected";
  selectedBarPane.className = "resultsUnselected";

  var tab = document.getElementById(key + "Tab");
  tab.className = "resultsTab resultsTabSelected";
  selectedBarTab = tab;
  var pane = document.getElementById(key);
  pane.className = "resultsSelected";
  selectedBarPane = pane;
}    

function clearContainer() {
  document.getElementById("ContainerHelp").style.display = "block";
  document.getElementById("ContainerClear").style.display = "none";
  document.getElementById("ContainerContent").innerHTML = "";
}

function clearHistory() {
  document.getElementById("HistoryHelp").style.display = "block";
  document.getElementById("HistoryClear").style.display = "none";
  document.getElementById("HistoryContent").innerHTML = "";
}

  