if (!Function.prototype.bindAsEventListener) {
	Function.prototype.bindAsEventListener = function() {
		var __method=this,args=arguments,object=args[0];
		return function(event) {var a = args;a[0]=(event || window.event);return __method.apply(object,a);}
	}
}
if (!Math.customRound) {
	Math.customRound = function (number, digits) {
		if (arguments.length == 1) var digits = 2;
		var d = Math.pow(10, digits);
		return parseInt(number * d) / d;
	}
}
if (typeof(IDTVHZP) == "undefined") {
	IDTVHZP = function () {this.initialize.apply(this, arguments);};
	IDTVHZP.prototype = {
		frame: null,
		initialize: function (ds) {
			this.ds = ds;
			this.element = document.getElementById('IDTVP_' + this.ds.id);
			if (!this.element && document.getElementsByClassName)
				try {
					this.element = document.getElementsByClassName ('idtv_e355f0478e')[0];
				} catch(e) {}
			if (!this.element) { alert ('The iDesktop.tv horizontal box is not not embedded properly!'); return;}
			this.element.innerHTML = '<div class="idtv_' + this.ds.id + '"><div class="idtv_bp"></div><div class="idtv_outres"><div class="idtv_inres"></div></div><div class="idtv_bn"></div></div>';
			var es = this.element.getElementsByTagName('div');
			this.elementout = es[0];
			this.btnprev = es[1]; this.btnnext = es[4];
			this.elementout = es[2];
			this.elementin = es[3];
			if (this.ds.data.error) {
				this.elementin.innerHTML = '<div style="text-align:center">' + this.ds.data.error + '</div>';
			} else {
				this.results = new Array();
				if (this.ds.only_public) { // go trough ds.data.results and remove all private videos
					var newdata = new Array();
					for (var i = 0; i < this.ds.data.results.length; i ++)
						if (!this.ds.data.results[i].isprivate)
							newdata.push(this.ds.data.results[i]);
					this.ds.data.results = newdata;
				}
				var jsonArr = this.ds.data.results;
				this.page = 0; this.resc = jsonArr.length;
				this.maxpage = Math.ceil(this.resc/this.ds.pp);
				for (var i = 0, n = this.resc; i < n; i ++) {
					var nr = document.createElement('div');
					nr.className = 'idtv_res';
					//nr.style.left = i * (this.ds.width - 40) + "px";
					jsonArr[i].title_esc = jsonArr[i].title.replace(/"/g, "&quot;");// ";
					var title = jsonArr[i].title_esc + (this.ds.thumb_show_length?' (' + jsonArr[i].length_seconds + ')':'');
					var t = '<img src="' + jsonArr[i].thumbnail_url + '" alt="' + jsonArr[i].title_esc + '" title="' + title + '" />';
					if (this.ds.thumb_show_title || this.ds.thumb_show_author || this.ds.thumb_show_length || this.ds.thumb_show_rating || this.ds.thumb_show_description) {
						var at = '';
						if (this.ds.thumb_show_title)
							//at = '<a href="http://www.idesktop.tv/?watch=' + jsonArr[i].id + '" title="' + jsonArr[i].title + '" target="_blank">' + jsonArr[i].title + "</a>";
							at = '<span class="t">' + jsonArr[i].title + "</span>";
						if (this.ds.thumb_show_author) {
							at += '<span class="ah">' + (this.ds.thumb_show_labels?'<span class="lb">Author: </span>':'') + jsonArr[i].author + '</span>';
						}
						if (this.ds.thumb_show_length || this.ds.thumb_show_views) {
							at += '<span class="lv">';
							if (this.ds.thumb_show_length) at += (this.ds.thumb_show_labels?'<span class="lb">Length: </span>':'') +jsonArr[i].length_seconds;
							if (this.ds.thumb_show_length && this.ds.thumb_show_views) at += ' | ';
							if (this.ds.thumb_show_views) at += (this.ds.thumb_show_labels?'<span class="lb">Views: </span>':'') + this.formatCommasInt(jsonArr[i].view_count);
							at += '</span>';
						}
						if (this.ds.thumb_show_rating)
							at += '<span class="r">' + (this.ds.thumb_show_labels?'<span class="lb">Rating: </span>':'') + Math.customRound(jsonArr[i].rating_avg, 1) + "</span>";
						if (this.ds.thumb_show_description) {
							at += '<span class="d">' + jsonArr[i].description + "</span>";
						}
						t = t + '<div class="out" title="' + title + '"><div class="in">' + at + '</div></div>';
					}
					nr.innerHTML += t;
					if (this.ds.mark_private && jsonArr[i].isprivate)
						nr.innerHTML += '<div class="private_mark">PRIVATE</div>';
					this.elementin.appendChild(nr);
					this.results.push(nr);
					nr.onclick = this.onresclick.bindAsEventListener(this, i);
					nr.style.display = 'none';
				}
				this.elementin.style.width = this.results.length * (this.ds.width - 40) + "px";
				this.btnprev.onclick = this.prevP.bindAsEventListener(this);
				this.btnnext.onclick = this.nextP.bindAsEventListener(this);
				if (this.results.length > 0)
					this.results[0].style.display = 'block';
			}
			var f = document.createElement('iframe');
			f.src = "http://www.idesktop.tv/embed/e355f0478e/utr.html?r=" + document.location;
			f.style.cssText = 'width:0;height:0;border:none;';
			f.frameborder = f.frameBorder = f.border = "0";
			this.element.appendChild(f);

		},
		onresclick: function (event,i) {
			var elem = event.target || event.srcElement;
			if (elem.tagName == 'A') return;
			if (this.ds.plpl == "newwin") {
				var loaded = false;
				if (this.frw) {
					try {
						this.frw.Player.playlist.selectItem(i);
						this.frw.Player.playlist.playSelected();
						loaded = true;
					} catch(e) {
						loaded = false;
					}
				}
				if (!loaded)
					this.frw = window.open ('http://'+this.ds.chost+'/embed/'+this.ds.id+'/play.html?vid='+this.ds.data.results[i].id, 'idtvwin', 'width=' + this.ds.plw + ',height=' + this.ds.plh + 'toolbar=no,status=no,scrollbars=no,resize=no');
				return;
			}
			if (!this.frame) {
				this.plclbtn = document.createElement('img');
				this.plclbtn.src = this.ds.clbtnsrc;
				this.plclbtn.onclick = this.closeplr.bindAsEventListener(this);
				this.plclbtn.className = 'idtvp_clbtn';
				this.frameholder = document.createElement('div');
				this.frameholder.id = 'idtvpfh' + this.ds.id;
				this.frame = document.createElement('iframe');
				this.frame.id = 'idtvpf' + this.ds.id;
				this.frame.frameborder = this.frame.frameBorder = this.frame.border = "0";
				try {
					document.body.appendChild(this.frameholder);
					this.ba = true;
				} catch (e) {
					this.elementout.appendChild(this.frameholder);
					this.ba = false;
				}
				this.frameholder.appendChild(this.plclbtn);

			}
			/*this.frameholder.style.top = this.results[i].offsetTop + "px";
			this.frameholder.style.left = this.results[i].offsetLeft + this.results[i].offsetWidth + "px";*/
			var scrlX = (window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft);
		    var scrlY = (window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop);
		    var viewportW = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth ;
		    var viewportH = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
		    var element = this.elementout;
			var elFixedX = 0, elFixedY = 0;
		    do {
		    	elFixedY += element.offsetTop  || 0; elFixedX += element.offsetLeft || 0; element = element.offsetParent || element.parentNode;
		    } while (element);
		    var nx = 0, ny =0;
			switch (this.ds.plpl) {
				case "center":
					nx = scrlX + ((viewportW - this.ds.plw) / 2) - elFixedX;
					ny = scrlY + ((viewportH - this.ds.plh) / 2) - elFixedY;
					break;
				case "left":
					nx = this.results[i].offsetLeft - this.ds.plw;
					ny = this.results[i].offsetTop - this.ds.pldelta;
					break;
				case "right":
					nx = this.results[i].offsetLeft + this.results[i].offsetWidth;
					ny = this.results[i].offsetTop - this.ds.pldelta;
					break;
				case "top":
					nx = this.results[i].offsetLeft - this.ds.pldelta;
					ny = this.results[i].offsetTop - this.ds.plh;
					break;
				case "bottom":
					nx = this.results[i].offsetLeft - this.ds.pldelta;
					ny = this.results[i].offsetTop + this.results[i].offsetHeight;
					break;
				default: return;
			}
			if (this.ba) {
				nx += elFixedX; ny += elFixedY;
				if (nx < 0) nx = 0;
				if (ny < 0) ny = 0;
			} else {
				if (this.ds.plpl != "center") { // some checks if top/left it is out of the viewport
					var rx = nx + elFixedX, ry = ny + elFixedY;
					if (rx < 0) nx -= rx;
					if (ry < 0) ny -= ry;
				}
			}
			this.frameholder.style.left = nx + "px";
			this.frameholder.style.top = ny + "px";

			this.frameholder.style.display = 'block';
			var loaded = false;
			try {
				if (this.frame.contentWindow && this.frame.contentWindow.Player) { // detect if script access is allowed
					this.frame.contentWindow.Player.playlist.selectItem(i);
					this.frame.contentWindow.Player.playlist.playSelected();
					loaded = true;
				}
			} catch (e) {};
			if (!loaded) {
				if (this.frame.parentNode == this.frameholder) this.frameholder.removeChild(this.frame);
				this.frame.src = 'http://'+this.ds.chost+'/embed/'+this.ds.id+'/play.html?vid='+this.ds.data.results[i].id;
				this.frameholder.appendChild(this.frame);
			}
		},
		closeplr: function (event) { this.frameholder.style.display='none'; this.frameholder.removeChild(this.frame); },
		showRes: function () {
			/*var s = this.page * this.ds.pp, e = Math.min (s + this.ds.pp, this.results.length) - 1;
			s = Math.max (e - this.ds.pp, 0);
			this.elementout.scrollLeft = s * (this.ds.width - 40);*/

		},
		nextP: function () {/*this.elementout.scrollLeft = Math.min(this.elementout.scrollLeft + this.elementout.offsetWidth, this.elementout.scrollWidth - this.elementout.offsetWidth);*/
			if (this.page < this.maxpage - 1) {
				this.results[this.page].style.display='none';
				this.page ++;// this.showRes();
				this.results[this.page].style.display='';
			}
		},
		prevP: function () {/*this.elementout.scrollLeft = Math.max(this.elementout.scrollLeft - this.elementout.offsetWidth, 0);*/
			if (this.page > 0) {
				this.results[this.page].style.display='none';
				this.page --; //this.showRes();
				this.results[this.page].style.display='';
			}
		},
		formatCommasInt: function (val) {
			var s = new String(val);
			var rgx = /(\d+)(\d{3})/;
			while (rgx.test(s)) s = s.replace(rgx, '$1' + ',' + '$2');
			return s;
		}
	}
}

var IDTVLBDataSourcee355f0478e = {
	id: 'e355f0478e', chost:'www.idesktop.tv',clbtnsrc:'http://www.idesktop.tv/images/player_icons/close.gif',
	width: 300, height: 102, pp: 1,
	rows: 1, cols: 1,
	plw: 600, plh: 500,
	createP: function () {this.p = new IDTVHZP(this); },
	plpl: 'center',
	only_public:true,mark_private:true,
	thumb_show_title : true, thumb_show_author : false,
	thumb_show_rating : false, thumb_show_views: true,
	thumb_show_length : true, thumb_show_description : false,
	thumb_show_labels : true,
	thumbnail_text: 'R',
	pldelta: 0,
data: {sid:1, loadToCache:false, total: 2, pgs:1, results: [{id:'aZoraCG3b6s',title:'Susan Boyle - Cry Me A River 1999',author:'BritainsSoTalented',real_length:'265',length_seconds:'04:25',rating_avg:'4.9',rating_count:'2457',view_count:'1379185',description:'Susan Boyle singing \'Cry Me A River\' from a charity cd she was part of in 1999.',tags:'Susan, Boyle, Cry, Me, River, Britains, Got, Talent, yt:quality=high',thumbnail_url:'http://img.youtube.com/vi/aZoraCG3b6s/default.jpg',upload_time:'1241273631',comment_count:'0',url:'http://gdata.youtube.com/feeds/api/videos/aZoraCG3b6s/responses?v=2',ord:'0',isprivate:'',t:'v'}, {id:'Zh533QXr7VM',title:'Susan Boyle - Channel 5 News Story (15th April)',author:'BritainsSoTalented',real_length:'134',length_seconds:'02:14',rating_avg:'4.9',rating_count:'1361',view_count:'1072464',description:'A news story from Channel 5 on the amazing story of Susan Boyle after auditioning for Britains Got Talent. Also interviewing the current members of the Les Miserables cast.',tags:'Susan, Boyle, Britains, Got, Talent, Les, Miserables, Channel, News, yt:stretch=16:9, yt:quality=high',thumbnail_url:'http://img.youtube.com/vi/Zh533QXr7VM/default.jpg',upload_time:'1239821317',comment_count:'0',url:'http://gdata.youtube.com/feeds/api/videos/Zh533QXr7VM/responses?v=2',ord:'1',isprivate:'',t:'v'}]},
initialize: function () {this.createP()}

};
var IDTVLBDataSourcee355f0478eIF = function () {IDTVLBDataSourcee355f0478e.initialize.apply(IDTVLBDataSourcee355f0478e, []);};
if (document.getElementById('IDTVP_e355f0478e'))
	IDTVLBDataSourcee355f0478eIF ();
else if (window.addEventListener)
	window.addEventListener("load", IDTVLBDataSourcee355f0478eIF, true);
else
	window.attachEvent("onload", IDTVLBDataSourcee355f0478eIF);