Index: classes/class.tx_linkvalidator_processor.php
===================================================================
--- classes/class.tx_linkvalidator_processor.php	(revision 42574)
+++ classes/class.tx_linkvalidator_processor.php	(working copy)
@@ -117,8 +117,13 @@
 	 */
 	public function getLinkStatistics($checkOptions = array(), $considerHidden = FALSE) {
 		$results = array();
-		$GLOBALS['TYPO3_DB']->exec_DELETEquery('tx_linkvalidator_link', 'record_pid in (' . $this->pidList . ') or ( record_uid IN (' . $this->pidList . ') and table_name like \'pages\')');
-
+		$checlLinkTypeCondition = '';
+		if(count($checkOptions) > 0) {
+			$checkKeys = array_keys($checkOptions);
+			$checlLinkTypeCondition = ' and link_type in (\'' . implode('\',\'',$checkKeys) . '\')';
+		}
+		$GLOBALS['TYPO3_DB']->exec_DELETEquery('tx_linkvalidator_link', '(record_pid in (' . $this->pidList . ') or ( record_uid IN (' . $this->pidList . ') and table_name like \'pages\')) ' . $checlLinkTypeCondition);
+		
 			// let's traverse all configured tables
 		foreach ($this->searchFields as $table => $fields) {
 			if($table == 'pages'){
Index: modfuncreport/locallang.xml
===================================================================
--- modfuncreport/locallang.xml	(revision 42574)
+++ modfuncreport/locallang.xml	(working copy)
@@ -9,7 +9,6 @@
 	</meta>
 	<data type="array">
 		<languageKey index="default" type="array">
-			<label index="title">Check Links</label>
 			<label index="menu.introduction">Introduction</label>
 			<label index="menu.checkLinks">Check Links for validity</label>
 			<label index="menu.overview">Overview of links on website</label>
@@ -22,13 +21,10 @@
 			<label index="overview.branch.links">External links:</label>
 			<label index="overview.attention.header">Attention:</label>
 			<label index="overview.attention.text">Checking links may take up to several minutes. Checking ONE link can last up to 3 seconds.</label>
-			<label index="first.steps">Choose the level of pages to check and press "Refresh display" to show the results.</label>
-			<label index="first.steps.info.update.button">You can update the stored results by pressing "Check links". Note that this process can take some time.</label>
-			<label index="first.steps.info.scheduler">Alternatively you can also configure the %sTYPO3 Scheduler%s to update the stored results regularly.</label>
-			<label index="first.steps.info.scheduler.admin">Alternatively your administrator can also configure the TYPO3 Scheduler to update the stored results regularly.</label>
 			<label index="label_refresh">Refresh display</label>
 			<label index="label_update">Check links</label>
-			<label index="overviews.statistics.header">Statistics of broken Links</label>
+			<label index="report.statistics.header">Show these types of broken links</label>
+			<label index="checklinks.statistics.header">Check these types of broken links</label>
 			<label index="overviews.nbtotal">Broken links total:</label>
 			<label index="hooks.db">Internal Links:</label>
 			<label index="hooks.file">File Links:</label>
@@ -65,6 +61,10 @@
 			<label index="list.report.couldnotresolvehost">Could not resolve host. The given remote host was not resolved.</label>
 			<label index="list.report.errornetworkdata">Failure with receiving network data.</label>
 			<label index="list.msg.ok">Ok</label>
+			<label index="Report">Report</label>
+			<label index="CheckLink">Check Links</label>
+			<label index="report.func.title">Show this level</label>
+			<label index="checklinks.func.title">Check this level</label>
 			<label index="list.msg.lastRun">%1$s %2$s</label>
 			<label index="list.no.broken.links.title">No broken links to show!</label>
 			<label index="list.no.broken.links">There are no broken links to be displayed.</label>
Index: modfuncreport/mod_template.html
===================================================================
--- modfuncreport/mod_template.html	(revision 42574)
+++ modfuncreport/mod_template.html	(working copy)
@@ -1,18 +1,18 @@
 <!-- ###FULLDOC### begin -->
-			<h3>###TITLE###</h3>
-			<p id="linkvalidator_firstSteps">###FIRST_STEPS###</p>
-			<div class="linkvalidator_funcmenu">###FUNC_MENU######REFRESH######UPDATE###</div>
 			<div class="linkvalidator_checkoptions">
 				###ID###
 				###CHECKALLLINK###
-				###CHECKOPTIONS###
+				<div>###CHECKOPTIONS_TITLE###</div>
+				<div>###CHECKOPTIONS###</div>
 			</div>
+			<div class="linkvalidator_funcmenu"><div>###FUNC_TITLE###</div><div>###FUNC_MENU###</div></div>
+			<div class="linkvalidator_button">###REFRESH######UPDATE###</div>
+
 			###CONTENT###
 <!-- ###FULLDOC### end -->
 
 
 <!-- ###CHECKOPTIONS_SECTION### begin -->
-	###STATISTICS_HEADER###
 	<table class="typo3-dblist" id="linkvalidator_statsTable" cellspacing="0" cellpadding="0">
 		<tr class="t3-row-header">
 			<td>
Index: modfuncreport/class.tx_linkvalidator_modfuncreport.php
===================================================================
--- modfuncreport/class.tx_linkvalidator_modfuncreport.php	(revision 42574)
+++ modfuncreport/class.tx_linkvalidator_modfuncreport.php	(working copy)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2005 - 2010 Jochen Rieger (j.rieger@connecta.ag) 
+ *  (c) 2005 - 2010 Jochen Rieger (j.rieger@connecta.ag)
  *  (c) 2010 - 2011 Michael Miousse (michael.miousse@infoglobe.ca)
  *  All rights reserved
  *
@@ -108,11 +108,19 @@
 	protected $refreshListHtml;
 
 	/**
-	 * Html for the Statistics table with the checkboxes of the link types and the numbers of broken links.
+	 * Html for the Statistics table with the checkboxes of the link types and the numbers of broken links for Report tab.
 	 *
 	 * @var string
 	 */
 	protected $checkOptHtml;
+	
+	
+	/**
+	 * Html for the Statistics table with the checkboxes of the link types and the numbers of broken links for Check links tab.
+	 *
+	 * @var string
+	 */
+	protected $checkOptHtmlCheck;
 
 	/**
 	 * Complete content (html) to be displayed.
@@ -135,7 +143,20 @@
 			$this->modTS = t3lib_BEfunc::getModTSconfig($this->pObj->id, 'mod.linkvalidator');
 			$this->modTS = $this->modTS['properties'];
 		}
+		$update = t3lib_div::_GP('updateLinkList');
+		$prefix = '';
+		if (!empty($update)) {
+			$prefix = 'check';
+		}
+		$set = t3lib_div::_GP($prefix . 'SET');
+		$this->pObj->handleExternalFunctionValue();
 
+		if(isset($this->searchLevel)) {
+			$this->pObj->MOD_SETTINGS['searchlevel'] = $this->searchLevel;
+		} else {
+			$this->searchLevel = $this->pObj->MOD_SETTINGS['searchlevel'];
+		}
+
 		if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'])) {
 			foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['linkvalidator']['checkLinks'] as $linkType => $value) {
 					// Compile list of all available types. Used for checking with button "Check Links".
@@ -143,14 +164,31 @@
 					$this->availableOptions[$linkType] = 1;
 				}
 					// Compile list of types currently selected by the checkboxes.
-				if ($this->pObj->MOD_SETTINGS[$linkType]) {
+				if (($this->pObj->MOD_SETTINGS[$linkType] && empty($set)) || $set[$linkType]) {
 					$this->checkOpt[$linkType] = 1;
+					$this->pObj->MOD_SETTINGS[$linkType] = 1;
+				} else {
+					$this->pObj->MOD_SETTINGS[$linkType] = 0;
+					unset($this->checkOpt[$linkType]);
 				}
 			}
 		}
+		$GLOBALS['BE_USER']->pushModuleData('web_info', $this->pObj->MOD_SETTINGS);
 
 		$this->initialize();
+			// Setting up the context sensitive menu:
+		$this->resPath = $this->doc->backPath . t3lib_extMgm::extRelPath('linkvalidator') . 'res/';
+		$this->pageRenderer = $this->doc->getPageRenderer();
 
+			// Localization
+		$labels = tx_em_Tools::getArrayFromLocallang(t3lib_extMgm::extPath('linkvalidator', 'modfuncreport/locallang.xml'));
+		$this->pageRenderer->addInlineLanguageLabelArray($labels);
+
+			// Add JS
+		$this->pageRenderer->addJsFile($this->doc->backPath . '../t3lib/js/extjs/ux/Ext.ux.FitToParent.js');
+		$this->pageRenderer->addJsFile($this->doc->backPath . '../t3lib/js/extjs/ux/flashmessages.js');
+		$this->pageRenderer->addJsFile($this->doc->backPath . 'js/extjs/iframepanel.js');
+
 		if ($this->modTS['showUpdateButton'] == 1) {
 			$this->updateListHtml = '<input type="submit" name="updateLinkList" value="' . $GLOBALS['LANG']->getLL('label_update') . '"/>';
 		}
@@ -162,14 +200,47 @@
 
 		$brokenLinkOverView = $this->processor->getLinkCounts($this->pObj->id);
 		$this->checkOptHtml = $this->getCheckOptions($brokenLinkOverView);
+		$this->checkOptHtmlCheck = $this->getCheckOptions($brokenLinkOverView, 'check');
+		$this->createTabs();
+		return '<div id="linkvalidator-modfuncreport"></div>';
+	}
 
+	/**
+	 * Create TabPanel to split the report and the checklinks functions
+	 *
+	 * @return void
+	 */
+	protected function createTabs() {
+		$panelCheck = '';
+		if ($this->modTS['showUpdateButton'] == 1) {
+			$panelCheck = '{
+
+		       title: TYPO3.lang.CheckLink,
+		       html: ' . json_encode($this->flush()) . ',
+			},	';
+		}
+
 		$this->render();
+		$js = 'var panel = new Ext.TabPanel( {
+			renderTo : "linkvalidator-modfuncreport",
+			id: "linkvalidator-main",
+			plain: true,
+			activeTab: 0,
+			autoScroll: true,
+			bodyStyle: "padding:10px;",
+			plugins: [new Ext.ux.plugins.FitToParent()],
+			items : [
+			{
+		       title: TYPO3.lang.Report,
+				html: ' . json_encode($this->flush(TRUE)) . '
+			},
+			' . $panelCheck . '
+			]
 
-
-		return $this->flush();
+		});';
+		$this->pageRenderer->addExtOnReadyCode($js);
 	}
 
