
function onPlayerError(errorCode) {
        alert("An error occured of type:" + errorCode);
      }
 
      function onYouTubePlayerReady(playerId) {
        ytplayer = document.getElementById("player");
        ytplayer.addEventListener("onError", "onPlayerError");
      }

function addslashes(str) {
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'');
	return str;
}
function stripslashes(str) {
	str=str.replace(/\\'/g,'\'');
	return str;
}

var ytvb = {};

ytvb.MAX_RESULTS_LIST = 12;

ytvb.VIDEO_LIST_CSS_CLASS = 'videos2';


ytvb.PREVIOUS_PAGE_BUTTON2 = 'previousPageButton2';

ytvb.NEXT_PAGE_BUTTON2 = 'nextPageButton2';

ytvb.RELATED_VIDEOS_REL = 
    'http://gdata.youtube.com/schemas/2007#video.related';

ytvb.FLASH_MIME_TYPE = 'application/x-shockwave-flash';


ytvb.CHANNEL_FEED_URL = 
    'http://gdata.youtube.com/feeds';



ytvb.QUERY_URL_MAP = {
  
  'channel' : ytvb.CHANNEL_FEED_URL
  

};



ytvb.nextPage2 = 2;


ytvb.previousPage2 = 0;

ytvb.previousSearchTerm = '';

ytvb.previousQueryType2 = 'channel';

ytvb.jsonFeed_ = null;

ytvb.appendScriptTag = function(scriptSrc, scriptId, scriptCallback) {
 
  var oldScriptTag = document.getElementById(scriptId);
  if (oldScriptTag) {
    oldScriptTag.parentNode.removeChild(oldScriptTag);
  }
  
  var script = document.createElement('script');
  script.setAttribute('src', 
      scriptSrc + '&alt=json-in-script&callback=' + scriptCallback);
  script.setAttribute('id', scriptId);
  script.setAttribute('type', 'text/javascript');
  
  document.getElementsByTagName('head')[0].appendChild(script);
};

ytvb.userVideos = function(queryType, searchTerm, page) {
  ytvb.previousSearchTerm = searchTerm; 
  ytvb.previousQueryType2 = queryType; 
  var queryUrl = ytvb.QUERY_URL_MAP[queryType];
  if (queryUrl) {
    queryUrl += '/users/';
    if (searchTerm != '') {
      queryUrl += encodeURI(searchTerm) + '/uploads?orderby=updated&max-results=' + ytvb.MAX_RESULTS_LIST +
        '&format=5&start-index=' + (((page - 1) * ytvb.MAX_RESULTS_LIST) + 1);
    }
     ytvb.appendScriptTag(queryUrl, 
                         'searchResultsVideoListScript', 
                         'ytvb.listVideosCallback');
    ytvb.updateNavigation2(page);
   

  }
};

ytvb.PresentVideos = function(queryType, searchTerm, page) {
  ytvb.previousSearchTerm = searchTerm; 
  ytvb.previousQueryType2 = queryType; 
  var queryUrl = ytvb.QUERY_URL_MAP[queryType];
  if (queryUrl) {
    queryUrl += '/users/';
    if (searchTerm != '') {
      queryUrl += encodeURI(searchTerm) + '/uploads?orderby=updated&max-results=' + ytvb.MAX_RESULTS_LIST +
        '&format=5&start-index=' + (((page - 1) * ytvb.MAX_RESULTS_LIST) + 1);
    }
     ytvb.appendScriptTag(queryUrl, 
                         'searchResultsVideoListScript', 
                         'ytvb.listVideosCall');
    ytvb.updateNavigation2(page);
   

  } 
};


