
  //
  // YouTube JavaScript Player With Playlist
  // http://911-need-code-help.blogspot.com/2009/10/youtube-javascript-player-with-playlist.html
  // Revision 1 [2009-10-12]
  //
  // Prerequisites
  // 1) Create following elements in your HTML:
  // -- a) ytplayer: a named anchor
  // -- b) ytplayer_div1: placeholder div for YouTube JavaScript Player
  // -- c) ytplayer_div2: container div for playlist
  // 2) Include SWFObject library from http://code.google.com/p/swfobject/
  //
  // Variables
  // -- ytplayer_playlist: an array containing YouTube Video IDs
  // -- ytplayer_playitem: index of the video to be played at any given time
  //

  	var ytplayer_playlist = [ ];
  	var ytplayer_playitem = 0;
 	var featurevid_id = 0;
  
	var playlist_id = '';
	var skeywords = '';
	var isEpisodes = false;
	var isKeywords = false;
	var isiPad = false;
	
	var YCM = YAHOO.util.Connect;


  
  function ytplayer_render_player( )
  {
	if (ytplayer_playlist.length==0) {
		show_noresults();
  	}else{
		if (isiPad) {
			ytplayer_playitem = 0;
			ytplayer_playlazy( 1000 );
		}else{
			swfobject.embedSWF
			(
			  'http://www.youtube.com/v/' + ytplayer_playlist[ ytplayer_playitem ][0] + '&enablejsapi=1&rel=0&fs=1',
			  'ytplayer_div1',
			  '490',
			  '290',
			  '8',
			  null,
			  null,
			  {
				allowScriptAccess: 'always',
				allowFullScreen: 'true'
			  },
			  {
				id: 'ytplayer_object'
			  }
			);
		}
  	}
	
  }
  
  function ytplayer_render_playlist( )
  {
	try {console.log("is episodes:" + isEpisodes);}catch(e){}
    for ( var i = 0; i < ytplayer_playlist.length; i++ )
    {
      var img = document.createElement( "img" );
	  if (isEpisodes) {
	  	//img.src = "http://www.toop.tv/playlist_thumbnail.asp?playlistid=" + ytplayer_playlist[ i ][3];//"images/play.gif"
	  	img.src = "images/loaderblack.gif";
		img.setAttribute("id","img"+ytplayer_playlist[ i ][3]);
	  	img.setAttribute("class","vid_wait");
	  	img.setAttribute("className","vid_wait");
	  } else {
      	img.src = "http://img.youtube.com/vi/" + ytplayer_playlist[ i ][0] + "/default.jpg";//"images/play.gif"
		img.setAttribute("class","vid_img");
	  	img.setAttribute("className","vid_img");
	  }
	  
	  
	  var img_play = document.createElement( "img" );
	  img_play.src = "images/play2.png";
	  img_play.setAttribute("class","play_img");
	  img_play.setAttribute("className","play_img");
	  var img_play_cont = document.createElement( "div" );
	  img_play_cont.setAttribute("class","img_play_cont");
	  img_play_cont.setAttribute("className","img_play_cont");
	  img_play_cont.appendChild(img_play);

	  
	  var title = document.createElement( "div" );
	  title.innerHTML = ytplayer_playlist[ i ][1];
	  title.setAttribute("class","vid_title");
	  title.setAttribute("className","vid_title");
	  title.zIndex = 999;
	  var time = document.createElement( "div" );
	  time.innerHTML = ytplayer_playlist[ i ][2];
	  time.setAttribute("class","vid_time");
	  time.setAttribute("className","vid_time");
      var a = document.createElement( "a" );
	  a.setAttribute("class","vid_link");
	  a.setAttribute("className","vid_link");
      if (isEpisodes) {
	  a.href = "?p=" + ytplayer_playlist[ i ][3] + "&d=" + ytplayer_playlist[ i ][2];
	  //a.setAttribute("style","background-image:url(http://www.toop.tv/playlist_thumbnail.asp?playlistid=" + ytplayer_playlist[ i ][3] + ");");
	  //a.style.backgroundImage='url("http://www.toop.tv/playlist_thumbnail.asp?playlistid="' + ytplayer_playlist[ i ][3] + ')';
		} else {
	  a.href = "#" //+ ytplayer_playlist[ i ][1];
	  //a.style.backgroundImage='url("http://img.youtube.com/vi/"' + ytplayer_playlist[ i ][0] + '"/default.jpg")';
		}
      //
      // Thanks to some nice people who answered this question:
      // http://stackoverflow.com/questions/1552941/variables-in-anonymous-functions-can-someone-explain-the-following
      //
      a.onclick = (
        function( j )
        {
          return function( )
          {
			//alert(a.getElementsByTagName("div")[0].style.zIndex);
            ytplayer_playitem = j;
            ytplayer_playlazy( 1000 );
          };
        }
      )( i );
      a.appendChild( img );
	  a.appendChild( img_play_cont );
	  a.appendChild( title );
	  a.appendChild( time );
	  var contdiv = document.createElement( "div" );
	  contdiv.setAttribute("class","contdiv");
	  contdiv.setAttribute("className","contdiv");
	  contdiv.appendChild(a);
	  
      document.getElementById( "ytplayer_div2" ).appendChild( contdiv );
    }
	var splitdiv = document.createElement( "div" );
	splitdiv.setAttribute("style","clear:both;");
	
     document.getElementById( "ytplayer_div2" ).appendChild( splitdiv );
	
	
  }
  
  function ytplayer_render_playlist_min( )
  {
	
    for ( var i = 0; i < ytplayer_playlist.length; i++ )
    {
      //var img = document.createElement( "img" );

	  	  
	  var img_play = document.createElement( "img" );
	  img_play.src = "images/play2.png";
	  img_play.setAttribute("class","play_img");
	  img_play.setAttribute("className","play_img");
	  var img_play_cont = document.createElement( "div" );
	  img_play_cont.setAttribute("class","img_play_cont");
	  img_play_cont.setAttribute("className","img_play_cont");
	  img_play_cont.appendChild(img_play);

	  
	  var title = document.createElement( "div" );
	  title.innerHTML = ytplayer_playlist[ i ][1];
	  title.setAttribute("class","vid_title");
	  title.setAttribute("className","vid_title");
	  title.zIndex = 999;
	  var time = document.createElement( "div" );
	  time.innerHTML = ytplayer_playlist[ i ][2];
	  time.setAttribute("class","vid_time");
	  time.setAttribute("className","vid_time");
      var a = document.createElement( "div" );
	  a.setAttribute("class","vid_entry");
	  a.setAttribute("className","vid_entry");
      
      a.onclick = (
        function( j )
        {
          return function( )
          {
			//alert(a.getElementsByTagName("div")[0].style.zIndex);
            ytplayer_playitem = j;
            ytplayer_playlazy( 1000 );
          };
        }
      )( i );
      //a.appendChild( img );
	  //a.appendChild( img_play_cont );
	  a.appendChild( title );
	  a.appendChild( time );
      document.getElementById( "ytplayer_div2" ).appendChild( a );
    }
  }
  
  function ytplayer_playlazy( delay )
  {
    //

    //
    if ( typeof ytplayer_playlazy.timeoutid != 'undefined' )
    {
      window.clearTimeout( ytplayer_playlazy.timeoutid );
    }
    ytplayer_playlazy.timeoutid = window.setTimeout( ytplayer_play, delay );
  }
  function ytplayer_play( )
  {
	document.getElementById( 'videotitle' ).innerHTML = ytplayer_playlist[ ytplayer_playitem ][1];
	//register GA event
		if (typeof(_gaq)!='undefined'){
				_gaq.push(['_trackEvent', 'video_item', 'click', ytplayer_playlist[ ytplayer_playitem ][1] ]);
		}
	if (isiPad) {
		document.getElementById( 'ytplayer_div1' ).innerHTML = '<object id="ytplayer_object" width="490" height="280"><param name="movie" value="http://www.youtube.com/v/'+ytplayer_playlist[ ytplayer_playitem ][0]+'&color1=0xb1b1b1&color2=0xcfcfcf&hl=en_US&feature=player_embedded&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="never"></param><embed src="http://www.youtube.com/v/'+ytplayer_playlist[ ytplayer_playitem ][0]+'&color1=0xb1b1b1&color2=0xcfcfcf&hl=en_US&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="never" width="490" height="280"></embed></object>';
	}else{
		var o = document.getElementById( 'ytplayer_object' );
		if ( o )
		{
		  o.loadVideoById( ytplayer_playlist[ ytplayer_playitem ][0] );
		}
	}
  }
  
  //
  // Ready Handler (this function is called automatically by YouTube JavaScript Player when it is ready)
  // * Sets up handler for other events
  //
  function onYouTubePlayerReady( playerid )
  {
    var o = document.getElementById( 'ytplayer_object' );
    if ( o )
    {
      o.addEventListener( "onStateChange", "ytplayer_statechange" );
      o.addEventListener( "onError", "ytplayer_error" );
    }
  }
  //
  // State Change Handler
  // * Sets up the video index variable
  // * Calls the lazy play function
  //
  function ytplayer_statechange( state )
  {
    if ( state == 0 )
    {
      ytplayer_playitem += 1;
      ytplayer_playitem %= ytplayer_playlist.length;
      ytplayer_playlazy( 5000 );
    }
  }
  //
  // Error Handler
  // * Sets up the video index variable
  // * Calls the lazy play function
  //
  function ytplayer_error( error )
  {
    if ( error )
    {
      ytplayer_playitem += 1;
      ytplayer_playitem %= ytplayer_playlist.length;
      ytplayer_playlazy( 5000 );
    }
  }
  //
  // Add items to the playlist one-by-one
  //http://gdata.youtube.com/feeds/api/videos/-/investor/?author=adelaiderealestate
  
 
  
  function show_noresults () {
	  document.getElementById('ytplayer_div2').innerHTML = '<div class="vid_title"><br>Sorry, no videos found.</div>';
		var callback = {
			success: function(o) {
					document.getElementById('ytplayer_div1').innerHTML = o.responseText;
					},
			failure: function(o) {document.getElementById('ytplayer_div1').innerHTML = 'Error has occured. Please refresh page.';}
		}
		var sUrl = "no_results.asp";
		var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
  }
  
  function zzzzzzinitialize_keywords() {
	  
		
  		var ddate = new Date();
		var sUrl = "http://gdata.youtube.com/feeds/api/videos/-/" + new String(skeywords).toLowerCase().replace(/,|\s|;/,"/") + "/?author=adelaiderealestate";

		document.title = 'Toop TV - Search Results';
		var feed = new google.feeds.Feed(sUrl); 
		feed.setNumEntries(99); 
		feed.load(function(result) {
			if (!result.error) {          
				if(document.getElementById('EpisodeTitle')){
					document.getElementById('EpisodeTitle').innerHTML='Search for: <i>' + skeywords + '</i>';
				}
				//if(document.getElementById('comingup')){
					//document.getElementById('comingup').innerHTML=result.feed['description'].replace(/\n/,'<br />');
					
				//} else {alert('description could not be displayed');}
				if(document.getElementById('ScreenNav')) {
					document.getElementById('ScreenNav').innerHTML= searchBox('<a id="btnback" href="javascript:history.go(-1);">Back</a>');
					}       
				var re = /([^\?]*?\?v=)([^&]*?)(&.*)/ ;
				var re2 = /Episode\s\d{1,3}\s-\s(.*)/ ;
				var re3 = /^Episode\s\d{1,3}\s(.*)/ ;
				for (var i = 0; i < result.feed.entries.length; i++) {            
					var entry = result.feed.entries[i];      
					var vid_id = entry.link.replace(re, '$2');
					var vid_title = (i+1) + '. ' + entry.title.replace(re2,'$1').replace(re3,'$1');
					var vid_date1 = new Date(entry.publishedDate);
					var vid_date = '';//vid_date1.getDate() + '-' + (vid_date1.getMonth()+1) + '-' + vid_date1.getFullYear()
					//if (ytplayer_playlist){alert(ytplayer_playlist.length);}
					ytplayer_playlist.push( [vid_id,vid_title,'',''] );
				} 
				if (document.getElementById('aired')) document.getElementById('aired').innerHTML = vid_date;
				ytplayer_render_player();
				if (document.getElementById('ishelpdesk')) {
					ytplayer_render_playlist_min();
				} else {
					ytplayer_render_playlist(); }
 				
			} 
			else 
			{alert(result.error.message+":"+sUrl);}
			
		});   
  }
  
   function initialize_keywords() {  
  
  	var responseSuccess2 = function(o){
	  	var myObj = YAHOO.lang.JSON.parse(o.responseText);
		var vids = myObj.feed.entry;
		var re2 = /Episode\s\d{1,3}\s-\s(.*)/ ;
		var re3 = /^Episode\s\d{1,3}\s(.*)/ ;
		document.title = 'Toop TV - Search Results';
		if(document.getElementById('EpisodeTitle')){
					document.getElementById('EpisodeTitle').innerHTML='Search for: <i>' + skeywords + '</i>';
		}
		if (vids!=undefined){
		 for (i=0;i<vids.length;i=i+1) {
			 		text2 = vids[i].media$group.media$description.$t;
					var vid_id = vids[i].media$group.yt$videoid.$t;
					var vid_title = (i+1).toString() + '. ' + vids[i].title.$t.replace(re2,'$1').replace(re3,'$1');
					//var vid_date1 = new Date(entry.publishedDate);
					var vid_date = '';
					ytplayer_playlist.push( [vid_id,vid_title,'',''] );
	  	}
		}
		ytplayer_render_player();
		ytplayer_render_playlist();
	};
  
  
	var responseFailure2 = function(o){
		
		
 		alert(o.responseText);

	};
	
	var callback1 = {
	  success:responseSuccess2,
	  failure:responseFailure2,
	  xdr: !isiPad
	};
	
	function makeRequest(uri) {
		//YCM.initHeader('Authorization', 'AuthSub token="' + YAHOO.util.Cookie.get("yttoken") + '"');
		//YCM.initHeader('X-GData-Key', 'key='+devKey);
		//if (xdrOK)
		if (isiPad) {uri = 'ProxyXML.php?__url=' + escape(uri);}
		request = YCM.asyncRequest('GET',uri , callback1);
	};
	
	//YCM.transport('../_JavaScript/yui2.9/build/connection/connection.swf');
	//YCM.xdrReadyEvent.subscribe(function(){makeRequest('http://gdata.youtube.com/feeds/api/playlists/' + pl_yid + '?v=2&alt=json');});	
	makeRequest('http://gdata.youtube.com/feeds/api/videos/-/' + new String(skeywords).toLowerCase().replace(/,|\s|;/,"/") + '/?author=adelaiderealestate&v=2&alt=json');	
	

  
  
  		
} 
  
  
  function initialize_episode(pretext,backHTML) {  
  
  	var responseSuccess2 = function(o){
	  	var myObj = YAHOO.lang.JSON.parse(o.responseText);
		var vids = myObj.feed.entry;
		var re2 = /Episode\s\d{1,3}\s-\s(.*)/ ;
		var re3 = /^Episode\s\d{1,3}\s(.*)/ ;
		
		if(document.getElementById('EpisodeTitle')){
					document.getElementById('EpisodeTitle').innerHTML=pretext;
		}

		 for (i=0;i<vids.length;i=i+1) {
			 		text2 = vids[i].media$group.media$description.$t;
					var vid_id = vids[i].media$group.yt$videoid.$t;
					var vid_title = (i+1).toString() + '. ' + vids[i].title.$t.replace(re2,'$1').replace(re3,'$1');
					//var vid_date1 = new Date(entry.publishedDate);
					var vid_date = '';
					ytplayer_playlist.push( [vid_id,vid_title,'',''] );
	  	}
		
		ytplayer_render_player();
		ytplayer_render_playlist();
	};
  
  
	var responseFailure2 = function(o){
		
		
 		alert(o.responseText);

	};
	
	var callback1 = {
	  success:responseSuccess2,
	  failure:responseFailure2,
	  xdr: !isiPad
	};
	
	function makeRequest(uri) {
		//YCM.initHeader('Authorization', 'AuthSub token="' + YAHOO.util.Cookie.get("yttoken") + '"');
		//YCM.initHeader('X-GData-Key', 'key='+devKey);
		//if (xdrOK)
		if (isiPad) {uri = 'ProxyXML.php?__url=' + escape(uri);}
		request = YCM.asyncRequest('GET',uri , callback1);
	};
	
	//YCM.transport('../_JavaScript/yui2.9/build/connection/connection.swf');
	//YCM.xdrReadyEvent.subscribe(function(){makeRequest('http://gdata.youtube.com/feeds/api/playlists/' + pl_yid + '?v=2&alt=json');});	
	makeRequest('http://gdata.youtube.com/feeds/api/playlists/' + playlist_id + '?v=2&alt=json');	
	
  
  
  		
}
	
