﻿var PayLoader = function(payLink, element, movID, playerID){
	var overlay = $('<div id="toggleBar"/>'),
		__empty = {},
		timeout = 0,
		frame = __empty, 
		failure = function(message){
			$('.messageFrame',overlay).remove();
			overlay.prepend('<div class="messageFrame"><p class="failure">' +  decodeURI(message) + '</p></div>');
		},
		stopwaiting = function(){
			if(frame != __empty){
				frame.toggle();
				frame = __empty;
			}
			clearTimeout(timeout);
			setTimeout(function(){$('#waiting').remove();},20);
		},
		keepwaiting = function(){
			timeout = setTimeout(function(){
				var w = $('#waiting');
				if(w.length > 0){
					try{
						var l = parseInt(w.css('backgroundPosition').split(' ').pop());
						l = l == 30 ?  0 : l +2;
						w.css('backgroundPosition', '0 '+l+'px');
					}catch(e){;}
					keepwaiting();
				}
			}, 20);
		},
		startwaiting = function(){
			if($('#waiting').length == 0){
				overlay.append('<div id="waiting"/>');
				keepwaiting();
			}
		},
		toHTML = function(html){
			return $(decodeURI(html));
		},
		closeCommand = function(){
			var	close = $('<p class="close"><span>schließen</span></p>').
							click(function(){overlay.empty().remove();}).
							css({marginTop: '-12px', marginLeft: (overlay.innerWidth()-82)+'px', cursor:'pointer'});
			overlay.prepend(close);
		},
		movedResponse = function(){
			alert('moved');
		},
		responseDummy = function(){alert('ooops!');},
		submitCommand = function(buttons){ // existierende submitbuttons werden zu ajaxCommands
			
			buttons.click(function(e){
				e.preventDefault();
				e.stopPropagation();
				try{
					startwaiting();
					requestData = $(this.form).serialize();
					$.post('/modules/channel/controller.php', requestData,
							 responseDummy, 'json');
					
				}catch(ex){;}
				return false;
			});
		},
		loginForm = function(html){ // manche formulare haben noch spezailitaeten
			$('a[href*=anmelden]', html).click(function(e){
				e.preventDefault();
				e.stopPropagation();
				$.post('/modules/channel/controller.php',{aktion:'anmelden'}, responseDummy, 'json');
				return false;
			});
		},
		readResponse = function(data, ResponseCode){
			//console.log('ResponseCode: ' + ResponseCode);
			if(data.result == 'success'){
				if(data.html){		
					var html = toHTML(data.html),
						isform = html[0].nodeName == 'FORM' || $('form', html).length > 0;
					overlay.empty();
					if(isform){
						switch(html.attr('id')){
							case 'loginForm': loginForm(html); break;
							//case 'selectPayment': paymentForms(html); break;
						}
						submitCommand($('input[type=submit]',html), this);
					}
					stopwaiting();
					overlay.append(html);
				}else if(data.location){
					document.location.href = data.location.split('\/').join('/');
					return;
				}else if(data.movie){
					stopwaiting();
					$(element).html('<p>Danke und viel Spass bei dem Clip!</p>');
					overlay.remove();
					var player = client == 'browser' ? new Player99(playerID) : new Video99(playerID);
					player.start(data.movie, data.poster, data.price ? {movID:0,preis:data.price} : false, data.titel, unescape(data.description), false);
				}
			}else{
				stopwaiting();
				failure(data.message);
			}
			if($('p.close', overlay).length == 0){
				closeCommand();
			}else{
				setTimeout(function(){
					$('.messageFrame',overlay).animate( {opacity:0}, 'slow', 'linear', $(this).remove);
				}, 8000);
			}
		};
		responseDummy = readResponse;
		$(payLink).click(function(){
				$.post('/modules/channel/controller.php',{movie_id:movID,aktion:'viewMovie', player_id:playerID}, readResponse, 'json');
				element.append(overlay);
				startwaiting();
		});
	
};

