<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs
title="__UP_title__"
directory_title="miniTube"
description="YouTube for your iGoogle page, webpage or blog"
author="Youthhr H."
author_email="youthhr@gmail.com"
author_location="Tokyo, JP"
thumbnail="http://hosting.gmodules.com/ig/gadgets/file/108574294221870575221/minitube.gif"
screenshot="http://hosting.gmodules.com/ig/gadgets/file/108574294221870575221/screenshot.jpg"
height="440"
width="320"
>
<Require feature="dynamic-height"/>
<Require feature="analytics"/>
</ModulePrefs>
<UserPref name="title" display_name="タイトル" default_value="miniTube"/>
<UserPref name="keyword" display_name="Default Keyword"/>
<UserPref name="bgcolor" display_name="Background Color" required="false" default_value="#FFFFFF"/>
<UserPref name="txtcolor" display_name="Text Color" required="false" default_value="#000000"/>
<Content type="html"><![CDATA[
<style type="text/css">
a:link, a:visited, a:active{color: #42423d;text-decoration:none;}
#yt_container{padding:7px 0;}
#yt_container .yt_title{
 text-align:center;
 padding:7px 0;
 font-size:12px;
}
object, embed{
 margin:0 auto;
}
</style>

<div id="yt_block">
<div id="yt_container"></div>
<center>
<form onSubmit="ytSearch();return false;">
<input type="text" size="20" id="yt_word"/><br />
<input type="button" value="search" onClick="ytSearch();" id="yt_button"/>
</form>
</center>
</div>

<script type="text/javascript" src="http://privategadget.googlecode.com/svn/trunk/lib/swfobject.js"></script>
<script type="text/javascript">
prefs = new _IG_Prefs(__MODULE_ID__)
var num = 5;
var max = 50;
var videos = [];

function ytInit(){
  var bgColor = prefs.getString('bgcolor');
  var txtColor = prefs.getString('txtcolor');

  document.body.style.backgroundColor = (bgColor.match(/^#/)) ? bgColor: '#FFFFFF';
  document.body.style.color = (txtColor.match(/^#/)) ? txtColor: '#000000';

  var keyword = prefs.getString('keyword');

  if(keyword != ''){
    document.getElementById('yt_word').value=keyword;
    ytSearch();
  } else {
    var url = 'http://gdata.youtube.com/feeds/standardfeeds/top_rated?time=today'+
      '&alt=json-in-script'+
      '&max-results='+ max +
      '&callback=ytCallback';
    ytLoad(url);
  }
}

function ytSearch(){
  var word = document.getElementById('yt_word').value;
  var url = 'http://gdata.youtube.com/feeds/videos?' +
    'vq=' + encodeURIComponent(word)+
    '&alt=json-in-script'+
    '&max-results='+ max +
    '&callback=ytCallback';
  ytLoad(url);
}

function ytLoad(url){
  var script = document.createElement("script");
  script.setAttribute("type", "text/javascript");
  script.setAttribute("charset", "utf-8");
  script.setAttribute("src", url);
  document.body.appendChild(script);
}

function ytCallback(obj) {
  videos = obj.feed.entry;
  var total_results = obj.feed.openSearch$totalResults.$t;
  var html = '';

  if (! videos) {
    _gel('yt_container').innerHTML = '<p style="font-weight:bold;">Not Found</p>';
  }else {
    _build(1);
  }
  _IG_AdjustIFrameHeight();
};

function paginate(p){
  _build(p);
  _IG_AdjustIFrameHeight();
  return false;
}

function _build(p){
  var html = '';
  var start = (p * num) - num;
  var end = (videos.length > (start + num)) ? start + num: videos.length;
  var float = 0.8375;
  var width = Math.ceil(document.body.offsetWidth);
  var height = Math.ceil(width * float);

  var players = [];
  for(var i=start; i<end; i++){
    var v = videos[i];
    var id = v.id.$t.match(/\/([^\/]+)$/)[1];
    var thumbnail = v.media$group.media$thumbnail[0].url;
    var title = v.title.$t;
    var url = v.media$group.media$player[0].url;
    players.push(id);

    html +=
      '<div id="'+id+'" class="video">' +
      //' <center><object width="'+width+'" height="'+height+'"><param name="movie" value="http://www.youtube.com/v/'+id+'"></param><embed src="http://www.youtube.com/v/'+id+'" type="application/x-shockwave-flash" width="'+width+'" height="'+height+'"></embed></object></center>'+
      ' <div id="player_' + id + '" class="player" align="center"></div>'+
      ' <div class="yt_title"><a href="' + url + '" target="_blank">'+title+'</a></div>' +
      '</div>';
  }

  //Paginate
  html += '<p style="clear:both;text-align:center;font-size:90%;">';
  if(p != 1){
    var prev_page = p - 1;
    html += '<a href="#" onClick="return paginate(' + prev_page + ');" class="gray">&#171; Previous</a> ';
  }
  html += ' | <b>' + p + '</b> | '
  if((p * num) < videos.length){
    var next_page = p + 1;
    html += '<a href="#" onClick="return paginate(' + next_page + ');" class="gray">Next &#187;</a>';
  }
  html += '</p>';

  _gel('yt_container').innerHTML = html;

  for(var i=0;i < players.length;i++){
    var id = players[i];
    swfobject.embedSWF('http://www.youtube.com/v/' + id, 'player_' + id , width, height, '9.0.0');
  }
}

_IG_RegisterOnloadHandler(ytInit);
_IG_Analytics('UA-785809-14', '/miniTube');
</script>

]]></Content>
</Module>