function setFeatures(playlist_id) {
	  // for use when listing the episodes
	  // sets the icon, and episode
	  var feed3 = new google.feeds.Feed("http://gdata.youtube.com/feeds/api/playlists/"+ playlist_id +"?v=2");
	  feed3.setNumEntries(1); 
	  feed3.load(function(result) {
		if (!result.error) { 
			var video_id = result.feed.entries[0].link.replace(/([^\?]*?\?v=)([^&]*?)(&.*)/,'$2');
		    if (document.getElementById("img"+playlist_id)) {
				document.getElementById("img"+playlist_id).src = "http://i2.ytimg.com/vi/" + video_id + "/default.jpg";
				
				document.getElementById("img"+playlist_id).width = 120;
				document.getElementById("img"+playlist_id).height = 90;
				document.getElementById("img"+playlist_id).setAttribute("class","vid_img");
	  			document.getElementById("img"+playlist_id).setAttribute("className","vid_img");
			}
		}
	  });
  }
	






	
	
	
	
	

	
	
	
	
  function initialize_episodelist() { 
	// get feature video from special playlist
	try {console.log("is episodes:" & isEpisodes);}catch(e){}
	document.title = "Toop TV - Episode List";
	var ddate = new Date();
	var feed2 = new google.feeds.Feed("http://gdata.youtube.com/feeds/api/playlists/AEDB6207DC9618DA?v=2&rnd=" + ddate.getDay());
	feed2.setNumEntries(1); 
	feed2.load(function(result) {
		if (!result.error) { 
			featurevid_id = result.feed.entries[0].link.replace(/([^\?]*?\?v=)([^&]*?)(&.*)/,'$2');
			var feed = new google.feeds.Feed("http://gdata.youtube.com/feeds/api/users/adelaiderealestate/playlists?v=2&max-results=50&start-index=80");
			feed.setNumEntries(99); 
			feed.load(function(result) {
				if (!result.error) {          
					//var container = document.getElementById("feed"); 
					//alert(result.feed.link);         
					//var re = new RegExp("([^\?]*?\?v=)([^&]*?)(&.*)", "g");       
					if(document.getElementById('EpisodeTitle')){
								document.getElementById('EpisodeTitle').innerHTML='<strong>Toop</strong>.TV Episode Archive';
					}
					if(document.getElementById('ScreenNav')) {
					document.getElementById('ScreenNav').innerHTML=searchBox('');
					}  
					var re = /([^\?]*?\?p=)([^&]*?)/ ;
					var re2 = /Toop\.TV\sEpisode\s\d{1,3}/ ;
					var re3 = /Toop\.TV\sSpecial\s.*/ ;
					for (var i = 0; i < result.feed.entries.length; i++) {
						var entry = result.feed.entries[i];
						// only add if toop.TV episode
						if (entry.title.match(re2) || entry.title.match(re3)) {      
							var playlistid = entry.link.replace(re, '$2');
							var playlisttitle = entry.title + "&nbsp;<span class=\"ttv_webding\">4</span>";
							var playlistdate = '';
							var vid_id = featurevid_id;
							//if (ytplayer_playlist){alert(ytplayer_playlist.length);}
							ytplayer_playlist.unshift( [vid_id,playlisttitle,playlistdate,playlistid] );   
						}
						setFeatures(playlistid);
					}  
					ytplayer_render_player();
					ytplayer_render_playlist();
				} else {	
					alert(result.error.message);
				}
				
			});
		}
	});
	

}

