var shortUrlPrefix = '[medm.rezpondr.com]';

function playerReady(obj) { player.playerReady(); };
function playerStateListener(state) { playlist.stateListener(state); };

var playlist = {
	stateListener: function(state) {}
}

function initSomeShit() {
	jQuery(".content").slideBox({width: "100%", height: "500px", position: "top"});
      
	// cool code isn't??
    jQuery('#schedule-item').click(function() {
        jQuery('#schedule-item a').addClass("active");
        jQuery('#switch-back-item a').removeClass("active");
        jQuery('#pop-out-item a').removeClass("active");
        
        jQuery("#schedule").show();
        jQuery("#switch-back").hide();
        });
        
    jQuery('#switch-back-item').click(function() {
        jQuery('#switch-back-item a').addClass("active");
        jQuery('#schedule-item a').removeClass("active");
        jQuery('#pop-out-item a').removeClass("active");
        
        jQuery("#switch-back").show();
        jQuery("#schedule").hide();
        });
        
    jQuery('#pop-out-item').click(function() {
        jQuery('#pop-out-item a').addClass("active");
        jQuery('#schedule-item a').removeClass("active");
        jQuery('#switch-back-item a').removeClass("active");
        
        jQuery("#switch-back").hide();
        jQuery("#schedule").hide();
        });
}

var player = {
	playerWrapperId: 	 'video',
	playerPlaceholderId: 'videoPlaceholder',
	playerId: 			 'rezpondaPlayer',
	height: 			  327,
	width: 				  560,
	instance:   		  new Object(),
	init: function() {
		if (livestream && livestream != 'default') {
			this.remove();
	        var attributes = {
	            id: 				this.playerId,
	            name: 				this.playerId
	        };
	        swfobject.embedSWF(livestream.url, this.playerPlaceholderId, this.width, this.height, '9.0.115', false, livestream.flashvars, livestream.params, attributes);
		} else {
			this.play('http://48hrs.rezpondr.com/rss/2.0/service/audioboo?limit=100', {
	            playlist: 		'right',
	            playlistsize: 	280,
				autostart: 		'false',
				playerUri: 		'/themes/48denmark/player.swf'
			});
		}
	},
	playLivestream: function(index) {
		if (livestreamsList[index]) {
			this.remove();
			var attributes = {
	            id: 				this.playerId,
	            name: 				this.playerId
	        };
			swfobject.embedSWF(livestreamsList[index].url, this.playerPlaceholderId, this.width, this.height, '9.0.115', false, livestreamsList[index].flashvars, livestreamsList[index].params, attributes);
		}
	},
	playerReady: function() {
		this.instance = document.getElementById(player.playerId);
		this.instance.addModelListener('STATE', 'playerStateListener');
		
		if (directMedia.items) {
			directMedia.items[0].type = directMedia.type;
			playlist.playItem(directMedia.items[0]);
			directMedia.items = false;
		}
			
	},
	playClever: function(item) {
		var conf = sConf[item.sType];
		if (conf.playlist) {
			var playlistUri = 'http://' + subdomainName + '.' + domainName + '/';
			playlistUri += 'rss/2.0/service/' + item.sType + '/?page=0&limit=50';
			
			var params = {
	            item: 			0,
	            playlist: 		'right',
	            playlistsize: 	player.width,
			};
			if (item.sType == 'audioboo') {
				params.playlistsize = 280;
				params.playerUri = '/themes/48denmark/player.swf';
			}
			player.play(playlistUri, params);
			return;
		}


		switch (item.sType) {
			case 'twelveSecondes':
			case 'blip':
			case 'qik':
			case 'phreadz':
			case 'seesmic':
				player.play(item.mData);
				break;
			case 'youtube':
				player.play(escape(item.link));
				break;
			case 'vimeo':
				player.playVimeo(item);
				break;
			case 'viddler':
				player.playViddler(item);
				break;
			case 'revver':
				player.playRevver(item);
				break;
			case 'seesmic':
				player.playSeesmic(item);
				break; 
			case 'bambuser':
				player.playBambuser(item);
				break;
			case 'howcast':
				player.playHowcast(item);
				break;
			case 'twitter':
				alert('yay! its twitter');
				break;
			default: 
				alert('unknown media type');
		}
	},
	// Common format
	play: function(theFile, optParams) {
		this.remove();
		
		var flashvars = {
        	file: 				theFile,
            autostart: 			'true',
			backcolor:			'0xFFFFFF',
			frontcolor:			'0x999999',
			lightcolor:			'0xEEEEEE',
			screencolor:		'0xFFFFFF',
			stretching: 		'fill',
			playlistitembackcolor: '0xFFFFFF',
			controlbar: 		'over'
        };

		if (optParams) {
			if (optParams.image) flashvars.image = optParams.image;
			if (optParams.item) flashvars.item = optParams.item;
			if (optParams.playlist) flashvars.playlist = optParams.playlist;
            if (optParams.playlistsize) flashvars.playlistsize = optParams.playlistsize;
			if (optParams.skin) flashvars.skin = optParams.skin;
			if (optParams.autostart) flashvars.autostart = optParams.autostart;
			if (optParams.controlbar) flashvars.controlbar = optParams.controlbar;
			
		}
		
        var params = {
            allowfullscreen: 	'true',
            allowscriptaccess: 	'always'
        };
        var attributes = {
            id: 				this.playerId,
            name: 				this.playerId
        };
		
		var playerUri = '/mediaplayer-4.1.60/player.swf';
		
		if (optParams && optParams.playerUri) {
			playerUri = optParams.playerUri;
		}
		
        swfobject.embedSWF(playerUri, this.playerPlaceholderId, this.width, this.height, '9.0.115', false, flashvars, params, attributes);
	},
	// Bambuser
	playBambuser: function(item) {
		this.remove();

		var flashvars = {
			vid: 				item.guid,
			autostart:  		'yes'
		};
        var params = {
            allowfullscreen: 	'true',
            allowscriptaccess: 	'always',
			movie: 				'http://bambuser.com/r/player.swf'
        };
        var attributes = {
            id: 				this.playerId,
            name: 				this.playerId
        };
		swfobject.embedSWF('http://bambuser.com/r/player.swf', this.playerPlaceholderId, this.width, this.height - 1, '9.0.115', false, flashvars, params, attributes);
	},
	remove: function() {
		swfobject.removeSWF(this.playerId);
        var tmp = document.getElementById(this.playerWrapperId);
        if (tmp) { tmp.innerHTML = '<div id=' + this.playerPlaceholderId + '></div>'; }
		scroll(0, 0);
	},
};