-
 	/**
 	 * Initializes the menu array internally.
 	 *
@@ -255,7 +326,7 @@
 		$update = t3lib_div::_GP('updateLinkList');
 
 		if (!empty($update)) {
-			$this->processor->getLinkStatistics($this->availableOptions, $this->modTS['checkhidden']);
+			$this->processor->getLinkStatistics($this->checkOpt, $this->modTS['checkhidden']);
 		}
 	}
 
@@ -284,13 +355,14 @@
 	/**
 	 * Flushes the rendered content to the browser.
 	 *
+	 * @param boolean $form
 	 * @return void
 	 */
-	protected function flush() {
-		$content.= $this->doc->moduleBody(
+	protected function flush($form = FALSE) {
+		$content = $this->doc->moduleBody(
 			$this->pageRecord,
 			$this->getDocHeaderButtons(),
-			$this->getTemplateMarkers()
+			($form) ? $this->getTemplateMarkers(): $this->getTemplateMarkersCheck()
 		);
 
 		return $content;
@@ -326,9 +398,8 @@
 	 * @return html Content of the table or of the note
 	 */
 	protected function renderBrokenLinksTable() {
-		$content = '';
-		$items = array();
-		$brokenLinkItems = '';
+		$items = $brokenLinksMarker = array();
+		$brokenLinkItems = $brokenLinksTemplate = '';
 		$keyOpt = array();
 
 		if (is_array($this->checkOpt)) {
@@ -394,7 +465,6 @@
 	 * @return string Code of content
 	 */
 	protected function startTable() {
-		global $TYPO3_CONF_VARS;
 
 			// Listing head
 		$makerTableHead = array();
@@ -424,7 +494,7 @@
 	 *
 	 * @param string $table Name of database table
 	 * @param array $row Record row to be processed
-	 * @param string $brokenLinksItemTemplate Markup of the template to be used
+	 * @param array $brokenLinksItemTemplate Markup of the template to be used
 	 * @return string HTML of the rendered row
 	 */
 	protected function renderTableRow($table, array $row, $brokenLinksItemTemplate) {
@@ -469,7 +539,7 @@
 
 		$markerArray['actionlink'] = $actionLinks;
 		$markerArray['path'] = t3lib_BEfunc::getRecordPath($row['record_pid'], '', 0, 0);
-		$markerArray['element'] = $element; 
+		$markerArray['element'] = $element;
 		$markerArray['headlink'] = $row['link_title'];
 		$markerArray['linktarget'] = $brokenUrl;
 
@@ -497,15 +567,15 @@
 	 * @param array $brokenLinkOverView array of broken links information
 	 * @return string code content
 	 */
-	protected function getCheckOptions(array $brokenLinkOverView) {
-		$content = '';
-		$checkOptionsTemplate = '';
+	protected function getCheckOptions(array $brokenLinkOverView, $prefix = '') {
+		$markerArray = array();
+
 		$checkOptionsTemplate = t3lib_parsehtml::getSubpart($this->doc->moduleTemplate, '###CHECKOPTIONS_SECTION###');
 
 		$hookSectionContent = '';
 		$hookSectionTemplate = t3lib_parsehtml::getSubpart($checkOptionsTemplate, '###HOOK_SECTION###');
 
-		$markerArray['statistics_header'] = $this->doc->sectionHeader($GLOBALS['LANG']->getLL('overviews.statistics.header'));
+		$markerArray['statistics_header'] = $this->doc->sectionHeader($GLOBALS['LANG']->getLL('report.statistics.header'));
 
 		$totalCountLabel = $GLOBALS['LANG']->getLL('overviews.nbtotal');
 		$totalCountLabel = t3lib_BEfunc::wrapInHelp('linkvalidator', 'checkboxes', $totalCountLabel);
@@ -534,14 +604,8 @@
 						}
 						$translation = $GLOBALS['LANG']->getLL('hooks.' . $type);
 						$translation = $translation ? $translation : $type;
-						$option = t3lib_BEfunc::getFuncCheck(
-							array('id' => $this->pObj->id, 'search_levels' => $this->searchLevel),
-							'SET[' . $type . ']',
-							$this->pObj->MOD_SETTINGS[$type],
-							'',
-							'',
-							'id="SET[' . $type . ']"'
-						) . '<label for="SET[' . $type . ']">' . $translation . '</label>';
+						$option =  '<input type="checkbox" id="' . $prefix . 'SET[' . $type . ']" name="' . $prefix . 'SET[' . $type . ']" value="1"' . ($this->pObj->MOD_SETTINGS[$type]  ? ' checked="checked"' : '') .
+							'/>'.'<label for="SET[' . $type . ']">' . htmlspecialchars( $translation ) . '</label>';
 						$hookSectionMarker['option'] = $option;
 						$hookSectionContent .= t3lib_parsehtml::substituteMarkerArray($hookSectionTemplate, $hookSectionMarker, '###|###', TRUE, TRUE);
 					}
@@ -562,6 +626,7 @@
 	 */
 	protected function loadHeaderData() {
 		$this->doc->addStyleSheet('linkvalidator', $this->relativePath . 'res/linkvalidator.css', 'linkvalidator');
+		$this->doc->getPageRenderer()->addJsFile($this->doc->backPath . '../t3lib/js/extjs/ux/Ext.ux.FitToParent.js');
 	}
 
 
@@ -592,29 +657,27 @@
 		}
 		return $result;
 	}
+
+
 	/**
-	 * construct the Hint message displayed on top of the module.
+	 * Gets the filled markers that are used in the HTML template.
 	 *
-	 * @return string Hint message displayed on top of the module.
+	 * @return array The filled marker array
 	 */
-	protected function getFirstSteps(){
-		$firstSteps = $GLOBALS['LANG']->getLL('first.steps');
+	protected function getTemplateMarkers() {
+		$markers = array(
+			'FUNC_TITLE'            =>$GLOBALS['LANG']->getLL('report.func.title'),
+			'CHECKOPTIONS_TITLE'    =>$GLOBALS['LANG']->getLL('report.statistics.header'),
+			'FUNC_MENU'             => $this->getLevelSelector(),
+			'CONTENT'               => $this->content,
+			'CHECKALLLINK'          => $this->checkAllHtml,
+			'CHECKOPTIONS'          => $this->checkOptHtml,
+			'ID'                    => '<input type="hidden" name="id" value="' . $this->pObj->id . '"/>',
+			'REFRESH'               => $this->refreshListHtml,
+			'UPDATE'                => ''
+		);
 
-		if ($this->modTS['showUpdateButton'] == 1) {
-			$firstSteps .= ' ' . $GLOBALS['LANG']->getLL('first.steps.info.update.button');
-		}
-
-		if (t3lib_extMgm::isLoaded('scheduler')) {
-			if ($GLOBALS['BE_USER']->isAdmin()) {
-				$firstSteps .= ' ' . 
-				sprintf($GLOBALS['LANG']->getLL('first.steps.info.scheduler'),
-				 	'<a href="' . t3lib_div::getIndpEnv('TYPO3_SITE_URL') . 'typo3/mod.php?M=tools_txschedulerM1">', '</a>'
-				);
-			} else {
-				$firstSteps .= ' ' . $GLOBALS['LANG']->getLL('first.steps.info.scheduler.admin');
-			}
-		}
-		return $firstSteps;
+		return $markers;
 	}
 
 	/**
@@ -622,17 +685,16 @@
 	 *
 	 * @return array The filled marker array
 	 */
-	protected function getTemplateMarkers() {
-
+	protected function getTemplateMarkersCheck() {
 		$markers = array(
-			'FIRST_STEPS'           => $this->getFirstSteps(),
+			'FUNC_TITLE'			=>$GLOBALS['LANG']->getLL('checklinks.func.title'),
+			'CHECKOPTIONS_TITLE'	=>$GLOBALS['LANG']->getLL('checklinks.statistics.header'),
 			'FUNC_MENU'             => $this->getLevelSelector(),
-			'CONTENT'               => $this->content,
-			'TITLE'                 => $GLOBALS['LANG']->getLL('title'),
+			'CONTENT'               => '',
 			'CHECKALLLINK'          => $this->checkAllHtml,
-			'CHECKOPTIONS'          => $this->checkOptHtml,
+			'CHECKOPTIONS'          => $this->checkOptHtmlCheck,
 			'ID'                    => '<input type="hidden" name="id" value="' . $this->pObj->id . '"/>',
-			'REFRESH'               => $this->refreshListHtml,
+			'REFRESH'               => '',
 			'UPDATE'                => $this->updateListHtml
 		);
 
Index: res/linkvalidator.css
===================================================================
--- res/linkvalidator.css	(revision 42574)
+++ res/linkvalidator.css	(working copy)
@@ -1,19 +1,29 @@
 @charset "UTF-8";
 
-#linkvalidator_firstSteps {
-	margin-bottom: 10px;
-}
-	
 .linkvalidator_funcmenu {
 	margin-bottom: 25px;
+	margin-left: 25px;
+	vertical-align: top;
+	float: left;
 }
-
+.linkvalidator_checkoptions div {
+	float: left;
+}
+.linkvalidator_checkoptions h4 {
+	clear: both;
+}
+.linkvalidator_button {
+	clear: both;
+}
 .linkvalidator_funcmenu input {
 	margin-left: 5px;
 }
 
 .linkvalidator_checkoptions {
 	margin-bottom: 10px;
+	display: block;
+	margin-top: 7px;
+	width: 400px;
 }
 
 .linkvalidator_checkoptions .typo3-message {
@@ -70,3 +80,7 @@
 #linkvalidator_brokenLinksTable td:first-child {
 	border-left: none;
 }
+
+#linkvalidator-main h4 {
+	padding-top: 10px;
+}
\ No newline at end of file