function initialize_episodelist_new() { 
// find the latest Episode
// set load this on to the page
	var ddate = new Date();
	// load all playlists from toop.tv
	// when coming acorss the first episode playlist (which will be the latest one), load that playlist.
			var feed = new google.feeds.Feed("http://gdata.youtube.com/feeds/api/users/adelaiderealestate/playlists?v=2&max-results=30&start-index=85&rnd="+Math.random());
			feed.setNumEntries(99); 
			feed.load(function(result) {
				if (!result.error) {             
					var re = /([^\?]*?\?p=)([^&]*?)/ ;
					var re2 = /Toop\.TV\sEpisode\s\d{1,3}/ ;
					var re3 = /Toop\.TV\sSpecial\s.*/ ;
					for (var i = 0; i < result.feed.entries.length; i++) {
						var entry = result.feed.entries[i];
						// only add if toop.TV episode
						if (entry.title.match(re2) || entry.title.match(re3)) {  
							playlist_id = entry.link.replace(re, '$2');
							isEpisodes = false;
							isKeywords = false;
						}
						
					}
					// by here, we now have the latest episode id in playlist_id
					initialize_episode('Latest:','<a id="btnback" href="/?e=1">Other Episodes..</a>');  
					
				} else {	
					alert(result.error.message);
				}
			});

}