var Video99 = function(playerID){
	this.start = function(stream, poster, toPay, titel, description, after){
		if(stream){
			$('#'+playerID).html('<video controls="controls" src="http://62.113.210.145/99pro-vod/_definst_/mp4:'+stream+'_480p.mp4/playlist.m3u8" poster="/index.php?rex_resize=620w__350h__'+poster+'" width="620" height="350"></video>');
		}else{
			$('#'+playerID).html('<img src="/index.php?rex_resize=620w__350h__' + poster + '"/>');
		}
		$('#movieInfos').remove();
		var infos = $('<div id="movieInfos"><p class="movieDescription">'+description+'</p></div>');
		$('#'+playerID).parent('.playerframe').append(infos);
		if(toPay && toPay.movID){	
			var payLink = $('<p class="toPay moviepreis" style="cursor:pointer;">Clip kaufen <br/>0,'+toPay.preis+'</p>'),
				dyn = $('<div class="palyLink"/>');
			infos.append(payLink).append('<br class="clearall"/>').append(dyn);
			return new PayLoader(payLink, dyn, toPay.movID, playerID );
		}else if(toPay && toPay.preis > 0){
			var payLink = $('<p class="toPay moviepreis" style="cursor:pointer;">Clip kaufen <br/>0,'+toPay.preis+'</p>');
			infos.append(payLink);
			infos.append('<br class="clearall"/>');
		}else{
			var payLink = $('<p class="noPay moviepreis">gratis ansehen</p>');
			infos.append(payLink);
			infos.append('<br class="clearall"/>');
			return {};
		}
	};
};
var Player99 = function(playerID){
	this.start = function(stream, poster, toPay, titel, description, after){
		var liste = [{
				  	   autoPlay: false,
				  	   provider: 'rtmp',
				       urlResolvers: 'bwcheck',
				       scaling:      'fit', 
				       bitrates:[
				  	       { bitrate:1600, url:'mp4:' + stream + '_480p.mp4' },
				  	       { bitrate:900, url:'mp4:' + stream + '_360p.mp4' },
				  	       { bitrate:240, url:'mp4:' + stream + '_handy.mp4' }  	
				  	   ]
		  			}];

		if(toPay && toPay.movID && after){
			liste.push({
					  autoplay:true,
					  url:'/index.php?{rex_resize:620w__350h__dk_werbestar_2.png}',
					  queryString:escape('filter=foobar'),
					  onBegin: function(){
					  		this.getPlugin('play').hide();
				  		} 
				  	  });
		}else{
			liste[0].onBeforeFinish = function(){
				this.getPlugin('play').hide(); 
			};
			
		}
		if(titel){
			$('h2.underline', $('#'+playerID).parent()).html(titel);
		}
		if(stream){
			$('#'+playerID).empty();
			$f(playerID, {wmode: "transparent", src: "/player/flowplayer.commercial-3.2.7-2.swf"}, { 
					  key: '#$16366b5c6c21f1d73ca',
					  playlist: liste,
					  plugins: {
					  		rtmp: {
					  			url: '/player/flowplayer.rtmp-3.2.3.swf',
					  			netConnectionUrl: 'rtmp://62.113.210.145/99pro-vod/'
					  		},
					 		bwcheck: { 
					  	       		url:'/player/flowplayer.bwcheck-3.2.5.swf',
					  	       		enableDynamic:true,
					  	       		serverType: 'wowza',
					   	       		defaultBitrate:240,
					  	       		rememberBitrate:false,
					  	       		netConnectionUrl:'rtmp://62.113.210.145/99pro-vod/'
					  		},
					  		content: {
					            url: '/player/flowplayer.content-3.2.0.swf',
					            top: 0, left: 0, width: 620, height: 350,
					            backgroundColor: 'transparent',               
                      backgroundGradient: 'none', border: 0,
					            textDecoration: 'outline', 
					            style: {  
					                body: {  
					                    fontSize: 14,
					                    fontFamily: 'Arial', 
					                    textAlign: 'center', 
					                    color: '#ffffff' 
					                }  
					            }
					  		}
					  },
					  canvas: {
						  backgroundImage: '/index.php?rex_resize=620w__350h__' + poster  
					  },
					  onBeforeFullscreen: function () {
						  this.getPlugin("canvas").css({ backgroundImage: "url()" });
			          }
			});
		}else{
			$('#'+playerID).html('<img src="/index.php?rex_resize=620w__350h__' + poster + '"/>');
		}
		$('#movieInfos').remove();
		var infos = $('<div id="movieInfos"><p class="movieDescription">'+description+'</p></div>');
		$('#'+playerID).parent('.playerframe').append(infos);
		if(toPay && toPay.movID){	
			var payLink = $('<p class="toPay moviepreis" style="cursor:pointer;">Clip kaufen <br/>0,'+toPay.preis+'</p>'),
				dyn = $('<div class="palyLink"/>');
			infos.append(payLink).append('<br class="clearall"/>').append(dyn);
			return new PayLoader(payLink, dyn, toPay.movID, playerID );
		}else if(toPay && toPay.preis > 0){
			var payLink = $('<p class="toPay moviepreis" style="cursor:pointer;">Clip bezahlt <br/>0,'+toPay.preis+'</p>');
			infos.append(payLink);
			infos.append('<br class="clearall"/>');
		}else{
			var payLink = $('<p class="noPay moviepreis">gratis ansehen</p>');
			infos.append(payLink);
			infos.append('<br class="clearall"/>');
			return {};
		}
	};
};