var rez = {
	loggedIn: false,
	data: new Object(),
	resizing: false,
	init: function() {
		// hide the uservoice tab
		setTimeout(function() {
			$('#uservoice-feedback-tab').hide();
		}, 1500);
		
		//console.log(UserVoice);
		
		initSomeShit();
		
		rez.checkState(true);
		rez.timer();
		
		$.each($('select[service]'), function(i, s) {
			$(this).change(function() {
				rez.loadService($(this).attr('service'), { type: 'customService', service: $(this).val() });
			});
		});
		
		slideMenu.build('accordion-menu', 812, 10, 10, 1);
	},
	timer: function() {
		setTimeout(function() {
			rez.checkState(false);
			rez.timer();
		}, 30000);
	},
	checkState: function(force) {
		var force = force == true ? 'force=true' : '';
		var params = '';
		for (var type in rez.services) {
			params += '&params[' + type + '][limit]=' + rez.services[type].rows;
			params += '&params[' + type + '][page]=' + rez.services[type].page;
			params += '&params[' + type + '][service]=' + rez.services[type].service;
		}

		$.ajax({
	        type:   	'get',
	        url:    	'/services/state?' + force,
			dataType: 	'json',
			data: 		params,
	        success: 	function(response) {
				if (!checkServerResponse(response)) { return; }
				for (var type in response.result.services) {
					if (response.result.services[type].items) {
						rez.customRowBuild(type, { type: 'init' }, response.result.services[type]);
						rez.data[type] = response.result.services[type].items;
					}
				}

				if (response.result.streamPlayer) {
					livestream = response.result.streamPlayer;
					player.init();
				}
			}
		});
	},
	loadService: function(type, argObj) {
		if (argObj.type == 'forward') {
			rez.services[type].page++;
		} else if (argObj.type == 'backward') {
			if (rez.services[type].page != 0) rez.services[type].page--;
			else return;
		} else if (argObj.rows == 'more') {
			rez.services[type].rows += 9;
		} else if (argObj.rows == 'less') {
			if (rez.services[type].rows != 9) rez.services[type].rows -= 9;
			else return;
		} else if (argObj.type == 'customService') {
			rez.services[type].page = 0;
			rez.services[type].service = argObj.service;
		} else return;

		var params = '&params[' + type + '][limit]=' + rez.services[type].rows;
		params += '&params[' + type + '][page]=' + rez.services[type].page;
		params += '&params[' + type + '][service]=' + rez.services[type].service;

		$.ajax({
	        type:   	'get',
	        url:    	'/services/load-items/type/' + type,
			dataType: 	'json',
			data:   	params,
	        success: 	function(response) {
				if (!checkServerResponse(response)) { return; }
				if (response.result[type] && response.result[type].items) {
					rez.customRowBuild(type, argObj, response.result[type]);
					rez.data[type] = response.result[type].items;
				}
			}
		});
	},
	customRowBuild: function(type, argObj, data) {
		if (!rez.services[type]) return;
		
		var cId = '#' + type + 'Res';
		$(cId).empty();
		rez.services[type].build(data.items);
		
		lightbox.initTt();
		picturePreview.init();
	},
	rowBuildVideo: function(type, data, playCallback) {
		var div = $('<div />').appendTo('#' + type + 'Res');
		if (data.isHidden == 1) div.addClass('hidden'); 

		var a = $('<a href="javascript:;" class="tt"/>').appendTo(div).attr({
			s: data.serviceId,
			i: data.id,
			t: type
		});
	
		var img = $('<img alt="thumbnail" class="rowThumbnail"/>').appendTo(a).attr({
			src: data.pData,
			title: data.title
		}).click(playCallback);
	},
	rowBuildPhoto: function(type, data, playCallback) {
		var div = $('<div class="footer-div" />').appendTo('#' + type + 'Res');
		if (data.isHidden == 1) div.addClass('hidden');
	
		var a = $('<a href="javascript:void(0);" />').appendTo(div);
		var img = $('<img alt="thumbnail" class="rowThumbnail"/>').appendTo(a).attr({
			src: data.pData,
			title: data.title
		}).click(playCallback);
		
	}
};
rez.services = {};