function initialize2() { 
	// get feature video from special playlist
	var ddate = new Date();
	var feed2 = new google.feeds.Feed("http://gdata.youtube.com/feeds/api/playlists/AEDB6207DC9618DA?v=2&rnd=" + ddate.getDay());
	feed2.setNumEntries(1); 
	feed2.load(function(result) {
		if (!result.error) { 
			featurevid_id = result.feed.entries[0].link.replace(/([^\?]*?\?v=)([^&]*?)(&.*)/,'$2');}
	});
	
}

function f_clientWidth() {
        return f_filterResults (
               window.innerWidth ? window.innerWidth : 0,
               document.documentElement ? document.documentElement.clientWidth : 0,
               document.body ? document.body.clientWidth : 0
        );
}
function f_clientHeight() {
        return f_filterResults (
               window.innerHeight ? window.innerHeight : 0,
               document.documentElement ? document.documentElement.clientHeight : 0,
               document.body ? document.body.clientHeight : 0
        );
}
function f_scrollLeft() {
        return f_filterResults (
               window.pageXOffset ? window.pageXOffset : 0,
               document.documentElement ? document.documentElement.scrollLeft : 0,
               document.body ? document.body.scrollLeft : 0
        );
}
function f_scrollTop() {
        return f_filterResults (
               window.pageYOffset ? window.pageYOffset : 0,
               document.documentElement ? document.documentElement.scrollTop : 0,
               document.body ? document.body.scrollTop : 0
        );
}
function f_filterResults(n_win, n_docel, n_body) {
        var n_result = n_win ? n_win : 0;
        if (n_docel && (!n_result || (n_result > n_docel)))
               n_result = n_docel;
        return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}


