diff --git a/public_html/deployment/classes/projectlist.class.php b/public_html/deployment/classes/projectlist.class.php
index 6569fd76c693d031df8a48cb8db7b27f123a21d8..155575b017c0453a8398761707072ed9ee3bca29 100644
--- a/public_html/deployment/classes/projectlist.class.php
+++ b/public_html/deployment/classes/projectlist.class.php
@@ -55,7 +55,6 @@ class projectlist extends base
         global $renderAdminLTE;
 
         $sOut = '';  // table
-        $sOut2 = ''; // tiles
         $oPrj = false;
         $sTrClass = "trproject";
         $sColClass = "tdphase";
@@ -145,35 +144,6 @@ class projectlist extends base
 
             $sErrors .= $oPrj->renderErrorBoxes();
 
-            /*
-            $sOut2 .= '<div class="' . $sClasses . ' prjbox"><div class="title">'
-                    .$oHtml->getLink(array(
-                        'href'=>'#',
-                        'onclick'=>'$(\'#prjfilter\').val(\'' . $sPrj . '\'); window.setTimeout(\'filterOverviewTable();\', 10);setview(\'extended\'); return false;',
-                        'style'=>'float: right;',
-                        'title'=>t("overview-filter-hint"),
-                        'icon'=>'filter',
-                        'label'=>t("overview-filter")
-                    ))
-                    . '<span class="float-right">'.$sPrjGroup.' </span>'
-                    .'<strong>'
-                    .$oHtml->getLink(array(
-                        'href'=>'/deployment/' . $sPrj . '/',
-                        'title'=>t("menu-project-home"). ' ' . $oPrj->getLabel(),
-                        'icon'=>'project',
-                        'label'=>'<strong>'.$oPrj->getLabel().'</strong>'
-                    ))
-                    .'</strong>'
-                    // . $sProgress
-                    . '</div>'
-                    . '<div class="box" '
-                    . 'onclick="location.href=\'/deployment/' . $sPrj . '/\'">'
-                    . $oPrj->getDescription()
-                    . '<br>'
-                    . '';
-            */
-
-
             // render output
             $sOut .= '
                 <tr class="' . $sClasses . '" '
@@ -207,13 +177,10 @@ class projectlist extends base
                 . '<td class="prj">';
             if ($oPrj->canAcceptPhase()) {
                 $sOut .= $oPrj->renderLink("build");
-                // $sOut2.=$oPrj->renderLink("build");
-                // $sOut.='<a href="/deployment/'.$sPrj.'/build/" class="btn btn-default '.$sNext.'"><i class=" icon-forward"></i> Build f&uuml;r ['.$sNext.']</a><br>';
             }
             $sOut .= '</td>
                 ' . $sOutPhases . '
                 </tr>';
-            // $sOut2.=$sOutPhases2 . '</div></div>';
         }
         if ($sOut) {
             $sRowHead1 = '';
@@ -238,222 +205,9 @@ class projectlist extends base
                 $sRowHead2 .= $oPrj->renderPlacesAsTd($sPhase);
             }
             $sOutTop = '
