var g_init = 0;
var g_media_width = 416;
var g_media_height = 234;
var g_media_thumb_width = 120;
var g_media_thumb_height = 68;


function get_url_vars() {
   var map = {};
   var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
   map[key] = value;
   });
   return map;
}

function image_sizes(){
   var x = screen.width;
   var y = screen.height;
   var padding_x = 0;
   g_media_width = ((x*0.75)*0.36);
//   padding_x = g_media_width * 0.1;
   g_media_width -= padding_x;
   g_media_height = (9 * g_media_width)/16;
   var video_results = document.getElementById('video_results');
   var image_results = document.getElementById('image_results');
   var video_player = document.getElementById('playerContainer');
   var image_player = document.getElementById('imageContainer');
   g_media_height = Math.floor(g_media_height);
   g_media_width = Math.floor(g_media_width);
   g_media_thumb_width = Math.floor((g_media_width/3.25));
   g_media_thumb_height = Math.floor((g_media_height/3.25));

   image_results.style.width = video_results.style.width = image_player.style.width = video_player.style.width = g_media_width+'px';
   image_player.style.height = video_player.style.height = g_media_height+'px';

}
function show_twitter_results(data) {
  var results = data.results;
  var contentDiv = document.getElementById('twitter_search_results');
  contentDiv.innerHTML = '';
  var html = ['<ul class="content_bulletbin">'];
  var len = results.length;
  if(len> 6) len = 8;
  for(var i=0;i<len;i++) {
     html.push('<li>','[ <a href="http://www.twitter.com/'+results[i].from_user+'">'+results[i].from_user+'</a>',
               ' on ' +results[i].created_at + '] ', 
               results[i].text+'</li> <br/>');
  }
  html.push('</ul>');
  contentDiv.innerHTML = html.join('');
}
function perform_twitter_search(search_term) {
      var twitter_search_url  = 'http://search.twitter.com/search.json?callback=show_twitter_results&lang=en&q='+search_term;
      var script = document.createElement('script');
      script.setAttribute('id', 'twitter_search_script');
      script.setAttribute('type', 'text/javascript');    
      script.setAttribute('src', twitter_search_url);
      var twitter_script = document.getElementById('twitter_search_script');
      if(undefined != twitter_script)
      {
            document.documentElement.firstChild.removeChild(twitter_script);    
      }

      document.documentElement.firstChild.appendChild(script);

}
function blog_search_cb() {
newsSearch = arguments[0];
var current_time = new Date();
var contentDiv = document.getElementById('blog_search_results');
contentDiv.innerHTML = '';
var html = ['<ul class="content_bulletbin">'];
  if (blogSearch.results && blogSearch.results.length > 0) {
    var results = blogSearch.results;
    for (var i = 0; i < results.length; i++) {
     html.push('<li>', '<a href="', results[i].postUrl, '">',results[i].titleNoFormatting,'</a>', '</li>',
               '<li>',results[i].content,'</li>','<li id="content_visible_url">',results[i].blogUrl, '</li>','<br/>');  
    }
  }
  else {
        html.push('<li> <h4> No Blog searches found </h4> </li>');  
 }
 html.push('</ul>');
 contentDiv.innerHTML = html.join('');
}

function perform_blog_search(topic) {
  var args = new Array(1);
  blogSearch = new google.search.BlogSearch();
  args[0] = blogSearch;
  blogSearch.setSearchCompleteCallback(this, blog_search_cb, args);
  blogSearch.execute(topic);
}

function news_search_cb() {
newsSearch = arguments[0];
var contentDiv = document.getElementById('news_search_results');
contentDiv.innerHTML = '';
var html = ['<ul class="content_bulletbin">'];
  if (newsSearch.results && newsSearch.results.length > 0) {
    var results = newsSearch.results;
    for (var i = 0; i < results.length; i++) {
     html.push('<li>', '<a href="', results[i].unescapedUrl, '">',results[i].titleNoFormatting,'</a>', '</li>',
               '<li>',results[i].content,'</li>','<li id="content_visible_url">',results[i].publisher,'</li>','<br/>');  
    }
  }
  else {
        html.push('<li> <h4> No News searches found </h4> </li>');  
 }
 html.push('</ul>');
 contentDiv.innerHTML = html.join('');
}

function perform_news_search(topic) {
  var args = new Array(1);
  newsSearch = new google.search.NewsSearch();
  args[0] = newsSearch;
  newsSearch.setSearchCompleteCallback(this, news_search_cb, args);
  newsSearch.execute(topic);
}