function set_footer() {
	document.getElementById('footer').style.visibility = "visible";
	document.getElementById('footer').style.top = f_clientHeight() + f_scrollTop() - 40 + "px";
	document.getElementById('footer').style.zIndex = 999;
	
}

var start_it = function() {
	
		playlist_id = document.getElementById("playlist_id").value;
		var ep_title = document.getElementById("playlist_title").value;
		var ep_num = document.getElementById("ep_num").value;
		skeywords = document.getElementById("skeywords").value;
		isEpisodes = document.getElementById("playlist_id").value=='';
		isKeywords = document.getElementById("skeywords").value!='';
		isiPad = ('ipad'==document.getElementById("devicetype").value);
		var isEpisode = (!isKeywords&&!isEpisodes);
	
		var start_it_sub = function() {
		
			if (isEpisode) {
					initialize_episode(ep_title,'');
			} else if(isEpisodes) {
	
				initialize_episodelist();
				
			} else if (isKeywords) {
				initialize_keywords();
			} 
		
		}

		
		if (!YCM.xdrReadyEvent.fired&&!isiPad) {
				YCM.transport('javascript/yui2.9/build/connection/connection.swf');
				YCM.xdrReadyEvent.subscribe(start_it_sub);		
		} else {
			start_it_sub();
		}
		//this.removeListener(init_playlist);

}

var goLive = function() {
	window.location.href=window.location.href;	
}

YAHOO.util.Event.onDOMReady(start_it);
//var elem = new YAHOO.util.Element('devicetype');
//elem.on('contentReady',);