-                <script>
-                
-                    /**
-                    * filter table by chosen select values for project and phase
-                    */
-                    function filterOverviewTable(){
-                    
-                        // --- reset
-                        $(\'.' . $sTrClass . '\').removeClass("trproject-textfilter"); 
-                        $(\'.' . $sTrClass . '\').removeClass("trproject-progressfilter"); 
-                        $(\'.' . $sTrClass . '\').removeClass("trproject-projectfilter"); 
-                        $(\'.' . $sTrClass . '\').removeClass("trproject-projectgroupfilter"); 
-                        $(\'.' . $sTrClass . '\').removeClass("trprojectfiltered"); 
-                        $(\'button.prjprogress\').removeClass(\'selected\');
-
-                        // --- get free filter
-                        var sSearch=$("#efilter").val();
-                        localStorage.setItem("efilter", sSearch);
-
-                            $("table").removeHighlight();
-                            if (sSearch) {
-                                // $("tr:regex(\'" + sSearch + "\')").show();
-                                // $("tr:not(:regex(\'" + sSearch + "\'))").hide();
-                                // $("tr").first().show();
-
-                                $("td").highlight(sSearch);
-                            } else {
-                                $("td").removeHighlight();
-                                $(\'tr\').show();
-                            }
-                        
-                        var RegexFreetext = new RegExp(sSearch, "i");
-
-                        // --- get project filter
-                        var sPrj=$("#prjfilter").val();
-                        localStorage.setItem("selectedPrj", sPrj);
-
-                        // --- get project group filter
-                        var sPrjGroup=$("#prjgroupfilter").val();
-                        localStorage.setItem("selectedPrjGroup", sPrjGroup);
-
-                        // --- get progress filter
-                        var sProgress=$("#progressfilter").val();
-                        localStorage.setItem("progress", sProgress);
-                        $(\'#btnProgress\'+sProgress).addClass(\'selected\').blur();
-
-                        // --- loop over project rows   
-
-                        $(".trproject").each(function() {
-                            if ( !RegexFreetext.exec(this.innerHTML)) {
-                                $(this).addClass("trproject-textfilter");
-                            }
-                            
-                            if (sPrj){
-                                if ($(this).hasClass(sPrj)){
-                                    $(this).addClass("trprojectfiltered");
-                                } else {
-                                    $(this).addClass("trproject-projectfilter");
-                                }
-                            }
-                            if (sPrjGroup){
-                                if ($(this).hasClass("group-"+sPrjGroup)){
-                                    $(this).addClass("trprojectgroupfiltered");
-                                } else {
-                                    $(this).addClass("trproject-projectgroupfilter");
-                                }
-                            }
-                            if (sProgress && !$(this).hasClass("progress" + sProgress)){
-                                $(this).addClass("trproject-progressfilter");
-                            }
-                            
-                        });
-
-                        showResetbtn();
-                    }
-                    
-                    /**
-                    * onclick event of [filter] button in table row of a project
-                    * toggle: show a single project/ all projects
-                    */
-                    function setProjectFilter(sPrj){
-                        var sCurrentPrj=$(\'#prjfilter\').val();
-                        if (sCurrentPrj != \'\'){
-                            $(\'#prjfilter\').val(\'\'); 
-                        } else {
-                            $(\'#prjfilter\').val(sPrj); 
-                        }
-                        window.setTimeout(\'filterOverviewTable();\', 10);
-                        setview(\'extended\'); 
-                    }
-                    
-                    /**
-                    * filter table and tiles by filtertext
-                    */
-                    function filterTableByTyping(){
-                        filterOverviewTable();
-                        return false; 
-                    }
-                    
-                    /**
-                    * switch view between tiles and table
-                    */
-                    function setview(sMode){
-                        $(\'.view\').hide(); 
-                        $(\'.view\'+sMode).show();
-                        localStorage.setItem("mode", sMode);
-                        return false;
-                    }
-                    
-                    /**
-                    * filter table by role
-                    */
-                    function setrole(){
-                        var sRole=$("#rolefilter").val();
-                        $(\'.role\').hide(); 
-                        $(\'.role\'+sRole).show();
-                        localStorage.setItem("role", sRole);
-                        showResetbtn();
-                        return false;
-                    }
-                    /**
-                    * filter table by progress status
-                    */
-                    function setprogress(){
-                        filterOverviewTable();
-                        return false; 
-                    }
-                    
-                    /**
-                    * set default view; it gets the last values for filter text,
-                    * and selected values in dropdowns and restores the
-                    * last view
-                    */
-                    function setDefaultView(){
+                <div id="counter">...</div><br>
 
-                        
-                        if (localStorage.getItem("progress") && localStorage.getItem("progress")!=\'null\'){
-                            $("#progressfilter").val(localStorage.getItem("progress"));
-                        } else {
-                            $("#progressfilter").val($("#progressfilter option:first").val());
-                        }
-                        if (localStorage.getItem("efilter") && localStorage.getItem("efilter")!=\'null\') {
-                            $("#efilter").val(localStorage.getItem("efilter"));
-                            window.setTimeout("filterTableByTyping();", 10);
-                        }
-
-                        if(localStorage.getItem("selectedPrjGroup") && localStorage.getItem("selectedPrjGroup")!=\'null\'){
-                            $("#prjgroupfilter").val(localStorage.getItem("selectedPrjGroup"));
-                        } else {
-                            // $("#selectedPrjGroup").val($("#selectedPrjgroup option:first").val());
-                        }
-
-                        // window.setTimeout("filterOverviewTable();", 10);
-                        filterOverviewTable();
-                        
-                        /*
-                        if(localStorage.getItem("selectedPrj") && localStorage.getItem("selectedPrj")!=\'null\'){
-                            $("#prjfilter").val(localStorage.getItem("selectedPrj"));
-                        } else {
-                            $("#prjfilter").val($("#prjfilter option:first").val());
-                        }
-
-                        if (localStorage.getItem("selectedPhase") && localStorage.getItem("selectedPhase")!=\'null\'){
-                            $("#phasefilter").val(localStorage.getItem("selectedPhase"));
-                        } else {
-                            $("#phasefilter").val($("#phasefilter option:first").val());
-                        }
-                        
-                        if (localStorage.getItem("role") && localStorage.getItem("role")!=\'null\') {
-                            $("#rolefilter").val(localStorage.getItem("role"));
-                            window.setTimeout("setrole();", 20);
-                        }
-                        
-                        if (localStorage.getItem("mode") && localStorage.getItem("mode")!=\'null\') {
-                            var sMode=localStorage.getItem("mode");
-                            if (sMode)setview(sMode);
-                        }
-                        */
-                    }
-                    
-                    /**
-                    * Button zum Filter reset anzeigen/ verbergen
-                    */
-                    function showResetbtn(){                        
-                        var sVisible=$("#efilter").val()?"visible":"hidden";
-                        if ($("#prjfilter").val()>"")sVisible="visible";
-                        if ($("#prjgroupfilter").val()>"")sVisible="visible";
-                        // if ($("#phasefilter").val()!="' . $sColClass . '")sVisible="visible";
-                        if ($("#rolefilter").val())sVisible="visible";
-                        if ($("#progressfilter").val())sVisible="visible";
-                        $("#btnresetfilter").css("visibility", sVisible);
-                        
-                        $("#btnresetefilter").css("visibility", $("#efilter").val()?"visible":"hidden");
-                        return false;
-                    }
-                    
-                    /**
-                    * Aktion des Filter reset: Filter zurücksetzen
-                    */
-                    function resetFilter(){
-                        $("#prjfilter").val("");
-                        $("#prjgroupfilter").val("");
-                        // $("#phasefilter").val("");
-                        filterOverviewTable();
-                        $("#efilter").val("");                        
-                        window.setTimeout("filterTableByTyping();", 10);
-                        $("#rolefilter").val("");
-                        window.setTimeout("setrole();", 20);
-                        $("#progressfilter").val("");
-                        window.setTimeout("setprogress();", 30);
-                        showResetbtn();
-                        return false;
-                    }
-                </script>
-                <div class="filterbar">
-                
+                <div class="filterbar">        
                     <form class="form-inline">
 
                         <!--
@@ -551,15 +305,6 @@ class projectlist extends base
                     <div style="clear: both; margin-bottom: 1em"></div>
                 </div>';
             $sOut = $sErrors
-
-                /*
-                .'
-                <div class="view viewsimple">
-                    ' . $sOut2 . '
-                    <div style="clear: both;"></div>
-                    <br>
-                </div>'
-                */
                 . '
 
 		<table class="table view viewextended" id="tbloverview">
@@ -576,7 +321,7 @@ class projectlist extends base
 			</thead>
 			<tbody>
 		' . $sOut . '</tbody></table>'
-                . '<script>window.setTimeout("setDefaultView();", 50); window.setTimeout("window.location.replace(window.location.pathname + window.location.search + window.location.hash);", 60000);</script>';
+        ;
         } else {
             $sOut = t("class-pl-error-no-project") . '<br><br>'
                 . $oPrj1->renderLink("new");
diff --git a/public_html/deployment/index.php b/public_html/deployment/index.php
index 2842f78a0a4c8324c8ba3bc2d827d69d4fc6520e..8bc8d030aefe545edf640bfd915ab675e1dd0fa4 100644
--- a/public_html/deployment/index.php
+++ b/public_html/deployment/index.php
@@ -131,7 +131,9 @@ if($oUser->getUsername()){
 // ----------------------------------------------------------------------
 // html body
 // ----------------------------------------------------------------------
+$HEAD_INCLUDE='';
 $BODY="";
+$BODY_END='';
 $TITLE="";
 $JS='';
 
@@ -274,10 +276,12 @@ if(!file_exists($sIncfile)){
 
 
 // ---------- generate output
+$aReplace['{{HEAD_INCLUDE}}']=$HEAD_INCLUDE;
 $aReplace['{{PAGE_BODY}}']=$BODY;
 $aReplace['{{PAGE_HEADER_LEFT}}']='<h2>'.$TITLE.'</h2>';
 $aReplace['{{PAGE_HEADER_RIGHT}}']=$oUser->getUsername() ? getBreadcrumb("link") : '';
 $aReplace['{{INJECT_JS}}']=$JS;
+$aReplace['{{BODY_END}}']=$BODY_END;
 
 $sTemplate=file_get_contents('ui/page.tpl.php');
 echo $renderAdminLTE->render($sTemplate,$aReplace);
diff --git a/public_html/deployment/js/functions_overview.js b/public_html/deployment/js/functions_overview.js
new file mode 100644
index 0000000000000000000000000000000000000000..2bb2293aabfc1abb4587a5692fcacd66d8c8f1ae
--- /dev/null
+++ b/public_html/deployment/js/functions_overview.js
@@ -0,0 +1,245 @@
+// ----------------------------------------------------------------------
+// JS FOR OVERVIEW PAGE
+// ----------------------------------------------------------------------
+
+
+// ----------------------------------------------------------------------
+// COUNTER
+// ----------------------------------------------------------------------
+
+// reload after N seconds
+var iReload = 60;
+
+
+/**
+ * get the current unix ts
+ * @returns {Number}
+ */
+function getUnixTS() {
+    return Date.now() / 1000;
+}
+
+
+/**
+ * show a timer and progress bar
+ * @returns {undefined}
+ */
+function refreshTimer() {
+    if (iRefreshCounter == 0) {
+        $('#counter').html(
+            '<span>-</span><br>'
+            + '<div style="width:100%; float: left;">&nbsp;</div>'
+        );
+    }
+    $('#counter span').html(iReload - iRefreshCounter + 's');
+    $('#counter div').css('width', (100 - (iRefreshCounter / iReload * 100)) + '%');
+    iRefreshCounter++;
+
+    if (iRefreshCounter > iReload) {
+        document.location.reload();
+    }
+}
+
+
+// ----------------------------------------------------------------------
+// FILTERING
+// ----------------------------------------------------------------------
+
+/**
+* filter table by chosen select values for project and phase
+*/
+function filterOverviewTable() {
+
+    // --- reset
+    $('.trproject').removeClass("trproject-textfilter");
+    $('.trproject').removeClass("trproject-progressfilter");
+    $('.trproject').removeClass("trproject-projectfilter");
+    $('.trproject').removeClass("trproject-projectgroupfilter");
+    $('.trproject').removeClass("trprojectfiltered");
+    $('button.prjprogress').removeClass('selected');
+
+    // --- get free filter
+    var sSearch = $("#efilter").val();
+    localStorage.setItem("efilter", sSearch);
+
+    $("table").removeHighlight();
+    if (sSearch) {
+        $("td").highlight(sSearch);
+    } else {
+        $("td").removeHighlight();
+        $('tr').show();
+    }
+
+    var RegexFreetext = new RegExp(sSearch, "i");
+
+    // --- get project filter
+    var sPrj = $("#prjfilter").val();
+    localStorage.setItem("selectedPrj", sPrj);
+
+    // --- get project group filter
+    var sPrjGroup = $("#prjgroupfilter").val();
+    localStorage.setItem("selectedPrjGroup", sPrjGroup);
+
+    // --- get progress filter
+    var sProgress = $("#progressfilter").val();
+    localStorage.setItem("progress", sProgress);
+    $('#btnProgress' + sProgress).addClass('selected').blur();
+
+    // --- loop over project rows   
+
+    $(".trproject").each(function () {
+        if (!RegexFreetext.exec(this.innerHTML)) {
+            $(this).addClass("trproject-textfilter");
+        }
+
+        if (sPrj) {
+            if ($(this).hasClass(sPrj)) {
+                $(this).addClass("trprojectfiltered");
+            } else {
+                $(this).addClass("trproject-projectfilter");
+            }
+        }
+        if (sPrjGroup) {
+            if ($(this).hasClass("group-" + sPrjGroup)) {
+                $(this).addClass("trprojectgroupfiltered");
+            } else {
+                $(this).addClass("trproject-projectgroupfilter");
+            }
+        }
+        if (sProgress && !$(this).hasClass("progress" + sProgress)) {
+            $(this).addClass("trproject-progressfilter");
+        }
+
+    });
+
+    showResetbtn();
+}
+
+/**
+* onclick event of [filter] button in table row of a project
+* toggle: show a single project/ all projects
+*/
+function setProjectFilter(sPrj) {
+    var sCurrentPrj = $('#prjfilter').val();
+    if (sCurrentPrj != '') {
+        $('#prjfilter').val('');
+    } else {
+        $('#prjfilter').val(sPrj);
+    }
+    window.setTimeout('filterOverviewTable();', 10);
+    setview('extended');
+}
+
+/**
+* filter table and tiles by filtertext
+*/
+function filterTableByTyping() {
+    filterOverviewTable();
+    return false;
+}
+
+/**
+* switch view between tiles and table
+*/
+function setview(sMode) {
+    $('.view').hide();
+    $('.view' + sMode).show();
+    localStorage.setItem("mode", sMode);
+    return false;
+}
+
+/**
+* filter table by role
+*/
+function setrole() {
+    var sRole = $("#rolefilter").val();
+    $('.role').hide();
+    $('.role' + sRole).show();
+    localStorage.setItem("role", sRole);
+    showResetbtn();
+    return false;
+}
+/**
+* filter table by progress status
+*/
+function setprogress() {
+    filterOverviewTable();
+    return false;
+}
+
+/**
+* set default view; it gets the last values for filter text,
+* and selected values in dropdowns and restores the
+* last view
+*/
+function setDefaultView() {
+
+
+    if (localStorage.getItem("progress") && localStorage.getItem("progress") != 'null') {
+        $("#progressfilter").val(localStorage.getItem("progress"));
+    } else {
+        $("#progressfilter").val($("#progressfilter option:first").val());
+    }
+    if (localStorage.getItem("efilter") && localStorage.getItem("efilter") != 'null') {
+        $("#efilter").val(localStorage.getItem("efilter"));
+        window.setTimeout("filterTableByTyping();", 10);
+    }
+
+    if (localStorage.getItem("selectedPrjGroup") && localStorage.getItem("selectedPrjGroup") != 'null') {
+        $("#prjgroupfilter").val(localStorage.getItem("selectedPrjGroup"));
+    } else {
+        // $("#selectedPrjGroup").val($("#selectedPrjgroup option:first").val());
+    }
+
+    // window.setTimeout("filterOverviewTable();", 10);
+    filterOverviewTable();
+
+
+}
+
+/**
+* Button zum Filter reset anzeigen/ verbergen
+*/
+function showResetbtn() {
+    var sVisible = $("#efilter").val() ? "visible" : "hidden";
+    if ($("#prjfilter").val() > "") sVisible = "visible";
+    if ($("#prjgroupfilter").val() > "") sVisible = "visible";
+    // if ($("#phasefilter").val()!="' . $sColClass . '")sVisible="visible";
+    if ($("#rolefilter").val()) sVisible = "visible";
+    if ($("#progressfilter").val()) sVisible = "visible";
+    $("#btnresetfilter").css("visibility", sVisible);
+
+    $("#btnresetefilter").css("visibility", $("#efilter").val() ? "visible" : "hidden");
+    return false;
+}
+
+/**
+* Aktion des Filter reset: Filter zurücksetzen
+*/
+function resetFilter() {
+    $("#prjfilter").val("");
+    $("#prjgroupfilter").val("");
+    // $("#phasefilter").val("");
+    filterOverviewTable();
+    $("#efilter").val("");
+    window.setTimeout("filterTableByTyping();", 10);
+    $("#rolefilter").val("");
+    window.setTimeout("setrole();", 20);
+    $("#progressfilter").val("");
+    window.setTimeout("setprogress();", 30);
+    showResetbtn();
+    return false;
+}
+
+// ----------------------------------------------------------------------
+// MAIN
+// ----------------------------------------------------------------------
+
+iStartTime = getUnixTS();
+iRefreshCounter = 0;
+
+refreshTimer();
+window.setInterval('refreshTimer()', 1000);
+window.setTimeout("setDefaultView();", 50);
+
+// ----------------------------------------------------------------------
diff --git a/public_html/deployment/pages/act_overview.php b/public_html/deployment/pages/act_overview.php
index a00c34d996684b6f2c83a2ad8a18bd82d1860922..d96cbb833048d1e278210baa793dacd7b1f1fe0b 100644
--- a/public_html/deployment/pages/act_overview.php
+++ b/public_html/deployment/pages/act_overview.php
@@ -23,6 +23,8 @@ if (!array_key_exists("prj", $aParams)) {
     // ----------------------------------------------------------------------
     require_once("./classes/projectlist.class.php");
     $oPrjList = new projectlist();
+
+    $BODY_END='<script type="text/javascript" src="/deployment/js/functions_overview.js"></script>';
     $BODY = $oPrjList->renderOverview();
 } else {