rez.services.flickr = {
	page: 0,
	rows: 7,
	service: 0,
	build: function(data) {
		$.each(data, function(i, m) {
			if (!m.pData) return;
			m.pData = m.pData.substring(0, m.pData.length - 6) + m.pData.substring(m.pData.length - 4);
			rez.rowBuildPhoto('flickr', m, function() {
				rez.services.flickr.play(i);
			});
		});
	},
	play: function(index) {
		if (this.service == 0) {
			var playlistUri = 'http://' + subdomainName + '.' + domainName + '/rss/2.0/service/flickr?page=0&limit=50';
		} else {
			var playlistUri = 'http://' + subdomainName + '.' + domainName + '/rss/2.0/service/' + this.service;
		}
		
		player.play(playlistUri, {
            item: 			index,
            playlist: 		'right',
            playlistsize:  	100,
			controlbar: 	'none'
		});
	}
};
rez.services.twitter = {
	page: 0,
	rows: 7,
	service: 0,
	build: function(data) {
		$.each(data, function(i, t) {

			var div = $('<div />').addClass('white-box').appendTo('#twitterRes');
			var p = $('<p />').appendTo(div);

			if (t.pData != '') 
				var img = $('<img alt="" />').appendTo(p).attr('src', t.pData);
			else 
				var img = $('<img src="/themes/lifecast/images/guy.jpg" alt="" />').appendTo(p);

			var text = $('<div />').addClass('text').appendTo('#twitterRes');
			var a = $('<a target="blank" />').appendTo(text).attr({
				href: 'http://twitter.com/' + t.author,
				title: 'Open twitter account page in new window'
			}).html(t.author);	
			$('<br />').appendTo(text);

			$('<span />').appendTo(text).html(t.title).attr('title', t.pubDate);
			$('<div class="clearer"></div>').appendTo('#twitterRes');
		});
	}
};
rez.services.qik = {
	page: 0,
	rows: 7,
	service: 0,
	build: function(data) {
		$.each(data, function(i, m) {
			rez.rowBuildVideo('qik', m, function() {
				rez.services.qik.play(i);
			});
		});	
	},
	play: function(index) {
		var item = rez.data.qik[index];
		player.play(item.mData);
	}
};
rez.services.twelveSecondes = { 
	page: 0,
	rows: 7,
	service: 0,
	build: function(data) {
		$.each(data,function(i, m) {
			rez.rowBuildVideo('twelveSecondes', m, function() {
				rez.services.twelveSecondes.play(i);
			});
		});
	},
	play: function(index) {
		var item = rez.data.twelveSecondes[index];
		player.play(item.mData);
	}
};

rez.services.bambuser = {
	page: 0,
	rows: 7,
	service: 0,
	build: function(data) {
		$.each(data, function(i, m) {
			rez.rowBuildVideo('bambuser', m, function() {
				rez.services.bambuser.play(i);
			});
		});
	},
	play: function(index) {
		var item = rez.data.bambuser[index];
		player.playBambuser(item);
	}
};

rez.services.audioboo = {
	page: 0,
	rows: 7,
	service: 0,
	build: function(data) {
		$.each(data, function(i, m) {
			rez.rowBuildVideo('audioboo', m, function() {
				rez.services.audioboo.play(i);
			});
		});	
	},
	play: function(index) {
		var item = rez.data.audioboo[index];

		if (this.service == 0) {
			var playlistUri = 'http://' + subdomainName + '.' + domainName + '/rss/2.0/service/audioboo?page=' + this.page + '&limit=' + this.rows;
		} else {
			var playlistUri = 'http://' + subdomainName + '.' + domainName + '/rss/2.0/service/' + this.service;
		}

		player.play(playlistUri, {
        //    image: 			item.pData,
            item: 			index,
            playlist: 		'right',
            playlistsize: 	(player.width - 320)
		});
	}
};


rez.services.combi = {
	page: 0,
	rows: 7,
	service: 0,
	build: function(data) {
		$.each(data, function(i, m) {
			rez.rowBuildVideo('combi', m, function() {
				rez.services.combi.play(i);
			});
		});	
	},
	
	play: function(index) {
		var item = rez.data.combi[index];
		
		player.playClever(item);
	}
};

