<!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/videos.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 - Videos</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>
</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">Videos</h1>
</div> <!-- Fin body_wrapper -->

	<div id="videos" class="videos"></div>
		<script type="text/javascript">
		
	  		jQuery.getJSON('json/videos.json', function(data) {
	  			var output = " " ;
	
		        for (var k in data.videos) {
		        	var thumb = " ";
		        	var header = " ";
		        	var title = " ";
		       
					thumb += "<div class='video_thumbnail'><a class='popup-youtube' href='" + data.videos[k].header.lnk + "'><img src='" + data.videos[k].thumb.photoSrc + "'  /></a></div>";
					title += "<h3><a class='popup-youtube indigo' href='" + data.videos[k].header.lnk + "'>" + data.videos[k].header.title + "</a></h3>";
	         		header += "<header class='video_title centered'>" + title + "</header>";
					
					output += "<div class='col_3'>" + thumb + header + "</div>";
					
		        }
		        
		        document.getElementById("videos").innerHTML=output;
		       
		        var divs = $("#videos > .col_3");
				for(var i = 0; i < data.videos.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>