$(document).ready(function(){
	var len = $('.movieclip_proxy').length,
		all = location.search.search(/view=[0-9]+$/);
		payLoader = {},
		query = (function(){
			var q = document.location.search.substring(1).split('&'),
				r = {},
				p;
			for(var i = 0, l = q.length; i < l; i++){
				p = q[i].split('=');
				r[p[0]] = p[1];
			}
			return r;
			})(),
		pageShow = function(newliste){
			$('.movieListe').animate({opacity:0},200,'linear',function(){
				$('.movieListe').hide();
				newliste.show().animate({opacity:1},400);
			});
		};
		
	if(all != -1){
		var view = document.location.search.substr(all+5),
			mitVorschau = true;
		all = false;
	}else{
		var mitVorschau = false;
		all = len < 4;
	}
	if(!all){
		var playerHTML = '<div class="container playerframe"><h2 class="underline"></h2><div id="playerFrame" style="width:620px;height:350px;"></div></div>',
			player = client == 'browser' ? new Player99('playerFrame') : new Video99('playerFrame'),
			page = $('<div class="container page"/>'),
			linkPages =  $('<div class="pager" style="height:34px;text-align:center;width:200px;margin:auto;margin-top:12px;"/>'),
			navigation = $('<div id="listeNavigation"/>'),
			liste = $('<div class="container movieListe" id="liste1"/>'),
			oldListe = {};
		page.append(liste);
	}
 
	$('.movieclip_proxy').each(function(idx){
		var relations = $(this).attr('rel'),
			parts = relations.split(':'),
			stream = parts[0],
			poster = parts[1],
			preis = parts[2] || false,
			movID = parts[3],
			after = parts[4] || false,
			title = $(this).attr('title'),
			description = $(this).html();
		//console.log(relations);
		if(idx == 0 || all){
			if(all){
				var playerHTMLall = $('<div class="container playerframe"><h2 class="underline">'+title+'</h2><div id="player_'+ movID +'" style="width:620px;height:350px;"></div></div>'),
					playerall = client == 'browser' ? new Player99('player_'+movID) : new Video99('player_'+movID);
				$(this).parent().replaceWith(playerHTMLall);
				payLoader = playerall.start(stream, poster, preis ? {'movID':movID,'preis':preis} : false, false, description, after);
			}else{
				var parent = $(this).parent();
				$(this).parents('.bc_h').before('<div class="bc_h"><div class="bc_co">' + playerHTML + '</div></div><div class="bc_f"></div>');
				parent.before(page);
			}
			
		}
		if(!all){
			var $p = {};
			if(this.id == 'mov_'+view || (idx == 0 && !mitVorschau) || (view == '00' && idx == 0) ){
				payLoader = player.start(stream, poster, preis ? {'movID':movID,'preis':preis} : false, title, description, after);
			}
			$p = $('<div class="movieclip'+(idx%3?'':' first')+' page'+(Math.floor( idx/12 ))+'" id="'+this.id+'"><img src="/index.php?rex_resize=194w__114h__'+ poster +'&amp;rex_filter[]=brand"/><p>'+title+'</p></div>');
			
			$p.click(function(){
				payLoader = player.start(stream, poster, preis ? {'movID':movID,'preis':preis} : false, title, description, after);
				scrollTo(0, $('#playerFrame').offset().top - 50);
			});
			
			liste.append($p);
			$(this).parent().remove();
			
			if((idx % 3 == 2 ) || idx + 1 == len ){
				liste.append('<br class="clearleft"/>');
			}
			if( idx % 12 == 11 || idx + 1 == len){// das duzend ist voll
				//console.log('das duzend ist voll');	
				if(idx > 11){ // es gab schon vorher seiten
					
					var prev = $('<span style="cursor:pointer;display:block;float:left;padding-top:12px;">vorherige Seite</span>').click(function(){
						pageShow(oldListe);
					});
					liste.append(prev);
				}
				var number = (Math.ceil(idx/12));
				linkPages.append( $('<span title="Seite '+number+'" style="cursor:pointer;display:inline-block;padding:4px 12px;'+(number==1?'border-left:0':'')+'">'+number+'</span>').
						click( (function(liste){
								return function(){ pageShow(liste, this);};
						})(liste) ));
				if(len > idx + 1){// und es kommen noch weitere
					oldListe = liste;
					liste = $('<div class="container movieListe" style="display:none;opacity:0" id="liste'+(number+1)+'"/>');
					page.append(liste);
					var next = $('<span style="cursor:pointer;display:block;float:right;padding-top:12px;">nächste Seite</span>').click(function(){
						pageShow(liste);
					});
					oldListe.append(next);
				}else if(number > 1){
					page.append(linkPages);
				}
			} 
		}
	});

	if(query.result){
		if(query.token || query.TOKEN){
	      	$.post('/modules/channel/controller.php', {payresult:query.result,TOKEN:query.TOKEN||query.token}, function(data){
	      		if(data.result == 'success'){
	      			movieStream = data.movie;
	      			var player = client == 'browser' ? new Player99(data.player) : new Video99(data.player);
	      			//(stream, poster, toPay, titel, description, after)
	      			player.start(data.movie, data.poster, {'movID':false,'preis':data.price}, data.titel, data.description ? data.description : '');
	      		}
	      	},'json');
	    }
	}
	if(query.tok){
      $.ajax({data:{tok:query.tok,toko:'jepp'}});
	}
});
