<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<meta http-equiv="Content-language" content="en">
	<meta name="description" content="Graphical Editors for your DSL">
	 
	<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
	<script type="text/javascript" src="js/magnific-popup.min.js"></script>
	<script type="application/json" src="json/presentations.json"></script>
	<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
	<script src="angular/sirius.js"></script>
	
	<link rel="icon" type="image/png" href="favicon.ico" />
	<title>Sirius - Presentations</title>
	<link type="text/css" rel="stylesheet" href="css/style.css" />	
	<link type="text/css" rel="stylesheet" href="css/media.css" />	
	<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'> 
	<link href='https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300italic,700,300' rel='stylesheet' type='text/css'>
	<link rel="stylesheet" href="https://use.fontawesome.com/ef6567f233.css">
	
	<!-- Eclipse Foundation Google Tag Manager -->
	<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
	new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
	j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
	'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
	})(window,document,'script','dataLayer','GTM-5WLCZXC');</script>
	<!-- End Google Tag Manager -->  
	
	<!-- Eclipse Foundation cookie consent: -->
	<link rel="stylesheet" type="text/css" href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css" />
	<script src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
	<script type="text/javascript" src="js/ga.js"></script>
</head>
	
<body ng-app="sirius" ng-controller="main" class="cloak">
<ng-include src="'angular/blocks/header.html'"></ng-include>

<div id="body_wrapper" >
	<h1 class="page_title">Presentations</h1>
</div> <!-- Fin body_wrapper -->

	<div id="presentations" class="videos"></div>
		<script type="text/javascript">
		
	  		jQuery.getJSON('json/presentations.json', function(data) {
	  			var output = " " ;
	
		        for (var k in data.presentations) {
		        	var thumb = " ";
		        	var header = " ";
		        	var title = " ";
		       
					thumb += "<div class='video_thumbnail'><a class='popup-youtube' href='" + data.presentations[k].header.lnk + "'><img src='" + data.presentations[k].thumb.photoSrc + "'  /></a></div>";
					title += "<h3><a class='popup-youtube indigo' href='" + data.presentations[k].header.lnk + "'>" + data.presentations[k].header.title + "</a></h3>";
	         		header += "<header class='video_title centered'>" + title + "</header>";
					
					output += "<div class='col_3'>" + thumb + header + "</div>";
					
		        }
		        
		        document.getElementById("presentations").innerHTML=output;
		       
		        var divs = $("#presentations > .col_3");
				for(var i = 0; i < data.presentations.length; i+=3) {
					  divs.slice(i, i+3).wrapAll("<section><article class='row'></article></section>");
				}
		        
		        $('.popup-youtube').magnificPopup({
		    		disableOn: 700,
		    		type: 'iframe',
		    		mainClass: 'mfp-fade',
		    		removalDelay: 160,
		    		preloader: false,

		    		fixedContentPos: false
		    	});
		    	
	 		 });
	  		
	   	</script>

<div class="clear"></div>
<ng-include src="'angular/blocks/footer.html'"></ng-include>
<ng-include src="'angular/blocks/call2action.html'"></ng-include>
</body>
</html>