function web_search_cb() {
webSearch = arguments[0];
var contentDiv = document.getElementById('web_search_results');
contentDiv.innerHTML = '';
var html = ['<ul class="content_bulletbin">'];
  if (webSearch.results && webSearch.results.length > 0) {
    var results = webSearch.results;
    for (var i = 0; i < results.length; i++) {
      html.push('<li>', '<a href="', results[i].unescapedUrl, '">', results[i].titleNoFormatting,'</a>', '</li>',
                '<li>',results[i].content,'</li>','<li id ="content_visible_url">',results[i].visibleUrl,'</li>','<br/>');  
    }
  }
  else {
        html.push('<li> <h4> No Web searches found </h4> </li>');  
  }
  html.push('</ul>');
  contentDiv.innerHTML = html.join('');
}

function perform_web_search(topic) {
  var args = new Array(1);
  webSearch = new google.search.WebSearch();
  args[0] = webSearch;
  webSearch.setSearchCompleteCallback(this, web_search_cb, args);
  webSearch.execute(topic);
}

function load_image(imageUrl) {
    var imgContainer = document.getElementById('imageContainer');
    var imgDisplay = document.createElement('img');
    imgContainer.innerHTML = '';
    imgDisplay.setAttribute('src',imageUrl);
    imgDisplay.setAttribute('width',g_media_width);
    imgDisplay.setAttribute('height',g_media_height);
    imgContainer.appendChild(imgDisplay);
}

function image_search_cb() {
imageSearch = arguments[0];
var contentDiv = document.getElementById('image_search_results');
var html = ['<table>'];
contentDiv.innerHTML = '';
html.push('<td> <h4> More Images</h4></td>');

if (imageSearch.results && imageSearch.results.length > 0) {
    var results = imageSearch.results;
    var result_len = imageSearch.results.length;
    if(result_len>6) result_len = 6;

     for (var i = 0; i < result_len; i+=3) {
     html.push('<tr>');
        for (var j = i;  j< i+3; j++) {
           var result = results[j];
           if(undefined == result) continue;
           html.push('<td> <ul class="media_title">','<li onClick="load_image(\'',result.url, '\')">',
                     '<span> <img src="',result.tbUrl, '" width="'+g_media_thumb_width+'" height="'+g_media_thumb_height+'"/>','</span> </li> </ul> </td>');
     }

     html.push('</tr>');
     html.push('<tr>');
     for (var j = i;  j < i+3; j++) {
           var result = results[j];
           if(undefined == result) continue;
           var title = result.titleNoFormatting.substr(0,36);
           //titles
           html.push('<td> <ul class="media_title"> <li onClick="load_image(\'', result.url, '\')">',
                     title, '</li> </ul> </td>');
     }
 
     html.push('</tr>');
   }
   html.push('</table>');
   contentDiv.innerHTML = html.join('');
   load_image(results[0].url);
  }
  else {
      html.push('<h4> No Image searches found! </h4>');  
      load_image('');
  }
  contentDiv.innerHTML = html.join('');
}

function perform_image_search(topic) {
  var args = new Array(1);
  imageSearch = new google.search.ImageSearch();
  imageSearch.setResultSetSize(google.search.Search.LARGE_RESULTSET);
  imageSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE,
                             google.search.ImageSearch.IMAGESIZE_MEDIUM);
  args[0] = imageSearch;
  imageSearch.setSearchCompleteCallback(this, image_search_cb, args);

  imageSearch.execute(topic);
}
function load_video(playerUrl, autoplay) {

 swfobject.embedSWF(
      playerUrl + '&rel=1&border=0&fs=1&autoplay=' + 
      (autoplay?1:0), 'player', g_media_width, g_media_height, '9.0.0', false, 
      false, {allowfullscreen: 'true'});

}

