function VideoObj(rootId,playerId){
	this.rootId=rootId;
	this.player=null;
	this.libNode=null;
	this.videodesc=null;
	this.vidstore=null;
	this.playerId=playerId;
        this.initialize();
}
VideoObj.prototype={

	initializeYoutubePlayer: function(videoid){
		var domain=this;
		window.onYouTubePlayerReady=youtubeplayerready;
		var params = { allowScriptAccess: "always" };
		var atts = { "id": this.playerId };
		var dims=dojo.coords(dojo.byId(this.rootId+"player"));
		swfobject.embedSWF("http://www.youtube.com/v/"+videoid+"&enablejsapi=1", 
			"ytapiplayer", dims.w, dims.w/4*3, "8", null, null, params, atts);

		function youtubeplayerready(){
			domain.player=document.getElementById(domain.playerId);
			dojo.style(domain.videodesc,"visibility","visible");
		}
	},

	playerLoadVideo: function(videoid,skipPlay){
		if (!skipPlay){
			try {
				this.player.clearVideo();
				this.player.loadVideoById(videoid);
			} catch(err){}
		}
		var domain=this;
		this.vidstore.fetch({
			query: {"id": videoid},
			onComplete:function(i){
				domain.videodesc.innerHTML=domain.vidstore.getValue(i[0],"desc","");
			}
		});
	},

	initialize: function(){
		this.libNode = dojo.byId(this.rootId+"library");
		this.videodesc = dojo.byId(this.rootId+"videoDesc");
		this.startup();
	},

	createSrcLib: function(items){
		var txt = '';
		dojo.forEach(items, function(m,i){
			var cls="dojoDndItem"+(i%2);
			txt += ''+
			'<div class="'+cls+'" videoid="'+m["id"]+'" onclick="_p0vid.vo.playerLoadVideo(\''+m["id"]+'\');">'+
				'<div class="thumb" style="background-image:url('+m["thumb"]+');"></div>'+
				'<div class="title">'+m["title"]+'</div>'+
				//'<div class="desc">'+m["desc"]+'</div>'+
			'</div><div style="clear:both;"></div>';						 
		});
		this.libNode.innerHTML=txt;
	},

	setVideoFilter: function(type){
		var query={}, domain=this;
		if (type!=0) query["type"]=type;
		this.vidstore.fetch({
			query: query,
			onComplete:function(is){
				var res=new Array(is.length);
				for(var n in is){
					res[n]=unpackStoreItem(domain.vidstore,is[n]);
				}
				domain.createSrcLib(res);
			}
		});
	},

	startup: function(){
		//dojo.dnd.Source; jsId="dnd_library" within "libContainer"

		var domain=this;
		dojo.xhrGet({
			url:(window.ytplaylisturl?ytplaylisturl:"ytstore/playlist.")+tmwLang,
			handleAs:"json",
			load:function(items){
				domain.vidstore=new dojo.data.ItemFileWriteStore(
					{data: {items:items}}
				);
				domain.createSrcLib(items);
				domain.initializeYoutubePlayer(items[0].id);
				domain.playerLoadVideo(items[0].id,true);
			}
		});
	}
}

function VidPanel(){
	var triggerInit=false;
	triggerInit=true;
	if (triggerInit) this.initialize();
}
VidPanel.prototype={
	initialize:function(){
		// cred ready
		//console.dir(tmwcredentials);
		this.vo=new VideoObj("p0","myytplayer");
	}
}
