diff --git a/src/test/java/HOWTO-UnitTesting b/src/test/java/HOWTO-UnitTesting
index e0b22953e82a0146ab679ee44797587b213d8c70..a2e0a143213911448e3354c868abfb44c9226675 100644
--- a/src/test/java/HOWTO-UnitTesting
+++ b/src/test/java/HOWTO-UnitTesting
@@ -34,18 +34,11 @@ public void testPlainText() {...
 2: You like to test code which includes managers/modules that are spring beans you can use this setup:
 
 -----------------------------------
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
-	"/org/olat/core/test/_spring/yourSpringContext.xml"})
-
-public class YourTestClass {...
+public class YourTestClass extends OlatTestCase {...
 
 -------------------------------------
 
 The Springcontext gets loaded and you can use @Autowire or access directly the "applicationContext" var and do you testing
 
-3: If you need more stuff from the framework like Coordinator or database access in your code you can use the OlatcoreTestCaseWithMocking which
-already has some mocked stuff inside (Coordinator.getEventBus() calls) or create your own mocks based on the example. The library we use for mocking is 
-Mockito (http://mockito.org/)
-When you run all tests in a suite, the spring context gets cached and only loaded once for better performance. But if you load the same spring beans twice,
+3: When you run all tests in a suite, the spring context gets cached and only loaded once for better performance. But if you load the same spring beans twice,
 the beans will not get overwritten and instead they get created again and a new instance gets assigned for e.g. a singleton.
\ No newline at end of file
diff --git a/src/test/java/org/olat/course/All_Elements_Course.zip b/src/test/java/org/olat/course/All_Elements_Course.zip
deleted file mode 100644
index a6f72cfc20f987be4007d9b96390ca7037778453..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/course/All_Elements_Course.zip and /dev/null differ
diff --git a/src/test/java/org/olat/course/All_Elements_Course_Without_External_Content.zip b/src/test/java/org/olat/course/All_Elements_Course_Without_External_Content.zip
deleted file mode 100644
index 870280b9e77883e9bc8f3178c2af06adcfcc66a2..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/course/All_Elements_Course_Without_External_Content.zip and /dev/null differ
diff --git a/src/test/java/org/olat/course/Empty_Course.zip b/src/test/java/org/olat/course/Empty_Course.zip
deleted file mode 100644
index f2c9bcf1ac7454d126549302689acf35f7a42edc..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/course/Empty_Course.zip and /dev/null differ
diff --git a/src/test/java/org/olat/course/nodes/feed/FunctionalBlogTest.java b/src/test/java/org/olat/course/nodes/feed/FunctionalBlogTest.java
deleted file mode 100644
index 2aa7c0d25e2034fdc14c0043cf64da8a29d2ecf0..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/course/nodes/feed/FunctionalBlogTest.java
+++ /dev/null
@@ -1,454 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.course.nodes.feed;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.apache.commons.lang.ArrayUtils;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.container.test.api.RunAsClient;
-import org.jboss.arquillian.drone.api.annotation.Drone;
-import org.jboss.arquillian.junit.Arquillian;
-import org.jboss.arquillian.test.api.ArquillianResource;
-import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.olat.restapi.support.vo.CourseVO;
-import org.olat.restapi.support.vo.RepositoryEntryVO;
-import org.olat.test.ArquillianDeployments;
-import org.olat.user.restapi.UserVO;
-import org.olat.util.FunctionalAdministrationSiteUtil;
-import org.olat.util.FunctionalCourseUtil;
-import org.olat.util.FunctionalCourseUtil.BlogEdit;
-import org.olat.util.FunctionalCourseUtil.CourseNodeAlias;
-import org.olat.util.FunctionalRepositorySiteUtil;
-import org.olat.util.FunctionalUtil;
-import org.olat.util.FunctionalUtil.WaitLimitAttribute;
-import org.olat.util.FunctionalVOUtil;
-import org.olat.util.browser.Student1;
-import org.olat.util.browser.Student2;
-import org.olat.util.browser.Tutor1;
-
-import com.thoughtworks.selenium.DefaultSelenium;
-import com.thoughtworks.selenium.Selenium;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-@RunWith(Arquillian.class)
-public class FunctionalBlogTest {
-	
-	public final static String BLOG_SHORT_TITLE = "blog";
-	public final static String BLOG_LONG_TITLE = "test blog";
-	public final static String BLOG_DESCRIPTION = "blog";
-	public final static String BLOG_FEED = "http://blogs.frentix.com/blogs/frentix/rss.xml";
-	
-	public final static String DELETE_BLOG_SHORT_TITLE = "blog";
-	public final static String DELETE_BLOG_LONG_TITLE = "blog for removal";
-	public final static String DELETE_BLOG_DESCRIPTION = "The first blog entry will be deleted";
-	public final static String DELETE_BLOG_CONTENT = "You should be able to choose to create or feed from existing blog.";
-	
-	public final static String CONCURRENT_CLEAR_CACHE_BLOG_PATH = "/org/olat/course/nodes/feed/blog.zip";
-	public final static String CONCURRENT_CLEAR_CACHE_BLOG_FILE_NAME = "blog.zip";
-	public final static String CONCURRENT_CLEAR_CACHE_BLOG_RESOURCE_NAME = "Blog";
-	public final static String CONCURRENT_CLEAR_CACHE_BLOG_DISPLAY_NAME = "Parallel Computing Blog";
-	public final static String CONCURRENT_CLEAR_CACHE_BLOG_POST1_TITLE = "Conditional locks with Java";
-	public final static String CONCURRENT_CLEAR_CACHE_BLOG_POST1_DESCRIPTION = "Advanced thread safety in Java.";
-	public final static String CONCURRENT_CLEAR_CACHE_BLOG_POST1_CONTENT = "Please take a look at ReentrantLock class in JavaSE package java.util.concurrent.locks for further information.";
-	public final static String CONCURRENT_CLEAR_CACHE_BLOG_POST2_TITLE = "Creating conditions";
-	public final static String CONCURRENT_CLEAR_CACHE_BLOG_POST2_DESCRIPTION = "Wait until condition is fulfilled.";
-	public final static String CONCURRENT_CLEAR_CACHE_BLOG_POST2_CONTENT = "With the ReentrantLock class you may create new conditions like following:<br>\n<code>\nfinal Lock lock = new ReentrantLock();<br>\nfinal Condition cond = lock.newCondition()<br>\n</code>\n";
-	
-	public final static String CONCURRENT_RW_BLOG_SHORT_TITLE = "blog";
-	public final static String CONCURRENT_RW_BLOG_LONG_TITLE = "blog cleared cache";
-	public final static String CONCURRENT_RW_BLOG_DESCRIPTION = "During open blog cache will be cleared";
-	public final static String CONCURRENT_RW_BLOG_CONTENT = "New openolat release is outstanding.";
-	public final static String CONCURRENT_RW_BLOG_NEW_CONTENT = "New openolat release is outstanding and is comming soon.";
-	
-	public final static String CONCURRENT_TUTORS_BLOG_SHORT_TITLE = "blog";
-	public final static String CONCURRENT_TUTORS_BLOG_LONG_TITLE = "test blog";
-	public final static String CONCURRENT_TUTORS_BLOG_DESCRIPTION = "The blog will be opened and saved while cache is clearing";
-	public final static String CONCURRENT_TUTORS_BLOG_CONTENT = "Race conditions may end up in a dead lock";
-	public final static String CONCURRENT_TUTORS_BLOG_POST1_TITLE = "race conditions";
-	public final static String CONCURRENT_TUTORS_BLOG_POST1_DESCRIPTION = "the causes of race conditions";
-	public final static String CONCURRENT_TUTORS_BLOG_POST1_CONTENT = "In multi-threaded environments you may want perform some kind of syncing. Inproper syncing  ends up in a race condition eg. you read a value of a field before it was written.";
-	public final static String CONCURRENT_TUTORS_BLOG_POST2_TITLE = "dead locks";
-	public final static String CONCURRENT_TUTORS_BLOG_POST2_DESCRIPTION = "the causes of dead locks";
-	public final static String CONCURRENT_TUTORS_BLOG_POST2_CONTENT = "Assumed you have more than one thread you probably want to lock some resources, other threads or even the entire process. Therefore exist mutices or in java you have additionally the keyword synchronized. Dead locks occure during inproper syncing or during a race condition. The system remains in a unusable state.";
-	
-	@Deployment(testable = false)
-	public static WebArchive createDeployment() {
-		return ArquillianDeployments.createDeployment();
-	}
-
-	@Drone
-	DefaultSelenium browser;
-	
-	@ArquillianResource
-	URL deploymentUrl;
-	
-	static FunctionalUtil functionalUtil;
-	static FunctionalRepositorySiteUtil functionalRepositorySiteUtil;
-	static FunctionalCourseUtil functionalCourseUtil;
-	static FunctionalAdministrationSiteUtil functionalAdministrationSiteUtil;
-	static FunctionalVOUtil functionalVOUtil;
-
-	static boolean initialized = false;
-	
-	@Before
-	public void setup() throws IOException, URISyntaxException{
-		if(!initialized){
-			functionalUtil = new FunctionalUtil();
-			functionalUtil.setDeploymentUrl(deploymentUrl.toString());
-
-			functionalRepositorySiteUtil = functionalUtil.getFunctionalRepositorySiteUtil();
-			functionalCourseUtil = functionalRepositorySiteUtil.getFunctionalCourseUtil();
-			
-			functionalAdministrationSiteUtil = functionalUtil.getFunctionalAdministrationSiteUtil();
-			
-			functionalVOUtil = new FunctionalVOUtil(functionalUtil.getUsername(), functionalUtil.getPassword());
-
-			initialized = true;
-		}
-	}
-	
-	@Test
-	@RunAsClient
-	public void checkConcurrentClearCache(@Drone @Tutor1 DefaultSelenium tutor0, @Drone @Student1 DefaultSelenium student0) throws IOException, URISyntaxException{
-		/*
-		 * Setup
-		 */
-		/* create author */
-		int tutorCount = 1;
-			
-		final UserVO[] tutors = new UserVO[tutorCount];
-		functionalVOUtil.createTestAuthors(deploymentUrl, tutorCount).toArray(tutors);
-		
-		/* create user */
-		int userCount = 1;
-			
-		final UserVO[] students = new UserVO[userCount];
-		functionalVOUtil.createTestUsers(deploymentUrl, userCount).toArray(students);
-		
-		/* create blog and set tutor as owner */
-		RepositoryEntryVO repoEntry = functionalVOUtil.importBlog(deploymentUrl,
-				CONCURRENT_CLEAR_CACHE_BLOG_PATH,
-				CONCURRENT_CLEAR_CACHE_BLOG_FILE_NAME, CONCURRENT_CLEAR_CACHE_BLOG_RESOURCE_NAME, CONCURRENT_CLEAR_CACHE_BLOG_DISPLAY_NAME);
-		
-		functionalVOUtil.addOwnerToRepositoryEntry(deploymentUrl, repoEntry, tutors[0]);
-		
-		/*
-		 * Create content and visit it.
-		 */
-		/* tutor creates a new post */
-		Assert.assertTrue(functionalUtil.login(tutor0, tutors[0].getLogin(), tutors[0].getPassword(), true));
-		Assert.assertTrue(functionalCourseUtil.openBlog(tutor0, repoEntry.getKey()));
-		Assert.assertTrue(functionalCourseUtil.editBlogEntry(tutor0,
-				CONCURRENT_CLEAR_CACHE_BLOG_POST1_TITLE, CONCURRENT_CLEAR_CACHE_BLOG_POST1_DESCRIPTION, CONCURRENT_CLEAR_CACHE_BLOG_POST1_CONTENT,
-				-1, null));
-		
-		/* student visits content */
-		Assert.assertTrue(functionalUtil.login(student0, students[0].getLogin(), students[0].getPassword(), true));
-		Assert.assertTrue(functionalCourseUtil.openBlog(student0, repoEntry.getKey()));
-
-		
-		/*
-		 * Clear cache and verify content.
-		 */
-		/* admin clears cache */
-		Assert.assertTrue(functionalUtil.login(browser, functionalUtil.getUsername(), functionalUtil.getPassword(), true));
-		Assert.assertTrue(functionalAdministrationSiteUtil.clearCache(browser,
-				new String[]{
-				"FeedManager@feed",
-				"Path@feed"
-				}
-		));
-
-		Assert.assertTrue(functionalUtil.logout(browser));
-		
-		/* tutor adds a new post */
-		//Assert.assertTrue(functionalCourseUtil.backBlogEntry(tutor0));
-		Assert.assertTrue(functionalCourseUtil.editBlogEntry(tutor0,
-				CONCURRENT_CLEAR_CACHE_BLOG_POST2_TITLE, CONCURRENT_CLEAR_CACHE_BLOG_POST2_DESCRIPTION, CONCURRENT_CLEAR_CACHE_BLOG_POST2_CONTENT,
-				-1, null));
-		
-		/* student verifies title - month */
-		functionalUtil.idle(student0);
-		
-		String[] titles = {
-				CONCURRENT_CLEAR_CACHE_BLOG_POST1_TITLE,
-				CONCURRENT_CLEAR_CACHE_BLOG_POST2_TITLE
-		};
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("//ul[contains(@class, '")
-		.append(functionalCourseUtil.getBlogMonthCss())
-		.append("')]//li//a");
-		
-		int iStop = student0.getXpathCount(selectorBuffer.toString()).intValue();
-		
-		boolean[] foundTitlesInMonth = new boolean[titles.length];
-		Arrays.fill(foundTitlesInMonth, false);
-		
-		
-		for(int i = 0; i < iStop; i++){
-			functionalUtil.idle(student0);
-			
-			/* click month */
-			StringBuffer currentBuffer = new StringBuffer();
-			
-			currentBuffer.append("xpath=(")
-			.append(selectorBuffer)
-			.append(")[")
-			.append(i + 1)
-			.append(']');
-			
-			functionalUtil.waitForPageToLoadElement(student0, currentBuffer.toString());
-			student0.click(currentBuffer.toString());
-			
-			functionalUtil.idle(student0);
-			
-			/* it should be visible somewhere */
-			int j = 0;
-			
-			for(String currentTitle: titles){
-				if(student0.isTextPresent(currentTitle)){
-					foundTitlesInMonth[j] = true;
-				}
-				
-				j++;
-			}
-		}
-		
-		Assert.assertFalse(ArrayUtils.contains(foundTitlesInMonth, false));
-		
-		/* student verifies title - year */
-		functionalUtil.idle(student0);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("//div//a[contains(@class, '")
-		.append(functionalCourseUtil.getBlogYearCss())
-		.append("')]");
-		
-		iStop = student0.getXpathCount(selectorBuffer.toString()).intValue();
-		
-		boolean[] foundTitlesInYear = new boolean[titles.length];
-		Arrays.fill(foundTitlesInYear, false);
-		
-		for(int i = 0; i < iStop; i++){
-			functionalUtil.idle(student0);
-			
-			/* click year */
-			StringBuffer currentBuffer = new StringBuffer();
-			
-			currentBuffer.append("xpath=(")
-			.append(selectorBuffer)
-			.append(")[")
-			.append(i + 1)
-			.append(']');
-			
-			student0.click(currentBuffer.toString());
-			
-			functionalUtil.idle(student0);
-
-			/* it should be visible somewhere */
-			int j = 0;
-			
-			for(String currentTitle: titles){
-				if(student0.isTextPresent(currentTitle)){
-					foundTitlesInYear[j] = true;
-				}
-				
-				j++;
-			}
-		}
-		
-		Assert.assertFalse(ArrayUtils.contains(foundTitlesInYear, false));
-		
-		/* logout */
-		Assert.assertTrue(functionalUtil.logout(tutor0));
-		Assert.assertTrue(functionalUtil.logout(student0));
-	}
-	
-	@Test
-	@RunAsClient
-	public void checkConcurrentRW(@Drone @Student1 DefaultSelenium student0, @Drone @Student2 DefaultSelenium student1) throws IOException, URISyntaxException, InterruptedException{
-		/*
-		 * Setup
-		 */
-		int userCount = 2;
-			
-		final UserVO[] users = new UserVO[userCount];
-		functionalVOUtil.createTestUsers(deploymentUrl, userCount).toArray(users);
-		
-		final CourseVO course = functionalVOUtil.importEmptyCourse(deploymentUrl);
-		
-		/* create blog */
-		Assert.assertTrue(functionalUtil.login(browser, functionalUtil.getUsername(), functionalUtil.getPassword(), true));
-		
-		Assert.assertTrue(functionalRepositorySiteUtil.openCourse(browser, course.getRepoEntryKey()));
-		Assert.assertTrue(functionalCourseUtil.openCourseEditor(browser));
-		
-		Assert.assertTrue(functionalCourseUtil.createCourseNode(browser, CourseNodeAlias.BLOG, BLOG_SHORT_TITLE, BLOG_LONG_TITLE, BLOG_DESCRIPTION, 0));
-		Assert.assertTrue(functionalCourseUtil.createBlog(browser, BLOG_SHORT_TITLE, BLOG_DESCRIPTION));
-		
-		Assert.assertTrue(functionalCourseUtil.publishEntireCourse(browser, null, null));
-		
-		/* create content */
-		Assert.assertNotNull(functionalCourseUtil.open(browser, course.getRepoEntryKey(), 0));
-		Assert.assertTrue(functionalCourseUtil.createBlogEntry(browser, course.getRepoEntryKey(), 0,
-				CONCURRENT_RW_BLOG_SHORT_TITLE, CONCURRENT_RW_BLOG_DESCRIPTION, CONCURRENT_RW_BLOG_CONTENT));
-		
-		/*
-		 * do concurrent access read
-		 */
-		final Selenium[] student = new Selenium[userCount];
-			
-		student[0] = student0;
-		student[1] = student1;
-		
-		final boolean[] success = new boolean[userCount];
-		Arrays.fill(success, true);
-		
-		/* for syncing threads */
-		final ReentrantLock lock = new ReentrantLock();
-		final Condition cond = lock.newCondition();
-		final boolean[] doSignal = new boolean[1];
-		doSignal[0] = false;
-		
-		final boolean[] finished = new boolean[userCount];
-		Arrays.fill(finished, false);
-		
-		/* students log in an visit blog */
-		for(int i = 0; i < userCount; i++){
-			final int index = i;
-			
-			Thread thread = new Thread(new Runnable(){
-				int i;
-				{
-					i = index;
-				}
-				
-				@Override
-				public void run() {
-					try{
-						functionalUtil.login(student[i], users[i].getLogin(), users[i].getPassword(), true);
-						functionalCourseUtil.openBlogWithoutBusinessPath(student[i], course.getRepoEntryKey(), 0);
-						functionalCourseUtil.openBlogEntry(student[i], 0);
-					}catch(Exception e){
-						success[i] = false;
-					}finally{
-						finished[i] = true;
-						
-						lock.lock();
-						if(doSignal[0]){
-							cond.signal();
-						}
-						lock.unlock();
-					}
-				}
-				
-			});
-			
-			thread.start();
-		}
-		
-		/* wait for browsers to be ready */
-		lock.lock();
-		doSignal[0] = true;
-		
-		try{
-			while(ArrayUtils.contains(finished, false)){
-				cond.await();
-			}
-		}finally{
-			lock.unlock();
-		}
-		
-		/* edit blog as author */
-		Assert.assertTrue(functionalCourseUtil.editBlogEntry(browser, course.getRepoEntryKey(), 0,
-				null, null, CONCURRENT_RW_BLOG_NEW_CONTENT, 0, new BlogEdit[]{BlogEdit.CONTENT}));
-		
-		/* open entry by users */
-		Arrays.fill(finished, false);
-		doSignal[0] = false;
-		
-		for(int i = 0; i < userCount; i++){
-			final int index = i;
-			
-			Thread thread = new Thread(new Runnable(){
-				int i;
-				{
-					i = index;
-				}
-				
-				@Override
-				public void run() {
-					try{
-						functionalCourseUtil.backBlogEntry(student[i]);
-						functionalCourseUtil.openBlogEntry(student[i], 0);
-						functionalUtil.waitForPageToLoadContent(student[i], null, CONCURRENT_RW_BLOG_NEW_CONTENT, WaitLimitAttribute.VERY_SAVE, null, true);
-						functionalUtil.logout(student[i]);
-					}catch(Exception e){
-						success[i] = false;
-					}finally{
-						finished[i] = true;
-
-						lock.lock();
-						if(doSignal[0]){
-							cond.signal();
-						}
-						lock.unlock();
-					}
-				}
-				
-			});
-			
-			thread.start();
-		}
-		
-		/* wait for browsers to be logged out */
-		lock.lock();
-		doSignal[0] = true;
-		
-		try{
-			while(ArrayUtils.contains(finished, false)){
-				cond.await();
-			}
-		}finally{
-			lock.unlock();
-		}
-		
-		
-		Assert.assertFalse(ArrayUtils.contains(success, false));
-
-		Assert.assertTrue(functionalUtil.logout(browser));
-	}
-}
diff --git a/src/test/java/org/olat/course/nodes/feed/blog.zip b/src/test/java/org/olat/course/nodes/feed/blog.zip
deleted file mode 100644
index 3064933f8387d1e20e8ababb501af218cab5ed1d..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/course/nodes/feed/blog.zip and /dev/null differ
diff --git a/src/test/java/org/olat/course/overview_comprehensive_guide_to_c_programming.html b/src/test/java/org/olat/course/overview_comprehensive_guide_to_c_programming.html
deleted file mode 100644
index 92e204648728aac47300b591b9c8c018922b7be5..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/course/overview_comprehensive_guide_to_c_programming.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
-<head>
-	<title>A comprehensive guide to free software development with free tools</title>
-</head>
-<body>
-	<h1>Welcome to free software development course</h1>
-	<p>This course is intended to give you a quick overview to free software development using free tools. Currently only C Programming language is covered and may be extended in future versions of this course.</p>
-	
-	<h2>Prerequisites</h2>
-	<p>In addition to start programming you may want to download and install common tools for c development. We will take extensive use of `gcc`. To ease programming I recommend you `make` and `gdb`, too. Use your editor of choice, preferably with syntax highlighting for the C language. Personally I prefer `emacs`.</p>
-	<p>Be part of the fun!</p>
-</body>
-</html>
diff --git a/src/test/java/org/olat/course/statistic/TODO.txt b/src/test/java/org/olat/course/statistic/TODO.txt
deleted file mode 100644
index 0644a943195f6a123abeadd2b0c25f0db04f6c60..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/course/statistic/TODO.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-TODO:
-
-Write proper unit/integration tests for these statistics tests, see 
-http://static.springsource.org/spring/docs/3.0.x/reference/testing.html
\ No newline at end of file
diff --git a/src/test/java/org/olat/course/statistic/weekly/TestWeeklyStatisticManager_fillGaps.java b/src/test/java/org/olat/course/statistic/weekly/TestWeeklyStatisticManager_fillGaps.java
deleted file mode 100644
index 95fd80ce4eb85948c47bceba7d16459b382cd298..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/course/statistic/weekly/TestWeeklyStatisticManager_fillGaps.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/**
-* OLAT - Online Learning and Training<br>
-* http://www.olat.org
-* <p>
-* Licensed under the Apache License, Version 2.0 (the "License"); <br>
-* you may not use this file except in compliance with the License.<br>
-* You may obtain a copy of the License at
-* <p>
-* http://www.apache.org/licenses/LICENSE-2.0
-* <p>
-* Unless required by applicable law or agreed to in writing,<br>
-* software distributed under the License is distributed on an "AS IS" BASIS, <br>
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
-* See the License for the specific language governing permissions and <br>
-* limitations under the License.
-* <p>
-* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br>
-* University of Zurich, Switzerland.
-* <hr>
-* <a href="http://www.openolat.org">
-* OpenOLAT - Online Learning and Training</a><br>
-* This file has been modified by the OpenOLAT community. Changes are licensed
-* under the Apache 2.0 license as the original file.
-*/
-package org.olat.course.statistic.weekly;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-
-public class TestWeeklyStatisticManager_fillGaps {
-
-	private WeeklyStatisticManager manager_;
-
-
-	@Before
-	public void setUp() throws Exception {
-		manager_ = new WeeklyStatisticManager();
-	}
-
-	private void runTest(List<String> input, List<String> expectedOutput) throws Exception {
-		List<String> resultingTestset = manager_.fillGapsInColumnHeaders(input);
-		assertListEquals(expectedOutput, resultingTestset);
-	}
-	
-	@Test
-	public void testNull() throws Exception {
-		Assert.assertNull(manager_.fillGapsInColumnHeaders(null));
-	}
-	
-	@Test
-	public void testOne() throws Exception {
-		for(int i=0; i<50; i++) {
-			String s;
-			if (i<10) {
-				s = "2010-0"+i;
-			} else {
-				s = "2010-"+i;
-			}
-			List<String> resultingTestset = manager_.fillGapsInColumnHeaders(createList(s));
-			Assert.assertNull(resultingTestset);
-		}
-	}
-
-	@Test
-	public void testSimple() throws Exception {
-		runTest(
-				createList("2010-01", "2010-02", "2010-03"), 
-				createList("2010-01", "2010-02", "2010-03"));
-	}
-
-	@Test
-	public void testYearChange() throws Exception {
-		runTest(
-				createList("2009-50", "2010-01", "2010-02", "2010-03"), 
-				createList("2009-50", "2009-51", "2009-52", "2009-53", "2010-01", "2010-02", "2010-03"));
-	}
-	
-	@Test
-	public void testAllYearChanges() throws Exception {
-		for(int i=2000; i<2200; i++) {
-			List<String> input = createList(i+"-50", (i+1)+"-03");
-			List<String> output = manager_.fillGapsInColumnHeaders(input);
-			Assert.assertNotNull(output);
-			
-			List<String> outputVariant1 = createList(i+"-50", i+"-51", i+"-52", (i+1)+"-01", (i+1)+"-02", (i+1)+"-03");
-			List<String> outputVariant2 = createList(i+"-50", i+"-51", i+"-52", i+"-53", (i+1)+"-01", (i+1)+"-02", (i+1)+"-03");
-			List<String> outputVariant3 = createList(i+"-50", i+"-51", i+"-52", i+"-53", /*WeeklyStatisticManager left out week 01... */ (i+1)+"-02", (i+1)+"-03");
-			
-			boolean matchesVariant1 = matches(input, outputVariant1);
-			boolean matchesVariant2 = matches(input, outputVariant2);
-			boolean matchesVariant3 = matches(input, outputVariant3);
-			
-			if (matchesVariant1 && !matchesVariant2 && !matchesVariant3) {
-				// perfecto
-			} else if (!matchesVariant1 && matchesVariant2 && !matchesVariant3) {
-				// perfecto
-			} else if (!matchesVariant1 && !matchesVariant2 && matchesVariant3) {
-				// perfecto
-			} else {
-				Assert.fail("failed with input "+input);
-			}
-		}
-	}
-	
-	@Test
-	public void testWronglyFormatted() throws Exception {
-		runTest(
-				createList("2010-1", "2010-2", "2010-4"), 
-				createList("2010-1", "2010-02", "2010-2", "2010-03", "2010-04", "2010-4"));
-	}
-
-	@Test
-	public void testGapsA() throws Exception {
-		runTest(
-				createList("2010-01", "2010-02", "2010-04"), 
-				createList("2010-01", "2010-02", "2010-03", "2010-04"));
-	}
-
-	@Test
-	public void testGapsB() throws Exception {
-		runTest(
-				createList("2010-01", "2010-02", "2010-04", "2010-07"), 
-				createList("2010-01", "2010-02", "2010-03", "2010-04", "2010-05", "2010-06", "2010-07"));
-	}
-
-	@Test
-	public void testBigGap() throws Exception {
-		runTest(
-				createList("2009-50", "2010-12"), 
-				createList("2009-50", "2009-51", "2009-52", "2009-53", "2010-01", "2010-02", "2010-03", "2010-04", "2010-05", "2010-06", "2010-07", "2010-08", "2010-09", "2010-10", "2010-11", "2010-12"));
-	}
-
-	@Test
-	public void testWrongInputParams() throws Exception {
-		List<String> resultingTestset = manager_.fillGapsInColumnHeaders(createList("2010-50", "2010-12"));
-		Assert.assertNull(resultingTestset);
-	}
-
-	private void assertListEquals(List<String> testset, List<String> resultingTestset) {
-		if (testset==null || resultingTestset==null) {
-			throw new IllegalArgumentException("testset and resultingtestset must not be empty");
-		}
-		Assert.assertEquals("size mismatch", testset.size(), resultingTestset.size());
-		for(int i=0; i<testset.size(); i++) {
-			String expectedStr = testset.get(i);
-			String actualStr = resultingTestset.get(i);
-			Assert.assertEquals("string at position "+i+" mismatch", expectedStr, actualStr);
-		}
-	}
-
-	private boolean matches(List<String> input, List<String> output) {
-		if (input.size()!=output.size()) {
-			return false;
-		}
-		for(int i=0; i<input.size(); i++) {
-			String expectedStr = input.get(i);
-			String actualStr = output.get(i);
-			if (!expectedStr.equals(actualStr)) {
-				return false;
-			}
-		}
-		return true;
-	}
-	
-	private List<String> createList(String... strings) {
-		if (strings==null || strings.length==0) {
-			throw new IllegalArgumentException("strings must not be empty");
-		}
-		
-		List<String> result = new ArrayList<String>(strings.length);
-		for (int i = 0; i < strings.length; i++) {
-			String aStr = strings[i];
-			result.add(aStr);
-		}
-		return result;
-	}
-}
diff --git a/src/test/java/org/olat/instantMessaging/FunctionalInstantMessagingTest.java b/src/test/java/org/olat/instantMessaging/FunctionalInstantMessagingTest.java
deleted file mode 100644
index fee96dc3d9ac266409a61b6eee5d1a52d7181a10..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/instantMessaging/FunctionalInstantMessagingTest.java
+++ /dev/null
@@ -1,529 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.instantMessaging;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.Assert;
-
-import org.apache.commons.lang.ArrayUtils;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.container.test.api.RunAsClient;
-import org.jboss.arquillian.drone.api.annotation.Drone;
-import org.jboss.arquillian.junit.Arquillian;
-import org.jboss.arquillian.test.api.ArquillianResource;
-import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.olat.collaboration.CollaborationTools;
-import org.olat.restapi.support.vo.GroupVO;
-import org.olat.test.ArquillianDeployments;
-import org.olat.user.restapi.UserVO;
-import org.olat.util.FunctionalGroupsSiteUtil;
-import org.olat.util.FunctionalGroupsSiteUtil.MembersConfiguration;
-import org.olat.util.FunctionalInstantMessagingUtil;
-import org.olat.util.FunctionalUtil;
-import org.olat.util.FunctionalVOUtil;
-import org.olat.util.browser.Student1;
-import org.olat.util.browser.Student2;
-import org.olat.util.browser.Student3;
-import org.olat.util.browser.Tutor1;
-
-import com.thoughtworks.selenium.DefaultSelenium;
-import com.thoughtworks.selenium.Selenium;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-@RunWith(Arquillian.class)
-public class FunctionalInstantMessagingTest {
-	
-	public final static List<Dialog> GROUP_CHAT_DIALOG = new ArrayList<Dialog>();
-	public final static String[] GROUP_CHAT_MESSAGE = new String[]{
-		null,
-		null,
-		null,
-		"Hello world!",
-		"Clear sky.",
-		null,
-	};
-
-	@Deployment(testable = false)
-	public static WebArchive createDeployment() {
-		return ArquillianDeployments.createDeployment();
-	}
-	
-	@Drone
-	DefaultSelenium browser;
-	
-	@ArquillianResource
-	URL deploymentUrl;
-
-	static FunctionalUtil functionalUtil;
-	static FunctionalGroupsSiteUtil functionalGroupsSiteUtil;
-	static FunctionalInstantMessagingUtil functionalInstantMessagingUtil;
-
-	static FunctionalVOUtil functionalVOUtil;
-	
-	static boolean initialized = false;
-	
-	@Before
-	public void setup() throws IOException, URISyntaxException{
-		if(!initialized){
-			functionalUtil = new FunctionalUtil();
-			functionalUtil.setDeploymentUrl(deploymentUrl.toString());
-			functionalGroupsSiteUtil = new FunctionalGroupsSiteUtil(functionalUtil);
-			functionalInstantMessagingUtil = new FunctionalInstantMessagingUtil(functionalUtil);
-			
-			functionalVOUtil = new FunctionalVOUtil(functionalUtil.getUsername(), functionalUtil.getPassword());
-			
-			initialized = true;
-		}
-	}
-	
-	@Test
-	@RunAsClient
-	public void checkGroupChat(@Drone @Tutor1 DefaultSelenium tutor0,
-			@Drone @Student1 DefaultSelenium student0, @Drone @Student2 DefaultSelenium student1, @Drone @Student3 DefaultSelenium student2)
-			throws IOException, URISyntaxException
-	{
-		/*
-		 * Prerequisites
-		 */
-		/* create users and group */
-		List<UserVO> tutor = functionalVOUtil.createTestAuthors(deploymentUrl, 1);
-		List<UserVO> user = functionalVOUtil.createTestUsers(deploymentUrl, 3);
-		
-		List<GroupVO> group = functionalVOUtil.createTestCourseGroups(deploymentUrl, 1);
-		
-		/* set visibility */
-		functionalVOUtil.setGroupConfiguration(deploymentUrl, group.get(0),
-				new String[]{CollaborationTools.TOOL_CHAT},
-				false, false,
-				false, false,
-				false, false);
-		
-		/* add users to group */
-		functionalVOUtil.addOwnerToGroup(deploymentUrl, group.get(0), tutor.get(0));
-		
-		for(int i = 0; i < 2; i++){
-			functionalVOUtil.addParticipantToGroup(deploymentUrl, group.get(0), user.get(i));
-		}
-		
-		/*
-		 * Content
-		 */
-		functionalUtil.login(tutor0, tutor.get(0).getLogin(), tutor.get(0).getPassword(), true);
-		
-		/* message #0 */
-		Dialog dialog = new Dialog(student0, group.get(0), GROUP_CHAT_MESSAGE[0]);
-		
-		Dialog.Action action = dialog.new LoginAction(user.get(0));
-		dialog.getPreProcessor().add(action);
-		
-		action = dialog.new OnlineContactsAction(0);
-		dialog.getPreProcessor().add(action);
-		
-		action = dialog.new OfflineContactsAction(0);
-		dialog.getPreProcessor().add(action);
-		
-		//FIXME:JK: really ugly, probably rest connection remains open
-		action = dialog.new UsersAction(3);
-		dialog.getPreProcessor().add(action);
-		
-		action = dialog.new LogoutAction();
-		dialog.getPreProcessor().add(action);
-		
-		GROUP_CHAT_DIALOG.add(dialog);
-		
-		/* message #1 */
-		dialog = new Dialog(student0, group.get(0), GROUP_CHAT_MESSAGE[1]);
-		
-		action = dialog.new ModifySettingsAction(tutor0, new FunctionalGroupsSiteUtil.MembersConfiguration[]{
-				MembersConfiguration.CAN_SEE_COACHES,
-		}, group.get(0).getName());
-		dialog.getPreProcessor().add(action);
-		
-		action = dialog.new LoginAction(user.get(0));
-		dialog.getPreProcessor().add(action);
-		
-		action = dialog.new OnlineContactsAction(2);
-		dialog.getPreProcessor().add(action);
-		
-		action = dialog.new CheckUserAction(tutor.get(0).getFirstName(), tutor.get(0).getLastName(), true, false);
-		dialog.getPreProcessor().add(action);
-		
-		action = dialog.new OfflineContactsAction(0);
-		dialog.getPreProcessor().add(action);
-		
-		action = dialog.new LogoutAction();
-		dialog.getPreProcessor().add(action);
-		
-		GROUP_CHAT_DIALOG.add(dialog);
-		
-		/* message #2 */
-		dialog = new Dialog(student0, group.get(0), GROUP_CHAT_MESSAGE[2]);
-		
-		action = dialog.new ModifySettingsAction(tutor0, new FunctionalGroupsSiteUtil.MembersConfiguration[]{
-				//MembersConfiguration.CAN_SEE_COACHES,
-				MembersConfiguration.CAN_SEE_PARTICIPANTS,
-		}, group.get(0).getName());
-		dialog.getPreProcessor().add(action);
-
-		action = dialog.new LoginAction(user.get(0));
-		dialog.getPreProcessor().add(action);
-
-		action = dialog.new OnlineContactsAction(2);
-		dialog.getPreProcessor().add(action);
-		
-		action = dialog.new CheckUserAction(tutor.get(0).getFirstName(), tutor.get(0).getLastName(), true, false);
-		dialog.getPreProcessor().add(action);
-		
-//		action = dialog.new CheckUserAction(user.get(1).getFirstName(), user.get(1).getLastName(), false, true);
-//		dialog.getPreProcessor().add(action);
-		
-		GROUP_CHAT_DIALOG.add(dialog);
-		
-		/* message #3 */
-		dialog = new Dialog(student1, group.get(0), GROUP_CHAT_MESSAGE[3]);
-
-		action = dialog.new LoginAction(user.get(1));
-		dialog.getPreProcessor().add(action);
-		
-		action = dialog.new OnlineContactsAction(3);
-		dialog.getPreProcessor().add(action);
-
-		action = dialog.new CheckUserAction(tutor.get(0).getFirstName(), tutor.get(0).getLastName(), true, false);
-		dialog.getPreProcessor().add(action);
-		
-		action = dialog.new CheckUserAction(user.get(0).getFirstName(), user.get(0).getLastName(), true, false);
-		dialog.getPreProcessor().add(action);
-		
-		action = dialog.new VerifyMessageAction(new String[]{
-				GROUP_CHAT_MESSAGE[3],
-		}, 0);
-		dialog.getPostProcessor().add(action);
-
-		GROUP_CHAT_DIALOG.add(dialog);
-		
-		/* message #4 */
-		dialog = new Dialog(student0, group.get(0), GROUP_CHAT_MESSAGE[4]);
-
-		action = dialog.new VerifyMessageAction(new String[]{
-				GROUP_CHAT_MESSAGE[4],
-		}, 1);
-		dialog.getPostProcessor().add(action);
-		
-		GROUP_CHAT_DIALOG.add(dialog);
-
-		/* message #5 */
-		dialog = new Dialog(student2, group.get(0), GROUP_CHAT_MESSAGE[5]);
-
-		action = dialog.new LoginAction(user.get(2));
-		dialog.getPreProcessor().add(action);
-
-		GROUP_CHAT_DIALOG.add(dialog);
-		
-		/*
-		 * chat - run the dialogs with its pre and post processors
-		 */
-		for(Dialog current: GROUP_CHAT_DIALOG){
-			current.chat();
-		}
-	}
-	
-	public class Dialog{
-		private Selenium browser;
-		
-		private Object conversationPartner;
-		
-		private String message;
-		
-		private List<Action> preProcessor = new ArrayList<Action>();
-		private List<Action> postProcessor = new ArrayList<Action>();
-	
-		public Dialog(Selenium browser, Object conversationPartner, String message){
-			this.browser = browser;
-			this.conversationPartner = conversationPartner;
-			this.message = message;
-		}
-		
-		public boolean performPreProcessing(){
-			for(Action current: preProcessor){
-				if(!current.process(this)){
-					Assert.fail(current.getClass().getName());
-				}
-			}
-			
-			return(true);
-		}
-		
-		public boolean performPostProcessing(){
-			for(Action current: postProcessor){
-				if(!current.process(this)){
-					Assert.fail(current.getClass().getName());
-				}
-			}
-			
-			return(true);
-		}
-		
-		public boolean chat(){
-			performPreProcessing();
-			
-			if(message != null){
-				if(conversationPartner instanceof UserVO){
-					if(!functionalInstantMessagingUtil.sendMessageToUser(browser,
-							((UserVO) conversationPartner).getFirstName(), ((UserVO) conversationPartner).getLastName(),
-							message)){
-						Assert.fail();
-					}
-				}else if(conversationPartner instanceof GroupVO){
-					if(!functionalGroupsSiteUtil.sendMessageToGroup(browser,
-							((GroupVO) conversationPartner).getName(),
-							message)){
-						Assert.fail();
-					}
-				}
-			}
-			
-			performPostProcessing();
-			
-			return(true);
-		}
-		
-		public Selenium getBrowser() {
-			return browser;
-		}
-
-		public void setBrowser(Selenium browser) {
-			this.browser = browser;
-		}
-
-		public Object getConversationPartner() {
-			return conversationPartner;
-		}
-
-		public void setConversationPartner(Object conversationPartner) {
-			this.conversationPartner = conversationPartner;
-		}
-
-		public String getMessage() {
-			return message;
-		}
-
-		public void setMessage(String message) {
-			this.message = message;
-		}
-
-		public List<Action> getPreProcessor() {
-			return preProcessor;
-		}
-
-		public void setPreProcessor(List<Action> preProcessor) {
-			this.preProcessor = preProcessor;
-		}
-
-		public List<Action> getPostProcessor() {
-			return postProcessor;
-		}
-
-		public void setPostProcessor(List<Action> postProcessor) {
-			this.postProcessor = postProcessor;
-		}
-
-		public abstract class Action{
-			public abstract boolean process(Dialog dialog);
-		}
-		
-		public class UsersAction extends Action{
-			private int count;
-			
-			public UsersAction(int count){
-				this.count = count;
-			}
-			
-			@Override
-			public boolean process(Dialog dialog) {
-				int users = functionalUtil.retrieveUserCount(getBrowser());
-				
-				if(users == count){
-					return(true);
-				}else{
-					return(false);
-				}
-			}
-		}
-		
-		public class LoginAction extends Action {
-			private UserVO user;
-			
-			public LoginAction(UserVO user){
-				this.user = user;
-			}
-			
-			@Override
-			public boolean process(Dialog dialog) {
-				if(functionalUtil.login(browser, user.getLogin(), user.getPassword(), true)){
-					return(true);
-				}else{
-					return(false);
-				}
-			}
-			
-		}
-		
-		public class LogoutAction extends Action {
-			public LogoutAction(){
-			}
-			
-			@Override
-			public boolean process(Dialog dialog) {
-				if(functionalUtil.logout(browser)){
-					return(true);
-				}else{
-					return(false);
-				}
-			}
-			
-		}
-		
-		public class OnlineContactsAction extends Action{
-			private int count;
-			
-			public OnlineContactsAction(int count){
-				this.count = count;
-			}
-			
-			@Override
-			public boolean process(Dialog dialog) {
-				List<String> contacts = functionalInstantMessagingUtil.findOnlineContacts(browser);
-				
-				if(contacts.size() == count){
-					return(true);
-				}else{
-					return(false);
-				}
-			}
-		}
-		
-		public class OfflineContactsAction extends Action{
-			private int count;
-			
-			public OfflineContactsAction(int count){
-				this.count = count;
-			}
-			
-			@Override
-			public boolean process(Dialog dialog) {
-				List<String> contacts = functionalInstantMessagingUtil.findOfflineContacts(browser);
-				
-				if(contacts.size() == count){
-					return(true);
-				}else{
-					return(false);
-				}
-			}
-		}
-		
-		public class VerifyMessageAction extends Action {
-			String message[];
-			int index;
-
-			public VerifyMessageAction(String message[], int index){
-				this.message = message;
-				this.index = index;
-			}
-			
-			@Override
-			public boolean process(Dialog dialog) {
-				for(String current: message){
-					if(conversationPartner instanceof UserVO){
-						if(!functionalInstantMessagingUtil.waitForPageToLoadMessage(browser, current)){
-							return(false);
-						}
-					}else if(conversationPartner instanceof GroupVO){
-						if(!functionalGroupsSiteUtil.waitForPageToLoadMessage(browser, ((GroupVO) conversationPartner).getName(), current, index)){
-							return(false);
-						}
-					}
-				}
-				
-				return(true);
-			}
-		}
-		
-		public class ModifySettingsAction extends Action {
-			private Selenium tutor;
-			private String groupName;
-			private FunctionalGroupsSiteUtil.MembersConfiguration[] config;
-			
-			public ModifySettingsAction(Selenium tutor, FunctionalGroupsSiteUtil.MembersConfiguration[] config, String groupName){
-				this.tutor = tutor;
-				this.groupName = groupName;
-				this.config = config;
-			}
-			
-			@Override
-			public boolean process(Dialog dialog) {
-				functionalGroupsSiteUtil.openMyGroup(tutor, groupName);
-				functionalGroupsSiteUtil.applyMembersConfiguration(tutor, config);
-				
-				return(true);
-			}
-		}
-		
-		public class CheckUserAction extends Action {
-			private String firstname;
-			private String surname;
-			private boolean onlineContacts;
-			private boolean offlineContacts;
-			
-			public CheckUserAction(String firstname, String surname, boolean onlineContacts, boolean offlineContacts){
-				this.firstname = firstname;
-				this.surname = surname;
-				this.onlineContacts = onlineContacts;
-				this.offlineContacts = offlineContacts;
-			}
-			
-			@Override
-			public boolean process(Dialog dialog) {
-				String name = surname + ", " + firstname;
-				
-				boolean isOnline = ArrayUtils.contains(functionalInstantMessagingUtil.findOnlineContacts(browser).toArray(), name);
-				boolean isOffline = ArrayUtils.contains(functionalInstantMessagingUtil.findOfflineContacts(browser).toArray(), name);
-				
-				if((onlineContacts && isOnline) ||
-						(offlineContacts && isOffline)){
-					return(true);
-				}else{
-					return(false);
-				}
-			}
-		}
-	}
-}
-
diff --git a/src/test/java/org/olat/ldap/LDAPLoginTest.java b/src/test/java/org/olat/ldap/LDAPLoginTest.java
index d17c341b195fe1d1382ba562a35d2ceffaf392e8..f9cd4b7e6f030ce6a7378678310fd0afe1bd820d 100644
--- a/src/test/java/org/olat/ldap/LDAPLoginTest.java
+++ b/src/test/java/org/olat/ldap/LDAPLoginTest.java
@@ -35,6 +35,7 @@ import javax.naming.directory.Attribute;
 import javax.naming.directory.Attributes;
 import javax.naming.ldap.LdapContext;
 
+import org.junit.Assume;
 import org.junit.Test;
 import org.olat.admin.user.delete.service.UserDeletionManager;
 import org.olat.basesecurity.BaseSecurity;
@@ -61,18 +62,19 @@ import org.olat.user.UserManager;
 public class LDAPLoginTest extends OlatTestCase {
 	
 	
-	@Test public void testSystemBind() {
-		if (!LDAPLoginModule.isLDAPEnabled()) return;
+	@Test
+	public void testSystemBind() {
+		Assume.assumeTrue(LDAPLoginModule.isLDAPEnabled());
 
 		//edit olatextconfig.xml for testing
 		LDAPLoginManager ldapManager = (LDAPLoginManager) CoreSpringFactory.getBean(LDAPLoginManager.class);
 		LdapContext ctx = ldapManager.bindSystem();
 		assertEquals(true, (ctx != null));
 	}
-
 	
-	@Test public void testCreateUser() {
-		if (!LDAPLoginModule.isLDAPEnabled()) return;
+	@Test
+	public void testCreateUser() {
+		Assume.assumeTrue(LDAPLoginModule.isLDAPEnabled());
 
 		LDAPLoginManager ldapManager = (LDAPLoginManager) CoreSpringFactory.getBean(LDAPLoginManager.class);
 		BaseSecurity securityManager = BaseSecurityManager.getInstance();
@@ -94,10 +96,10 @@ public class LDAPLoginTest extends OlatTestCase {
 		ldapManager.createAndPersistUser(attrs);
 		assertEquals(true, (securityManager.findIdentityByName(uid) != null));
 	}
-
 	
-	@Test public void testUserBind() throws NamingException {
-		if (!LDAPLoginModule.isLDAPEnabled()) return;
+	@Test
+	public void testUserBind() throws NamingException {
+		Assume.assumeTrue(LDAPLoginModule.isLDAPEnabled());
 
 		LDAPLoginManager ldapManager = (LDAPLoginManager) CoreSpringFactory.getBean(LDAPLoginManager.class);
 		LDAPError errors = new LDAPError();
@@ -127,8 +129,9 @@ public class LDAPLoginTest extends OlatTestCase {
 	}
 	
 	
-	@Test public void testCheckUser() {
-		if (!LDAPLoginModule.isLDAPEnabled()) return;
+	@Test
+	public void testCheckUser() {
+		Assume.assumeTrue(LDAPLoginModule.isLDAPEnabled());
 
 		LDAPLoginManager ldapManager = (LDAPLoginManager) CoreSpringFactory.getBean(LDAPLoginManager.class);
 		LDAPError errors = new LDAPError();
@@ -151,9 +154,9 @@ public class LDAPLoginTest extends OlatTestCase {
 		assertEquals(true, errors.isEmpty());
 	}
 	
-	
-	@Test public void testCreateChangedAttrMap() {
-		if (!LDAPLoginModule.isLDAPEnabled()) return;
+	@Test
+	public void testCreateChangedAttrMap() {
+		Assume.assumeTrue(LDAPLoginModule.isLDAPEnabled());
 
 		// simulate closed session (user adding from startup job)
 		DBFactory.getInstance().intermediateCommit();
@@ -210,8 +213,9 @@ public class LDAPLoginTest extends OlatTestCase {
 		assertEquals(true, (changedAttrMap==null));
 	}
 	
-	@Test public void testSyncUser(){
-		if (!LDAPLoginModule.isLDAPEnabled()) return;
+	@Test
+	public void testSyncUser(){
+		Assume.assumeTrue(LDAPLoginModule.isLDAPEnabled());
 
 		LDAPLoginManager ldapManager = (LDAPLoginManager) CoreSpringFactory.getBean(LDAPLoginManager.class);
 		BaseSecurity securityManager = BaseSecurityManager.getInstance();
@@ -233,8 +237,9 @@ public class LDAPLoginTest extends OlatTestCase {
 		assertEquals(true, (changedMap==null));
 	}
 
-	@Test public void testIdentityDeletedInLDAP(){
-		if (!LDAPLoginModule.isLDAPEnabled()) return;
+	@Test
+	public void testIdentityDeletedInLDAP(){
+		Assume.assumeTrue(LDAPLoginModule.isLDAPEnabled());
 
 		LDAPLoginManager ldapManager = (LDAPLoginManager) CoreSpringFactory.getBean(LDAPLoginManager.class);
 		BaseSecurity securityManager = BaseSecurityManager.getInstance();
@@ -279,10 +284,9 @@ public class LDAPLoginTest extends OlatTestCase {
 		assertEquals(2, (deletList.size()));
 	}
 	
-	
-	
-	@Test public void testCronSync() throws Exception {
-		if (!LDAPLoginModule.isLDAPEnabled()) return;
+	@Test
+	public void testCronSync() throws Exception {
+		Assume.assumeTrue(LDAPLoginModule.isLDAPEnabled());
 
 		LdapContext ctx;
 		List<Attributes> ldapUserList;
diff --git a/src/test/java/org/olat/portal/FunctionalSettingsTest.java b/src/test/java/org/olat/portal/FunctionalSettingsTest.java
deleted file mode 100644
index ba715668c121bb10d9f865b548243eef0c0291d6..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/portal/FunctionalSettingsTest.java
+++ /dev/null
@@ -1,366 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.portal;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.UUID;
-
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.container.test.api.RunAsClient;
-import org.jboss.arquillian.drone.api.annotation.Drone;
-import org.jboss.arquillian.junit.Arquillian;
-import org.jboss.arquillian.test.api.ArquillianResource;
-import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.olat.test.ArquillianDeployments;
-import org.olat.user.restapi.UserVO;
-import org.olat.util.FunctionalHomeSiteUtil;
-import org.olat.util.FunctionalHomeSiteUtil.SettingsTab;
-import org.olat.util.FunctionalLocatorPairsFactory;
-import org.olat.util.FunctionalUtil;
-import org.olat.util.FunctionalVOUtil;
-
-import com.thoughtworks.selenium.DefaultSelenium;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-@RunWith(Arquillian.class)
-public class FunctionalSettingsTest {
-	@Deployment(testable = false)
-	public static WebArchive createDeployment() {
-		return ArquillianDeployments.createDeployment();
-	}
-
-	@Drone
-	DefaultSelenium browser;
-
-	@ArquillianResource
-	URL deploymentUrl;
-
-	FunctionalUtil functionalUtil;
-	FunctionalVOUtil functionalVOUtil;
-	FunctionalHomeSiteUtil functionalHomeSiteUtil;
-	
-	int portalColumnCount;
-
-	@Before
-	public void setup(){
-		functionalUtil = new FunctionalUtil();
-		functionalUtil.setDeploymentUrl(deploymentUrl.toString());
-		
-		functionalVOUtil = new FunctionalVOUtil(functionalUtil.getUsername(), functionalUtil.getPassword());
-		functionalHomeSiteUtil = functionalUtil.getFunctionalHomeSiteUtil();
-		
-		portalColumnCount = 2;
-	}
-	
-	@Test
-	@RunAsClient
-	public void checkActivatePortlet(){
-		/* login for test setup */
-		Assert.assertTrue(functionalUtil.login(browser));
-		
-		/* click configure */
-		functionalHomeSiteUtil.beginEditingPortal(browser);
-		
-		/* de-/activate portlets */
-		if(functionalHomeSiteUtil.deactivatePortlet(browser, functionalHomeSiteUtil.getPortletEffCss())){
-			Assert.assertFalse(functionalHomeSiteUtil.checkPortletActive(browser, functionalHomeSiteUtil.getPortletEffCss()));
-		}
-		
-		if(functionalHomeSiteUtil.activatePortlet(browser, functionalHomeSiteUtil.getPortletNotesCss())){
-			Assert.assertTrue(functionalHomeSiteUtil.checkPortletActive(browser, functionalHomeSiteUtil.getPortletNotesCss()));
-		}
-		
-		/* end editing portal */
-		functionalHomeSiteUtil.endEditingPortal(browser);
-	}
-	
-	@Test
-	@RunAsClient
-	public void checkMovePortlet(){
-		/* login for test setup */
-		Assert.assertTrue(functionalUtil.login(browser));
-		
-		/* click configure */
-		functionalHomeSiteUtil.beginEditingPortal(browser);
-		
-		/* move portlets */
-		int oldPositionDyk[] = functionalHomeSiteUtil.findPortletPosition(browser, functionalHomeSiteUtil.getPortletDykCss(), portalColumnCount);
-		
-		if(oldPositionDyk[1] != 0){
-			if(functionalHomeSiteUtil.movePortlet(browser, functionalHomeSiteUtil.getPortletDykCss(), FunctionalHomeSiteUtil.Direction.UP)){
-				functionalUtil.idle(browser);
-				int newPosition[] = functionalHomeSiteUtil.findPortletPosition(browser, functionalHomeSiteUtil.getPortletDykCss(), portalColumnCount);
-
-				Assert.assertEquals(oldPositionDyk[1], newPosition[1] + 1);
-			}
-		}else{
-			if(functionalHomeSiteUtil.movePortlet(browser, functionalHomeSiteUtil.getPortletDykCss(), FunctionalHomeSiteUtil.Direction.DOWN)){
-				functionalUtil.idle(browser);
-				int newPosition[] = functionalHomeSiteUtil.findPortletPosition(browser, functionalHomeSiteUtil.getPortletDykCss(), portalColumnCount);
-
-				Assert.assertEquals(oldPositionDyk[1], newPosition[1] - 1);
-			}
-		}
-		
-		int oldPositionNoti[] = functionalHomeSiteUtil.findPortletPosition(browser, functionalHomeSiteUtil.getPortletNotiCss(), portalColumnCount);
-		
-		if(oldPositionNoti[0] != 0){
-			if(functionalHomeSiteUtil.movePortlet(browser, functionalHomeSiteUtil.getPortletNotiCss(), FunctionalHomeSiteUtil.Direction.LEFT)){
-				functionalUtil.idle(browser);
-				int newPosition[] = functionalHomeSiteUtil.findPortletPosition(browser, functionalHomeSiteUtil.getPortletNotiCss(), portalColumnCount);
-
-				Assert.assertEquals(oldPositionNoti[0] - 1, newPosition[0]);
-			}
-		}else{
-			if(functionalHomeSiteUtil.movePortlet(browser, functionalHomeSiteUtil.getPortletNotiCss(), FunctionalHomeSiteUtil.Direction.RIGHT)){
-				functionalUtil.idle(browser);
-				int newPosition[] = functionalHomeSiteUtil.findPortletPosition(browser, functionalHomeSiteUtil.getPortletNotiCss(), portalColumnCount);
-
-				Assert.assertEquals(oldPositionNoti[0] + 1, newPosition[0]);
-			}
-		}
-		
-		/* end editing portal */
-		functionalHomeSiteUtil.endEditingPortal(browser);
-	}
-	
-	@Test
-	@RunAsClient
-	public void checkBrowserBack(){
-		/* login for test setup */
-		Assert.assertTrue(functionalUtil.login(browser));
-		
-		functionalHomeSiteUtil.enableBack(browser);
-		
-		/* check if settings were applied */
-		Assert.assertTrue(functionalUtil.logout(browser));
-		Assert.assertTrue(functionalUtil.login(browser));
-		
-		LinkedHashMap<String,String> pages = new LinkedHashMap<String,String>();
-		
-		/* locators as key to click and as value to test for */
-		FunctionalLocatorPairsFactory pairsFactory = new FunctionalLocatorPairsFactory(functionalUtil);
-		pages.put(pairsFactory.getLocatorOfSite(functionalUtil.getOlatSiteHomeCss()), pairsFactory.getApprovalOfSite(functionalUtil.getOlatSiteHomeCss()));
-		pages.put(pairsFactory.getLocatorOfSite(functionalUtil.getOlatSiteAdministrationCss()), pairsFactory.getApprovalOfSite(functionalUtil.getOlatSiteAdministrationCss()));
-		//pages.put(pairsFactory.getLocatorOfSite(functionalUtil.getOlatSiteGroupAdministrationCss()), pairsFactory.getApprovalOfSite(functionalUtil.getOlatSiteGroupAdministrationCss()));
-		pages.put(pairsFactory.getLocatorOfSite(functionalUtil.getOlatSiteGroupsCss()), pairsFactory.getApprovalOfSite(functionalUtil.getOlatSiteGroupsCss()));
-		pages.put(pairsFactory.getLocatorOfSite(functionalUtil.getOlatSiteLearningResourcesCss()), pairsFactory.getApprovalOfSite(functionalUtil.getOlatSiteLearningResourcesCss()));
-		pages.put(pairsFactory.getLocatorOfSite(functionalUtil.getOlatSiteUserManagementCss()), pairsFactory.getApprovalOfSite(functionalUtil.getOlatSiteUserManagementCss()));
-		
-		
-		/* visit specified pages */
-		String[] keys = pages.keySet().toArray(new String[0]);
-		String[] values = pages.values().toArray(new String[0]);
-		
-		int i;
-		
-		for(i = 0; i < pages.size(); i++){
-			functionalUtil.idle(browser);
-			browser.click(keys[i]);
-			
-			functionalUtil.waitForPageToLoad(browser);
-			functionalUtil.waitForPageToLoadElement(browser, values[i]);
-		}
-		
-		/* test for the appropriate pages */
-		i = pages.size() -1;
-		
-		Assert.assertTrue(browser.isElementPresent(values[i]));
-		
-		i--;
-		
-		for(; i >= 0; i--){
-			functionalUtil.idle(browser);
-			browser.goBack();
-
-			functionalUtil.waitForPageToLoad(browser);
-			functionalUtil.waitForPageToLoadElement(browser, values[i]);
-			
-			Assert.assertTrue(browser.isElementPresent(values[i]));
-		}
-	}
-	
-	
-	@Test
-	@RunAsClient
-	public void checkSettings() throws IOException, URISyntaxException, InterruptedException{
-		/* create test user via REST */
-		List<UserVO> userVO = functionalVOUtil.createTestUsers(deploymentUrl, 1);
-		
-		/* login for test setup */
-		Assert.assertTrue(functionalUtil.login(browser));
-		
-		/* reset settings */
-		Assert.assertTrue(functionalHomeSiteUtil.resetSettings(browser));
-		Assert.assertTrue(functionalUtil.login(browser));
-		
-		/* set language */
-		functionalHomeSiteUtil.selectLanguage(browser, FunctionalHomeSiteUtil.GERMAN_LANGUAGE_VALUE);
-		
-		/* resume off */
-		functionalHomeSiteUtil.disableResume(browser);
-		
-		/* logout */
-		Assert.assertTrue(functionalUtil.logout(browser));
-		
-		/* login for test case */
-		Assert.assertTrue(functionalUtil.login(browser));
-		
-		/* click configure */
-		functionalHomeSiteUtil.beginEditingPortal(browser);
-		
-		/* de-/activate portlets */
-		if(functionalHomeSiteUtil.deactivatePortlet(browser, functionalHomeSiteUtil.getPortletEffCss())){
-			Assert.assertFalse(functionalHomeSiteUtil.checkPortletActive(browser, functionalHomeSiteUtil.getPortletEffCss()));
-		}
-		
-		if(functionalHomeSiteUtil.activatePortlet(browser, functionalHomeSiteUtil.getPortletNotesCss())){
-			Assert.assertTrue(functionalHomeSiteUtil.checkPortletActive(browser, functionalHomeSiteUtil.getPortletNotesCss()));
-		}
-		
-		/* move portlets */
-		/* move portlets */
-		int oldPositionDyk[] = functionalHomeSiteUtil.findPortletPosition(browser, functionalHomeSiteUtil.getPortletDykCss(), portalColumnCount);
-		
-		if(oldPositionDyk[1] != 0){
-			if(functionalHomeSiteUtil.movePortlet(browser, functionalHomeSiteUtil.getPortletDykCss(), FunctionalHomeSiteUtil.Direction.UP)){
-				functionalUtil.idle(browser);
-				int newPosition[] = functionalHomeSiteUtil.findPortletPosition(browser, functionalHomeSiteUtil.getPortletDykCss(), portalColumnCount);
-
-				Assert.assertEquals(oldPositionDyk[1], newPosition[1] + 1);
-			}
-		}else{
-			if(functionalHomeSiteUtil.movePortlet(browser, functionalHomeSiteUtil.getPortletDykCss(), FunctionalHomeSiteUtil.Direction.DOWN)){
-				functionalUtil.idle(browser);
-				int newPosition[] = functionalHomeSiteUtil.findPortletPosition(browser, functionalHomeSiteUtil.getPortletDykCss(), portalColumnCount);
-
-				Assert.assertEquals(oldPositionDyk[1], newPosition[1] - 1);
-			}
-		}
-		
-		int oldPositionNoti[] = functionalHomeSiteUtil.findPortletPosition(browser, functionalHomeSiteUtil.getPortletNotiCss(), portalColumnCount);
-		
-		if(oldPositionNoti[0] != 0){
-			if(functionalHomeSiteUtil.movePortlet(browser, functionalHomeSiteUtil.getPortletNotiCss(), FunctionalHomeSiteUtil.Direction.LEFT)){
-				functionalUtil.idle(browser);
-				int newPosition[] = functionalHomeSiteUtil.findPortletPosition(browser, functionalHomeSiteUtil.getPortletNotiCss(), portalColumnCount);
-
-				Assert.assertEquals(oldPositionNoti[0] - 1, newPosition[0]);
-			}
-		}else{
-			if(functionalHomeSiteUtil.movePortlet(browser, functionalHomeSiteUtil.getPortletNotiCss(), FunctionalHomeSiteUtil.Direction.RIGHT)){
-				functionalUtil.idle(browser);
-				int newPosition[] = functionalHomeSiteUtil.findPortletPosition(browser, functionalHomeSiteUtil.getPortletNotiCss(), portalColumnCount);
-
-				Assert.assertEquals(oldPositionNoti[0] + 1, newPosition[0]);
-			}
-		}
-		
-		/* end editing portal */
-		functionalHomeSiteUtil.endEditingPortal(browser);
-		
-		/* edit settings */
-		functionalHomeSiteUtil.openActionByMenuTree(browser, FunctionalHomeSiteUtil.HomeSiteAction.SETTINGS);
-		
-		functionalUtil.openContentTab(browser, SettingsTab.SYSTEM.ordinal());
-		
-		functionalHomeSiteUtil.selectLanguage(browser, FunctionalHomeSiteUtil.ENGLISH_LANGUAGE_VALUE);
-		
-		functionalHomeSiteUtil.enableBack(browser);
-		
-		/* check if settings were applied */
-		Assert.assertTrue(functionalUtil.logout(browser));
-		Assert.assertTrue(functionalUtil.login(browser));
-		
-		LinkedHashMap<String,String> pages = new LinkedHashMap<String,String>();
-		
-		/* locators as key to click and as value to test for */
-		FunctionalLocatorPairsFactory pairsFactory = new FunctionalLocatorPairsFactory(functionalUtil);
-		pages.put(pairsFactory.getLocatorOfSite(functionalUtil.getOlatSiteHomeCss()), pairsFactory.getApprovalOfSite(functionalUtil.getOlatSiteHomeCss()));
-		pages.put(pairsFactory.getLocatorOfSite(functionalUtil.getOlatSiteAdministrationCss()), pairsFactory.getApprovalOfSite(functionalUtil.getOlatSiteAdministrationCss()));
-		//pages.put(pairsFactory.getLocatorOfSite(functionalUtil.getOlatSiteGroupAdministrationCss()), pairsFactory.getApprovalOfSite(functionalUtil.getOlatSiteGroupAdministrationCss()));
-		pages.put(pairsFactory.getLocatorOfSite(functionalUtil.getOlatSiteGroupsCss()), pairsFactory.getApprovalOfSite(functionalUtil.getOlatSiteGroupsCss()));
-		pages.put(pairsFactory.getLocatorOfSite(functionalUtil.getOlatSiteLearningResourcesCss()), pairsFactory.getApprovalOfSite(functionalUtil.getOlatSiteLearningResourcesCss()));
-		pages.put(pairsFactory.getLocatorOfSite(functionalUtil.getOlatSiteUserManagementCss()), pairsFactory.getApprovalOfSite(functionalUtil.getOlatSiteUserManagementCss()));
-		
-		
-		/* visit specified pages */
-		String[] keys = pages.keySet().toArray(new String[0]);
-		String[] values = pages.values().toArray(new String[0]);
-		
-		int i;
-		
-		for(i = 0; i < pages.size(); i++){
-			functionalUtil.idle(browser);
-			browser.click(keys[i]);
-			
-			functionalUtil.waitForPageToLoad(browser);
-			functionalUtil.waitForPageToLoadElement(browser, values[i]);
-		}
-		
-		/* test for the appropriate pages */
-		i = pages.size() -1;
-		
-		Assert.assertTrue(browser.isElementPresent(values[i]));
-		
-		i--;
-		
-		for(; i >= 0; i--){
-			browser.goBack();
-
-			functionalUtil.waitForPageToLoad(browser);
-			functionalUtil.waitForPageToLoadElement(browser, values[i]);
-			
-			Assert.assertTrue(browser.isElementPresent(values[i]));
-		}
-		
-		/* password test */
-		UserVO current = userVO.get(0);
-		
-		Assert.assertTrue(functionalUtil.logout(browser));
-		Assert.assertTrue(functionalUtil.login(browser, current.getLogin(), current.getPassword(), true));
-		
-		functionalUtil.openSite(browser, FunctionalUtil.OlatSite.HOME);
-		functionalHomeSiteUtil.openActionByMenuTree(browser, FunctionalHomeSiteUtil.HomeSiteAction.SETTINGS);
-		
-		String newPassword = ("passwd_" + 0 + "_" + UUID.randomUUID().toString()).substring(0, 24);
-		
-		functionalUtil.openContentTab(browser, SettingsTab.PASSWORD.ordinal());
-		functionalUtil.typePassword(browser, functionalHomeSiteUtil.getOldPasswordCss(), current.getPassword());
-		functionalUtil.typePassword(browser, functionalHomeSiteUtil.getNewPasswordCss(), newPassword);
-		functionalUtil.typePassword(browser, functionalHomeSiteUtil.getConfirmPasswordCss(), newPassword);
-		
-		functionalUtil.saveForm(browser, 0);
-		
-		Assert.assertTrue(functionalUtil.logout(browser));
-		Assert.assertTrue(functionalUtil.login(browser, current.getLogin(), newPassword, true));
-	}
-}
diff --git a/src/test/java/org/olat/repository/FunctionalCatalogTest.java b/src/test/java/org/olat/repository/FunctionalCatalogTest.java
deleted file mode 100644
index 1024ee8f5661bf22cb12287ad67c39655cba8c57..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/repository/FunctionalCatalogTest.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.repository;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URL;
-
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.container.test.api.RunAsClient;
-import org.jboss.arquillian.drone.api.annotation.Drone;
-import org.jboss.arquillian.junit.Arquillian;
-import org.jboss.arquillian.test.api.ArquillianResource;
-import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.olat.restapi.support.vo.CourseVO;
-import org.olat.restapi.support.vo.RepositoryEntryVO;
-import org.olat.test.ArquillianDeployments;
-import org.olat.util.FunctionalCourseUtil;
-import org.olat.util.FunctionalCourseUtil.CourseNodeAlias;
-import org.olat.util.FunctionalRepositorySiteUtil;
-import org.olat.util.FunctionalUtil;
-import org.olat.util.FunctionalVOUtil;
-import org.olat.util.FunctionalRepositorySiteUtil.RepositorySiteAction;
-
-import com.thoughtworks.selenium.DefaultSelenium;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-@RunWith(Arquillian.class)
-public class FunctionalCatalogTest {
-	public final static String[] SUBCATEGORY_PATHS = {
-		"/programming",
-		"/programming/c",
-		"/programming/java"
-	};
-	public final static String[] SUBCATEGORY_DESCRIPTIONS = {
-		"here you may find courses and resources related to programming",
-		"about the C programming language",
-		"about the Java programming language"
-	};
-	
-	public final static String[] SUBCATEGORY_PATHS_INCLUDING_RESOURCE = {
-		SUBCATEGORY_PATHS[1],
-		SUBCATEGORY_PATHS[2]
-	};
-
-	@Deployment(testable = false)
-	public static WebArchive createDeployment() {
-		return ArquillianDeployments.createDeployment();
-	}
-
-	@Drone
-	DefaultSelenium browser;
-
-	@ArquillianResource
-	URL deploymentUrl;
-
-	static FunctionalUtil functionalUtil;
-	static FunctionalRepositorySiteUtil functionalRepositorySiteUtil;
-	static FunctionalCourseUtil functionalCourseUtil;
-
-	static FunctionalVOUtil functionalVOUtil;
-	
-	static boolean initialized = false;
-	
-	@Before
-	public void setup() throws IOException, URISyntaxException{
-		if(!initialized){
-			functionalUtil = new FunctionalUtil();
-			functionalUtil.setDeploymentUrl(deploymentUrl.toString());
-
-			functionalRepositorySiteUtil = functionalUtil.getFunctionalRepositorySiteUtil();
-			functionalCourseUtil = functionalRepositorySiteUtil.getFunctionalCourseUtil();
-
-			functionalVOUtil = new FunctionalVOUtil(functionalUtil.getUsername(), functionalUtil.getPassword());
-			
-			initialized = true;
-		}
-	}
-
-	@Test
-	@RunAsClient
-	public void checkCreateSubcategory() throws URISyntaxException, IOException{
-		int courses = SUBCATEGORY_PATHS_INCLUDING_RESOURCE.length;
-		
-		/*
-		 * prerequisites for test created via REST
-		 */
-		/* import wiki */
-		RepositoryEntryVO[] wikiVO = new RepositoryEntryVO[courses]; 
-		
-		for(int i = 0; i < courses; i++){
-			wikiVO[i] = functionalVOUtil.importWiki(deploymentUrl);
-		}
-		
-		/* import course */
-		CourseVO[] courseVO = new CourseVO[courses];
-		
-		for(int i = 0; i < courses; i++){
-			courseVO[i] = functionalVOUtil.importEmptyCourse(deploymentUrl);
-		}
-
-		/*
-		 * create or configure content
-		 */
-		functionalUtil.login(browser);
-		
-		/* create categories */
-		for(int i = 0; i < SUBCATEGORY_PATHS.length; i++){
-			String currentPath = SUBCATEGORY_PATHS[i];
-			String currentName = currentPath.substring(currentPath.lastIndexOf('/') + 1);
-			String currentDescription = SUBCATEGORY_DESCRIPTIONS[i];
-			
-			Assert.assertTrue(functionalRepositorySiteUtil.createCatalogSubcategory(browser, currentPath.substring(0, currentPath.lastIndexOf('/')), currentName, currentDescription));
-		}
-		
-		/* edit course and publish thereby adding it to catalog  */
-		for(int i = 0; i < courses; i++){
-			/* open course in edit mode */	
-			Assert.assertTrue(functionalRepositorySiteUtil.openCourse(browser, courseVO[i].getRepoEntryKey()));
-			
-			Assert.assertTrue(functionalCourseUtil.openCourseEditor(browser));
-			
-			/* choose wiki */
-			String currentPath = SUBCATEGORY_PATHS_INCLUDING_RESOURCE[i];
-			String currentName = currentPath.substring(currentPath.lastIndexOf('/') + 1);
-			
-			Assert.assertTrue(functionalCourseUtil.createCourseNode(browser, CourseNodeAlias.WIKI, "wiki", currentName + " wiki", "colaborative " + currentName + " wiki", 0));
-			Assert.assertTrue(functionalCourseUtil.chooseWiki(browser, wikiVO[i].getKey()));
-			
-			/* publish course */
-			Assert.assertTrue(functionalCourseUtil.publishEntireCourse(browser, null, currentPath));
-			
-			/* close course */
-			Assert.assertTrue(functionalCourseUtil.closeActiveTab(browser));
-		}
-		
-		/*
-		 * verify content
-		 */
-		/* open catalog */
-		Assert.assertTrue(functionalUtil.openSite(browser, FunctionalUtil.OlatSite.LEARNING_RESOURCES));
-		
-		Assert.assertTrue(functionalRepositorySiteUtil.openActionByMenuTree(browser, RepositorySiteAction.CATALOG));
-		
-		/* verify resources */
-		for(int i = 0; i < courses; i++){
-			
-			functionalUtil.idle(browser);
-			
-			/* click on catalog root */
-			StringBuffer selectorBuffer = new StringBuffer();
-			
-			selectorBuffer.append("xpath=//div[contains(@class, '")
-			.append(functionalRepositorySiteUtil.getCatalogNavigationCss())
-			.append("')]//a");
-			
-			if(browser.isElementPresent(selectorBuffer.toString())){
-				browser.click(selectorBuffer.toString());
-			}
-			
-			/* navigate tree */
-			String[] selectors = functionalRepositorySiteUtil.createCatalogSelectors(SUBCATEGORY_PATHS_INCLUDING_RESOURCE[i]);
-			
-			for(String currentSelector: selectors){
-				functionalUtil.idle(browser);
-				
-				functionalUtil.waitForPageToLoadElement(browser, currentSelector.toString());
-				browser.click(currentSelector);
-			}
-
-			functionalUtil.idle(browser);
-			
-			/* click first course and retrieve business path */
-			selectorBuffer = new StringBuffer();
-			
-			selectorBuffer.append("xpath=(//a[contains(@class, '")
-			.append(functionalRepositorySiteUtil.getCourseModuleIconCss())
-			.append("')])");
-			
-			/* create business path and try to find it */
-			String businessPath0 = functionalUtil.getDeploymentUrl() + "/url/RepositoryEntry/" + courseVO[i].getRepoEntryKey();
-			boolean found = false;
-			
-			/* click show all */
-			//FIXME:JK: implement me
-			
-			for(int j = 0; j < browser.getXpathCount(selectorBuffer.toString().substring(6)).intValue(); j++){
-				functionalUtil.idle(browser);
-				functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString() + "[" + (j + 1) + "]");
-			
-				browser.click(selectorBuffer.toString() + "[" + (j + 1) + "]");
-
-				functionalUtil.idle(browser);
-			
-				String businessPath1 = functionalUtil.currentBusinessPath(browser);
-				functionalCourseUtil.closeActiveTab(browser);
-				
-				if(businessPath1.contains(businessPath0)){
-					found = true;
-					break;
-				}
-			}
-			
-			/* assert collected business paths to be equal */
-			Assert.assertTrue(found);
-		}
-	}
-	
-}
diff --git a/src/test/java/org/olat/restapi/GroupMgmtTest.java b/src/test/java/org/olat/restapi/GroupMgmtTest.java
index bc7a069f3f9400063f42b5d4169dad6c0498187a..772aff5d1607c3e7878096fec041872a32795515 100644
--- a/src/test/java/org/olat/restapi/GroupMgmtTest.java
+++ b/src/test/java/org/olat/restapi/GroupMgmtTest.java
@@ -137,6 +137,7 @@ public class GroupMgmtTest extends OlatJerseyTestCase {
 		RepositoryService rs = CoreSpringFactory.getImpl(RepositoryService.class);
 		RepositoryEntry re = rs.create("administrator", "-", "rest-re", null, course);
 		DBFactory.getInstance().commit();
+		assertNotNull(re);
 		
 		//create learn group
 		// 1) context one: learning groups
diff --git a/src/test/resources/org/olat/search/service/document/file/test.doc b/src/test/java/org/olat/search/service/document/file/test.doc
similarity index 100%
rename from src/test/resources/org/olat/search/service/document/file/test.doc
rename to src/test/java/org/olat/search/service/document/file/test.doc
diff --git a/src/test/resources/org/olat/search/service/document/file/test.html b/src/test/java/org/olat/search/service/document/file/test.html
similarity index 100%
rename from src/test/resources/org/olat/search/service/document/file/test.html
rename to src/test/java/org/olat/search/service/document/file/test.html
diff --git a/src/test/resources/org/olat/search/service/document/file/test2.DOC b/src/test/java/org/olat/search/service/document/file/test2.DOC
similarity index 100%
rename from src/test/resources/org/olat/search/service/document/file/test2.DOC
rename to src/test/java/org/olat/search/service/document/file/test2.DOC
diff --git a/src/test/java/org/olat/test/ArquillianDeployments.java b/src/test/java/org/olat/test/ArquillianDeployments.java
index 724588a64513500da281d2394c48ab8b660af07d..ca72536ca7a5c98b1b31139ab807408c2e526523 100644
--- a/src/test/java/org/olat/test/ArquillianDeployments.java
+++ b/src/test/java/org/olat/test/ArquillianDeployments.java
@@ -174,6 +174,7 @@ public class ArquillianDeployments {
 					|| path.endsWith(".pxml")
 					|| path.endsWith(".sh")
 					|| path.endsWith(".scss")
+					|| path.endsWith(".zip")
 					|| path.endsWith(".pxm"));
 			return !exclude;
 		}
@@ -192,11 +193,8 @@ public class ArquillianDeployments {
 			String pathStr = path.toString();
 			boolean exclude = (pathStr.contains("/org/olat/core/test")
 					|| pathStr.contains("/org/olat/selenium")
-					|| pathStr.contains("/org/olat/test/_spring")
-					|| pathStr.contains("/org/olat/test/file_resources")
-					|| pathStr.endsWith("Test.class]")
-					|| pathStr.endsWith("TestWithMocking.class]")
-					|| pathStr.endsWith("Junit4.class]"));
+					|| pathStr.contains("/org/olat/test/")
+					|| pathStr.endsWith("Test.class]"));
 			return !exclude;
 		}
 	}
diff --git a/src/test/java/org/olat/test/NullFactoryBean.java b/src/test/java/org/olat/test/NullFactoryBean.java
deleted file mode 100644
index 90802228c9081d1a15f1a2547dbb45d261fd4407..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/test/NullFactoryBean.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
-* OLAT - Online Learning and Training<br>
-* http://www.olat.org
-* <p>
-* Licensed under the Apache License, Version 2.0 (the "License"); <br>
-* you may not use this file except in compliance with the License.<br>
-* You may obtain a copy of the License at
-* <p>
-* http://www.apache.org/licenses/LICENSE-2.0
-* <p>
-* Unless required by applicable law or agreed to in writing,<br>
-* software distributed under the License is distributed on an "AS IS" BASIS, <br>
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
-* See the License for the specific language governing permissions and <br>
-* limitations under the License.
-* <p>
-* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br>
-* University of Zurich, Switzerland.
-* <hr>
-* <a href="http://www.openolat.org">
-* OpenOLAT - Online Learning and Training</a><br>
-* This file has been modified by the OpenOLAT community. Changes are licensed
-* under the Apache 2.0 license as the original file.
-*/
-package org.olat.test;
-
-import org.springframework.beans.factory.FactoryBean;
-
-/**
- * 
- * Description:<br>
- * use this bean if you want to reference an null value as a bean class value.
- * If you like to set null as value try the <null/> bean.
- * 
- * <P>
- * Initial Date:  03.05.2010 <br>
- * @author guido
- */
-public class NullFactoryBean implements FactoryBean<Void> {
-
-    public Void getObject() throws Exception {
-        return null;
-    }
-
-    public Class<? extends Void> getObjectType() {
-        return null;
-    }
-
-    public boolean isSingleton() {
-        return true;
-    }
-}
diff --git a/src/test/java/org/olat/test/file_resources/CourseImportCourse.zip b/src/test/java/org/olat/test/file_resources/CourseImportCourse.zip
deleted file mode 100644
index abb46f75e4976c8d023498b5a8f00a7375a249bb..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/CourseImportCourse.zip and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/Course_with_all_bb.zip b/src/test/java/org/olat/test/file_resources/Course_with_all_bb.zip
deleted file mode 100644
index cbd89c9a28ddebc3ba749ace16b8ea6c2d498317..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/Course_with_all_bb.zip and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/DemoCourse.zip b/src/test/java/org/olat/test/file_resources/DemoCourse.zip
deleted file mode 100644
index a3023c30845d40cf70850c1ef9b1da063d64460f..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/DemoCourse.zip and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/Mp3.mp3 b/src/test/java/org/olat/test/file_resources/Mp3.mp3
deleted file mode 100644
index 5f115a8a336f1f8c2a34df9e3d5b45c02c198845..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/Mp3.mp3 and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/OLATteam.jpg b/src/test/java/org/olat/test/file_resources/OLATteam.jpg
deleted file mode 100644
index cf70e55b5b302ce2f146ebd03ae277eb0b2edad3..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/OLATteam.jpg and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/Pdf.pdf b/src/test/java/org/olat/test/file_resources/Pdf.pdf
deleted file mode 100644
index 2274601436526fc4e36dd7750d7adf429e5d3505..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/Pdf.pdf and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/Word.doc b/src/test/java/org/olat/test/file_resources/Word.doc
deleted file mode 100644
index 83d71142f86108298679e1ffec446dfa066f7ffa..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/Word.doc and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/Word_new.docx b/src/test/java/org/olat/test/file_resources/Word_new.docx
deleted file mode 100644
index 6dc7bce3dcbdc9bcbecd19f98ee40d94606e948b..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/Word_new.docx and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/cptest.html b/src/test/java/org/olat/test/file_resources/cptest.html
deleted file mode 100644
index 99e1c2de4f16e124b726a63392abc062bb2a7742..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/test/file_resources/cptest.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>cptest</title>
-</head>
-
-<body>
-cptest.html
-</body>
-
-</html>
diff --git a/src/test/java/org/olat/test/file_resources/first.html b/src/test/java/org/olat/test/file_resources/first.html
deleted file mode 100644
index a8c8d98f986168da822be3741251735cf6ffd8d7..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/test/file_resources/first.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head><meta name="generator" content="olat-tinymce-2">
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head><body><div align="center"><span style="font-size: x-large; color: #993300">This is the first page</span><br /></div></body></html>
\ No newline at end of file
diff --git a/src/test/java/org/olat/test/file_resources/firstmedia.flv b/src/test/java/org/olat/test/file_resources/firstmedia.flv
deleted file mode 100644
index 5dd6f973337c674a4b3a71136cf5f85f73838e39..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/firstmedia.flv and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/handBackTopic1.pdf b/src/test/java/org/olat/test/file_resources/handBackTopic1.pdf
deleted file mode 100644
index 2274601436526fc4e36dd7750d7adf429e5d3505..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/handBackTopic1.pdf and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/handBackTopic3.pdf b/src/test/java/org/olat/test/file_resources/handBackTopic3.pdf
deleted file mode 100644
index 2274601436526fc4e36dd7750d7adf429e5d3505..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/handBackTopic3.pdf and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/handInTopic2.pdf b/src/test/java/org/olat/test/file_resources/handInTopic2.pdf
deleted file mode 100644
index 2274601436526fc4e36dd7750d7adf429e5d3505..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/handInTopic2.pdf and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/handInTopic3.pdf b/src/test/java/org/olat/test/file_resources/handInTopic3.pdf
deleted file mode 100644
index 2274601436526fc4e36dd7750d7adf429e5d3505..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/handInTopic3.pdf and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/handInTopic4.pdf b/src/test/java/org/olat/test/file_resources/handInTopic4.pdf
deleted file mode 100644
index 2274601436526fc4e36dd7750d7adf429e5d3505..0000000000000000000000000000000000000000
Binary files a/src/test/java/org/olat/test/file_resources/handInTopic4.pdf and /dev/null differ
diff --git a/src/test/java/org/olat/test/file_resources/second.html b/src/test/java/org/olat/test/file_resources/second.html
deleted file mode 100644
index bbbbd7706ba5dad8f8f03be1d98a59d18a1ac877..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/test/file_resources/second.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head><meta name="generator" content="olat-tinymce-2">
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head><body><div align="center"><span style="font-size: x-large; color: #993300">This is the second page (from resource folder)</span><br /></div></body></html>
\ No newline at end of file
diff --git a/src/test/java/org/olat/util/CourseNodeAlias.vm b/src/test/java/org/olat/util/CourseNodeAlias.vm
deleted file mode 100644
index 6deb63f3696a8eae24ad458f56f80b1927a0e298..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/CourseNodeAlias.vm
+++ /dev/null
@@ -1,30 +0,0 @@
-var alias = null;
-
-if (document.evaluate){
-	var nth = "${nthCourseNode}";
-	var resourcesOnly = "${getResourcesOnly}";
-	
-	var selector = null;
-	
-	if(resourcesOnly){
-		selector = "(//ul[contains(@class, 'b_tree_l1')]//li[" + (nth + 1) + "])//a[" +
-			"contains(@class, 'o_cp_icon') or " +
-			"contains(@class, 'o_scorm_icon') or " +
-			"contains(@class, 'o_blog_icon') or " +
-			"contains(@class, 'o_podcast_icon') or " +
-			"contains(@class, 'o_wiki_icon') or " +
-			"contains(@class, 'o_ep_icon') or " +
-			"contains(@class, 'o_iqtest_icon') or " +
-			"contains(@class, 'o_iqself_icon') or " +
-			"contains(@class, 'o_iqsurv_icon')" +
-			"]";
-	}else{
-		selector = "(//ul[contains(@class, 'b_tree_l1')]//li)[" + (nth + 1) + "]//a";
-	}
-	
-	var iter = window.document.evaluate(selector, window.document, null, XPathResult.ANY_TYPE, null);
-	var aTag = iter.iterateNext();
-	alias = aTag.classList.toString();
-}
-
-alias;
diff --git a/src/test/java/org/olat/util/EPortfolioTOCStructurePosition.vm b/src/test/java/org/olat/util/EPortfolioTOCStructurePosition.vm
deleted file mode 100644
index c38e4e6c10dcd8c673e47a8f720a104c251e0796..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/EPortfolioTOCStructurePosition.vm
+++ /dev/null
@@ -1,38 +0,0 @@
-position = -1;
-
-if(document.querySelector){
-    var selector = "${tocSelector}";
-    var level1 = "${level1}";
-    var level2 = "${level2}";
-    var page = "${page}";
-    var structure = "${structure}";
-    
-    var selection = window.document.evaluate(selector, window.document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
-    
-    for(i = 0; i < selection.snapshotLength; i++){
-        var current = selection.snapshotItem(i);
-        
-        if(current != null && current.className.indexOf(level1) != -1){
-            var currentPage = window.document.evaluate("(" + selector + ")[" + (i + 1) + "]" + "//a//span[contains(text(), \'" + page + "\')]", window.document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
-            
-            if(currentPage.snapshotLength > 0){
-                current = selection.snapshotItem(i + 1);
-
-                for(j = 0; current != null && current.className.indexOf(level2) != -1; j++){
-                    current = selection.snapshotItem	(i + 1 + j);
-                    
-                    var currentStructure = window.document.evaluate("(" + selector + ")[" + (i + 1 + j + 1) + "]" + "//a//span[contains(text(), \'" + structure + "\')]", window.document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
-                    
-                    if(currentStructure.snapshotLength > 0){
-                        position = i + 1 + j;
-                        break;
-                    }
-                }
-             
-                break;
-             }
-        }
-    }
-}
-
-position;
diff --git a/src/test/java/org/olat/util/FunctionalAdministrationSiteUtil.java b/src/test/java/org/olat/util/FunctionalAdministrationSiteUtil.java
deleted file mode 100644
index e09ad352f451752c4914c50565f9a2f570bb9fa1..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/FunctionalAdministrationSiteUtil.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util;
-
-import org.olat.util.FunctionalUtil.OlatSite;
-
-import com.thoughtworks.selenium.Selenium;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-public class FunctionalAdministrationSiteUtil {
-	
-	public enum AdministrationSiteAction {
-		SYSTEM("o_sel_system"),
-		CORE_FUNCTIONS("o_sel_sysconfig"),
-		MODULES("o_sel_modules"),
-		CUSTOMIZATION("o_sel_customizing"),
-		DEVELOPMENT("o_sel_devel");
-		
-		private String actionCss;
-		
-		AdministrationSiteAction(String actionCss){
-			setActionCss(actionCss);
-		}
-
-		public String getActionCss() {
-			return actionCss;
-		}
-
-		public void setActionCss(String actionCss) {
-			this.actionCss = actionCss;
-		}
-	}
-	
-	public enum SystemAction {
-		SYSTEM_INFO("o_sel_sysinfo"),
-		SESSIONS("o_sel_sessions"),
-		ERRORS("o_sel_errors"),
-		CACHES("o_sel_caches"),
-		LOCKS("o_sel_locks"),
-		HIBERNATE("o_sel_hibernate"),
-		JAVAVM("o_sel_javavm");
-		
-		private String actionCss;
-		
-		SystemAction(String actionCss){
-			setActionCss(actionCss);
-		}
-
-		public String getActionCss() {
-			return actionCss;
-		}
-
-		public void setActionCss(String actionCss) {
-			this.actionCss = actionCss;
-		}
-	}
-	
-	public enum CoreFunctionsAction {
-		LANGUAGES("o_sel_i18n"),
-		QUOTA("o_sel_quota"),
-		VERSIONIG("o_sel_versioning"),
-		RESTAPI("o_sel_restapi"),
-		EMAIL("o_sel_mail"),
-		SELF_REGISTRATION("o_sel_selfregistration"),
-		STATISTICS("o_sel_statistics"),
-		SEARCH("o_sel_search"),
-		NOTIFICATIONS("o_sel_notifications"),
-		PASSWORDS("o_sel_userbulkchangepw");
-		
-		private String actionCss;
-		
-		CoreFunctionsAction(String actionCss){
-			setActionCss(actionCss);
-		}
-
-		public String getActionCss() {
-			return actionCss;
-		}
-
-		public void setActionCss(String actionCss) {
-			this.actionCss = actionCss;
-		}
-	}
-	
-	public enum ModulesAction {
-		PORTFOLIO("o_sel_portfolio"),
-		VITERO("o_sel_vitero"),
-		OPENMEETINGS("o_sel_openmeetings"),
-		PAYPAL("o_sel_paypal"),
-		BOOKING("o_sel_booking"),
-		GROUP("o_sel_group"),
-		CATALOG("o_sel_catalog");
-		
-		private String actionCss;
-		
-		ModulesAction(String actionCss){
-			setActionCss(actionCss);
-		}
-
-		public String getActionCss() {
-			return actionCss;
-		}
-
-		public void setActionCss(String actionCss) {
-			this.actionCss = actionCss;
-		}
-	}
-	
-	public enum CustomizationAction {
-		LAYOUT("o_sel_layout"),
-		TRANSLATION("o_sel_translation"),
-		REGISTRATION("o_sel_registration");
-		
-		private String actionCss;
-		
-		CustomizationAction(String actionCss){
-			setActionCss(actionCss);
-		}
-
-		public String getActionCss() {
-			return actionCss;
-		}
-
-		public void setActionCss(String actionCss) {
-			this.actionCss = actionCss;
-		}
-	}
-	
-	public enum DevelopmentAction {
-		EXTENSIONS("o_sel_extensions"),
-		PROPERTIES("o_sel_properties"),
-		ADVANCED_PROPERTIES("o_sel_advancedproperties"),
-		SNOOP("o_sel_snoop");
-		
-		private String actionCss;
-		
-		DevelopmentAction(String actionCss){
-			setActionCss(actionCss);
-		}
-
-		public String getActionCss() {
-			return actionCss;
-		}
-
-		public void setActionCss(String actionCss) {
-			this.actionCss = actionCss;
-		}
-	}
-	
-	public enum SystemInformationTabs {
-		SESSIONS,
-		INFOMSG,
-		ERRORS,
-		LOGLEVELS,
-		SYSINFO,
-		SNOOP,
-		REQUESTLOGLEVEL,
-		USERSESSIONS,
-		LOCKS,
-		HIBERNATE,
-		CACHES,
-		BUILDINFO;
-	}
-	
-	private FunctionalUtil functionalUtil;
-	
-	public FunctionalAdministrationSiteUtil(FunctionalUtil functionalUtil){
-		this.functionalUtil = functionalUtil;
-	}
-	
-	/**
-	 * Browse the administrations site's navigation.
-	 * 
-	 * @param browser
-	 * @param action
-	 * @return true on success otherwise false
-	 */
-	public boolean openActionByMenuTree(Selenium browser, Object action){
-		functionalUtil.idle(browser);
-
-		StringBuffer selectorBuffer;
-
-		if(action instanceof AdministrationSiteAction){
-			selectorBuffer = new StringBuffer();
-
-			selectorBuffer.append("xpath=//li[contains(@class, '")
-			.append(((AdministrationSiteAction) action).getActionCss())
-			.append("')]//a[contains(@class, '")
-			.append(functionalUtil.getTreeLevel0Css())
-			.append("')]");
-		}else{
-			String actionL1Css = null;
-			String actionL2Css = null;
-			
-			if(action instanceof SystemAction){
-				actionL1Css = AdministrationSiteAction.SYSTEM.getActionCss();
-				actionL2Css = ((SystemAction) action).getActionCss();
-			}else if(action instanceof CoreFunctionsAction){
-				actionL1Css = AdministrationSiteAction.CORE_FUNCTIONS.getActionCss();
-				actionL2Css = ((CoreFunctionsAction) action).getActionCss();
-			}else if(action instanceof ModulesAction){
-				actionL1Css = AdministrationSiteAction.MODULES.getActionCss();
-				actionL2Css = ((ModulesAction) action).getActionCss();
-			}else if(action instanceof CustomizationAction){
-				actionL1Css = AdministrationSiteAction.CUSTOMIZATION.getActionCss();
-				actionL2Css = ((SystemAction) action).getActionCss();
-			}else if(action instanceof DevelopmentAction){
-				actionL1Css = AdministrationSiteAction.DEVELOPMENT.getActionCss();
-				actionL2Css = ((DevelopmentAction) action).getActionCss();
-			}else{
-				return(false);
-			}
-			
-			/* check if not collapsed */
-			selectorBuffer = new StringBuffer();
-
-			selectorBuffer.append("xpath=//li[contains(@class, '")
-			.append(actionL1Css)
-			.append("')]//a[contains(@class, '")
-			.append(functionalUtil.getTreeLevelOpenCss())
-			.append("')]");
-
-			if(browser.isElementPresent(selectorBuffer.toString())){
-				browser.click(selectorBuffer.toString());
-				functionalUtil.idle(browser);
-			}
-
-			/* click */
-			selectorBuffer = new StringBuffer();
-
-			selectorBuffer.append("xpath=//li[contains(@class, '")
-			.append(actionL2Css)
-			.append("')]//a[contains(@class, '")
-			.append(functionalUtil.getTreeLevel1Css())
-			.append("')]");
-		}
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Clears the specified cache which matches to keys. 
-	 * 
-	 * @param browser
-	 * @param keys
-	 * @return
-	 */
-	public boolean clearCache(Selenium browser, String[] keys){
-		if(!functionalUtil.openSite(browser, OlatSite.ADMINISTRATION)){
-			return(false);
-		}
-		
-		if(!openActionByMenuTree(browser, AdministrationSiteAction.SYSTEM)){
-			return(false);
-		}
-		
-		if(!openActionByMenuTree(browser, SystemAction.CACHES)){
-			return(false);
-		}
-		
-		/* click show all*/
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(functionalUtil.getTableAllCss())
-		.append("')]//a");
-		
-		if(browser.isElementPresent(selectorBuffer.toString())){
-			browser.click(selectorBuffer.toString());
-		}
-		
-		/* clear appropriate cache */
-		for(String currentKey: keys){
-			functionalUtil.idle(browser);
-			
-			/* click clear */
-			selectorBuffer = new StringBuffer();
-			
-			selectorBuffer.append("//table//tr//td[text()='")
-			.append(currentKey)
-			.append("']");
-			
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-			selectorBuffer.append("/../td[last()]//a");
-				
-			browser.click(selectorBuffer.toString());
-			
-			/* confirm */
-			selectorBuffer = new StringBuffer();
-			
-			selectorBuffer.append("xpath=(//div[contains(@class, '")
-			.append(functionalUtil.getWindowCss())
-			.append("')]//a[contains(@class, '")
-			.append(functionalUtil.getButtonCss())
-			.append("')])[last()]");
-			
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-			browser.click(selectorBuffer.toString());
-		}
-		
-		return(true);
-	}
-
-	public FunctionalUtil getFunctionalUtil() {
-		return functionalUtil;
-	}
-
-	public void setFunctionalUtil(FunctionalUtil functionalUtil) {
-		this.functionalUtil = functionalUtil;
-	}
-}
diff --git a/src/test/java/org/olat/util/FunctionalCourseUtil.java b/src/test/java/org/olat/util/FunctionalCourseUtil.java
deleted file mode 100644
index 8522337d4348f535679d7e4cfdae2162d89bc2ce..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/FunctionalCourseUtil.java
+++ /dev/null
@@ -1,2425 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.util.StringTokenizer;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.commons.lang.ArrayUtils;
-
-import com.thoughtworks.selenium.Selenium;
-
-/**
- * Description: <br>
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-public class FunctionalCourseUtil {
-	
-	public final static String COURSE_RUN_CSS = "o_course_run";
-	public final static String COURSE_OPEN_EDITOR_CSS = "o_sel_course_open_editor";
-	
-	public final static String COURSE_TAB_ACTIVE_CSS = "b_nav_active";
-	public final static String COURSE_TAB_CLOSE_CSS = "b_nav_tab_close";
-	
-	public final static String COURSE_EDITOR_NODE_LINKS_ID = "o_course_node_links";
-	public final static String COURSE_EDITOR_PUBLISH_CSS = "b_toolbox_publish";
-	public final static String COURSE_EDITOR_PUBLISH_WIZARD_SELECT_ALL_CSS = "o_sel_course_publish_selectall_cbb";
-	public final static String COURSE_EDITOR_PUBLISH_WIZARD_ACCESS_ID = "o_fioaccessBox_SELBOX";
-	public final static String COURSE_EDITOR_PUBLISH_WIZARD_CATALOG_ID = "o_fiocatalogBox_SELBOX";
-	public final static String ADD_TO_CATALOG_YES_VALUE = "yes";
-	public final static String ADD_TO_CATALOG_NO_VALUE = "no";
-	public final static String CATALOG_SUBCATEGORY_ICON_CSS = "o_catalog_cat_icon";
-	public final static String ADD_TO_CATALOG_CSS = "o_sel_publish_add_to_catalog";
-	public final static String CATALOG_CSS = "o_sel_catalog_chooser_tree";
-	
-	public final static String COURSE_EDITOR_INSERT_CONTENT_CSS = "b_toolbox_content";
-	public final static String CREATE_COURSE_NODE_TARGET_POSITION_ITEM_CSS = "b_selectiontree_item";
-	
-	public final static String COURSE_EDITOR_OVERVIEW_RADIO_GROUP_CSS = "";
-	public final static String COURSE_EDITOR_CHOOSE_OVERVIEW_FILE_CSS = "o_sel_filechooser_create";
-	public final static String COURSE_EDITOR_UPLOAD_OVERVIEW_FILE_CSS = "o_sel_upload_buttons";
-	
-	public final static String EPORTFOLIO_ADD_CSS = "b_eportfolio_add";
-	
-	public final static String STRUCTURE_ICON_CSS = "o_st_icon";
-	public final static String FORUM_ICON_CSS = "o_fo_icon";
-	public final static String BLOG_ICON_CSS = "o_blog_icon";
-	
-	public final static String FORUM_TOOLBAR_CSS = "o_forum_toolbar";
-	public final static String FORUM_THREAD_NEW_CSS = "o_sel_forum_thread_new";
-	public final static String FORUM_ARCHIVE_CSS = "o_sel_forum_archive";
-	public final static String FORUM_FILTER_CSS = "o_sel_forum_filter";
-	
-	public final static String WIKI_CREATE_ARTICLE_CSS = "o_sel_wiki_search";
-	public final static String WIKI_ARTICLE_BOX_CSS = "o_wikimod-article-box";
-	public final static String WIKI_EDIT_FORM_WRAPPER_CSS = "o_wikimod_editform_wrapper";
-	
-	public final static String BLOG_CREATE_ENTRY_CSS = "o_sel_feed_item_new";
-	public final static String BLOG_EDIT_ENTRY_CSS = "o_sel_feed_item_edit";
-	public final static String BLOG_DELETE_ENTRY_CSS = "o_sel_feed_item_delete";
-	public final static String BLOG_READ_ENTRY_CSS = "o_post-readmorelinks";
-	public final static String BLOG_FORM_CSS = "o_sel_blog_form";
-	public final static String BLOG_POST_CSS = "o_blog_post";
-	public final static String BLOG_YEAR_CSS = "b_year";
-	public final static String BLOG_MONTH_CSS = "b_month";
-	
-	public final static String TEST_CHOOSE_REPOSITORY_FILE_CSS = "o_sel_test_choose_repofile";
-	public final static String CP_CHOOSE_REPOSITORY_FILE_CSS = "o_sel_cp_choose_repofile";
-	public final static String WIKI_CHOOSE_REPOSITORY_FILE_CSS = "o_sel_wiki_choose_repofile";
-	public final static String FEED_CHOOSE_REPOSITORY_FILE_CSS = "o_sel_feed_choose_repofile";
-	public final static String MAP_CHOOSE_REPOSITORY_FILE_CSS = "o_sel_map_choose_repofile";
-	
-	public final static String REPOSITORY_POPUP_CSS = "o_sel_search_referenceable_entries";
-	
-	public final static String REPOSITORY_POPUP_CREATE_RESOURCE_CSS = "o_sel_repo_popup_create_resource";
-	public final static String REPOSITORY_POPUP_IMPORT_RESOURCE_CSS = "o_sel_repo_popup_import_resource";
-	
-	public final static String REPOSITORY_POPUP_ALL_RESOURCES_CSS = "o_sel_repo_popup_all_resources";
-	public final static String REPOSITORY_POPUP_MY_RESOURCES_CSS = "o_sel_repo_popup_my_resources";
-	public final static String REPOSITORY_POPUP_SEARCH_RESOURCES_CSS = "o_sel_repo_popup_search_resources";
-	
-	public final static String MAP_EDIT_CSS = "o_sel_edit_map";
-	
-	public final static String BLOG_NO_POSTS_CSS = "o_blog_no_posts";
-	
-	public final static String PODCAST_NO_EPISODES_CSS = "o_podcast_no_episodes";
-	
-	public enum CourseNodeTab {
-		TITLE_AND_DESCRIPTION,
-		VISIBILITY,
-		ACCESS,
-		CONTENT;
-	};
-	
-	public enum VisibilityOption {
-		BLOCKED_FOR_LEARNERS,
-		DEPENDING_ON_DATE,
-		DEPENDING_ON_GROUP,
-		DEPENDING_ON_ASSESSMENT,
-		APPLY_TO_OWNERS_AND_TUTORS(DEPENDING_ON_ASSESSMENT);
-		
-		private VisibilityOption requires;
-		
-		VisibilityOption(){
-			this(null);
-		}
-		
-		VisibilityOption(VisibilityOption requires){
-			setRequires(requires);
-		}
-
-		public VisibilityOption getRequires() {
-			return requires;
-		}
-
-		public void setRequires(VisibilityOption requires) {
-			this.requires = requires;
-		}
-	};
-	
-	public enum AccessOption {
-		BLOCKED_FOR_LEARNERS,
-		DEPENDING_ON_DATE,
-		DEPENDING_ON_GROUP,
-		DEPENDING_ON_ASSESSMENT,
-		APPLY_TO_OWNERS_AND_TUTORS(DEPENDING_ON_ASSESSMENT);
-		
-		private AccessOption requires;
-		
-		AccessOption(){
-			this(null);
-		}
-		
-		AccessOption(AccessOption requires){
-			setRequires(requires);
-		}
-
-		public AccessOption getRequires() {
-			return requires;
-		}
-
-		public void setRequires(AccessOption requires) {
-			this.requires = requires;
-		}
-	}
-	
-	public enum CourseOverview {
-		AUTOMATIC("system"),
-		AUTOMATIC_AND_PREVIEW("peekview"),
-		SINGLEPAGE("file"),
-		NONE("delegate");
-		
-		private String value;
-		
-		CourseOverview(String value){
-			setValue(value);
-		}
-
-		public String getValue() {
-			return value;
-		}
-
-		public void setValue(String value) {
-			this.value = value;
-		}
-	}
-	
-	public enum CourseNodeAlias {
-		STRUCTURE("o_st_icon"), // NOT really a course node
-		SP("o_sp_icon"),
-		FORUM("o_fo_icon"),
-		WIKI("o_wiki_icon"),
-		BLOG("o_blog_icon"),
-		CP("o_cp_icon"),
-		SCORM("o_scorm_icon"),
-		BC("o_bc_icon"),
-		PODCAST("o_podcast_icon"),
-		DIALOG("o_dialog_icon"),
-		ASSESSMENT("o_ms_icon"),
-		TASK("o_ta_icon"),
-		PORTFOLIO_TASK("o_ep_icon"),
-		IQ_TEST("o_iqtest_icon"),
-		IQ_SELFTEST("o_iqself_icon"),
-		IQ_QUESTIONAIRE("o_iqsurv_icon"),
-		ENROLMENT("o_en_icon"),
-		PROJECT_BROKER("o_projectbroker_icon"),
-		NOTIFICATIONS("o_infomsg_icon"),
-		MEMBERS("o_cmembers_icon"),
-		CALENDAR("o_cal_icon"),
-		LINK_LIST("o_ll_icon"),
-		CONTACT("o_co_icon");
-		
-		private String iconCss;
-		
-		CourseNodeAlias(String iconCss){
-			setIconCss(iconCss);
-		}
-
-		public String getIconCss() {
-			return iconCss;
-		}
-
-		public void setIconCss(String iconCss) {
-			this.iconCss = iconCss;
-		}
-	}
-	
-	public enum AccessSettings {
-		OWNERS("1"),
-		OWNERS_AND_AUTHORS("2"),
-		ALL_REGISTERED_USERS("3"),
-		REGISTERED_USERS_AND_GUESTS("4"),
-		MEMBERS_ONLY("membersonly");
-		
-		private String accessValue;
-		
-		AccessSettings(String accessValue){
-			setAccessValue(accessValue);
-		}
-
-		public String getAccessValue() {
-			return accessValue;
-		}
-
-		public void setAccessValue(String accessValue) {
-			this.accessValue = accessValue;
-		}
-	}
-	
-	public enum CourseEditorCourseTab {
-		TITLE_AND_DESCRIPTION,
-		VISIBILITY,
-		ACCESS,
-		OVERVIEW,
-		SCORE,
-	}
-	
-	public enum CourseEditorIQTestTab {
-		TITLE_AND_DESCRIPTION,
-		VISIBILITY,
-		ACCESS,
-		TEST_CONFIGURATION;
-	}
-	
-	public enum CourseEditorCpTab {
-		TITLE_AND_DESCRIPTION,
-		VISIBILITY,
-		ACCESS,
-		LEARNING_CONTENT;
-	}
-	
-	public enum CourseEditorWikiTab {
-		TITLE_AND_DESCRIPTION,
-		VISIBILITY,
-		ACCESS,
-		LEARNING_CONTENT;
-	}
-	
-	public enum CourseEditorBlogTab {
-		TITLE_AND_DESCRIPTION,
-		VISIBILITY,
-		ACCESS,
-		LEARNING_CONTENT;
-	}
-	
-	public enum CourseEditorPodcastTab {
-		TITLE_AND_DESCRIPTION,
-		VISIBILITY,
-		ACCESS,
-		LEARNING_CONTENT;
-	}
-	
-	public enum CourseEditorPortfolioTaskTab {
-		TITLE_AND_DESCRIPTION,
-		VISIBILITY,
-		ACCESS,
-		LEARNING_CONTENT,
-		ASSESSMENT;
-	}
-	
-	public enum BlogEdit {
-		TITLE,
-		DESCRIPTION,
-		CONTENT;
-	}
-	
-	private String courseRunCss;
-	private String courseOpenEditorCss;
-	
-	private String courseTabActiveCss;
-	private String courseTabCloseCss;
-	
-	private String courseEditorNodeLinksId;
-	private String courseEditorPublishCss;
-	private String courseEditorPublishWizardSelectAllCss;
-	private String courseEditorPublishWizardAccessId;
-	private String courseEditorPublishWizardCatalogId;
-	private String catalogSubcategoryIconCss;
-	private String addToCatalogCss;
-	private String catalogCss;
-	
-	private String courseEditorOverviewRadioGroupCss;
-	private String courseEditorInsertContentCss;
-	private String createCourseNodeTargetPositionItemCss;
-	
-	private String courseEditorChooseOverviewFileCss;
-	private String courseEditorUploadOverviewFileCss;
-	
-	private String eportfolioAddCss;
-	
-	private String structureIconCss;
-	private String forumIconCss;
-	private String blogIconCss;
-	
-	private String forumToolbarCss;
-	private String forumThreadNewCss;
-	private String forumArchiveCss;
-	private String forumFilterCss;
-	
-	private String wikiCreateArticleCss;
-	private String wikiArticleBoxCss;
-	private String wikiEditFormWrapperCss;
-	
-	private String blogCreateEntryCss;
-	private String blogEditEntryCss;
-	private String blogDeleteEntryCss;
-	private String blogReadEntryCss;
-	private String blogFormCss;
-	private String blogPostCss;
-	private String blogYearCss;
-	private String blogMonthCss;
-	
-	private String testChooseRepositoryFileCss;
-	private String cpChooseRepositoryFileCss;
-	private String wikiChooseRepositoryFileCss;
-	private String feedChooseRepositoryFileCss;
-	private String mapChooseRepositoryFileCss;
-
-	private String repositoryPopupCss;
-	
-	private String repositoryPopupCreateResourceCss;
-	private String repositoryPopupImportResourceCss;
-	
-	private String repositoryPopupAllResourcesCss;
-	private String repositoryPopupMyResourcesCss;
-	private String repositoryPopupSearchResourcesCss;
-	
-	private String mapEditCss;
-	
-	private String blogNoPostsCss;
-	private String podcastNoEpisodesCss;
-	
-	private FunctionalUtil functionalUtil;
-	private FunctionalRepositorySiteUtil functionalRepositorySiteUtil;
-	
-	public FunctionalCourseUtil(FunctionalUtil functionalUtil, FunctionalRepositorySiteUtil functionalRepositorySiteUtil){
-		this.functionalUtil = functionalUtil;
-		this.functionalRepositorySiteUtil = functionalRepositorySiteUtil;
-		
-		setCourseRunCss(COURSE_RUN_CSS);
-		setCourseOpenEditorCss(COURSE_OPEN_EDITOR_CSS);
-		
-		setCourseTabActiveCss(COURSE_TAB_ACTIVE_CSS);
-		setCourseTabCloseCss(COURSE_TAB_CLOSE_CSS);
-		
-		setCourseEditorNodeLinksId(COURSE_EDITOR_NODE_LINKS_ID);
-		setCourseEditorPublishCss(COURSE_EDITOR_PUBLISH_CSS);
-		setCourseEditorPublishWizardSelectAllCss(COURSE_EDITOR_PUBLISH_WIZARD_SELECT_ALL_CSS);
-		setCourseEditorPublishWizardAccessId(COURSE_EDITOR_PUBLISH_WIZARD_ACCESS_ID);
-		setCourseEditorPublishWizardCatalogId(COURSE_EDITOR_PUBLISH_WIZARD_CATALOG_ID);
-		setCatalogSubcategoryIconCss(CATALOG_SUBCATEGORY_ICON_CSS);
-		setAddToCatalogCss(ADD_TO_CATALOG_CSS);
-		setCatalogCss(CATALOG_CSS);
-		
-		setCourseEditorOverviewRadioGroupCss(COURSE_EDITOR_OVERVIEW_RADIO_GROUP_CSS);
-		setCourseEditorInsertContentCss(COURSE_EDITOR_INSERT_CONTENT_CSS);
-		setCreateCourseNodeTargetPositionItemCss(CREATE_COURSE_NODE_TARGET_POSITION_ITEM_CSS);
-		
-		setCourseEditorChooseOverviewFileCss(COURSE_EDITOR_CHOOSE_OVERVIEW_FILE_CSS);
-		setCourseEditorUploadOverviewFileCss(COURSE_EDITOR_UPLOAD_OVERVIEW_FILE_CSS);
-		
-		setEportfolioAddCss(EPORTFOLIO_ADD_CSS);
-		
-		setStructureIconCss(STRUCTURE_ICON_CSS);
-		setForumIconCss(FORUM_ICON_CSS);
-		setBlogIconCss(BLOG_ICON_CSS);
-		
-		setForumToolbarCss(FORUM_TOOLBAR_CSS);
-		setForumThreadNewCss(FORUM_THREAD_NEW_CSS);
-		setForumArchiveCss(FORUM_ARCHIVE_CSS);
-		setForumFilterCss(FORUM_FILTER_CSS);
-		
-		setWikiCreateArticleCss(WIKI_CREATE_ARTICLE_CSS);
-		setWikiArticleBoxCss(WIKI_ARTICLE_BOX_CSS);
-		setWikiEditFormWrapperCss(WIKI_EDIT_FORM_WRAPPER_CSS);
-		
-		setBlogCreateEntryCss(BLOG_CREATE_ENTRY_CSS);
-		setBlogEditEntryCss(BLOG_EDIT_ENTRY_CSS);
-		setBlogDeleteEntryCss(BLOG_DELETE_ENTRY_CSS);
-		setBlogReadEntryCss(BLOG_READ_ENTRY_CSS);
-		setBlogFormCss(BLOG_FORM_CSS);
-		setBlogPostCss(BLOG_POST_CSS);
-		setBlogYearCss(BLOG_YEAR_CSS);
-		setBlogMonthCss(BLOG_MONTH_CSS);
-		
-		setTestChooseRepositoryFileCss(TEST_CHOOSE_REPOSITORY_FILE_CSS);
-		setCpChooseRepositoryFileCss(CP_CHOOSE_REPOSITORY_FILE_CSS);
-		setWikiChooseRepositoryFileCss(WIKI_CHOOSE_REPOSITORY_FILE_CSS);
-		setFeedChooseRepositoryFileCss(FEED_CHOOSE_REPOSITORY_FILE_CSS);
-		setMapChooseRepositoryFileCss(MAP_CHOOSE_REPOSITORY_FILE_CSS);
-		
-		setRepositoryPopupCss(REPOSITORY_POPUP_CSS);
-		
-		setRepositoryPopupCreateResourceCss(REPOSITORY_POPUP_CREATE_RESOURCE_CSS);
-		setRepositoryPopupImportResourceCss(REPOSITORY_POPUP_IMPORT_RESOURCE_CSS);
-		
-		setRepositoryPopupAllResourcesCss(REPOSITORY_POPUP_ALL_RESOURCES_CSS);
-		setRepositoryPopupMyResourcesCss(REPOSITORY_POPUP_MY_RESOURCES_CSS);
-		setRepositoryPopupSearchResourcesCss(REPOSITORY_POPUP_SEARCH_RESOURCES_CSS);
-		
-		setMapEditCss(MAP_EDIT_CSS);
-		
-		setBlogNoPostsCss(BLOG_NO_POSTS_CSS);
-		setPodcastNoEpisodesCss(PODCAST_NO_EPISODES_CSS);
-	}
-	
-	/**
-	 * Opens the nth course element within the specified course.
-	 * 
-	 * @param browser
-	 * @param courseId
-	 * @param nth
-	 * @return true on success otherwise false
-	 */
-	public CourseNodeAlias open(Selenium browser, long courseId, int nth){
-		if(!functionalRepositorySiteUtil.openCourse(browser, courseId))
-			return(null);
-		
-		return(open(browser, nth));
-	}
-
-	/**
-	 * Counts the course nodes.
-	 * 
-	 * @param browser
-	 * @param learningResources
-	 * @param courseNodes
-	 * @param structuralNodes
-	 * @return
-	 */
-	public int count(Selenium browser, boolean learningResources, boolean courseNodes, boolean structuralNodes){
-		int count = -1;
-		
-		//TODO:JK: implement me
-		
-		return(count);
-	}
-	
-	/**
-	 * Returns the matching CourseNodeAlias of corresponding iconCss String.
-	 * 
-	 * @param iconCss
-	 * @return
-	 */
-	public static CourseNodeAlias findCourseNodeAliasOfIconCss(String iconCss){
-
-		if(iconCss == null){
-			return (null);
-		}
-		
-		CourseNodeAlias alias = null;
-		
-		if(iconCss.contains(CourseNodeAlias.SP.getIconCss())){
-			alias = CourseNodeAlias.SP;
-		}else if(iconCss.contains(CourseNodeAlias.FORUM.getIconCss())){
-			alias = CourseNodeAlias.FORUM;
-		}else if(iconCss.contains(CourseNodeAlias.WIKI.getIconCss())){
-			alias = CourseNodeAlias.WIKI;
-		}else if(iconCss.contains(CourseNodeAlias.BLOG.getIconCss())){
-			alias = CourseNodeAlias.BLOG;
-		}else if(iconCss.contains(CourseNodeAlias.CP.getIconCss())){
-			alias = CourseNodeAlias.CP;
-		}else if(iconCss.contains(CourseNodeAlias.SCORM.getIconCss())){
-			alias = CourseNodeAlias.SCORM;
-		}else if(iconCss.contains(CourseNodeAlias.BC.getIconCss())){
-			alias = CourseNodeAlias.BC;
-		}else if(iconCss.contains(CourseNodeAlias.PODCAST.getIconCss())){
-			alias = CourseNodeAlias.PODCAST;
-		}else if(iconCss.contains(CourseNodeAlias.DIALOG.getIconCss())){
-			alias = CourseNodeAlias.DIALOG;
-		}else if(iconCss.contains(CourseNodeAlias.ASSESSMENT.getIconCss())){
-			alias = CourseNodeAlias.ASSESSMENT;
-		}else if(iconCss.contains(CourseNodeAlias.TASK.getIconCss())){
-			alias = CourseNodeAlias.TASK;
-		}else if(iconCss.contains(CourseNodeAlias.PORTFOLIO_TASK.getIconCss())){
-			alias = CourseNodeAlias.PORTFOLIO_TASK;
-		}else if(iconCss.contains(CourseNodeAlias.IQ_TEST.getIconCss())){
-			alias = CourseNodeAlias.IQ_TEST;
-		}else if(iconCss.contains(CourseNodeAlias.IQ_SELFTEST.getIconCss())){
-			alias = CourseNodeAlias.IQ_SELFTEST;
-		}else if(iconCss.contains(CourseNodeAlias.IQ_QUESTIONAIRE.getIconCss())){
-			alias = CourseNodeAlias.IQ_QUESTIONAIRE;
-		}else if(iconCss.contains(CourseNodeAlias.ENROLMENT.getIconCss())){
-			alias = CourseNodeAlias.ENROLMENT;
-		}else if(iconCss.contains(CourseNodeAlias.PROJECT_BROKER.getIconCss())){
-			alias = CourseNodeAlias.PROJECT_BROKER;
-		}else if(iconCss.contains(CourseNodeAlias.NOTIFICATIONS.getIconCss())){
-			alias = CourseNodeAlias.NOTIFICATIONS;
-		}else if(iconCss.contains(CourseNodeAlias.MEMBERS.getIconCss())){
-			alias = CourseNodeAlias.MEMBERS;
-		}else if(iconCss.contains(CourseNodeAlias.CALENDAR.getIconCss())){
-			alias = CourseNodeAlias.CALENDAR;
-		}else if(iconCss.contains(CourseNodeAlias.LINK_LIST.getIconCss())){
-			alias = CourseNodeAlias.LINK_LIST;
-		}else if(iconCss.contains(CourseNodeAlias.CONTACT.getIconCss())){
-			alias = CourseNodeAlias.CONTACT;
-		}
-		
-		return(alias);
-	}
-	
-	/**
-	 * Opens the nth course element in the current course.
-	 * 
-	 * @param browser
-	 * @param nth
-	 * @return the matching CourseNodeAlias
-	 */
-	public CourseNodeAlias open(Selenium browser, int nth){
-		functionalUtil.idle(browser);
-
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		if(nth == -1){
-			selectorBuffer.append("xpath=(//ul[contains(@class, 'b_tree_l0')]//li)//a");
-			
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-			browser.click(selectorBuffer.toString());
-			
-			return(CourseNodeAlias.STRUCTURE);
-		}else{
-			selectorBuffer.append("xpath=(//ul[contains(@class, 'b_tree_l1')]//li)[")
-			.append(nth + 1)
-			.append("]//a[not(contains(@class, 'b_tree_level_open') or contains(@class, 'b_tree_level_close'))]");
-		
-	
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-			browser.click(selectorBuffer.toString());
-			
-			functionalUtil.idle(browser);
-			String alias = browser.getAttribute(selectorBuffer.toString() + "@class");
-			
-			return(findCourseNodeAliasOfIconCss(alias));
-		}
-	}
-	
-	/**
-	 * Opens the nth course element of course node type specified by alias in the current course.
-	 * 
-	 * @param browser
-	 * @param alias
-	 * @param nth
-	 * @return true on success
-	 */
-	public boolean open(Selenium browser, CourseNodeAlias alias, int nth){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=(//ul[contains(@class, 'b_tree_l1')]//li]//a[contains(@class, '")
-		.append(alias.getIconCss())
-		.append("')])[")
-		.append(nth + 1)
-		.append("]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens the nth learning resource.
-	 * 
-	 * @param browser
-	 * @param nth
-	 * @return The matching CSS CourseNodeAlias
-	 */
-	public CourseNodeAlias openLearningResource(Selenium browser, int nth){
-		//TODO:JK: implement me
-		
-		return(null);
-	}
-	
-	/**
-	 * Opens the nth course element within the specified course
-	 * without using business paths.
-	 * 
-	 * @param browser
-	 * @param courseId
-	 * @param nth
-	 * @return true on success otherwise false
-	 */
-	public boolean openWithoutBusinessPath(Selenium browser, long courseId, int nth){
-		if(!functionalRepositorySiteUtil.openCourseWithoutBusinessPath(browser, courseId))
-			return(false);
-
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//ul[contains(@class, 'b_tree_l1')]//li[")
-		.append(nth + 1)
-		.append("]//a");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param title
-	 * @return
-	 */
-	public boolean closeTab(Selenium browser, String title){
-		functionalUtil.idle(browser);
-		
-		StringBuffer stringBuffer = new StringBuffer();
-		
-		stringBuffer.append("xpath=//li//div//a[@title='")
-		.append(title)
-		.append("']/../..//a[contains(@class, '")
-		.append(getCourseTabCloseCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, stringBuffer.toString());
-		browser.click(stringBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Closes the active tab.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public boolean closeActiveTab(Selenium browser){
-		functionalUtil.idle(browser);
-		
-		StringBuffer stringBuffer = new StringBuffer();
-		
-		stringBuffer.append("xpath=//li[contains(@class, '")
-		.append(getCourseTabActiveCss())
-		.append("')]//a[contains(@class, '")
-		.append(getCourseTabCloseCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, stringBuffer.toString());
-		browser.click(stringBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens the course editor but the course must be opened.
-	 * 
-	 * @param browser
-	 * @return true on success
-	 */
-	public boolean openCourseEditor(Selenium browser){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getCourseOpenEditorCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToUnloadElement(browser, selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Reads the external link of the currently open course node within the editor.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public String readExternalLink(Selenium browser){
-		if(!functionalUtil.openContentTab(browser, 0)){
-			return(null);
-		}
-
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[@id='")
-		.append(getCourseEditorNodeLinksId())
-		.append("']//pre)[1]");
-		
-		return(browser.getText(selectorBuffer.toString()));
-	}
-	
-	/**
-	 * Extracts the repository entry key from business path.
-	 * 
-	 * @param businessPath
-	 * @return
-	 * @throws IOException
-	 */
-	public long extractRepositoryEntryKey(String businessPath) throws IOException{
-		Pattern keyPattern = Pattern.compile("/RepositoryEntry/([0-9]+)/");
-		Matcher keyMatcher = keyPattern.matcher(businessPath);
-		
-		if(!keyMatcher.find())
-			throw new IOException("there's no repository entry key");
-		
-		return(Long.parseLong(keyMatcher.group(1)));
-	}
-	
-	/**
-	 * Reads the internal link of the currently open course node within the editor.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public String readInternalLink(Selenium browser){
-		if(!functionalUtil.openContentTab(browser, 0)){
-			return(null);
-		}
-
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[@id='")
-		.append(getCourseEditorNodeLinksId())
-		.append("']//pre)[2]");
-		
-		return(browser.getText(selectorBuffer.toString()));
-	}
-	
-	/**
-	 * Disables the specified access option, the course editor should be open.
-	 * 
-	 * @param browser
-	 * @param option
-	 * @param nthForm
-	 * @return true on success
-	 */
-	public boolean disableAccessOption(Selenium browser, AccessOption option, int nthForm){
-		//TODO:JK: implement me
-		
-		return(false);
-	}
-	
-	/**
-	 * Enables the specified access option, the course editor should be open.
-	 * 
-	 * @param browser
-	 * @param option
-	 * @param nthForm
-	 * @return true on success
-	 */
-	public boolean enableAccessOption(Selenium browser, AccessOption option, int nthForm){
-		//TODO:JK: implement me
-		
-		return(false);
-	}
-	
-	/**
-	 * Uploads an individual overview page of course, the course editor should be open.
-	 * 
-	 * @param browser
-	 * @param file
-	 * @return true on success
-	 * @throws MalformedURLException 
-	 */
-	public boolean uploadOverviewPage(Selenium browser, URI file) throws MalformedURLException{
-		if(!openCourseEditorCourseTab(browser, CourseEditorCourseTab.OVERVIEW)){
-			return(false);
-		}
-		
-		/* configure course to display single page */
-		if(!functionalUtil.clickRadio(browser, getCourseEditorOverviewRadioGroupCss(), CourseOverview.SINGLEPAGE.getValue())){
-			return(false);
-		}
-		
-		functionalUtil.idle(browser);
-		
-		/* click "select or create page" */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getCourseEditorChooseOverviewFileCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* select file */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form//input[@type='file']");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.focus(selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), file.toURL().getPath());
-		
-		/* click upload */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form//div[contains(@class, '")
-		.append(getCourseEditorUploadOverviewFileCss())
-		.append("')]//button[contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToUnloadElement(browser, selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Creates xpath selectors to select catalog within the tree.
-	 * 
-	 * @param path
-	 * @return
-	 */
-
-	public String selectCatalogPath(Selenium browser, String path){
-		if(path == null || !path.startsWith("/")){
-			return null;
-		}
-		
-		functionalUtil.idle(browser);
-		
-		/*
-		 * Determine best matching item by using regular expressions
-		 */
-		String locator = null;
-		String parentPath = null;
-		String currentPath = null;
-		for(StringTokenizer tokenizer=new StringTokenizer(path, "/"); tokenizer.hasMoreTokens(); ) {
-			parentPath = currentPath;
-			currentPath = tokenizer.nextToken();
-
-			StringBuilder sl = new StringBuilder();
-			sl.append("//a[span[text() = '").append(currentPath).append("']]");
-			if(parentPath != null) {
-				sl.append("[ancestor::li[div//span[text() = '").append(parentPath).append("']]]");
-			}
-			
-			locator = sl.toString();
-			functionalUtil.waitForPageToLoadElement(browser, "xpath=" + locator);
-			browser.click("xpath=" + locator);
-		}
-		return locator;
-	}
-	
-	/**
-	 * Publishes the entire course.
-	 * 
-	 * @param browser
-	 * @param access
-	 * @param catalog
-	 * @return true on success
-	 */
-	public boolean publishEntireCourse(Selenium browser, AccessSettings access, String catalog){
-		functionalUtil.idle(browser);
-		
-		/* click publish */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getCourseEditorPublishCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* select all course nodes */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getCourseEditorPublishWizardSelectAllCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		functionalUtil.clickWizardNext(browser);
-		
-		/* access options */
-		functionalUtil.waitForPageToLoadElement(browser, "id=" + getCourseEditorPublishWizardAccessId());
-		
-		if(access != null){
-			functionalUtil.selectOption(browser, getCourseEditorPublishWizardAccessId(), access.getAccessValue());
-		}
-		
-		functionalUtil.clickWizardNext(browser);
-		
-		/* add to catalog or not */
-		functionalUtil.waitForPageToLoadElement(browser, "id=" + getCourseEditorPublishWizardCatalogId());
-		
-		if(catalog != null){
-			functionalUtil.selectOption(browser, getCourseEditorPublishWizardCatalogId(), ADD_TO_CATALOG_YES_VALUE);
-			
-			/* click add to catalog */
-			selectorBuffer = new StringBuffer();
-			
-			selectorBuffer.append("xpath=//a[contains(@class, '")
-			.append(getAddToCatalogCss())
-			.append("')]");
-			
-			browser.click(selectorBuffer.toString());
-			
-			String catalogSelector = selectCatalogPath(browser, catalog);
-			functionalUtil.idle(browser);
-			functionalUtil.waitForPageToLoadElement(browser, catalogSelector);
-			//browser.click("xpath=" + catalogSelector);
-			
-			/* click choose */
-			StringBuilder selectOk = new StringBuilder();
-			selectOk.append("xpath=//div[contains(@class,'").append(getCatalogCss()).append("')]")
-			  .append("//a[contains(@class,'").append(functionalUtil.getButtonCss()).append("')][contains(@href,'cid%3Aok/')]");
-			
-			functionalUtil.waitForPageToLoadElement(browser, selectOk.toString());
-			
-			browser.focus(selectOk.toString());
-			browser.click(selectOk.toString());
-			
-			functionalUtil.waitForPageToUnloadElement(browser, selectOk.toString());
-		}else{
-			functionalUtil.selectOption(browser, getCourseEditorPublishWizardCatalogId(), ADD_TO_CATALOG_NO_VALUE);
-		}
-		
-		functionalUtil.clickWizardFinish(browser);
-		functionalUtil.waitForPageToUnloadElement(browser, "id=" + getCourseEditorPublishWizardCatalogId());
-		
-		return(true);
-	}
-
-	/**
-	 * Creates the specified course node in a opened course editor.
-	 * 
-	 * @param browser
-	 * @param node
-	 * @param title
-	 * @param description
-	 * @param position
-	 * @return true on success otherwise false
-	 */
-	public boolean createCourseNode(Selenium browser, CourseNodeAlias node,
-			String shortTitle, String longTitle,
-			String description,
-			int position){
-		functionalUtil.idle(browser);
-		
-		/* click on the appropriate link to create node */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getCourseEditorInsertContentCss())
-		.append("')]")
-		.append("//a[contains(@class, '")
-		.append(node.getIconCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-
-		functionalUtil.waitForPageToLoad(browser);
-		
-		/* choose insertion point */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, 'b_window')]//form[@name='seltree']//div[contains(@class, '")
-		.append(getCreateCourseNodeTargetPositionItemCss())
-		.append("')]//input[@type='radio'])[")
-		.append(position + 1)
-		.append("]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, 'b_window')]//form[@name='seltree']//button[contains(@class, 'b_button_dirty')])[1]");
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToUnloadElement(browser, selectorBuffer.toString());
-		
-		/* fill in short title */
-		functionalUtil.idle(browser);
-		String selShortTitle = "xpath=(//div[contains(@class, 'o_editor')]//form//input[@type='text'])[1]";
-		browser.type(selShortTitle, shortTitle);
-		
-		/* fill in long title */
-		String selLongtitle = "xpath=(//div[contains(@class, 'o_editor')]//form//input[@type='text'])[2]";
-		browser.type(selLongtitle, longTitle);
-		
-		/* fill in description */
-		functionalUtil.typeMCE(browser, description);
-		
-		/* click save */
-		String selSave = "xpath=(//div[contains(@class, 'o_editor')]//form//button[contains(@class, 'b_button')])[1]";
-		browser.click(selSave);
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return true;
-	}
-	
-	/**
-	 * Adds an artefact to eportfolio by clicking the appropriate
-	 * button.
-	 * 
-	 * @param browser
-	 * @return true on success
-	 */
-	public boolean addToEportfolio(Selenium browser, String binder, String page, String structure,
-			String title, String description,
-			String[] tags,
-			FunctionalEPortfolioUtil functionalEPortfolioUtil){
-
-		functionalUtil.idle(browser);
-		
-		/* open wizard */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getEportfolioAddCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		if(binder != null){
-			/* fill in wizard - title & description */
-			functionalEPortfolioUtil.fillInTitleAndDescription(browser, title, description);
-			
-			/* fill in wizard - tags */
-			functionalEPortfolioUtil.fillInTags(browser, tags);
-			
-			/* fill in wizard - destination */
-			functionalEPortfolioUtil.selectTree(browser, binder, page, structure);
-		}
-
-		/* click finish */
-		functionalUtil.clickWizardFinish(browser, functionalEPortfolioUtil.getArtefactWizardCss());
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens the course with courseId and nth forum within the specified
-	 * course.
-	 * 
-	 * @param browser
-	 * @param courseId
-	 * @param nth forum in the course
-	 * @return true on success, otherwise false
-	 */
-	public boolean openForum(Selenium browser, long courseId, int nth){
-		if(!functionalRepositorySiteUtil.openCourse(browser, courseId))
-			return(false);
-
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=(//ul//li//a[contains(@class, '")
-		.append(getForumIconCss())
-		.append("')])[")
-		.append(nth + 1)
-		.append("]")
-		.append("");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens the specified forum in the course and posts a new topic.
-	 * 
-	 * @param browser
-	 * @param courseId
-	 * @param nthForum
-	 * @param title
-	 * @param message
-	 * @return true on success, otherwise false
-	 */
-	public boolean postForumMessage(Selenium browser, long courseId, int nthForum,
-			String title, String message){
-		if(!openForum(browser, courseId, nthForum))
-			return(false);
-
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		/* click open new topic */
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getForumToolbarCss())
-		.append("')]//a[contains(@class, '")
-		.append(getForumThreadNewCss())
-		.append("')]");
-		
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-		
-		/* fill in form - title */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getCourseRunCss())
-		.append("')]//form//input[@type='text']");
-		
-		browser.type(selectorBuffer.toString(), title);
-		
-//		functionalUtil.waitForPageToLoad(browser);
-		
-		/* fill in form - post */
-		functionalUtil.typeMCE(browser, message);
-		
-		/* save form */
-		
-		StringBuilder selSave = new StringBuilder();
-		selSave.append("xpath=//div[contains(@class, '")
-		  .append(getCourseRunCss())
-		  .append("')]//form//button[last()][contains(@class,'b_button')]");
-		
-		browser.click(selSave.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens the wiki specified by id.
-	 * 
-	 * @param browser
-	 * @param id
-	 * @return
-	 */
-	public boolean openWiki(Selenium browser, long id){
-		functionalUtil.openBusinessPath(browser, functionalUtil.getDeploymentUrl() + "/url/RepositoryEntry/" + id);
-		
-		return(true);
-	}
-	
-	/**
-	 * Creates a new wiki article.
-	 * 
-	 * @param browser
-	 * @param wikiId
-	 * @param pagename
-	 * @param content
-	 * @return true on success, otherwise false
-	 */
-
-	public boolean createWikiArticle(Selenium browser, long wikiId, String pagename, String content){
-		if(!openWiki(browser, wikiId))
-			return(false);
-
-		functionalUtil.idle(browser);
-		
-		/* type pagename */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form//div[contains(@class, '")
-		.append(getWikiCreateArticleCss())
-		.append("')]/..//input[@type='text']");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.type(selectorBuffer.toString(), pagename);
-		
-		/* click create */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form//div[contains(@class, '")
-		.append(getWikiCreateArticleCss())
-		.append("')]//button");
-		
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		/* edit content */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getWikiArticleBoxCss())
-		.append("')]//a");
-		
-		browser.click(selectorBuffer.toString());
-
-		functionalUtil.waitForPageToLoad(browser);
-		
-		
-		/* fill in text area */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getWikiEditFormWrapperCss())
-		.append("')]//textarea");
-		
-		browser.type(selectorBuffer.toString(), content);
-		
-		/* click save */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getWikiEditFormWrapperCss())
-		.append("')]//button[last()]");
-		
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens the blog specified by id
-	 * 
-	 * @param browser
-	 * @param id
-	 * @return true on success, otherwise false
-	 */
-	public boolean openBlog(Selenium browser, long id){
-		functionalUtil.openBusinessPath(browser, functionalUtil.getDeploymentUrl() + "/url/RepositoryEntry/" + id);
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens the course with courseId and nth blog within the specified
-	 * course.
-	 * 
-	 * @param browser
-	 * @param courseId
-	 * @param nth
-	 * @return
-	 */
-	public boolean openBlogWithoutBusinessPath(Selenium browser, long courseId, int nth){
-		if(!functionalRepositorySiteUtil.openCourse(browser, courseId))
-			return(false);
-
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=(//ul//li//a[contains(@class, '")
-		.append(getBlogIconCss())
-		.append("')])[")
-		.append(nth + 1)
-		.append("]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-
-	/**
-	 * Imports an existing feed into blog.
-	 * 
-	 * @param browser
-	 * @param url
-	 * @return true on success
-	 */
-	public boolean importBlogFeed(Selenium browser, String url){
-
-		functionalUtil.idle(browser);
-		
-		/* open popup to enter url */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getBlogNoPostsCss())
-		.append("')]//a[contains(@class, 'b_button')])[last()]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* enter url */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, 'b_window_content')]//form//input[@type='text'])[2]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), url);
-		
-		/* click save */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, 'b_window_content')]//form//button[contains(@class, 'b_button_dirty')])[last()]");
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-
-	/**
-	 * 
-	 * @param browser
-	 * @param nth
-	 * @return
-	 */
-	public boolean openBlogEntry(Selenium browser, int nth){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//ul[contains(@class, '")
-		.append(getBlogReadEntryCss())
-		.append("')]//a)[")
-		.append(nth + 1)
-		.append("]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Clicks back button within open blog entry.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public boolean backBlogEntry(Selenium browser){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getBlogPostCss())
-		.append("')]//a[contains(@class, '")
-		.append(functionalUtil.getBackButtonCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Create a new blog entry.
-	 * 
-	 * @param browser
-	 * @param courseId
-	 * @param nth
-	 * @param title
-	 * @param description
-	 * @param content
-	 * @return
-	 */
-	public boolean createBlogEntry(Selenium browser, long courseId, int nth,
-			String title, String description, String content){
-		return(editBlogEntry(browser, courseId, nth, title, description, content, -1, null));
-	}
-	
-	
-	/**
-	 * Edit a blog entry.
-	 * 
-	 * @param browser
-	 * @param blogId
-	 * @param title
-	 * @param description
-	 * @param content
-	 * @return true on success, otherwise false
-	 */
-	public boolean editBlogEntry(Selenium browser, long courseId, int nth,
-			String title, String description, String content, int entry, BlogEdit[] edit){
-		if(!openBlogWithoutBusinessPath(browser, courseId, nth))
-			return(false);
-
-		return(editBlogEntry(browser, title, description, content, entry, edit));
-	}
-	
-	/**
-	 * Edit a blog entry.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @param content
-	 * @param entry
-	 * @param edit
-	 * @return
-	 */
-	public boolean editBlogEntry(Selenium browser,
-			String title, String description, String content, int entry, BlogEdit[] edit){
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		if(edit == null){
-			functionalUtil.idle(browser);
-			
-			/* open popup to enter url */
-			selectorBuffer.append("xpath=(//div[contains(@class, '")
-			.append(getBlogNoPostsCss())
-			.append("')]//a[contains(@class, 'b_button')])");
-
-			if(browser.isElementPresent(selectorBuffer.toString())){
-				browser.click(selectorBuffer.toString());
-			}else{
-				/* click create */
-				selectorBuffer = new StringBuffer();
-
-				selectorBuffer.append("xpath=//a[contains(@class, '")
-				.append(getBlogCreateEntryCss())
-				.append("')]");
-
-				browser.click(selectorBuffer.toString());
-			}
-		}else{
-			if(edit.length > 0){
-				selectorBuffer = new StringBuffer();
-				
-				selectorBuffer.append("xpath=(//a[contains(@class, '")
-				.append(getBlogEditEntryCss())
-				.append("')])[")
-				.append(entry + 1)
-				.append("]");
-				
-				functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-				browser.click(selectorBuffer.toString());
-			}
-		}
-		
-		/* fill in form - title */
-		if(edit == null || ArrayUtils.contains(edit, BlogEdit.TITLE)){
-			functionalUtil.idle(browser);
-
-			selectorBuffer = new StringBuffer();
-
-			selectorBuffer.append("xpath=(//form//div[contains(@class, '")
-			.append(getBlogFormCss())
-			.append("')]//input[@type='text'])[1]");
-
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-
-			browser.type(selectorBuffer.toString(), title);
-		}
-		
-		/* fill in form - description */
-		if(edit == null || ArrayUtils.contains(edit, BlogEdit.DESCRIPTION)){
-			functionalUtil.typeMCE(browser, "o_sel_blog_description", description);
-		}
-		
-		/* fill in form - content */
-		if(edit == null || ArrayUtils.contains(edit, BlogEdit.CONTENT)){
-			functionalUtil.typeMCE(browser, "o_sel_blog_content", content);
-		}
-		
-		/* save form */
-		if(edit == null || edit.length > 0){
-			StringBuilder okSelector = new StringBuilder();
-
-			okSelector.append("xpath=//form//div[contains(@class, '")
-			  .append(getBlogFormCss())
-			  .append("')]//button[last()][contains(@class,'b_button')]");
-
-			functionalUtil.waitForPageToLoadElement(browser, okSelector.toString());
-			browser.click(okSelector.toString());
-			functionalUtil.waitForPageToLoad(browser);
-		}
-		
-		return true;
-	}
-	
-	/**
-	 * Imports an existing feed into podcast.
-	 * 
-	 * @param browser
-	 * @param url
-	 * @return true on success
-	 */
-	public boolean importPodcastFeed(Selenium browser, String url){
-		functionalUtil.idle(browser);
-		
-		/* open popup to enter url */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getPodcastNoEpisodesCss())
-		.append("')]//a[contains(@class, 'b_button')])[last()]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* enter url */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, 'b_window_content')]//form//input[@type='text'])[2]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), url);
-		
-		/* click save */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, 'b_window_content')]//form//button[contains(@class, 'b_button_dirty')])[last()]");
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/** 
-	 * Opens the course configurations appropriate tab.
-	 *
-	 * @param browser
-	 * @param tab
-	 * @return true on success
-	 */
-	public boolean openCourseEditorCourseTab(Selenium browser, CourseEditorCourseTab tab){
-		functionalUtil.idle(browser);
-		
-		return(functionalUtil.openContentTab(browser, tab.ordinal()));
-	}
-	
-	/**
-	 * Opens the test configurations appropriate tab.
-	 * 
-	 * @param browser
-	 * @param tab
-	 * @return true on success
-	 */
-	public boolean openCourseEditorIQTestTab(Selenium browser, CourseEditorIQTestTab tab){
-		functionalUtil.idle(browser);
-		
-		return(functionalUtil.openContentTab(browser, tab.ordinal()));
-	}
-	
-	/**
-	 * Opens the content package configurations appropriate tab
-	 * 
-	 * @param browser
-	 * @param tab
-	 * @return true on success
-	 */
-	public boolean openCourseEditorCpTab(Selenium browser, CourseEditorCpTab tab){
-		functionalUtil.idle(browser);
-		
-		return(functionalUtil.openContentTab(browser, tab.ordinal()));
-	}
-	
-	/**
-	 * Opens the wiki configurations appropriate tab.
-	 * 
-	 * @param browser
-	 * @param tab
-	 * @return true on success
-	 */
-	public boolean openCourseEditorWikiTab(Selenium browser, CourseEditorWikiTab tab){
-		functionalUtil.idle(browser);
-		
-		return(functionalUtil.openContentTab(browser, tab.ordinal()));
-	}
-	
-	/**
-	 * Opens the blog configurations appropriate tab.
-	 * 
-	 * @param browser
-	 * @param tab
-	 * @return true on success
-	 */
-	public boolean openCourseEditorBlogTab(Selenium browser, CourseEditorBlogTab tab){
-		functionalUtil.idle(browser);
-		
-		return(functionalUtil.openContentTab(browser, tab.ordinal()));
-	}
-	
-	/**
-	 * Opens the podcast configurations appropriate tab.
-	 * 
-	 * @param browser
-	 * @param tab
-	 * @return true on success
-	 */
-	public boolean openCourseEditorPodcastTab(Selenium browser, CourseEditorPodcastTab tab){
-		functionalUtil.idle(browser);
-		
-		return(functionalUtil.openContentTab(browser, tab.ordinal()));
-	}
-	
-	/**
-	 * Opens the portfolio task configurations appropriate tab.
-	 * 
-	 * @param browser
-	 * @param tab
-	 * @return true on success
-	 */
-	public boolean openCourseEditorPortfolioTaskTab(Selenium browser, CourseEditorPortfolioTaskTab tab){
-		functionalUtil.idle(browser);
-		
-		return(functionalUtil.openContentTab(browser, tab.ordinal()));
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param chooseRepositoryCss
-	 * @param key
-	 * @return
-	 */
-	private boolean chooseRepositoryResource(Selenium browser, String chooseRepositoryCss, long key){
-		functionalUtil.idle(browser);
-		
-		/* click on "choose, create or import file" button */
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(chooseRepositoryCss)
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		/* click search link */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getRepositoryPopupSearchResourcesCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* type key and search */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(FunctionalRepositorySiteUtil.SearchField.ID.getEntryCss())
-		.append("')]//input[@type='text']");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), Long.toString(key));
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getRepositoryPopupCss())
-		.append("')]//a[contains(@class, '")
-		.append(functionalUtil.getButtonCss())
-		.append("')])[last()]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* choose resource */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getRepositoryPopupCss())
-		.append("')]//tr[contains(@class, '")
-		.append(functionalUtil.getTableFirstChildCss())
-		.append("') and contains(@class, '")
-		.append(functionalUtil.getTableLastChildCss())
-		.append("')]//td[contains(@class, '")
-		.append(functionalUtil.getTableLastChildCss())
-		.append("')]//a");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToUnloadElement(browser, selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens and fills in the "create resource" popup.
-	 * 
-	 * @param browser
-	 * @param chooseRepositoryCss
-	 * @param title
-	 * @param description
-	 * @return true on success
-	 */
-	private boolean createRepositoryResource(Selenium browser, String chooseRepositoryCss, String title, String description){
-		functionalUtil.idle(browser);
-		
-		/* click on "choose, create or import file" button */
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(chooseRepositoryCss)
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		/* click create button */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getRepositoryPopupCreateResourceCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		/* */
-		return(functionalRepositorySiteUtil.fillInRepositoryEntryPopup(browser, title, description));
-	}
-	
-	/**
-	 * Creates a new test.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @return true on success
-	 */
-	public boolean createQTITest(Selenium browser, String title, String description){
-		if(!openCourseEditorIQTestTab(browser, CourseEditorIQTestTab.TEST_CONFIGURATION))
-			return(false);
-
-		if(!createRepositoryResource(browser, getTestChooseRepositoryFileCss(), title, description)){
-			return(false);
-		}
-				
-		return(true);
-	}
-	
-	/**
-	 * Creates a new CP learning content.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @return true on success
-	 */
-	public boolean createCPLearningContent(Selenium browser, String title, String description){
-		if(!openCourseEditorCpTab(browser, CourseEditorCpTab.LEARNING_CONTENT))
-			return(false);
-		
-		if(!createRepositoryResource(browser, getCpChooseRepositoryFileCss(), title, description)){
-			return(false);
-		}
-				
-		return(true);
-	}
-	
-	/**
-	 * Creates a new wiki.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @return true on success
-	 */
-	public boolean createWiki(Selenium browser, String title, String description){
-		if(!openCourseEditorWikiTab(browser, CourseEditorWikiTab.LEARNING_CONTENT))
-			return(false);
-		
-		if(!createRepositoryResource(browser, getWikiChooseRepositoryFileCss(), title, description)){
-			return(false);
-		}
-				
-		return(true);
-	}
-	
-	/**
-	 * Choose an existing wiki.
-	 * 
-	 * @param browser
-	 * @param wikiId
-	 * @return
-	 */
-	public boolean chooseWiki(Selenium browser, long wikiId){
-		if(!openCourseEditorWikiTab(browser, CourseEditorWikiTab.LEARNING_CONTENT))
-			return(false);
-		
-		if(!chooseRepositoryResource(browser, getWikiChooseRepositoryFileCss(), wikiId)){
-			return(false);
-		}
-		
-		return(true);
-	}
-	/**
-	 * Creates a new blog.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @return true on success
-	 */
-	public boolean createBlog(Selenium browser, String title, String description){
-		if(!openCourseEditorBlogTab(browser, CourseEditorBlogTab.LEARNING_CONTENT))
-			return(false);
-		
-		if(!createRepositoryResource(browser, getFeedChooseRepositoryFileCss(), title, description)){
-			return(false);
-		}
-				
-		return(true);
-	}
-	
-	/**
-	 * Creates a new podcast.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @return true on success
-	 */
-	public boolean createPodcast(Selenium browser, String title, String description){
-		if(!openCourseEditorPodcastTab(browser, CourseEditorPodcastTab.LEARNING_CONTENT))
-			return(false);
-		
-		if(!createRepositoryResource(browser, getFeedChooseRepositoryFileCss(), title, description)){
-			return(false);
-		}
-				
-		return(true);
-	}
-	
-	/**
-	 * Creates a new podcast.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @return true on success
-	 */
-	public boolean createPortfolioTask(Selenium browser, String title, String description){
-		if(!openCourseEditorPortfolioTaskTab(browser, CourseEditorPortfolioTaskTab.LEARNING_CONTENT))
-			return(false);
-		
-		if(!createRepositoryResource(browser, getMapChooseRepositoryFileCss(), title, description)){
-			return(false);
-		}
-				
-		return(true);
-	}
-	
-	/**
-	 * Creates a new forum.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @return
-	 */
-	public boolean createForum(Selenium browser, String title, String description){
-		//TODO:JK: implement me
-		
-		return(false);
-	}
-	
-	/**
-	 * Opens the portfolio template editor in conjunction with this method the appropriate node and
-	 * the appopriate tab should already be opened.
-	 * 
-	 * @param browser
-	 * @return true on success
-	 */
-	public boolean openPortfolioTemplateEditor(Selenium browser){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getMapEditCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param file
-	 * @return
-	 */
-	public boolean uploadFileToCourseFolder(Selenium browser, URI file){
-		/* open upload dialog */
-		functionalUtil.idle(browser);
-
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//a[contains(@class, 'b_briefcase_upload')]");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-
-		/* attach file */
-		functionalUtil.idle(browser);
-
-		selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//form//input[@type='file']");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.attachFile(selectorBuffer.toString(), file.toString());
-
-		/* upload file */
-		selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//form//button[last() and contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')]");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		return(true);
-	}
-	
-	public FunctionalUtil getFunctionalUtil() {
-		return functionalUtil;
-	}
-
-	public void setFunctionalUtil(FunctionalUtil functionalUtil) {
-		this.functionalUtil = functionalUtil;
-	}
-
-	public FunctionalRepositorySiteUtil getFunctionalRepositorySiteUtil() {
-		return functionalRepositorySiteUtil;
-	}
-
-	public void setFunctionalRepositorySiteUtil(
-			FunctionalRepositorySiteUtil functionalRepositorySiteUtil) {
-		this.functionalRepositorySiteUtil = functionalRepositorySiteUtil;
-	}
-
-	public String getCourseRunCss() {
-		return courseRunCss;
-	}
-
-	public void setCourseRunCss(String courseRunCss) {
-		this.courseRunCss = courseRunCss;
-	}
-
-	public String getCourseOpenEditorCss() {
-		return courseOpenEditorCss;
-	}
-
-	public void setCourseOpenEditorCss(String courseOpenEditorCss) {
-		this.courseOpenEditorCss = courseOpenEditorCss;
-	}
-
-	public String getCourseTabActiveCss() {
-		return courseTabActiveCss;
-	}
-
-	public void setCourseTabActiveCss(String courseTabActiveCss) {
-		this.courseTabActiveCss = courseTabActiveCss;
-	}
-
-	public String getCourseTabCloseCss() {
-		return courseTabCloseCss;
-	}
-
-	public void setCourseTabCloseCss(String courseTabCloseCss) {
-		this.courseTabCloseCss = courseTabCloseCss;
-	}
-
-	public String getCourseEditorNodeLinksId() {
-		return courseEditorNodeLinksId;
-	}
-
-	public void setCourseEditorNodeLinksId(String courseEditorNodeLinksCss) {
-		this.courseEditorNodeLinksId = courseEditorNodeLinksCss;
-	}
-
-	public String getCourseEditorPublishCss() {
-		return courseEditorPublishCss;
-	}
-
-	public void setCourseEditorPublishCss(String courseEditorPublishCss) {
-		this.courseEditorPublishCss = courseEditorPublishCss;
-	}
-
-	public String getCourseEditorPublishWizardSelectAllCss() {
-		return courseEditorPublishWizardSelectAllCss;
-	}
-
-	public void setCourseEditorPublishWizardSelectAllCss(
-			String courseEditorPublishWizardSelectAllCss) {
-		this.courseEditorPublishWizardSelectAllCss = courseEditorPublishWizardSelectAllCss;
-	}
-
-	public String getCourseEditorPublishWizardAccessId() {
-		return courseEditorPublishWizardAccessId;
-	}
-
-	public void setCourseEditorPublishWizardAccessId(
-			String courseEditorPublishWizardAccessId) {
-		this.courseEditorPublishWizardAccessId = courseEditorPublishWizardAccessId;
-	}
-
-	public String getCourseEditorPublishWizardCatalogId() {
-		return courseEditorPublishWizardCatalogId;
-	}
-
-	public void setCourseEditorPublishWizardCatalogId(
-			String courseEditorPublishWizardCatalogId) {
-		this.courseEditorPublishWizardCatalogId = courseEditorPublishWizardCatalogId;
-	}
-
-	public String getAddToCatalogCss() {
-		return addToCatalogCss;
-	}
-
-	public void setAddToCatalogCss(String addToCatalogCss) {
-		this.addToCatalogCss = addToCatalogCss;
-	}
-
-	public String getCatalogCss() {
-		return catalogCss;
-	}
-
-	public void setCatalogCss(String catalogCss) {
-		this.catalogCss = catalogCss;
-	}
-
-	public String getCatalogSubcategoryIconCss() {
-		return catalogSubcategoryIconCss;
-	}
-
-	public void setCatalogSubcategoryIconCss(String catalogSubcategoryIconCss) {
-		this.catalogSubcategoryIconCss = catalogSubcategoryIconCss;
-	}
-
-	public String getCourseEditorOverviewRadioGroupCss() {
-		return courseEditorOverviewRadioGroupCss;
-	}
-
-	public void setCourseEditorOverviewRadioGroupCss(
-			String courseEditorOverviewRadioGroupCss) {
-		this.courseEditorOverviewRadioGroupCss = courseEditorOverviewRadioGroupCss;
-	}
-
-	public String getCourseEditorInsertContentCss() {
-		return courseEditorInsertContentCss;
-	}
-
-	public void setCourseEditorInsertContentCss(String courseEditorInsertContentCss) {
-		this.courseEditorInsertContentCss = courseEditorInsertContentCss;
-	}
-
-	public String getCreateCourseNodeTargetPositionItemCss() {
-		return createCourseNodeTargetPositionItemCss;
-	}
-
-	public void setCreateCourseNodeTargetPositionItemCss(
-			String createCourseNodeTargetPositionItemCss) {
-		this.createCourseNodeTargetPositionItemCss = createCourseNodeTargetPositionItemCss;
-	}
-
-	public String getCourseEditorChooseOverviewFileCss() {
-		return courseEditorChooseOverviewFileCss;
-	}
-
-	public void setCourseEditorChooseOverviewFileCss(
-			String courseEditorChooseOverviewFileCss) {
-		this.courseEditorChooseOverviewFileCss = courseEditorChooseOverviewFileCss;
-	}
-
-	public String getCourseEditorUploadOverviewFileCss() {
-		return courseEditorUploadOverviewFileCss;
-	}
-
-	public void setCourseEditorUploadOverviewFileCss(
-			String courseEditorUploadOverviewFileCss) {
-		this.courseEditorUploadOverviewFileCss = courseEditorUploadOverviewFileCss;
-	}
-
-	public String getEportfolioAddCss() {
-		return eportfolioAddCss;
-	}
-
-	public void setEportfolioAddCss(String eportfolioAddCss) {
-		this.eportfolioAddCss = eportfolioAddCss;
-	}
-
-	public String getStructureIconCss() {
-		return structureIconCss;
-	}
-
-	public void setStructureIconCss(String structureIconCss) {
-		this.structureIconCss = structureIconCss;
-	}
-
-	public String getForumIconCss() {
-		return forumIconCss;
-	}
-
-	public void setForumIconCss(String forumIconCss) {
-		this.forumIconCss = forumIconCss;
-	}
-
-	public String getBlogIconCss() {
-		return blogIconCss;
-	}
-
-	public void setBlogIconCss(String blogIconCss) {
-		this.blogIconCss = blogIconCss;
-	}
-
-	public String getForumToolbarCss() {
-		return forumToolbarCss;
-	}
-
-	public void setForumToolbarCss(String forumToolbarCss) {
-		this.forumToolbarCss = forumToolbarCss;
-	}
-
-	public String getForumThreadNewCss() {
-		return forumThreadNewCss;
-	}
-
-	public void setForumThreadNewCss(String forumThreadNewCss) {
-		this.forumThreadNewCss = forumThreadNewCss;
-	}
-
-	public String getForumArchiveCss() {
-		return forumArchiveCss;
-	}
-
-	public void setForumArchiveCss(String forumArchiveCss) {
-		this.forumArchiveCss = forumArchiveCss;
-	}
-
-	public String getForumFilterCss() {
-		return forumFilterCss;
-	}
-
-	public void setForumFilterCss(String forumFilterCss) {
-		this.forumFilterCss = forumFilterCss;
-	}
-
-	public String getWikiCreateArticleCss() {
-		return wikiCreateArticleCss;
-	}
-
-	public void setWikiCreateArticleCss(String wikiCreateArticleCss) {
-		this.wikiCreateArticleCss = wikiCreateArticleCss;
-	}
-
-	public String getWikiArticleBoxCss() {
-		return wikiArticleBoxCss;
-	}
-
-	public void setWikiArticleBoxCss(String wikiArticleBoxCss) {
-		this.wikiArticleBoxCss = wikiArticleBoxCss;
-	}
-
-	public String getWikiEditFormWrapperCss() {
-		return wikiEditFormWrapperCss;
-	}
-
-	public void setWikiEditFormWrapperCss(String wikiEditFormWrapperCss) {
-		this.wikiEditFormWrapperCss = wikiEditFormWrapperCss;
-	}
-
-	public String getBlogCreateEntryCss() {
-		return blogCreateEntryCss;
-	}
-
-	public void setBlogCreateEntryCss(String blogCreateEntryCss) {
-		this.blogCreateEntryCss = blogCreateEntryCss;
-	}
-
-	public String getBlogEditEntryCss() {
-		return blogEditEntryCss;
-	}
-
-	public void setBlogEditEntryCss(String blogEditEntryCss) {
-		this.blogEditEntryCss = blogEditEntryCss;
-	}
-
-	public String getBlogDeleteEntryCss() {
-		return blogDeleteEntryCss;
-	}
-
-	public void setBlogDeleteEntryCss(String blogDeleteEntryCss) {
-		this.blogDeleteEntryCss = blogDeleteEntryCss;
-	}
-
-	public String getBlogReadEntryCss() {
-		return blogReadEntryCss;
-	}
-
-	public void setBlogReadEntryCss(String blogReadEntryCss) {
-		this.blogReadEntryCss = blogReadEntryCss;
-	}
-
-	public String getBlogFormCss() {
-		return blogFormCss;
-	}
-
-	public void setBlogFormCss(String blogFormCss) {
-		this.blogFormCss = blogFormCss;
-	}
-
-	public String getBlogPostCss() {
-		return blogPostCss;
-	}
-
-	public void setBlogPostCss(String blogPostCss) {
-		this.blogPostCss = blogPostCss;
-	}
-
-	public String getBlogYearCss() {
-		return blogYearCss;
-	}
-
-	public void setBlogYearCss(String blogYearCss) {
-		this.blogYearCss = blogYearCss;
-	}
-
-	public String getBlogMonthCss() {
-		return blogMonthCss;
-	}
-
-	public void setBlogMonthCss(String blogMonthCss) {
-		this.blogMonthCss = blogMonthCss;
-	}
-
-	public String getTestChooseRepositoryFileCss() {
-		return testChooseRepositoryFileCss;
-	}
-
-	public void setTestChooseRepositoryFileCss(String testChooseRepositoryFileCss) {
-		this.testChooseRepositoryFileCss = testChooseRepositoryFileCss;
-	}
-
-	public String getCpChooseRepositoryFileCss() {
-		return cpChooseRepositoryFileCss;
-	}
-
-	public void setCpChooseRepositoryFileCss(String cpChooseRepositoryFileCss) {
-		this.cpChooseRepositoryFileCss = cpChooseRepositoryFileCss;
-	}
-
-	public String getWikiChooseRepositoryFileCss() {
-		return wikiChooseRepositoryFileCss;
-	}
-
-	public void setWikiChooseRepositoryFileCss(String wikiChooseRepositoryFileCss) {
-		this.wikiChooseRepositoryFileCss = wikiChooseRepositoryFileCss;
-	}
-
-	public String getFeedChooseRepositoryFileCss() {
-		return feedChooseRepositoryFileCss;
-	}
-
-	public void setFeedChooseRepositoryFileCss(String feedChooseRepositoryFileCss) {
-		this.feedChooseRepositoryFileCss = feedChooseRepositoryFileCss;
-	}
-
-	public String getMapChooseRepositoryFileCss() {
-		return mapChooseRepositoryFileCss;
-	}
-
-	public void setMapChooseRepositoryFileCss(String mapChooseRepositoryFileCss) {
-		this.mapChooseRepositoryFileCss = mapChooseRepositoryFileCss;
-	}
-
-	public String getRepositoryPopupCss() {
-		return repositoryPopupCss;
-	}
-
-	public void setRepositoryPopupCss(String repositoryPopupCss) {
-		this.repositoryPopupCss = repositoryPopupCss;
-	}
-
-	public String getRepositoryPopupCreateResourceCss() {
-		return repositoryPopupCreateResourceCss;
-	}
-
-	public void setRepositoryPopupCreateResourceCss(String repositoryPopupCreateResourceCss) {
-		this.repositoryPopupCreateResourceCss = repositoryPopupCreateResourceCss;
-	}
-
-	public String getRepositoryPopupImportResourceCss() {
-		return repositoryPopupImportResourceCss;
-	}
-
-	public void setRepositoryPopupImportResourceCss(
-			String repositoryPopupImportResourceCss) {
-		this.repositoryPopupImportResourceCss = repositoryPopupImportResourceCss;
-	}
-
-	public String getRepositoryPopupAllResourcesCss() {
-		return repositoryPopupAllResourcesCss;
-	}
-
-	public void setRepositoryPopupAllResourcesCss(
-			String repositoryPopupAllResourcesCss) {
-		this.repositoryPopupAllResourcesCss = repositoryPopupAllResourcesCss;
-	}
-
-	public String getRepositoryPopupMyResourcesCss() {
-		return repositoryPopupMyResourcesCss;
-	}
-
-	public void setRepositoryPopupMyResourcesCss(
-			String repositoryPopupMyResourcesCss) {
-		this.repositoryPopupMyResourcesCss = repositoryPopupMyResourcesCss;
-	}
-
-	public String getRepositoryPopupSearchResourcesCss() {
-		return repositoryPopupSearchResourcesCss;
-	}
-
-	public void setRepositoryPopupSearchResourcesCss(
-			String repositoryPopupSearchResourcesCss) {
-		this.repositoryPopupSearchResourcesCss = repositoryPopupSearchResourcesCss;
-	}
-
-	public String getMapEditCss() {
-		return mapEditCss;
-	}
-
-	public void setMapEditCss(String mapEditCss) {
-		this.mapEditCss = mapEditCss;
-	}
-
-	public String getBlogNoPostsCss() {
-		return blogNoPostsCss;
-	}
-
-	public void setBlogNoPostsCss(String blogNoPostsCss) {
-		this.blogNoPostsCss = blogNoPostsCss;
-	}
-
-	public String getPodcastNoEpisodesCss() {
-		return podcastNoEpisodesCss;
-	}
-
-	public void setPodcastNoEpisodesCss(String podcastNoEpisodesCss) {
-		this.podcastNoEpisodesCss = podcastNoEpisodesCss;
-	}
-	
-}
diff --git a/src/test/java/org/olat/util/FunctionalEPortfolioUtil.java b/src/test/java/org/olat/util/FunctionalEPortfolioUtil.java
deleted file mode 100644
index 5180ce209171003db51c14f0aa98b83c052bb51f..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/FunctionalEPortfolioUtil.java
+++ /dev/null
@@ -1,1742 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.net.MalformedURLException;
-import java.net.URI;
-
-import org.apache.velocity.VelocityContext;
-import org.apache.velocity.app.VelocityEngine;
-import org.apache.velocity.exception.MethodInvocationException;
-import org.apache.velocity.exception.ParseErrorException;
-import org.apache.velocity.exception.ResourceNotFoundException;
-import org.olat.util.FunctionalHomeSiteUtil.EPortfolioAction;
-import org.olat.util.FunctionalUtil.OlatSite;
-
-import com.thoughtworks.selenium.Selenium;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-public class FunctionalEPortfolioUtil {
-	
-	public final static String EP_ARTEFACTS_BUSINESS_PATH = "EPArtefacts";
-	public final static String EP_MAPS_BUSINESS_PATH = "EPMaps";
-	
-	public final static String EPORTFOLIO_CSS = "b_eportfolio";
-	public final static String EPORTFOLIO_MAP_CSS = "b_eportfolio_map";
-	public final static String EPORTFOLIO_PAGE_CSS = "b_eportfolio_page";
-	public final static String EPORTFOLIO_STRUCTURE_CSS = "b_eportfolio_structure";
-	public final static String EPORTFOLIO_LINK_CSS = "b_eportfolio_link";
-	public final static String EPORTFOLIO_ARTEFACT_CSS = "b_artefact";
-	public final static String EPORTFOLIO_ARTEFACT_DETAILS_CSS = "o_sel_artefact_details";
-	
-	public final static String HOME_PORTAL_EDIT_LINK_CSS = "o_sel_add_artfeact";
-	public final static String ADD_TEXT_ARTEFACT_CSS = "o_sel_add_text_artfeact";
-	public final static String UPLOAD_FILE_ARTEFACT_CSS = "o_sel_add_upload_artfeact";
-	public final static String CREATE_LEARNING_JOURNAL_CSS = "o_sel_add_liveblog_artfeact";
-	
-	public final static String ADD_BINDER_BOX_CSS = "o_sel_add_map_window";
-	public final static String CREATE_BINDER_CSS = "o_sel_create_map";
-	public final static String CREATE_DEFAULT_BINDER_CSS = "o_sel_create_default_map";
-	public final static String CREATE_TEMPLATE_BINDER_CSS = "o_sel_create_template_map";
-	public final static String OPEN_BINDER_ICON_CSS = "b_open_icon";
-	
-	public final static String EDIT_LINK_CSS = "b_eportfolio_edit_link";
-	
-	public final static String EPORTFOLIO_TABLE_OF_CONTENTS_CSS = "b_portfolio_toc";
-	public final static String EPORTFOLIO_TOC_LEVEL1_CSS = "level1";
-	public final static String EPORTFOLIO_TOC_LEVEL2_CSS = "level2";
-	
-	public final static String ADD_LINK_CSS = "b_eportfolio_add_link";
-	public final static String PAGE_TABS_CSS = "b_pagination";
-	
-	public final static String PAGE_ICON_CSS = "b_ep_page_icon";
-	public final static String STRUCT_ICON_CSS = "b_ep_struct_icon";
-	
-	public final static String ARTEFACT_CSS = "b_artefact";
-	public final static String TAG_ICON_CSS = "b_tag_icon";
-
-	public final static String ARTEFACT_WIZARD_CSS = "o_sel_artefact_add_wizard";
-	
-	public enum ArtefactAlias {
-		TEXT("txt", ADD_TEXT_ARTEFACT_CSS),
-		FILE("file", UPLOAD_FILE_ARTEFACT_CSS),
-		LEARNING_JOURNAL("liveblog", CREATE_LEARNING_JOURNAL_CSS);
-		
-		private String alias;
-		private String addLinkCss;
-		
-		ArtefactAlias(String alias, String addLinkCss){
-			setAlias(alias);
-			setAddLinkCss(addLinkCss);
-		}
-
-		public String getAlias() {
-			return alias;
-		}
-
-		public void setAlias(String alias) {
-			this.alias = alias;
-		}
-
-		public String getAddLinkCss() {
-			return addLinkCss;
-		}
-
-		public void setAddLinkCss(String addLinkCss) {
-			this.addLinkCss = addLinkCss;
-		}
-	}
-	
-	public enum ArtefactDisplay {
-		TABLE,
-		THUMBNAILS,
-	}
-	
-	private String eportfolioCss;
-	private String eportfolioMapCss;
-	private String eportfolioPageCss;
-	private String eportfolioStructureCss;
-	private String eportfolioLinkCss;
-	private String eportfolioArtefactCss;
-	private String eportfolioArtefactDetailsCss;
-	
-	private String homePortalEditLinkCss;
-	private String addTextArtefactCss;
-	private String uploadFileArtefactCss;
-	private String createLearningJournalCss;
-	
-	private String addBinderBoxCss;
-	private String createBinderCss;
-	private String createDefaultBinderCss;
-	private String createTemplateBinderCss;
-	private String openBinderCss;
-	
-	private String editLinkCss;
-	
-	private String eportfolioTableOfContentsCss;
-	private String eportfolioTOCLevel1Css;
-	private String eportfolioTOCLevel2Css;
-	
-	private String addLinkCss;
-	private String pageTabsCss;
-	
-	private String pageIconCss;
-	private String structIconCss;
-	
-	private String artefactCss;
-	private String tagIconCss;
-	
-	private String artefactWizardCss;
-	
-	private FunctionalUtil functionalUtil;
-	private FunctionalHomeSiteUtil functionalHomeSiteUtil;
-	
-	public FunctionalEPortfolioUtil(FunctionalUtil functionalUtil, FunctionalHomeSiteUtil functionalHomeSiteUtil){
-		this.functionalUtil = functionalUtil;
-		this.functionalHomeSiteUtil = functionalHomeSiteUtil;
-		
-		setEPortfolioCss(EPORTFOLIO_CSS);
-		setEPortfolioMapCss(EPORTFOLIO_MAP_CSS);
-		setEPortfolioPageCss(EPORTFOLIO_PAGE_CSS);
-		setEPortfolioStructureCss(EPORTFOLIO_STRUCTURE_CSS);
-		setEPortfolioLinkCss(EPORTFOLIO_LINK_CSS);
-		setEPortfolioArtefactCss(EPORTFOLIO_ARTEFACT_CSS);
-		setEPortfolioArtefactDetailsCss(EPORTFOLIO_ARTEFACT_DETAILS_CSS);
-		
-		setHomePortalEditLinkCss(HOME_PORTAL_EDIT_LINK_CSS);
-		setAddTextArtefactCss(ADD_TEXT_ARTEFACT_CSS);
-		setUploadFileArtefactCss(UPLOAD_FILE_ARTEFACT_CSS);
-		setCreateLearningJournalCss(CREATE_LEARNING_JOURNAL_CSS);
-		
-		setAddBinderBoxCss(ADD_BINDER_BOX_CSS);
-		setCreateBinderCss(CREATE_BINDER_CSS);
-		setCreateDefaultBinderCss(CREATE_DEFAULT_BINDER_CSS);
-		setCreateTemplateBinderCss(CREATE_TEMPLATE_BINDER_CSS);
-		setOpenBinderCss(OPEN_BINDER_ICON_CSS);
-		
-		setEditLinkCss(EDIT_LINK_CSS);
-		
-		setEPortfolioTableOfContentsCss(EPORTFOLIO_TABLE_OF_CONTENTS_CSS);
-		setEPortfolioTOCLevel1Css(EPORTFOLIO_TOC_LEVEL1_CSS);
-		setEPortfolioTOCLevel2Css(EPORTFOLIO_TOC_LEVEL2_CSS);
-		
-		setAddLinkCss(ADD_LINK_CSS);
-		setPageTabsCss(PAGE_TABS_CSS);
-		
-		setPageIconCss(PAGE_ICON_CSS);
-		setStructIconCss(STRUCT_ICON_CSS);
-		
-		setArtefactCss(ARTEFACT_CSS);
-		setTagIconCss(TAG_ICON_CSS);
-		
-		setArtefactWizardCss(ARTEFACT_WIZARD_CSS);
-	}
-
-	/**
-	 * Opens the artefact details popup.
-	 * 
-	 * @param browser
-	 * @param key
-	 * @param artefactTitle
-	 * @return
-	 */
-	public boolean openArtefactDetails(Selenium browser, Long key, String artefactTitle){
-		String epArtefactsBusinessPath = functionalUtil.getDeploymentUrl().toString() + "/url/HomeSite/" + key + "/" + EP_ARTEFACTS_BUSINESS_PATH;
-		
-//		do{
-//			browser.open(epArtefactsBusinessPath);
-//		}while();
-		
-		//TODO:JK: implement me
-		
-		return(false);
-	}
-	
-	/**
-	 * Clicks within the artefact details popup the link to it's content.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public boolean clickArtefactContent(Selenium browser){
-		//TODO:JK: implement me
-		
-		return(false);
-	}
-	
-	/**
-	 * Opens the specified binder.
-	 * 
-	 * @param browser
-	 * @param key
-	 * @param binderTitle
-	 * @return
-	 */
-	public boolean openBinder(Selenium browser, Long key, String binderTitle){
-		String epMapsBusinessPath = functionalUtil.getDeploymentUrl().toString() + "/url/HomeSite/" + key + "/" + EP_MAPS_BUSINESS_PATH;
-		
-		//TODO:JK: implement me
-		
-		return(false);
-	}
-	
-	/**
-	 * Creates an xpath selector of specified binder, page and structure.
-	 * 
-	 * @param binder
-	 * @param page
-	 * @param structure
-	 * @return
-	 */
-	public String createSelector(String binder, String page, String structure){
-		if(binder == null || binder.isEmpty())
-			return(null);
-		
-		/*  */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=");
-		selectorBuffer.append("//ul//li//div[contains(@class, 'b_tree_item_wrapper')]//a//span[text()='")
-		.append(binder)
-		.append("']");
-		
-		if(page != null && !page.isEmpty()){
-			selectorBuffer.append("/../../../../..//ul//li");
-			selectorBuffer.append("//div[contains(@class, 'b_tree_item_wrapper')]//a//span[text()='")
-			.append(page)
-			.append("']");
-			
-			if(structure != null && !structure.isEmpty()){
-				selectorBuffer.append("/../../../../..//ul//li");
-				selectorBuffer.append("//div[contains(@class, 'b_tree_item_wrapper')]//a//span[text()='")
-				.append(structure)
-				.append("']");
-			}
-		}
-
-		selectorBuffer.append("/..");
-		
-		return(selectorBuffer.toString());
-	}
-	
-	/**
-	 * Creates the specified elements (binder, page, structure) 
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param page
-	 * @param structure
-	 * @return true on success
-	 */
-	public boolean createElements(Selenium browser, String binder, String page, String structure){
-		if(!binderExists(browser, binder)){
-			createDefaultBinder(browser, binder, null);
-			
-			if(page != null){
-				createPage(browser, binder, page, ArtefactDisplay.THUMBNAILS, null);
-			
-				if(structure != null){
-					createStructure(browser, binder, page, structure, null);
-				}
-			}
-		}else{
-			if(!pageExists(browser, binder, page)){
-				createPage(browser, binder, page, ArtefactDisplay.THUMBNAILS, null);
-				
-				if(structure != null){
-					createStructure(browser, binder, page, structure, null);
-				}
-			}else{
-				if(structure != null && !structureExists(browser, binder, page, structure)){
-					createStructure(browser, binder, page, structure, null);
-				}
-			}
-		}
-		
-		return(true);
-	}
-	
-	/**
-	 * Checks if binder containing title exists.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @return true if binder containing title exists else false.
-	 */
-	public boolean binderExists(Selenium browser, String title){
-		if(!functionalUtil.openSite(browser, OlatSite.HOME))
-			return(false);
-		
-		if(!functionalHomeSiteUtil.openActionByMenuTree(browser, EPortfolioAction.MY_BINDERS))
-			return(false);
-		
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//h4[text()='")
-		.append(title)
-		.append("']/..//a[contains(@class, '")
-		.append(getOpenBinderCss())
-		.append("')]");
-		
-		if(browser.isElementPresent(selectorBuffer.toString())){
-			return(true);
-		}else{
-			return(false);
-		}
-	}
-	
-	/**
-	 * Opens a specified binder.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @return true on success
-	 */
-	public boolean openBinder(Selenium browser, String title){
-		if(!functionalUtil.openSite(browser, OlatSite.HOME))
-			return(false);
-		
-		if(!functionalHomeSiteUtil.openActionByMenuTree(browser, EPortfolioAction.MY_BINDERS, false))
-			return(false);
-		
-		functionalUtil.idle(browser);
-		
-		/* wait until tree has loaded */
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//li[contains(@class, '")
-		.append(functionalUtil.getTreeNodeLoadingCss())
-		.append("')]");
-		functionalUtil.waitForPageToUnloadElement(browser, locatorBuffer.toString());
-		
-		/* select binder */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//h4[text()='")
-		.append(title)
-		.append("']/..//a[contains(@class, '")
-		.append(getOpenBinderCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		//FIXME:JK: visit pages
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens the editor of open binder.
-	 * 
-	 * @param browser
-	 * @return true on success
-	 */
-	public boolean openEditor(Selenium browser){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getEditLinkCss())
-		.append("')]//a");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Creates a binder.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @return true on success
-	 */
-	public boolean createDefaultBinder(Selenium browser, String title, String description){
-		if(!functionalUtil.openSite(browser, OlatSite.HOME))
-			return(false);
-		
-		if(!functionalHomeSiteUtil.openActionByMenuTree(browser, EPortfolioAction.MY_BINDERS))
-			return(false);
-		
-		functionalUtil.idle(browser);
-		
-		/* open add binder dialog */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getCreateBinderCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("//a[contains(@class, '")
-		.append(getCreateDefaultBinderCss())
-		.append("')]");
-
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-	
-		/* fill in dialog - title */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getAddBinderBoxCss())
-		.append("')]//form//input[@type='text']");
-		
-		browser.type(selectorBuffer.toString(), title);
-		
-		/* fill in dialog - description */
-		functionalUtil.typeMCE(browser, description);
-		
-		
-		/* fill in dialog - save */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getAddBinderBoxCss())
-		.append("')]//form//button)[last()]");
-		
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Checks if the specified page exists.
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param title
-	 * @return
-	 */
-	public boolean pageExists(Selenium browser, String binder, String title){
-		if(!openBinder(browser, binder))
-			return(false);
-		
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getEPortfolioTableOfContentsCss())
-		.append("')]//ul//li[contains(@class, '")
-		.append(getEPortfolioTOCLevel1Css())
-		.append("')]//a//span[contains(text(), '")
-		.append(title)
-		.append("')]");
-		
-		if(browser.isElementPresent(selectorBuffer.toString())){
-			return(true);
-		}else{
-			return(false);
-		}
-	}
-	
-	/**
-	 * Opens the specified page.
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param title
-	 * @return
-	 */
-	public boolean openPage(Selenium browser, String binder, String title){
-		if(!openBinder(browser, binder))
-			return(false);
-		
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getEPortfolioTableOfContentsCss())
-		.append("')]//ul//li[contains(@class, '")
-		.append(getEPortfolioTOCLevel1Css())
-		.append("')]//a//span[contains(text(), '")
-		.append(title)
-		.append("')]/..");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Create a page in the specified binder.
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param title
-	 * @param display
-	 * @param description
-	 * @return true on success
-	 */
-	public boolean createPage(Selenium browser, String binder, String title, ArtefactDisplay display, String description){
-		return(createPage(browser, binder, title, display, description, true));
-	}
-	
-	/**
-	 * Create a page in the specified binder.
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param title
-	 * @param display
-	 * @param description
-	 * @param reopenBinder
-	 * @return
-	 */
-	public boolean createPage(Selenium browser, String binder, String title, ArtefactDisplay display, String description, boolean reopenBinder){
-		if(reopenBinder){
-			if(!openBinder(browser, binder))
-				return(false);
-		}
-		
-		functionalUtil.idle(browser);
-		
-		/* wait until tree has loaded */
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//div[contains(@class, '")
-		.append(functionalUtil.getTreeNodeLoadingCss())
-		.append("')]");
-		functionalUtil.waitForPageToUnloadElement(browser, locatorBuffer.toString());
-		
-		/* click add */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getAddLinkCss())
-		.append("')]");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		boolean modified = false;
-		
-		/* fill in wizard - title */
-		if(title != null){
-			selectorBuffer = new StringBuffer();
-
-			selectorBuffer.append("xpath=//div[contains(@class, '")
-			.append(getEPortfolioMapCss())
-			.append("')]//form//input[@type='text']");
-
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-			browser.type(selectorBuffer.toString(), title);
-			
-			modified = true;
-		}
-		
-		/* fill in wizard - display */
-		if(display != null){
-			selectorBuffer = new StringBuffer();
-
-			selectorBuffer.append("xpath=(//div[contains(@class, '")
-			.append(getEPortfolioMapCss())
-			.append("')]//form//input[@type='radio'])[")
-			.append(display.ordinal() + 1)
-			.append("]");
-
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-			browser.click(selectorBuffer.toString());
-			
-			modified = true;
-		}
-		
-		/* fill in wizard - description */
-		if(description != null){
-			functionalUtil.typeMCE(browser, description);
-			
-			modified = true;
-		}
-		
-		/* fill in wizard - save */
-		if(modified){
-			selectorBuffer = new StringBuffer();
-
-			selectorBuffer.append("xpath=//div[contains(@class, '")
-			.append(getEPortfolioMapCss())
-			.append("')]//form//button[last() and contains(@class, '")
-			.append(functionalUtil.getButtonDirtyCss())
-			.append("')]");
-
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-			browser.click(selectorBuffer.toString());
-			
-			functionalUtil.waitForPageToLoad(browser);
-		}
-		
-		return(true);
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param oldName
-	 * @param newName
-	 * @return
-	 */
-	public boolean renamePage(Selenium browser, String binder, String oldName, String newName){
-		functionalUtil.idle(browser);
-		
-		/* wait until tree has loaded */
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//li[contains(@class, '")
-		.append(functionalUtil.getTreeNodeLoadingCss())
-		.append("')]");
-		functionalUtil.waitForPageToUnloadElement(browser, locatorBuffer.toString());
-
-		/* select binder */
-		String binderSelector = createSelector(binder, null, null);
-		
-		functionalUtil.waitForPageToLoadElement(browser, binderSelector);
-		browser.click(binderSelector);
-		
-		/* select page */
-		String pageSelector = createSelector(binder, oldName, null);
-		
-		functionalUtil.waitForPageToLoadElement(browser, pageSelector);
-		browser.click(pageSelector);
-		
-		/* rename */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getEPortfolioMapCss())
-		.append("')]//form//input[@type='text']");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), newName);
-		
-		/* save */
-		selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getEPortfolioMapCss())
-		.append("')]//form//button)[last() and contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Checks if structural element exists.
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param page
-	 * @param title
-	 * @return true if structural element exists otherwise false
-	 */
-	public boolean structureExists(Selenium browser, String binder, String page, String title){
-		if(!openBinder(browser, binder))
-			return(false);
-		
-		
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("//div[contains(@class, '")
-		.append(getEPortfolioTableOfContentsCss())
-		.append("')]//ul//li");
-
-		//page = page.replaceAll("\\\\", "&92;");
-		page = page.replaceAll("/", "\\/");
-
-		//title = title.replaceAll("\\\\", "&92;");
-		title = title.replaceAll("/", "\\/");
-				
-		VelocityContext context = new VelocityContext();
-
-		context.put("tocSelector", selectorBuffer.toString());
-		context.put("level1", getEPortfolioTOCLevel1Css());
-		context.put("level2", getEPortfolioTOCLevel2Css());
-		context.put("page", page);
-		context.put("structure", title);
-
-		VelocityEngine engine = null;
-
-		engine = new VelocityEngine();
-
-		StringWriter sw = new StringWriter();
-
-		try {
-			engine.evaluate(context, sw, "eportfolioTOCStructurePosition", FunctionalEPortfolioUtil.class.getResourceAsStream("EPortfolioTOCStructurePosition.vm"));
-
-			Integer i = new Integer(browser.getEval(sw.toString()));
-
-			if(i.intValue() != -1){
-				return(true);
-			}else{
-				return(false);
-			}
-
-		} catch (ParseErrorException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} catch (MethodInvocationException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} catch (ResourceNotFoundException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} catch (IOException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-
-		return(false);
-	}
-	
-	/**
-	 * Creates the specified structural element
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param page
-	 * @param title
-	 * @param description
-	 * @return true on success
-	 */
-	public boolean createStructure(Selenium browser, String binder, String page,
-			String title, String description){
-		if(!openBinder(browser, binder))
-			return(false);
-		
-		/* open editor */
-		openEditor(browser);
-		
-		/* wait until tree has loaded */
-		functionalUtil.idle(browser);
-		
-//		StringBuffer locatorBuffer = new StringBuffer();
-//		
-//		locatorBuffer.append("xpath=//div[contains(@class, '")
-//		.append(functionalUtil.getTreeNodeLoadingCss())
-//		.append("')]");
-//		functionalUtil.waitForPageToUnloadElement(browser, locatorBuffer.toString());
-		
-		/* select page and click create structure */
-		selectTree(browser, binder, page, null);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getAddLinkCss())
-		.append("') and contains(@class, '")
-		.append(getStructIconCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		/* title */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getEPortfolioMapCss())
-		.append("')]//input[@type='text']");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), title);
-				
-		/* description */
-		functionalUtil.typeMCE(browser, getEPortfolioMapCss(), description);
-		
-		/* save */
-		selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getEPortfolioMapCss())
-		.append("')]//button[last() and contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/*  */
-		functionalUtil.waitForPageToLoadElement(browser, createSelector(binder, page, title));
-		
-		return(true);
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param page
-	 * @param structure
-	 * @param artefact
-	 * @return
-	 */
-	public boolean artefactExists(Selenium browser, String binder, String page, String structure, String artefact){
-		if(!openPage(browser, binder, page)){
-			return(false);
-		}
-		
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getEPortfolioMapCss())
-		.append("')]");
-		
-		if(structure != null){
-			selectorBuffer.append("//div[contains(@class, '")
-			.append(getEPortfolioStructureCss())
-			.append("')]//h5[text()='")
-			.append(structure)
-			.append("']/..");
-		}
-		
-		/* create selector of typical artefact */
-		StringBuffer artefactBuffer = new StringBuffer(selectorBuffer);
-		
-		artefactBuffer.append("//div[contains(@class, '")
-		.append(getEPortfolioArtefactCss())
-		.append("')]//h4[text()='")
-		.append(artefact)
-		.append("']");
-		
-		/* create selector of liveblog artefact */
-		StringBuffer liveblogBuffer = new StringBuffer(selectorBuffer);
-		
-		liveblogBuffer.append("//div[contains(@class, '")
-		.append(getEPortfolioArtefactCss())
-		.append("')]//h3[text()='")
-		.append(artefact)
-		.append("']");
-		
-		/* check */
-		if(browser.isElementPresent(artefactBuffer.toString()) || browser.isElementPresent(liveblogBuffer.toString())){
-			return(true);
-		}else{
-			return(false);
-		}
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param page
-	 * @param structure
-	 * @param artefact
-	 * @return
-	 */
-	public boolean openArtefact(Selenium browser, String binder, String page, String structure, String artefact){
-		if(!openPage(browser, binder, page))
-			return(false);
-		
-		functionalUtil.idle(browser);
-		
-		/*  */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("//div[contains(@class, '")
-		.append(getEPortfolioArtefactCss())
-		.append("')]//h4[text()='")
-		.append(artefact)
-		.append("']/..//a[contains(@class, '")
-		.append(getEPortfolioArtefactDetailsCss())
-		.append("')]");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-
-	/**
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public boolean closeArtefact(Selenium browser){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, 'b_link_close')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToUnloadElement(browser, selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Clicks the edit link.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	private boolean openEditLink(Selenium browser){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getHomePortalEditLinkCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Fills in the open wizard's title and description fields. 
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @return true on success
-	 */
-	protected boolean fillInTitleAndDescription(Selenium browser, String title, String description){
-		functionalUtil.idle(browser);
-		
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//form//div[contains(@class, '")
-		.append(getArtefactWizardCss())
-		.append("')]//input[@type='text']");
-		
-		functionalUtil.waitForPageToLoadElement(browser, locatorBuffer.toString());
-		
-		browser.type(locatorBuffer.toString(), title);
-		
-		functionalUtil.typeMCE(browser, functionalUtil.getWizardCss(), description);
-		
-		functionalUtil.clickWizardNext(browser, getArtefactWizardCss());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Fills in the open wizard's tags.
-	 * 
-	 * @param browser
-	 * @param tags
-	 * @return
-	 */
-	protected boolean fillInTags(Selenium browser, String[] tags){
-		return(fillInTags(browser, tags, true));
-	}
-	
-	/**
-	 * Fills in the open wizard's tags.
-	 * 
-	 * @param browser
-	 * @param tags
-	 * @return
-	 */
-	//TODO:JK: implement type in tags switch
-	protected boolean fillInTags(Selenium browser, String[] tags, boolean typeTags){
-		
-		for(String tag: tags){
-			functionalUtil.idle(browser);
-			
-			StringBuffer locatorBuffer = new StringBuffer();
-			
-			locatorBuffer.append("xpath=(//div[contains(@class, '")
-			.append(getArtefactWizardCss())
-			.append("')]//li[contains(@class, 'tagit-new')]//input[@type='text'])");
-			
-			functionalUtil.waitForPageToLoadElement(browser, locatorBuffer.toString());
-			
-			browser.focus(locatorBuffer.toString());
-			browser.type(locatorBuffer.toString(), tag);
-			
-			browser.focus(locatorBuffer.toString());
-			browser.fireEvent(locatorBuffer.toString(), "changed");
-			
-			browser.keyDown(locatorBuffer.toString(), ",");
-			browser.keyPress(locatorBuffer.toString(), ",");
-			browser.keyUp(locatorBuffer.toString(), ",");
-			browser.fireEvent(locatorBuffer.toString(), "changed");
-			browser.fireEvent(locatorBuffer.toString(), "blur");
-			
-			/* verify */
-			locatorBuffer = new StringBuffer();
-			
-			locatorBuffer.append("xpath=(//div[contains(@class, '")
-			.append(getArtefactWizardCss())
-			.append("')]//span[contains(@class, 'tagit-label') and text()='" + tag + "']");
-			
-			//TODO:JK: implement me
-		}
-		
-		functionalUtil.clickWizardNext(browser, getArtefactWizardCss());
-		
-		return(true);
-	}
-	
-	/**
-	 * Selects a tree node.
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param page
-	 * @param structure
-	 * @return
-	 */
-	protected boolean selectTree(Selenium browser, String binder, String page, String structure){
-		/* binder */
-		if(binder == null || binder.isEmpty())
-			return(false);
-		
-		functionalUtil.idle(browser);
-		
-		String selector = createSelector(binder, null, null);
-		
-		/* click selector */
-		functionalUtil.waitForPageToLoadElement(browser, selector);
-
-		browser.click(selector);
-
-		StringBuffer locatorBuffer = new StringBuffer();
-
-		locatorBuffer.append("xpath=//ul//li//div[contains(@class, 'b_tree_item_wrapper')]//a//span[contains(text(), '")
-		.append(binder)
-		.append("')]");
-
-		functionalUtil.waitForPageToLoadElement(browser, locatorBuffer.toString());
-		
-		/* page */
-		if(page != null && !page.isEmpty()){
-			functionalUtil.idle(browser);
-			
-			selector = createSelector(binder, page, null);
-		
-			/* click selector */
-			functionalUtil.waitForPageToLoadElement(browser, selector);
-	
-			browser.click(selector);
-			
-			locatorBuffer = new StringBuffer();
-	
-			locatorBuffer.append("xpath=//ul//li//div[contains(@class, 'b_tree_item_wrapper')]//a//span[contains(text(), '")
-			.append(page)
-			.append("')]");
-	
-			functionalUtil.waitForPageToLoadElement(browser, locatorBuffer.toString());
-			
-			/* structure */
-			if(structure != null && !structure.isEmpty()){
-				functionalUtil.idle(browser);
-				
-				selector = createSelector(binder, page, structure);
-		
-				/* wait until tree has loaded */
-//				StringBuffer locatorBuffer = new StringBuffer();
-//				
-//				locatorBuffer.append("xpath=//li[contains(@class, '")
-//				.append(functionalUtil.getTreeNodeLoadingCss())
-//				.append("')]");
-//				functionalUtil.waitForPageToUnloadElement(browser, locatorBuffer.toString());
-				
-				/* click selector */
-				functionalUtil.waitForPageToLoadElement(browser, selector);
-		
-				browser.click(selector);
-		
-				locatorBuffer = new StringBuffer();
-		
-				locatorBuffer.append("xpath=//ul//li//div[contains(@class, 'b_tree_item_wrapper')]//a//span[contains(text(), '")
-				.append(structure)
-				.append("')]");
-		
-				functionalUtil.waitForPageToLoadElement(browser, locatorBuffer.toString());
-			}
-		}
-		
-		return(true);
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param page
-	 * @param structure
-	 * @param content
-	 * @param title
-	 * @param description
-	 * @param tags
-	 * @param typeTags
-	 * @return
-	 */
-	private boolean addTextArtefactFillInWizard(Selenium browser, String binder, String page, String structure,
-			String content, String title, String description, String[] tags, boolean typeTags, boolean treeSelect){
-		/* fill in wizard - content */
-		functionalUtil.typeMCE(browser, getArtefactWizardCss(), content);
-		
-		functionalUtil.clickWizardNext(browser, getArtefactWizardCss());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		/* fill in wizard - title & description */
-		fillInTitleAndDescription(browser, title, description);
-		
-		/* fill in wizard - tags */
-		fillInTags(browser, tags, typeTags);
-		
-		/* fill in wizard - select destination */
-		if(binder != null && treeSelect){
-			selectTree(browser, binder, page, structure);
-		}
-		
-		/* click finish */
-		functionalUtil.clickWizardFinish(browser, getArtefactWizardCss());
-		
-		return(true);
-	}
-	
-	/**
-	 * Add a text artefact to a e-portfolio.
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param page
-	 * @param structure
-	 * @param content
-	 * @param title
-	 * @param description
-	 * @param tags
-	 * @return
-	 */
-	public boolean addTextArtefact(Selenium browser, String binder, String page, String structure,
-			String content, String title, String description, String[] tags){
-		/* navigate to the right place */
-		if(!functionalUtil.openSite(browser, OlatSite.HOME))
-			return(false);
-		
-		if(!functionalHomeSiteUtil.openActionByMenuTree(browser, EPortfolioAction.MY_ARTIFACTS))
-			return(false);
-		
-		functionalUtil.idle(browser);
-		
-		/* open wizard */
-		openEditLink(browser);
-		
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getAddTextArtefactCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, locatorBuffer.toString());
-		browser.click(locatorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		/* wizard */
-		return(addTextArtefactFillInWizard(browser, binder, page, structure,
-					content, title, description, tags, true, true));
-	}
-
-	/**
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param page
-	 * @param structure
-	 * @param file
-	 * @param title
-	 * @param description
-	 * @param tags
-	 * @param typeTags
-	 * @return
-	 * @throws MalformedURLException
-	 */
-	private boolean uploadFileArtefactFillInWizard(Selenium browser, String binder, String page, String structure,
-			URI file, String title, String description, String[] tags, boolean typeTags, boolean treeSelect) throws MalformedURLException{
-		functionalUtil.idle(browser);
-		
-		/* fill in wizard - file */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form//div[contains(@class, '")
-		.append(getArtefactWizardCss())
-		.append("')]//input[@type='file']");
-		
-		browser.focus(selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), file.toURL().getPath());
-		//browser.attachFile(locatorBuffer.toString(), file.toURL().toString());
-		
-		//TODO:JK: find a solution for IE
-		/* IE may don't like the following script */
-		//browser.runScript("$(\"form ." + functionalUtil.getWizardCss() + " input[type='file']\").trigger(\"change\")");
-
-//		functionalUtil.waitForPageToLoad(browser);
-		
-		functionalUtil.clickWizardNext(browser, getArtefactWizardCss());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		/* fill in wizard - title & description */
-		fillInTitleAndDescription(browser, title, description);
-		
-		/* fill in wizard - tags */
-		fillInTags(browser, tags, typeTags);
-		
-		/* fill in wizard - select binder path */
-		if(binder != null && treeSelect){
-			selectTree(browser, binder, page, structure);
-		}
-		
-		/* click finish */
-		functionalUtil.clickWizardFinish(browser, getArtefactWizardCss());
-		
-		
-		return(true);
-	}
-	
-	/**
-	 * Upload a file artefact to a e-portfolio.
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param page
-	 * @param structure
-	 * @param file
-	 * @param title
-	 * @param description
-	 * @param tags
-	 * @return
-	 * @throws MalformedURLException
-	 */
-	public boolean uploadFileArtefact(Selenium browser, String binder, String page, String structure,
-			URI file, String title, String description, String[] tags) throws MalformedURLException{
-		if(!functionalUtil.openSite(browser, OlatSite.HOME))
-			return(false);
-		
-		if(!functionalHomeSiteUtil.openActionByMenuTree(browser, EPortfolioAction.MY_ARTIFACTS))
-			return(false);
-		
-		/* open wizard */
-		openEditLink(browser);
-		
-		functionalUtil.idle(browser);
-		
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getUploadFileArtefactCss())
-		.append("')]");
-
-		functionalUtil.waitForPageToLoadElement(browser, locatorBuffer.toString());
-		browser.click(locatorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-		
-		/* wizard */
-		return(uploadFileArtefactFillInWizard(browser, binder, page, structure,
-				file, title, description, tags, true, true));
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param page
-	 * @param structure
-	 * @param title
-	 * @param description
-	 * @param tags
-	 * @param typeTags
-	 * @return
-	 */
-	private boolean createLearningJournalFillInWizard(Selenium browser, String binder, String page, String structure,
-			String title, String description, String[] tags, boolean typeTags, boolean treeSelect){
-		
-		/* fill in wizard - title & description */
-		fillInTitleAndDescription(browser, title, description);
-		
-		/* fill in wizard - tags */
-		fillInTags(browser, tags, typeTags);
-		
-		/* fill in wizard - select binder path */
-		if(binder != null && treeSelect){
-			selectTree(browser, binder, page, structure);
-		}
-		
-		/* click finish */
-		functionalUtil.clickWizardFinish(browser, getArtefactWizardCss());
-		
-		return(true);
-	}
-	
-	/**
-	 * Create a learnig journal for a e-portfolio.
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param page
-	 * @param structure
-	 * @param title
-	 * @param description
-	 * @param tags
-	 * @return
-	 */
-	public boolean createLearningJournal(Selenium browser, String binder, String page, String structure,
-			String title, String description, String[] tags){
-		if(!functionalUtil.openSite(browser, OlatSite.HOME))
-			return(false);
-		
-		if(!functionalHomeSiteUtil.openActionByMenuTree(browser, EPortfolioAction.MY_ARTIFACTS))
-			return(false);
-		
-		/* open wizard */
-		openEditLink(browser);
-		
-		functionalUtil.idle(browser);
-		
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getCreateLearningJournalCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, locatorBuffer.toString());
-		browser.click(locatorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(createLearningJournalFillInWizard(browser, binder, page, structure,
-				title, description, tags, true, true));
-	}
-
-	/**
-	 * Creates a new artefact using link wizard within binder.
-	 * 
-	 * @param browser
-	 * @param binder
-	 * @param page
-	 * @param structure
-	 * @param alias
-	 * @param content
-	 * @param title
-	 * @param description
-	 * @param tags
-	 * @return
-	 * @throws MalformedURLException
-	 */
-	public boolean createArtefact(Selenium browser, String binder, String page, String structure,
-			ArtefactAlias alias, Object content,
-			String title, String description, String[] tags) throws MalformedURLException{
-		if(!openBinder(browser, binder))
-			return(false);
-		
-		openEditor(browser);
-		
-		functionalUtil.idle(browser);
-		
-		/* select page or structure */
-		selectTree(browser, binder, page, structure);
-		
-		/* open wizard by clicking link link */
-		StringBuilder selectorBuffer = new StringBuilder();
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getAddLinkCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		/* click add artefact */
-		openEditLink(browser);
-		
-		functionalUtil.idle(browser);
-		
-		/* click appropriate artefact type */
-		selectorBuffer = new StringBuilder();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(alias.getAddLinkCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToLoad(browser);
-		
-		/* fill in wizard */
-		switch(alias){
-		case TEXT:
-		{
-			addTextArtefactFillInWizard(browser, binder, page, structure,
-					(String) content, title, description, tags, false, false);
-		}
-		break;
-		case FILE:
-		{
-			uploadFileArtefactFillInWizard(browser, binder, page, structure,
-					(URI) content, title, description, tags, false, false);
-		}
-		break;
-		case LEARNING_JOURNAL:
-		{
-			createLearningJournalFillInWizard(browser, binder, page, structure,
-					title, description, tags, false, false);
-		}
-		break;
-		}
-
-		functionalUtil.idle(browser);
-		return true;
-	}
-	
-	public FunctionalUtil getFunctionalUtil() {
-		return functionalUtil;
-	}
-
-	public void setFunctionalUtil(FunctionalUtil functionalUtil) {
-		this.functionalUtil = functionalUtil;
-	}
-
-	public FunctionalHomeSiteUtil getFunctionalHomeSiteUtil() {
-		return functionalHomeSiteUtil;
-	}
-
-	public void setFunctionalHomeSiteUtil(
-			FunctionalHomeSiteUtil functionalHomeSiteUtil) {
-		this.functionalHomeSiteUtil = functionalHomeSiteUtil;
-	}
-	
-	public String getEPortfolioCss() {
-		return eportfolioCss;
-	}
-
-	public void setEPortfolioCss(String eportfolioCss) {
-		this.eportfolioCss = eportfolioCss;
-	}
-
-	public String getEPortfolioMapCss() {
-		return eportfolioMapCss;
-	}
-	
-	public void setEPortfolioMapCss(String eportfolioMapCss) {
-		this.eportfolioMapCss = eportfolioMapCss;
-	}	
-
-	public String getEPortfolioPageCss() {
-		return eportfolioPageCss;
-	}
-
-	public void setEPortfolioPageCss(String eportfolioPageCss) {
-		this.eportfolioPageCss = eportfolioPageCss;
-	}
-
-	public String getEPortfolioStructureCss() {
-		return eportfolioStructureCss;
-	}
-
-	public void setEPortfolioStructureCss(String eportfolioStructureCss) {
-		this.eportfolioStructureCss = eportfolioStructureCss;
-	}
-
-	public String getEPortfolioLinkCss() {
-		return eportfolioLinkCss;
-	}
-
-	public void setEPortfolioLinkCss(String eportfolioLinkCss) {
-		this.eportfolioLinkCss = eportfolioLinkCss;
-	}
-
-	public String getEPortfolioArtefactCss() {
-		return eportfolioArtefactCss;
-	}
-
-	public void setEPortfolioArtefactCss(String eportfolioArtefactCss) {
-		this.eportfolioArtefactCss = eportfolioArtefactCss;
-	}
-
-	public String getEPortfolioArtefactDetailsCss() {
-		return eportfolioArtefactDetailsCss;
-	}
-
-	public void setEPortfolioArtefactDetailsCss(String eportfolioArtefactDetailsCss) {
-		this.eportfolioArtefactDetailsCss = eportfolioArtefactDetailsCss;
-	}
-
-	public String getHomePortalEditLinkCss() {
-		return homePortalEditLinkCss;
-	}
-
-	public void setHomePortalEditLinkCss(String homePortalEditLinkCss) {
-		this.homePortalEditLinkCss = homePortalEditLinkCss;
-	}
-	
-	public String getAddTextArtefactCss() {
-		return addTextArtefactCss;
-	}
-
-	public void setAddTextArtefactCss(String addTextArtefactCss) {
-		this.addTextArtefactCss = addTextArtefactCss;
-	}
-
-	public String getUploadFileArtefactCss() {
-		return uploadFileArtefactCss;
-	}
-
-	public void setUploadFileArtefactCss(String uploadFileArtefactCss) {
-		this.uploadFileArtefactCss = uploadFileArtefactCss;
-	}
-
-	public String getCreateLearningJournalCss() {
-		return createLearningJournalCss;
-	}
-
-	public void setCreateLearningJournalCss(String createLearningJournalCss) {
-		this.createLearningJournalCss = createLearningJournalCss;
-	}
-
-	public String getAddBinderBoxCss() {
-		return addBinderBoxCss;
-	}
-
-	public void setAddBinderBoxCss(String addBinderBoxCss) {
-		this.addBinderBoxCss = addBinderBoxCss;
-	}
-
-	public String getCreateBinderCss() {
-		return createBinderCss;
-	}
-
-	public void setCreateBinderCss(String createBinderCss) {
-		this.createBinderCss = createBinderCss;
-	}
-
-	public String getCreateDefaultBinderCss() {
-		return createDefaultBinderCss;
-	}
-
-	public void setCreateDefaultBinderCss(String createDefaultBinderCss) {
-		this.createDefaultBinderCss = createDefaultBinderCss;
-	}
-
-	public String getCreateTemplateBinderCss() {
-		return createTemplateBinderCss;
-	}
-
-	public void setCreateTemplateBinderCss(String createTemplateBinderCss) {
-		this.createTemplateBinderCss = createTemplateBinderCss;
-	}
-
-	public String getOpenBinderCss() {
-		return openBinderCss;
-	}
-
-	public void setOpenBinderCss(String openBinderCss) {
-		this.openBinderCss = openBinderCss;
-	}
-
-	public String getEditLinkCss() {
-		return editLinkCss;
-	}
-
-
-	public void setEditLinkCss(String editLinkCss) {
-		this.editLinkCss = editLinkCss;
-	}
-
-
-	public String getEPortfolioTableOfContentsCss() {
-		return eportfolioTableOfContentsCss;
-	}
-
-	public void setEPortfolioTableOfContentsCss(String eportfolioTableOfContentsCss) {
-		this.eportfolioTableOfContentsCss = eportfolioTableOfContentsCss;
-	}
-
-	public String getEPortfolioTOCLevel1Css() {
-		return eportfolioTOCLevel1Css;
-	}
-
-	public void setEPortfolioTOCLevel1Css(String eportfolioTOCLevel1Css) {
-		this.eportfolioTOCLevel1Css = eportfolioTOCLevel1Css;
-	}
-
-	public String getEPortfolioTOCLevel2Css() {
-		return eportfolioTOCLevel2Css;
-	}
-
-	public void setEPortfolioTOCLevel2Css(String eportfolioTOCLevel2Css) {
-		this.eportfolioTOCLevel2Css = eportfolioTOCLevel2Css;
-	}
-
-	public String getAddLinkCss() {
-		return addLinkCss;
-	}
-
-	public void setAddLinkCss(String addLinkCss) {
-		this.addLinkCss = addLinkCss;
-	}
-
-	public String getPageTabsCss() {
-		return pageTabsCss;
-	}
-
-	public void setPageTabsCss(String pageTabsCss) {
-		this.pageTabsCss = pageTabsCss;
-	}
-
-
-	public String getPageIconCss() {
-		return pageIconCss;
-	}
-
-
-	public void setPageIconCss(String pageIconCss) {
-		this.pageIconCss = pageIconCss;
-	}
-
-
-	public String getStructIconCss() {
-		return structIconCss;
-	}
-
-
-	public void setStructIconCss(String structIconCss) {
-		this.structIconCss = structIconCss;
-	}
-
-	public String getArtefactCss() {
-		return artefactCss;
-	}
-
-	public void setArtefactCss(String artefactCss) {
-		this.artefactCss = artefactCss;
-	}
-
-	public String getTagIconCss() {
-		return tagIconCss;
-	}
-
-	public void setTagIconCss(String tagIconCss) {
-		this.tagIconCss = tagIconCss;
-	}
-
-	public String getArtefactWizardCss() {
-		return artefactWizardCss;
-	}
-
-	public void setArtefactWizardCss(String artefactWizardCss) {
-		this.artefactWizardCss = artefactWizardCss;
-	}
-}
diff --git a/src/test/java/org/olat/util/FunctionalGroupsSiteUtil.java b/src/test/java/org/olat/util/FunctionalGroupsSiteUtil.java
deleted file mode 100644
index 01c9f25e21a98befd443dc426393417927654c6b..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/FunctionalGroupsSiteUtil.java
+++ /dev/null
@@ -1,1420 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util;
-
-import org.apache.commons.lang.ArrayUtils;
-import org.olat.util.FunctionalUtil.OlatSite;
-
-import com.thoughtworks.selenium.Selenium;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-public class FunctionalGroupsSiteUtil {
-	
-	public final static String GROUP_ICON_CSS = "b_group_icon";
-	public final static String CREATE_GROUP_CSS = "o_sel_group_create";
-	
-	public final static String CREATE_GROUP_DIALOG_CSS = "o_sel_group_edit_group_form";
-	public final static String CREATE_GROUP_WAITING_LIST_VALUE = "create.form.enableWaitinglist";
-	public final static String CREATE_GROUP_AUTO_CLOSE_RANKS_VALUE = "create.form.enableAutoCloseRanks";
-	
-	public final static String SEARCH_GROUP_BUTTONS_CSS = "o_sel_group_search_groups_buttons";
-	
-	public final static String ADD_MEMBER_CSS = "o_sel_group_add_member";
-	public final static String IMPORT_MEMBERS_CSS = "o_sel_group_import_members";
-	
-	public final static String GROUP_IMPORT_1_WIZARD_CSS = "o_sel_group_import_1_wizard";
-	
-	public final static String USERSEARCH_AUTOCOMPLETION_CSS = "o_sel_usersearch_autocompletion";
-	public final static String USERSEARCH_SEARCHFORM_CSS = "o_sel_usersearch_searchform";
-	
-	public final static String GROUP_URL_CSS = "o_sel_group_url";
-	public final static String GROUP_VISITING_CARD_CSS = "o_sel_group_card_url";
-	
-	public final static String BOOKING_ADD_METHOD_CSS = "o_sel_accesscontrol_create";
-	public final static String BOOKING_ACCESS_CODE_ICON_CSS = "b_access_method_token_icon";
-	public final static String BOOKING_FREELY_AVAILABLE_ICON_CSS = "b_access_method_free_icon";
-	
-	public final static String GROUP_COACHES_NOT_VISIBLE_CSS = "o_sel_group_coaches_not_visible";
-	public final static String GROUP_PARTICIPANTS_NOT_VISIBLE_CSS = "o_sel_group_participants_not_visible";
-	public final static String GROUP_COACHES_CSS = "o_sel_group_coaches";
-	public final static String GROUP_PARTICIPANTS_CSS = "o_sel_group_participants";
-	
-	public final static String ACCESS_CONTROL_TOKEN_ENTRY_CSS = "o_sel_accesscontrol_token_entry";
-	
-	public final static String GROUP_VISITING_CARD_CONTENT_CSS = "o_visitingcard_content";
-	
-	public enum GroupsSiteAction {
-		MY_GROUPS("o_sel_MyGroups"),
-		PUBLISHED_GROUPS("o_sel_OpenGroups"),
-		GROUPS_ADMINISTRATION("o_sel_AdminGroups");
-		
-		private String actionCss;
-		
-		GroupsSiteAction(String actionCss){
-			setActionCss(actionCss);
-		}
-
-		public String getActionCss() {
-			return actionCss;
-		}
-
-		public void setActionCss(String actionCss) {
-			this.actionCss = actionCss;
-		}
-	}
-	
-	public enum MyGroupsTabs {
-		BOOKMARK,
-		ALL_GROUPS,
-		COACH,
-		SEARCH,
-	}
-
-	public enum PublishedGroupsTabs {
-		ALL_GROUPS,
-		SEARCH,
-	}
-	
-	public enum GroupOptions {
-		WAITING_LIST,
-		AUTO_MOVING_UP,
-	}
-	
-	public enum MyGroupSearchFields {
-		ID("o_sel_group_search_id_field"),
-		NAME("o_sel_group_search_name_field"),
-		COACH("o_sel_group_search_owner_field"),
-		DESCRIPTION("o_sel_group_search_description_field"),
-		COURSE_TITLE("o_sel_group_search_course_field ");
-		
-		private String cssClass;
-		
-		MyGroupSearchFields(String cssClass){
-			setCssClass(cssClass);
-		}
-
-		public String getCssClass() {
-			return cssClass;
-		}
-
-		public void setCssClass(String cssClass) {
-			this.cssClass = cssClass;
-		}
-	}
-	
-	public enum PublicGroupSearchFields {
-		ID("o_sel_group_search_id_field"),
-		NAME("o_sel_group_search_name_field"),
-		COACH("o_sel_group_search_owner_field"),
-		DESCRIPTION("o_sel_group_search_description_field");
-		
-		private String cssClass;
-		
-		PublicGroupSearchFields(String cssClass){
-			setCssClass(cssClass);
-		}
-
-		public String getCssClass() {
-			return cssClass;
-		}
-
-		public void setCssClass(String cssClass) {
-			this.cssClass = cssClass;
-		}
-	}
-	
-	public enum GroupTools {
-		INFORMATION,
-		EMAIL,
-		CALENDAR,
-		FOLDER,
-		FORUM,
-		CHAT,
-		WIKI,
-		EPORTFOLIO;
-	}
-	
-	public enum GroupsTabAction {
-		INFORMATION("o_news_icon"),
-		CALENDAR("o_calendar_icon"),
-		MEMBERS("b_group_icon"),
-		EMAIL("o_co_icon"),
-		FOLDER("o_bc_icon"),
-		FORUM("o_fo_icon"),
-		CHAT("o_chat_icon"),
-		WIKI("o_wiki_icon"),
-		PORTFOLIO("o_ep_icon"),
-		ADMINISTRATION("o_admin_icon"),
-		BOOKING("b_order_icon");
-		
-		private String iconCss;
-		
-		GroupsTabAction(String iconCss){
-			setIconCss(iconCss);
-		}
-
-		public String getIconCss() {
-			return iconCss;
-		}
-
-		public void setIconCss(String iconCss) {
-			this.iconCss = iconCss;
-		}
-	}
-	
-	public enum AdministrationTabs {
-		DESCRIPTION,
-		TOOLS,
-		MEMBERS,
-		COURSES,
-		PUBLISHING_AND_BOOKING;
-	}
-	
-	public enum MembersConfiguration {
-		CAN_SEE_COACHES("show_owners"),
-		CAN_SEE_PARTICIPANTS("show_participants"),
-		ALL_CAN_SEE_COACHES("open_owners"),
-		ALL_CAN_SEE_PARTICIPANTS("open_participants"),
-		ALL_CAN_DOWNLOAD_LIST_OF_MEMBERS("download_list");
-		
-		private String value;
-		
-		MembersConfiguration(String value){
-			setValue(value);
-		}
-
-		public String getValue() {
-			return value;
-		}
-
-		public void setValue(String value) {
-			this.value = value;
-		}
-	}
-
-	private String groupIconCss;
-	private String createGroupCss;
-	
-	private String createGroupDialogCss;
-	private String createGroupWaitingListValue;
-	private String createGroupAutoCloseRanksValue;
-	
-	private String searchGroupButtonsCss;
-	
-	private String addMemberCss;
-	private String importMembersCss;
-	
-	private String groupImport1WizardCss;
-	
-	private String usersearchAutocompletionCss;
-	private String usersearchSearchformCss;
-	
-	private String groupUrlCss;
-	private String groupVisitingCardCss;
-	
-	private String bookingAddMethodCss;
-	private String bookingAccessCodeIconCss;
-	private String bookingFreelyAvailableIconCss;
-	
-	private String groupCoachesNotVisibleCss;
-	private String groupParticipantsNotVisibleCss;
-	private String groupCoachesCss;
-	private String groupParticipantsCss;
-	
-	private String accessControlTokenEntryCss;
-
-	private String instantMessagingChatCss;
-	private String instantMessagingBodyCss;
-	private String instantMessagingAvatarCss;
-	private String instantMessagingFormCss;
-
-	private String groupVisitingCardContentCss;
-	
-	private FunctionalUtil functionalUtil;
-	
-	public FunctionalGroupsSiteUtil(FunctionalUtil functionalUtil){
-		this.groupIconCss = GROUP_ICON_CSS;
-		this.createGroupCss = CREATE_GROUP_CSS;
-		
-		this.createGroupDialogCss = CREATE_GROUP_DIALOG_CSS;
-		this.createGroupWaitingListValue = CREATE_GROUP_WAITING_LIST_VALUE;
-		this.createGroupAutoCloseRanksValue = CREATE_GROUP_AUTO_CLOSE_RANKS_VALUE;
-		
-		this.searchGroupButtonsCss = SEARCH_GROUP_BUTTONS_CSS;
-		
-		this.addMemberCss = ADD_MEMBER_CSS;
-		this.importMembersCss = IMPORT_MEMBERS_CSS;
-		
-		this.groupImport1WizardCss = GROUP_IMPORT_1_WIZARD_CSS;
-		
-		this.usersearchAutocompletionCss = USERSEARCH_AUTOCOMPLETION_CSS;
-		this.usersearchSearchformCss = USERSEARCH_SEARCHFORM_CSS;
-		
-		this.groupUrlCss = GROUP_URL_CSS;
-		this.groupVisitingCardCss = GROUP_VISITING_CARD_CSS;
-		
-		this.bookingAddMethodCss = BOOKING_ADD_METHOD_CSS;
-		this.bookingAccessCodeIconCss = BOOKING_ACCESS_CODE_ICON_CSS;
-		this.bookingFreelyAvailableIconCss = BOOKING_FREELY_AVAILABLE_ICON_CSS;
-		
-		this.groupCoachesNotVisibleCss = GROUP_COACHES_NOT_VISIBLE_CSS;
-		this.groupParticipantsNotVisibleCss = GROUP_PARTICIPANTS_NOT_VISIBLE_CSS;
-		this.groupCoachesCss = GROUP_COACHES_CSS;
-		this.groupParticipantsCss = GROUP_PARTICIPANTS_CSS;
-		
-		this.accessControlTokenEntryCss = ACCESS_CONTROL_TOKEN_ENTRY_CSS;
-		
-		this.instantMessagingChatCss = FunctionalInstantMessagingUtil.INSTANT_MESSAGING_CHAT_CSS;
-		this.instantMessagingBodyCss = FunctionalInstantMessagingUtil.INSTANT_MESSAGING_BODY_CSS;
-		this.instantMessagingAvatarCss = FunctionalInstantMessagingUtil.INSTANT_MESSAGING_AVATAR_CSS;
-		this.instantMessagingFormCss = FunctionalInstantMessagingUtil.INSTANT_MESSAGING_FORM_CSS;
-		
-		this.groupVisitingCardContentCss = GROUP_VISITING_CARD_CONTENT_CSS;
-		
-		this.functionalUtil = functionalUtil;
-	}
-	
-	/**
-	 * Browse the groups site's navigation.
-	 * 
-	 * @param browser
-	 * @param action
-	 * @return true on success otherwise false
-	 */
-	public boolean openActionByMenuTree(Selenium browser, Object action){
-		StringBuffer selectorBuffer;
-		
-		functionalUtil.idle(browser);
-		
-		if(action instanceof GroupsSiteAction){
-			selectorBuffer = new StringBuffer();
-			
-			selectorBuffer.append("xpath=//li[contains(@class, '")
-			.append(((GroupsSiteAction) action).getActionCss())
-			.append("')]//a[contains(@class, '")
-			.append(functionalUtil.getTreeLevel0Css())
-			.append("')]");
-		}else{
-			return(false);
-		}
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-
-	/**
-	 * Create a group with the given configuration.
-	 * 
-	 * @param browser
-	 * @param groupName
-	 * @param groupDescription
-	 * @param maxParticipants
-	 * @param options
-	 * @return
-	 */
-	public boolean createGroup(Selenium browser, String groupName, String groupDescription, int maxParticipants, GroupOptions[] options){
-		if(!functionalUtil.openSite(browser, OlatSite.GROUPS)){
-			return(false);
-		}
-		
-		if(!openActionByMenuTree(browser, GroupsSiteAction.MY_GROUPS)){
-			return(false);
-		}
-		
-		if(!functionalUtil.openContentSegment(browser, MyGroupsTabs.ALL_GROUPS.ordinal())){
-			return(false);
-		}
-		
-		/* click create */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getCreateGroupCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* fill in group name */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getCreateGroupDialogCss())
-		.append("')]//input[@type='text'])[1]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), groupName);
-		
-		/* fill in group description */
-		functionalUtil.typeMCE(browser, getCreateGroupDialogCss(), groupDescription);
-		
-		/* fill in max participants */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getCreateGroupDialogCss())
-		.append("')]//input[@type='text'])[2]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), Integer.toString(maxParticipants));
-		
-		/* set options */
-		if(options != null){
-			if(ArrayUtils.contains(options, GroupOptions.WAITING_LIST)){
-				functionalUtil.clickCheckbox(browser, null, getCreateGroupWaitingListValue());
-			}
-			
-			if(ArrayUtils.contains(options, GroupOptions.AUTO_MOVING_UP)){
-				functionalUtil.clickCheckbox(browser, null, getCreateGroupAutoCloseRanksValue());
-			}
-		}
-
-		/* click finish */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getCreateGroupDialogCss())
-		.append("')]//button[contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')])[last()]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens the given my group.
-	 * 
-	 * @param browser
-	 * @param groupName
-	 * @return
-	 */
-	public boolean openMyGroup(Selenium browser, String groupName){
-		if(!functionalUtil.openSite(browser, OlatSite.GROUPS)){
-			return(false);
-		}
-		
-		if(!openActionByMenuTree(browser, GroupsSiteAction.MY_GROUPS)){
-			return(false);
-		}
-		
-		if(!functionalUtil.openContentSegment(browser, MyGroupsTabs.SEARCH.ordinal())){
-			return(false);
-		}
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form//div[contains(@class, '")
-		.append(MyGroupSearchFields.NAME.getCssClass())
-		.append("')]//input[@type='text']");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.type(selectorBuffer.toString(), groupName);
-		
-		/* click search */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getSearchGroupButtonsCss())
-		.append("')]//button[contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* open the group */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//td//a/span[contains(@class, '")
-		.append(getGroupIconCss())
-		.append("')]/..");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens the given published group.
-	 * 
-	 * @param browser
-	 * @param groupName
-	 * @return
-	 */
-	public boolean openPublishedGroup(Selenium browser, String groupName){
-		if(!functionalUtil.openSite(browser, OlatSite.GROUPS)){
-			return(false);
-		}
-		
-		if(!openActionByMenuTree(browser, GroupsSiteAction.PUBLISHED_GROUPS)){
-			return(false);
-		}
-		
-		if(!functionalUtil.openContentSegment(browser, PublishedGroupsTabs.SEARCH.ordinal())){
-			return(false);
-		}
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form//div[contains(@class, '")
-		.append(PublicGroupSearchFields.NAME.getCssClass())
-		.append("')]//input[@type='text']");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.type(selectorBuffer.toString(), groupName);
-		
-		/* click search */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getSearchGroupButtonsCss())
-		.append("')]//button[contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* open the group */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//td//a/span[contains(@class, '")
-		.append(getGroupIconCss())
-		.append("')]/..");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Associates a GroupTools to a GroupsTabAction.
-	 * 
-	 * @param tool
-	 * @return
-	 */
-	public GroupsTabAction findGroupTabActionForTool(GroupTools tool){
-		GroupsTabAction action = null;
-		
-		switch(tool){
-		case CALENDAR:
-		{
-			action = GroupsTabAction.CALENDAR;
-		}
-		break;
-		case EMAIL:
-		{
-			action = GroupsTabAction.EMAIL;
-		}
-		break;
-		case FOLDER:
-		{
-			action = GroupsTabAction.FOLDER;
-		}
-		break;
-		case FORUM:
-		{
-			action = GroupsTabAction.FORUM;
-		}
-		break;
-		case CHAT:
-		{
-			action = GroupsTabAction.CHAT;
-		}
-		break;
-		case WIKI:
-		{
-			action = GroupsTabAction.WIKI;
-		}
-		break;
-		case EPORTFOLIO:
-		{
-			action = GroupsTabAction.PORTFOLIO;
-		}
-		break;
-		case INFORMATION:
-		{
-			action = GroupsTabAction.INFORMATION;
-		}
-		break;
-		}
-		
-		return(action);
-	}
-	
-	/**
-	 * Opens the appropriate action.
-	 * 
-	 * @param browser
-	 * @param action
-	 * @return
-	 */
-	public boolean openGroupsTabActionByMenuTree(Selenium browser, GroupsTabAction action){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//ul[contains(@class, '")
-		.append(functionalUtil.getTreeLevel1Css())
-		.append("')]//li//a[contains(@class, '")
-		.append(action.getIconCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Toggle specified tools.
-	 * 
-	 * @param browser
-	 * @param tools
-	 * @return
-	 */
-	public boolean applyTools(Selenium browser, GroupTools[] tools){
-		if(!openGroupsTabActionByMenuTree(browser, GroupsTabAction.ADMINISTRATION)){
-			return(false);
-		}
-		
-		if(!functionalUtil.openContentTab(browser, AdministrationTabs.TOOLS.ordinal())){
-			return(false);
-		}
-		
-		if(tools == null)
-			return(true);
-		
-		if(ArrayUtils.contains(tools, GroupTools.INFORMATION)){
-			functionalUtil.clickCheckbox(browser, null, Integer.toString(GroupTools.INFORMATION.ordinal()));
-			functionalUtil.idle(browser);
-		}
-		
-		if(ArrayUtils.contains(tools, GroupTools.EMAIL)){
-			functionalUtil.clickCheckbox(browser, null, Integer.toString(GroupTools.EMAIL.ordinal()));
-			functionalUtil.idle(browser);
-		}
-		
-		if(ArrayUtils.contains(tools, GroupTools.CALENDAR)){
-			functionalUtil.clickCheckbox(browser, null, Integer.toString(GroupTools.CALENDAR.ordinal()));
-			functionalUtil.idle(browser);
-		}
-		
-		if(ArrayUtils.contains(tools, GroupTools.FOLDER)){
-			functionalUtil.clickCheckbox(browser, null, Integer.toString(GroupTools.FOLDER.ordinal()));
-			functionalUtil.idle(browser);
-		}
-		
-		if(ArrayUtils.contains(tools, GroupTools.FORUM)){
-			functionalUtil.clickCheckbox(browser, null, Integer.toString(GroupTools.FORUM.ordinal()));
-			functionalUtil.idle(browser);
-		}
-		
-		if(ArrayUtils.contains(tools, GroupTools.CHAT)){
-			functionalUtil.clickCheckbox(browser, null, Integer.toString(GroupTools.CHAT.ordinal()));
-			functionalUtil.idle(browser);
-		}
-		
-		if(ArrayUtils.contains(tools, GroupTools.WIKI)){
-			functionalUtil.clickCheckbox(browser, null, Integer.toString(GroupTools.WIKI.ordinal()));
-			functionalUtil.idle(browser);
-		}
-		
-		if(ArrayUtils.contains(tools, GroupTools.EPORTFOLIO)){
-			functionalUtil.clickCheckbox(browser, null, Integer.toString(GroupTools.EPORTFOLIO.ordinal()));
-			functionalUtil.idle(browser);
-		}
-		
-		return(true);
-	}
-	
-	/**
-	 * Sets the information for members.
-	 * 
-	 * @param browser
-	 * @param information
-	 * @return
-	 */
-	public boolean applyInformationForMembers(Selenium browser, String information){
-		if(!openGroupsTabActionByMenuTree(browser, GroupsTabAction.ADMINISTRATION)){
-			return(false);
-		}
-		
-		if(!functionalUtil.openContentTab(browser, AdministrationTabs.TOOLS.ordinal())){
-			return(false);
-		}
-		
-		functionalUtil.typeMCE(browser, information);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//button[contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	
-	/**
-	 * Toggle members configuration.
-	 * 
-	 * @param browser
-	 * @param members
-	 * @return
-	 */
-	public boolean applyMembersConfiguration(Selenium browser, MembersConfiguration[] conf){
-		if(!openGroupsTabActionByMenuTree(browser, GroupsTabAction.ADMINISTRATION)){
-			return(false);
-		}
-		
-		if(!functionalUtil.openContentTab(browser, AdministrationTabs.MEMBERS.ordinal())){
-			return(false);
-		}
-		
-		if(conf == null){
-			return(true);
-		}
-		
-		if(ArrayUtils.contains(conf, MembersConfiguration.CAN_SEE_COACHES)){
-			functionalUtil.clickCheckbox(browser, null, MembersConfiguration.CAN_SEE_COACHES.getValue());
-			functionalUtil.idle(browser);
-		}
-		
-		if(ArrayUtils.contains(conf, MembersConfiguration.CAN_SEE_PARTICIPANTS)){
-			functionalUtil.clickCheckbox(browser, null, MembersConfiguration.CAN_SEE_PARTICIPANTS.getValue());
-			functionalUtil.idle(browser);
-		}
-
-		if(ArrayUtils.contains(conf, MembersConfiguration.ALL_CAN_SEE_COACHES)){
-			functionalUtil.clickCheckbox(browser, null, MembersConfiguration.ALL_CAN_SEE_COACHES.getValue());
-			functionalUtil.idle(browser);
-		}
-
-		if(ArrayUtils.contains(conf, MembersConfiguration.ALL_CAN_SEE_PARTICIPANTS)){
-			functionalUtil.clickCheckbox(browser, null, MembersConfiguration.ALL_CAN_SEE_PARTICIPANTS.getValue());
-			functionalUtil.idle(browser);
-		}
-		
-		if(ArrayUtils.contains(conf, MembersConfiguration.ALL_CAN_DOWNLOAD_LIST_OF_MEMBERS)){
-			functionalUtil.clickCheckbox(browser, null, MembersConfiguration.ALL_CAN_DOWNLOAD_LIST_OF_MEMBERS.getValue());
-			functionalUtil.idle(browser);
-		}
-		
-		return(true);
-	}
-	
-	/**
-	 * Adds a user as participant.
-	 * 
-	 * @param browser
-	 * @param userName
-	 * @return
-	 */
-	public boolean addUser(Selenium browser, String userName, boolean coach, boolean participant, boolean waitingList){
-		if(!openGroupsTabActionByMenuTree(browser, GroupsTabAction.ADMINISTRATION)){
-			return(false);
-		}
-		
-		if(!functionalUtil.openContentTab(browser, AdministrationTabs.MEMBERS.ordinal())){
-			return(false);
-		}
-		
-		if(userName == null){
-			return(true);
-		}
-		
-		/* click add User(s) */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getAddMemberCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* fill in user name */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//fieldset[contains(@class, '")
-		.append(getUsersearchSearchformCss())
-		.append("')]//input[@type='text'])[1]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), userName);
-		
-		/* click search */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//fieldset[contains(@class, '")
-		.append(getUsersearchSearchformCss())
-		.append("')]//a[contains(@class, '")
-		.append(functionalUtil.getButtonCss())
-		.append("')])[1]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* select first match */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//fieldset[contains(@class, '")
-		.append(getUsersearchSearchformCss())
-		.append("')]//tr//td//input[@type='checkbox'])[1]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* click next */
-		functionalUtil.clickWizardNext(browser, getGroupImport1WizardCss());
-		functionalUtil.clickWizardNext(browser, getGroupImport1WizardCss());
-		
-		/* grant rights */
-		StringBuffer templateBuffer = new StringBuffer();
-		
-		templateBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getGroupImport1WizardCss())
-		.append("')]//fieldset//tr//td//input[@type='checkbox'])");
-		
-		if(coach){
-			selectorBuffer = new StringBuffer(templateBuffer);
-			
-			selectorBuffer.append("[1]");
-			
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-			browser.click(selectorBuffer.toString());
-		}
-		
-		if(participant){
-			selectorBuffer = new StringBuffer(templateBuffer);
-			
-			selectorBuffer.append("[2]");
-			
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-			browser.click(selectorBuffer.toString());
-		}
-		
-		if(waitingList){
-			selectorBuffer = new StringBuffer(templateBuffer);
-			
-			selectorBuffer.append("[3]");
-			
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-			browser.click(selectorBuffer.toString());
-		}
-
-		functionalUtil.clickWizardNext(browser, getGroupImport1WizardCss());
-		
-		/* will send mail by clicking finish */
-		functionalUtil.clickWizardFinish(browser, getGroupImport1WizardCss());
-		
-		return(true);
-	}
-	
-	/**
-	 * Applies free booking to group.
-	 * 
-	 * @param browser
-	 * @param description
-	 * @return
-	 */
-	public boolean applyBookingFreelyAvailable(Selenium browser, String description){
-		if(!openGroupsTabActionByMenuTree(browser, GroupsTabAction.ADMINISTRATION)){
-			return(false);
-		}
-		
-		if(!functionalUtil.openContentTab(browser, AdministrationTabs.PUBLISHING_AND_BOOKING.ordinal())){
-			return(false);
-		}
-		
-		/* click button */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(functionalUtil.getButtonCss())
-		.append("') and contains(@class, '")
-		.append(getBookingAddMethodCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* choose freely available */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getBookingFreelyAvailableIconCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* enter description */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append("b_window_content")
-		.append("')]//form//textarea");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), description);
-		
-		/* click create */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append("b_window_content")
-		.append("')]//form//button[contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Applies booking with access code to group.
-	 * 
-	 * @param browser
-	 * @param description
-	 * @param accessCode
-	 * @return
-	 */
-	public boolean applyBookingAccessCode(Selenium browser, String description, String accessCode){
-		if(!openGroupsTabActionByMenuTree(browser, GroupsTabAction.ADMINISTRATION)){
-			return(false);
-		}
-		
-		if(!functionalUtil.openContentTab(browser, AdministrationTabs.PUBLISHING_AND_BOOKING.ordinal())){
-			return(false);
-		}
-		
-		/* click button */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(functionalUtil.getButtonCss())
-		.append("') and contains(@class, '")
-		.append(getBookingAddMethodCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* choose access code available */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getBookingAccessCodeIconCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* enter description */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append("b_window_content")
-		.append("')]//form//textarea");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), description);
-		
-		/* enter access code */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append("b_window_content")
-		.append("')]//form//input[@type='text']");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), accessCode);
-		
-		/* click create */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append("b_window_content")
-		.append("')]//form//button[contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Books a group with an access code.
-	 * 
-	 * @param browser
-	 * @param groupName
-	 * @param accessCode
-	 * @return
-	 */
-	public boolean bookWithAccessCode(Selenium browser, String groupName, String accessCode){
-		if(!functionalUtil.openSite(browser, OlatSite.GROUPS)){
-			return(false);
-		}
-		
-		if(!openActionByMenuTree(browser, GroupsSiteAction.PUBLISHED_GROUPS)){
-			return(false);
-		}
-		
-		if(!functionalUtil.openContentSegment(browser, PublishedGroupsTabs.SEARCH.ordinal())){
-			return(false);
-		}
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form//div[contains(@class, '")
-		.append(MyGroupSearchFields.NAME.getCssClass())
-		.append("')]//input[@type='text']");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.type(selectorBuffer.toString(), groupName);
-		
-		/* click search */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getSearchGroupButtonsCss())
-		.append("')]//button[contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* book the group */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//tr/td/a/span[contains(@class, '")
-		.append(getGroupIconCss())
-		.append("')]/../../../td[contains(@class, '")
-		.append(functionalUtil.getTableLastChildCss())
-		.append("')]/a");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* enter access code */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form//div[contains(@class, '")
-		.append(getAccessControlTokenEntryCss())
-		.append("')]//input[@type='text']");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), accessCode);
-		
-		/* do order */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form//button[contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens the chat of the appropriate group.
-	 * 
-	 * @param browser
-	 * @param groupName
-	 * @return
-	 */
-	public boolean openGroupChat(Selenium browser, String groupName){
-		if(!openMyGroup(browser, groupName)){
-			return(false);
-		}
-		
-		if(!openGroupsTabActionByMenuTree(browser, GroupsTabAction.CHAT)){
-			return(false);
-		}
-		
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[@id='")
-		.append(functionalUtil.getContentCss())
-		.append("']//a[contains(@class, '")
-		.append(functionalUtil.getButtonCss())
-		.append("')]");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Waits until message has arrived.
-	 * 
-	 * @param browser
-	 * @param message
-	 * @return
-	 */
-	public boolean waitForPageToLoadMessage(Selenium browser, String group, String message, int index){
-		if(message == null){
-			return(true);
-		}
-		
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		selectorBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getInstantMessagingChatCss())
-		.append("')]//div[contains(@class, '")
-		.append(getInstantMessagingBodyCss())
-		.append("')])[")
-		.append(index + 1)
-		.append("]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		String content = browser.getText(selectorBuffer.toString());
-		
-		return(content.contains(message));
-	}
-	
-	/**
-	 * Sends message to group.
-	 * 
-	 * @param browser
-	 * @param groupName
-	 * @param message
-	 * @return
-	 */
-	public boolean sendMessageToGroup(Selenium browser, String groupName, String message){
-		if(!openGroupChat(browser, groupName)){
-			return(false);
-		}
-
-		functionalUtil.idle(browser);
-		
-		/* type */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getInstantMessagingChatCss())
-		.append("')]//div[contains(@class, '")
-		.append(getInstantMessagingFormCss())
-		.append("')]//input[@type='text']");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), message);
-		
-		/* send */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getInstantMessagingChatCss())
-		.append("')]//div[contains(@class, '")
-		.append(getInstantMessagingFormCss())
-		.append("')]//a[contains(@class, '")
-		.append(functionalUtil.getButtonCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Reads the visiting card link from group administration's description tab.
-	 * 
-	 * @param browser
-	 * @param group
-	 * @return The string representing the URL
-	 */
-	public String readVisitingCardLink(Selenium browser, String group){
-		if(!openMyGroup(browser, group)){
-			return(null);
-		}
-		
-		if(!openActionByMenuTree(browser, GroupsSiteAction.GROUPS_ADMINISTRATION)){
-			return(null);
-		}
-		
-		if(!functionalUtil.openContentTab(browser, AdministrationTabs.DESCRIPTION.ordinal())){
-			return(null);
-		}
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getGroupVisitingCardCss())
-		.append("')]//span[contains(@class, '")
-		.append(getGroupVisitingCardCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		String link = browser.getText(selectorBuffer.toString());
-		
-		return(link);
-	}
-	
-	public FunctionalUtil getFunctionalUtil() {
-		return functionalUtil;
-	}
-
-	public void setFunctionalUtil(FunctionalUtil functionalUtil) {
-		this.functionalUtil = functionalUtil;
-	}
-
-	public String getGroupIconCss() {
-		return groupIconCss;
-	}
-
-	public void setGroupIconCss(String groupIconCss) {
-		this.groupIconCss = groupIconCss;
-	}
-
-	public String getCreateGroupCss() {
-		return createGroupCss;
-	}
-
-	public void setCreateGroupCss(String createGroupCss) {
-		this.createGroupCss = createGroupCss;
-	}
-
-	public String getCreateGroupDialogCss() {
-		return createGroupDialogCss;
-	}
-
-	public void setCreateGroupDialogCss(String createGroupDialogCss) {
-		this.createGroupDialogCss = createGroupDialogCss;
-	}
-
-	public String getCreateGroupWaitingListValue() {
-		return createGroupWaitingListValue;
-	}
-
-	public void setCreateGroupWaitingListValue(String createGroupWaitingListValue) {
-		this.createGroupWaitingListValue = createGroupWaitingListValue;
-	}
-
-	public String getCreateGroupAutoCloseRanksValue() {
-		return createGroupAutoCloseRanksValue;
-	}
-
-	public void setCreateGroupAutoCloseRanksValue(
-			String createGroupAutoCloseRanksValue) {
-		this.createGroupAutoCloseRanksValue = createGroupAutoCloseRanksValue;
-	}
-
-	public String getSearchGroupButtonsCss() {
-		return searchGroupButtonsCss;
-	}
-
-	public void setSearchGroupButtonsCss(String searchGroupButtonsCss) {
-		this.searchGroupButtonsCss = searchGroupButtonsCss;
-	}
-
-	public String getAddMemberCss() {
-		return addMemberCss;
-	}
-
-	public void setAddMemberCss(String addMemberCss) {
-		this.addMemberCss = addMemberCss;
-	}
-
-	public String getImportMembersCss() {
-		return importMembersCss;
-	}
-
-	public void setImportMembersCss(String importMembersCss) {
-		this.importMembersCss = importMembersCss;
-	}
-
-	public String getGroupImport1WizardCss() {
-		return groupImport1WizardCss;
-	}
-
-	public void setGroupImport1WizardCss(String groupImport1WizardCss) {
-		this.groupImport1WizardCss = groupImport1WizardCss;
-	}
-	
-	public String getUsersearchAutocompletionCss() {
-		return usersearchAutocompletionCss;
-	}
-
-	public void setUsersearchAutocompletionCss(String usersearchAutocompletionCss) {
-		this.usersearchAutocompletionCss = usersearchAutocompletionCss;
-	}
-
-	public String getUsersearchSearchformCss() {
-		return usersearchSearchformCss;
-	}
-
-	public void setUsersearchSearchformCss(String usersearchSearchformCss) {
-		this.usersearchSearchformCss = usersearchSearchformCss;
-	}
-
-	public String getGroupUrlCss() {
-		return groupUrlCss;
-	}
-
-	public void setGroupUrlCss(String groupUrlCss) {
-		this.groupUrlCss = groupUrlCss;
-	}
-
-	public String getGroupVisitingCardCss() {
-		return groupVisitingCardCss;
-	}
-
-	public void setGroupVisitingCardCss(String groupVisitingCardCss) {
-		this.groupVisitingCardCss = groupVisitingCardCss;
-	}
-
-	public String getBookingAddMethodCss() {
-		return bookingAddMethodCss;
-	}
-
-	public void setBookingAddMethodCss(String bookingAddMethodCss) {
-		this.bookingAddMethodCss = bookingAddMethodCss;
-	}
-
-	public String getBookingAccessCodeIconCss() {
-		return bookingAccessCodeIconCss;
-	}
-
-	public void setBookingAccessCodeIconCss(String bookingAccessCodeIconCss) {
-		this.bookingAccessCodeIconCss = bookingAccessCodeIconCss;
-	}
-
-	public String getBookingFreelyAvailableIconCss() {
-		return bookingFreelyAvailableIconCss;
-	}
-
-	public void setBookingFreelyAvailableIconCss(String bookingFreelyAvailableIconCss) {
-		this.bookingFreelyAvailableIconCss = bookingFreelyAvailableIconCss;
-	}
-
-	public String getGroupCoachesNotVisibleCss() {
-		return groupCoachesNotVisibleCss;
-	}
-
-	public void setGroupCoachesNotVisibleCss(String groupCoachesNotVisibleCss) {
-		this.groupCoachesNotVisibleCss = groupCoachesNotVisibleCss;
-	}
-
-	public String getGroupParticipantsNotVisibleCss() {
-		return groupParticipantsNotVisibleCss;
-	}
-
-	public void setGroupParticipantsNotVisibleCss(
-			String groupParticipantsNotVisibleCss) {
-		this.groupParticipantsNotVisibleCss = groupParticipantsNotVisibleCss;
-	}
-
-	public String getGroupCoachesCss() {
-		return groupCoachesCss;
-	}
-
-	public void setGroupCoachesCss(String groupCoachesCss) {
-		this.groupCoachesCss = groupCoachesCss;
-	}
-
-	public String getGroupParticipantsCss() {
-		return groupParticipantsCss;
-	}
-
-	public void setGroupParticipantsCss(String groupParticipantsCss) {
-		this.groupParticipantsCss = groupParticipantsCss;
-	}
-
-	public String getAccessControlTokenEntryCss() {
-		return accessControlTokenEntryCss;
-	}
-
-	public void setAccessControlTokenEntryCss(String accessControlTokenEntryCss) {
-		this.accessControlTokenEntryCss = accessControlTokenEntryCss;
-	}
-
-	public String getInstantMessagingChatCss() {
-		return instantMessagingChatCss;
-	}
-
-	public void setInstantMessagingChatCss(String instantMessagingChatCss) {
-		this.instantMessagingChatCss = instantMessagingChatCss;
-	}
-
-	public String getInstantMessagingBodyCss() {
-		return instantMessagingBodyCss;
-	}
-
-	public void setInstantMessagingBodyCss(String instantMessagingBodyCss) {
-		this.instantMessagingBodyCss = instantMessagingBodyCss;
-	}
-
-	public String getInstantMessagingAvatarCss() {
-		return instantMessagingAvatarCss;
-	}
-
-	public void setInstantMessagingAvatarCss(String instantMessagingAvatarCss) {
-		this.instantMessagingAvatarCss = instantMessagingAvatarCss;
-	}
-
-	public String getInstantMessagingFormCss() {
-		return instantMessagingFormCss;
-	}
-
-	public void setInstantMessagingFormCss(String instantMessagingFormCss) {
-		this.instantMessagingFormCss = instantMessagingFormCss;
-	}
-
-	public String getGroupVisitingCardContentCss() {
-		return groupVisitingCardContentCss;
-	}
-
-	public void setGroupVisitingCardContentCss(String groupVisitingCardContentCss) {
-		this.groupVisitingCardContentCss = groupVisitingCardContentCss;
-	}
-}
diff --git a/src/test/java/org/olat/util/FunctionalHomeSiteUtil.java b/src/test/java/org/olat/util/FunctionalHomeSiteUtil.java
deleted file mode 100644
index a95141127562e4947d16744953f88e9fc46ad7c3..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/FunctionalHomeSiteUtil.java
+++ /dev/null
@@ -1,1587 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.util.Calendar;
-
-import org.apache.velocity.VelocityContext;
-import org.apache.velocity.app.VelocityEngine;
-import org.apache.velocity.exception.MethodInvocationException;
-import org.apache.velocity.exception.ParseErrorException;
-import org.apache.velocity.exception.ResourceNotFoundException;
-import org.junit.Assert;
-import org.olat.core.logging.OLog;
-import org.olat.core.logging.Tracing;
-import org.olat.util.FunctionalUtil.OlatSite;
-
-import com.thoughtworks.selenium.Selenium;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-public class FunctionalHomeSiteUtil {
-	private final static OLog log = Tracing.createLoggerFor(FunctionalHomeSiteUtil.class);
-	
-	public final static String HOME_SITE_MENU_TREE_SELECTED_CSS = "b_tree_selected";
-
-	public final static String FORM_ELEMENT_WRAPPER = "b_form_element_wrapper";
-
-	/* menu tree */
-	public final static String HOME_ACTION_PORTAL_CSS = "o_sel_portal";
-	public final static String HOME_ACTION_SETTINGS_CSS = "o_sel_mysettings";
-	public final static String HOME_ACTION_CALENDAR_CSS = "o_sel_calendar";
-	public final static String HOME_ACTION_SUBSCRIPTIONS_CSS = "o_sel_notifications";
-	public final static String HOME_ACTION_BOOKMARKS_CSS = "o_sel_bookmarks";
-	public final static String HOME_ACTION_PERSONAL_FOLDER_CSS = "o_sel_userfolder";
-	public final static String HOME_ACTION_NOTES_CSS = "o_sel_notelist";
-	public final static String HOME_ACTION_EVIDENCES_OF_ACHIEVEMENT_CSS = "o_sel_effstatements";
-
-	public final static String EPORTFOLIO_PARENT_ID = "ddportfolioParent";
-	public final static String EPORTFOLIO_ACTION_MY_ARTIFACTS_CSS = "o_sel_EPArtefacts";
-	public final static String EPORTFOLIO_ACTION_MY_BINDERS_CSS = "o_sel_EPMaps";
-	public final static String EPORTFOLIO_ACTION_MY_PORTFOLIO_TASKS_CSS = "o_sel_EPStructuredMaps";
-	public final static String EPORTFOLIO_ACTION_RELEASED_BINDERS_CSS = "o_sel_EPSharedMaps";
-
-	/* portal */
-	public final static String PORTAL_EDIT_LINK_CSS = "o_home_portaleditlink";
-
-	public final static String PORTAL_WRAPPER_CSS = "b_portal_wrapper";
-	public final static String PORTAL_CSS = "b_portal";
-	public final static String PORTAL_COLUMN_CSS_PREFIX = "o_sel_portal_col_";
-	public final static String PORTAL_SUBCOLUMNS_CSS = "b_subcolumns";
-	public final static String PORTAL_INACTIVE_CSS = "b_portal_inactive";
-
-	public final static String PORTLET_CSS = "b_portlet";
-	public final static String PORTLET_EDIT_CSS = "b_portlet_edit";
-	public final static String PORTLET_INACTIVE_CSS = "b_portlet_incactive";
-
-	public final static String PORTLET_QUICKSTART_CSS = "o_portlet_quickstart";
-	public final static String PORTLET_REPOSITORY_STUDENT_CSS = "o_portlet_repository_student";
-	public final static String PORTLET_REPOSITORY_TEACHER_CSS = "o_portlet_repository_teacher";
-	public final static String PORTLET_INFOMESSAGES_CSS = "o_portlet_infomessages";
-	public final static String PORTLET_CALENDAR_CSS = "o_portlet_calendar";
-	public final static String PORTLET_BOOKMARK_CSS = "o_portlet_bookmark";
-	public final static String PORTLET_GROUPS_CSS = "o_portlet_groups";
-	public final static String PORTLET_NOTI_CSS = "o_portlet_noti";
-	public final static String PORTLET_EFF_CSS = "o_portlet_eff";
-	public final static String PORTLET_NOTES_CSS = "o_portlet_notes";
-	public final static String PORTLET_DYK_CSS = "b_portlet_dyk";
-
-	public final static String PORTLET_MOVE_LEFT_CSS = "b_portlet_edit_left";
-	public final static String PORTLET_MOVE_RIGHT_CSS = "b_portlet_edit_right";
-	public final static String PORTLET_MOVE_UPWARDS_CSS = "b_portlet_edit_up";
-	public final static String PORTLET_MOVE_DOWNWARDS_CSS = "b_portlet_edit_down";
-	public final static String PORTLET_EDIT_INACTIVATE_CSS = "b_portlet_edit_delete";
-	public final static String PORTLET_EDIT_ACTIVATE_CSS = "b_portlet_add";
-
-	/* General System Settings */
-	public final static String PREFS_BUTTONS_CSS = "o_sel_home_settings_prefs_buttons";
-
-	public final static String LANGUAGE_OPTIONS_ID = "o_fioform_language_SELBOX";
-
-	public final static String GERMAN_LANGUAGE_VALUE = "de";
-	public final static String ENGLISH_LANGUAGE_VALUE = "en";
-	public final static String FRENCH_LANGUAGE_VALUE = "fr";
-	public final static String SPANISH_LANGUAGE_VALUE = "es";
-	public final static String ITALIAN_LANGUAGE_VALUE = "it";
-
-	/* Specific System Settings */
-	public final static String GUI_BUTTONS_CSS = "o_sel_home_settings_gui_buttons";
-
-	public final static String ACCESSIBILITY_CSS = "o_sel_home_settings_accessibility";
-	public final static String RESUME_LAST_SESSION_CSS = "o_sel_home_settings_resume";
-	public final static String SUPPORT_FOR_BROWSER_BACK_CSS = "o_sel_home_settings_back_enabling";
-
-	public final static String NO_VALUE = "none";
-	public final static String YES_AUTOMATICALLY_VALUE = "auto";
-	public final static String YES_ON_REQUEST_VALUE = "ondemand";
-
-	public final static String OFF_VALUE = "no";
-	public final static String ON_VALUE = "yes";
-
-	/* Reset Configurations */
-	public final static String SYSPREFS_BUTTONS_CSS = "o_sel_home_settings_reset_sysprefs_buttons";
-
-	public final static String CONFIGURATIONS_CSS = "o_sel_home_settings_reset_sysprefs";
-
-	public final static String GUI_PREFERENCES_VALUE = "guiprefs";
-	public final static String SYS_PREFERENCES_VALUE = "sysprefs";
-	public final static String RESUME_VALUE = "resume";
-
-	/* password tab */
-	public final static String OLD_PASSWORD_CSS = "o_sel_home_pwd_old";
-	public final static String NEW_PASSWORD_CSS = "o_sel_home_pwd_new_1";
-	public final static String CONFIRM_PASSWORD_CSS = "o_sel_home_pwd_new_2";
-
-	public enum PortalSettingsForms {
-		GENERAL_SYSTEM_SETTINGS,
-		SPECIFIC_SYSTEM_SETTINGS,
-		RESET_CONFIGURATIONS;
-
-		public enum SpecificSystemSettingsRadios {
-			ACCESSIBILITY(ACCESSIBILITY_CSS),
-			RESUME_LAST_SESSION(RESUME_LAST_SESSION_CSS),	
-			SUPPORT_FOR_BROWSER_BACK(SUPPORT_FOR_BROWSER_BACK_CSS);
-
-			private String groupCss;
-
-			SpecificSystemSettingsRadios(String groupCss){
-				setGroupCss(groupCss);
-			}
-
-			public String getGroupCss() {
-				return groupCss;
-			}
-
-			public void setGroupCss(String groupCss) {
-				this.groupCss = groupCss;
-			}
-
-			public enum ResumeLastSession{
-				NO(NO_VALUE),
-				YES_AUTOMATICALLY(YES_AUTOMATICALLY_VALUE),
-				YES_ON_REQUEST(YES_ON_REQUEST_VALUE);
-
-				private String valueAttribute;
-
-				ResumeLastSession(String valueAttribute){
-					setValueAttribute(valueAttribute);
-				}
-
-				public String getValueAttribute() {
-					return valueAttribute;
-				}
-
-				public void setValueAttribute(String valueAttribute) {
-					this.valueAttribute = valueAttribute;
-				}
-			}
-
-			public enum SupportForBrowserBack {
-				ON(ON_VALUE),
-				OFF(OFF_VALUE);
-
-				private String valueAttribute;
-
-				SupportForBrowserBack(String valueAttribute){
-					setValueAttribute(valueAttribute);
-				}
-
-				public String getValueAttribute() {
-					return valueAttribute;
-				}
-
-				public void setValueAttribute(String valueAttribute) {
-					this.valueAttribute = valueAttribute;
-				}
-			}
-		}
-
-
-		public enum ResetConfigurations{
-			Configurations(CONFIGURATIONS_CSS);
-
-			private String groupCss;
-
-			ResetConfigurations(String groupCss){
-				setGroupCss(groupCss);
-			}
-
-			public String getGroupCss() {
-				return groupCss;
-			}
-
-			public void setGroupCss(String groupCss) {
-				this.groupCss = groupCss;
-			}
-
-			public enum ConfigurationsCheckboxes {
-				GUI_PREFERENCES(GUI_PREFERENCES_VALUE),
-				SYS_PREFERENCES(SYS_PREFERENCES_VALUE),
-				RESUME(RESUME_VALUE);
-
-				private String valueAttribute;
-
-				ConfigurationsCheckboxes (String valueAttribute){
-					setValueAttribute(valueAttribute);
-				}
-
-
-				public String getValueAttribute() {
-					return valueAttribute;
-				}
-
-				public void setValueAttribute(String valueAttribute) {
-					this.valueAttribute = valueAttribute;
-				}
-			}
-		}
-	}
-
-	public enum HomeSiteAction {
-		PORTAL,
-		SETTINGS,
-		CALENDAR,
-		SUBSCRIPTIONS,
-		BOOKMARKS,
-		PERSONAL_FOLDER,
-		NOTES,
-		EVIDENCES_OF_ACHIEVEMENT,
-		OTHER_USERS, /* no corresponding CSS class available */
-	};
-
-	public enum EPortfolioAction {
-		MY_ARTIFACTS,
-		MY_BINDERS,
-		MY_PORTFOLIO_TASKS,
-		RELEASED_BINDERS,
-	};
-
-	public enum Direction {
-		UP,
-		DOWN,
-		LEFT,
-		RIGHT;
-	}
-
-	public enum SettingsTab {
-		PROFILE,
-		SYSTEM,
-		PASSWORD,
-		WEB_DAV,
-		TERMS_OF_USE;
-	}
-
-	private FunctionalUtil functionalUtil;
-
-	private String homeActionNavigationSelectedCss;
-
-	private String homeActionPortalCss;
-	private String homeActionSettingsCss;
-	private String homeActionCalendarCss;
-	private String homeActionSubscriptionsCss;
-	private String homeActionBookmarksCss;
-	private String homeActionPersonalFolderCss;
-	private String homeActionNotesCss;
-	private String homeActionEvidencesOfAchievementCss;
-
-	private String ePortfolioParentId;
-	private String ePortfolioActionMyArtifactsCss;
-	private String ePortfolioActionMyBindersCss;
-	private String ePortfolioActionMyPortfolioTasksCss;
-	private String ePortfolioActionReleasedBindersCss;
-
-	private String portalEditLinkCss;
-	private String portalWrapperCss;
-	private String portalCss;
-	private String portalColumnCssPrefix;
-	private String portalSubcolumnsCss;
-	private String portalInactiveCss;
-
-	private String portletCss;
-	private String portletEditCss;
-	private String portletInactiveCss;
-
-	private String portletQuickstartCss;
-	private String portletRepositoryStudentCss;
-	private String portletRepositoryTeacherCss;
-	private String portletInfomessagesCss;
-	private String portletCalendarCss;
-	private String portletBookmarkCss;
-	private String portletGroupsCss;
-	private String portletNotiCss;
-	private String portletEffCss;
-	private String portletNotesCss;
-	private String portletDykCss;
-
-	private String portletActivateCss;
-	private String portletInactivateCss;
-	private String portletMoveLeftCss;
-	private String portletMoveRightCss;
-	private String portletMoveUpCss;
-	private String portletMoveDownCss;
-
-	private String prefsButtonsCss;
-	private String guiButtonsCss;
-	private String sysprefsButtonsCss;
-
-	private String oldPasswordCss;
-	private String newPasswordCss;
-	private String confirmPasswordCss;
-
-	/**
-	 * @param functionalUtil
-	 * 
-	 * Constructor
-	 */
-	public FunctionalHomeSiteUtil(FunctionalUtil functionalUtil){
-		setUtil(functionalUtil);
-
-		setHomeActionNavigationSelectedCss(HOME_SITE_MENU_TREE_SELECTED_CSS);
-
-		setHomeActionPortalCss(HOME_ACTION_PORTAL_CSS);
-		setHomeActionSettingsCss(HOME_ACTION_SETTINGS_CSS);
-		setHomeActionCalendarCss(HOME_ACTION_CALENDAR_CSS);
-		setHomeActionSubscriptionsCss(HOME_ACTION_SUBSCRIPTIONS_CSS);
-		setHomeActionBookmarksCss(HOME_ACTION_BOOKMARKS_CSS);
-		setHomeActionPersonalFolderCss(HOME_ACTION_PERSONAL_FOLDER_CSS);
-		setHomeActionNotesCss(HOME_ACTION_NOTES_CSS);
-		setHomeActionEvidencesOfAchievementCss(HOME_ACTION_EVIDENCES_OF_ACHIEVEMENT_CSS);
-
-		setEPortfolioParentId(EPORTFOLIO_PARENT_ID);
-		setEPortfolioActionMyArtifactsCss(EPORTFOLIO_ACTION_MY_ARTIFACTS_CSS);
-		setEPortfolioActionMyBindersCss(EPORTFOLIO_ACTION_MY_BINDERS_CSS);
-		setEPortfolioActionMyPortfolioTasksCss(EPORTFOLIO_ACTION_MY_PORTFOLIO_TASKS_CSS);
-		setEPortfolioActionReleasedBindersCss(EPORTFOLIO_ACTION_RELEASED_BINDERS_CSS);
-
-		setPortalEditLinkCss(PORTAL_EDIT_LINK_CSS);
-		setPortalWrapperCss(PORTAL_WRAPPER_CSS);
-		setPortalCss(PORTAL_CSS);
-		setPortalColumnCssPrefix(PORTAL_COLUMN_CSS_PREFIX);
-		setPortalSubcolumnsCss(PORTAL_SUBCOLUMNS_CSS);
-
-		setPortletCss(PORTLET_CSS);
-		setPortletEditCss(PORTLET_EDIT_CSS);
-		setPortletInactiveCss(PORTLET_INACTIVE_CSS);
-
-		setPortletQuickstartCss(PORTLET_QUICKSTART_CSS);
-		setPortletRepositoryStudentCss(PORTLET_REPOSITORY_STUDENT_CSS);
-		setPortletRepositoryTeacherCss(PORTLET_REPOSITORY_TEACHER_CSS);
-		setPortletInfomessagesCss(PORTLET_INFOMESSAGES_CSS);
-		setPortletCalendarCss(PORTLET_CALENDAR_CSS);
-		setPortletBookmarkCss(PORTLET_BOOKMARK_CSS);
-		setPortletGroupsCss(PORTLET_GROUPS_CSS);
-		setPortletNotiCss(PORTLET_NOTI_CSS);
-		setPortletEffCss(PORTLET_EFF_CSS);
-		setPortletNotesCss(PORTLET_NOTES_CSS);
-		setPortletDykCss(PORTLET_DYK_CSS);
-
-		setPortletActivateCss(PORTLET_EDIT_ACTIVATE_CSS);
-		setPortletInactivateCss(PORTLET_EDIT_INACTIVATE_CSS);
-		setPortletMoveLeftCss(PORTLET_MOVE_LEFT_CSS);
-		setPortletMoveRightCss(PORTLET_MOVE_RIGHT_CSS);
-		setPortletMoveUpCss(PORTLET_MOVE_UPWARDS_CSS);
-		setPortletMoveDownCss(PORTLET_MOVE_DOWNWARDS_CSS);
-
-		setPrefsButtonsCss(PREFS_BUTTONS_CSS);
-		setGuiButtonsCss(GUI_BUTTONS_CSS);
-		setSysprefsButtonsCss(SYSPREFS_BUTTONS_CSS);
-
-		setOldPasswordCss(OLD_PASSWORD_CSS);
-		setNewPasswordCss(NEW_PASSWORD_CSS);
-		setConfirmPasswordCss(CONFIRM_PASSWORD_CSS);
-	}
-
-	/**
-	 * Find the corresponding CSS class for page.
-	 * 
-	 * @param page
-	 * @return the matching CSS class
-	 */
-	public String findCssClassOfAction(Object page){
-		if(page == null)
-			return(null);
-
-		String selectedCss = null;
-
-		if(page instanceof HomeSiteAction){
-			switch((HomeSiteAction) page){
-			case PORTAL:
-			{
-				selectedCss = getHomeActionPortalCss();
-				break;
-			}
-			case SETTINGS:
-			{
-				selectedCss = getHomeActionSettingsCss();
-				break;
-			}
-			case CALENDAR:
-			{
-				selectedCss = getHomeActionCalendarCss();
-				break;
-			}
-			case SUBSCRIPTIONS:
-			{
-				selectedCss = getHomeActionSubscriptionsCss();
-				break;
-			}
-			case BOOKMARKS:
-			{
-				selectedCss = getHomeActionBookmarksCss();
-				break;
-			}
-			case PERSONAL_FOLDER:
-			{
-				selectedCss = getHomeActionPersonalFolderCss();
-				break;
-			}
-			case NOTES:
-			{
-				selectedCss = getHomeActionNotesCss();
-				break;
-			}
-			case EVIDENCES_OF_ACHIEVEMENT:
-				selectedCss = getHomeActionEvidencesOfAchievementCss();
-				break;
-			}
-		}else if(page instanceof EPortfolioAction){
-			switch((EPortfolioAction) page){
-			case MY_ARTIFACTS:
-			{
-				selectedCss = getEPortfolioActionMyArtifactsCss();
-				break;
-			}
-			case MY_BINDERS:
-			{
-				selectedCss = getEPortfolioActionMyBindersCss();
-				break;
-			}
-			case MY_PORTFOLIO_TASKS:
-			{
-				selectedCss = getEPortfolioActionMyPortfolioTasksCss();
-				break;
-			}
-			case RELEASED_BINDERS:
-			{
-				selectedCss = getEPortfolioActionReleasedBindersCss();
-				break;
-			}
-			}
-		}
-
-		return(selectedCss);
-	}
-
-	/**
-	 * Check if the correct page is open.
-	 * 
-	 * @param browser
-	 * @param action
-	 * @return true if match otherwise false
-	 */
-	public boolean checkCurrentAction(Selenium browser, Object action){
-		return(checkCurrentAction(browser, action, -1));
-	}
-
-	/**
-	 * 
-	 * @param browser
-	 * @param action
-	 * @param timeout
-	 * @return
-	 */
-	public boolean checkCurrentAction(Selenium browser, Object action, long timeout){
-		String selectedCss = findCssClassOfAction(action);
-
-		if(selectedCss == null)
-			return(false);
-
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("css=ul li.")
-		.append(selectedCss)
-		.append('.')
-		.append(getHomeActionNavigationSelectedCss())
-		.append(" a");
-
-		long timeElapsed = 0;
-		long startTime = Calendar.getInstance().getTimeInMillis();
-
-		do{
-			if(browser.isElementPresent(selectorBuffer.toString())){
-				return(true);
-			}
-
-			if(timeout != -1){
-				try {
-					Thread.sleep(FunctionalUtil.POLL_INTERVAL);
-				} catch (InterruptedException e) {
-					//TODO:JK: Auto-generated catch block
-					e.printStackTrace();
-				}
-			}
-
-			timeElapsed = Calendar.getInstance().getTimeInMillis() - startTime;
-		}while(timeElapsed <= timeout && timeout != -1);
-
-		return(false);
-	}
-
-	/**
-	 * Browse the home site's menu tree.
-	 * 
-	 * @param browser
-	 * @param action
-	 * @return true on success otherwise false
-	 */
-	public boolean openActionByMenuTree(Selenium browser, Object action){
-		return(openActionByMenuTree(browser, action, true));
-	}
-	
-	/**
-	 * Browse the home site's menu tree.
-	 * 
-	 * @param browser
-	 * @param action
-	 * @param checkCurrentAction
-	 * @return true on success otherwise false
-	 */
-	public boolean openActionByMenuTree(Selenium browser, Object action, boolean checkCurrentAction){
-		String selectedCss = findCssClassOfAction(action);
-
-		if(selectedCss == null){
-			return(false);
-		}
-
-		if(!checkCurrentAction || !checkCurrentAction(browser, action, Long.parseLong(functionalUtil.getWaitLimit()))){
-			StringBuffer selectorBuffer = new StringBuffer();
-
-			selectorBuffer.append("xpath=//ul//li[contains(@class, '")
-			.append(selectedCss)
-			.append("')]//a");
-			
-			if(action instanceof EPortfolioAction && !browser.isElementPresent(selectorBuffer.toString())){
-				StringBuffer actionSelectorBuffer = new StringBuffer();
-
-				actionSelectorBuffer.append("xpath=//ul//div[@id='")
-				.append(getEPortfolioParentId())
-				.append("']//a");
-
-				browser.click(actionSelectorBuffer.toString());
-				
-				if(browser.isConfirmationPresent()){
-					browser.getConfirmation();
-				}
-				
-				functionalUtil.waitForPageToLoad(browser);
-			}
-
-			browser.click(selectorBuffer.toString());
-			
-			if(browser.isConfirmationPresent()){
-				browser.getConfirmation();
-			}
-			
-			functionalUtil.waitForPageToLoad(browser);
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		}
-
-		return(true);
-	}
-
-	/**
-	 * Open portal in configuration mode.
-	 * 
-	 * @param browser
-	 */
-	public void beginEditingPortal(Selenium browser){
-		if(!functionalUtil.checkCurrentSite(browser, OlatSite.HOME)){
-			functionalUtil.openSite(browser, OlatSite.HOME);
-		}
-
-		/* goto home site */
-		//TODO:JK: ugly
-		Assert.assertTrue(openActionByMenuTree(browser, HomeSiteAction.PORTAL));
-		Assert.assertTrue(checkCurrentAction(browser, HomeSiteAction.PORTAL));
-
-		functionalUtil.idle(browser);
-		
-		/* begin editing */
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("css=.")
-		.append(PORTAL_EDIT_LINK_CSS)
-		.append(" a");
-
-		browser.click(selectorBuffer.toString());
-	}
-
-	/**
-	 * Close portal configuration mode.
-	 * 
-	 * @param browser
-	 */
-	public void endEditingPortal(Selenium browser){
-		if(!functionalUtil.checkCurrentSite(browser, OlatSite.HOME)){
-			functionalUtil.openSite(browser, OlatSite.HOME);
-		}
-
-		/* goto home site */
-		//TODO:JK: ugly
-		Assert.assertTrue(openActionByMenuTree(browser, HomeSiteAction.PORTAL));
-		Assert.assertTrue(checkCurrentAction(browser, HomeSiteAction.PORTAL));
-
-		/* end editing */
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("css=.")
-		.append(PORTAL_EDIT_LINK_CSS)
-		.append(" a");
-
-		browser.click(selectorBuffer.toString());
-	}
-
-	/**
-	 * Check the state of a portlet.
-	 * 
-	 * @param browser
-	 * @param portletCss
-	 * @return true if portlet active otherwise false
-	 */
-	public boolean checkPortletActive(Selenium browser, String portletCss){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getPortalCss())
-		.append("') and contains(@class, '")
-		.append(getPortalSubcolumnsCss())
-		.append("')]//div[contains(@class, '")
-		.append(getPortletCss())
-		.append("') and contains(@class, '")
-		.append(portletCss)
-		.append("')]");
-
-		if(browser.isElementPresent(selectorBuffer.toString())){
-			return(true);
-		}else{
-			/* selector of editing portlets */
-			selectorBuffer = new StringBuffer();
-
-			selectorBuffer.append("xpath=//div[contains(@class, '")
-			.append(getPortalCss())
-			.append("') and contains(@class, '")
-			.append(getPortalSubcolumnsCss())
-			.append("')]//div[contains(@class, '")
-			.append(getPortletCss())
-			.append("') contains(@class, '")
-			.append(getPortletEditCss())
-			.append("') and contains(@class, '")
-			.append(portletCss)
-			.append("')]");
-
-			if(browser.isElementPresent(selectorBuffer.toString())){
-				return(true);
-			}else{
-				return(false);
-			}
-		}
-	}
-
-	/**
-	 * Find the position of the portlet within the portal.
-	 * 
-	 * @param browser
-	 * @param portletCss
-	 * @param columnCount the count of columns to scan for
-	 * @return the x and y position of the portlet, the result may be null if
-	 * the portlet is inactive or doesn't exists.
-	 */
-	public int[] findPortletPosition(Selenium browser, String portletCss, int columnCount){
-		functionalUtil.idle(browser);
-		
-		for(int i = 0; i < columnCount; i++){
-			StringBuffer selectorBuffer = new StringBuffer();
-
-			selectorBuffer.append("css=.")
-			.append(getPortalCss())
-			.append('.')
-			.append(getPortalSubcolumnsCss())
-			.append(" .")
-			.append(getPortalColumnCssPrefix())
-			.append(i + 1)
-			.append(" .")
-			.append(getPortletCss())
-			.append('.')
-			.append(getPortletEditCss())
-			.append('.')
-			.append(portletCss);
-
-			if(browser.isElementPresent(selectorBuffer.toString())){
-				int position[] = new int[2];
-
-				position[0] = i;
-
-				selectorBuffer = new StringBuffer();
-
-				selectorBuffer.append("css=.")
-				.append(getPortalCss())
-				.append(" .")
-				.append(getPortalColumnCssPrefix())
-				.append(i + 1)
-				.append(" .")
-				.append(getPortletCss());
-
-				VelocityContext context = new VelocityContext();
-
-				context.put("portalCss", getPortalCss());
-				context.put("portalSubcolumnsCss", getPortalSubcolumnsCss());
-				context.put("portletCss", getPortletCss());
-				context.put("portalColumnCssPrefix", getPortalColumnCssPrefix());
-
-				context.put("portlet", portletCss);
-
-				context.put("column", i);
-				context.put("j_stop", browser.getCssCount(selectorBuffer.toString()).intValue());
-
-				VelocityEngine engine = null;
-
-				engine = new VelocityEngine();
-
-				StringWriter sw = new StringWriter();
-
-				try {
-					engine.evaluate(context, sw, "portletPosition", FunctionalHomeSiteUtil.class.getResourceAsStream("PortletPosition.vm"));
-
-					Integer j = new Integer(browser.getEval(sw.toString()));
-					position[1] = j.intValue();
-
-					return(position);
-				} catch (ParseErrorException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				} catch (MethodInvocationException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				} catch (ResourceNotFoundException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				} catch (IOException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}
-
-
-				return(null);
-			}
-		}
-
-		return(null);
-	}
-
-	/**
-	 * Add specified portlet by its CSS class.
-	 * 
-	 * @param browser
-	 * @param portletCss
-	 * @return true if portlet was inactive and successfully activated
-	 * otherwise false.
-	 */
-	public boolean activatePortlet(Selenium browser, String portletCss){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("css=.")
-		.append(getPortletCss())
-		.append('.')
-		.append(portletCss);
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		/*  */
-		StringBuffer activateBuffer = new StringBuffer(selectorBuffer);
-		
-		activateBuffer.append('.')
-		.append(getPortletInactiveCss())
-		.append(" .")
-		.append(getPortletActivateCss())
-		.append(" a");
-
-		if(browser.isElementPresent(activateBuffer.toString())){
-			browser.click(activateBuffer.toString());
-
-			return(true);
-		}else{
-			return(false);
-		}
-	}
-
-	/**
-	 * Remove a portlet from portal.
-	 * 
-	 * @param browser
-	 * @param portletCss
-	 * @return true if portlet was active and successfully deactivated
-	 * otherwise false.
-	 */
-	public boolean deactivatePortlet(Selenium browser, String portletCss){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("css=.")
-		.append(getPortletCss())
-		.append('.')
-		.append(portletCss);
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		/*  */
-		StringBuffer inactivateBuffer = new StringBuffer(selectorBuffer);
-		
-		inactivateBuffer.append('.')
-		.append(getPortletEditCss())
-		.append(" .")
-		.append(getPortletInactivateCss())
-		.append(" a");
-
-		if(browser.isElementPresent(inactivateBuffer.toString())){
-			browser.click(inactivateBuffer.toString());
-
-			return(true);
-		}else{
-			return(false);
-		}
-	}
-
-	/**
-	 * Move a portlet to the given direction.
-	 * 
-	 * @param browser
-	 * @param portletCss
-	 * @param direction
-	 * @return true if portlet was moved otherwise false
-	 */
-	public boolean movePortlet(Selenium browser, String portletCss, Direction direction){
-		functionalUtil.idle(browser);
-		
-		/* wait till portlet gets loaded */
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("css=.")
-		.append(getPortletCss())
-		.append('.')
-		.append(portletCss);
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		/*  */
-		selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("css=.")
-		.append(getPortletCss())
-		.append('.')
-		.append(getPortletEditCss())
-		.append('.')
-		.append(portletCss)
-		.append(" .");
-
-		switch(direction){
-		case LEFT:
-		{
-			selectorBuffer.append(getPortletMoveLeftCss());
-
-			break;
-		}
-		case RIGHT:
-		{
-			selectorBuffer.append(getPortletMoveRightCss());
-
-			break;
-		}
-		case UP:
-		{
-			selectorBuffer.append(getPortletMoveUpCss());
-
-			break;
-		}
-		case DOWN:
-		{
-			selectorBuffer.append(getPortletMoveDownCss());
-
-			break;
-		}
-		}
-
-		if(browser.isElementPresent(selectorBuffer.toString())){
-			browser.click(selectorBuffer.toString());
-
-			return(true);
-		}else{
-			return(false);
-		}
-
-	}
-
-
-	/**
-	 * Selects the specified language.
-	 * 
-	 * @param browser
-	 * @param language permitted values are: en, es, fr, de, it
-	 */
-	public void selectLanguage(Selenium browser, String language){
-		functionalUtil.openSite(browser, OlatSite.HOME);
-
-		/* goto home site */
-		//TODO:JK: ugly
-		Assert.assertTrue(openActionByMenuTree(browser, HomeSiteAction.SETTINGS));
-
-		/* open System tab */
-		//TODO:JK: ugly
-		Assert.assertTrue(functionalUtil.openContentTab(browser, SettingsTab.SYSTEM.ordinal()));
-
-		/* select language */
-		functionalUtil.selectOption(browser, LANGUAGE_OPTIONS_ID, language);
-
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//form//div[contains(@class, '");
-		selectorBuffer.append(getPrefsButtonsCss());
-		selectorBuffer.append("')]//");
-		selectorBuffer.append("button[@type='button']");
-
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-	}
-
-	/**
-	 * Enables resume in olat but you must be logged in.
-	 * 
-	 * @param browser
-	 */
-	public void enableResume(Selenium browser){
-		functionalUtil.openSite(browser, OlatSite.HOME);
-
-		/* goto home site */
-		//TODO:JK: ugly
-		Assert.assertTrue(openActionByMenuTree(browser, HomeSiteAction.SETTINGS));
-		Assert.assertTrue(checkCurrentAction(browser, HomeSiteAction.SETTINGS));
-
-		/* open System tab */
-		//TODO:JK: ugly
-		Assert.assertTrue(functionalUtil.openContentTab(browser, SettingsTab.SYSTEM.ordinal()));
-
-		/* enable resume */
-		//TODO:JK: ugly
-		Assert.assertTrue(functionalUtil.clickRadio(browser,
-				FunctionalHomeSiteUtil.PortalSettingsForms.SpecificSystemSettingsRadios.RESUME_LAST_SESSION.getGroupCss(),
-				FunctionalHomeSiteUtil.PortalSettingsForms.SpecificSystemSettingsRadios.ResumeLastSession.YES_AUTOMATICALLY.getValueAttribute()));
-
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//form//div[contains(@class, '");
-		selectorBuffer.append(getGuiButtonsCss());
-		selectorBuffer.append("')]//");
-		selectorBuffer.append("button[@type='button']");
-
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-	}
-
-	/**
-	 * Enables resume on request in olat but you must be logged in.
-	 * 
-	 * @param browser
-	 */
-	public void enableResumeOnRequest(Selenium browser){
-		functionalUtil.openSite(browser, OlatSite.HOME);
-
-		/* goto home site */
-		//TODO:JK: ugly
-		Assert.assertTrue(openActionByMenuTree(browser, HomeSiteAction.SETTINGS));
-		Assert.assertTrue(checkCurrentAction(browser, HomeSiteAction.SETTINGS));
-
-		/* open system tab */
-		//TODO:JK: ugly
-		Assert.assertTrue(functionalUtil.openContentTab(browser, SettingsTab.SYSTEM.ordinal()));
-
-		/* enable resume */
-		//TODO:JK: ugly
-		Assert.assertTrue(functionalUtil.clickRadio(browser,
-				FunctionalHomeSiteUtil.PortalSettingsForms.SpecificSystemSettingsRadios.RESUME_LAST_SESSION.getGroupCss(),
-				FunctionalHomeSiteUtil.PortalSettingsForms.SpecificSystemSettingsRadios.ResumeLastSession.YES_ON_REQUEST.getValueAttribute()));
-
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//form//div[contains(@class, '");
-		selectorBuffer.append(getGuiButtonsCss());
-		selectorBuffer.append("')]//");
-		selectorBuffer.append("button[@type='button']");
-
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-	}
-
-	/**
-	 * Disable resume in olat but you must be logged in.
-	 * 
-	 * @param browser
-	 */
-	public boolean disableResume(Selenium browser){
-		functionalUtil.openSite(browser, OlatSite.HOME);
-
-		/* goto home site */
-		//TODO:JK: ugly
-		Assert.assertTrue(openActionByMenuTree(browser, HomeSiteAction.SETTINGS));
-		//Assert.assertTrue(checkCurrentAction(browser, HomeSiteAction.SETTINGS));
-
-		/* open system tab */
-		//TODO:JK: ugly
-		Assert.assertTrue(functionalUtil.openContentTab(browser, SettingsTab.SYSTEM.ordinal()));
-		
-		/* disable resume */
-		//TODO:JK: ugly
-		Assert.assertTrue(functionalUtil.clickRadio(browser,
-				FunctionalHomeSiteUtil.PortalSettingsForms.SpecificSystemSettingsRadios.RESUME_LAST_SESSION.getGroupCss(),
-				FunctionalHomeSiteUtil.PortalSettingsForms.SpecificSystemSettingsRadios.ResumeLastSession.NO.getValueAttribute()));
-
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//form//div[contains(@class, '");
-		selectorBuffer.append(getGuiButtonsCss());
-		selectorBuffer.append("')]//");
-		selectorBuffer.append("button[@type='button']");
-
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-
-		return(true);
-	}
-
-	/**
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public boolean enableBack(Selenium browser){
-		functionalUtil.openSite(browser, OlatSite.HOME);
-
-		/* goto home site */
-		//TODO:JK: ugly
-		Assert.assertTrue(openActionByMenuTree(browser, HomeSiteAction.SETTINGS));
-		Assert.assertTrue(checkCurrentAction(browser, HomeSiteAction.SETTINGS));
-
-		/* open system tab */
-		//TODO:JK: ugly
-		Assert.assertTrue(functionalUtil.openContentTab(browser, SettingsTab.SYSTEM.ordinal()));
-
-		/* enable resume */
-		//TODO:JK: ugly
-		Assert.assertTrue(functionalUtil.clickRadio(browser,
-				FunctionalHomeSiteUtil.PortalSettingsForms.SpecificSystemSettingsRadios.SUPPORT_FOR_BROWSER_BACK.getGroupCss(),
-				FunctionalHomeSiteUtil.PortalSettingsForms.SpecificSystemSettingsRadios.SupportForBrowserBack.ON.getValueAttribute()));
-
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//form//div[contains(@class, '");
-		selectorBuffer.append(getGuiButtonsCss());
-		selectorBuffer.append("')]//");
-		selectorBuffer.append("button[@type='button']");
-
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-
-		return(true);
-	}
-
-	/**
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public boolean disableBack(Selenium browser){
-		//TODO:JK: ugly
-		functionalUtil.openSite(browser, OlatSite.HOME);
-
-		/* goto home site */
-		//TODO:JK: ugly
-		Assert.assertTrue(openActionByMenuTree(browser, HomeSiteAction.SETTINGS));
-		Assert.assertTrue(checkCurrentAction(browser, HomeSiteAction.SETTINGS));
-
-		/* open system tab */
-		//TODO:JK: ugly
-		Assert.assertTrue(functionalUtil.openContentTab(browser, SettingsTab.SYSTEM.ordinal()));
-
-		/* enable resume */
-		//TODO:JK: ugly
-		Assert.assertTrue(functionalUtil.clickRadio(browser,
-				FunctionalHomeSiteUtil.PortalSettingsForms.SpecificSystemSettingsRadios.SUPPORT_FOR_BROWSER_BACK.getGroupCss(),
-				FunctionalHomeSiteUtil.PortalSettingsForms.SpecificSystemSettingsRadios.SupportForBrowserBack.OFF.getValueAttribute()));
-
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//form//div[contains(@class, '");
-		selectorBuffer.append(getGuiButtonsCss());
-		selectorBuffer.append("')]//");
-		selectorBuffer.append("button[@type='button']");
-
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-
-		return(true);
-	}
-
-	/**
-	 * Resets portal settings to default.
-	 * 
-	 * @param browser
-	 * @return true on success
-	 */
-	public boolean resetSettings(Selenium browser){
-		log.info("open portal");
-		//TODO:JK: ugly
-		functionalUtil.openSite(browser, OlatSite.HOME);
-
-		/* open settings page */
-		log.info("open settings tab");
-		if(!openActionByMenuTree(browser, HomeSiteAction.SETTINGS)){
-			return(false);
-		}
-
-		/* click system tab */
-		log.info("open system settings tab");
-		functionalUtil.openContentTab(browser, SettingsTab.SYSTEM.ordinal());
-		
-		/* using reset configurations form */
-		/* click all checkboxes */
-		log.info("clicking all reset configurations checkboxes");
-		functionalUtil.clickCheckbox(browser, CONFIGURATIONS_CSS, GUI_PREFERENCES_VALUE);
-
-		functionalUtil.clickCheckbox(browser, CONFIGURATIONS_CSS, SYS_PREFERENCES_VALUE);
-
-		functionalUtil.clickCheckbox(browser, CONFIGURATIONS_CSS, RESUME_VALUE);
-
-		/* click Reset */
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//form//div[contains(@class, '");
-		selectorBuffer.append(getSysprefsButtonsCss());
-		selectorBuffer.append("')]//");
-		selectorBuffer.append("button[@type='button']");
-
-		log.info("submitting changes");
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-		//functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		return(true);
-	}
-
-	public FunctionalUtil getUtil() {
-		return functionalUtil;
-	}
-
-	public void setUtil(FunctionalUtil functionalUtil) {
-		this.functionalUtil = functionalUtil;
-	}
-
-	public String getHomeActionNavigationSelectedCss() {
-		return homeActionNavigationSelectedCss;
-	}
-
-	public void setHomeActionNavigationSelectedCss(
-			String homeActionNavigationSelectedCss) {
-		this.homeActionNavigationSelectedCss = homeActionNavigationSelectedCss;
-	}
-
-	public String getHomeActionPortalCss() {
-		return homeActionPortalCss;
-	}
-
-	public void setHomeActionPortalCss(String homeActionPortalCss) {
-		this.homeActionPortalCss = homeActionPortalCss;
-	}
-
-	public String getHomeActionSettingsCss() {
-		return homeActionSettingsCss;
-	}
-
-	public void setHomeActionSettingsCss(String homeActionSettingsCss) {
-		this.homeActionSettingsCss = homeActionSettingsCss;
-	}
-
-	public String getHomeActionCalendarCss() {
-		return homeActionCalendarCss;
-	}
-
-	public void setHomeActionCalendarCss(String homeActionCalendarCss) {
-		this.homeActionCalendarCss = homeActionCalendarCss;
-	}
-
-	public String getHomeActionSubscriptionsCss() {
-		return homeActionSubscriptionsCss;
-	}
-
-	public void setHomeActionSubscriptionsCss(String homeActionSubscriptionsCss) {
-		this.homeActionSubscriptionsCss = homeActionSubscriptionsCss;
-	}
-
-	public String getHomeActionBookmarksCss() {
-		return homeActionBookmarksCss;
-	}
-
-	public void setHomeActionBookmarksCss(String homeActionBookmarksCss) {
-		this.homeActionBookmarksCss = homeActionBookmarksCss;
-	}
-
-	public String getHomeActionPersonalFolderCss() {
-		return homeActionPersonalFolderCss;
-	}
-
-	public void setHomeActionPersonalFolderCss(String homeActionPersonalFolderCss) {
-		this.homeActionPersonalFolderCss = homeActionPersonalFolderCss;
-	}
-
-	public String getHomeActionNotesCss() {
-		return homeActionNotesCss;
-	}
-
-	public void setHomeActionNotesCss(String homeActionNotesCss) {
-		this.homeActionNotesCss = homeActionNotesCss;
-	}
-
-	public String getHomeActionEvidencesOfAchievementCss() {
-		return homeActionEvidencesOfAchievementCss;
-	}
-
-	public void setHomeActionEvidencesOfAchievementCss(
-			String homeActionEvidencesOfAchievementCss) {
-		this.homeActionEvidencesOfAchievementCss = homeActionEvidencesOfAchievementCss;
-	}
-
-	public String getEPortfolioParentId() {
-		return ePortfolioParentId;
-	}
-
-	public void setEPortfolioParentId(String ePortfolioParentId) {
-		this.ePortfolioParentId = ePortfolioParentId;
-	}
-
-	public String getEPortfolioActionMyArtifactsCss() {
-		return ePortfolioActionMyArtifactsCss;
-	}
-
-	public void setEPortfolioActionMyArtifactsCss(String ePortfolioActionMyArtifactsCss) {
-		this.ePortfolioActionMyArtifactsCss = ePortfolioActionMyArtifactsCss;
-	}
-
-	public String getEPortfolioActionMyBindersCss() {
-		return ePortfolioActionMyBindersCss;
-	}
-
-	public void setEPortfolioActionMyBindersCss(String ePortfolioActionMyBindersCss) {
-		this.ePortfolioActionMyBindersCss = ePortfolioActionMyBindersCss;
-	}
-
-	public String getEPortfolioActionMyPortfolioTasksCss() {
-		return ePortfolioActionMyPortfolioTasksCss;
-	}
-
-	public void setEPortfolioActionMyPortfolioTasksCss(
-			String ePortfolioActionMyPortfolioTasksCss) {
-		this.ePortfolioActionMyPortfolioTasksCss = ePortfolioActionMyPortfolioTasksCss;
-	}
-
-	public String getEPortfolioActionReleasedBindersCss() {
-		return ePortfolioActionReleasedBindersCss;
-	}
-
-	public void setEPortfolioActionReleasedBindersCss(
-			String ePortfolioActionReleasedBindersCss) {
-		this.ePortfolioActionReleasedBindersCss = ePortfolioActionReleasedBindersCss;
-	}
-
-	public String getPortalEditLinkCss() {
-		return portalEditLinkCss;
-	}
-
-	public void setPortalEditLinkCss(String portalEditLinkCss) {
-		this.portalEditLinkCss = portalEditLinkCss;
-	}
-
-	public String getPortalWrapperCss() {
-		return portalWrapperCss;
-	}
-
-	public void setPortalWrapperCss(String portalWrapperCss) {
-		this.portalWrapperCss = portalWrapperCss;
-	}
-
-	public String getPortalCss() {
-		return portalCss;
-	}
-
-	public void setPortalCss(String portalCss) {
-		this.portalCss = portalCss;
-	}
-
-	public String getPortalColumnCssPrefix() {
-		return portalColumnCssPrefix;
-	}
-
-	public void setPortalColumnCssPrefix(String portalColumnCssPrefix) {
-		this.portalColumnCssPrefix = portalColumnCssPrefix;
-	}
-
-	public String getPortalSubcolumnsCss() {
-		return portalSubcolumnsCss;
-	}
-
-	public void setPortalSubcolumnsCss(String portalSubcolumnsCss) {
-		this.portalSubcolumnsCss = portalSubcolumnsCss;
-	}
-
-	public String getPortalInactiveCss() {
-		return portalInactiveCss;
-	}
-
-	public void setPortalInactiveCss(String portalInactiveCss) {
-		this.portalInactiveCss = portalInactiveCss;
-	}
-
-	public String getPortletCss() {
-		return portletCss;
-	}
-
-	public void setPortletCss(String portletCss) {
-		this.portletCss = portletCss;
-	}
-
-	public String getPortletEditCss() {
-		return portletEditCss;
-	}
-
-	public void setPortletEditCss(String portletEditCss) {
-		this.portletEditCss = portletEditCss;
-	}
-
-	public String getPortletInactiveCss() {
-		return portletInactiveCss;
-	}
-
-	public void setPortletInactiveCss(String portletInactiveCss) {
-		this.portletInactiveCss = portletInactiveCss;
-	}
-
-	public String getPortletQuickstartCss() {
-		return portletQuickstartCss;
-	}
-
-	public void setPortletQuickstartCss(String portletQuickstartCss) {
-		this.portletQuickstartCss = portletQuickstartCss;
-	}
-
-	public String getPortletRepositoryStudentCss() {
-		return portletRepositoryStudentCss;
-	}
-
-	public void setPortletRepositoryStudentCss(String portletRepositoryStudentCss) {
-		this.portletRepositoryStudentCss = portletRepositoryStudentCss;
-	}
-
-	public String getPortletRepositoryTeacherCss() {
-		return portletRepositoryTeacherCss;
-	}
-
-	public void setPortletRepositoryTeacherCss(String portletRepositoryTeacherCss) {
-		this.portletRepositoryTeacherCss = portletRepositoryTeacherCss;
-	}
-
-	public String getPortletInfomessagesCss() {
-		return portletInfomessagesCss;
-	}
-
-	public void setPortletInfomessagesCss(String portletInfomessagesCss) {
-		this.portletInfomessagesCss = portletInfomessagesCss;
-	}
-
-	public String getPortletCalendarCss() {
-		return portletCalendarCss;
-	}
-
-	public void setPortletCalendarCss(String portletCalendarCss) {
-		this.portletCalendarCss = portletCalendarCss;
-	}
-
-	public String getPortletBookmarkCss() {
-		return portletBookmarkCss;
-	}
-
-	public void setPortletBookmarkCss(String portletBookmarkCss) {
-		this.portletBookmarkCss = portletBookmarkCss;
-	}
-
-	public String getPortletGroupsCss() {
-		return portletGroupsCss;
-	}
-
-	public void setPortletGroupsCss(String portletGroupsCss) {
-		this.portletGroupsCss = portletGroupsCss;
-	}
-
-	public String getPortletNotiCss() {
-		return portletNotiCss;
-	}
-
-	public void setPortletNotiCss(String portletNotiCss) {
-		this.portletNotiCss = portletNotiCss;
-	}
-
-	public String getPortletEffCss() {
-		return portletEffCss;
-	}
-
-	public void setPortletEffCss(String portletEffCss) {
-		this.portletEffCss = portletEffCss;
-	}
-
-	public String getPortletNotesCss() {
-		return portletNotesCss;
-	}
-
-	public void setPortletNotesCss(String portletNotesCss) {
-		this.portletNotesCss = portletNotesCss;
-	}
-
-	public String getPortletDykCss() {
-		return portletDykCss;
-	}
-
-	public void setPortletDykCss(String portletDykCss) {
-		this.portletDykCss = portletDykCss;
-	}
-
-	public String getPortletActivateCss() {
-		return portletActivateCss;
-	}
-
-	public void setPortletActivateCss(String portletActivateCss) {
-		this.portletActivateCss = portletActivateCss;
-	}
-
-	public String getPortletInactivateCss() {
-		return portletInactivateCss;
-	}
-
-	public void setPortletInactivateCss(String portletInactivateCss) {
-		this.portletInactivateCss = portletInactivateCss;
-	}
-
-	public String getPortletMoveLeftCss() {
-		return portletMoveLeftCss;
-	}
-
-	public void setPortletMoveLeftCss(String portletMoveLeftCss) {
-		this.portletMoveLeftCss = portletMoveLeftCss;
-	}
-
-	public String getPortletMoveRightCss() {
-		return portletMoveRightCss;
-	}
-
-	public void setPortletMoveRightCss(String portletMoveRightCss) {
-		this.portletMoveRightCss = portletMoveRightCss;
-	}
-
-	public String getPortletMoveUpCss() {
-		return portletMoveUpCss;
-	}
-
-	public void setPortletMoveUpCss(String portletMoveUpCss) {
-		this.portletMoveUpCss = portletMoveUpCss;
-	}
-
-	public String getPortletMoveDownCss() {
-		return portletMoveDownCss;
-	}
-
-	public void setPortletMoveDownCss(String portletMoveDownCss) {
-		this.portletMoveDownCss = portletMoveDownCss;
-	}
-
-	public String getPrefsButtonsCss() {
-		return prefsButtonsCss;
-	}
-
-	public void setPrefsButtonsCss(String prefsButtonsCss) {
-		this.prefsButtonsCss = prefsButtonsCss;
-	}
-
-	public String getGuiButtonsCss() {
-		return guiButtonsCss;
-	}
-
-	public void setGuiButtonsCss(String guiButtonsCss) {
-		this.guiButtonsCss = guiButtonsCss;
-	}
-
-	public String getSysprefsButtonsCss() {
-		return sysprefsButtonsCss;
-	}
-
-	public void setSysprefsButtonsCss(String sysprefsButtonsCss) {
-		this.sysprefsButtonsCss = sysprefsButtonsCss;
-	}
-
-	public String getOldPasswordCss() {
-		return oldPasswordCss;
-	}
-
-	public void setOldPasswordCss(String oldPasswordCss) {
-		this.oldPasswordCss = oldPasswordCss;
-	}
-
-	public String getNewPasswordCss() {
-		return newPasswordCss;
-	}
-
-	public void setNewPasswordCss(String newPasswordCss) {
-		this.newPasswordCss = newPasswordCss;
-	}
-
-	public String getConfirmPasswordCss() {
-		return confirmPasswordCss;
-	}
-
-	public void setConfirmPasswordCss(String confirmPasswordCss) {
-		this.confirmPasswordCss = confirmPasswordCss;
-	}
-}
diff --git a/src/test/java/org/olat/util/FunctionalHtmlUtil.java b/src/test/java/org/olat/util/FunctionalHtmlUtil.java
deleted file mode 100644
index 12168cb2eb07fbf3eb702bb0e0bab0ef7e72d373..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/FunctionalHtmlUtil.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util;
-
-import org.olat.core.util.filter.FilterFactory;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-public class FunctionalHtmlUtil {
-	
-	/**
-	 * Strips all markup of specified string.
-	 * This method is depracted and shouldn't be used in newly written code.
-	 * Use removeMarkup instead.
-	 * 
-	 * @param html
-	 * @param insertNewlines
-	 * @return
-	 */
-	@Deprecated
-	public String stripTags(String html, boolean insertNewlines){
-		if(html.indexOf("<body") != -1){
-			html = html.substring(html.indexOf('>', html.indexOf("<body")) + 1, html.indexOf("</body"));
-		}
-		
-		StringBuffer textBuffer = new StringBuffer();
-		int offset = 0;
-		int nextOffset = 0;
-		char prevLineLastChar = '\n';
-		
-		while((nextOffset = html.indexOf('<', offset)) != -1){
-			String currentText = html.substring(offset, nextOffset);
-			
-			if(!currentText.matches("^[\\s]+$")){
-				currentText = currentText.trim();
-				textBuffer.append(currentText);
-				
-				if(insertNewlines){
-					if(prevLineLastChar != '\n'){
-						textBuffer.append('\n');
-					}
-				}else{
-					if(prevLineLastChar != '\n' && prevLineLastChar != ' '){
-						textBuffer.append(' ');
-					}
-				}
-				
-				if(!currentText.isEmpty()){
-					prevLineLastChar = currentText.charAt(currentText.length() - 1);
-				}
-			}
-			
-			offset = html.indexOf('>', nextOffset);
-			
-			if(offset != -1){
-				offset += 1;
-			}
-		}
-		 
-		String currentText = html.substring(offset);
-		
-		if(!currentText.matches("^[\\s]+$")){
-			textBuffer.append(currentText);
-			
-			if(!currentText.isEmpty()){
-				prevLineLastChar = currentText.charAt(currentText.length() - 1);
-			}
-		}
-		
-		if(prevLineLastChar != '\n'){
-			textBuffer.append('\n');
-		}
-		
-		return(textBuffer.toString());
-	}
-	
-	public String removeMarkup(String html){
-		 return(FilterFactory.getHtmlTagsFilter().filter(html));
-	}
-}
diff --git a/src/test/java/org/olat/util/FunctionalInstantMessagingUtil.java b/src/test/java/org/olat/util/FunctionalInstantMessagingUtil.java
deleted file mode 100644
index 9c4a8f51cb99c289e94d1b15f5f80df00e94d162..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/FunctionalInstantMessagingUtil.java
+++ /dev/null
@@ -1,634 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-
-package org.olat.util;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import com.thoughtworks.selenium.Selenium;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-public class FunctionalInstantMessagingUtil {
-	
-	public final static Pattern CONTACT_COUNT_PATTERN = Pattern.compile("\\(([\\d]+)/([\\d]+)\\)");
-	
-	public final static String INSTANT_MESSAGING_CLIENT_SUMMARY = "o_topnav_imclient_summary";
-	
-	public final static String INSTANT_MESSAGING_ROSTER_CSS = "o_extjsPanel_im_roster";
-	public final static String INSTANT_MESSAGING_SHOW_OFFLINE_CONTACTS_CSS = "o_im_showofflineswitch";
-	public final static String INSTANT_MESSAGING_HIDE_OFFLINE_CONTACTS_CSS = "o_im_hideofflineswitch";
-	public final static String INSTANT_MESSAGING_SHOW_GROUPS_CSS = "o_im_showgroupswitch";
-	public final static String INSTANT_MESSAGING_HIDE_GROUPS_CSS = "o_im_hidegroupswitch";
-	
-	public final static String INSTANT_MESSAGING_GROUP_CSS = "o_im_groupname";
-	public final static String INSTANT_MESSAGING_AVAILABLE_CSS = "o_im_available_icon";
-	public final static String INSTANT_MESSAGING_UNAVAILABLE_CSS = "o_im_unavailable_icon";
-	
-	public final static String INSTANT_MESSAGING_CHAT_CSS = "o_im_chat";
-	public final static String INSTANT_MESSAGING_MESSAGE_GROUP_CSS = "o_im_message_group";
-	public final static String INSTANT_MESSAGING_BODY_CSS = "o_im_body";
-	public final static String INSTANT_MESSAGING_AVATAR_CSS = "o_im_avatar";
-	public final static String INSTANT_MESSAGING_FORM_CSS = "o_im_chat_form";
-	
-	public enum UserStatus{
-		AVAILABLE,
-		BUSY,
-		OFFLINE,
-	}
-	
-	private String instantMessagingClientSummary;
-	
-	private String instantMessagingRosterCss;
-	private String instantMessagingShowOfflineContactsCss;
-	private String instantMessagingHideOfflineContactsCss;
-	private String instantMessagingShowGroupsCss;
-	private String instantMessagingHideGroupsCss;
-	
-	private String instantMessagingGroupCss;
-	private String instantMessagingAvailableCss;
-	private String instantMessagingUnavailableCss;
-	
-	private String instantMessagingChatCss;
-	private String instantMessagingMessageGroupCss;
-	private String instantMessagingBodyCss;
-	private String instantMessagingAvatarCss;
-	private String instantMessagingFormCss;
-	
-	private FunctionalUtil functionalUtil;
-	
-	public FunctionalInstantMessagingUtil(FunctionalUtil functionalUtil){
-		setFunctionalUtil(functionalUtil);
-		
-		setInstantMessagingClientSummary(INSTANT_MESSAGING_CLIENT_SUMMARY);
-		
-		setInstantMessagingRosterCss(INSTANT_MESSAGING_ROSTER_CSS);
-		setInstantMessagingShowOfflineContactsCss(INSTANT_MESSAGING_SHOW_OFFLINE_CONTACTS_CSS);
-		setInstantMessagingHideOfflineContactsCss(INSTANT_MESSAGING_HIDE_OFFLINE_CONTACTS_CSS);
-		setInstantMessagingShowGroupsCss(INSTANT_MESSAGING_SHOW_GROUPS_CSS);
-		setInstantMessagingHideGroupsCss(INSTANT_MESSAGING_HIDE_GROUPS_CSS);
-		
-		setInstantMessagingGroupCss(INSTANT_MESSAGING_GROUP_CSS);
-		setInstantMessagingAvailableCss(INSTANT_MESSAGING_AVAILABLE_CSS);
-		setInstantMessagingUnavailableCss(INSTANT_MESSAGING_UNAVAILABLE_CSS);
-		
-		setInstantMessagingChatCss(INSTANT_MESSAGING_CHAT_CSS);
-		setInstantMessagingMessageGroupCss(INSTANT_MESSAGING_MESSAGE_GROUP_CSS);
-		setInstantMessagingBodyCss(INSTANT_MESSAGING_BODY_CSS);
-		setInstantMessagingAvatarCss(INSTANT_MESSAGING_AVATAR_CSS);
-		setInstantMessagingFormCss(INSTANT_MESSAGING_FORM_CSS);
-	}
-	
-	/**
-	 * Computes the chat summary in the top navigation.
-	 * 
-	 * @param browser
-	 * @return The count of online contacts.
-	 */
-	public int onlineContactCount(Selenium browser){
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//li[@id='")
-		.append(getInstantMessagingClientSummary())
-		.append("']//a//span");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		String summary = browser.getText(selectorBuffer.toString());
-		
-		Matcher matcher = CONTACT_COUNT_PATTERN.matcher(summary);
-		
-		matcher.find();
-		int count = Integer.valueOf(matcher.group(1));
-		
-		return(count);
-	}
-	
-	/**
-	 * Computes the chat summary in the top navigation.
-	 * 
-	 * @param browser
-	 * @return The count of available contacts.
-	 */
-	public int availableContactCount(Selenium browser){
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//li[@id='")
-		.append(getInstantMessagingClientSummary())
-		.append("']//a//span");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		String summary = browser.getText(selectorBuffer.toString());
-		
-		Matcher matcher = CONTACT_COUNT_PATTERN.matcher(summary);
-
-		matcher.find();
-		int count = Integer.valueOf(matcher.group(2));
-		
-		return(count);
-	}
-	
-	/**
-	 * Opens the chat roster.
-	 * 
-	 * @param browser
-	 * @return true on success
-	 */
-	public boolean openRoster(Selenium browser){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//li[@id='")
-		.append(getInstantMessagingClientSummary())
-		.append("']//a");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		/* wait until dialog appears */
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getInstantMessagingRosterCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, locatorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Show groups.
-	 * 
-	 * @param browser
-	 * @return true on success
-	 */
-	private boolean openGroups(Selenium browser){
-		functionalUtil.idle(browser);
-		
-		/* check if it's already open */
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getInstantMessagingShowGroupsCss())
-		.append("')]");
-		
-		/* click if necessary */
-		if(browser.isElementPresent(locatorBuffer.toString())){
-			browser.click(locatorBuffer.toString());
-		}
-		
-		return(true);
-	}
-	
-	public List<String> findOnlineContacts(Selenium browser){
-		if(!openRoster(browser)){
-			return(null);
-		}
-		
-		List<String> contacts = new ArrayList<String>();
-		
-		StringBuffer selectorBufferFragment = new StringBuffer();
-		selectorBufferFragment.append("//ul//li[.]//a[contains(@class,'")
-		.append(getInstantMessagingAvailableCss())
-		.append("')]");
-		
-		StringBuffer locatorBuffer = new StringBuffer();
-		locatorBuffer.append("xpath=")
-		.append(selectorBufferFragment.toString());
-		
-		functionalUtil.idle(browser);
-		
-		int count = 0;
-		
-		if(browser.getXpathCount(selectorBufferFragment.toString()) == null){
-			return(contacts);
-		}else{
-			count = browser.getXpathCount(selectorBufferFragment.toString()).intValue();
-		}
-		
-		for(int i = 0; i < count; i++){
-			StringBuffer selectorBuffer = new StringBuffer();
-			selectorBuffer.append("xpath=(")
-			.append(selectorBufferFragment.toString())
-			.append(")[")
-			.append(i + 1)
-			.append("]//span");
-			
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-			
-			String contact = browser.getText(selectorBuffer.toString());
-			
-			if(contact != null &&
-					!contact.isEmpty()){
-				contacts.add(contact);
-			}
-		}
-		
-		return(contacts);
-	}
-	
-	public List<String> findOfflineContacts(Selenium browser){
-		if(!openRoster(browser)){
-			return(null);
-		}
-		
-		List<String> contacts = new ArrayList<String>();
-		
-		StringBuffer selectorBufferFragment = new StringBuffer();
-		selectorBufferFragment.append("//ul//li[.]//a[contains(@class,'")
-		.append(getInstantMessagingUnavailableCss())
-		.append("')]");
-		
-		StringBuffer locatorBuffer = new StringBuffer();
-		locatorBuffer.append("xpath=")
-		.append(selectorBufferFragment.toString());
-		
-		functionalUtil.idle(browser);
-		
-		int count = 0;
-		
-		if(browser.getXpathCount(selectorBufferFragment.toString()) == null){
-			return(contacts);
-		}else{
-			count = browser.getXpathCount(selectorBufferFragment.toString()).intValue();
-		}
-		
-		for(int i = 0; i < count; i++){
-			StringBuffer selectorBuffer = new StringBuffer();
-			selectorBuffer.append("xpath=(")
-			.append(selectorBufferFragment.toString())
-			.append(")[")
-			.append(i + 1)
-			.append("]//span");
-			
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-			
-			String contact = browser.getText(selectorBuffer.toString());
-			
-			if(contact != null &&
-					!contact.isEmpty()){
-				contacts.add(contact);
-			}
-		}
-		
-		return(contacts);
-	}
-	
-	/**
-	 * Finds the groups by parsing roster data.
-	 * 
-	 * @param browser
-	 * @return A List containing group names.
-	 */
-	public List<String> findGroups(Selenium browser){
-		if(!openRoster(browser)){
-			return(null);
-		}
-		
-		if(!openGroups(browser)){
-			return(null);
-		}
-		
-		functionalUtil.idle(browser);
-		
-		List<String> groups = new ArrayList<String>();
-		
-		StringBuffer selectorBufferFragment = new StringBuffer();
-		selectorBufferFragment.append("//ul//li//div[contains(@class, '")
-		.append(getInstantMessagingGroupCss())
-		.append("')]");
-		
-		StringBuffer locatorBuffer = new StringBuffer();
-		locatorBuffer.append("xpath=")
-		.append(selectorBufferFragment);
-		
-		for(int i = 0; i < browser.getXpathCount(locatorBuffer.toString()).intValue(); i++){
-			StringBuffer selectorBuffer = new StringBuffer();
-			selectorBuffer.append("xpath=(")
-			.append(selectorBufferFragment)
-			.append(")[")
-			.append(i + 1)
-			.append("]");
-
-			functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-			groups.add(browser.getText(selectorBuffer.toString()));
-		}
-		
-		return(groups);
-	}
-	
-	/**
-	 * Retrieve status information of the given user.
-	 * 
-	 * @param browser
-	 * @param firstname
-	 * @param surname
-	 * @return
-	 */
-	public UserStatus retrieveUserStatus(Selenium browser, String firstname, String surname){
-		
-		//TODO:JK: implement me
-		
-		return(null);
-	}
-	
-	/**
-	 * Change your very own status.
-	 * 
-	 * @param browser
-	 * @param status
-	 * @return
-	 */
-	public boolean changeStatus(Selenium browser, UserStatus status){
-
-		//TODO:JK: implement me
-		
-		return(false);
-	}
-	
-	/**
-	 * Opens a chat window with the given user.
-	 * 
-	 * @param browser
-	 * @param firstname
-	 * @param surname
-	 * @return
-	 */
-	public boolean openUserChat(Selenium browser, String firstname, String surname){
-		if(!openRoster(browser)){
-			return(false);
-		}
-
-		StringBuffer selectorBuffer = new StringBuffer();
-		selectorBuffer.append("xpath=//ul//li//a[contains(@class, '")
-		.append(getInstantMessagingAvailableCss())
-		.append("')]//span[text()=' ")
-		.append(surname)
-		.append(", ")
-		.append(firstname)
-		.append("']");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens a chat window with the given group.
-	 * 
-	 * @param browser
-	 * @param groupName
-	 * @return
-	 */
-	public boolean openGroupChat(Selenium browser, String groupName){
-		if(!openRoster(browser)){
-			return(false);
-		}
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		selectorBuffer.append("xpath=//ul//li//div[contains(@class, '")
-		.append(getInstantMessagingGroupCss())
-		.append("') and text()='")
-		.append(groupName)
-		.append("']//a");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Sends a message to the given user.
-	 * 
-	 * @param browser
-	 * @param firstname
-	 * @param surname
-	 * @param message
-	 * @return
-	 */
-	public boolean sendMessageToUser(Selenium browser, String firstname, String surname, String message){
-		if(message == null){
-			return(true);
-		}
-		
-		if(!openRoster(browser)){
-			return(false);
-		}
-		
-		if(!openUserChat(browser, firstname, surname)){
-			return(false);
-		}
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getInstantMessagingChatCss())
-		.append("')]//input[@type='text']");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), message);
-		
-		return(true);
-	}
-	
-	/**
-	 * Sends a message to the given group.
-	 * 
-	 * @param browser
-	 * @param groupName
-	 * @param message
-	 * @return
-	 */
-	public boolean sendMessageToGroup(Selenium browser, String groupName, String message){
-		if(message == null){
-			return(true);
-		}
-		
-		if(!openRoster(browser)){
-			return(false);
-		}
-		
-		if(!openGroupChat(browser, groupName)){
-			return(false);
-		}
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getInstantMessagingChatCss())
-		.append("')]//input[@type='text']");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), message);
-		
-		return(true);	
-	}
-
-	public boolean waitForPageToLoadMessage(Selenium browser, String message){
-		if(message == null){
-			return(true);
-		}
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getInstantMessagingChatCss())
-		.append("')]//div[contains(@class, '")
-		.append(getInstantMessagingBodyCss())
-		.append("') and contains('")
-		.append(message)
-		.append("', text())]");
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		return(functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString()));
-	}
-	
-	public String getInstantMessagingClientSummary() {
-		return instantMessagingClientSummary;
-	}
-
-	public void setInstantMessagingClientSummary(
-			String instantMessagingClientSummary) {
-		this.instantMessagingClientSummary = instantMessagingClientSummary;
-	}
-
-	public String getInstantMessagingRosterCss() {
-		return instantMessagingRosterCss;
-	}
-
-	public void setInstantMessagingRosterCss(String instantMessagingRosterCss) {
-		this.instantMessagingRosterCss = instantMessagingRosterCss;
-	}
-
-	public String getInstantMessagingShowOfflineContactsCss() {
-		return instantMessagingShowOfflineContactsCss;
-	}
-
-	public void setInstantMessagingShowOfflineContactsCss(
-			String instantMessagingShowOfflineContactsCss) {
-		this.instantMessagingShowOfflineContactsCss = instantMessagingShowOfflineContactsCss;
-	}
-
-	public String getInstantMessagingHideOfflineContactsCss() {
-		return instantMessagingHideOfflineContactsCss;
-	}
-
-	public void setInstantMessagingHideOfflineContactsCss(
-			String instantMessagingHideOfflineContactsCss) {
-		this.instantMessagingHideOfflineContactsCss = instantMessagingHideOfflineContactsCss;
-	}
-
-	public String getInstantMessagingShowGroupsCss() {
-		return instantMessagingShowGroupsCss;
-	}
-
-	public void setInstantMessagingShowGroupsCss(
-			String instantMessagingShowGroupsCss) {
-		this.instantMessagingShowGroupsCss = instantMessagingShowGroupsCss;
-	}
-
-	public String getInstantMessagingHideGroupsCss() {
-		return instantMessagingHideGroupsCss;
-	}
-
-	public void setInstantMessagingHideGroupsCss(
-			String instantMessagingHideGroupsCss) {
-		this.instantMessagingHideGroupsCss = instantMessagingHideGroupsCss;
-	}
-
-	public String getInstantMessagingGroupCss() {
-		return instantMessagingGroupCss;
-	}
-
-	public void setInstantMessagingGroupCss(String instantMessagingGroupCss) {
-		this.instantMessagingGroupCss = instantMessagingGroupCss;
-	}
-
-	public String getInstantMessagingAvailableCss() {
-		return instantMessagingAvailableCss;
-	}
-
-	public void setInstantMessagingAvailableCss(String instantMessagingAvailableCss) {
-		this.instantMessagingAvailableCss = instantMessagingAvailableCss;
-	}
-
-	public String getInstantMessagingUnavailableCss() {
-		return instantMessagingUnavailableCss;
-	}
-
-	public void setInstantMessagingUnavailableCss(
-			String instantMessagingUnavailableCss) {
-		this.instantMessagingUnavailableCss = instantMessagingUnavailableCss;
-	}
-
-	public String getInstantMessagingChatCss() {
-		return instantMessagingChatCss;
-	}
-
-	public void setInstantMessagingChatCss(String instantMessagingChatCss) {
-		this.instantMessagingChatCss = instantMessagingChatCss;
-	}
-
-	public String getInstantMessagingMessageGroupCss() {
-		return instantMessagingMessageGroupCss;
-	}
-
-	public void setInstantMessagingMessageGroupCss(
-			String instantMessagingMessageGroupCss) {
-		this.instantMessagingMessageGroupCss = instantMessagingMessageGroupCss;
-	}
-
-	public String getInstantMessagingBodyCss() {
-		return instantMessagingBodyCss;
-	}
-
-	public void setInstantMessagingBodyCss(String instantMessagingBodyCss) {
-		this.instantMessagingBodyCss = instantMessagingBodyCss;
-	}
-
-	public String getInstantMessagingAvatarCss() {
-		return instantMessagingAvatarCss;
-	}
-
-	public void setInstantMessagingAvatarCss(String instantMessagingAvatarCss) {
-		this.instantMessagingAvatarCss = instantMessagingAvatarCss;
-	}
-
-	public String getInstantMessagingFormCss() {
-		return instantMessagingFormCss;
-	}
-
-	public void setInstantMessagingFormCss(String instantMessagingFormCss) {
-		this.instantMessagingFormCss = instantMessagingFormCss;
-	}
-
-	public FunctionalUtil getFunctionalUtil() {
-		return functionalUtil;
-	}
-
-	public void setFunctionalUtil(FunctionalUtil functionalUtil) {
-		this.functionalUtil = functionalUtil;
-	}
-}
diff --git a/src/test/java/org/olat/util/FunctionalLocatorPairsFactory.java b/src/test/java/org/olat/util/FunctionalLocatorPairsFactory.java
deleted file mode 100644
index 00bf5a7c1d62bdba5c525db933ab08f57136e7b6..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/FunctionalLocatorPairsFactory.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util;
-
-/**
- * Description: <br>
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-public class FunctionalLocatorPairsFactory {
-	private FunctionalUtil functionalUtil;
-	
-	public FunctionalLocatorPairsFactory(FunctionalUtil functionalUtil){
-		this.functionalUtil = functionalUtil;
-	}
-	
-	public String getLocatorOfSite(String site){
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("css=.")
-		.append(functionalUtil.getOlatNavigationSiteCss())
-		.append(".")
-		.append(site)
-		.append(" a");
-		
-		return(locatorBuffer.toString());
-	}
-	
-	public String getApprovalOfSite(String site){
-		StringBuffer approvalBuffer = new StringBuffer();
-		
-		approvalBuffer.append("css=.")
-		.append(functionalUtil.getOlatNavigationSiteCss())
-		.append(".")
-		.append(functionalUtil.getOlatActiveNavigationSiteCss())
-		.append(".")
-		.append(site);
-		
-		return(approvalBuffer.toString());
-	}
-
-	public FunctionalUtil getFunctionalUtil() {
-		return functionalUtil;
-	}
-
-	public void setFunctionalUtil(FunctionalUtil functionalUtil) {
-		this.functionalUtil = functionalUtil;
-	}
-}
diff --git a/src/test/java/org/olat/util/FunctionalRepositorySiteUtil.java b/src/test/java/org/olat/util/FunctionalRepositorySiteUtil.java
deleted file mode 100644
index 4a8d507acd92080e9fd9486f120495a5ee4a8a4c..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/FunctionalRepositorySiteUtil.java
+++ /dev/null
@@ -1,1832 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.olat.util.FunctionalUtil.OlatSite;
-
-import com.thoughtworks.selenium.Selenium;
-
-/**
- * Description: <br>
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-public class FunctionalRepositorySiteUtil {	
-	
-	private final static Pattern categoryPattern = Pattern.compile("/([^/]+)");
-	
-	public final static String REPOSITORY_POPUP_CSS = "o_sel_edit_repositoryentry_popup";
-	public final static String REPOSITORY_SAVE_DETAILS_CSS = "o_sel_repo_save_details";
-	public final static String REPOSITORY_ADD_FORWARD_CSS = "o_sel_repo_add_forward";
-	public final static String REPOSITORY_ADD_TEMPLATE_FORWARD_CSS = "o_sel_repo_add_template_forward";
-	
-	public final static String COURSE_WIZARD_PUBLISH_CHECKBOX = "publishCheckbox";
-	public final static String COURSE_WIZARD_ACCESS_OPTION_ID = "o_fioaccessChooser_SELBOX";
-	
-	public final static String REPOSITORY_SITE_MENU_TREE_SELECTED_CSS = "b_tree_selected";
-	
-	public final static String REPOSITORY_SITE_CATALOG_CSS = "o_sel_repo_catalog";
-	public final static String REPOSITORY_SITE_SEARCH_FORM_CSS = "o_sel_repo_search_generic";
-	public final static String REPOSITORY_SITE_MY_ENTRIES_CSS = "o_sel_repo_my";
-	public final static String REPOSITORY_SITE_MY_COURSES_CSS = "o_sel_repo_my_student";
-	public final static String REPOSITORY_SITE_MY_SUPERVISED_COURSES_CSS = "o_sel_repo_my_teacher";
-	public final static String REPOSITORY_SITE_COURSES_CSS = "o_sel_repo_course";
-	public final static String REPOSITORY_SITE_CP_LEARNING_CONTENT_CSS = "o_sel_repo_cp";
-	public final static String REPOSITORY_SITE_SCORM_LEARNING_CONTENT_CSS = "o_sel_repo_scorm";
-	public final static String REPOSITORY_SITE_WIKIS_CSS = "o_sel_repo_wiki";
-	public final static String REPOSITORY_SITE_PODCASTS_CSS = "o_sel_repo_podcast";
-	public final static String REPOSITORY_SITE_BLOGS_CSS = "o_sel_repo_blog";
-	public final static String REPOSITORY_SITE_PORTFOLIO_TEMPLATES_CSS = "o_sel_repo_portfolio";
-	public final static String REPOSITORY_SITE_TESTS_CSS = "o_sel_repo_test";
-	public final static String REPOSITORY_SITE_QUESTIONAIRES_CSS = "o_sel_repo_survey";
-	public final static String REPOSITORY_SITE_RESOURCE_FOLDER_CSS = "o_sel_repo_sharefolder";
-	public final static String REPOSITORY_SITE_GLOSSARY_CSS = "o_sel_repo_glossary";
-	
-	public final static String CATALOG_NAVIGATION_CSS = "o_catalog_nav";
-	public final static String CATALOG_ADD_SUBCATEGORY = "o_sel_catalog_add_category";
-	public final static String CATALOG_ADD_LEARNING_RESOURCE = "o_sel_catalog_add_link_to_resource";
-	public final static String CATALOG_ADD_SUBCATEGORY_POPUP_CSS = "o_sel_catalog_add_category_popup";
-	public final static String CATALOG_SUBCATEGORY_ICON_CSS = "o_catalog_sub_icon";
-	public final static String CATALOG_SUBCATEGORY_LIST_CSS = "o_catalog_itemlist";
-	
-	public final static String COURSE_MODULE_ICON_CSS = "o_CourseModule_icon";
-	
-	public enum Column {
-		AC,
-		TYPE,
-		TITLE_OF_LEARNING_RESOURCE,
-		AUTHOR,
-		ACCESS,
-		CREATED,
-		LAST_ACCESS,
-		DETAILED_VIEW;
-	}
-	
-	public final static String IMPORT_COURSE_CSS = "o_sel_repo_import_course";
-	public final static String IMPORT_CP_LEARNING_CONTENT_CSS = "o_sel_repo_import_cp";
-	public final static String IMPORT_SCORM_CSS = "o_sel_repo_import_scorm";
-	public final static String IMPORT_WIKI_CSS = "o_sel_repo_import_wiki";
-	public final static String IMPORT_PODCAST_CSS = "o_sel_repo_import_podcast";
-	public final static String IMPORT_BLOG_CSS = "o_sel_repo_import_blog";
-	public final static String IMPORT_TEST_CSS = "o_sel_repo_import_test";
-	public final static String IMPORT_QUESTIONAIRE_CSS = "o_sel_repo_import_questionnaire";
-	public final static String IMPORT_GLOSSARY_CSS = "o_sel_repo_import_glossary";
-	public final static String IMPORT_OTHER_CSS = "o_sel_repo_import_doc";
-	
-	public final static String CREATE_COURSE_CSS = "o_sel_repo_new_course";
-	public final static String CREATE_CP_LEARNING_CONTENT_CSS = "o_sel_repo_new_cp";
-	public final static String CREATE_WIKI_CSS = "o_sel_repo_new_wiki";
-	public final static String CREATE_PODCAST_CSS = "o_sel_repo_new_podcast";
-	public final static String CREATE_BLOG_CSS = "o_sel_repo_new_blog";
-	public final static String CREATE_PORTFOLIO_CSS = "o_sel_repo_new_portfolio";
-	public final static String CREATE_TEST_CSS = "o_sel_repo_new_test";
-	public final static String CREATE_QUESTIONAIRE_CSS = "o_sel_repo_new_questionnaire";
-	public final static String CREATE_FOLDER_CSS = "o_sel_repo_new_sharedfolder";
-	public final static String CREATE_GLOSSARY_CSS = "o_sel_repo_new_glossary";
-	
-	public final static String CP_LEARNING_CONTENT_ALIAS = "cp";
-	public final static String WIKI_ALIAS = "wiki";
-	public final static String PODCAST_ALIAS = "podcast";
-	public final static String BLOG_ALIAS = "blog";
-	public final static String PORTFOLIO_ALIAS = "portfolio";
-	public final static String IQTEST_ALIAS = "iqtest";
-	public final static String QUESTIONAIRE_ALIAS = "iqsurv";
-	public final static String RESOURCE_FOLDER_ALIAS = "bc";
-	public final static String GLOSSARY_ALIAS = "glossary";
-
-	public final static String TITLE_OF_LEARNING_RESOURCE_CSS = "o_sel_repo_search_displayname";
-	public final static String AUTHOR_CSS = "o_sel_repo_search_author";
-	public final static String DESCRIPTION_CSS = "o_sel_repo_search_description";
-	public final static String ID_CSS = "o_sel_repo_search_id";
-	public final static String LIMIT_SEARCH_CSS = "o_sel_repo_search_type_limit";
-	
-	public enum SearchField {	
-		TITLE_OF_LEARNING_RESOURCE(TITLE_OF_LEARNING_RESOURCE_CSS),
-		AUTHOR(AUTHOR_CSS),
-		DESCRIPTION(DESCRIPTION_CSS),
-		ID(ID_CSS),
-		LIMIT_SEARCH(LIMIT_SEARCH_CSS);
-		
-		private String entryCss;
-		
-		SearchField(String entryCss){
-			setEntryCss(entryCss);
-		}
-
-		public String getEntryCss() {
-			return entryCss;
-		}
-
-		public void setEntryCss(String entryCss) {
-			this.entryCss = entryCss;
-		}
-	}
-	
-	public enum RepositorySiteAction {
-		CATALOG,
-		SEARCH_FORM,
-		MY_ENTRIES,
-		MY_COURSES,
-		MY_SUPERVISED_COURSES,
-		COURSES,
-		CP_LEARNING_CONTENT,
-		SCORM_LEARNING_CONTENT,
-		WIKIS,
-		PODCASTS,
-		BLOGS,
-		PORTFOLIO_TEMPLATES,
-		TESTS,
-		QUESTIONAIRES,
-		RESOURCE_FOLDER,
-		GLOSSARY;
-	}
-	
-	public enum AccessSettings {
-		ONLY_OWNERS,
-		OWNERS_AND_AUTHORS,
-		USERS,
-		USERS_AND_GUESTS,
-		MEMBERS_ONLY;
-	}
-	
-	public enum NextSteps {
-		WIZARD("sw"),
-		COURSE_EDITOR("ce"),
-		DETAILED_VIEW("dv");
-		
-		private String value;
-		
-		NextSteps(String value){
-			setValue(value);
-		}
-		
-		public String getValue(){
-			return(value);
-		}
-		
-		public void setValue(String value){
-			this.value = value;
-		}
-	}
-	
-	public enum CourseWizardElement {
-		INFO_PAGE("sp"),
-		ENROLLMENT("en"),
-		DOWNLOAD_FOLDER("bc"),
-		FORUM("fo"),
-		EMAIL("co");
-
-		private String value;
-		
-		CourseWizardElement(String value){
-			setValue(value);
-		}
-		
-		public String getValue(){
-			return(value);
-		}
-		
-		public void setValue(String value){
-			this.value = value;
-		}
-	}
-	
-	public enum CourseWizardAccess {
-		USERS("acl_olat"),
-		USERS_AND_GUESTS("acl_guest");
-		
-		private String value;
-
-		CourseWizardAccess(String value){
-			setValue(value);
-		}
-		
-		public String getValue(){
-			return(value);
-		}
-		
-		public void setValue(String value){
-			this.value = value;
-		}
-	}
-	
-	//TODO:JK: add CSS classes
-	public enum DetailedViewAction{
-		CLOSE(null),
-		COPY(null),
-		DELETE(null);
-		
-		private String actionCss;
-		
-		DetailedViewAction(String actionCss){
-			setActionCss(actionCss);
-		}
-
-		public String getActionCss() {
-			return actionCss;
-		}
-
-		public void setActionCss(String actionCss) {
-			this.actionCss = actionCss;
-		}
-	}
-	
-	public final static String TOOLBOX_CONTENT_CSS = "b_toolbox_content";
-	public final static String TOOLBOX_COURSE_CSS = "o_toolbox_course";
-	public final static String TOOLBOX_CONTENT_PACKAGE_CSS = "o_toolbox_content";
-	public final static String TOOLBOX_WIKI_CSS = "o_toolbox_wiki";
-	public final static String TOOLBOX_PODCAST_CSS = "o_toolbox_podcast";
-	public final static String TOOLBOX_BLOG_CSS = "o_toolbox_blog";
-	public final static String TOOLBOX_PORTFOLIO_CSS = "o_toolbox_portfolio";
-	public final static String TOOLBOX_IQTEST_CSS = "o_toolbox_test";
-	public final static String TOOLBOX_QUESTIONNAIRE_CSS = "o_toolbox_questionnaire";
-	public final static String TOOLBOX_SHAREDFOLDER_CSS = "o_toolbox_sharedfolder";
-	public final static String TOOLBOX_GLOSSARY_CSS = "o_toolbox_glossary";
-	
-	private String repositoryPopupCss;
-	private String repositorySaveDetailsCss;
-	private String repositoryAddForwardCss;
-	private String repositoryAddTemplateForwardCss;
-	
-	private String courseWizardPublishCheckbox;
-	private String courseWizardAccessOptionCss;
-	
-	private String repositorySiteMenuTreeSelectedCss;
-	
-	private String repositorySiteCatalogCss;
-	private String repositorySiteSearchFormCss;
-	private String repositorySiteMyEntriesCss;
-	private String repositorySiteMyCoursesCss;
-	private String repositorySiteMySupervisedCoursesCss;
-	private String repositorySiteCoursesCss;
-	private String repositorySiteCPLearningContentCss;
-	private String repositorySiteScormLearningContentCss;
-	private String repositorySiteWikisCss;
-	private String repositorySitePodcastsCss;
-	private String repositorySiteBlogsCss;
-	private String repositorySitePortfolioTemplatesCss;
-	private String repositorySiteTestsCss;
-	private String repositorySiteQuestionairesCss;
-	private String repositorySiteResourceFolderCss;
-	private String repositorySiteGlossaryCss;
-
-	private String catalogNavigationCss;
-	private String catalogAddSubcategoryCss;
-	private String catalogAddLearningResourceCss;
-	private String catalogAddSubcategoryPopupCss;
-	private String catalogSubcategoryListCss;
-	private String catalogSubcategoryIconCss;
-	
-	private String courseModuleIconCss;
-	
-	private String importCourseCss;
-	private String importCPLearningContentCss;
-	private String importScormCss;
-	private String importWikiCss;
-	private String importPodcastCss;
-	private String importBlogCss;
-	private String importTestCss;
-	private String importQuestionaireCss;
-	private String importGlossaryCss;
-	private String importOtherCss;
-	
-	private String createCourseCss;
-	private String createCPLearningContentCss;
-	private String createWikiCss;
-	private String createPodcastCss;
-	private String createBlogCss;
-	private String createPortfolioCss;
-	private String createTestCss;
-	private String createQuestionaireCss;
-	private String createFolderCss;
-	private String createGlossaryCss;
-	
-	private String toolboxContentCss;
-	private String toolboxCourseCss;
-	private String toolboxContentPackageCss;
-	private String toolboxWikiCss;
-	private String toolboxPodcastCss;
-	private String toolboxBlogCss;
-	private String toolboxPortfolioCss;
-	private String toolboxIQTestCss;
-	private String toolboxQuestionnaireCss;
-	private String toolboxSharedfolderCss;
-	private String toolboxGlossaryCss;
-	
-	private String courseTabActiveCss;
-	private String courseTabCloseCss;
-	
-	private FunctionalUtil functionalUtil;
-	private FunctionalCourseUtil functionalCourseUtil;
-	
-	
-	public FunctionalRepositorySiteUtil(FunctionalUtil functionalUtil){
-		setRepositoryPopupCss(REPOSITORY_POPUP_CSS);
-		setRepositorySaveDetailsCss(REPOSITORY_SAVE_DETAILS_CSS);
-		setRepositoryAddForwardCss(REPOSITORY_ADD_FORWARD_CSS);
-		setRepositoryAddTemplateForwardCss(REPOSITORY_ADD_TEMPLATE_FORWARD_CSS);
-		
-		setCourseWizardPublishCheckbox(COURSE_WIZARD_PUBLISH_CHECKBOX);
-		setCourseWizardAccessOptionId(COURSE_WIZARD_ACCESS_OPTION_ID);
-		
-		setRepositorySiteMenuTreeSelectedCss(REPOSITORY_SITE_MENU_TREE_SELECTED_CSS);
-		
-		setRepositorySiteCatalogCss(REPOSITORY_SITE_CATALOG_CSS);
-		setRepositorySiteSearchFormCss(REPOSITORY_SITE_SEARCH_FORM_CSS);
-		setRepositorySiteMyEntriesCss(REPOSITORY_SITE_MY_ENTRIES_CSS);
-		setRepositorySiteMyCoursesCss(REPOSITORY_SITE_MY_COURSES_CSS);
-		setRepositorySiteMySupervisedCoursesCss(REPOSITORY_SITE_MY_SUPERVISED_COURSES_CSS);
-		setRepositorySiteCoursesCss(REPOSITORY_SITE_COURSES_CSS);
-		setRepositorySiteCPLearningContentCss(REPOSITORY_SITE_CP_LEARNING_CONTENT_CSS);
-		setRepositorySiteScormLearningContentCss(REPOSITORY_SITE_SCORM_LEARNING_CONTENT_CSS);
-		setRepositorySiteWikisCss(REPOSITORY_SITE_WIKIS_CSS);
-		setRepositorySitePodcastsCss(REPOSITORY_SITE_PODCASTS_CSS);
-		setRepositorySiteBlogsCss(REPOSITORY_SITE_BLOGS_CSS);
-		setRepositorySitePortfolioTemplatesCss(REPOSITORY_SITE_PORTFOLIO_TEMPLATES_CSS);
-		setRepositorySiteTestsCss(REPOSITORY_SITE_TESTS_CSS);
-		setRepositorySiteQuestionairesCss(REPOSITORY_SITE_QUESTIONAIRES_CSS);
-		setRepositorySiteResourceFolderCss(REPOSITORY_SITE_RESOURCE_FOLDER_CSS);
-		setRepositorySiteGlossaryCss(REPOSITORY_SITE_GLOSSARY_CSS);
-
-		setCatalogNavigationCss(CATALOG_NAVIGATION_CSS);
-		setCatalogAddSubcategoryCss(CATALOG_ADD_SUBCATEGORY);
-		setCatalogAddLearningResourceCss(CATALOG_ADD_LEARNING_RESOURCE);
-		setCatalogAddSubcategoryPopupCss(CATALOG_ADD_SUBCATEGORY_POPUP_CSS);
-		setCatalogSubcategoryListCss(CATALOG_SUBCATEGORY_LIST_CSS);
-		setCatalogSubcategoryIconCss(CATALOG_SUBCATEGORY_ICON_CSS);
-		
-		setCourseModuleIconCss(COURSE_MODULE_ICON_CSS);
-		
-		setImportCourseCss(IMPORT_COURSE_CSS);
-		setImportCPLearningContentCss(IMPORT_CP_LEARNING_CONTENT_CSS);
-		setImportScormCss(IMPORT_SCORM_CSS);
-		setImportWikiCss(IMPORT_WIKI_CSS);
-		setImportPodcastCss(IMPORT_PODCAST_CSS);
-		setImportBlogCss(IMPORT_BLOG_CSS);
-		setImportTestCss(IMPORT_TEST_CSS);
-		setImportQuestionaireCss(IMPORT_QUESTIONAIRE_CSS);
-		setImportGlossaryCss(IMPORT_GLOSSARY_CSS);
-		setImportOtherCss(IMPORT_OTHER_CSS);
-
-		setCreateCourseCss(CREATE_COURSE_CSS);
-		setCreateCPLearningContentCss(CREATE_CP_LEARNING_CONTENT_CSS);
-		setCreateWikiCss(CREATE_WIKI_CSS);
-		setCreatePodcastCss(CREATE_PODCAST_CSS);
-		setCreateBlogCss(CREATE_BLOG_CSS);
-		setCreatePortfolioCss(CREATE_PORTFOLIO_CSS);
-		setCreateTestCss(CREATE_TEST_CSS);
-		setCreateQuestionaireCss(CREATE_QUESTIONAIRE_CSS);
-		setCreateFolderCss(CREATE_FOLDER_CSS);
-		setCreateGlossaryCss(CREATE_GLOSSARY_CSS);
-		
-		setToolboxContentCss(TOOLBOX_CONTENT_CSS);
-		setToolboxCourseCss(TOOLBOX_COURSE_CSS);
-		setToolboxContentPackageCss(TOOLBOX_CONTENT_PACKAGE_CSS);
-		setToolboxWikiCss(TOOLBOX_WIKI_CSS);
-		setToolboxPodcastCss(TOOLBOX_PODCAST_CSS);
-		setToolboxBlogCss(TOOLBOX_BLOG_CSS);
-		setToolboxPortfolioCss(TOOLBOX_PORTFOLIO_CSS);
-		setToolboxIQTestCss(TOOLBOX_IQTEST_CSS);
-		setToolboxQuestionnaireCss(TOOLBOX_QUESTIONNAIRE_CSS);
-		setToolboxSharedfolderCss(TOOLBOX_SHAREDFOLDER_CSS);
-		setToolboxGlossaryCss(TOOLBOX_GLOSSARY_CSS);
-		
-		setCourseTabActiveCss(FunctionalCourseUtil.COURSE_TAB_ACTIVE_CSS);
-		setCourseTabCloseCss(FunctionalCourseUtil.COURSE_TAB_CLOSE_CSS);
-		
-		setFunctionalUtil(functionalUtil);
-		functionalCourseUtil = new FunctionalCourseUtil(functionalUtil, this);
-	}
-	
-	/**
-	 * creates a single selector.
-	 * 
-	 * @param name
-	 * @return
-	 */
-	private String createCatalogSelector(String name){
-		StringBuffer selector = new StringBuffer();
-		
-		selector.append("xpath=//div[contains(@class, '")
-		.append(getCatalogSubcategoryListCss())
-		.append("')]//a//span[contains(@class, '")
-		.append(getCatalogSubcategoryIconCss())
-		.append("') and text()='")
-		.append(name)
-		.append("']/..");
-		
-		return(selector.toString());
-	}
-	
-	/**
-	 * Creates xpath selectors to select catalog within the tree.
-	 * 
-	 * @param path
-	 * @return
-	 */
-	public String[] createCatalogSelectors(String path){
-		if(path == null ||
-				!path.startsWith("/")){
-			return(null);
-		}
-		
-		Matcher categoryMatcher = categoryPattern.matcher(path);
-		ArrayList<String> selectors = new ArrayList<String>();
-		
-		while(categoryMatcher.find()){
-			selectors.add(createCatalogSelector(categoryMatcher.group(1)));
-		}
-		
-		return(selectors.toArray(new String[selectors.size()]));
-	}
-	
-	/**
-	 * Adds a subcategory to catalog on the specified path.
-	 * 
-	 * @param browser
-	 * @param path
-	 * @param name
-	 * @param description
-	 * @return
-	 */
-	public boolean createCatalogSubcategory(Selenium browser, String path, String name, String description){
-		if(!functionalUtil.openSite(browser, FunctionalUtil.OlatSite.LEARNING_RESOURCES)){
-			return(false);
-		}
-		
-		if(!openActionByMenuTree(browser, RepositorySiteAction.CATALOG)){
-			return(false);
-		}
-		
-		/* click on catalog root */
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getCatalogNavigationCss())
-		.append("')]//a");
-		
-		if(browser.isElementPresent(selectorBuffer.toString())){
-			browser.click(selectorBuffer.toString());
-		}
-		
-		/* create selectors to open desired path within catalog and open it */
-		String[] selectors = createCatalogSelectors(path);
-		
-		if(selectors != null){
-			for(String currentSelector: selectors){
-				functionalUtil.waitForPageToLoadElement(browser, currentSelector);
-				browser.click(currentSelector);
-			}
-			
-			functionalUtil.waitForPageToUnloadElement(browser, selectors[selectors.length - 1]);
-		}
-		
-		/* check if catalog already exists */
-		functionalUtil.idle(browser);
-		
-		String selector = createCatalogSelector(name);
-		
-		if(browser.isElementPresent(selector)){
-			return(true);
-		}
-		
-		/* click create */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//a[contains(@class, '")
-		.append(getCatalogAddSubcategoryCss())
-		.append("')]");
-		
-		browser.click(selectorBuffer.toString());
-		
-		/* fill in name */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form//div[contains(@class, '")
-		.append(getCatalogAddSubcategoryPopupCss())
-		.append("')]//input[@type='text']");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), name);
-		
-		/* fill in description */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form//div[contains(@class, '")
-		.append(getCatalogAddSubcategoryPopupCss())
-		.append("')]//textarea");
-		
-		browser.type(selectorBuffer.toString(), description);
-		
-		/* click save */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//form//div[contains(@class, '")
-		.append(getCatalogAddSubcategoryPopupCss())
-		.append("')]//button[contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')])[last()]");
-		
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToUnloadElement(browser, selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Select displayed columns of repository table.
-	 * 
-	 * @param browser
-	 * @param column
-	 * @return
-	 */
-	public boolean displayColumns(Selenium browser, List<Column> column){
-		//TODO:JK: implement me
-		
-		return(false);
-	}
-	
-	/**
-	 * Find the corresponding CSS class for page.
-	 * 
-	 * @param action
-	 * @return the matching CSS class
-	 */
-	public String findCssClassOfAction(Object action){
-		if(action == null)
-			return(null);
-		
-		String selectedCss = null;
-		
-		switch((RepositorySiteAction) action){
-		case CATALOG:
-		{
-			selectedCss = getRepositorySiteCatalogCss();
-			break;
-		}
-		case SEARCH_FORM:
-		{
-			selectedCss = getRepositorySiteSearchFormCss();
-			break;
-		}
-		case MY_ENTRIES:
-		{
-			selectedCss = getRepositorySiteMyEntriesCss();
-			break;
-		}
-		case MY_COURSES:
-		{
-			selectedCss = getRepositorySiteMyCoursesCss();
-			break;
-		}
-		case MY_SUPERVISED_COURSES:
-		{
-			selectedCss = getRepositorySiteMySupervisedCoursesCss();
-			break;
-		}
-		case COURSES:
-		{
-			selectedCss = getRepositorySiteCoursesCss();
-			break;
-		}
-		case CP_LEARNING_CONTENT:
-		{
-			selectedCss = getRepositorySiteCPLearningContentCss();
-			break;
-		}
-		case SCORM_LEARNING_CONTENT:
-		{
-			selectedCss = getRepositorySiteScormLearningContentCss();
-			break;
-		}
-		case WIKIS:
-		{
-			selectedCss = getRepositorySiteWikisCss();
-			break;
-		}
-		case PODCASTS:
-		{
-			selectedCss = getRepositorySitePodcastsCss();
-			break;
-		}
-		case BLOGS:
-		{
-			selectedCss = getRepositorySiteBlogsCss();
-			break;
-		}
-		case PORTFOLIO_TEMPLATES:
-		{
-			selectedCss = getRepositorySitePortfolioTemplatesCss();
-			break;
-		}
-		case TESTS:
-		{
-			selectedCss = getRepositorySiteTestsCss();
-			break;
-		}
-		case QUESTIONAIRES:
-		{
-			selectedCss = getRepositorySiteQuestionairesCss();
-			break;
-		}
-		case RESOURCE_FOLDER:
-		{
-			selectedCss = getRepositorySiteResourceFolderCss();
-			break;
-		}
-		case GLOSSARY:
-		{
-			selectedCss = getRepositorySiteGlossaryCss();
-			break;
-		}
-		}
-		
-		return(selectedCss);
-	}
-	
-	/**
-	 * Check if the correct page is open.
-	 * 
-	 * @param browser
-	 * @param action
-	 * @return true if match otherwise false
-	 */
-	public boolean checkCurrentPage(Selenium browser, Object action){
-		functionalUtil.idle(browser);
-		
-		String selectedCss = findCssClassOfAction(action);
-		
-		if(selectedCss == null)
-			return(false);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("css=ul .")
-		.append(selectedCss)
-		.append('.')
-		.append(getRepositorySiteMenuTreeSelectedCss())
-		.append(" * a");
-		
-		if(browser.isElementPresent(selectorBuffer.toString())){
-			return(true);
-		}else{
-			return(false);
-		}
-	}
-	
-	/**
-	 * Browse the learning resources site's navigation.
-	 * 
-	 * @param browser
-	 * @param action
-	 * @return true on success otherwise false
-	 */
-	public boolean openActionByMenuTree(Selenium browser, Object action){ //activateMenuTreeAction(browser, action)
-		functionalUtil.idle(browser);
-		
-		String selectedCss = findCssClassOfAction(action);
-		
-		if(selectedCss == null){
-			return(false);
-		}
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("css=ul .")
-		.append(selectedCss)
-		.append(" * a");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Waits until course has been loaded.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	private boolean waitForPageToLoadCourse(Selenium browser){
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		//FIXME:JK: this isn't very safe because there may be more than one open courses
-		selectorBuffer.append("xpath=//li[contains(@class, '")
-		.append(getCourseTabActiveCss())
-		.append("')]//a[contains(@class, '")
-		.append(getCourseTabCloseCss())
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens a course by using business path.
-	 * 
-	 * @param browser
-	 * @param key
-	 * @return true on success otherwise false
-	 */
-	public boolean openCourse(Selenium browser, long key){
-		functionalUtil.openBusinessPath(browser, functionalUtil.getDeploymentUrl() + "/url/RepositoryEntry/" + key);
-		
-		return(true);
-	}
-
-	/**
-	 * Opens a course matching key by using the search form.
-	 * 
-	 * @param browser
-	 * @param key
-	 * @return true on success otherwise false
-	 */
-	public boolean openCourseWithoutBusinessPath(Selenium browser, Long key){
-		if(!functionalUtil.openSite(browser, OlatSite.LEARNING_RESOURCES))
-			return(false);
-
-		if(!openActionByMenuTree(browser, RepositorySiteAction.SEARCH_FORM))
-			return(false);
-
-		functionalUtil.idle(browser);
-		
-		//FIXME:JK: use CSS classes instead of ordinal
-		int searchFormIndex = 0;
-
-		/* open search form */
-		functionalUtil.typeText(browser, SearchField.ID.getEntryCss(), key.toString());
-
-		/* click search */
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//form[")
-		.append(searchFormIndex + 1)
-		.append("]")
-		.append("//div[@class='b_form_element']")
-		.append("//a[@class='b_button']");
-
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-
-		/* click course */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("//form")
-		.append("//tr[contains(@class,'b_first_child') and contains(@class, 'b_last_child')]")
-		.append("//td[3]") //FIXME:JK: this isn't very safe
-		.append("//a");
-
-		browser.click(selectorBuffer.toString());
-
-		waitForPageToLoadCourse(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens a course by its title. The nth search result will be opened.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param nth
-	 * @return
-	 */
-	public boolean openCourse(Selenium browser, String title, int nth){
-		if(!functionalUtil.openSite(browser, OlatSite.LEARNING_RESOURCES))
-			return(false);
-
-		if(!openActionByMenuTree(browser, RepositorySiteAction.SEARCH_FORM))
-			return(false);
-
-		functionalUtil.idle(browser);
-		
-		//FIXME:JK: use CSS classes instead of ordinal
-		int searchFormIndex = 0;
-
-		/* open search form */
-		functionalUtil.typeText(browser, SearchField.TITLE_OF_LEARNING_RESOURCE.getEntryCss(), title);
-
-		/* click search */
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//form[")
-		.append(searchFormIndex + 1)
-		.append("]")
-		.append("//div[@class='b_form_element']")
-		.append("//a[@class='b_button']");
-
-		browser.click(selectorBuffer.toString());
-		functionalUtil.waitForPageToLoad(browser);
-
-		/* click course */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("//form")
-		.append("//tr")
-		.append("//td[3]") //FIXME:JK: this isn't very safe
-		.append("//a");
-
-		browser.click(selectorBuffer.toString());
-
-		waitForPageToLoadCourse(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param settings
-	 * @return
-	 */
-	public boolean modifySettings(Selenium browser, AccessSettings settings){
-		//TODO:JK: implement me
-		
-		return(false);
-	}
-	
-	/**
-	 * 
-	 * @param descriptor
-	 * @return
-	 */
-	public String findCssClassOfCourseAlias(String descriptor){
-		//TODO:JK: implement me
-		
-		return(null);
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param alias
-	 * @param title
-	 * @param description
-	 * @return
-	 */
-	public boolean createCourseNode(Selenium browser, String alias, String title, String description){
-		//TODO:JK: implement me
-		
-		return(false);
-	}
-	
-	/**
-	 * Clicks create course node of given CSS class.
-	 * 
-	 * @param browser
-	 * @param nodeCss
-	 * @return
-	 */
-	private boolean clickCreate(Selenium browser, String nodeCss){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getToolboxContentCss())
-		.append("')]//ul//li//a[contains(@class, '")
-		.append(nodeCss)
-		.append("')]");
-		
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens the appropriate detailed view.
-	 * 
-	 * @param browser
-	 * @param key
-	 * @return
-	 */
-	public boolean openDetailedView(Selenium browser, Long key){
-		//TODO:JK: implement me
-		
-		return(false);
-	}
-	
-	/**
-	 * Opens the detail view of a specified learning resource.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param nth
-	 * @return true on success
-	 */
-	public boolean openDetailedView(Selenium browser, String title, int nth){
-		if(!functionalUtil.openSite(browser, OlatSite.LEARNING_RESOURCES))
-			return(false);
-
-		functionalUtil.idle(browser);
-		
-		//FIXME:JK: use CSS classes instead of ordinal
-		int searchFormIndex = 0;
-
-		/* open search form */
-		functionalUtil.typeText(browser, SearchField.TITLE_OF_LEARNING_RESOURCE.getEntryCss(), title);
-
-		/* click search */
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("xpath=//form[")
-		.append(searchFormIndex + 1)
-		.append("]")
-		.append("//div[@class='b_form_element']")
-		.append("//a[contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')]");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-
-		/* click course */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-
-		selectorBuffer.append("//form")
-		.append("//tr[")
-		.append(nth)
-		.append("]")
-		.append("//td[6]") //FIXME:JK: this isn't very safe
-		.append("//a");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @return the id
-	 */
-	private long readIdFromDetailView(Selenium browser){
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=");
-		//TODO:JK: implement me		
-		
-		long id = Long.parseLong(browser.getText(selectorBuffer.toString()));
-		
-		return(id);
-	}
-	
-	/**
-	 * Clicks the appropriate action defined by parameter actionCss.
-	 * 
-	 * @param browser
-	 * @param actionCss
-	 * @return
-	 */
-	private boolean clickDetailedViewAction(Selenium browser, String actionCss){
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//ul//li//a[contains(@class, '")
-		.append(actionCss)
-		.append("')]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Fills in title and description of a newly created repository entry.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @return true on success
-	 */
-	private boolean fillInTitleAndDescription(Selenium browser, String title, String description){
-		functionalUtil.idle(browser);
-		
-		/* fill in wizard - title */
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//form//div[contains(@class, '")
-		.append(functionalUtil.getWizardCss())
-		.append("')]//input[@type='text']");
-		
-		browser.type(locatorBuffer.toString(), title);
-		
-		/* fill in wizard - description */
-		functionalUtil.typeMCE(browser, description);
-
-		/* fill in wizard - click save */
-		functionalUtil.saveForm(browser, 0);
-		
-		return(true);
-	}
-	
-	/**
-	 * Creates a new blog in the repository.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @return the learning resource's id
-	 * @throws IOException
-	 */
-	public long createBlog(Selenium browser, String title, String description) throws IOException{
-		if(!functionalUtil.openSite(browser, OlatSite.LEARNING_RESOURCES))
-			throw(new IOException("can't open olat site of learning resources"));
-		
-		/* open wizard */
-		if(!clickCreate(browser, getCreateBlogCss()))
-			throw(new IOException("can't open create wizard of blog"));
-		
-		if(!openDetailedView(browser, title, 0))
-			throw(new IOException("can't open detail view"));
-			
-		long id = readIdFromDetailView(browser);
-		
-		/* fill in wizard - title and description */
-		if(!fillInTitleAndDescription(browser, title, description))
-			throw(new IOException("failed to fill in title and description"));
-		
-		/* fill in wizard - click next */
-		functionalUtil.clickWizardNext(browser);
-		
-		/* click no, we don't want to open the editor */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(functionalUtil.getWizardCss())
-		.append("']//form//");//TODO:JK: implement me
-		
-		browser.click(selectorBuffer.toString());
-		
-		return(id);
-	}
-	
-	/**
-	 * Fills in the title and description of a newly created course.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @return
-	 */
-	public boolean fillInRepositoryEntryPopup(Selenium browser, String title, String description){
-		functionalUtil.idle(browser);
-		
-		/* fill in title */
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, '")
-		.append(getRepositoryPopupCss())
-		.append("')]//input[@type='text']");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.type(selectorBuffer.toString(), title);
-		
-		/* fill in description */
-		functionalUtil.typeMCE(browser, getRepositoryPopupCss(), description);
-		
-		/* click save */
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getRepositoryPopupCss())
-		.append("')]//div[contains(@class, '")
-		.append(getRepositorySaveDetailsCss())
-		.append("')]//button[contains(@class, '")
-		.append(functionalUtil.getButtonDirtyCss())
-		.append("')])[1]");
-		
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.click(selectorBuffer.toString());
-		
-		/* click next */
-		functionalUtil.idle(browser);
-		
-		selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//div[contains(@class, 'b_window')]//a[contains(@class, '")
-		.append(getRepositoryAddForwardCss())
-		.append("')]");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.click(selectorBuffer.toString());
-
-		functionalUtil.waitForPageToUnloadElement(browser, selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Creates an empty course afterwards the course editor is opened.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @return true on success
-	 */
-	public boolean createCourseUsingEditor(Selenium browser, String title, String description){
-		if(!clickCreate(browser, getCreateCourseCss())){
-			return(false);
-		}
-		
-		if(!fillInRepositoryEntryPopup(browser, title, description)){
-			return(false);
-		}
-		
-		/* select course editor */
-		functionalUtil.clickRadio(browser, null, NextSteps.COURSE_EDITOR.getValue());
-		
-		/* click next */
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getRepositoryAddTemplateForwardCss())
-		.append("')]//button)[last()]");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToUnloadElement(browser, selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Creates a course using the wizard whereas the specified settings
-	 * will applied.
-	 * 
-	 * @param browser
-	 * @param title
-	 * @param description
-	 * @param element
-	 * @param catalog
-	 * @param publish
-	 * @param access
-	 * @return true on success
-	 */
-	public boolean createCourseUsingWizard(Selenium browser, String title, String description,
-			CourseWizardElement[] element, String catalog, boolean  publish, CourseWizardAccess access){
-		if(!clickCreate(browser, getCreateCourseCss())){
-			return(false);
-		}
-		
-		if(!fillInRepositoryEntryPopup(browser, title, description)){
-			return(false);
-		}
-		
-		/* select wizard */
-		functionalUtil.clickRadio(browser, null, NextSteps.WIZARD.getValue());
-		
-		/* click next */
-		functionalUtil.idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getRepositoryAddTemplateForwardCss())
-		.append("')]//button)[last()]");
-
-		functionalUtil.waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.click(selectorBuffer.toString());
-		
-		functionalUtil.waitForPageToUnloadElement(browser, selectorBuffer.toString());
-		
-		/* select course element */
-		for(CourseWizardElement current: element){
-			functionalUtil.clickCheckbox(browser, null, current.getValue());
-		}
-
-		functionalUtil.idle(browser);
-		
-		functionalUtil.clickWizardNext(browser);
-		functionalUtil.waitForPageToUnloadElement(browser, "//div[contains(@class, 'b_wizard')]//input[@type='checkbox']");
-		
-		/* catalog */
-		if(catalog != null){
-			String catalogSelectors = functionalCourseUtil.selectCatalogPath(browser, catalog);
-		
-			functionalUtil.idle(browser);
-			functionalUtil.waitForPageToLoadElement(browser, catalogSelectors);
-			//browser.click(catalogSelectors);
-		}
-		
-		functionalUtil.clickWizardNext(browser);
-		functionalUtil.waitForPageToUnloadElement(browser, "//div[contains(@class, 'b_wizard')]//div[contains(@class, 'x-tree-node')]");
-		
-		/* publish */
-		if(!publish){
-			functionalUtil.idle(browser);
-			
-			selectorBuffer = new StringBuffer();
-			
-			selectorBuffer.append("xpath=//div[contains(@class, 'b_wizard')]//input[@type='checkbox' and @name='")
-			.append(getCourseWizardPublishCheckbox())
-			.append("']");
-			
-			browser.click(selectorBuffer.toString());
-		}
-		
-		if(access != null){
-			functionalUtil.selectOption(browser, getCourseWizardAccessOptionId(), access.getValue());
-		}
-		
-		functionalUtil.clickWizardFinish(browser);
-		
-		//TODO:JK: catch error message in case of wrong configured mail
-		
-		return(true);
-	}
-
-	public boolean copyRepositoryEntry(Selenium browser, String title, String description) {
-		if(!clickDetailedViewAction(browser, DetailedViewAction.COPY.getActionCss())){
-			return(false);
-		}
-		
-		if(!fillInRepositoryEntryPopup(browser, title, description)){
-			return(false);
-		}
-		
-		return(true);
-	}
-	
-	public String getRepositoryPopupCss() {
-		return repositoryPopupCss;
-	}
-
-	public void setRepositoryPopupCss(String repositoryPopupCss) {
-		this.repositoryPopupCss = repositoryPopupCss;
-	}
-	
-	public String getRepositorySaveDetailsCss() {
-		return repositorySaveDetailsCss;
-	}
-
-	public void setRepositorySaveDetailsCss(String repositorySaveDetailsCss) {
-		this.repositorySaveDetailsCss = repositorySaveDetailsCss;
-	}
-
-	public String getRepositoryAddForwardCss() {
-		return repositoryAddForwardCss;
-	}
-
-	public void setRepositoryAddForwardCss(String repositoryAddForwardCss) {
-		this.repositoryAddForwardCss = repositoryAddForwardCss;
-	}
-	
-	public String getRepositoryAddTemplateForwardCss() {
-		return repositoryAddTemplateForwardCss;
-	}
-
-	public void setRepositoryAddTemplateForwardCss(
-			String repositoryAddTemplateForwardCss) {
-		this.repositoryAddTemplateForwardCss = repositoryAddTemplateForwardCss;
-	}
-
-	public String getCourseWizardPublishCheckbox() {
-		return courseWizardPublishCheckbox;
-	}
-
-	public void setCourseWizardPublishCheckbox(String courseWizardPublishCheckbox) {
-		this.courseWizardPublishCheckbox = courseWizardPublishCheckbox;
-	}
-
-	public String getCourseWizardAccessOptionId() {
-		return courseWizardAccessOptionCss;
-	}
-
-	public void setCourseWizardAccessOptionId(String courseWizardAccessOptionCss) {
-		this.courseWizardAccessOptionCss = courseWizardAccessOptionCss;
-	}
-
-	public String getRepositorySiteMenuTreeSelectedCss() {
-		return repositorySiteMenuTreeSelectedCss;
-	}
-
-	public void setRepositorySiteMenuTreeSelectedCss(
-			String repositorySitePageNavigationSelectedCss) {
-		this.repositorySiteMenuTreeSelectedCss = repositorySitePageNavigationSelectedCss;
-	}
-
-	public String getRepositorySiteCatalogCss() {
-		return repositorySiteCatalogCss;
-	}
-
-	public void setRepositorySiteCatalogCss(String repositorySiteCatalogCss) {
-		this.repositorySiteCatalogCss = repositorySiteCatalogCss;
-	}
-
-	public String getRepositorySiteSearchFormCss() {
-		return repositorySiteSearchFormCss;
-	}
-
-	public void setRepositorySiteSearchFormCss(
-			String repositorySiteSearchFormCss) {
-		this.repositorySiteSearchFormCss = repositorySiteSearchFormCss;
-	}
-
-	public String getRepositorySiteMyEntriesCss() {
-		return repositorySiteMyEntriesCss;
-	}
-
-	public void setRepositorySiteMyEntriesCss(
-			String repositorySiteMyEntriesCss) {
-		this.repositorySiteMyEntriesCss = repositorySiteMyEntriesCss;
-	}
-
-	public String getRepositorySiteMyCoursesCss() {
-		return repositorySiteMyCoursesCss;
-	}
-
-	public void setRepositorySiteMyCoursesCss(
-			String repositorySiteMyCoursesCss) {
-		this.repositorySiteMyCoursesCss = repositorySiteMyCoursesCss;
-	}
-
-	public String getRepositorySiteMySupervisedCoursesCss() {
-		return repositorySiteMySupervisedCoursesCss;
-	}
-
-	public void setRepositorySiteMySupervisedCoursesCss(
-			String repositorySiteMySupervisedCoursesCss) {
-		this.repositorySiteMySupervisedCoursesCss = repositorySiteMySupervisedCoursesCss;
-	}
-
-	public String getRepositorySiteCoursesCss() {
-		return repositorySiteCoursesCss;
-	}
-
-	public void setRepositorySiteCoursesCss(String repositorySiteCoursesCss) {
-		this.repositorySiteCoursesCss = repositorySiteCoursesCss;
-	}
-
-	public String getRepositorySiteCPLearningContentCss() {
-		return repositorySiteCPLearningContentCss;
-	}
-
-	public void setRepositorySiteCPLearningContentCss(
-			String repositorySiteCPLearningContentCss) {
-		this.repositorySiteCPLearningContentCss = repositorySiteCPLearningContentCss;
-	}
-
-	public String getRepositorySiteScormLearningContentCss() {
-		return repositorySiteScormLearningContentCss;
-	}
-
-	public void setRepositorySiteScormLearningContentCss(
-			String repositorySiteScormLearningContentCss) {
-		this.repositorySiteScormLearningContentCss = repositorySiteScormLearningContentCss;
-	}
-
-	public String getRepositorySiteWikisCss() {
-		return repositorySiteWikisCss;
-	}
-
-	public void setRepositorySiteWikisCss(String repositorySiteWikisCss) {
-		this.repositorySiteWikisCss = repositorySiteWikisCss;
-	}
-
-	public String getRepositorySitePodcastsCss() {
-		return repositorySitePodcastsCss;
-	}
-
-	public void setRepositorySitePodcastsCss(String repositorySitePodcastsCss) {
-		this.repositorySitePodcastsCss = repositorySitePodcastsCss;
-	}
-
-	public String getRepositorySiteBlogsCss() {
-		return repositorySiteBlogsCss;
-	}
-
-	public void setRepositorySiteBlogsCss(String repositorySiteBlogsCss) {
-		this.repositorySiteBlogsCss = repositorySiteBlogsCss;
-	}
-
-	public String getRepositorySitePortfolioTemplatesCss() {
-		return repositorySitePortfolioTemplatesCss;
-	}
-
-	public void setRepositorySitePortfolioTemplatesCss(
-			String repositorySitePortfolioTemplatesCss) {
-		this.repositorySitePortfolioTemplatesCss = repositorySitePortfolioTemplatesCss;
-	}
-
-	public String getRepositorySiteTestsCss() {
-		return repositorySiteTestsCss;
-	}
-
-	public void setRepositorySiteTestsCss(String repositorySiteTestsCss) {
-		this.repositorySiteTestsCss = repositorySiteTestsCss;
-	}
-
-	public String getRepositorySiteQuestionairesCss() {
-		return repositorySiteQuestionairesCss;
-	}
-
-	public void setRepositorySiteQuestionairesCss(
-			String repositorySiteQuestionairesCss) {
-		this.repositorySiteQuestionairesCss = repositorySiteQuestionairesCss;
-	}
-
-	public String getRepositorySiteResourceFolderCss() {
-		return repositorySiteResourceFolderCss;
-	}
-
-	public void setRepositorySiteResourceFolderCss(
-			String repositorySiteResourceFolderCss) {
-		this.repositorySiteResourceFolderCss = repositorySiteResourceFolderCss;
-	}
-
-	public String getRepositorySiteGlossaryCss() {
-		return repositorySiteGlossaryCss;
-	}
-
-	public void setRepositorySiteGlossaryCss(String repositorySiteGlossaryCss) {
-		this.repositorySiteGlossaryCss = repositorySiteGlossaryCss;
-	}
-
-	public String getCatalogNavigationCss() {
-		return catalogNavigationCss;
-	}
-
-	public void setCatalogNavigationCss(String catalogNavigationCss) {
-		this.catalogNavigationCss = catalogNavigationCss;
-	}
-
-	public String getCatalogAddSubcategoryCss() {
-		return catalogAddSubcategoryCss;
-	}
-
-	public void setCatalogAddSubcategoryCss(String catalogAddSubcategoryCss) {
-		this.catalogAddSubcategoryCss = catalogAddSubcategoryCss;
-	}
-
-	public String getCatalogAddLearningResourceCss() {
-		return catalogAddLearningResourceCss;
-	}
-
-	public void setCatalogAddLearningResourceCss(
-			String catalogAddLearningResourceCss) {
-		this.catalogAddLearningResourceCss = catalogAddLearningResourceCss;
-	}
-
-	public String getCatalogAddSubcategoryPopupCss() {
-		return catalogAddSubcategoryPopupCss;
-	}
-
-	public void setCatalogAddSubcategoryPopupCss(
-			String catalogAddSubcategoryPopupCss) {
-		this.catalogAddSubcategoryPopupCss = catalogAddSubcategoryPopupCss;
-	}
-
-	public String getCatalogSubcategoryListCss() {
-		return catalogSubcategoryListCss;
-	}
-
-	public void setCatalogSubcategoryListCss(String catalogSubcategoryListCss) {
-		this.catalogSubcategoryListCss = catalogSubcategoryListCss;
-	}
-
-	public String getCatalogSubcategoryIconCss() {
-		return catalogSubcategoryIconCss;
-	}
-
-	public void setCatalogSubcategoryIconCss(String catalogSubcategoryIconCss) {
-		this.catalogSubcategoryIconCss = catalogSubcategoryIconCss;
-	}
-
-	public String getCourseModuleIconCss() {
-		return courseModuleIconCss;
-	}
-
-	public void setCourseModuleIconCss(String courseModuleIconCss) {
-		this.courseModuleIconCss = courseModuleIconCss;
-	}
-
-	public String getImportCourseCss() {
-		return importCourseCss;
-	}
-
-	public void setImportCourseCss(String importCourseCss) {
-		this.importCourseCss = importCourseCss;
-	}
-
-	public String getImportCPLearningContentCss() {
-		return importCPLearningContentCss;
-	}
-
-	public void setImportCPLearningContentCss(String importCPLearningContentCss) {
-		this.importCPLearningContentCss = importCPLearningContentCss;
-	}
-
-	public String getImportScormCss() {
-		return importScormCss;
-	}
-
-	public void setImportScormCss(String importScormCss) {
-		this.importScormCss = importScormCss;
-	}
-
-	public String getImportWikiCss() {
-		return importWikiCss;
-	}
-
-	public void setImportWikiCss(String importWikiCss) {
-		this.importWikiCss = importWikiCss;
-	}
-
-	public String getImportPodcastCss() {
-		return importPodcastCss;
-	}
-
-	public void setImportPodcastCss(String importPodcastCss) {
-		this.importPodcastCss = importPodcastCss;
-	}
-
-	public String getImportBlogCss() {
-		return importBlogCss;
-	}
-
-	public void setImportBlogCss(String importBlogCss) {
-		this.importBlogCss = importBlogCss;
-	}
-
-	public String getImportTestCss() {
-		return importTestCss;
-	}
-
-	public void setImportTestCss(String importTestCss) {
-		this.importTestCss = importTestCss;
-	}
-
-	public String getImportQuestionaireCss() {
-		return importQuestionaireCss;
-	}
-
-	public void setImportQuestionaireCss(String importQuestionaireCss) {
-		this.importQuestionaireCss = importQuestionaireCss;
-	}
-
-	public String getImportGlossaryCss() {
-		return importGlossaryCss;
-	}
-
-	public void setImportGlossaryCss(String importGlossaryCss) {
-		this.importGlossaryCss = importGlossaryCss;
-	}
-
-	public String getImportOtherCss() {
-		return importOtherCss;
-	}
-
-	public void setImportOtherCss(String importOtherCss) {
-		this.importOtherCss = importOtherCss;
-	}
-
-	public String getCreateCourseCss() {
-		return createCourseCss;
-	}
-
-	public void setCreateCourseCss(String createCourseCss) {
-		this.createCourseCss = createCourseCss;
-	}
-
-	public String getCreateCPLearningContentCss() {
-		return createCPLearningContentCss;
-	}
-
-	public void setCreateCPLearningContentCss(String createCPLearningContentCss) {
-		this.createCPLearningContentCss = createCPLearningContentCss;
-	}
-
-	public String getCreateWikiCss() {
-		return createWikiCss;
-	}
-
-	public void setCreateWikiCss(String createWikiCss) {
-		this.createWikiCss = createWikiCss;
-	}
-
-	public String getCreatePodcastCss() {
-		return createPodcastCss;
-	}
-
-	public void setCreatePodcastCss(String createPodcastCss) {
-		this.createPodcastCss = createPodcastCss;
-	}
-
-	public String getCreateBlogCss() {
-		return createBlogCss;
-	}
-
-	public void setCreateBlogCss(String createBlogCss) {
-		this.createBlogCss = createBlogCss;
-	}
-
-	public String getCreatePortfolioCss() {
-		return createPortfolioCss;
-	}
-
-	public void setCreatePortfolioCss(String createPortfolioCss) {
-		this.createPortfolioCss = createPortfolioCss;
-	}
-
-	public String getCreateTestCss() {
-		return createTestCss;
-	}
-
-	public void setCreateTestCss(String createTestCss) {
-		this.createTestCss = createTestCss;
-	}
-
-	public String getCreateQuestionaireCss() {
-		return createQuestionaireCss;
-	}
-
-	public void setCreateQuestionaireCss(String createQuestionaireCss) {
-		this.createQuestionaireCss = createQuestionaireCss;
-	}
-
-	public String getCreateFolderCss() {
-		return createFolderCss;
-	}
-
-	public void setCreateFolderCss(String createFolderCss) {
-		this.createFolderCss = createFolderCss;
-	}
-
-	public String getCreateGlossaryCss() {
-		return createGlossaryCss;
-	}
-
-	public void setCreateGlossaryCss(String createGlossaryCss) {
-		this.createGlossaryCss = createGlossaryCss;
-	}
-
-	public String getToolboxContentCss() {
-		return toolboxContentCss;
-	}
-
-	public void setToolboxContentCss(String toolboxContentCss) {
-		this.toolboxContentCss = toolboxContentCss;
-	}
-
-	public String getToolboxCourseCss() {
-		return toolboxCourseCss;
-	}
-
-	public void setToolboxCourseCss(String toolboxCourseCss) {
-		this.toolboxCourseCss = toolboxCourseCss;
-	}
-
-	public String getToolboxContentPackageCss() {
-		return toolboxContentPackageCss;
-	}
-
-	public void setToolboxContentPackageCss(String toolboxContentPackageCss) {
-		this.toolboxContentPackageCss = toolboxContentPackageCss;
-	}
-
-	public String getToolboxWikiCss() {
-		return toolboxWikiCss;
-	}
-
-	public void setToolboxWikiCss(String toolboxWikiCss) {
-		this.toolboxWikiCss = toolboxWikiCss;
-	}
-
-	public String getToolboxPodcastCss() {
-		return toolboxPodcastCss;
-	}
-
-	public void setToolboxPodcastCss(String toolboxPodcastCss) {
-		this.toolboxPodcastCss = toolboxPodcastCss;
-	}
-
-	public String getToolboxBlogCss() {
-		return toolboxBlogCss;
-	}
-
-	public void setToolboxBlogCss(String toolboxBlogCss) {
-		this.toolboxBlogCss = toolboxBlogCss;
-	}
-
-	public String getToolboxPortfolioCss() {
-		return toolboxPortfolioCss;
-	}
-
-	public void setToolboxPortfolioCss(String toolboxPortfolioCss) {
-		this.toolboxPortfolioCss = toolboxPortfolioCss;
-	}
-
-	public String getToolboxIQTestCss() {
-		return toolboxIQTestCss;
-	}
-
-	public void setToolboxIQTestCss(String toolboxIQTestCss) {
-		this.toolboxIQTestCss = toolboxIQTestCss;
-	}
-
-	public String getToolboxQuestionnaireCss() {
-		return toolboxQuestionnaireCss;
-	}
-
-	public void setToolboxQuestionnaireCss(String toolboxQuestionnaireCss) {
-		this.toolboxQuestionnaireCss = toolboxQuestionnaireCss;
-	}
-
-	public String getToolboxSharedfolderCss() {
-		return toolboxSharedfolderCss;
-	}
-
-	public void setToolboxSharedfolderCss(String toolboxSharedfolderCss) {
-		this.toolboxSharedfolderCss = toolboxSharedfolderCss;
-	}
-
-	public String getToolboxGlossaryCss() {
-		return toolboxGlossaryCss;
-	}
-
-	public void setToolboxGlossaryCss(String toolboxGlossaryCss) {
-		this.toolboxGlossaryCss = toolboxGlossaryCss;
-	}
-
-	public String getCourseTabActiveCss() {
-		return courseTabActiveCss;
-	}
-
-	public void setCourseTabActiveCss(String courseTabActiveCss) {
-		this.courseTabActiveCss = courseTabActiveCss;
-	}
-
-	public String getCourseTabCloseCss() {
-		return courseTabCloseCss;
-	}
-
-	public void setCourseTabCloseCss(String courseTabCloseCss) {
-		this.courseTabCloseCss = courseTabCloseCss;
-	}
-
-	public FunctionalUtil getFunctionalUtil() {
-		return functionalUtil;
-	}
-
-	public void setFunctionalUtil(FunctionalUtil functionalUtil) {
-		this.functionalUtil = functionalUtil;
-	}
-
-	public FunctionalCourseUtil getFunctionalCourseUtil() {
-		return functionalCourseUtil;
-	}
-
-	public void setFunctionalCourseUtil(FunctionalCourseUtil functionalCourseUtil) {
-		this.functionalCourseUtil = functionalCourseUtil;
-	}
-}
diff --git a/src/test/java/org/olat/util/FunctionalUserManagementSiteUtil.java b/src/test/java/org/olat/util/FunctionalUserManagementSiteUtil.java
deleted file mode 100644
index d87bc221b8226c5ed4e70d2181d3e489c9082ee6..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/FunctionalUserManagementSiteUtil.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util;
-
-import com.thoughtworks.selenium.Selenium;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-public class FunctionalUserManagementSiteUtil {
-	
-	public enum UserManagementSiteAction {
-		USER_SEARCH,
-		CREATE_USER,
-		IMPORT_USER,
-		DELETE_USER,
-		DELETE_USER_IMMEDIATELY
-	}
-	
-	private FunctionalUtil functionalUtil;
-	
-	public FunctionalUserManagementSiteUtil(FunctionalUtil functionalUtil){
-		this.functionalUtil = functionalUtil;
-	}
-	
-	/**
-	 * Browse the learning resources site's navigation.
-	 * 
-	 * @param browser
-	 * @param action
-	 * @return true on success otherwise false
-	 */
-	public boolean openActionByMenuTree(Selenium browser, Object action){
-		//TODO:JK: implement me
-		
-		return(false);
-	}
-
-	public FunctionalUtil getFunctionalUtil() {
-		return functionalUtil;
-	}
-
-	public void setFunctionalUtil(FunctionalUtil functionalUtil) {
-		this.functionalUtil = functionalUtil;
-	}
-}
diff --git a/src/test/java/org/olat/util/FunctionalUtil.java b/src/test/java/org/olat/util/FunctionalUtil.java
deleted file mode 100644
index 2ffe10d9a06d4177a7dc43ace8fb9c13d4be2bff..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/FunctionalUtil.java
+++ /dev/null
@@ -1,1781 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util;
-
-import java.io.IOException;
-import java.util.Calendar;
-import java.util.Properties;
-
-import org.apache.commons.lang.ArrayUtils;
-import org.olat.core.logging.OLog;
-import org.olat.core.logging.Tracing;
-import org.olat.util.FunctionalAdministrationSiteUtil.AdministrationSiteAction;
-import org.olat.util.FunctionalGroupsSiteUtil.GroupsSiteAction;
-import org.olat.util.FunctionalHomeSiteUtil.HomeSiteAction;
-import org.olat.util.FunctionalRepositorySiteUtil.RepositorySiteAction;
-import org.olat.util.FunctionalUserManagementSiteUtil.UserManagementSiteAction;
-
-import com.thoughtworks.selenium.Selenium;
-import com.thoughtworks.selenium.SeleniumException;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-public class FunctionalUtil {
-	private final static OLog log = Tracing.createLoggerFor(FunctionalUtil.class);
-	
-	public final static String DEPLOYMENT_URL = "http://localhost:8080/openolat";
-	
-	public final static String LOGIN_PAGE = "dmz";
-	public final static String ACKNOWLEDGE_CHECKBOX = "acknowledge_checkbox";
-
-	public final static long TIMEOUT = 20000;
-	public final static long POLL_INTERVAL = 3000;
-	
-	public enum WaitLimitAttribute {
-		NORMAL("10000"),
-		EXTENDED("15000"),
-		SAVE("20000"),
-		VERY_SAVE("30000");
-		
-		private String extend;
-		private long extendAsLong;
-		
-		WaitLimitAttribute(String extend){
-			setExtend(extend);
-			setExtendAsLong(Long.parseLong(extend));
-		}
-
-		public String getExtend() {
-			return extend;
-		}
-
-		public void setExtend(String extend) {
-			this.extend = extend;
-		}
-
-		public long getExtendAsLong() {
-			return extendAsLong;
-		}
-
-		public void setExtendAsLong(long extendAsLong) {
-			this.extendAsLong = extendAsLong;
-		}
-	}
-	
-	public enum WaitForContentFlag {
-		EQUALS,
-		STRIP_TAGS;
-	}
-	
-	public final static WaitLimitAttribute DEFAULT_WAIT_LIMIT = WaitLimitAttribute.VERY_SAVE;
-	public final static String DEFAULT_IDLE = "-1";
-	
-	public enum OlatSite {
-		HOME,
-		GROUPS,
-		LEARNING_RESOURCES,
-		USER_MANAGEMENT,
-		ADMINISTRATION,
-	}
-
-	public final static String OLAT_TOP_NAVIGATION_LOGOUT_CSS = "b_logout";
-	
-	public final static String OLAT_NAVIGATION_SITE_CSS = "b_nav_site";
-	public final static String OLAT_ACTIVE_NAVIGATION_SITE_CSS = "b_nav_active";
-	
-	public final static String OLAT_SITE_HOME_CSS = "o_site_home";
-	public final static String OLAT_SITE_GROUPS_CSS = "o_site_groups";
-	public final static String OLAT_SITE_LEARNING_RESOURCES_CSS = "o_site_repository";
-	public final static String OLAT_SITE_USER_MANAGEMENT_CSS = "o_site_useradmin";
-	public final static String OLAT_SITE_ADMINISTRATION_CSS = "o_site_admin";
-
-	public final static String CONTENT_CSS = "o_main";
-	public final static String CONTENT_TAB_CSS = "b_item_";
-	public final static String ACTIVE_CONTENT_TAB_CSS = "b_active";
-	public final static String CONTENT_SEGMENT_CONTAINER_CSS = "b_segments_container";
-	public final static String CONTENT_SEGMENT_CSS = "b_segment";
-	
-	public final static String WINDOW_CSS = "b_window";
-	
-	public final static String WIZARD_CSS = "b_wizard";
-	public final static String WIZARD_NEXT_CSS = "b_wizard_button_next";
-	public final static String WIZARD_FINISH_CSS = "b_wizard_button_finish";
-	
-	public final static String MCE_CONTENT_BODY_CSS = "mceContentBody";
-	
-	public final static String BUTTON_CSS = "b_button";
-	public final static String BUTTON_DIRTY_CSS = "b_button_dirty";
-	public final static String BACK_BUTTON_CSS = "b_link_back";
-	
-	public final static String TABLE_FIRST_CHILD_CSS = "b_first_child";
-	public final static String TABLE_LAST_CHILD_CSS = "b_last_child";
-	public final static String TABLE_ALL_CSS = "b_table_page_all";
-	
-	public final static String TREE_NODE_ANCHOR_CSS = "b_tree_item_wrapper";
-	public final static String TREE_NODE_CSS = "b_tree_item_wrapper";
-	public final static String TREE_NODE_LOADING_CSS = null;
-	public final static String TREE_LEVEL0_CSS = "b_tree_l0";
-	public final static String TREE_LEVEL1_CSS = "b_tree_l1";
-	public final static String TREE_LEVEL2_CSS = "b_tree_l2";
-	public final static String TREE_LEVEL_OPEN_CSS = "b_tree_level_open";
-	public final static String TREE_LEVEL_CLOSE_CSS = "b_tree_level_close";
-	
-	public final static String WINDOW_CLOSE_LINK_CSS = "b_link_close";
-	
-	public final static String FORM_ELEMENT_CSS = "b_form_element";
-	public final static String FORM_SAVE_XPATH = "//button[@type='button' and last()]";
-
-	public final static String INFO_CSS = "b_info";
-	public final static String INFO_MESSAGE_BOX_CSS = "o_sel_info_message";
-	
-	private String username;
-	private String password;
-	
-	private String deploymentUrl;
-	private String waitLimit;
-	
-	private String loginPage;
-	private String acknowledgeCheckbox;
-	
-	private String olatTopNavigationLogoutCss;
-	
-	private String olatNavigationSiteCss;
-	private String olatActiveNavigationSiteCss;
-	
-	private String olatSiteHomeCss;
-	private String olatSiteGroupsCss;
-	private String olatSiteLearningResourcesCss;
-	private String olatSiteUserManagementCss;
-	private String olatSiteAdministrationCss;
-	
-	private String contentCss;
-	private String contentTabCss;
-	private String activeContentTabCss;
-	private String contentSegmentContainerCss;
-	private String contentSegmentCss;
-	
-	private String formSaveXPath;
-	
-	private String windowCss;
-	
-	private String wizardCss;
-	private String wizardNextCss;
-	private String wizardFinishCss;
-	
-	private String mceContentBodyCss;
-	
-	private String windowCloseLinkCss;
-	
-	private String infoCss;
-	
-	private String buttonCss;
-	private String buttonDirtyCss;
-	private String backButtonCss;
-	
-	private String tableFirstChildCss;
-	private String tableLastChildCss;
-	private String tableAllCss;
-	
-	private String treeNodeAnchorCss;
-	private String treeNodeCss;
-	private String treeNodeLoadingCss;
-	private String treeLevel0Css;
-	private String treeLevel1Css;
-	private String treeLevel2Css;
-	private String treeLevelOpenCss;
-	private String treeLevelCloseCss;
-	
-	private FunctionalHomeSiteUtil functionalHomeSiteUtil;
-	private FunctionalGroupsSiteUtil functionalGroupsSiteUtil;
-	private FunctionalRepositorySiteUtil functionalRepositorySiteUtil;
-	private FunctionalUserManagementSiteUtil functionalUserManagementSiteUtil;
-	private FunctionalAdministrationSiteUtil functionalAdministrationSiteUtil;
-	
-	private FunctionalHtmlUtil functionalHtmlUtil;
-	
-	public FunctionalUtil(){
-		Properties properties = new Properties();
-		
-		try {
-			//TODO:JK: use default properties file
-			properties.load(FunctionalUtil.class.getResourceAsStream("credentials.properties"));
-			
-			username = properties.getProperty("admin.login");
-			password = properties.getProperty("admin.password");
-		} catch (IOException e) {
-
-			username = "administrator";
-			password = "openolat";
-		}
-		
-		deploymentUrl = DEPLOYMENT_URL;
-		waitLimit = DEFAULT_IDLE;
-		
-		loginPage = LOGIN_PAGE;
-		acknowledgeCheckbox = ACKNOWLEDGE_CHECKBOX;
-		
-		olatTopNavigationLogoutCss = OLAT_TOP_NAVIGATION_LOGOUT_CSS;
-		
-		olatNavigationSiteCss = OLAT_NAVIGATION_SITE_CSS;
-		olatActiveNavigationSiteCss = OLAT_ACTIVE_NAVIGATION_SITE_CSS;
-		
-		olatSiteHomeCss = OLAT_SITE_HOME_CSS;
-		olatSiteGroupsCss = OLAT_SITE_GROUPS_CSS;
-		olatSiteLearningResourcesCss = OLAT_SITE_LEARNING_RESOURCES_CSS;
-		olatSiteUserManagementCss = OLAT_SITE_USER_MANAGEMENT_CSS;
-		olatSiteAdministrationCss = OLAT_SITE_ADMINISTRATION_CSS;
-		
-		contentCss = CONTENT_CSS;
-		contentTabCss = CONTENT_TAB_CSS;
-		activeContentTabCss = ACTIVE_CONTENT_TAB_CSS;
-		contentSegmentContainerCss = CONTENT_SEGMENT_CONTAINER_CSS;
-		contentSegmentCss = CONTENT_SEGMENT_CSS;
-		
-		formSaveXPath = FORM_SAVE_XPATH;
-		
-		windowCss = WINDOW_CSS;
-		
-		wizardCss = WIZARD_CSS;
-		wizardNextCss = WIZARD_NEXT_CSS;
-		wizardFinishCss = WIZARD_FINISH_CSS;
-		
-		mceContentBodyCss = MCE_CONTENT_BODY_CSS;
-		
-		windowCloseLinkCss = WINDOW_CLOSE_LINK_CSS;
-		
-		infoCss = INFO_CSS;
-		
-		buttonCss = BUTTON_CSS;
-		buttonDirtyCss = BUTTON_DIRTY_CSS;
-		backButtonCss = BACK_BUTTON_CSS;
-		
-		tableFirstChildCss = TABLE_FIRST_CHILD_CSS;
-		tableLastChildCss = TABLE_LAST_CHILD_CSS;
-		tableAllCss = TABLE_ALL_CSS;
-		
-		treeNodeAnchorCss = TREE_NODE_ANCHOR_CSS;
-		treeNodeCss = TREE_NODE_CSS;
-		treeNodeLoadingCss = TREE_NODE_LOADING_CSS;
-		treeLevel0Css = TREE_LEVEL0_CSS;
-		treeLevel1Css = TREE_LEVEL1_CSS;
-		treeLevel2Css = TREE_LEVEL2_CSS;
-		treeLevelOpenCss = TREE_LEVEL_OPEN_CSS;
-		treeLevelCloseCss = TREE_LEVEL_CLOSE_CSS;
-		
-		functionalHomeSiteUtil = new FunctionalHomeSiteUtil(this);
-		functionalGroupsSiteUtil = new FunctionalGroupsSiteUtil(this);
-		functionalRepositorySiteUtil = new FunctionalRepositorySiteUtil(this);
-		functionalUserManagementSiteUtil = new FunctionalUserManagementSiteUtil(this);
-		functionalAdministrationSiteUtil = new FunctionalAdministrationSiteUtil(this);
-		
-		functionalHtmlUtil = new FunctionalHtmlUtil();
-	}
-	
-	/**
-	 * Loads the specified page with default deployment url.
-	 * 
-	 * @param browser
-	 * @param page
-	 */
-	public void loadPage(Selenium browser, String page){
-		/* create url */
-		StringBuilder urlBuffer = new StringBuilder();
-		urlBuffer.append(deploymentUrl).append('/').append(page);
-		
-		String url = urlBuffer.toString();
-		
-		/* open url and wait specified time */
-		browser.open(url);
-		waitForPageToLoad(browser);
-	}
-	
-	/**
-	 * Is idle as long as link is busy. 
-	 * 
-	 * @param browser
-	 */
-	public void idle(Selenium browser){
-		long startTime = Calendar.getInstance().getTimeInMillis();
-		long currentTime = startTime;
-		long waitLimit = TIMEOUT;
-
-		//FIXME:JK: this is really ugly. For better performance revise confirmation
-		if(browser.isConfirmationPresent()){
-			browser.getConfirmation();
-		}
-		
-		while(linkBusy(browser) && waitLimit >  currentTime - startTime){
-			try {
-				Thread.sleep(POLL_INTERVAL);
-			} catch (InterruptedException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
-			
-			currentTime = Calendar.getInstance().getTimeInMillis();
-		}
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 */
-	public void waitForPageToLoad(Selenium browser){
-		waitForPageToLoad(browser, DEFAULT_WAIT_LIMIT);
-	}
-
-	/**
-	 * 
-	 * @param browser
-	 * @param wait
-	 */
-	public void waitForPageToLoad(Selenium browser, WaitLimitAttribute wait){
-		String waitLimit = Long.toString(Long.parseLong(getWaitLimit()) + Long.parseLong(wait.getExtend()));
-		
-		browser.waitForPageToLoad(waitLimit);
-		
-		idle(browser);
-	}
-
-	
-	/**
-	 * Waits at most (waitLimit + WaitLimitAttribute.VERY_SAVE) amount of time for element to load
-	 * specified by locator.
-	 * 
-	 * @param browser
-	 * @param locator
-	 * @param throwException
-	 * @return true on success otherwise false
-	 * @throws SeleniumException
-	 */
-	public boolean waitForPageToLoadElement(Selenium browser, String locator) throws SeleniumException{
-		return(waitForPageToLoadElement(browser, locator, DEFAULT_WAIT_LIMIT, true));
-	}
-	
-	/**
-	 * Waits at most (waitLimit + WaitLimitAttribute.VERY_SAVE) amount of time for element to load
-	 * specified by locator.
-	 * 
-	 * @param browser
-	 * @param locator
-	 * @param throwException
-	 * @return true on success otherwise false
-	 * @throws SeleniumException
-	 */
-	public boolean waitForPageToLoadElement(Selenium browser, String locator, boolean throwException) throws SeleniumException{
-		return(waitForPageToLoadElement(browser, locator, DEFAULT_WAIT_LIMIT, throwException));
-	}
-	
-	/** 
-	 * Waits at most (waitLimit + wait) amount of time for element to load
-	 * specified by locator.
-	 *
-	 * @param browser
-	 * @param locator
-	 * @param wait
-	 * @param throwException
-	 * @return true on success otherwise false
-	 * @throws SeleniumException
-	 */
-	public boolean waitForPageToLoadElement(Selenium browser, String locator, WaitLimitAttribute wait, boolean throwException) throws SeleniumException {
-		idle(browser);
-		
-		long startTime = Calendar.getInstance().getTimeInMillis();
-		long currentTime = startTime;
-		long waitLimit = Long.parseLong(getWaitLimit()) + Long.parseLong(wait.getExtend());
-
-		log.info("waiting for page to load element");
-		
-		int count = 0;
-		do{
-			if(browser.isElementPresent(locator)){
-				log.info("found element after " + (currentTime - startTime) + "ms");
-				return true;
-			} else if(count > 2) {
-				log.info("Waiting for: " + locator);
-			}
-			
-			try {
-				Thread.sleep(POLL_INTERVAL);
-			} catch (InterruptedException e) {
-				log.error("", e);
-			}
-
-			currentTime = Calendar.getInstance().getTimeInMillis();
-			count++;
-		} while(waitLimit >  currentTime - startTime);
-		
-		log.warn("giving up after " + waitLimit + "ms");
-		
-		if(throwException){
-			throw new SeleniumException("timed out after " + waitLimit + "ms");
-		}
-		
-		return(false);
-	}
-	
-	public boolean waitForPageToLoadContent(Selenium browser, String iframeSelectors, String content, WaitLimitAttribute wait, boolean throwException){
-		return(waitForPageToLoadContent(browser, new String[]{ iframeSelectors }, content, wait, new WaitForContentFlag[]{WaitForContentFlag.EQUALS, WaitForContentFlag.STRIP_TAGS}, throwException));
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param iframeSelectors
-	 * @param content
-	 * @param wait
-	 * @param throwException
-	 * @return
-	 */
-	public boolean waitForPageToLoadContent(Selenium browser, String[] iframeSelectors, String content, WaitLimitAttribute wait, boolean throwException){
-		return(waitForPageToLoadContent(browser, iframeSelectors, content, wait, new WaitForContentFlag[]{WaitForContentFlag.EQUALS, WaitForContentFlag.STRIP_TAGS}, throwException));
-	}
-	
-	public boolean waitForPageToLoadContent(Selenium browser, String[] iframeSelectors, String content, WaitLimitAttribute wait, WaitForContentFlag[] flags, boolean throwException){
-		idle(browser);
-		
-		long startTime = Calendar.getInstance().getTimeInMillis();
-		long currentTime = startTime;
-		long waitLimit = Long.parseLong(getWaitLimit()) + Long.parseLong(wait.getExtend());
-
-		log.info("waiting for page to load content element");
-		
-		/* traverse iframes */
-		if(iframeSelectors != null){
-			for(int i=0; i < iframeSelectors.length;i++) {
-				browser.selectFrame(iframeSelectors[i]);
-			}
-		}
-		
-		do{
-			String source = browser.getHtmlSource();
-			
-			if(flags != null && ArrayUtils.contains(flags, WaitForContentFlag.STRIP_TAGS)){
-				source = functionalHtmlUtil.stripTags(source, true);
-			}
-			
-			boolean useEquals = (flags != null && ArrayUtils.contains(flags, WaitForContentFlag.EQUALS));
-			
-			if((content == null && source == null) || 
-					(useEquals && content != null && source != null && content.trim().equals(source.trim())) ||
-					(source != null && content != null && !ArrayUtils.contains(flags, WaitForContentFlag.EQUALS) && source.trim().contains(content.trim()))) {
-				log.info("found content after " + (currentTime - startTime) + "ms");
-				
-				/* go back to toplevel */
-				if(iframeSelectors != null){
-					browser.selectFrame("relative=top");
-				}
-				
-				return true;
-			}
-			
-			try {
-				Thread.sleep(POLL_INTERVAL);
-			} catch (InterruptedException e) {
-				e.printStackTrace();
-			}
-			
-			
-			currentTime = Calendar.getInstance().getTimeInMillis();
-		}while(waitLimit >  currentTime - startTime);
-		
-		log.warn("giving up after " + waitLimit + "ms");
-		
-		/* go back to toplevel */
-		browser.selectFrame("relative=top");
-		
-		if(throwException){
-			throw new SeleniumException("timed out after " + waitLimit + "ms");
-		}
-		return false;
-	}
-	
-	/**
-	 * Waits at most (waitLimit + WaitLimitAttribute.VERY_SAVE) amount of time for element to load
-	 * specified by locator.
-	 * 
-	 * @param browser
-	 * @param locator
-	 * @return true on success otherwise false
-	 * @throws SeleniumException
-	 */
-	public boolean waitForPageToUnloadElement(Selenium browser, String locator) throws SeleniumException {
-		return(waitForPageToUnloadElement(browser, locator, DEFAULT_WAIT_LIMIT, true));
-	}
-	
-	/**
-	 * Waits at most (waitLimit + WaitLimitAttribute.VERY_SAVE) amount of time for element to load
-	 * specified by locator.
-	 * 
-	 * @param browser
-	 * @param locator
-	 * @param throwException
-	 * @return true on success otherwise false
-	 * @throws SeleniumException
-	 */
-	public boolean waitForPageToUnloadElement(Selenium browser, String locator, boolean throwException) throws SeleniumException {
-		return(waitForPageToUnloadElement(browser, locator, DEFAULT_WAIT_LIMIT, throwException));
-	}
-	
-	/**
-	 * Waits at most (waitLimit + wait) amount of time for element to load
-	 * specified by locator.
-	 * 
-	 * @param browser
-	 * @param locator
-	 * @param wait
-	 * @param throwException
-	 * @return true on success otherwise false
-	 * @throws SeleniumException
-	 */
-	public boolean waitForPageToUnloadElement(Selenium browser, String locator, WaitLimitAttribute wait, boolean throwException) throws SeleniumException {
-		idle(browser);
-		
-		long startTime = Calendar.getInstance().getTimeInMillis();
-		long currentTime = startTime;
-		long waitLimit = Long.parseLong(getWaitLimit()) + Long.parseLong(wait.getExtend());
-
-		log.info("waiting for page to unload element");
-		
-		do{
-			if(!browser.isElementPresent(locator)){
-				log.info("didn't find element after " + (currentTime - startTime) + "ms");
-				
-				return(true);
-			}
-			
-			try {
-				Thread.sleep(POLL_INTERVAL);
-			} catch (InterruptedException e) {
-				e.printStackTrace();
-			}
-			
-			
-			currentTime = Calendar.getInstance().getTimeInMillis();
-		}while(waitLimit >  currentTime - startTime);
-		
-		log.warn("giving up after " + waitLimit + "ms");
-		
-		if(throwException){
-			throw new SeleniumException("timed out after " + waitLimit + "ms");
-		}
-		
-		return(false);
-	}
-	
-	/**
-	 * Retrieves the business path.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public String currentBusinessPath(Selenium browser){
-		return(browser.getEval("window.o_info.businessPath"));
-	}
-	
-	/**
-	 * Retrieves the business path.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public String openBusinessPath(Selenium browser, String businessPath){
-		idle(browser);
-		
-		browser.open(businessPath);
-
-		idle(browser);
-		
-		return(null);
-	}
-	
-	
-	/**
-	 * Retrieves the linkbusy JavaScript variable.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public boolean linkBusy(Selenium browser){
-		String val = null;
-		
-		try{
-			val = browser.getEval("window.o_info.linkbusy");
-		}catch(Exception e){
-			log.warn("caught exception while retrieving o_info.linkbusy: assuming not busy", e);
-			
-			return(false);
-		}
-			
-		if(val == null || val.isEmpty()){
-			return(false);
-		}else{
-			return(Boolean.parseBoolean(val));
-		}
-	}
-	
-	/**
-	 * Retrieve the user count who currently are logged in by parsing openolat footer.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public int retrieveUserCount(Selenium browser){
-		StringBuffer selectorBuffer = new StringBuffer();
-		selectorBuffer.append("xpath=//span[@id='b_counter']//span");
-		
-		waitForPageToLoadElement(browser, selectorBuffer.toString());
-		String str = browser.getText(selectorBuffer.toString());
-		
-		return(Integer.valueOf(str));
-	}
-	
-	/**
-	 * Find CSS mapping for specific olat site.
-	 * 
-	 * @param site
-	 * @return the matching CSS class
-	 */
-	public String findCssClassOfSite(OlatSite site){
-		String selectedCss;
-		
-		selectedCss = null;
-		
-		switch(site){
-		case HOME:
-		{
-			selectedCss = getOlatSiteHomeCss();
-			break;
-		}
-		case GROUPS:
-		{
-			selectedCss = getOlatSiteGroupsCss();
-			break;
-		}
-		case LEARNING_RESOURCES:
-		{
-			selectedCss = getOlatSiteLearningResourcesCss();
-			break;
-		}
-		case USER_MANAGEMENT:
-		{
-			selectedCss = getOlatSiteUserManagementCss();
-			break;
-		}
-		case ADMINISTRATION:
-		{
-			selectedCss = getOlatSiteAdministrationCss();
-			break;
-		}
-		}
-		
-		return(selectedCss);
-	}
-	
-	/**
-	 * Check if the correct olat site is open.
-	 * 
-	 * @param browser
-	 * @param site
-	 * @return true if match otherwise false
-	 */
-	public boolean checkCurrentSite(Selenium browser, OlatSite site){
-		return(checkCurrentSite(browser, site, -1));
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param site
-	 * @param timeout
-	 * @return
-	 */
-	public boolean checkCurrentSite(Selenium browser, OlatSite site, long timeout){
-		idle(browser);
-		
-		String selectedCss = findCssClassOfSite(site);
-		
-		if(selectedCss == null){
-			return(false);
-		}
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("css=.")
-		.append(getOlatNavigationSiteCss())
-		.append(".")
-		.append(getOlatActiveNavigationSiteCss())
-		.append(".")
-		.append(selectedCss);
-
-		long timeElapsed = 0;
-		long startTime = Calendar.getInstance().getTimeInMillis();
-		
-		do{
-			if(browser.isElementPresent(selectorBuffer.toString())){
-				return(true);
-			}
-			
-			if(timeout != -1){
-				try {
-					Thread.sleep(POLL_INTERVAL);
-				} catch (InterruptedException e) {
-					log.error("", e);
-				}
-			}
-			
-			timeElapsed = Calendar.getInstance().getTimeInMillis() - startTime;
-		}while(timeElapsed <= timeout && timeout != -1);
-		
-		return(false);
-	}
-	
-	/**
-	 * Clicks the appropriate action on a site that it would be
-	 * on it's initial state i.e. it looks like the user wouldn't
-	 * have visited site before.
-	 * 
-	 * @param browser
-	 * @param site
-	 * @return true on success
-	 */
-	private boolean resetSite(Selenium browser, OlatSite site){
-		boolean retval = false;
-		
-		switch(site){
-		case HOME:
-		{
-			retval = functionalHomeSiteUtil.openActionByMenuTree(browser, HomeSiteAction.PORTAL);
-		}
-		break;
-		case GROUPS:
-		{
-			retval = functionalGroupsSiteUtil.openActionByMenuTree(browser, GroupsSiteAction.MY_GROUPS);
-		}
-		break;
-		case LEARNING_RESOURCES:
-		{
-			retval = functionalRepositorySiteUtil.openActionByMenuTree(browser, RepositorySiteAction.MY_ENTRIES);
-		}
-		break;
-		case USER_MANAGEMENT:
-		{
-			retval = functionalUserManagementSiteUtil.openActionByMenuTree(browser, UserManagementSiteAction.USER_SEARCH);
-		}
-		break;
-		case ADMINISTRATION:
-		{
-			retval = functionalAdministrationSiteUtil.openActionByMenuTree(browser, AdministrationSiteAction.SYSTEM);
-		}
-		break;
-		}
-		
-		return(retval);
-	}
-	
-	/**
-	 * Open a specific olat site.
-	 * 
-	 * @param browser
-	 * @param site
-	 * @return true on success otherwise false
-	 */
-	public boolean openSite(Selenium browser, OlatSite site){
-		String selectedCss = findCssClassOfSite(site);
-		
-		if(selectedCss == null){
-			return(false);
-		}
-		
-		//FIXME:JK: this is a known bottleneck, but can't be set to -1 until info messages will be clicked away!
-		if(checkCurrentSite(browser, site, Long.parseLong(getWaitLimit()))){
-			if(resetSite(browser, site)){
-				return(true);
-			}else{
-				return(false);
-			}
-		}
-		
-		/* open the appropriate site */
-		idle(browser);
-		
-		StringBuilder selectorBuffer = new StringBuilder();
-		
-		selectorBuffer.append("css=.")
-		.append(getOlatNavigationSiteCss())
-		.append(".")
-		.append(selectedCss)
-		.append(" a");
-		
-		waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		waitForPageToLoad(browser);
-		waitForPageToLoadElement(browser, selectorBuffer.toString(), WaitLimitAttribute.NORMAL, false);
-		
-		/* set it to it's initial state */
-		resetSite(browser, site);
-		
-		return(true);
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 */
-	public void clickAwayInfoMessages(Selenium browser){
-		//TODO:JK: the impatients and fearless may want to implement this method but be aware there may be more than one notification at the same time
-	}
-	
-	/**
-	 * Login to olat using selenium.
-	 * 
-	 * @param browser
-	 * @return true on success otherwise false
-	 */
-	public boolean login(Selenium browser){
-		return login(browser, true);
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param closeDialogs
-	 * @return
-	 */
-	public boolean login(Selenium browser, boolean closeDialogs){
-		return(login(browser, getUsername(), getPassword(), closeDialogs));
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param username
-	 * @param password
-	 * @param closeDialogs
-	 * @return
-	 */
-	public boolean login(Selenium browser, String username, String password, boolean closeDialogs){
-		loadPage(browser, getLoginPage());
-		waitForPageToLoadElement(browser, "xpath=//button[@id='o_fiooolat_login_button']");
-		
-		/* fill in login form */
-		browser.type("id=o_fiooolat_login_name", username);
-		browser.type("id=o_fiooolat_login_pass", password);
-	    browser.click("xpath=//button[@id='o_fiooolat_login_button']");
-	    waitForPageToLoad(browser, DEFAULT_WAIT_LIMIT);
-	    
-	    if(closeDialogs){
-	    	/* check if it's our first login */
-	    	if(browser.isElementPresent("name=" + getAcknowledgeCheckbox())){
-	    		browser.click("name=" + getAcknowledgeCheckbox());
-
-	    		/* click accept button */
-	    		browser.click("xpath=//div[contains(@class, 'b_window')]//button[last()]");
-	    		waitForPageToLoad(browser);
-	    	}
-
-	    	/* click away info dialogs eg. restore session */
-	    	//TODO:JK: find a way to solve endless loop
-	    	//while(browser.isElementPresent("class="+ getInfoDialog())){
-	    		/* click last button */
-	    	if(browser.isElementPresent("//div[contains(@class, '"+ getInfoCss() + "')]")){
-	    		browser.click("xpath=//form//div//button[@type='button']/../../span/a[contains(@class, '" + getButtonCss() + "')]");
-	    		waitForPageToLoad(browser);
-	    	}
-	    	//}
-	    }
-		
-		/* validate page */
-	    return(true);
-	}
-	
-	/**
-	 * Logout from olat LMS.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public boolean logout(Selenium browser){
-		idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("css=#")
-		.append(getOlatTopNavigationLogoutCss());
-		
-		waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens a tab at the specific tabIndex.
-	 * 
-	 * @param browser
-	 * @param tabIndex
-	 * @return true on success otherwise false
-	 */
-	public boolean openContentTab(Selenium browser, int tabIndex){
-		idle(browser);
-		
-		StringBuffer activeTabSelectorBuffer = new StringBuffer();
-		
-		activeTabSelectorBuffer.append("css=#")
-		.append(getContentCss())
-		.append(" ul .")
-		.append(getContentTabCss())
-		.append(tabIndex + 1)
-		.append('.')
-		.append(getActiveContentTabCss());
-		
-		if(!browser.isElementPresent(activeTabSelectorBuffer.toString())){
-			StringBuffer selectorBuffer = new StringBuffer();
-			
-			selectorBuffer.append("css=#")
-			.append(getContentCss())
-			.append(" ul .")
-			.append(getContentTabCss())
-			.append(tabIndex + 1)
-			.append(" * a");
-			
-			waitForPageToLoadElement(browser, selectorBuffer.toString());
-			
-			browser.click(selectorBuffer.toString());
-			waitForPageToLoad(browser);
-		}
-		
-		return(true);
-	}
-	
-	/**
-	 * Opens a segment at the specified segmentIndex.
-	 * 
-	 * @param browser
-	 * @param segmentIndex
-	 * @return
-	 */
-	public boolean openContentSegment(Selenium browser, int segmentIndex){
-		idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=(//div[contains(@class, '")
-		.append(getContentSegmentContainerCss())
-		.append("')]//ul//li[contains(@class, '")
-		.append(getContentSegmentCss())
-		.append("')])[")
-		.append(segmentIndex + 1)
-		.append("]//a");
-		
-		waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Save the form at the position formIndex within content element.
-	 * 
-	 * @param browser
-	 * @param formIndex
-	 * @return true on success
-	 */
-	public boolean saveForm(Selenium browser, int formIndex){
-		saveForm(browser, formIndex, getWaitLimit());
-		
-		return(true);
-	}
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param formIndex
-	 * @param waitLimit
-	 * @return
-	 */
-	public boolean saveForm(Selenium browser, int formIndex, String waitLimit){
-		idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form[")
-		.append(formIndex + 1)
-		.append("]")
-		.append(getFormSaveXPath());
-		
-		waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		waitForPageToLoad(browser);
-		
-		return(true);
-	}
-	
-	/**
-	 * Clicks the checkbox at position checkboxIndex from the selection at position checkboxGroupIndex.
-	 * 
-	 * @param browser
-	 * @param formIndex
-	 * @param checkboxGroupIndex
-	 * @param checkboxIndex
-	 * @return true on success
-	 */
-	@Deprecated
-	public boolean clickCheckbox(Selenium browser, int formIndex, int checkboxGroupIndex, int checkboxIndex){
-		idle(browser);
-	
-		StringBuffer selectorBuffer = new StringBuffer();
-	
-		selectorBuffer.append("xpath=//form[")
-		.append(formIndex)
-		.append("]")
-		.append("//div[contains(@class, 'b_form_selection_vertical') or contains(@class, 'b_form_selection_horizontal')][")
-		.append(checkboxGroupIndex + 1)
-		.append("]")
-		.append("//input[@type='checkbox'][")
-		.append(checkboxIndex + 1)
-		.append("]");
-		
-		waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Clicks the radio button with specific value attribute in groupCss container.
-	 * 
-	 * @param browser
-	 * @param groupCss
-	 * @param value
-	 * @return true on success
-	 */
-	public boolean clickCheckbox(Selenium browser, String groupCss, String value){
-		idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form")
-		.append("//div[contains(@class, 'b_form_selection_vertical') or contains(@class, 'b_form_selection_horizontal')]")
-		.append("//input[@type='checkbox' and @value='")
-		.append(value)
-		.append("']");
-		
-		waitForPageToLoadElement(browser, selectorBuffer.toString());
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Clicks the radio button at position radioIndex from the selection at position radioGroupIndex.
-	 * 
-	 * @param browser
-	 * @param formIndex
-	 * @param radioGroupIndex
-	 * @param radioIndex
-	 * @return true on success
-	 */
-	@Deprecated
-	public boolean clickRadio(Selenium browser, int formIndex, int radioGroupIndex, int radioIndex){
-		idle(browser);
-	
-		StringBuffer selectorBuffer = new StringBuffer();
-	
-		selectorBuffer.append("xpath=//form[")
-		.append(formIndex)
-		.append("]")
-		.append("//div[contains(@class, 'b_form_selection_vertical') or contains(@class, 'b_form_selection_horizontal')][")
-		.append(radioGroupIndex)
-		.append("]")
-		.append("//input[@type='radio'][")
-		.append(radioIndex)
-		.append("]");
-		
-		waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.click(selectorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Clicks the radio button with specific value attribute in groupCss container.
-	 * 
-	 * @param browser
-	 * @param groupCss
-	 * @param value
-	 * @return true on success
-	 */
-	public boolean clickRadio(Selenium browser, String groupCss, String value){
-		idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("//form")
-		.append("//div[contains(@class, 'b_form_selection_vertical') or contains(@class, 'b_form_selection_horizontal')]")
-		.append("//input[@type='radio' and @value='")
-		.append(value)
-		.append("']");
-
-		waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		browser.click(selectorBuffer.toString());
-
-		return(true);
-	}
-	
-	/**
-	 * Type text in the specified text entry at textIndex position within form at formIndex.
-	 * 
-	 * @param browser
-	 * @param formIndex
-	 * @param textIndex
-	 * @param text
-	 * @return true on success
-	 */
-	@Deprecated
-	public boolean typeText(Selenium browser, int formIndex, int textIndex, String text){
-		idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form[")
-		.append(formIndex)
-		.append("]")
-		.append("//input[@type='text'][")
-		.append(textIndex)
-		.append("]");
-		
-		browser.type(selectorBuffer.toString(), text);
-		
-		return(true);
-	}
-	
-	/**
-	 * Types text to the with CSS class specified entry.
-	 * 
-	 * @param browser
-	 * @param entryCss
-	 * @param text
-	 * @return true on success
-	 */
-	public boolean typeText(Selenium browser, String entryCss, String text){
-		idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form")
-		.append("//div[contains(@class, '")
-		.append(entryCss)
-		.append("')]")
-		.append("//input[@type='text']");
-		
-		browser.type(selectorBuffer.toString(), text);
-		
-		return(true);
-	}
-	
-	
-	
-	/**
-	 * 
-	 * @param browser
-	 * @param content
-	 * @return
-	 */
-	public void typeMCE(Selenium browser, String content){
-		if(content == null)return;
-		
-		idle(browser);
-		
-		String iframeSelector = "dom=document.getElementsByClassName('mce-edit-area')[0].getElementsByTagName('iframe')[0]";
-
-		browser.runScript("top.tinymce.activeEditor.setContent('" + content + "')");
-
-		String strippedContent = functionalHtmlUtil.stripTags(content, true);
-		waitForPageToLoadContent(browser, iframeSelector, strippedContent, DEFAULT_WAIT_LIMIT, true);
-	}
-
-	/**
-	 * 
-	 * @param browser
-	 * @param cssClass
-	 * @param content
-	 * @return
-	 */
-	public void typeMCE(Selenium browser, String cssClass, String content) {
-		if(content == null) return;
-
-		idle(browser);
-		
-		//wait tiny
-		StringBuilder iframeSelectorBuffer = new StringBuilder();
-		iframeSelectorBuffer.append("dom=document.getElementsByClassName('")
-		  .append(cssClass)
-		  .append("')[0].getElementsByClassName('mce-edit-area')[0].getElementsByTagName('iframe')[0]");
-		
-		StringBuilder selectorBuffer = new StringBuilder(iframeSelectorBuffer);
-		selectorBuffer.append(".contentDocument.body");
-		waitForPageToLoadElement(browser, selectorBuffer.toString());
-		
-		//write in tiny
-		try {
-			String selIframe = "//div[contains(@class,'" + cssClass + "')]//div[contains(@class,'mce-tinymce')]//iframe";
-			String iframeId = browser.getAttribute("" + selIframe + "@id");
-			int index = iframeId.lastIndexOf('_');
-			String editorId = iframeId.substring(0, index);
-			content = content.replace("\n", "<br/>");
-			browser.runScript("top.tinymce.editors['" + editorId + "'].setContent('" + content + "')");
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		//wait until it's done
-		String strippedContent = functionalHtmlUtil.stripTags(content, true);
-		waitForPageToLoadContent(browser, iframeSelectorBuffer.toString(),
-				strippedContent, DEFAULT_WAIT_LIMIT, true);
-	}
-	
-	/**
-	 * Types text to the with CSS class specified password entry.
-	 * 
-	 * @param browser
-	 * @param entryCss
-	 * @param text
-	 * @return true on success
-	 */
-	public boolean typePassword(Selenium browser, String entryCss, String text){
-		idle(browser);
-		
-		StringBuffer selectorBuffer = new StringBuffer();
-		
-		selectorBuffer.append("xpath=//form")
-		.append("//div[contains(@class, '")
-		.append(entryCss)
-		.append("')]")
-		.append("//input[@type='password']");
-		
-		browser.type(selectorBuffer.toString(), text);
-		
-		return(true);
-	}
-	
-	/**
-	 * Select an item of an option box.
-	 * 
-	 * @param browser
-	 * @param id
-	 * @param value
-	 * @return
-	 */
-	public boolean selectOption(Selenium browser, String id, String value){
-		idle(browser);
-		
-		StringBuffer selectLocatorBuffer = new StringBuffer();
-		
-		selectLocatorBuffer.append("xpath=//form")
-		.append("//select[@id='")
-		.append(id)
-		.append("']");
-		
-		StringBuffer optionLocatorBuffer = new StringBuffer();
-		
-		optionLocatorBuffer.append("value=")
-		.append(value);
-		
-		waitForPageToLoadElement(browser, selectLocatorBuffer.toString());
-		browser.select(selectLocatorBuffer.toString(), optionLocatorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Clicks the next button of a wizard.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public boolean clickWizardNext(Selenium browser){
-		idle(browser);
-		
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//form//a[contains(@class, '")
-		.append(getWizardNextCss())
-		.append("')]");
-		
-		waitForPageToLoadElement(browser, locatorBuffer.toString());
-		browser.click(locatorBuffer.toString());
-		
-		return(true);
-	}
-	
-	public boolean clickWizardNext(Selenium browser, String cssClass){
-		idle(browser);
-		
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//div[contains(@class, '")
-		.append(cssClass)
-		.append("')]//a[contains(@class, '")
-		.append(getWizardNextCss())
-		.append("')]");
-		
-		waitForPageToLoadElement(browser, locatorBuffer.toString());
-		browser.click(locatorBuffer.toString());
-		
-		return(true);
-	}
-	
-	/**
-	 * Clicks the finish button of a wizard.
-	 * 
-	 * @param browser
-	 * @return
-	 */
-	public boolean clickWizardFinish(Selenium browser){
-		idle(browser);
-		
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//form//a[contains(@class, '")
-		.append(getWizardFinishCss())
-		.append("')]");
-		
-		waitForPageToLoadElement(browser, locatorBuffer.toString());
-		
-		browser.focus(locatorBuffer.toString());
-		browser.click(locatorBuffer.toString());
-		waitForPageToUnloadElement(browser, locatorBuffer.toString());
-		
-		return(true);
-	}
-	
-	public boolean clickWizardFinish(Selenium browser, String cssClass){
-		idle(browser);
-		
-		StringBuffer locatorBuffer = new StringBuffer();
-		
-		locatorBuffer.append("xpath=//div[contains(@class, '")
-		.append(cssClass)
-		.append("')]//a[contains(@class, '")
-		.append(getWizardFinishCss())
-		.append("')]");
-		
-		waitForPageToLoadElement(browser, locatorBuffer.toString());
-		
-		browser.focus(locatorBuffer.toString());
-		browser.click(locatorBuffer.toString());
-		waitForPageToUnloadElement(browser, locatorBuffer.toString());
-		
-		idle(browser);
-		
-		return(true);
-	}
-	
-	public String getUsername() {
-		return username;
-	}
-
-	public void setUsername(String username) {
-		this.username = username;
-	}
-
-	public String getPassword() {
-		return password;
-	}
-
-	public void setPassword(String password) {
-		this.password = password;
-	}
-
-	public String getDeploymentUrl() {
-		return deploymentUrl;
-	}
-
-	public void setDeploymentUrl(String deploymentUrl) {
-		if(!deploymentUrl.endsWith("/")){
-			this.deploymentUrl = deploymentUrl;
-		}else{
-			this.deploymentUrl = deploymentUrl.substring(0, deploymentUrl.length() - 1);
-		}
-	}
-
-	public String getWaitLimit() {
-		return waitLimit;
-	}
-
-	public void setWaitLimit(String waitLimit) {
-		this.waitLimit = waitLimit;
-	}
-
-	public String getLoginPage() {
-		return loginPage;
-	}
-
-	public void setLoginPage(String loginPage) {
-		this.loginPage = loginPage;
-	}
-
-	public String getAcknowledgeCheckbox() {
-		return acknowledgeCheckbox;
-	}
-
-	public void setAcknowledgeCheckbox(String acknowledgeCheckbox) {
-		this.acknowledgeCheckbox = acknowledgeCheckbox;
-	}
-
-	public String getOlatTopNavigationLogoutCss() {
-		return olatTopNavigationLogoutCss;
-	}
-
-	public void setOlatTopNavigationLogoutCss(String olatTopNavigationLogoutCss) {
-		this.olatTopNavigationLogoutCss = olatTopNavigationLogoutCss;
-	}
-
-	public String getOlatNavigationSiteCss() {
-		return olatNavigationSiteCss;
-	}
-
-	public void setOlatNavigationSiteCss(String olatNavigationSiteCss) {
-		this.olatNavigationSiteCss = olatNavigationSiteCss;
-	}
-
-	public String getOlatActiveNavigationSiteCss() {
-		return olatActiveNavigationSiteCss;
-	}
-
-	public void setOlatActiveNavigationSiteCss(String olatActiveNavigationSiteCss) {
-		this.olatActiveNavigationSiteCss = olatActiveNavigationSiteCss;
-	}
-
-	public String getOlatSiteHomeCss() {
-		return olatSiteHomeCss;
-	}
-
-	public void setOlatSiteHomeCss(String olatSiteHomeCss) {
-		this.olatSiteHomeCss = olatSiteHomeCss;
-	}
-
-	public String getOlatSiteGroupsCss() {
-		return olatSiteGroupsCss;
-	}
-
-	public void setOlatSiteGroupsCss(String olatSiteGroupsCss) {
-		this.olatSiteGroupsCss = olatSiteGroupsCss;
-	}
-
-	public String getOlatSiteLearningResourcesCss() {
-		return olatSiteLearningResourcesCss;
-	}
-
-	public void setOlatSiteLearningResourcesCss(String olatSiteLearningResourcesCss) {
-		this.olatSiteLearningResourcesCss = olatSiteLearningResourcesCss;
-	}
-	
-	public String getOlatSiteUserManagementCss() {
-		return olatSiteUserManagementCss;
-	}
-
-	public void setOlatSiteUserManagementCss(String olatSiteUserManagementCss) {
-		this.olatSiteUserManagementCss = olatSiteUserManagementCss;
-	}
-
-	public String getOlatSiteAdministrationCss() {
-		return olatSiteAdministrationCss;
-	}
-
-	public void setOlatSiteAdministrationCss(String olatSiteAdministrationCss) {
-		this.olatSiteAdministrationCss = olatSiteAdministrationCss;
-	}
-	
-	public String getContentCss() {
-		return contentCss;
-	}
-
-	public void setContentCss(String contentCss) {
-		this.contentCss = contentCss;
-	}
-
-	public String getContentTabCss() {
-		return contentTabCss;
-	}
-
-	public void setContentTabCss(String contentTabCss) {
-		this.contentTabCss = contentTabCss;
-	}
-
-	public String getActiveContentTabCss() {
-		return activeContentTabCss;
-	}
-
-	public void setActiveContentTabCss(String activeContentTabCss) {
-		this.activeContentTabCss = activeContentTabCss;
-	}
-
-	public String getContentSegmentContainerCss() {
-		return contentSegmentContainerCss;
-	}
-
-	public void setContentSegmentContainerCss(String contentSegmentContainerCss) {
-		this.contentSegmentContainerCss = contentSegmentContainerCss;
-	}
-
-	public String getContentSegmentCss() {
-		return contentSegmentCss;
-	}
-
-	public void setContentSegmentCss(String contentSegmentCss) {
-		this.contentSegmentCss = contentSegmentCss;
-	}
-
-	public String getFormSaveXPath() {
-		return formSaveXPath;
-	}
-
-	public void setFormSaveXPath(String formSaveXPath) {
-		this.formSaveXPath = formSaveXPath;
-	}
-
-	public String getWindowCss() {
-		return windowCss;
-	}
-
-	public void setWindowCss(String windowCss) {
-		this.windowCss = windowCss;
-	}
-
-	public String getWizardCss() {
-		return wizardCss;
-	}
-
-	public void setWizardCss(String wizardCss) {
-		this.wizardCss = wizardCss;
-	}
-
-	public String getWizardNextCss() {
-		return wizardNextCss;
-	}
-
-	public void setWizardNextCss(String wizardNextCss) {
-		this.wizardNextCss = wizardNextCss;
-	}
-
-	public String getWizardFinishCss() {
-		return wizardFinishCss;
-	}
-
-	public void setWizardFinishCss(String wizardFinishCss) {
-		this.wizardFinishCss = wizardFinishCss;
-	}
-
-	public String getMceContentBodyCss() {
-		return mceContentBodyCss;
-	}
-
-	public void setMceContentBodyCss(String mceContentBodyCss) {
-		this.mceContentBodyCss = mceContentBodyCss;
-	}
-
-	public FunctionalHomeSiteUtil getFunctionalHomeSiteUtil() {
-		return functionalHomeSiteUtil;
-	}
-
-	public void setFunctionalHomeSiteUtil(
-			FunctionalHomeSiteUtil functionalHomeSiteUtil) {
-		this.functionalHomeSiteUtil = functionalHomeSiteUtil;
-	}
-
-	public FunctionalGroupsSiteUtil getFunctionalGroupsSiteUtil() {
-		return functionalGroupsSiteUtil;
-	}
-
-	public void setFunctionalGroupsSiteUtil(
-			FunctionalGroupsSiteUtil functionalGroupsSiteUtil) {
-		this.functionalGroupsSiteUtil = functionalGroupsSiteUtil;
-	}
-
-	public FunctionalRepositorySiteUtil getFunctionalRepositorySiteUtil() {
-		return functionalRepositorySiteUtil;
-	}
-
-	public void setFunctionalRepositorySiteUtil(
-			FunctionalRepositorySiteUtil functionalRepositorySiteUtil) {
-		this.functionalRepositorySiteUtil = functionalRepositorySiteUtil;
-	}
-
-	public FunctionalUserManagementSiteUtil getFunctionalUserManagementSiteUtil() {
-		return functionalUserManagementSiteUtil;
-	}
-
-	public void setFunctionalUserManagementSiteUtil(
-			FunctionalUserManagementSiteUtil functionalUserManagementSiteUtil) {
-		this.functionalUserManagementSiteUtil = functionalUserManagementSiteUtil;
-	}
-
-	public FunctionalAdministrationSiteUtil getFunctionalAdministrationSiteUtil() {
-		return functionalAdministrationSiteUtil;
-	}
-
-	public void setFunctionalAdministrationSiteUtil(
-			FunctionalAdministrationSiteUtil functionalAdministrationSiteUtil) {
-		this.functionalAdministrationSiteUtil = functionalAdministrationSiteUtil;
-	}
-
-	public FunctionalHtmlUtil getFunctionalHtmlUtil() {
-		return functionalHtmlUtil;
-	}
-
-	public void setFunctionalHtmlUtil(FunctionalHtmlUtil functionalHtmlUtil) {
-		this.functionalHtmlUtil = functionalHtmlUtil;
-	}
-
-	public String getWindowCloseLinkCss() {
-		return windowCloseLinkCss;
-	}
-
-	public void setWindowCloseLinkCss(String windowCloseLinkCss) {
-		this.windowCloseLinkCss = windowCloseLinkCss;
-	}
-
-	public String getInfoCss() {
-		return infoCss;
-	}
-
-	public void setInfoCss(String infoCss) {
-		this.infoCss = infoCss;
-	}
-
-	public String getButtonCss() {
-		return buttonCss;
-	}
-
-	public void setButtonCss(String buttonCss) {
-		this.buttonCss = buttonCss;
-	}
-
-	public String getButtonDirtyCss() {
-		return buttonDirtyCss;
-	}
-
-	public void setButtonDirtyCss(String buttonDirtyCss) {
-		this.buttonDirtyCss = buttonDirtyCss;
-	}
-
-	public String getBackButtonCss() {
-		return backButtonCss;
-	}
-
-	public void setBackButtonCss(String backButtonCss) {
-		this.backButtonCss = backButtonCss;
-	}
-
-	public String getTableFirstChildCss() {
-		return tableFirstChildCss;
-	}
-
-	public void setTableFirstChildCss(String tableFirstChildCss) {
-		this.tableFirstChildCss = tableFirstChildCss;
-	}
-
-	public String getTableLastChildCss() {
-		return tableLastChildCss;
-	}
-
-	public void setTableLastChildCss(String tableLastChildCss) {
-		this.tableLastChildCss = tableLastChildCss;
-	}
-
-	public String getTableAllCss() {
-		return tableAllCss;
-	}
-
-	public void setTableAllCss(String tableAllCss) {
-		this.tableAllCss = tableAllCss;
-	}
-
-	public String getTreeNodeAnchorCss() {
-		return treeNodeAnchorCss;
-	}
-
-	public void setTreeNodeAnchorCss(String treeNodeAnchorCss) {
-		this.treeNodeAnchorCss = treeNodeAnchorCss;
-	}
-
-	public String getTreeNodeCss() {
-		return treeNodeCss;
-	}
-
-	public void setTreeNodeCss(String treeNodeCss) {
-		this.treeNodeCss = treeNodeCss;
-	}
-
-	public String getTreeNodeLoadingCss() {
-		return treeNodeLoadingCss;
-	}
-
-	public void setTreeNodeLoadingCss(String treeNodeLoadingCss) {
-		this.treeNodeLoadingCss = treeNodeLoadingCss;
-	}
-
-	public String getTreeLevel0Css() {
-		return treeLevel0Css;
-	}
-
-	public void setTreeLevel0Css(String treeLevel0Css) {
-		this.treeLevel0Css = treeLevel0Css;
-	}
-
-	public String getTreeLevel1Css() {
-		return treeLevel1Css;
-	}
-
-	public void setTreeLevel1Css(String treeLevel1Css) {
-		this.treeLevel1Css = treeLevel1Css;
-	}
-
-	public String getTreeLevel2Css() {
-		return treeLevel2Css;
-	}
-
-	public void setTreeLevel2Css(String treeLevel2Css) {
-		this.treeLevel2Css = treeLevel2Css;
-	}
-
-	public String getTreeLevelOpenCss() {
-		return treeLevelOpenCss;
-	}
-
-	public void setTreeLevelOpenCss(String treeLevelOpenCss) {
-		this.treeLevelOpenCss = treeLevelOpenCss;
-	}
-
-	public String getTreeLevelCloseCss() {
-		return treeLevelCloseCss;
-	}
-
-	public void setTreeLevelCloseCss(String treeLevelCloseCss) {
-		this.treeLevelCloseCss = treeLevelCloseCss;
-	}
-}
diff --git a/src/test/java/org/olat/util/FunctionalVOUtil.java b/src/test/java/org/olat/util/FunctionalVOUtil.java
deleted file mode 100644
index 1971b52dea5d3635506ce02340fb7e238f8f18cf..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/FunctionalVOUtil.java
+++ /dev/null
@@ -1,627 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.UriBuilder;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.mime.HttpMultipartMode;
-import org.apache.http.entity.mime.MultipartEntityBuilder;
-import org.apache.http.util.EntityUtils;
-import org.junit.Assert;
-import org.olat.restapi.RestConnection;
-import org.olat.restapi.support.vo.CourseVO;
-import org.olat.restapi.support.vo.GroupConfigurationVO;
-import org.olat.restapi.support.vo.GroupVO;
-import org.olat.restapi.support.vo.RepositoryEntryVO;
-import org.olat.user.restapi.RolesVO;
-import org.olat.user.restapi.UserVO;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-public class FunctionalVOUtil {
-	
-	public final static String WAIT_LIMIT = "15000";
-	
-	public final static String ALL_ELEMENTS_COURSE_DISPLAYNAME = "All Elements Course Without External Content";
-	public final static String ALL_ELEMENTS_COURSE_FILENAME = "All_Elements_Course_Without_External_Content.zip";
-
-	public enum SysGroups{
-		USERMANAGERS,
-		GROUPMANAGERS,
-		AUTHORS,
-		ADMIN,
-		USERS,
-		ANONYMOUS,
-		INSTITUTIONAL_RESOURCE_MANAGER,
-	};
-	
-	private String username;
-	private String password;
-	
-	private String allElementsCourseDisplayname;
-	private String allElementsCourseFilename;
-	private String waitLimit;
-	
-	public FunctionalVOUtil(String username, String password){
-		setUsername(username);
-		setPassword(password);
-		
-		setAllElementsCourseDisplayname(ALL_ELEMENTS_COURSE_DISPLAYNAME);
-		setAllElementsCourseFilename(ALL_ELEMENTS_COURSE_FILENAME);
-
-		waitLimit = WAIT_LIMIT;
-	}
-	
-	public RepositoryEntryVO getRepositoryEntryByKey(URL deploymentUrl, long key) throws IOException, URISyntaxException{
-		RestConnection restConnection = new RestConnection(deploymentUrl);
-
-		restConnection.login(getUsername(), getPassword());
-		
-		URI request = UriBuilder.fromUri(deploymentUrl.toURI()).path("restapi").path("repo/entries").path(Long.toString(key)).build();
-		HttpGet method = restConnection.createGet(request, MediaType.APPLICATION_JSON, true);
-		HttpResponse response = restConnection.execute(method);
-		assertEquals(200, response.getStatusLine().getStatusCode());
-		RepositoryEntryVO vo = restConnection.parse(response, RepositoryEntryVO.class);
-
-		restConnection.shutdown();
-		
-		return(vo);
-	}
-	
-	/**
-	 * Creates the selenium test users with random passwords and
-	 * writes it to credentials.properties.
-	 * 
-	 * @param deploymentUrl
-	 * @param count
-	 * @throws IOException
-	 * @throws URISyntaxException
-	 */
-	public List<UserVO> createTestUsers(URL deploymentUrl, int count) throws IOException, URISyntaxException{
-		RestConnection restConnection = new RestConnection(deploymentUrl);
-		assertTrue(restConnection.login(getUsername(), getPassword()));
-		
-		List<UserVO> user = new ArrayList<UserVO>(count);
-		for(int i = 0; i < count; i++){
-			UserVO vo = new UserVO();
-			String username = ("selenium_" + i + "_" + UUID.randomUUID().toString()).substring(0, 24);
-			vo.setLogin(username);
-			String password = ("passwd_" + i + "_" + UUID.randomUUID().toString()).substring(0, 24);
-			vo.setPassword(password);
-			vo.setFirstName("John_" + i);
-			vo.setLastName("Smith");
-			vo.setEmail(username + "@frentix.com");
-			vo.putProperty("telOffice", "39847592");
-			vo.putProperty("telPrivate", "39847592");
-			vo.putProperty("telMobile", "39847592");
-			vo.putProperty("gender", "Female");//male or female
-			vo.putProperty("birthDay", "12/12/2009");
-
-			URI request = UriBuilder.fromUri(deploymentUrl.toURI()).path("restapi").path("users").build();
-			HttpPut method = restConnection.createPut(request, MediaType.APPLICATION_JSON, true);
-			restConnection.addJsonEntity(method, vo);
-			method.addHeader("Accept-Language", "en");
-
-			HttpResponse response = restConnection.execute(method);
-			int responseCode = response.getStatusLine().getStatusCode();
-			assertTrue(responseCode == 200 || responseCode == 201);
-			InputStream body = response.getEntity().getContent();
-			UserVO current = restConnection.parse(body, UserVO.class);
-			Assert.assertNotNull(current);
-			
-			current.setPassword(vo.getPassword());
-			user.add(current);
-		}
-
-		restConnection.shutdown();
-		
-		return(user);
-	}
-	
-	/**
-	 * Creates test authors.
-	 * 
-	 * @param deploymentUrl
-	 * @param count
-	 * @return
-	 * @throws IOException
-	 * @throws URISyntaxException
-	 */
-	public List<UserVO> createTestAuthors(URL deploymentUrl, int count) throws IOException, URISyntaxException{
-		/* create ordinary users */
-		List<UserVO> user = createTestUsers(deploymentUrl, count);
-
-		/* make a tutor */
-		RestConnection restConnection = new RestConnection(deploymentUrl);
-
-		Assert.assertTrue(restConnection.login(getUsername(), getPassword()));
-		
-		for(UserVO currentUser: user){
-			/* retrieve roles */
-			URI request = UriBuilder.fromUri(deploymentUrl.toURI()).path("restapi").path("users/" + currentUser.getKey() + "/roles").build();
-			HttpGet method = restConnection.createGet(request, MediaType.APPLICATION_JSON, true);
-			HttpResponse response = restConnection.execute(method);
-			assertEquals(200, response.getStatusLine().getStatusCode());
-			InputStream body = response.getEntity().getContent();
-			RolesVO roles = restConnection.parse(body, RolesVO.class);
-			
-			/* send appropriate role */
-			roles.setAuthor(true);
-			roles.setUserManager(true);
-			
-			request = UriBuilder.fromUri(deploymentUrl.toURI()).path("restapi").path("users/" + currentUser.getKey() + "/roles").build();
-			HttpPost postMethod = restConnection.createPost(request, MediaType.APPLICATION_JSON);
-			restConnection.addJsonEntity(postMethod, roles);
-			response = restConnection.execute(postMethod);
-			assertEquals(200, response.getStatusLine().getStatusCode());
-			
-			EntityUtils.consume(response.getEntity());
-		}
-		
-		restConnection.shutdown();
-		
-		return(user);
-	}
-	
-	/**
-	 * Creates course groups.
-	 * 
-	 * @param deploymentUrl
-	 * @param count
-	 * @return
-	 * @throws IOException
-	 * @throws URISyntaxException
-	 */
-	public List<GroupVO> createTestCourseGroups(URL deploymentUrl, int count) throws IOException, URISyntaxException{
-		RestConnection restConnection = new RestConnection(deploymentUrl);
-
-		restConnection.login(getUsername(), getPassword());
-		
-		List<GroupVO> group = new ArrayList<GroupVO>();
-		
-		for(int i = 0; i < count; i++){
-			GroupVO vo = new GroupVO();
-			String groupname = ("selgrp_" + i + "_" + UUID.randomUUID().toString()).substring(0, 24);
-			vo.setName(groupname);
-			vo.setDescription("group#" + i + " created for selenium test case.");
-			vo.setType("BuddyGroup");
-			vo.setMinParticipants(new Integer(-1));
-			vo.setMaxParticipants(new Integer(-1));
-			
-			URI request = UriBuilder.fromUri(deploymentUrl.toURI()).path("restapi").path("groups").build();
-			HttpPut method = restConnection.createPut(request, MediaType.APPLICATION_JSON, true);
-			restConnection.addJsonEntity(method, vo);
-
-			HttpResponse response = restConnection.execute(method);
-			assertTrue(response.getStatusLine().getStatusCode() == 200 || response.getStatusLine().getStatusCode() == 201);
-			
-			vo = restConnection.parse(response, GroupVO.class);
-			group.add(vo);
-		}
-
-		restConnection.shutdown();
-		
-		return(group);
-	}
-	
-	/**
-	 * Adds owner to group.
-	 * 
-	 * @param deploymentUrl
-	 * @param group
-	 * @param owner
-	 * @throws IOException
-	 * @throws URISyntaxException
-	 */
-	public void addOwnerToGroup(URL deploymentUrl, GroupVO group, UserVO owner) throws IOException, URISyntaxException{
-		//add an owner
-		RestConnection restConnection = new RestConnection(deploymentUrl);
-		assertTrue(restConnection.login(getUsername(), getPassword()));
-
-		URI request = UriBuilder.fromUri(deploymentUrl.toURI())
-				.path("restapi")
-				.path("groups").path(group.getKey().toString())
-				.path("owners").path(owner.getKey().toString())
-				.build();
-
-		HttpPut method = restConnection.createPut(request, MediaType.APPLICATION_JSON, true);
-		HttpResponse response = restConnection.execute(method);
-		assertEquals(200, response.getStatusLine().getStatusCode());
-		EntityUtils.consume(response.getEntity());
-
-		restConnection.shutdown();
-	}
-	
-	/**
-	 * Adds participant to group.
-	 * 
-	 * @param deploymentUrl
-	 * @param group
-	 * @param owner
-	 * @throws IOException
-	 * @throws URISyntaxException
-	 */
-	public void addParticipantToGroup(URL deploymentUrl, GroupVO group, UserVO participant) throws IOException, URISyntaxException{
-		//add an owner
-		RestConnection restConnection = new RestConnection(deploymentUrl);
-		assertTrue(restConnection.login(getUsername(), getPassword()));
-
-		URI request = UriBuilder.fromUri(deploymentUrl.toURI())
-				.path("restapi")
-				.path("groups").path(group.getKey().toString())
-				.path("participants").path(participant.getKey().toString())
-				.build();
-
-		HttpPut method = restConnection.createPut(request, MediaType.APPLICATION_JSON, true);
-		HttpResponse response = restConnection.execute(method);
-		assertEquals(200, response.getStatusLine().getStatusCode());
-		EntityUtils.consume(response.getEntity());
-
-		restConnection.shutdown();
-	}
-	
-	public void setGroupConfiguration(URL deploymentUrl, GroupVO group,
-			String[] tools,
-			boolean ownersPublic, boolean ownersVisible,
-			boolean participatnsPublic, boolean participantsVisible,
-			boolean waitingListPublic, boolean waitingListVisible)
-					throws IOException, URISyntaxException{
-		RestConnection restConnection = new RestConnection(deploymentUrl);
-		assertTrue(restConnection.login(getUsername(), getPassword()));
-
-		/* retrieve existing configuration */
-		URI request = UriBuilder.fromUri(deploymentUrl.toURI())
-				.path("restapi")
-				.path("groups").path(group.getKey().toString())
-				.path("configuration")
-				.build();
-
-		GroupConfigurationVO config = new GroupConfigurationVO();
-		
-		config.setTools(tools);
-		config.setOwnersPublic(ownersPublic);
-		config.setOwnersVisible(ownersVisible);
-		config.setParticipantsPublic(participatnsPublic);
-		config.setParticipantsVisible(participantsVisible);
-		config.setWaitingListPublic(waitingListPublic);
-		config.setWaitingListVisible(waitingListVisible);
-		
-		/* post modified configuration */
-		HttpPost postMethod = restConnection.createPost(request, MediaType.APPLICATION_JSON);
-		restConnection.addJsonEntity(postMethod, config);
-		
-		HttpResponse response = restConnection.execute(postMethod);
-		assertEquals(200, response.getStatusLine().getStatusCode());
-		EntityUtils.consume(response.getEntity());
-
-		restConnection.shutdown();
-	}
-	
-	/**
-	 * Imports the specified course via REST.
-	 * 
-	 * @param deploymentUrl
-	 * @param path
-	 * @param filename
-	 * @param resourcename
-	 * @param displayname
-	 * @return CourseVO
-	 * @throws URISyntaxException
-	 * @throws IOException
-	 */
-	public CourseVO importCourse(URL deploymentUrl, String path, String filename, String resourcename, String displayname) throws URISyntaxException, IOException{
-		URL cpUrl = FunctionalVOUtil.class.getResource(path);
-		assertNotNull(cpUrl);
-		File cp = new File(cpUrl.toURI());
-
-		RestConnection conn = new RestConnection(deploymentUrl);
-		assertTrue(conn.login(getUsername(), getPassword()));
-		
-		URI request = UriBuilder.fromUri(deploymentUrl.toURI()).path("restapi").path("repo/courses").build();
-		HttpPost method = conn.createPost(request, MediaType.APPLICATION_JSON);
-		String softKey = UUID.randomUUID().toString().replace("-", "").substring(0, 30);
-		HttpEntity entity = MultipartEntityBuilder.create()
-				.setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
-				.addBinaryBody("file", cp, ContentType.APPLICATION_OCTET_STREAM, cp.getName())
-				.addTextBody("filename", filename)
-				.addTextBody("resourcename", resourcename)
-				.addTextBody("displayname", displayname)
-				.addTextBody("access", "3")
-				.addTextBody("softkey", softKey)
-				.build();
-		method.setEntity(entity);
-		
-		HttpResponse response = conn.execute(method);
-		assertTrue(response.getStatusLine().getStatusCode() == 200 || response.getStatusLine().getStatusCode() == 201);
-		
-		CourseVO vo = conn.parse(response, CourseVO.class);
-		assertNotNull(vo);
-		assertNotNull(vo.getRepoEntryKey());
-		assertNotNull(vo.getKey());
-		
-		return(vo);
-	}
-	
-	/**
-	 * 
-	 * @param deploymentUrl
-	 * @param courseId
-	 * @param group
-	 * @return
-	 * @throws IOException
-	 * @throws URISyntaxException
-	 */
-	public List<GroupVO> addGroupToCourse(URL deploymentUrl, long courseId, List<GroupVO> group) throws IOException, URISyntaxException{
-		RestConnection restConnection = new RestConnection(deploymentUrl);
-		restConnection.login(getUsername(), getPassword());
-
-		List<GroupVO> newGroup = new ArrayList<GroupVO>();
-
-		for(GroupVO currentGroup: group){
-			URI request = UriBuilder.fromUri(deploymentUrl.toURI()).path("restapi").path("repo").path("courses").path(Long.toString(courseId)).path("groups").build();
-			HttpPut method = restConnection.createPut(request, MediaType.APPLICATION_JSON, true);
-			restConnection.addJsonEntity(method, currentGroup);
-
-			HttpResponse response = restConnection.execute(method);
-			assertEquals(200, response.getStatusLine().getStatusCode());
-			
-			GroupVO vo = restConnection.parse(response, GroupVO.class);
-			newGroup.add(vo);
-		}
-
-		restConnection.shutdown();
-		
-		return(newGroup);
-	}
-	
-	/**
-	 * 
-	 * @param deploymentUrl
-	 * @return
-	 * @throws URISyntaxException
-	 * @throws IOException
-	 */
-	public CourseVO importEmptyCourse(URL deploymentUrl) throws URISyntaxException, IOException{
-		return(importCourse(deploymentUrl, "/org/olat/course/Empty_Course.zip", "Empty_Course.zip", "Empty Course", "Empty Course"));
-	}
-	
-	/**
-	 * Imports the "All Elements Course" via REST.
-	 * 
-	 * @param deploymentUrl
-	 * @return
-	 * @throws URISyntaxException
-	 * @throws IOException
-	 */
-	public CourseVO importAllElementsCourse(URL deploymentUrl) throws URISyntaxException, IOException{
-		return(importCourse(deploymentUrl, "/org/olat/course/All_Elements_Course_Without_External_Content.zip", "All_Elements_Course_Without_External_Content.zip", "All Elements Course Without External Content", "All Elements Course Without External Content"));
-	}
-
-	/**
-	 * Imports the "All Elements Course" via REST.
-	 * 
-	 * @param deploymentUrl
-	 * @return
-	 * @throws URISyntaxException
-	 * @throws IOException
-	 */
-	public CourseVO importAllElementsCourse(URL deploymentUrl, String resourceName, String displayName) throws URISyntaxException, IOException{
-		return(importCourse(deploymentUrl, "/org/olat/course/All_Elements_Course_Without_External_Content.zip", "All_Elements_Course_Without_External_Content.zip", resourceName, displayName));
-	}
-	
-	/**
-	 * Imports the "Course including Forum" via REST.
-	 * 
-	 * @param deploymentUrl
-	 * @return
-	 * @throws URISyntaxException
-	 * @throws IOException
-	 */
-	public CourseVO importCourseIncludingForum(URL deploymentUrl) throws URISyntaxException, IOException{
-		return(importCourse(deploymentUrl, "/org/olat/portfolio/Course_including_Forum.zip", "Course_including_Forum.zip", "Course including Forum", "Course including Forum"));
-	}
-	
-	/**
-	 * Imports the "Course including Blog" via REST.
-	 * 
-	 * @param deploymentUrl
-	 * @return
-	 * @throws URISyntaxException
-	 * @throws IOException
-	 */
-	public CourseVO importCourseIncludingBlog(URL deploymentUrl) throws URISyntaxException, IOException{
-		return(importCourse(deploymentUrl, "/org/olat/portfolio/Course_including_Blog.zip", "Course_including_Blog.zip", "Course including Blog", "Course including Blog"));
-	}
-	
-	/**
-	 * imports a wiki via REST.
-	 * 
-	 * @param deploymentUrl
-	 * @return
-	 * @throws URISyntaxException
-	 * @throws IOException
-	 */
-	public RepositoryEntryVO importWiki(URL deploymentUrl) throws URISyntaxException, IOException{
-		URL wikiUrl = FunctionalVOUtil.class.getResource("/org/olat/portfolio/wiki.zip");
-		Assert.assertNotNull(wikiUrl);
-		
-		File wiki = new File(wikiUrl.toURI());
-		
-		RestConnection restConnection = new RestConnection(deploymentUrl);
-
-		assertTrue(restConnection.login(getUsername(), getPassword()));
-		
-		URI request = UriBuilder.fromUri(deploymentUrl.toURI()).path("restapi").path("repo/entries").build();
-		HttpPut method = restConnection.createPut(request, MediaType.APPLICATION_JSON, true);
-		HttpEntity entity = MultipartEntityBuilder.create()
-				.setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
-				.addBinaryBody("file", wiki, ContentType.APPLICATION_OCTET_STREAM, wiki.getName())
-				.addTextBody("filename", "wiki.zip")
-				.addTextBody("resourcename", "Wiki")
-				.addTextBody("displayname", "Wiki")
-				.addTextBody("access", "3")
-				.build();
-		method.setEntity(entity);
-		
-		HttpResponse response = restConnection.execute(method);
-		assertTrue(response.getStatusLine().getStatusCode() == 200 || response.getStatusLine().getStatusCode() == 201);
-		
-		InputStream body = response.getEntity().getContent();
-		
-		RepositoryEntryVO vo = restConnection.parse(body, RepositoryEntryVO.class);
-		assertNotNull(vo);
-		
-		return(vo);
-	}
-	
-	/**
-	 * Imports a blog via REST.
-	 * 
-	 * @param deploymentUrl
-	 * @param login
-	 * @param password
-	 * @return
-	 * @throws URISyntaxException
-	 * @throws IOException
-	 */
-	public RepositoryEntryVO importBlog(URL deploymentUrl, String path, String filename, String resourcename, String displayname) throws URISyntaxException, IOException{
-		URL blogUrl = FunctionalVOUtil.class.getResource(path);
-		Assert.assertNotNull(blogUrl);
-		
-		File blog = new File(blogUrl.toURI());
-		
-		RestConnection restConnection = new RestConnection(deploymentUrl);
-
-		assertTrue(restConnection.login(getUsername(), getPassword()));
-		
-		URI request = UriBuilder.fromUri(deploymentUrl.toURI()).path("restapi").path("repo/entries").build();
-		HttpPut method = restConnection.createPut(request, MediaType.APPLICATION_JSON, true);
-		HttpEntity entity = MultipartEntityBuilder.create()
-				.setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
-				.addBinaryBody("file", blog, ContentType.APPLICATION_OCTET_STREAM, blog.getName())
-				.addTextBody("filename", filename)
-				.addTextBody("resourcename", resourcename)
-				.addTextBody("displayname", displayname)
-				.addTextBody("access", "3")
-				.build();
-		method.setEntity(entity);
-		
-		HttpResponse response = restConnection.execute(method);
-		assertTrue(response.getStatusLine().getStatusCode() == 200 || response.getStatusLine().getStatusCode() == 201);
-		
-		InputStream body = response.getEntity().getContent();
-		
-		RepositoryEntryVO vo = restConnection.parse(body, RepositoryEntryVO.class);
-		assertNotNull(vo);
-		
-		return(vo);
-	}
-	
-	/**
-	 * Adds owner as owner to repoEntry.
-	 * 
-	 * @param deploymentUrl
-	 * @param repoEntry
-	 * @param owner
-	 * @throws URISyntaxException
-	 * @throws IOException 
-	 */
-	public void addOwnerToRepositoryEntry(URL deploymentUrl, RepositoryEntryVO repoEntry, UserVO owner) throws IOException, URISyntaxException{
-		//add an owner
-		RestConnection restConnection = new RestConnection(deploymentUrl);
-		assertTrue(restConnection.login(getUsername(), getPassword()));
-
-		URI request = UriBuilder.fromUri(deploymentUrl.toURI())
-				.path("restapi")
-				.path("repo/entries").path(repoEntry.getKey().toString())
-				.path("owners").path(owner.getKey().toString())
-				.build();
-
-		HttpPut method = restConnection.createPut(request, MediaType.APPLICATION_JSON, true);
-		HttpResponse response = restConnection.execute(method);
-		assertEquals(200, response.getStatusLine().getStatusCode());
-		EntityUtils.consume(response.getEntity());
-
-		restConnection.shutdown();
-	}
-	
-	public String getUsername() {
-		return username;
-	}
-
-	public void setUsername(String username) {
-		this.username = username;
-	}
-
-	public String getPassword() {
-		return password;
-	}
-
-	public void setPassword(String password) {
-		this.password = password;
-	}
-
-	public String getAllElementsCourseDisplayname() {
-		return allElementsCourseDisplayname;
-	}
-
-	public void setAllElementsCourseDisplayname(String allElementsCourseDisplayname) {
-		this.allElementsCourseDisplayname = allElementsCourseDisplayname;
-	}
-
-	public String getAllElementsCourseFilename() {
-		return allElementsCourseFilename;
-	}
-
-	public void setAllElementsCourseFilename(String allElementsCourseFilename) {
-		this.allElementsCourseFilename = allElementsCourseFilename;
-	}
-
-	public String getWaitLimit() {
-		return waitLimit;
-	}
-
-	public void setWaitLimit(String waitLimit) {
-		this.waitLimit = waitLimit;
-	}
-}
diff --git a/src/test/java/org/olat/util/PortletPosition.vm b/src/test/java/org/olat/util/PortletPosition.vm
deleted file mode 100644
index 1906254af5c8e36aeb490f1f92be056c4e3af03a..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/PortletPosition.vm
+++ /dev/null
@@ -1,25 +0,0 @@
-var position = -1;
-
-if (document.querySelector){
-	var portalCss = "${portalCss}";
-	var portalSubcolumnsCss = "${portalSubcolumnsCss}";
-	var portletCss = "${portletCss}";
-	var portalColumnCssPrefix = "${portalColumnCssPrefix}";
-	
-	var portlet = "${portlet}";
-	
-	var j_stop = ${j_stop};
-	var column = ${column};
-	
-	var selection = window.document.querySelectorAll('.' + portalCss + '.' + portalSubcolumnsCss + ' .' + portalColumnCssPrefix + (column + 1) + ' .' + portletCss);
-	
-	for(j=0; j < j_stop; j++){
-		var current = selection.item(j);
-		
-		if(current.className.indexOf(portlet) >= 0){
-			position = j;
-		}
-	}
-}
-
-position;
diff --git a/src/test/java/org/olat/util/browser/Student1.java b/src/test/java/org/olat/util/browser/Student1.java
deleted file mode 100644
index 8e8bf3721241edb7ada490d578abfd7dfdc82ed9..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/browser/Student1.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util.browser;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
- 
-import org.jboss.arquillian.drone.api.annotation.Qualifier;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ ElementType.FIELD, ElementType.PARAMETER })
-@Qualifier
-public @interface Student1 {
-
-}
diff --git a/src/test/java/org/olat/util/browser/Student2.java b/src/test/java/org/olat/util/browser/Student2.java
deleted file mode 100644
index 76869aeb3b49ea1e5fd71e9d00df1cfc7848d99d..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/browser/Student2.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util.browser;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
- 
-import org.jboss.arquillian.drone.api.annotation.Qualifier;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ ElementType.FIELD, ElementType.PARAMETER })
-@Qualifier
-public @interface Student2 {
-
-}
diff --git a/src/test/java/org/olat/util/browser/Student3.java b/src/test/java/org/olat/util/browser/Student3.java
deleted file mode 100644
index a08f315f448939c7ba6118b05183cde820d13f92..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/browser/Student3.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util.browser;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
- 
-import org.jboss.arquillian.drone.api.annotation.Qualifier;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ ElementType.FIELD, ElementType.PARAMETER })
-@Qualifier
-public @interface Student3 {
-
-}
diff --git a/src/test/java/org/olat/util/browser/Tutor1.java b/src/test/java/org/olat/util/browser/Tutor1.java
deleted file mode 100644
index 73c91d88d693681b21d605c396d11e828bcd9106..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/browser/Tutor1.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util.browser;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
- 
-import org.jboss.arquillian.drone.api.annotation.Qualifier;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ ElementType.FIELD, ElementType.PARAMETER })
-@Qualifier
-public @interface Tutor1 {
-
-}
diff --git a/src/test/java/org/olat/util/browser/Tutor2.java b/src/test/java/org/olat/util/browser/Tutor2.java
deleted file mode 100644
index 74892177d5770b92a8173f51acab65a03ef8bffc..0000000000000000000000000000000000000000
--- a/src/test/java/org/olat/util/browser/Tutor2.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * <a href="http://www.openolat.org">
- * OpenOLAT - Online Learning and Training</a><br>
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); <br>
- * you may not use this file except in compliance with the License.<br>
- * You may obtain a copy of the License at the
- * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
- * <p>
- * Unless required by applicable law or agreed to in writing,<br>
- * software distributed under the License is distributed on an "AS IS" BASIS, <br>
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
- * See the License for the specific language governing permissions and <br>
- * limitations under the License.
- * <p>
- * Initial code contributed and copyrighted by<br>
- * frentix GmbH, http://www.frentix.com
- * <p>
- */
-package org.olat.util.browser;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
- 
-import org.jboss.arquillian.drone.api.annotation.Qualifier;
-
-/**
- * 
- * @author jkraehemann, joel.kraehemann@frentix.com, frentix.com
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ ElementType.FIELD, ElementType.PARAMETER })
-@Qualifier
-public @interface Tutor2 {
-
-}
diff --git a/src/test/resources/org/olat/course/Small_course.zip b/src/test/resources/org/olat/course/Small_course.zip
deleted file mode 100644
index 04671a1a2611083138d78425f2a578c97c8320f1..0000000000000000000000000000000000000000
Binary files a/src/test/resources/org/olat/course/Small_course.zip and /dev/null differ
diff --git a/src/test/resources/org/olat/util/credentials.properties b/src/test/resources/org/olat/util/credentials.properties
deleted file mode 100644
index ac12670b8b67c0594b2cff11587e8f958bfc88ff..0000000000000000000000000000000000000000
--- a/src/test/resources/org/olat/util/credentials.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-admin.login=administrator
-admin.password=openolat