function show_search_video(data) {
  var feed = data.feed;
  var entries = feed.entry || [];
  var html = ['<table>'];
  var contentDiv = document.getElementById('video_search_results');
  contentDiv.innerHTML = '';

  html.push('<td> <h4> More videos </h4></td>');

  if(entries.length>0)
  {
     for (var i = 0; i < entries.length; i+=3) {
     html.push('<tr>');
        for (var j = i;  j< i+3; j++) {
           var entry = entries[j];
           if(undefined == entry) continue;
           if(undefined == entries[j].media$group.media$thumbnail) continue;
           var thumbnailUrl = entries[j].media$group.media$thumbnail[0].url;
           if(undefined == entries[j].media$group.media$content) continue;
           var playerUrl = entries[j].media$group.media$content[0].url;
     
          html.push('<td> <ul class="media_title">','<li onClick="load_video(\'', playerUrl, '\', true)">',
                    '<span> <img src="',thumbnailUrl, '" width="'+g_media_thumb_width+'" height="'+g_media_thumb_height+'"/>','</span> </li> </ul> </td>');

        }
     html.push('</tr>');
     html.push('<tr>');
        for (var j = i;  j < i+3; j++) {
           var entry = entries[j];
           if(undefined == entry) continue;
           var title = entry.title.$t.substr(0, 36);
           if(undefined == title) continue;
           var playerUrl = entries[j].media$group.media$content[0].url;
           //titles
           html.push('<td> <ul class="media_title"> <li onClick="load_video(\'', playerUrl, '\', true)">',title, '</li> </ul> </td>');
        }
    html.push('</tr>');
   }
   html.push('</table>');
   contentDiv.innerHTML = html.join('');
   load_video(entries[0].media$group.media$content[0].url, false);
  }
  else {
      html.push('<h4> No Video searches found! </h4>');  
      load_video('',false);
  }
  contentDiv.innerHTML = html.join('');
}
function send_video_feed_req(search_term) {
      var video_feed_url  = 'http://gdata.youtube.com/feeds/api/videos?q='+search_term+'&start-index=1&max-results=6&alt=json-in-script&v=2&callback=show_search_video';
      var script = document.createElement('script');
      script.setAttribute('id', 'video_search_script');
      script.setAttribute('type', 'text/javascript');    
      script.setAttribute('src', video_feed_url);
      var video_script = document.getElementById('video_search_script');
      if(undefined != video_script)
      {
            document.documentElement.firstChild.removeChild(video_script);    
      }
      document.documentElement.firstChild.appendChild(script);

}
   function add_links_into_top_search_menu(top_searches)
    {
        var section_navigation = document.getElementById('nav_menu');
        var html =['<h4> Popular Searches </h4> <ul class="content_bulletbin">'];
        for (var idx = 0; idx < top_searches.length; idx++) {
            html.push('<li><a href="#" onClick="return update_media_regions(\'',top_searches[idx],'\')"> <span>', idx+1, '. ',
                      top_searches[idx],'</span></a> </li>');
            if(idx != top_searches.length - 1)html.push ('<div class="menu_divline"></div>');            
        }
        html.push('</ul>');
        section_navigation.innerHTML = html.join('');        
    } 
    function parse_hottrends_atom_feed(result) {
    	if (!result.error) {
    		var entries = google.feeds.getElementsByTagNameNS(result.xmlDocument, 'http://www.w3.org/2005/Atom', 'entry');
   		for (var i = 0; i < entries.length; i++) {
    			var titleElement = google.feeds.getElementsByTagNameNS(entries[i], 'http://www.w3.org/2005/Atom', 'title')[0];
      			var title = titleElement.firstChild.nodeValue;
      			var contentElement = google.feeds.getElementsByTagNameNS(entries[i], 'http://www.w3.org/2005/Atom', 'content')[0];
      			var linksElements = document.createElement('div');
      			linksElements.innerHTML = contentElement.firstChild.nodeValue;
      			var links = linksElements.getElementsByTagName('a'); 
      			var top_searches = new Array(links.length);
      			for(var j = 0; j< links.length; j++) { 
         			top_searches[j] = links[j].firstChild.nodeValue.toUpperCase();
      			}
    		}
    		add_links_into_top_search_menu(top_searches); 
            if(document.cookie.length == 0) { 
                  document.cookie = top_searches[0];
                  update_media_regions(document.cookie);
             }
        }
    }
    function generate_top_search_menu() {
    	var feed = new google.feeds.Feed('http://www.google.com/trends/hottrends/atom/hourly');
    	feed.setResultFormat(google.feeds.Feed.XML_FORMAT);
    	feed.load(parse_hottrends_atom_feed); 
   }
   function update_media_regions(topic) {

     if(topic == '')
        return false;  
    
     perform_web_search(topic);
     perform_news_search(topic);
     perform_blog_search(topic);
     send_video_feed_req(topic);
     perform_image_search(topic);
     perform_twitter_search(topic);
      
     document.cookie = topic;
   
     return false;
   }

   function initialize() {
      if(0 == g_init) {
         image_sizes();   
         generate_top_search_menu();
         var query = get_url_vars();
         if(undefined != query['t']) {
            document.cookie = query['t'];
         }
         update_media_regions(document.cookie);
         g_init = 1;
      }
   }
   google.setOnLoadCallback(initialize); 