ytvb.listVideosCall = function(data) {
 
  ytvb.jsonFeed_ = data.feed;
  var div = document.getElementById(ytvb.VIDEO_LIST_CSS_CLASS);

  
  var entries = data.feed.entry || [];
  var html = ['<ul class="videos">'];
  
  for (var i = 0; i < entries.length; i++) {
    
    var entry = entries[i];
    var title = entries[i].title.$t;
    var thumbnailUrl = entries[i].media$group.media$thumbnail[0].url;
    var playerUrl = entries[i].media$group.media$content[0].url;

    var vid = (getVideoId(entries[i].link[0].href));
    html.push('<dl><a href="javascript:playVideo(\''+vid+'\',\''+addslashes(title)+'\')">');
	html.push('<img src="',thumbnailUrl,'" width="120" height="90" onmouseout="mouseOutImage(this)" onmouseover="mousOverImage(this,\'',vid,'\',1)"></a>');
	html.push('<br/>', title.substr(0,60), '</dl>');}
    html.push('</ul><br style="clear: left;"/>');
    document.getElementById(ytvb.VIDEO_LIST_CSS_CLASS).innerHTML = html.join('');
  
  if (entries.length > 0) {
    loadVideo((getVideoId(entries[0].link[0].href)),addslashes(entries[0].title.$t));
  }

};

function loadVideo(vid,title) {
  swfobject.embedSWF("http://www.youtube.com/v/" + vid + "?enablejsapi=1&playerapiid=ytplayer&fs=1",
  'player', '480', '385', '9.0.0', false, false, {allowScriptAccess: 'always',allowfullscreen: 'true'});
  }

function playVideo(vid,title){
	if(document.title)
		document.title = title;
	ytplayer.loadVideoById(vid);

}

var imname;
var timer;
 
function mousOverImage(name,id,nr){
	if(name)
		imname = name;
	imname.src = "http://img.youtube.com/vi/"+id+"/"+nr+".jpg";
	imname.style.border = 	'3px solid #4B6AA8';
	nr++;
	if(nr > 3)
		nr = 1;
	timer =  setTimeout("mousOverImage(false,'"+id+"',"+nr+");",1000);
 
}
 
function mouseOutImage(name){
 
	if(name)
		imname = name;
	//make border back to greyish
	imname.style.border = 	'3px solid #fff';
	if(timer)
		clearTimeout(timer);
 
}

 function getVideoId(url)
		{				
				return url.substring(url.indexOf('=')+1,url.lastIndexOf('&'));
		}

ytvb.listVideosCallback = function(data) {
 
  ytvb.jsonFeed_ = data.feed;
  var div = document.getElementById(ytvb.VIDEO_LIST_CSS_CLASS);
 
 
   while (div.childNodes.length >= 1) {
    div.removeChild(div.firstChild);
  
  }
  
  var entries =  data.feed.entry || [];
  var html = ['<ul class="videos">'];
  for (var i = 0; i < entries.length; i++) {
   
    var entry = entries[i];
    var title = entries[i].title.$t;
    var thumbnailUrl = entries[i].media$group.media$thumbnail[0].url;
    var playerUrl = entries[i].media$group.media$content[0].url;
    var vid = (getVideoId(entries[i].link[0].href));
    html.push('<dl><a href="javascript:playVideo(\''+vid+'\',\''+addslashes(title)+'\')">');
	html.push('<img src="',thumbnailUrl,'" width="120" height="90" onmouseout="mouseOutImage(this)" onmouseover="mousOverImage(this,\'',vid,'\',1)"></a>');
	html.push('<br/>', title.substr(0,60), '</dl>');}
    html.push('</ul><br style="clear: left;"/>');
    
    document.getElementById(ytvb.VIDEO_LIST_CSS_CLASS).innerHTML = html.join('');
  
};


ytvb.updateNavigation2 = function(page) {
  ytvb.nextPage2 = page + 1;
  ytvb.previousPage2 = page - 1;
  document.getElementById(ytvb.NEXT_PAGE_BUTTON2).style.display = 'inline';
  document.getElementById(ytvb.PREVIOUS_PAGE_BUTTON2).style.display = 'inline';
  
  if (ytvb.previousPage2 < 1) {
    document.getElementById(ytvb.PREVIOUS_PAGE_BUTTON2).disabled = true;
  } else {
    document.getElementById(ytvb.PREVIOUS_PAGE_BUTTON2).disabled = false;
  }
  document.getElementById(ytvb.NEXT_PAGE_BUTTON2).disabled = false;
};