[225701, 245847, 246188] documentation, remove warnings, move non API packages to under internal
diff --git a/plugins/org.eclipse.actf.visualization.blind.html/src/org/eclipse/actf/visualization/blind/html/BlindVisualizerHtml.java b/plugins/org.eclipse.actf.visualization.blind.html/src/org/eclipse/actf/visualization/blind/html/BlindVisualizerHtml.java
index a5cbd02..57d8ec5 100644
--- a/plugins/org.eclipse.actf.visualization.blind.html/src/org/eclipse/actf/visualization/blind/html/BlindVisualizerHtml.java
+++ b/plugins/org.eclipse.actf.visualization.blind.html/src/org/eclipse/actf/visualization/blind/html/BlindVisualizerHtml.java
@@ -12,6 +12,11 @@
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Vector;
@@ -20,6 +25,7 @@
 import org.eclipse.actf.model.dom.html.IHTMLParser;
 import org.eclipse.actf.model.ui.IModelService;
 import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
+import org.eclipse.actf.util.FileUtils;
 import org.eclipse.actf.util.dom.DomPrintUtil;
 import org.eclipse.actf.util.logging.DebugPrintUtil;
 import org.eclipse.actf.visualization.IVisualizationConst;
@@ -32,7 +38,6 @@
 import org.eclipse.actf.visualization.engines.blind.html.IVisualizeMapData;
 import org.eclipse.actf.visualization.engines.blind.html.VisualizeEngine;
 import org.eclipse.actf.visualization.engines.blind.html.eval.HtmlErrorLogListener;
-import org.eclipse.actf.visualization.engines.blind.html.util.HandleFramePage;
 import org.eclipse.actf.visualization.eval.CheckTargetFactory;
 import org.eclipse.actf.visualization.eval.EvaluationUtil;
 import org.eclipse.actf.visualization.eval.IHtmlCheckTarget;
@@ -45,6 +50,8 @@
 import org.eclipse.actf.visualization.util.html2view.Html2ViewMapData;
 import org.eclipse.actf.visualization.util.html2view.Html2ViewMapMaker;
 import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
 
 public class BlindVisualizerHtml extends BlindVisualizerBase implements
 		IBlindVisualizer {
@@ -142,7 +149,7 @@
 
 			if (document == null) {
 				return ERROR;
-			} else if (HandleFramePage.hasFrameset(document, webBrowser) == true) {
+			} else if (hasFrameset(document, webBrowser) == true) {
 				hasFrame = true;
 			}
 
@@ -172,7 +179,7 @@
 			engine.setInvisibleIdSet(new HashSet<String>());
 
 			engine.setPageData(pageData);
-			engine.calculate();
+			engine.visualize();
 
 			maxReachingTime = engine.getMaxTime();
 			setInfoMessage(getMaxReachingTime());
@@ -204,8 +211,9 @@
 			//
 			// BrowserAndStyleInfo data =
 			// webBrowser.getBrowserAndStyleInfo();
-			IHtmlCheckTarget checkTarget = CheckTargetFactory.createHtmlCheckTarget(document, webBrowser.getURL(), null,
-					edu);
+			IHtmlCheckTarget checkTarget = CheckTargetFactory
+					.createHtmlCheckTarget(document, webBrowser.getURL(), null,
+							edu);
 
 			for (int i = 0; i < checkers.length; i++) {
 				if (checkers[i] instanceof IHtmlChecker) {
@@ -272,4 +280,88 @@
 
 	}
 
+	private boolean hasFrameset(Document document, IWebBrowserACTF webBrowser) {
+
+		NodeList framesetNl = document.getElementsByTagName("frameset");
+
+		if (framesetNl.getLength() > 0) {
+
+			NodeList frameList = document.getElementsByTagName("frame");
+
+			String sFileName = BlindVizResourceUtil.getTempDirectory()
+					+ "frameList.html";
+
+			String base = webBrowser.getURL();
+
+			try {
+				URL baseURL = new URL(base);
+
+				NodeList baseNL = document.getElementsByTagName("base");
+				if (baseNL.getLength() > 0) {
+					Element baseE = (Element) baseNL
+							.item(baseNL.getLength() - 1);
+					String baseUrlS = baseE.getAttribute("href");
+					if (baseUrlS.length() > 0) {
+						URL tmpUrl = new URL(baseURL, baseUrlS);
+						base = tmpUrl.toString();
+					}
+				}
+			} catch (Exception e) {
+			}
+
+			PrintWriter fileOutput;
+
+			try {
+				fileOutput = new PrintWriter(new OutputStreamWriter(
+						new FileOutputStream(sFileName), "UTF-8"));
+			} catch (IOException e) {
+				// e.printStackTrace();
+				// TODO
+				return true;
+			}
+
+			fileOutput.write("<html>");
+			// " lang=\""+lang+\">"); //use var
+			fileOutput.write("<head>" + FileUtils.LINE_SEP);
+			fileOutput
+					.write("<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" >"
+							+ FileUtils.LINE_SEP);
+			fileOutput.write("<base href=\"" + base + "\"></head>"
+					+ FileUtils.LINE_SEP + "<body><P>");
+			fileOutput.write("This page contains of "); // var
+			fileOutput.write(String.valueOf(frameList.getLength()));
+			fileOutput.write(" frames."); // var
+			fileOutput.write("<br>" + FileUtils.LINE_SEP);
+			fileOutput.write("Please select one of them."); // var
+			fileOutput.write("</P>" + FileUtils.LINE_SEP + "<ol>"
+					+ FileUtils.LINE_SEP);
+
+			String strTitle, strName;
+			for (int i = 0; i < frameList.getLength(); i++) {
+				Element frameEl = (Element) frameList.item(i);
+				strTitle = frameEl.getAttribute("title");
+				strName = frameEl.getAttribute("name");
+				if (strTitle.equals(""))
+					strTitle.equals("none");
+				if (strName.equals(""))
+					strName.equals("none");
+				fileOutput.write("<li><a href=\"" + frameEl.getAttribute("src")
+						+ "\">Title: \"" + strTitle + "\".<BR> Name: \""
+						+ strName + "\".<BR> src: \""
+						+ frameEl.getAttribute("src") + "\".</a>"
+						+ FileUtils.LINE_SEP);
+			}
+			fileOutput.write("</ol></body></html>");
+
+			fileOutput.flush();
+			fileOutput.close();
+
+			webBrowser.navigate(sFileName);
+			return true;
+
+		} else {
+			return false;
+		}
+	}
+
 }
diff --git a/plugins/org.eclipse.actf.visualization.blind.odfbyhtml/src/org/eclipse/actf/visualization/blind/odfbyhtml/BlindVisualizerOdfByHtml.java b/plugins/org.eclipse.actf.visualization.blind.odfbyhtml/src/org/eclipse/actf/visualization/blind/odfbyhtml/BlindVisualizerOdfByHtml.java
index 20185ea..f6067d7 100644
--- a/plugins/org.eclipse.actf.visualization.blind.odfbyhtml/src/org/eclipse/actf/visualization/blind/odfbyhtml/BlindVisualizerOdfByHtml.java
+++ b/plugins/org.eclipse.actf.visualization.blind.odfbyhtml/src/org/eclipse/actf/visualization/blind/odfbyhtml/BlindVisualizerOdfByHtml.java
@@ -122,7 +122,7 @@
 			engine.setHtml2viewMapV(html2ViewMapV);
 			engine.setInvisibleIdSet(new HashSet<String>());
 			engine.setPageData(pageData);
-			engine.calculate();
+			engine.visualize();
 
 			maxReachingTime = engine.getMaxTime();
 			setInfoMessage(getMaxReachingTime());
diff --git a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/PartControlBlind.java b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/PartControlBlind.java
index e974c0a..7a097a2 100644
--- a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/PartControlBlind.java
+++ b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/PartControlBlind.java
@@ -24,7 +24,6 @@
 import org.eclipse.actf.visualization.engines.blind.eval.EvaluationResultBlind;
 import org.eclipse.actf.visualization.engines.blind.eval.PageEvaluation;
 import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.IHighlightElementListener;
-import org.eclipse.actf.visualization.engines.blind.html.util.SaveReportBlind;
 import org.eclipse.actf.visualization.engines.blind.html.util.VisualizeReportUtil;
 import org.eclipse.actf.visualization.eval.IEvaluationResult;
 import org.eclipse.actf.visualization.eval.html.statistics.PageData;
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/SaveReportBlind.java b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/SaveReportBlind.java
similarity index 98%
rename from plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/SaveReportBlind.java
rename to plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/SaveReportBlind.java
index d044479..575ebd3 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/SaveReportBlind.java
+++ b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/internal/SaveReportBlind.java
@@ -9,7 +9,7 @@
  *    Kentarou FUKUDA - initial API and implementation
  *******************************************************************************/
 
-package org.eclipse.actf.visualization.engines.blind.html.util;
+package org.eclipse.actf.visualization.blind.ui.internal;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -23,6 +23,7 @@
 import org.eclipse.actf.util.dom.DomPrintUtil;
 import org.eclipse.actf.visualization.engines.blind.BlindVizResourceUtil;
 import org.eclipse.actf.visualization.engines.blind.eval.PageEvaluation;
+import org.eclipse.actf.visualization.engines.blind.html.util.VisualizeReportUtil;
 import org.eclipse.actf.visualization.eval.EvaluationUtil;
 import org.eclipse.actf.visualization.eval.IEvaluationItem;
 import org.eclipse.actf.visualization.eval.IEvaluationResult;
diff --git a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/views/BlindView.java b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/views/BlindView.java
index ce34baf..4f7aae0 100644
--- a/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/views/BlindView.java
+++ b/plugins/org.eclipse.actf.visualization.blind/src/org/eclipse/actf/visualization/blind/ui/views/BlindView.java
@@ -14,7 +14,8 @@
 import org.eclipse.actf.ui.util.AbstractPartListener;
 import org.eclipse.actf.visualization.blind.ui.internal.PartControlBlind;
 import org.eclipse.actf.visualization.blind.ui.internal.SelectionListenerBlind;
-import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.ElementViewerManager;
+import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.ElementViewerManagerFactory;
+import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.IElementViewerManager;
 import org.eclipse.actf.visualization.ui.IVisualizationView;
 import org.eclipse.actf.visualization.ui.VisualizationStatusLineContributionItem;
 import org.eclipse.actf.visualization.ui.report.table.ResultTableLabelProvider;
@@ -37,7 +38,7 @@
 
 	private ResultTableSorter viewerSorter;
 
-	private ElementViewerManager elementViewerManager;
+	private IElementViewerManager elementViewerManager;
 
 	private PartControlBlind partRightBlind;
 
@@ -45,7 +46,7 @@
 		super();
 		baseLabelProvider = new ResultTableLabelProvider();
 		viewerSorter = new ResultTableSorter();
-		elementViewerManager = ElementViewerManager.getInstance();
+		elementViewerManager = ElementViewerManagerFactory.getInstance();
 	}
 
 	public void init(IViewSite site) throws PartInitException {
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/IVisualizeMapData.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/IVisualizeMapData.java
index 65c2a9c..4078dc7 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/IVisualizeMapData.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/IVisualizeMapData.java
@@ -12,28 +12,74 @@
 
 import java.util.Map;
 
-import org.eclipse.actf.visualization.internal.engines.blind.html.util.VisualizationNodeInfo;
+import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 
+/**
+ * Interface to provide mapping information between original {@link Document}
+ * and visualization result {@link Document}
+ */
 public interface IVisualizeMapData {
 
 	/**
-	 * @return Returns the orig2idMap.
+	 * @return map between {@link Node} in original Document to corresponding
+	 *         result {@link Node} ID
 	 */
 	public abstract Map<Node, Integer> getOrig2idMap();
 
-	public abstract void addReplacedNodeMapping(Node result, Node replacement);
+	/**
+	 * Add replaced {@link Node} information.
+	 * 
+	 * @param target
+	 *            target Node to replace
+	 * @param replacement
+	 *            replacement Node
+	 */
+	public abstract void addReplacedNodeMapping(Node target, Node replacement);
 
+	/**
+	 * Get corresponding {@link Node} from original {@link Document}
+	 * 
+	 * @param result
+	 *            target Node in result {@link Document}
+	 * @return corresponding original Node
+	 */
 	public abstract Node getOrigNode(Node result);
 
+	/**
+	 * Get corresponding {@link Node} from result {@link Document}
+	 * 
+	 * @param orig
+	 *            target Node in original {@link Document}
+	 * @return corresponding result Node
+	 */
 	public abstract Node getResultNode(Node orig);
 
-	public abstract Node getReplacement(Node result);
+	/**
+	 * Get replacement {@link Node} of target {@link Node}
+	 * 
+	 * @param target
+	 *            target {@link Node}
+	 * @return replacement Node
+	 */
+	public abstract Node getReplacement(Node target);
 
-	public abstract Integer getIdOfNode(Node result);
+	/**
+	 * Get ID of target {@link Node} in result {@link Document}
+	 * 
+	 * @param target
+	 *            target {@link Node}
+	 * @return ID of target Node
+	 */
+	public abstract Integer getIdOfNode(Node target);
 
-	public abstract Integer getIdOfOrigNode(Node orig);
-
-	public abstract VisualizationNodeInfo getNodeInfo(Node result);
+	/**
+	 * Get ID of target {@link Node} in original {@link Document}
+	 * 
+	 * @param target
+	 *            target {@link Node}
+	 * @return ID of target Node
+	 */
+	public abstract Integer getIdOfOrigNode(Node target);
 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/VisualizeEngine.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/VisualizeEngine.java
index ff69572..4ef9eea 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/VisualizeEngine.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/VisualizeEngine.java
@@ -53,6 +53,9 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
+/**
+ * Blind usability visualization engine.
+ */
 public class VisualizeEngine {
 
 	public static String ERROR_ICON_NAME = "exclawhite21.gif";
@@ -83,7 +86,7 @@
 
 	private IPacketCollection allPc = null;
 
-	private boolean servletMode = false;
+	private boolean servletMode = false; // for future use
 
 	private int iMaxTime;
 
@@ -140,10 +143,10 @@
 	}
 
 	/**
-	 * Sets the document.
+	 * Sets target document.
 	 * 
 	 * @param document
-	 *            The document to set
+	 *            target document
 	 */
 	public void setDocument(Document document) {
 		// TODO move to screen reader engine
@@ -177,7 +180,10 @@
 		}
 	}
 
-	public void calculate() {
+	/**
+	 * Visualize blind users' usability
+	 */
+	public void visualize() {
 		if (result == null) {
 			return;
 		} else {
@@ -313,7 +319,7 @@
 		}
 	}
 
-	private void replaceImgAndCheck(Document doc, IVisualizeMapData mapData,
+	private void replaceImgAndCheck(Document doc, VisualizeMapDataImpl mapData,
 			boolean remove) {
 
 		NodeList mapList = doc.getElementsByTagName("map");
@@ -475,42 +481,48 @@
 		fIsActivating = true;
 		if (jwatc == null) {
 			try {
-				jwatc = VoiceBrowserControllerFactory.createVoiceBrowserController();
+				jwatc = VoiceBrowserControllerFactory
+						.createVoiceBrowserController();
 			} catch (Exception e) {
 				e.printStackTrace();
 			}
 		}
 	}
 
+	/**
+	 * @return visualization result {@link Document}
+	 */
 	public Document getResult() {
 		return result;
 	}
 
+	/**
+	 * @return detected problems as List of {@link IProblemItem}
+	 */
 	public List<IProblemItem> getProbelems() {
 		return problems;
 	}
 
 	/**
+	 * Set base URL of target page
+	 * 
 	 * @param string
+	 *            base URL
 	 */
 	public void setBaseUrl(String string) {
 		baseUrl = string;
 	}
 
 	/**
+	 * Set target URL
+	 * 
 	 * @param string
+	 *            target URL
 	 */
 	public void setTargetUrl(String string) {
 		targetUrl = string;
 	}
 
-	/**
-	 * @param b
-	 */
-	public void setServletMode(boolean b) {
-		servletMode = b;
-	}
-
 	// Added on 2003/10/20
 	private void calMaxTime() {
 		iMaxTime = 0;
@@ -545,37 +557,56 @@
 	}
 
 	// Added on 2003/10/20
+	/**
+	 * @return maximum reaching time in the page
+	 */
 	public int getMaxTime() {
 		return iMaxTime;
 	}
 
-	public VisualizeStyleInfo getStyleInfo() {
-		return styleInfo;
-	}
-
 	/**
+	 * Set invisible elements' ID
+	 * 
 	 * @param invisibleIdSet
-	 *            The invisibleIdSet to set.
+	 *            target Set of IDs
 	 */
 	public void setInvisibleIdSet(Set<String> invisibleIdSet) {
 		this.invisibleIdSet = invisibleIdSet;
 	}
 
 	/**
-	 * @return Returns the mapData.
+	 * @return the mapping information between original/visualization result
+	 *         {@link Document}
+	 * @see IVisualizeMapData
 	 */
 	public IVisualizeMapData getVisualizeMapData() {
 		return mapData;
 	}
 
+	/**
+	 * Set vector of HTML source code position information
+	 * 
+	 * @param html2viewMapV
+	 *            target Vector of {@link Html2ViewMapData}
+	 */
 	public void setHtml2viewMapV(Vector<Html2ViewMapData> html2viewMapV) {
 		this.html2viewMapV = html2viewMapV;
 	}
 
+	/**
+	 * Set target {@link PageData} to store page statistics data through
+	 * visualization
+	 * 
+	 * @param pageData
+	 *            target {@link PageData}
+	 */
 	public void setPageData(PageData pageData) {
 		this.pageData = pageData;
 	}
 
+	/**
+	 * @return variant for visualization as {@link File}
+	 */
 	public File getVariantFile() {
 		return variantFile;
 	}
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/eval/BlindProblem.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/eval/BlindProblem.java
index 3198215..8bf1754 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/eval/BlindProblem.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/eval/BlindProblem.java
@@ -25,317 +25,322 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
-
-
 public class BlindProblem extends ProblemItemImpl implements IProblemItem {
 
-    public static final int NO_ALT_IMG = 0;
+	public static final int NO_ALT_IMG = 0;
 
-    public static final int NO_ALT_INPUT = 1;
+	public static final int NO_ALT_INPUT = 1;
 
-    public static final int NO_ALT_AREA = 2;
+	public static final int NO_ALT_AREA = 2;
 
-    public static final int WRONG_ALT_IMG = 4;
+	public static final int WRONG_ALT_IMG = 4;
 
-    public static final int WRONG_ALT_INPUT = 5;//TODO
+	public static final int WRONG_ALT_INPUT = 5;// TODO
 
-    public static final int WRONG_ALT_AREA = 6;
+	public static final int WRONG_ALT_AREA = 6;
 
-    public static final int NO_DEST_LINK = 8;
+	public static final int NO_DEST_LINK = 8;
 
-    public static final int REDUNDANT_ALT = 9;
+	public static final int REDUNDANT_ALT = 9;
 
-    public static final int NO_SKIPTOMAIN_LINK = 10;// without structure
+	public static final int NO_SKIPTOMAIN_LINK = 10;// without structure
 
-    public static final int TOO_LESS_STRUCTURE = 12;
+	public static final int TOO_LESS_STRUCTURE = 12;
 
-    public static final int NO_TEXT_INTRAPAGELINK = 14;
+	public static final int NO_TEXT_INTRAPAGELINK = 14;
 
-    public static final int WRONG_TEXT = 15;
+	public static final int WRONG_TEXT = 15;
 
-    public static final int NO_ID_INPUT = 16;	//TODO
+	public static final int NO_ID_INPUT = 16; // TODO
 
-    public static final int TOOFAR_SKIPTOMAIN_LINK = 17;
+	public static final int TOOFAR_SKIPTOMAIN_LINK = 17;
 
-    public static final int NO_DEST_SKIP_LINK = 18;
+	public static final int NO_DEST_SKIP_LINK = 18;
 
-    public static final int WRONG_SKIP_LINK_TEXT = 19;
+	public static final int WRONG_SKIP_LINK_TEXT = 19;
 
-    public static final int NO_SKIPTOMAIN_WITH_STRUCTURE = 20;
+	public static final int NO_SKIPTOMAIN_WITH_STRUCTURE = 20;
 
-    public static final int ALERT_NO_SKIPTOMAIN_NO_STRUCTURE = 21;
+	public static final int ALERT_NO_SKIPTOMAIN_NO_STRUCTURE = 21;
 
-    public static final int LESS_STRUCTURE_WITH_SKIPLINK = 22;
+	public static final int LESS_STRUCTURE_WITH_SKIPLINK = 22;
 
-    public static final int LESS_STRUCTURE_WITH_HEADING = 23;
+	public static final int LESS_STRUCTURE_WITH_HEADING = 23;
 
-    public static final int LESS_STRUCTURE_WITH_BOTH = 24;
+	public static final int LESS_STRUCTURE_WITH_BOTH = 24;
 
-    public static final int NO_TEXT_WITH_TITLE_INTRAPAGELINK = 25;
+	public static final int NO_TEXT_WITH_TITLE_INTRAPAGELINK = 25;
 
-    public static final int WRONG_SKIP_LINK_TITLE = 26;
+	public static final int WRONG_SKIP_LINK_TITLE = 26;
 
-    public static final int ALERT_WRONG_ALT = 27;
+	public static final int ALERT_WRONG_ALT = 27;
 
-    public static final int ALERT_REDUNDANT_TEXT = 28; // TODO
+	public static final int ALERT_REDUNDANT_TEXT = 28; // TODO
 
-    public static final int SEPARATE_DBCS_ALT_IMG = 29;
-    
-    public static final int SEPARATE_DBCS_ALT_INPUT =30; //TODO
+	public static final int SEPARATE_DBCS_ALT_IMG = 29;
 
-    public static final int SEPARATE_DBCS_ALT_AREA = 31;
+	public static final int SEPARATE_DBCS_ALT_INPUT = 30; // TODO
 
-    public static final int ALERT_NO_DEST_INTRA_LINK = 33;
+	public static final int SEPARATE_DBCS_ALT_AREA = 31;
 
-    public static final int ALERT_SPELL_OUT = 34;
+	public static final int ALERT_NO_DEST_INTRA_LINK = 33;
 
-    public static final int INVISIBLE_INTRAPAGE_LINK = 35;
+	public static final int ALERT_SPELL_OUT = 34;
 
-    public static final int NO_VALUE_INPUT_BUTTON = 36;
+	public static final int INVISIBLE_INTRAPAGE_LINK = 35;
 
-    public static final int SEPARATE_DBCS_INPUT_VALUE = 37;
+	public static final int NO_VALUE_INPUT_BUTTON = 36;
 
-    public static final int NUM_PROBLEMS = 38;// max id+1
+	public static final int SEPARATE_DBCS_INPUT_VALUE = 37;
 
-    // ////////////////////////////////////////////////////
+	public static final int NUM_PROBLEMS = 38;// max id+1
 
-    private List<Node> nodeList = null;
+	// ////////////////////////////////////////////////////
 
-    private int nodeId = -1;
+	private List<Node> nodeList = null;
 
-    private boolean isMulti = false;
+	private int nodeId = -1;
 
-    private ArrayList<HighlightTargetId> idsList = new ArrayList<HighlightTargetId>();
+	private boolean isMulti = false;
 
-    private int subType = -1; // TODO
+	private ArrayList<HighlightTargetId> idsList = new ArrayList<HighlightTargetId>();
 
-    /**
-     * Constructor for BlindProblem.
-     */
-    public BlindProblem(int _subtype) {
-        this(_subtype, "");
-    }
+	/**
+	 * Constructor for BlindProblem.
+	 */
+	public BlindProblem(int _subtype) {
+		this(_subtype, "");
+	}
 
-    /**
-     * Constructor for BlindProblem.
-     */
-    public BlindProblem(int _subtype, String targetString) {
-        super("B_" + Integer.toString(_subtype));
+	/**
+	 * Constructor for BlindProblem.
+	 */
+	public BlindProblem(int _subtype, String targetString) {
+		super("B_" + Integer.toString(_subtype));
 
-        subType = _subtype;
+		subType = _subtype;
 
-        nodeList = new Vector<Node>();
-        setTargetString(targetString);
+		nodeList = new Vector<Node>();
+		setTargetString(targetString);
 
-        // for HPB? use ReportUtil?
-        switch (_subtype) {
-        case WRONG_ALT_IMG:
-        case WRONG_ALT_INPUT:
-        case WRONG_ALT_AREA:
-        case WRONG_TEXT:
-        case ALERT_WRONG_ALT:
-        case SEPARATE_DBCS_ALT_IMG:
-        case SEPARATE_DBCS_ALT_INPUT:
-        case SEPARATE_DBCS_ALT_AREA:
-        // case WRONG_SKIP_LINK_TEXT:
-        // case WRONG_SKIP_LINK_TITLE:
-        // case WRONG_TITLE_IFRAME:
-        case SEPARATE_DBCS_INPUT_VALUE:
-        case REDUNDANT_ALT:
-        case NO_DEST_LINK:
-        case NO_DEST_SKIP_LINK:
-        case ALERT_NO_DEST_INTRA_LINK:
-        case ALERT_SPELL_OUT:
-            this.targetStringForHPB = targetString;
-            break;
-        default:
-        }
-    }
+		// for HPB? use ReportUtil?
+		switch (_subtype) {
+		case WRONG_ALT_IMG:
+		case WRONG_ALT_INPUT:
+		case WRONG_ALT_AREA:
+		case WRONG_TEXT:
+		case ALERT_WRONG_ALT:
+		case SEPARATE_DBCS_ALT_IMG:
+		case SEPARATE_DBCS_ALT_INPUT:
+		case SEPARATE_DBCS_ALT_AREA:
+			// case WRONG_SKIP_LINK_TEXT:
+			// case WRONG_SKIP_LINK_TITLE:
+			// case WRONG_TITLE_IFRAME:
+		case SEPARATE_DBCS_INPUT_VALUE:
+		case REDUNDANT_ALT:
+		case NO_DEST_LINK:
+		case NO_DEST_SKIP_LINK:
+		case ALERT_NO_DEST_INTRA_LINK:
+		case ALERT_SPELL_OUT:
+			this.targetStringForHPB = targetString;
+			break;
+		default:
+		}
+	}
 
-    /**
-     * Returns the node.
-     * 
-     * @return Node
-     */
-    public Node getTargetNodeInResultDoc() {
-        if (nodeList.size() > 0) {
-            return (Node) nodeList.get(0);
-        } else {
-            return null;
-        }
-    }
+	/**
+	 * Returns the node.
+	 * 
+	 * @return Node
+	 */
+	public Node getTargetNodeInResultDoc() {
+		if (nodeList.size() > 0) {
+			return (Node) nodeList.get(0);
+		} else {
+			return null;
+		}
+	}
 
-    /**
-     * Sets the node.
-     * 
-     * @param node
-     *            The node to set
-     */
-    public void setNode(Node node) {
-        nodeList.add(0, node);
-    }
+	/**
+	 * Sets the node.
+	 * 
+	 * @param node
+	 *            The node to set
+	 */
+	public void setNode(Node node) {
+		nodeList.add(0, node);
+	}
 
-    /**
-     * Adds the node.
-     * 
-     * @param node
-     *            The node to set
-     */
-    public void addNode(Node node) {
-        nodeList.add(node);
-    }
+	/**
+	 * Adds the node.
+	 * 
+	 * @param node
+	 *            The node to set
+	 */
+	public void addNode(Node node) {
+		nodeList.add(node);
+	}
 
-    /**
-     * Sets the node.
-     * 
-     * @param node
-     *            The node to set
-     */
-    public void setNode(Node node, int id) {
-        nodeList.add(0, node);
-        this.nodeId = id;
-    }
+	/**
+	 * Sets the node.
+	 * 
+	 * @param node
+	 *            The node to set
+	 */
+	public void setNode(Node node, int id) {
+		nodeList.add(0, node);
+		this.nodeId = id;
+	}
 
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return "node=" + nodeId + ":" + getDescription();
-    }
+	/**
+	 * @see java.lang.Object#toString()
+	 */
+	public String toString() {
+		return "node=" + nodeId + ":" + getDescription();
+	}
 
-    /**
-     * Returns the nodeList.
-     * 
-     * @return List
-     */
-    public List<Node> getNodeList() {
-        return nodeList;
-    }
+	/**
+	 * Returns the nodeList.
+	 * 
+	 * @return List
+	 */
+	public List<Node> getNodeList() {
+		return nodeList;
+	}
 
-    /**
-     * Sets the nodeId.
-     * 
-     * @param nodeId
-     *            The nodeId to set
-     */
-    public boolean setNodeId(int nodeId) {
-        if (this.nodeId == -1) {
-            this.nodeId = nodeId;
-            return true;
-        } else {
-            return false;
-        }
-    }
+	/**
+	 * Sets the nodeId.
+	 * 
+	 * @param nodeId
+	 *            The nodeId to set
+	 */
+	public boolean setNodeId(int nodeId) {
+		if (this.nodeId == -1) {
+			this.nodeId = nodeId;
+			return true;
+		} else {
+			return false;
+		}
+	}
 
-    public void addNodeIds(HighlightTargetId target) {
-        isMulti = true;
-        idsList.add(target);
-    }
+	public void addNodeIds(HighlightTargetId target) {
+		isMulti = true;
+		idsList.add(target);
+	}
 
-    public void prepareHighlight() {
+	public void prepareHighlight() {
 
-        if (isMulti) {
-            HighlightTargetId[] targets = new HighlightTargetId[idsList.size()];
-            idsList.toArray(targets);
-            setHighlightTargetIds(targets);
-        } else {
-            // setHighlightTargetIds(nodeId, nodeId);
-            if (nodeId > -1) {
-                setHighlightTargetIds(new HighlightTargetId(nodeId, nodeId));
-            }
-        }
-    }
+		if (isMulti) {
+			HighlightTargetId[] targets = new HighlightTargetId[idsList.size()];
+			idsList.toArray(targets);
+			setHighlightTargetIds(targets);
+		} else {
+			// setHighlightTargetIds(nodeId, nodeId);
+			if (nodeId > -1) {
+				setHighlightTargetIds(new HighlightTargetId(nodeId, nodeId));
+			}
+		}
+	}
 
-    private int getElementId(Element target) {
-        int result = -1;
-        String tmpId = target.getAttribute("id");
-        if (tmpId.length() > 0 && tmpId.startsWith("id")) {
-            tmpId = tmpId.substring(tmpId.indexOf("id") + 2);
-            try {
-                result = Integer.parseInt(tmpId);
-            } catch (Exception e) {
-            }
-        }
-        return result;
-    }
+	private int getElementId(Element target) {
+		int result = -1;
+		String tmpId = target.getAttribute("id");
+		if (tmpId.length() > 0 && tmpId.startsWith("id")) {
+			tmpId = tmpId.substring(tmpId.indexOf("id") + 2);
+			try {
+				result = Integer.parseInt(tmpId);
+			} catch (Exception e) {
+			}
+		}
+		return result;
+	}
 
-    public void setLineNumber(Id2LineViaAccId id2line) {
+	public void setLineNumber(Id2LineViaAccId id2line) {
 
-        switch (subType) {
-        case WRONG_TEXT:
-            try {
-                // text_node -> span_for_visualize -> real_parent
-                Node tmpN = getTargetNodeInResultDoc().getParentNode().getParentNode();
-                if (tmpN != null && tmpN.getNodeType() == Node.ELEMENT_NODE) {
-                    int id = getElementId((Element) tmpN);
-                    if (id > -1) {
-                        // setLine(id2line.getLine(id));
-                        Html2ViewMapData tmpData = id2line.getViewMapData(id);
-                        if (tmpData != null) {
-                            setHighlightTargetSourceInfo(new HighlightTargetSourceInfo(tmpData, tmpData));
-                        }
-                    }
-                }
-            } catch (Exception e1) {
-                // e1.printStackTrace();
-            }
-            break;
-        case NO_ALT_AREA:
-        case WRONG_ALT_AREA:
-        case SEPARATE_DBCS_ALT_AREA:
-            // int tmpNodeId = nodeId;
-            Node tmpN = getTargetNodeInResultDoc();
-            if (tmpN.getNodeType() == Node.ELEMENT_NODE) {
-                int id = getElementId((Element) tmpN);
-                if (id > -1) {
-                    Html2ViewMapData tmpData = id2line.getViewMapData(id);
-                    setHighlightTargetSourceInfo(new HighlightTargetSourceInfo(tmpData, tmpData));
-                    // setLine(id2line.getLine(id));
-                }
-            }
-            break;
-        default:
-            // TODO divide more by using case 
-            if (isMulti) {
+		switch (subType) {
+		case WRONG_TEXT:
+			try {
+				// text_node -> span_for_visualize -> real_parent
+				Node tmpN = getTargetNodeInResultDoc().getParentNode()
+						.getParentNode();
+				if (tmpN != null && tmpN.getNodeType() == Node.ELEMENT_NODE) {
+					int id = getElementId((Element) tmpN);
+					if (id > -1) {
+						// setLine(id2line.getLine(id));
+						Html2ViewMapData tmpData = id2line.getViewMapData(id);
+						if (tmpData != null) {
+							setHighlightTargetSourceInfo(new HighlightTargetSourceInfo(
+									tmpData, tmpData));
+						}
+					}
+				}
+			} catch (Exception e1) {
+				// e1.printStackTrace();
+			}
+			break;
+		case NO_ALT_AREA:
+		case WRONG_ALT_AREA:
+		case SEPARATE_DBCS_ALT_AREA:
+			// int tmpNodeId = nodeId;
+			Node tmpN = getTargetNodeInResultDoc();
+			if (tmpN.getNodeType() == Node.ELEMENT_NODE) {
+				int id = getElementId((Element) tmpN);
+				if (id > -1) {
+					Html2ViewMapData tmpData = id2line.getViewMapData(id);
+					setHighlightTargetSourceInfo(new HighlightTargetSourceInfo(
+							tmpData, tmpData));
+					// setLine(id2line.getLine(id));
+				}
+			}
+			break;
+		default:
+			// TODO divide more by using case
+			if (isMulti) {
 
-                ArrayList<HighlightTargetSourceInfo> tmpArray = new ArrayList<HighlightTargetSourceInfo>();
+				ArrayList<HighlightTargetSourceInfo> tmpArray = new ArrayList<HighlightTargetSourceInfo>();
 
-                HighlightTargetId[] targets = new HighlightTargetId[idsList.size()];
-                idsList.toArray(targets);
-                for (int i = 0; i < targets.length; i++) {
-                    Html2ViewMapData startData = id2line.getViewMapData(targets[i].getStartId());
-                    Html2ViewMapData endData = id2line.getViewMapData(targets[i].getEndId());
+				HighlightTargetId[] targets = new HighlightTargetId[idsList
+						.size()];
+				idsList.toArray(targets);
+				for (int i = 0; i < targets.length; i++) {
+					Html2ViewMapData startData = id2line
+							.getViewMapData(targets[i].getStartId());
+					Html2ViewMapData endData = id2line
+							.getViewMapData(targets[i].getEndId());
 
-                    if (startData == null) {
-                        startData = endData;
-                    }
-                    if (endData == null) {
-                        endData = startData;
-                    }
+					if (startData == null) {
+						startData = endData;
+					}
+					if (endData == null) {
+						endData = startData;
+					}
 
-                    if (startData != null) {
-                        tmpArray.add(new HighlightTargetSourceInfo(startData, endData));
-                    }
-                }
+					if (startData != null) {
+						tmpArray.add(new HighlightTargetSourceInfo(startData,
+								endData));
+					}
+				}
 
-                HighlightTargetSourceInfo[] sourceInfo = new HighlightTargetSourceInfo[tmpArray.size()];
-                tmpArray.toArray(sourceInfo);
-                setHighlightTargetSourceInfo(sourceInfo);
+				HighlightTargetSourceInfo[] sourceInfo = new HighlightTargetSourceInfo[tmpArray
+						.size()];
+				tmpArray.toArray(sourceInfo);
+				setHighlightTargetSourceInfo(sourceInfo);
 
-            } else {
+			} else {
 
-                Html2ViewMapData tmpData = id2line.getViewMapData(nodeId);
-                if (tmpData != null) {
-                    setHighlightTargetSourceInfo(new HighlightTargetSourceInfo(tmpData, tmpData));
-                }
-                // check
-                // setLine(id2line.getLine(nodeId));
+				Html2ViewMapData tmpData = id2line.getViewMapData(nodeId);
+				if (tmpData != null) {
+					setHighlightTargetSourceInfo(new HighlightTargetSourceInfo(
+							tmpData, tmpData));
+				}
+				// check
+				// setLine(id2line.getLine(nodeId));
 
-            }
-        }
-    }
+			}
+		}
+	}
 
-    public int getProblemSubType() {
-        return (subType);
-    }
+	public int getProblemSubType() {
+		return (subType);
+	}
 }
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/eval/HtmlErrorLogListener.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/eval/HtmlErrorLogListener.java
index 9a78b0c..05c2ce3 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/eval/HtmlErrorLogListener.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/eval/HtmlErrorLogListener.java
@@ -20,13 +20,14 @@
 import org.eclipse.actf.visualization.eval.problem.ProblemItemImpl;
 import org.eclipse.actf.visualization.util.html2view.Html2ViewMapData;
 
-
-
-
+/**
+ * Implementation of {@link IErrorLogListener} to correct HTML parse errors.
+ */
 public class HtmlErrorLogListener implements IErrorLogListener {
 
-	//TODO move to eval plugin (eval.html) (& move IErrorLogListener to common/util)
-	
+	// TODO move to eval plugin (eval.html) (& move IErrorLogListener to
+	// common/util)
+
 	private boolean isNoDoctype = false;
 
 	private boolean isNonPublic = false;
@@ -36,11 +37,18 @@
 	private Vector<IProblemItem> problemV = new Vector<IProblemItem>();
 
 	private String orgDoctype = "";
-	
+
 	private boolean flag = true;
 
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.actf.model.dom.html.IErrorLogListener#errorLog(int,
+	 *      java.lang.String)
+	 */
 	public void errorLog(int arg0, String arg1) {
-		if (arg0 != IParserError.ILLEGAL_ATTRIBUTE || arg1.indexOf(Html2ViewMapData.ACTF_ID) < 0) {
+		if (arg0 != IParserError.ILLEGAL_ATTRIBUTE
+				|| arg1.indexOf(Html2ViewMapData.ACTF_ID) < 0) {
 			// TODO create HTML problems
 			switch (arg0) {
 			case IParserError.DOCTYPE_MISSED:
@@ -49,10 +57,13 @@
 			case IParserError.ILLEGAL_DOCTYPE:
 				if (arg1.indexOf("Invalid DOCTYPE declaration.") > -1) {
 					isNonPublic = true;
-				} else if (arg1.matches(".*Instead of \".*\" use \".*\" as a DTD.")) {
+				} else if (arg1
+						.matches(".*Instead of \".*\" use \".*\" as a DTD.")) {
 					orgDoctype = arg1.substring(arg1.indexOf("\"") + 1);
-					orgDoctype = orgDoctype.substring(0, orgDoctype.indexOf("\""));
-					if (orgDoctype.matches("-//W3C//DTD XHTML ((1.0 (Strict|Transitional|Frameset))|1.1|Basic 1.0)//EN")) {
+					orgDoctype = orgDoctype.substring(0, orgDoctype
+							.indexOf("\""));
+					if (orgDoctype
+							.matches("-//W3C//DTD XHTML ((1.0 (Strict|Transitional|Frameset))|1.1|Basic 1.0)//EN")) {
 						orgDoctype = "";
 					} else {
 						isInvalidDoctype = true;
@@ -60,15 +71,18 @@
 				}
 				break;
 			case IParserError.ILLEGAL_CHILD:
-                //TBD "li" case (C_1000.7)
-                //System.out.println(arg0+" : "+arg1);
+				// TBD "li" case (C_1000.7)
+				// System.out.println(arg0+" : "+arg1);
 				if (arg1.matches(".*<head.*> must be before <body.*")) {
 					addHtmlProblem("C_1000.1", arg1);
-				} else if (arg1.matches(".*<html.*> is not allowed as a child of <.*")) {
+				} else if (arg1
+						.matches(".*<html.*> is not allowed as a child of <.*")) {
 					addHtmlProblem("C_1000.2", arg1);
-				} else if (arg1.matches(".*<body.*> is not allowed as a child of <.*")) {
+				} else if (arg1
+						.matches(".*<body.*> is not allowed as a child of <.*")) {
 					addHtmlProblem("C_1000.3", arg1);
-				} else if (arg1.matches(".*Order of <html.*>'s children is wrong.*")) {
+				} else if (arg1
+						.matches(".*Order of <html.*>'s children is wrong.*")) {
 					addHtmlProblem("C_1000.5", arg1);
 				}
 				break;
@@ -93,33 +107,53 @@
 		problemV.add(tmpCP);
 	}
 
+	/**
+	 * @return true if there is no DOCTYPE declaration
+	 * @see IParserError#DOCTYPE_MISSED
+	 */
 	public boolean isNoDoctypeDeclaration() {
 		return (isNoDoctype || isNonPublic || isInvalidDoctype);
 	}
 
+	/**
+	 * @return true if the specified DOCTYPE is not public
+	 */
 	public boolean isNonPublicDoctype() {
 		return (isNonPublic);
 	}
 
+	/**
+	 * @return true if Invalid DOCTYPE declaration error is reported
+	 * @see IParserError#ILLEGAL_DOCTYPE
+	 */
 	public boolean isInvalidDoctype() {
 		return (isInvalidDoctype);
 	}
 
+	/**
+	 * Get DOCTYPE declaration that causes the Invalid DOCTYPE declaration error
+	 * 
+	 * @return DOCTYPE declaration
+	 */
 	public String getDeclaratedDoctype() {
 		return (orgDoctype);
 	}
 
+	/**
+	 * Get HTML parse errors as {@link Vector} of {@link IProblemItem}
+	 * 
+	 * @return HTML parse errors
+	 */
 	public Vector<IProblemItem> getHtmlProblemVector() {
-		if(flag){
+		if (flag) {
 			// (IE based LIVE DOM)->DOCTYPE was removed by IE
-			if (EvaluationUtil.isOriginalDOM()
-					&& isNoDoctypeDeclaration()) {
+			if (EvaluationUtil.isOriginalDOM() && isNoDoctypeDeclaration()) {
 				if (isInvalidDoctype() || isNonPublicDoctype()) {
 					problemV.add(new ProblemItemImpl("C_1000.6"));
 				} else {
 					problemV.add(new ProblemItemImpl("C_1000.7"));
 				}
-			}			
+			}
 			flag = false;
 		}
 		return (problemV);
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/actions/BlindOpenIdCssAction.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/actions/BlindOpenIdCssAction.java
index 5d660d6..03e2e84 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/actions/BlindOpenIdCssAction.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/actions/BlindOpenIdCssAction.java
@@ -12,12 +12,18 @@
 package org.eclipse.actf.visualization.engines.blind.html.ui.actions;
 
 import org.eclipse.actf.visualization.engines.blind.BlindVizResourceUtil;
-import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.ElementViewerManager;
+import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.ElementViewerManagerFactory;
 import org.eclipse.actf.visualization.internal.engines.blind.html.Messages;
 import org.eclipse.jface.action.Action;
 
+/**
+ * Action to invoke ID/CSS viewer
+ */
 public class BlindOpenIdCssAction extends Action {
 
+	/**
+	 * Constructor of the class
+	 */
 	public BlindOpenIdCssAction() {
 		setToolTipText(Messages.getString("BlindView.Open_ID"));
 		setImageDescriptor(BlindVizResourceUtil
@@ -26,7 +32,7 @@
 	}
 
 	public void run() {
-		ElementViewerManager.getInstance().openElementViewer();
+		ElementViewerManagerFactory.getInstance().openElementViewer();
 	}
 
 }
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/IVisualizeStyleInfoListener.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/ElementViewerManagerFactory.java
similarity index 65%
copy from plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/IVisualizeStyleInfoListener.java
copy to plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/ElementViewerManagerFactory.java
index c280f9e..ab230c1 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/IVisualizeStyleInfoListener.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/ElementViewerManagerFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and Others
+ * Copyright (c) 2004, 2008 IBM Corporation and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,12 +8,18 @@
  * Contributors:
  *    Kentarou FUKUDA - initial API and implementation
  *******************************************************************************/
-
 package org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer;
 
-import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.impl.VisualizeStyleInfo;
+import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.impl.ElementViewerManager;
 
+public class ElementViewerManagerFactory {
+	private static ElementViewerManager INSTANCE;
 
-public interface IVisualizeStyleInfoListener {
-    void update(VisualizeStyleInfo styleInfo);
+	public static IElementViewerManager getInstance() {
+		if (INSTANCE == null) {
+			INSTANCE = new ElementViewerManager();
+		}
+		return INSTANCE;
+	}
+
 }
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/IVisualizeStyleInfoListener.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/IElementViewerManager.java
similarity index 64%
copy from plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/IVisualizeStyleInfoListener.java
copy to plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/IElementViewerManager.java
index c280f9e..e138c27 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/IVisualizeStyleInfoListener.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/IElementViewerManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and Others
+ * Copyright (c) 2008 IBM Corporation and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,12 +8,17 @@
  * Contributors:
  *    Kentarou FUKUDA - initial API and implementation
  *******************************************************************************/
-
 package org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer;
 
-import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.impl.VisualizeStyleInfo;
+public interface IElementViewerManager {
 
+	public abstract void setHighlightElementListener(
+			IHighlightElementListener hel);
 
-public interface IVisualizeStyleInfoListener {
-    void update(VisualizeStyleInfo styleInfo);
-}
+	public abstract void openElementViewer();
+
+	public abstract void activateElementViewer();
+
+	public abstract void hideElementViewer();
+
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/ElementViewerManager.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/ElementViewerManager.java
similarity index 63%
rename from plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/ElementViewerManager.java
rename to plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/ElementViewerManager.java
index 414a707..6f19298 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/ElementViewerManager.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/ElementViewerManager.java
@@ -9,17 +9,15 @@
  *    Kentarou FUKUDA - initial API and implementation
  *******************************************************************************/
 
-package org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer;
+package org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.impl;
 
-import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.impl.IViewerPanel;
-import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.impl.ViewerPanelJFace;
-import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.impl.VisualizeStyleInfo;
-import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.impl.VisualizeStyleInfoManager;
+import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.IElementViewerManager;
+import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.IHighlightElementListener;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.PlatformUI;
 
-public class ElementViewerManager implements IVisualizeStyleInfoListener {
-	private static ElementViewerManager INSTANCE;
+public class ElementViewerManager implements IVisualizeStyleInfoListener,
+		IElementViewerManager {
 
 	private IViewerPanel viewerPanel;
 
@@ -29,36 +27,50 @@
 
 	private Shell shell;
 
-	public static ElementViewerManager getInstance() {
-		if (INSTANCE == null) {
-			INSTANCE = new ElementViewerManager();
-			VisualizeStyleInfoManager.getInstance().addLisnter(INSTANCE);
-		}
-		return INSTANCE;
-	}
-
-	private ElementViewerManager() {
+	public ElementViewerManager() {
 		shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+		VisualizeStyleInfoManager.getInstance().addLisnter(this);
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.IElementViewerManager#setHighlightElementListener(org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.IHighlightElementListener)
+	 */
 	public void setHighlightElementListener(IHighlightElementListener hel) {
 		this.highlightElementListener = hel;
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.IElementViewerManager#openElementViewer()
+	 */
 	public void openElementViewer() {
 		if (isExist()) {
 			viewerPanel.forceActive();
 		} else {
-			viewerPanel = new ViewerPanelJFace(shell, styleInfo, highlightElementListener);
+			viewerPanel = new ViewerPanelJFace(shell, styleInfo,
+					highlightElementListener);
 		}
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.IElementViewerManager#activateElementViewer()
+	 */
 	public void activateElementViewer() {
 		if (isExist()) {
 			viewerPanel.forceActive();
 		}
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.IElementViewerManager#hideElementViewer()
+	 */
 	public void hideElementViewer() {
 		if (isExist()) {
 			viewerPanel.hide();
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/IVisualizeStyleInfoListener.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/IVisualizeStyleInfoListener.java
similarity index 86%
rename from plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/IVisualizeStyleInfoListener.java
rename to plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/IVisualizeStyleInfoListener.java
index c280f9e..4ce7821 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/IVisualizeStyleInfoListener.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/IVisualizeStyleInfoListener.java
@@ -9,9 +9,8 @@
  *    Kentarou FUKUDA - initial API and implementation
  *******************************************************************************/
 
-package org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer;
+package org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.impl;
 
-import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.impl.VisualizeStyleInfo;
 
 
 public interface IVisualizeStyleInfoListener {
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/VisualizeStyleInfo.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/VisualizeStyleInfo.java
index a01e065..78d80af 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/VisualizeStyleInfo.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/VisualizeStyleInfo.java
@@ -20,65 +20,66 @@
 import org.eclipse.actf.visualization.internal.engines.blind.html.util.VisualizationAttributeInfo;
 import org.w3c.dom.Document;
 
-
 public class VisualizeStyleInfo {
 
-    private Set importedCssSet = new HashSet();
+	private Set<String> importedCssSet = new HashSet<String>();
 
-    private List origIdList; //original HTML elements' ID
+	private List<VisualizationAttributeInfo> origIdList; // original HTML
+	// elements' ID
 
-    private List accesskeyList; //accesskey
+	private List<VisualizationAttributeInfo> accesskeyList; // accesskey
 
-    private List classList; //class
+	private List<VisualizationAttributeInfo> classList; // class
 
-    public VisualizeStyleInfo() {
-        origIdList = new ArrayList();
-        accesskeyList = new ArrayList();
-        classList = new ArrayList();
-    }
+	public VisualizeStyleInfo() {
+		origIdList = new ArrayList<VisualizationAttributeInfo>();
+		accesskeyList = new ArrayList<VisualizationAttributeInfo>();
+		classList = new ArrayList<VisualizationAttributeInfo>();
+	}
 
-    /**
-     *  
-     */
-    public VisualizeStyleInfo(Document orig, IVisualizeMapData mapData) {
-        origIdList = VisualizationAttributeInfo.listUp(orig, mapData, "id");
-        accesskeyList = VisualizationAttributeInfo.listUp(orig, mapData, "accesskey");
-        classList = VisualizationAttributeInfo.listUp(orig, mapData, "class");
-    }
+	/**
+	 * 
+	 */
+	public VisualizeStyleInfo(Document orig, IVisualizeMapData mapData) {
+		origIdList = VisualizationAttributeInfo.listUp(orig, mapData, "id");
+		accesskeyList = VisualizationAttributeInfo.listUp(orig, mapData,
+				"accesskey");
+		classList = VisualizationAttributeInfo.listUp(orig, mapData, "class");
+	}
 
-    /**
-     * @return
-     */
-    public List getOrigIdList() {
-        return origIdList;
-    }
+	/**
+	 * @return
+	 */
+	public List<VisualizationAttributeInfo> getOrigIdList() {
+		return origIdList;
+	}
 
-    /**
-     * @return
-     */
-    public List getAccesskeyList() {
-        return accesskeyList;
-    }
+	/**
+	 * @return
+	 */
+	public List<VisualizationAttributeInfo> getAccesskeyList() {
+		return accesskeyList;
+	}
 
-    /**
-     * @return
-     */
-    public List getClassList() {
-        return classList;
-    }
+	/**
+	 * @return
+	 */
+	public List<VisualizationAttributeInfo> getClassList() {
+		return classList;
+	}
 
-    /**
-     * @return Returns the importedCssSet.
-     */
-    public Set getImportedCssSet() {
-        return importedCssSet;
-    }
+	/**
+	 * @return Returns the importedCssSet.
+	 */
+	public Set<String> getImportedCssSet() {
+		return importedCssSet;
+	}
 
-    /**
-     * @param importedCssSet
-     *            The importedCssSet to set.
-     */
-    public void setImportedCssSet(Set importedCssSet) {
-        this.importedCssSet = importedCssSet;
-    }
+	/**
+	 * @param importedCssSet
+	 *            The importedCssSet to set.
+	 */
+	public void setImportedCssSet(Set<String> importedCssSet) {
+		this.importedCssSet = importedCssSet;
+	}
 }
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/VisualizeStyleInfoManager.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/VisualizeStyleInfoManager.java
index 875988e..6614dfb 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/VisualizeStyleInfoManager.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/ui/elementViewer/impl/VisualizeStyleInfoManager.java
@@ -14,7 +14,6 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 
-import org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer.IVisualizeStyleInfoListener;
 
 
 public class VisualizeStyleInfoManager {
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/HandleFramePage.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/HandleFramePage.java
deleted file mode 100644
index 3672efe..0000000
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/HandleFramePage.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Kentarou FUKUDA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.visualization.engines.blind.html.util;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.net.URL;
-
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-import org.eclipse.actf.util.FileUtils;
-import org.eclipse.actf.visualization.engines.blind.BlindVizResourceUtil;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-public class HandleFramePage {
-
-	public static boolean hasFrameset(Document document,
-			IWebBrowserACTF webBrowser) {
-
-		NodeList framesetNl = document.getElementsByTagName("frameset");
-
-		if (framesetNl.getLength() > 0) {
-
-			NodeList frameList = document.getElementsByTagName("frame");
-
-			String sFileName = BlindVizResourceUtil.getTempDirectory()
-					+ "frameList.html";
-
-			String base = webBrowser.getURL();
-
-			try {
-				URL baseURL = new URL(base);
-
-				NodeList baseNL = document.getElementsByTagName("base");
-				if (baseNL.getLength() > 0) {
-					Element baseE = (Element) baseNL
-							.item(baseNL.getLength() - 1);
-					String baseUrlS = baseE.getAttribute("href");
-					if (baseUrlS.length() > 0) {
-						URL tmpUrl = new URL(baseURL, baseUrlS);
-						base = tmpUrl.toString();
-					}
-				}
-			} catch (Exception e) {
-			}
-
-			PrintWriter fileOutput;
-
-			try {
-				fileOutput = new PrintWriter(new OutputStreamWriter(
-						new FileOutputStream(sFileName), "UTF-8"));
-			} catch (IOException e) {
-				// e.printStackTrace();
-				// TODO
-				return true;
-			}
-
-			fileOutput.write("<html>");
-			// " lang=\""+lang+\">"); //use var
-			fileOutput.write("<head>" + FileUtils.LINE_SEP);
-			fileOutput
-					.write("<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" >"
-							+ FileUtils.LINE_SEP);
-			fileOutput.write("<base href=\"" + base + "\"></head>"
-					+ FileUtils.LINE_SEP + "<body><P>");
-			fileOutput.write("This page contains of "); // var
-			fileOutput.write(String.valueOf(frameList.getLength()));
-			fileOutput.write(" frames."); // var
-			fileOutput.write("<br>" + FileUtils.LINE_SEP);
-			fileOutput.write("Please select one of them."); // var
-			fileOutput.write("</P>" + FileUtils.LINE_SEP + "<ol>"
-					+ FileUtils.LINE_SEP);
-
-			String strTitle, strName;
-			for (int i = 0; i < frameList.getLength(); i++) {
-				Element frameEl = (Element) frameList.item(i);
-				strTitle = frameEl.getAttribute("title");
-				strName = frameEl.getAttribute("name");
-				if (strTitle.equals(""))
-					strTitle.equals("none");
-				if (strName.equals(""))
-					strName.equals("none");
-				fileOutput.write("<li><a href=\"" + frameEl.getAttribute("src")
-						+ "\">Title: \"" + strTitle + "\".<BR> Name: \""
-						+ strName + "\".<BR> src: \""
-						+ frameEl.getAttribute("src") + "\".</a>"
-						+ FileUtils.LINE_SEP);
-			}
-			fileOutput.write("</ol></body></html>");
-
-			fileOutput.flush();
-			fileOutput.close();
-
-			webBrowser.navigate(sFileName);
-			return true;
-
-		} else {
-			return false;
-		}
-	}
-}
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/Id2LineViaAccId.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/Id2LineViaAccId.java
index 67ee54a..fbfb592 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/Id2LineViaAccId.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/Id2LineViaAccId.java
@@ -66,4 +66,8 @@
 		return (result);
 	}
 
+	public boolean is1base() {
+		return is1base;
+	}
+
 }
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/DocumentCleaner.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/DocumentCleaner.java
index a6d3b23..6c83baa 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/DocumentCleaner.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/DocumentCleaner.java
@@ -26,328 +26,333 @@
 
 public class DocumentCleaner {
 
-    // separated from VisualizeEngine
+	// separated from VisualizeEngine
 
-    public static Set removeCSS(Document result, String baseUrl) {
-        HashSet<String> cssSet = new HashSet<String>();
+	public static Set<String> removeCSS(Document result, String baseUrl) {
+		HashSet<String> cssSet = new HashSet<String>();
 
-        URL baseURL = null;
-        try {
-            baseURL = new URL(baseUrl);
-        } catch (Exception e1) {
-            //e1.printStackTrace();
-            //System.out.println("DocCleaner: create base URL: " + baseUrl);
-        }
+		URL baseURL = null;
+		try {
+			baseURL = new URL(baseUrl);
+		} catch (Exception e1) {
+			// e1.printStackTrace();
+			// System.out.println("DocCleaner: create base URL: " + baseUrl);
+		}
 
-        //Remove CSS
-        NodeList linkEl = result.getElementsByTagName("link");
-        if (linkEl != null) {
-            int xy = linkEl.getLength();
-            for (int i = xy - 1; i >= 0; i--) {
-                Element x = (Element) linkEl.item(i);
-                if ("text/css".equals(x.getAttribute("type"))) {
-                    String hrefS = getHref(x, baseURL);
-                    if (!hrefS.equals(""))
-                        cssSet.add(hrefS);
-                    x.getParentNode().removeChild(x);
-                }
-            }
-        }
-        NodeList styleEl = result.getElementsByTagName("style");
-        if (styleEl != null) {
-            int xy = styleEl.getLength();
-            for (int i = xy - 1; i >= 0; i--) {
-                Element x = (Element) styleEl.item(i);
-                if (x.getAttribute("type").equals("text/css")) {
-                    NodeList tmpNL = x.getChildNodes();
-                    for (int j = 0; j < tmpNL.getLength(); j++) {
-                        Node tmpN = tmpNL.item(j);
-                        getImportUrl(tmpN.toString(), baseURL, cssSet);
-                    }
-                }
-                x.getParentNode().removeChild(x);
-            }
-        }
-        NodeList bodyNl = result.getElementsByTagName("body");
-        for (int i = 0; i < bodyNl.getLength(); i++) {
-            Element bodyEl = (Element) bodyNl.item(i);
-            bodyEl.removeAttribute("style");
-        }
-        return (cssSet);
-    }
+		// Remove CSS
+		NodeList linkEl = result.getElementsByTagName("link");
+		if (linkEl != null) {
+			int xy = linkEl.getLength();
+			for (int i = xy - 1; i >= 0; i--) {
+				Element x = (Element) linkEl.item(i);
+				if ("text/css".equals(x.getAttribute("type"))) {
+					String hrefS = getHref(x, baseURL);
+					if (!hrefS.equals(""))
+						cssSet.add(hrefS);
+					x.getParentNode().removeChild(x);
+				}
+			}
+		}
+		NodeList styleEl = result.getElementsByTagName("style");
+		if (styleEl != null) {
+			int xy = styleEl.getLength();
+			for (int i = xy - 1; i >= 0; i--) {
+				Element x = (Element) styleEl.item(i);
+				if (x.getAttribute("type").equals("text/css")) {
+					NodeList tmpNL = x.getChildNodes();
+					for (int j = 0; j < tmpNL.getLength(); j++) {
+						Node tmpN = tmpNL.item(j);
+						getImportUrl(tmpN.toString(), baseURL, cssSet);
+					}
+				}
+				x.getParentNode().removeChild(x);
+			}
+		}
+		NodeList bodyNl = result.getElementsByTagName("body");
+		for (int i = 0; i < bodyNl.getLength(); i++) {
+			Element bodyEl = (Element) bodyNl.item(i);
+			bodyEl.removeAttribute("style");
+		}
+		return (cssSet);
+	}
 
-    private static String createFullPath(URL baseURL, String spec) {
-        String result = spec;
-        if (baseURL != null) {
-            try {
-                URL targetUrl = new URL(baseURL, spec);
-                //System.out.println(targetUrl.toString());
-                result = targetUrl.toString();
-            } catch (Exception e) {
-                //e.printStackTrace();
-            }
-        }
-        return (result);
-    }
+	private static String createFullPath(URL baseURL, String spec) {
+		String result = spec;
+		if (baseURL != null) {
+			try {
+				URL targetUrl = new URL(baseURL, spec);
+				// System.out.println(targetUrl.toString());
+				result = targetUrl.toString();
+			} catch (Exception e) {
+				// e.printStackTrace();
+			}
+		}
+		return (result);
+	}
 
-    private static String getHref(Element target, URL baseURL) {
-        String result = "";
-        if (target.hasAttribute("href")) {
-            result = target.getAttribute("href");
-            result = createFullPath(baseURL, result);
-        }
-        return (result);
-    }
+	private static String getHref(Element target, URL baseURL) {
+		String result = "";
+		if (target.hasAttribute("href")) {
+			result = target.getAttribute("href");
+			result = createFullPath(baseURL, result);
+		}
+		return (result);
+	}
 
-    private static void getImportUrl(String target, URL baseURL, Set<String> cssSet) {
-        BufferedReader tmpBR = new BufferedReader(new StringReader(target));
-        String tmpS;
-        int index;
-        try {
-            while ((tmpS = tmpBR.readLine()) != null) {
-                if ((index = tmpS.indexOf("@import")) > -1) {
-                    tmpS = tmpS.substring(index + 7);
-                    //TODO
-                    if ((index = tmpS.indexOf("url(\"")) > -1) {
-                        tmpS = tmpS.substring(index + 5);
-                        if ((index = tmpS.indexOf("\");")) > -1) {
-                            tmpS = tmpS.substring(0, index);
-                            tmpS = createFullPath(baseURL, tmpS);
-                            cssSet.add(tmpS);
-                        }
-                    }
-                }
-            }
-        } catch (IOException e) {
-            //e.printStackTrace();
-        }
-    }
+	private static void getImportUrl(String target, URL baseURL,
+			Set<String> cssSet) {
+		BufferedReader tmpBR = new BufferedReader(new StringReader(target));
+		String tmpS;
+		int index;
+		try {
+			while ((tmpS = tmpBR.readLine()) != null) {
+				if ((index = tmpS.indexOf("@import")) > -1) {
+					tmpS = tmpS.substring(index + 7);
+					// TODO
+					if ((index = tmpS.indexOf("url(\"")) > -1) {
+						tmpS = tmpS.substring(index + 5);
+						if ((index = tmpS.indexOf("\");")) > -1) {
+							tmpS = tmpS.substring(0, index);
+							tmpS = createFullPath(baseURL, tmpS);
+							cssSet.add(tmpS);
+						}
+					}
+				}
+			}
+		} catch (IOException e) {
+			// e.printStackTrace();
+		}
+	}
 
-    public static void removeBase(Document result) {
-        NodeList objectNl = result.getElementsByTagName("base");
-        int size = objectNl.getLength();
-        for (int i = size - 1; i >= 0; i--) {
-            Element objectEl = (Element) objectNl.item(i);
-            objectEl.getParentNode().removeChild(objectEl);
-        }
-    }
+	public static void removeBase(Document result) {
+		NodeList objectNl = result.getElementsByTagName("base");
+		int size = objectNl.getLength();
+		for (int i = size - 1; i >= 0; i--) {
+			Element objectEl = (Element) objectNl.item(i);
+			objectEl.getParentNode().removeChild(objectEl);
+		}
+	}
 
-    public static void removeApplet(Document result) {
-        NodeList appletNl = result.getElementsByTagName("applet");
-        int size = appletNl.getLength();
-        for (int i = size - 1; i >= 0; i--) {
-            Element appletEl = (Element) appletNl.item(i);
-            String id = appletEl.getAttribute("id");
-            Element divEl = result.createElement("div");
-            divEl.setAttribute("id", id);
-            //remove param
-            Node curChild = appletEl.getLastChild();
-            while (curChild != null) {
-                Node next = curChild.getPreviousSibling();
-                if (!curChild.getNodeName().equals("param")) {
-                    if (divEl.hasChildNodes()) {
-                        divEl.insertBefore(curChild, divEl.getFirstChild());
-                    } else {
-                        divEl.appendChild(curChild);
-                    }
-                }
-                curChild = next;
-            }
-            appletEl.getParentNode().insertBefore(divEl, appletEl);
-            appletEl.getParentNode().removeChild(appletEl);
-        }
-    }
+	public static void removeApplet(Document result) {
+		NodeList appletNl = result.getElementsByTagName("applet");
+		int size = appletNl.getLength();
+		for (int i = size - 1; i >= 0; i--) {
+			Element appletEl = (Element) appletNl.item(i);
+			String id = appletEl.getAttribute("id");
+			Element divEl = result.createElement("div");
+			divEl.setAttribute("id", id);
+			// remove param
+			Node curChild = appletEl.getLastChild();
+			while (curChild != null) {
+				Node next = curChild.getPreviousSibling();
+				if (!curChild.getNodeName().equals("param")) {
+					if (divEl.hasChildNodes()) {
+						divEl.insertBefore(curChild, divEl.getFirstChild());
+					} else {
+						divEl.appendChild(curChild);
+					}
+				}
+				curChild = next;
+			}
+			appletEl.getParentNode().insertBefore(divEl, appletEl);
+			appletEl.getParentNode().removeChild(appletEl);
+		}
+	}
 
-    public static void removeObject(Document result) {
-        NodeList objectNl = result.getElementsByTagName("object");
-        int size = objectNl.getLength();
-        for (int i = size - 1; i >= 0; i--) {
-            Element objectEl = (Element) objectNl.item(i);
-            String id = objectEl.getAttribute("id");
-            Element divEl = result.createElement("div");
-            divEl.setAttribute("id", id);
-            //remove param
+	public static void removeObject(Document result) {
+		NodeList objectNl = result.getElementsByTagName("object");
+		int size = objectNl.getLength();
+		for (int i = size - 1; i >= 0; i--) {
+			Element objectEl = (Element) objectNl.item(i);
+			String id = objectEl.getAttribute("id");
+			Element divEl = result.createElement("div");
+			divEl.setAttribute("id", id);
+			// remove param
 
-            Node curChild = objectEl.getLastChild();
-            while (curChild != null) {
-                Node next = curChild.getPreviousSibling();
-                if (!curChild.getNodeName().equals("param")) {
-                    if (divEl.hasChildNodes()) {
-                        divEl.insertBefore(curChild, divEl.getFirstChild());
-                    } else {
-                        divEl.appendChild(curChild);
-                    }
-                }
-                curChild = next;
-            }
+			Node curChild = objectEl.getLastChild();
+			while (curChild != null) {
+				Node next = curChild.getPreviousSibling();
+				if (!curChild.getNodeName().equals("param")) {
+					if (divEl.hasChildNodes()) {
+						divEl.insertBefore(curChild, divEl.getFirstChild());
+					} else {
+						divEl.appendChild(curChild);
+					}
+				}
+				curChild = next;
+			}
 
-            objectEl.getParentNode().insertBefore(divEl, objectEl);
-            objectEl.getParentNode().removeChild(objectEl);
-        }
-    }
+			objectEl.getParentNode().insertBefore(divEl, objectEl);
+			objectEl.getParentNode().removeChild(objectEl);
+		}
+	}
 
-    public static void removeEmbed(Document doc) { //remove onload and
-        // onmouseover
-        NodeList nl = doc.getElementsByTagName("embed");
-        int size = nl.getLength();
-        for (int i = size - 1; i >= 0; i--) {
-            Element el = (Element) nl.item(i);
-            String id = el.getAttribute("id");
-            Element newDiv = doc.createElement("div");
-            newDiv.setAttribute("id", id);
+	public static void removeEmbed(Document doc) { // remove onload and
+		// onmouseover
+		NodeList nl = doc.getElementsByTagName("embed");
+		int size = nl.getLength();
+		for (int i = size - 1; i >= 0; i--) {
+			Element el = (Element) nl.item(i);
+			String id = el.getAttribute("id");
+			Element newDiv = doc.createElement("div");
+			newDiv.setAttribute("id", id);
 
-            Node parent = el.getParentNode();
+			Node parent = el.getParentNode();
 
-            NodeList noembedL = el.getElementsByTagName("noembed");
-            Node childNoembed = null;
-            boolean hasNoembed = false;
-            for (int j = 0; j < noembedL.getLength(); j++) {
-                //System.out.println(j + "/" + noembedL.getLength() + " " + hasNoembed);
-                childNoembed = noembedL.item(j);
-                if (el == childNoembed.getParentNode()) {
-                    hasNoembed = true;
-                    break;
-                }
-            }
+			NodeList noembedL = el.getElementsByTagName("noembed");
+			Node childNoembed = null;
+			boolean hasNoembed = false;
+			for (int j = 0; j < noembedL.getLength(); j++) {
+				// System.out.println(j + "/" + noembedL.getLength() + " " +
+				// hasNoembed);
+				childNoembed = noembedL.item(j);
+				if (el == childNoembed.getParentNode()) {
+					hasNoembed = true;
+					break;
+				}
+			}
 
-            Node startNode;
+			Node startNode;
 
-            if (hasNoembed) {
-                NodeList tmpNL = childNoembed.getChildNodes();
-                for (int k = tmpNL.getLength() - 1; k >= 0; k--) {
-                    newDiv.insertBefore(tmpNL.item(k), newDiv.getFirstChild());
-                }
-                startNode = childNoembed.getNextSibling();
-            } else {
-                newDiv.appendChild(doc.createTextNode("(Embeded element)"));
-                startNode = el.getFirstChild();
-            }
+			if (hasNoembed) {
+				NodeList tmpNL = childNoembed.getChildNodes();
+				for (int k = tmpNL.getLength() - 1; k >= 0; k--) {
+					newDiv.insertBefore(tmpNL.item(k), newDiv.getFirstChild());
+				}
+				startNode = childNoembed.getNextSibling();
+			} else {
+				newDiv.appendChild(doc.createTextNode("(Embeded element)"));
+				startNode = el.getFirstChild();
+			}
 
-            parent.insertBefore(newDiv, el);
-            while (startNode != null) {
-                Node next = startNode.getNextSibling();
-                parent.insertBefore(startNode, el);
-                startNode = next;
-            }
-            parent.removeChild(el);
-        }
-    }
+			parent.insertBefore(newDiv, el);
+			while (startNode != null) {
+				Node next = startNode.getNextSibling();
+				parent.insertBefore(startNode, el);
+				startNode = next;
+			}
+			parent.removeChild(el);
+		}
+	}
 
-    public static void removeOnMouse(Element element) {
-        String str = element.getAttribute("onmouseover");
-        if ((str != null) && (str.length() > 0)) {
-            element.removeAttribute("onmouseover");
-        }
-        str = element.getAttribute("onmouseout");
-        if ((str != null) && (str.length() > 0)) {
-            element.removeAttribute("onmouseout");
-        }
-        str = element.getAttribute("onmousemove");
-        if ((str != null) && (str.length() > 0)) {
-            element.removeAttribute("onmousemove");
-        }
-        str = element.getAttribute("onclick");
-        if ((str != null) && (str.length() > 0)) {
-            element.removeAttribute("onclick");
-        }
-        str = element.getAttribute("onresize");
-        if ((str != null) && (str.length() > 0)) {
-            element.removeAttribute("onresize");
-        }
+	public static void removeOnMouse(Element element) {
+		String str = element.getAttribute("onmouseover");
+		if ((str != null) && (str.length() > 0)) {
+			element.removeAttribute("onmouseover");
+		}
+		str = element.getAttribute("onmouseout");
+		if ((str != null) && (str.length() > 0)) {
+			element.removeAttribute("onmouseout");
+		}
+		str = element.getAttribute("onmousemove");
+		if ((str != null) && (str.length() > 0)) {
+			element.removeAttribute("onmousemove");
+		}
+		str = element.getAttribute("onclick");
+		if ((str != null) && (str.length() > 0)) {
+			element.removeAttribute("onclick");
+		}
+		str = element.getAttribute("onresize");
+		if ((str != null) && (str.length() > 0)) {
+			element.removeAttribute("onresize");
+		}
 
-    }
+	}
 
-    public static void removeOnLoad(Element element) {
-        String str = element.getAttribute("onload");
-        if ((str != null) && (str.length() > 0)) {
-            element.removeAttribute("onload");
-        }
-    }
+	public static void removeOnLoad(Element element) {
+		String str = element.getAttribute("onload");
+		if ((str != null) && (str.length() > 0)) {
+			element.removeAttribute("onload");
+		}
+	}
 
-    public static void removeDisplayNone(Document doc) {
-        NodeList tmpNL = doc.getElementsByTagName("div");
-        for (int i = 0; i < tmpNL.getLength(); i++) {
-            Element tmpE = (Element) tmpNL.item(i);
-            //System.out.println(tmpE.getAttribute("style"));
-            if (tmpE.getAttribute("style").indexOf("DISPLAY: none") > -1) {
-                Node parent = tmpE.getParentNode();
-                if (parent != null) {
-                    //System.out.println("remove display: none");
-                    parent.removeChild(tmpE);
-                }
-            }
-        }
-    }
+	public static void removeDisplayNone(Document doc) {
+		NodeList tmpNL = doc.getElementsByTagName("div");
+		for (int i = 0; i < tmpNL.getLength(); i++) {
+			Element tmpE = (Element) tmpNL.item(i);
+			// System.out.println(tmpE.getAttribute("style"));
+			if (tmpE.getAttribute("style").indexOf("DISPLAY: none") > -1) {
+				Node parent = tmpE.getParentNode();
+				if (parent != null) {
+					// System.out.println("remove display: none");
+					parent.removeChild(tmpE);
+				}
+			}
+		}
+	}
 
-    public static void removeBgcolor(Document doc) {
-        NodeList bodyNl = doc.getElementsByTagName("body");
+	public static void removeBgcolor(Document doc) {
+		NodeList bodyNl = doc.getElementsByTagName("body");
 
-        if (bodyNl.getLength() > 0) {
+		if (bodyNl.getLength() > 0) {
 
-            Element bodyEl = (Element) bodyNl.item(0);
-            bodyEl.removeAttribute("bgcolor");
-        }
-    }
+			Element bodyEl = (Element) bodyNl.item(0);
+			bodyEl.removeAttribute("bgcolor");
+		}
+	}
 
-    public static void removeMeta(Document doc) {
-        NodeList nl = doc.getElementsByTagName("meta");
-        int size = nl.getLength();
-        for (int i = 0; i < size; i++) {
-            Element el = (Element) nl.item(i); //item(i)?
-            String http_equiv = el.getAttribute("http-equiv");
-            if ((http_equiv != null) && (http_equiv.equalsIgnoreCase("refresh")||http_equiv.equalsIgnoreCase("Content-Type"))) {
-                el.removeAttribute("http-equiv");
-            }
-        }
-    }
+	public static void removeMeta(Document doc) {
+		NodeList nl = doc.getElementsByTagName("meta");
+		int size = nl.getLength();
+		for (int i = 0; i < size; i++) {
+			Element el = (Element) nl.item(i); // item(i)?
+			String http_equiv = el.getAttribute("http-equiv");
+			if ((http_equiv != null)
+					&& (http_equiv.equalsIgnoreCase("refresh") || http_equiv
+							.equalsIgnoreCase("Content-Type"))) {
+				el.removeAttribute("http-equiv");
+			}
+		}
+	}
 
-    public static void removeJavaScript(List nodeList, Document doc) {
-        /*
-         * remove onload and onmouseover
-         */
-        NodeList nl = doc.getElementsByTagName("script");
-        int size = nl.getLength();
-        for (int i = size - 1; i >= 0; i--) {
-            try {
-                Element el = (Element) nl.item(i);
-                //if (el.getParentNode().getNodeName().equals("head")) {
-                el.getParentNode().removeChild(el);
-            } catch (Exception e) {
-                //
-            }
-        }
+	public static void removeJavaScript(List<VisualizationNodeInfo> nodeList,
+			Document doc) {
+		/*
+		 * remove onload and onmouseover
+		 */
+		NodeList nl = doc.getElementsByTagName("script");
+		int size = nl.getLength();
+		for (int i = size - 1; i >= 0; i--) {
+			try {
+				Element el = (Element) nl.item(i);
+				// if (el.getParentNode().getNodeName().equals("head")) {
+				el.getParentNode().removeChild(el);
+			} catch (Exception e) {
+				//
+			}
+		}
 
-        nl = doc.getElementsByTagName("body");
-        size = nl.getLength();
-        for (int i = 0; i < size; i++) {
-            try {
-                ((Element) nl.item(i)).removeAttribute("onload");
-                //	Added on 2004/03/03
-                ((Element) nl.item(i)).removeAttribute("onunload");
-            } catch (Exception e) {
-                //
-            }
-        }
-        size = nodeList.size();
-        for (int i = 0; i < size; i++) {
-            Node node = ((VisualizationNodeInfo) nodeList.get(i)).getNode();
-            if (node.getNodeType() == Node.ELEMENT_NODE) {
-                try {
-                    Element el = (Element) node;
-                    String onload = el.getAttribute("onload");
-                    if (onload.length() > 0) {
-                        el.removeAttribute("onload");
-                    }
-                    String onmouseover = el.getAttribute("onmouseover");
-                    if (onmouseover.length() > 0) {
-                        el.removeAttribute("onmouseover");
-                    }
-                } catch (Exception e) {
-                    //
-                }
-            }
+		nl = doc.getElementsByTagName("body");
+		size = nl.getLength();
+		for (int i = 0; i < size; i++) {
+			try {
+				((Element) nl.item(i)).removeAttribute("onload");
+				// Added on 2004/03/03
+				((Element) nl.item(i)).removeAttribute("onunload");
+			} catch (Exception e) {
+				//
+			}
+		}
+		size = nodeList.size();
+		for (int i = 0; i < size; i++) {
+			Node node = (nodeList.get(i)).getNode();
+			if (node.getNodeType() == Node.ELEMENT_NODE) {
+				try {
+					Element el = (Element) node;
+					String onload = el.getAttribute("onload");
+					if (onload.length() > 0) {
+						el.removeAttribute("onload");
+					}
+					String onmouseover = el.getAttribute("onmouseover");
+					if (onmouseover.length() > 0) {
+						el.removeAttribute("onmouseover");
+					}
+				} catch (Exception e) {
+					//
+				}
+			}
 
-        }
-    }
-    
+		}
+	}
+
 }
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/ImgChecker.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/ImgChecker.java
index 44123ca..10e2b19 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/ImgChecker.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/ImgChecker.java
@@ -15,7 +15,6 @@
 import java.util.Vector;
 
 import org.eclipse.actf.visualization.engines.blind.TextChecker;
-import org.eclipse.actf.visualization.engines.blind.html.IVisualizeMapData;
 import org.eclipse.actf.visualization.engines.blind.html.VisualizeEngine;
 import org.eclipse.actf.visualization.engines.blind.html.eval.BlindProblem;
 import org.eclipse.actf.visualization.eval.problem.IProblemItem;
@@ -30,7 +29,7 @@
 	// TODO refactoring
 	// TODO UseMap (object)
 
-	private IVisualizeMapData mapData;
+	private VisualizeMapDataImpl mapData;
 
 	// private Map node2infoMap;
 
@@ -57,9 +56,9 @@
 	 * @param baseUrl
 	 * @param checkItems
 	 */
-	public ImgChecker(IVisualizeMapData mapData, Map<String, Element> mapMap,
-			TextChecker textChecker, Vector<IProblemItem> problemV,
-			String baseUrl, boolean[] checkItems) {
+	public ImgChecker(VisualizeMapDataImpl mapData,
+			Map<String, Element> mapMap, TextChecker textChecker,
+			Vector<IProblemItem> problemV, String baseUrl, boolean[] checkItems) {
 
 		this.mapData = mapData;
 		this.mapMap = mapMap;
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizationAttributeInfo.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizationAttributeInfo.java
index ccd2884..e35e576 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizationAttributeInfo.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizationAttributeInfo.java
@@ -135,8 +135,8 @@
 		return (tagName + " : " + attributeValue + " : " + nodeId);
 	}
 
-	public static List listUp(Document target, IVisualizeMapData mapData,
-			String targetAttribute) {
+	public static List<VisualizationAttributeInfo> listUp(Document target,
+			IVisualizeMapData mapData, String targetAttribute) {
 		List<VisualizationAttributeInfo> result = new ArrayList<VisualizationAttributeInfo>();
 
 		// TODO use XPath
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeColorUtil.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeColorUtil.java
index 433c6f6..80f4235 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeColorUtil.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeColorUtil.java
@@ -17,7 +17,6 @@
 import java.util.Set;
 
 import org.eclipse.actf.visualization.engines.blind.ParamBlind;
-import org.eclipse.actf.visualization.engines.blind.html.IVisualizeMapData;
 import org.eclipse.swt.graphics.RGB;
 import org.w3c.dom.Comment;
 import org.w3c.dom.Document;
@@ -25,404 +24,442 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
-
-
 public class VisualizeColorUtil {
 
-    private static final double WORD_JP = (60.0 / (488.0 / 1.3));
-    
-    private Document result;
+	private static final double WORD_JP = (60.0 / (488.0 / 1.3));
 
-    private IVisualizeMapData mapData;
+	private Document result;
 
-    private List nodeInfoList;
+	private VisualizeMapDataImpl mapData;
 
-    private Map linkMap;
+	private List nodeInfoList;
 
-    private ParamBlind param;
+	private Map linkMap;
 
-    /**
-     * @param result
-     * @param mapData
-     * @param nodeList
-     * @param linkMap
-     * @param param
-     */
-    public VisualizeColorUtil(Document result, VisualizeMapDataImpl mapData, ParamBlind param) {
-        this.result = result;
-        this.mapData = mapData;
-        this.nodeInfoList = mapData.getNodeInfoList();
-        this.linkMap = mapData.getIntraPageLinkMap();
-        this.param = param;
-    }
+	private ParamBlind param;
 
-    public void setColorAll() {
-        int changed = 0;
+	/**
+	 * @param result
+	 * @param mapData
+	 * @param nodeList
+	 * @param linkMap
+	 * @param param
+	 */
+	public VisualizeColorUtil(Document result, VisualizeMapDataImpl mapData,
+			ParamBlind param) {
+		this.result = result;
+		this.mapData = mapData;
+		this.nodeInfoList = mapData.getNodeInfoList();
+		this.linkMap = mapData.getIntraPageLinkMap();
+		this.param = param;
+	}
 
-        DocumentCleaner.removeBgcolor(result);
+	public void setColorAll() {
+		int changed = 0;
 
-        initHeadings();
-        
-        for (int i = 0; i < 10; i++) { // appropriate? 10?
-            changed = calcWords();
-            //calcWordsRefresh();
+		DocumentCleaner.removeBgcolor(result);
 
-            if (changed == 0)
-                break;
-        } //set color onto each element.
+		initHeadings();
 
-        calcTime();
-        
-        calcOrgTime();
+		for (int i = 0; i < 10; i++) { // appropriate? 10?
+			changed = calcWords();
+			// calcWordsRefresh();
 
-        setColor();
-    }
+			if (changed == 0)
+				break;
+		} // set color onto each element.
 
-    private void setColor() {
+		calcTime();
 
-        String strRGB = "#000000";
+		calcOrgTime();
 
-        if (param.bVisualizeTable) {
-            NodeList nl = result.getElementsByTagName("head");
-            try {
-                Element headEl = (Element) nl.item(0);
+		setColor();
+	}
 
-                Element styleEl = result.createElement("style");
-                styleEl.setAttribute("type", "text/css");
-                strRGB = getRGBString(param.tableBorderColor, "#000000");
-                Comment comment = result.createComment("td {border-width: 1px; border-style: dashed; border-color: "
-                        + strRGB + "}");
-                styleEl.appendChild(comment);
-                headEl.appendChild(styleEl);
+	private void setColor() {
 
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
+		String strRGB = "#000000";
 
-        Iterator it = nodeInfoList.iterator();
-        while (it.hasNext()) {
-            VisualizationNodeInfo info = (VisualizationNodeInfo) it.next();
-            Node node = info.getNode();
-            Element el = null;
-            if (node.getNodeType() == Node.ELEMENT_NODE) {
-                el = (Element) node;
-            } else if (node.getNodeType() == Node.TEXT_NODE) {
-                /*
-                 * System.out.println( "VisualizeEngine: 709: parent of span: " +
-                 * node.getParentNode().getNodeName());
-                 */
+		if (param.bVisualizeTable) {
+			NodeList nl = result.getElementsByTagName("head");
+			try {
+				Element headEl = (Element) nl.item(0);
 
-                if (node.getParentNode().getNodeName().equals("textarea")) {
-                    continue;
-                }
-                el = result.createElement("span");
-                node.getParentNode().insertBefore(el, node);
-                if (info.isInvisible()) {
-                    //System.out.println("invisible:"+node);
-                    node.getParentNode().removeChild(node);
-                } else {
-                    el.appendChild(node);
-                }
-                Integer idObj = mapData.getIdOfNode(node);
-                if (idObj != null) {
-                    el.setAttribute("id", "id" + idObj.toString());
-                }
+				Element styleEl = result.createElement("style");
+				styleEl.setAttribute("type", "text/css");
+				strRGB = getRGBString(param.tableBorderColor, "#000000");
+				Comment comment = result
+						.createComment("td {border-width: 1px; border-style: dashed; border-color: "
+								+ strRGB + "}");
+				styleEl.appendChild(comment);
+				headEl.appendChild(styleEl);
 
-            } else {
-                //error
-                System.out.println("VisualizeEngine: 710: unknown node in the nodeList");
-                continue;
-            }
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
 
-            if (param.bColorizeTags
-                    && (info.isHeading() | info.isTableHeader() | info.isLabel() | info.isIdRequiredInput())) {
-                if (info.isHeading()) {
-                    strRGB = getRGBString(param.headingTagsColor, "#33CCFF");
-                }
-                if (info.isTableHeader()) {
-                    strRGB = getRGBString(param.tableHeaderColor, "#99FF00");
-                }
-                if (info.isLabel()) {
-                    strRGB = getRGBString(param.labelTagsColor, "#FFFF00");
-                }
-                if (info.isIdRequiredInput()) {
-                    strRGB = getRGBString(param.inputTagsColor, "#FF9900");
-                }
-                el.setAttribute("style", "color: black; background-image: none; background-color:" + strRGB);//+
-                // "}");
-                //} else if (info.getWords() > 0) {
-            } else {
-                int time = info.getTime();
-                if (time == 0) {
-                    switch (param.iLanguage) {
-                    case 1: //japanese
-                        time = calcTimeJp(info.getTotalWords(), info.getTotalLines());
-                        break;
-                    default: //english
-                        time = calcTime(info.getTotalWords(), info.getTotalLines());
-                        break;
-                    }
-                    info.setTime(time);
-                }
+		Iterator it = nodeInfoList.iterator();
+		while (it.hasNext()) {
+			VisualizationNodeInfo info = (VisualizationNodeInfo) it.next();
+			Node node = info.getNode();
+			Element el = null;
+			if (node.getNodeType() == Node.ELEMENT_NODE) {
+				el = (Element) node;
+			} else if (node.getNodeType() == Node.TEXT_NODE) {
+				/*
+				 * System.out.println( "VisualizeEngine: 709: parent of span: " +
+				 * node.getParentNode().getNodeName());
+				 */
 
-                if (param.bVisualizeTime == true) {
-                    el.setAttribute("style", "color: black; background-image: none; background-color: #"
-                            + calcColor(time, param.maxTimeColor, param.iMaxTime));
+				if (node.getParentNode().getNodeName().equals("textarea")) {
+					continue;
+				}
+				el = result.createElement("span");
+				node.getParentNode().insertBefore(el, node);
+				if (info.isInvisible()) {
+					// System.out.println("invisible:"+node);
+					node.getParentNode().removeChild(node);
+				} else {
+					el.appendChild(node);
+				}
+				Integer idObj = mapData.getIdOfNode(node);
+				if (idObj != null) {
+					el.setAttribute("id", "id" + idObj.toString());
+				}
 
-                } else {
-                    el.setAttribute("style", "color: black; background-image: none; background-color: transparent");
-                }
-            } /*
-               * else { }
-               */
-            /*
-             * el.setAttribute( "comment", info.getPacketId() + "," +
-             * info.getId() + "," + info.getTotalWords() + "," + info.getWords() +
-             * "," + info.getTotalLines() + "," + info.getLines());
-             */
-        }
-    }
+			} else {
+				// error
+				System.out
+						.println("VisualizeEngine: 710: unknown node in the nodeList");
+				continue;
+			}
 
-    private String calcColor(int time, RGB rgb, int maxTime) {
+			if (param.bColorizeTags
+					&& (info.isHeading() | info.isTableHeader()
+							| info.isLabel() | info.isIdRequiredInput())) {
+				if (info.isHeading()) {
+					strRGB = getRGBString(param.headingTagsColor, "#33CCFF");
+				}
+				if (info.isTableHeader()) {
+					strRGB = getRGBString(param.tableHeaderColor, "#99FF00");
+				}
+				if (info.isLabel()) {
+					strRGB = getRGBString(param.labelTagsColor, "#FFFF00");
+				}
+				if (info.isIdRequiredInput()) {
+					strRGB = getRGBString(param.inputTagsColor, "#FF9900");
+				}
+				el.setAttribute("style",
+						"color: black; background-image: none; background-color:"
+								+ strRGB);// +
+				// "}");
+				// } else if (info.getWords() > 0) {
+			} else {
+				int time = info.getTime();
+				if (time == 0) {
+					switch (param.iLanguage) {
+					case 1: // japanese
+						time = calcTimeJp(info.getTotalWords(), info
+								.getTotalLines());
+						break;
+					default: // english
+						time = calcTime(info.getTotalWords(), info
+								.getTotalLines());
+						break;
+					}
+					info.setTime(time);
+				}
 
-        double timeD = time;
-        double maxTimeD = maxTime;
+				if (param.bVisualizeTime == true) {
+					el.setAttribute("style",
+							"color: black; background-image: none; background-color: #"
+									+ calcColor(time, param.maxTimeColor,
+											param.iMaxTime));
 
-        if (time >= maxTime) {
-            java.awt.Color color = new java.awt.Color(rgb.red, rgb.green, rgb.blue);
-            return Integer.toHexString(color.getRGB()).substring(2);
-        } else {
+				} else {
+					el
+							.setAttribute("style",
+									"color: black; background-image: none; background-color: transparent");
+				}
+			} /*
+				 * else { }
+				 */
+			/*
+			 * el.setAttribute( "comment", info.getPacketId() + "," +
+			 * info.getId() + "," + info.getTotalWords() + "," + info.getWords() +
+			 * "," + info.getTotalLines() + "," + info.getLines());
+			 */
+		}
+	}
 
-            int colorValueR = (int) (255.0 - (timeD / maxTimeD) * (255.0 - rgb.red));
-            int colorValueG = (int) (255.0 - (timeD / maxTimeD) * (255.0 - rgb.green));
-            int colorValueB = (int) (255.0 - (timeD / maxTimeD) * (255.0 - rgb.blue));
+	private String calcColor(int time, RGB rgb, int maxTime) {
 
-            java.awt.Color color = new java.awt.Color(colorValueR, colorValueG, colorValueB);
-            return Integer.toHexString(color.getRGB()).substring(2);
-        }
-    }
+		double timeD = time;
+		double maxTimeD = maxTime;
 
-    private String getRGBString(RGB target, String defaultValue) {
-        if (target != null) {
-            return ("rgb(" + target.red + "," + target.green + "," + target.blue + ")");
-        }
-        return (defaultValue);
-    }
+		if (time >= maxTime) {
+			java.awt.Color color = new java.awt.Color(rgb.red, rgb.green,
+					rgb.blue);
+			return Integer.toHexString(color.getRGB()).substring(2);
+		} else {
 
-    private void initHeadings(){
-        //TODO consider combination of skip nav and Headings
+			int colorValueR = (int) (255.0 - (timeD / maxTimeD)
+					* (255.0 - rgb.red));
+			int colorValueG = (int) (255.0 - (timeD / maxTimeD)
+					* (255.0 - rgb.green));
+			int colorValueB = (int) (255.0 - (timeD / maxTimeD)
+					* (255.0 - rgb.blue));
 
-        int headingCount = 0;
-        
-        int curTotalWords = 0;
-        int curTotalLines = 0;
-        int size = nodeInfoList.size();
-        
-        for (int i = 0; i < size; i++) {
-            VisualizationNodeInfo curInfo = (VisualizationNodeInfo) nodeInfoList.get(i);
+			java.awt.Color color = new java.awt.Color(colorValueR, colorValueG,
+					colorValueB);
+			return Integer.toHexString(color.getRGB()).substring(2);
+		}
+	}
 
-            if (curInfo.isHeading()) {
-                if(curInfo.getNode().getNodeName().matches("h[1-6]")){
-                    headingCount++;
-                }
+	private String getRGBString(RGB target, String defaultValue) {
+		if (target != null) {
+			return ("rgb(" + target.red + "," + target.green + ","
+					+ target.blue + ")");
+		}
+		return (defaultValue);
+	}
 
-                int tmpTotalWords = wordcountForHeading(headingCount);
-                
-                //System.out.println(headingCount+": "+curTotalWords+" "+tmpTotalWords+" "+curInfo.getTotalWords()+" "+curInfo.getWords());
-                if(calcTime(curTotalWords,curTotalLines)>=calcTime(tmpTotalWords,0)){
-                    curTotalWords = tmpTotalWords;
-                    curTotalLines = 0;
-                }
+	private void initHeadings() {
+		// TODO consider combination of skip nav and Headings
 
-                curInfo.setTotalWords(curTotalWords);
-                curInfo.setTotalLines(curTotalLines);
-                
-                curTotalWords +=  curInfo.getWords();
-                curTotalLines +=  curInfo.getLines();                
+		int headingCount = 0;
 
-            } else {
-                
-                if (calcTime(curInfo.getTotalWords(),curInfo.getTotalLines()) > calcTime(curTotalWords,curTotalLines)) {
-                    curInfo.setTotalWords(curTotalWords);
-                    curInfo.setTotalLines(curTotalLines);
+		int curTotalWords = 0;
+		int curTotalLines = 0;
+		int size = nodeInfoList.size();
 
-                    curTotalWords +=  curInfo.getWords();
-                    curTotalLines +=  curInfo.getLines();
-                    
-                } else {
+		for (int i = 0; i < size; i++) {
+			VisualizationNodeInfo curInfo = (VisualizationNodeInfo) nodeInfoList
+					.get(i);
 
-                    curTotalWords = curInfo.getTotalWords() + curInfo.getWords();
-                    curTotalLines = curInfo.getTotalLines() + curInfo.getLines();
-                    
-                }
-            }
-        }
-    }    
+			if (curInfo.isHeading()) {
+				if (curInfo.getNode().getNodeName().matches("h[1-6]")) {
+					headingCount++;
+				}
 
-    private void calcTime(){
-        int size = nodeInfoList.size();
-        for (int i = 0; i < size; i++) {
-            VisualizationNodeInfo curInfo = (VisualizationNodeInfo) nodeInfoList.get(i);
+				int tmpTotalWords = wordcountForHeading(headingCount);
 
-            int time = calcTime(curInfo.getTotalWords(), curInfo.getTotalLines());
+				// System.out.println(headingCount+": "+curTotalWords+"
+				// "+tmpTotalWords+" "+curInfo.getTotalWords()+"
+				// "+curInfo.getWords());
+				if (calcTime(curTotalWords, curTotalLines) >= calcTime(
+						tmpTotalWords, 0)) {
+					curTotalWords = tmpTotalWords;
+					curTotalLines = 0;
+				}
 
-            curInfo.setTime(time);
-            if(curInfo.getNode().getNodeName().matches("h[1-6]")){
-                replaceParentInfoTime(curInfo.getNode(),time);
-            }
-        }        
-    }
-    
-    private void calcOrgTime() {
-        int size = nodeInfoList.size();
-        for (int i = 0; i < size; i++) {
-            VisualizationNodeInfo curInfo = (VisualizationNodeInfo) nodeInfoList.get(i);
+				curInfo.setTotalWords(curTotalWords);
+				curInfo.setTotalLines(curTotalLines);
 
-            int time = calcTime(curInfo.getOrgTotalWords(), curInfo.getOrgTotalLines());
+				curTotalWords += curInfo.getWords();
+				curTotalLines += curInfo.getLines();
 
-            curInfo.setOrgTime(time);
-        }
-    }
+			} else {
 
-    private void replaceParentInfoTime(Node target, int time) {
-        if (target != null) {
-            Node parent = target.getParentNode();
-            while (parent != null) {
-                if (parent.getFirstChild() == target) {
-                    VisualizationNodeInfo nodeInfo = mapData.getNodeInfo(parent);
-                    if (nodeInfo != null && nodeInfo.getTime() > time) {
-                        nodeInfo.setTime(time);
-                    }
-                    target = parent;
-                    parent = target.getParentNode();
-                } else {
-                    break;
-                }
-            }
-        }
-    }
+				if (calcTime(curInfo.getTotalWords(), curInfo.getTotalLines()) > calcTime(
+						curTotalWords, curTotalLines)) {
+					curInfo.setTotalWords(curTotalWords);
+					curInfo.setTotalLines(curTotalLines);
 
-    private void replaceParentInfoWord(Node target, int word, int line, int newTime) {
-        if (target != null) {
-            Node parent = target.getParentNode();
-            while (parent != null) {
-                if (parent.getFirstChild() == target) {
-                    VisualizationNodeInfo nodeInfo = mapData.getNodeInfo(parent);
-                    if (nodeInfo != null && calcTime(nodeInfo.getTotalWords(),nodeInfo.getTotalLines()) > newTime) {
-                        nodeInfo.setTotalWords(word);
-                        nodeInfo.setTotalLines(line);
-                    }
+					curTotalWords += curInfo.getWords();
+					curTotalLines += curInfo.getLines();
 
-                    target = parent;
-                    parent = target.getParentNode();
-                } else {
-                    break;
-                }
-            }
-        }
-    }
+				} else {
 
-    private int calcWords() {
-        int countChanged = 0;
-        Set linkSet = linkMap.keySet();
-        Iterator it = linkSet.iterator();
-        while (it.hasNext()) {
-            Node fromNode = (Node) it.next();
-            Node toNode = (Node) linkMap.get(fromNode);
+					curTotalWords = curInfo.getTotalWords()
+							+ curInfo.getWords();
+					curTotalLines = curInfo.getTotalLines()
+							+ curInfo.getLines();
 
-            Integer fromIdInt = mapData.getIdOfNode(fromNode);
-            Integer toIdInt = mapData.getIdOfNode(toNode);
-            if (fromIdInt == null || toIdInt == null) {
-                //toIdInt=null -> Alert is moved to other checker
-                continue;
-            }
+				}
+			}
+		}
+	}
 
-            //TODO might be able to use mapData.getNodeInfo(node)
-            int fromId = fromIdInt.intValue();
-            int toId = toIdInt.intValue();
+	private void calcTime() {
+		int size = nodeInfoList.size();
+		for (int i = 0; i < size; i++) {
+			VisualizationNodeInfo curInfo = (VisualizationNodeInfo) nodeInfoList
+					.get(i);
 
-            VisualizationNodeInfo fromInfo = (VisualizationNodeInfo) nodeInfoList.get(fromId);
-            if (fromInfo.getNode() != fromNode) {
-                System.out.println("from node does not exists: " + fromId + " " + fromNode);
-                continue;
-            }
-            VisualizationNodeInfo toInfo = (VisualizationNodeInfo) nodeInfoList.get(toId);
-            if (toInfo.getNode() != toNode) {
-                System.err.println("to node does not exists: " + toId + " " + toNode);
-                continue;
-            }
+			int time = calcTime(curInfo.getTotalWords(), curInfo
+					.getTotalLines());
 
-            VisualizationNodeInfo curInfo = toInfo;
-            int curId = toId;
-            int curTotalWords = fromInfo.getTotalWords() + getWordcountFor2sec();
-            int curTotalLines = fromInfo.getTotalLines();
-            int newTime = calcTime(curTotalWords,curTotalLines);
+			curInfo.setTime(time);
+			if (curInfo.getNode().getNodeName().matches("h[1-6]")) {
+				replaceParentInfoTime(curInfo.getNode(), time);
+			}
+		}
+	}
 
-            while (calcTime(curInfo.getTotalWords(),curInfo.getTotalLines()) > newTime) {
-                countChanged++;
-                curInfo.setTotalWords(curTotalWords);
-                curInfo.setTotalLines(curTotalLines);
+	private void calcOrgTime() {
+		int size = nodeInfoList.size();
+		for (int i = 0; i < size; i++) {
+			VisualizationNodeInfo curInfo = (VisualizationNodeInfo) nodeInfoList
+					.get(i);
 
-                replaceParentInfoWord(curInfo.getNode(), curTotalWords, curTotalLines, newTime);
+			int time = calcTime(curInfo.getOrgTotalWords(), curInfo
+					.getOrgTotalLines());
 
-                //elements after intra page link
-                curId++;
-                if (curId >= nodeInfoList.size()) {
-                    break;
-                }
+			curInfo.setOrgTime(time);
+		}
+	}
 
-                curTotalWords = curTotalWords + curInfo.getWords();
-                curTotalLines = curTotalLines + curInfo.getLines();
-                curInfo = (VisualizationNodeInfo) nodeInfoList.get(curId);
-                newTime = calcTime(curTotalWords,curTotalLines);
-            }
-        }
-        return countChanged;
-    }
+	private void replaceParentInfoTime(Node target, int time) {
+		if (target != null) {
+			Node parent = target.getParentNode();
+			while (parent != null) {
+				if (parent.getFirstChild() == target) {
+					VisualizationNodeInfo nodeInfo = mapData
+							.getNodeInfo(parent);
+					if (nodeInfo != null && nodeInfo.getTime() > time) {
+						nodeInfo.setTime(time);
+					}
+					target = parent;
+					parent = target.getParentNode();
+				} else {
+					break;
+				}
+			}
+		}
+	}
 
-    private int calcTime(int words, int lines) {
-        switch (param.iLanguage) {
-        case ParamBlind.EN:
-            return calcTimeEn(words, lines);
-        case ParamBlind.JP:
-            return calcTimeJp(words, lines);
-        default:
-            return calcTimeEn(words, lines);
-        }
-    }
+	private void replaceParentInfoWord(Node target, int word, int line,
+			int newTime) {
+		if (target != null) {
+			Node parent = target.getParentNode();
+			while (parent != null) {
+				if (parent.getFirstChild() == target) {
+					VisualizationNodeInfo nodeInfo = mapData
+							.getNodeInfo(parent);
+					if (nodeInfo != null
+							&& calcTime(nodeInfo.getTotalWords(), nodeInfo
+									.getTotalLines()) > newTime) {
+						nodeInfo.setTotalWords(word);
+						nodeInfo.setTotalLines(line);
+					}
 
-    //seconds
-    private int calcTimeEn(int words, int lines) {
-        return (int)((words / (3.0)) +(lines * (0.7)));// 3.0 = 60/180
-    }
+					target = parent;
+					parent = target.getParentNode();
+				} else {
+					break;
+				}
+			}
+		}
+	}
 
-    //seconds
-    private int calcTimeJp(int words, int lines) {
-        return (int) ((words * WORD_JP) + (lines * (0.6)));
-    }
+	private int calcWords() {
+		int countChanged = 0;
+		Set linkSet = linkMap.keySet();
+		Iterator it = linkSet.iterator();
+		while (it.hasNext()) {
+			Node fromNode = (Node) it.next();
+			Node toNode = (Node) linkMap.get(fromNode);
 
-    private int wordcountForHeading(int headingNumber){
-        switch (param.iLanguage) {
-        case ParamBlind.EN:
-            return 6*(headingNumber-1)+15;
-        case ParamBlind.JP:
-            return 13*(headingNumber-1)+31;
-        default:
-            return 6*(headingNumber-1)+15;
-        }
-        
-    }
-    
-    private int getWordcountFor2sec(){
-        switch (param.iLanguage) {
-        case ParamBlind.EN:
-            return 6;
-        case ParamBlind.JP:
-            return 13;
-        default:
-            return 6;
-        }        
-    }
-    
+			Integer fromIdInt = mapData.getIdOfNode(fromNode);
+			Integer toIdInt = mapData.getIdOfNode(toNode);
+			if (fromIdInt == null || toIdInt == null) {
+				// toIdInt=null -> Alert is moved to other checker
+				continue;
+			}
+
+			// TODO might be able to use mapData.getNodeInfo(node)
+			int fromId = fromIdInt.intValue();
+			int toId = toIdInt.intValue();
+
+			VisualizationNodeInfo fromInfo = (VisualizationNodeInfo) nodeInfoList
+					.get(fromId);
+			if (fromInfo.getNode() != fromNode) {
+				System.out.println("from node does not exists: " + fromId + " "
+						+ fromNode);
+				continue;
+			}
+			VisualizationNodeInfo toInfo = (VisualizationNodeInfo) nodeInfoList
+					.get(toId);
+			if (toInfo.getNode() != toNode) {
+				System.err.println("to node does not exists: " + toId + " "
+						+ toNode);
+				continue;
+			}
+
+			VisualizationNodeInfo curInfo = toInfo;
+			int curId = toId;
+			int curTotalWords = fromInfo.getTotalWords()
+					+ getWordcountFor2sec();
+			int curTotalLines = fromInfo.getTotalLines();
+			int newTime = calcTime(curTotalWords, curTotalLines);
+
+			while (calcTime(curInfo.getTotalWords(), curInfo.getTotalLines()) > newTime) {
+				countChanged++;
+				curInfo.setTotalWords(curTotalWords);
+				curInfo.setTotalLines(curTotalLines);
+
+				replaceParentInfoWord(curInfo.getNode(), curTotalWords,
+						curTotalLines, newTime);
+
+				// elements after intra page link
+				curId++;
+				if (curId >= nodeInfoList.size()) {
+					break;
+				}
+
+				curTotalWords = curTotalWords + curInfo.getWords();
+				curTotalLines = curTotalLines + curInfo.getLines();
+				curInfo = (VisualizationNodeInfo) nodeInfoList.get(curId);
+				newTime = calcTime(curTotalWords, curTotalLines);
+			}
+		}
+		return countChanged;
+	}
+
+	private int calcTime(int words, int lines) {
+		switch (param.iLanguage) {
+		case ParamBlind.EN:
+			return calcTimeEn(words, lines);
+		case ParamBlind.JP:
+			return calcTimeJp(words, lines);
+		default:
+			return calcTimeEn(words, lines);
+		}
+	}
+
+	// seconds
+	private int calcTimeEn(int words, int lines) {
+		return (int) ((words / (3.0)) + (lines * (0.7)));// 3.0 = 60/180
+	}
+
+	// seconds
+	private int calcTimeJp(int words, int lines) {
+		return (int) ((words * WORD_JP) + (lines * (0.6)));
+	}
+
+	private int wordcountForHeading(int headingNumber) {
+		switch (param.iLanguage) {
+		case ParamBlind.EN:
+			return 6 * (headingNumber - 1) + 15;
+		case ParamBlind.JP:
+			return 13 * (headingNumber - 1) + 31;
+		default:
+			return 6 * (headingNumber - 1) + 15;
+		}
+
+	}
+
+	private int getWordcountFor2sec() {
+		switch (param.iLanguage) {
+		case ParamBlind.EN:
+			return 6;
+		case ParamBlind.JP:
+			return 13;
+		default:
+			return 6;
+		}
+	}
+
 }
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeViewUtil.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeViewUtil.java
index 5953a86..41079f4 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeViewUtil.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeViewUtil.java
@@ -22,7 +22,6 @@
 import java.util.Set;
 
 import org.eclipse.actf.visualization.engines.blind.BlindVizResourceUtil;
-import org.eclipse.actf.visualization.engines.blind.html.IVisualizeMapData;
 import org.eclipse.actf.visualization.engines.blind.html.VisualizeEngine;
 import org.eclipse.actf.visualization.engines.blind.html.eval.BlindProblem;
 import org.eclipse.actf.visualization.engines.voicebrowser.IPacket;
@@ -292,7 +291,7 @@
 	}
 
 	public static void visualizeError(Document doc, List problems,
-			IVisualizeMapData mapData, String baseUrlS) {
+			VisualizeMapDataImpl mapData, String baseUrlS) {
 		int size = problems.size();
 
 		// TODO setNodeId might be duplicated
diff --git a/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/DecisionMaker.java b/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/DecisionMaker.java
index 89a092f..df831af 100644
--- a/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/DecisionMaker.java
+++ b/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/DecisionMaker.java
@@ -545,7 +545,7 @@
 		}
 
 		// check problem type
-		short type1 = _p1.getLowVisionProblemType();
+		int type1 = _p1.getLowVisionProblemType();
 		if (type1 != _p2.getLowVisionProblemType()) {
 			return (false);
 		}
diff --git a/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/LowVisionProblemConverter.java b/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/LowVisionProblemConverter.java
index 27e6b21..cc361a1 100644
--- a/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/LowVisionProblemConverter.java
+++ b/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/LowVisionProblemConverter.java
@@ -60,7 +60,7 @@
     }
 
     private static String getLVProblemColorString(LowVisionProblemGroup problem, boolean isFore) {
-        short probType;
+        int probType;
         int origAll;
         int origR;
         int origG;
diff --git a/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/problem/LowVisionProblem.java b/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/problem/LowVisionProblem.java
index 2d9e515..8fda999 100644
--- a/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/problem/LowVisionProblem.java
+++ b/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/problem/LowVisionProblem.java
@@ -32,7 +32,7 @@
     
 	IPageImage pageImage = null; 
 	LowVisionType lowVisionType = null;
-	short problemType; 
+	int problemType; 
 	short componentType = PageComponent.UNDEFINED_TYPE; 
 	PageComponent pageComponent = null; 
 	PageElement pageElement = null; 
@@ -52,7 +52,7 @@
 	protected LowVisionProblem(){
 	}
 	
-	public LowVisionProblem( short _type, LowVisionType _lvType, String _description, PageComponent _com, double _proba ) throws LowVisionProblemException{
+	public LowVisionProblem( int _type, LowVisionType _lvType, String _description, PageComponent _com, double _proba ) throws LowVisionProblemException{
 		problemType = _type;
 		lowVisionType = _lvType;
 		description = _description;
@@ -71,7 +71,7 @@
 		characterScore = probability * (double)width * (double)height; 
 	}
 
-	public LowVisionProblem( short _type, LowVisionType _lvType, String _description, PageElement _pe, double _proba ){
+	public LowVisionProblem( int _type, LowVisionType _lvType, String _description, PageElement _pe, double _proba ){
 		problemType = _type;
 		lowVisionType = _lvType;
 		description = _description;
@@ -116,7 +116,7 @@
 	}
 
 	// LowVision Error type (Color, Blur, etc.)
-	public short getLowVisionProblemType(){
+	public int getLowVisionProblemType(){
 		return( problemType );
 	}
 	public String getDescription() throws LowVisionProblemException{
diff --git a/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/problem/ProblemItemLV.java b/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/problem/ProblemItemLV.java
index b804388..813e52f 100644
--- a/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/problem/ProblemItemLV.java
+++ b/plugins/org.eclipse.actf.visualization.engines.lowvision/src/org/eclipse/actf/visualization/internal/engines/lowvision/problem/ProblemItemLV.java
@@ -52,8 +52,6 @@
 
 	private int y = 0;
 
-	short subType;
-
 	// TODO recommendation
 
 	/**
@@ -254,16 +252,7 @@
 		this.y = y;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.visualization.eval.problem.IProblemItemImage#getSubType()
-	 */
-	public short getSubType() {
-		return subType;
-	}
-
-	public void setSubType(short subType) {
+	public void setSubType(int subType) {
 		this.subType = subType;
 		// TODO
 		if (subType == LOWVISION_COLOR_PROBLEM
diff --git a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/ILowvisionProblemSubtype.java b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/ILowvisionProblemSubtype.java
index 6afc60e..d612c26 100644
--- a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/ILowvisionProblemSubtype.java
+++ b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/ILowvisionProblemSubtype.java
@@ -15,13 +15,13 @@
  * Interface for low vision problem types
  */
 public interface ILowvisionProblemSubtype {
-	public static final short LOWVISION_COLOR_PROBLEM = 1;
-	public static final short LOWVISION_BLUR_PROBLEM = 2;
-	public static final short LOWVISION_IMAGE_COLOR_PROBLEM = 3;
-	public static final short LOWVISION_FIXED_SIZE_FONT_PROBLEM = 4;
-	public static final short LOWVISION_SMALL_FONT_PROBLEM = 5;
-	public static final short LOWVISION_FIXED_SMALL_FONT_PROBLEM = 6;
-	public static final short LOWVISION_PROHIBITED_BOTH_COLORS_PROBLEM = 7;
-	public static final short LOWVISION_PROHIBITED_FOREGROUND_COLOR_PROBLEM = 8;
-	public static final short LOWVISION_PROHIBITED_BACKGROUND_COLOR_PROBLEM = 9;
+	public static final int LOWVISION_COLOR_PROBLEM = 1;
+	public static final int LOWVISION_BLUR_PROBLEM = 2;
+	public static final int LOWVISION_IMAGE_COLOR_PROBLEM = 3;
+	public static final int LOWVISION_FIXED_SIZE_FONT_PROBLEM = 4;
+	public static final int LOWVISION_SMALL_FONT_PROBLEM = 5;
+	public static final int LOWVISION_FIXED_SMALL_FONT_PROBLEM = 6;
+	public static final int LOWVISION_PROHIBITED_BOTH_COLORS_PROBLEM = 7;
+	public static final int LOWVISION_PROHIBITED_FOREGROUND_COLOR_PROBLEM = 8;
+	public static final int LOWVISION_PROHIBITED_BACKGROUND_COLOR_PROBLEM = 9;
 }
diff --git a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/IProblemItem.java b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/IProblemItem.java
index 4ab64d6..16b7be1 100644
--- a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/IProblemItem.java
+++ b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/IProblemItem.java
@@ -245,4 +245,17 @@
 	 */
 	public String[] getTableDataGuideline();
 
+	/**
+	 * @return sub type of the problem
+	 */
+	public abstract int getSubType();
+
+	/**
+	 * Set problem sub type
+	 * 
+	 * @param subType
+	 *            problem sub type
+	 */
+	public void setSubType(int subType);
+
 }
diff --git a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/IProblemItemImage.java b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/IProblemItemImage.java
index 289d76f..bb85669 100644
--- a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/IProblemItemImage.java
+++ b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/IProblemItemImage.java
@@ -69,11 +69,6 @@
 	 */
 	public abstract int getSeverityLV();
 
-	/**
-	 * @return type of the problem
-	 * @see ILowvisionProblemSubtype
-	 */
-	public abstract short getSubType();
 
 	/**
 	 * Set area of the problem
@@ -130,13 +125,4 @@
 	 */
 	public void setSeverityLV(int severityLV);
 
-	/**
-	 * Set detailed problem type
-	 * 
-	 * @param subType
-	 *            problem type
-	 * @see ILowvisionProblemSubtype
-	 */
-	public void setSubType(short subType);
-
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/ProblemItemImpl.java b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/ProblemItemImpl.java
index ad0cc46..d6ee63f 100644
--- a/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/ProblemItemImpl.java
+++ b/plugins/org.eclipse.actf.visualization.eval/src/org/eclipse/actf/visualization/eval/problem/ProblemItemImpl.java
@@ -48,6 +48,8 @@
 
 	protected String targetString = "";
 
+	protected int subType;
+
 	// TODO add Icon(for Result doc) info
 
 	/**
@@ -271,4 +273,12 @@
 		}
 	}
 
+	public int getSubType() {
+		return subType;
+	}
+
+	public void setSubType(int subType) {
+		this.subType = subType;
+	}
+
 }