﻿/*******************************************************************************
 *                              patent_tools.js                                *
 *                            -------------------                              *
 *   begin                : Friday, Nov 03, 2006                               *
 *   copyright            : (C) 2006 哈今的專利自學手冊                        *
 *   last modified        : v0.1, 2006-11-03, Chen-Che Lee                     *
 *                                                                             *
 *   Create tab navigator for patent tools. Create extending form for advanced *
 *   patent search.                                                            *
 *                                                                             *
 ******************************************************************************/
  
  var serialNo = 0, fieldCount= 0;
  
  var hintArray = new Array( "提示: 可用 AND, OR, 或 ANDNOT 配合括號構成具有多個關鍵字的查詢條件. 如: television OR (cathode AND tube)",
                             "提示: 可用 AND, OR, 或 ANDNOT 配合括號構成具有多個關鍵字的查詢條件. 如: television OR (cathode AND tube)",
		                         "提示: 可用 AND, OR, 或 ANDNOT 配合括號構成具有多個關鍵字的查詢條件. 如: television OR (cathode AND tube)",
  		                       "提示: 可輸入特定日期 (如 20001217 及 12/17/2000) 或利用符號 $, -> 指定日期範圍 (如 12/01/2000->12/31/2000 或 12/$/2000).",
                             "提示: Patent Number",
  		                       "提示: 可輸入特定日期 (如 20001217 及 12/17/2000) 或利用符號 $, -> 指定日期範圍 (如 12/01/2000->12/31/2000 或 12/$/2000).",
                             "提示: 六位數碼, 不足六位的數字前面補零, 如 000034. 搜尋結果可能會有一筆以上的資料.",
                             "提示: Application Type",
		                         "提示: 輸入格式為 <last name>-<first name>-<initial>, 例如要查 John E. Doe 就必須輸入 Doe-John-E. 可使用萬用字元 $.",
  		                       "提示: Assignee City",
                             "提示: Assignee State",
		                         "提示: Assignee Country",
  		                       "提示: International Classification",
                             "提示: Current US Classification",
		                         "提示: 輸入格式為 <last name>-<first name>-<initial>, 例如要查 John E. Doe 就必須輸入 Doe-John-E. 可使用萬用字元 $.",
		                         "提示: 輸入格式為 <last name>-<first name>-<initial>, 例如要查 John E. Doe 就必須輸入 Doe-John-E. 可使用萬用字元 $.",
		                         "提示: 輸入格式為 <last name>-<first name>-<initial>, 例如要查 John E. Doe 就必須輸入 Doe-John-E. 可使用萬用字元 ",
                             "提示: Inventor City",
  		                       "提示: Inventor State",
                             "提示: Inventor Country",
  		                       "提示: Government Interest",
	   	                       "提示: Attorney or Agent",
  		                       "提示: PCT Information",
		                         "提示: Foreign Priority",
  		                       "提示: 可輸入特定日期 (如 20001217 及 12/17/2000) 或利用符號 $, -> 指定日期範圍 (如 12/01/2000->12/31/2000 或 12/$/2000).",
  		                       "提示: Related US App. Data",
		                         "提示: Referenced By",
                             "提示: Foreign References",
  		                       "提示: Other References",
                             "提示: 可用 AND, OR, 或 ANDNOT 配合括號構成具有多個關鍵字的查詢條件. Ex: television OR (cathode AND tube)",
                             "提示: 可用 AND, OR, 或 ANDNOT 配合括號構成具有多個關鍵字的查詢條件. Ex: television OR (cathode AND tube)" );
  
  function init() {
    // put event listener for tab navigator.
    document.getElementById("familySearchDiv").style.display = "block";
    var lists = document.getElementById("toolList").childNodes;
    for (var i=0; i<lists.length; i++) {
       if (lists[i].nodeName == "LI") {
         lists[i].firstChild.onclick = showTool;
       }
    }
    
    // Put event listener for extending form.
    document.getElementById("moreFields").onclick = moreFields;
    document.getElementById("removeAll").onclick = removeAll;
    document.getElementById("usPatentSearch").onsubmit = createQueryString;
    moreFields();
    // window.alert("Page loaded!");
  }
  
/*******************************************************************************
  Tab navigation for patent tools.
*******************************************************************************/
  function showTool() {
  	var nodeLI = this.parentNode.parentNode.getElementsByTagName("LI");
  	// window.alert("There are " + nodeLI.length + " LI.");
  	for (var i=0; i<nodeLI.length; i++) {
  	  if (nodeLI[i].id == "currentTool") nodeLI[i].id = "";
  	}
    this.parentNode.id = "currentTool";
  	var targetTool = this.id + "Div"; 
  	document.getElementById(targetTool).style.display = "block";
  	var toolDivs = document.getElementById("toolBox").childNodes;
  	for (var i=0; i<toolDivs.length; i++) {
   	  if (toolDivs[i].nodeName == "DIV") {
  	    if (toolDivs[i].id != targetTool) toolDivs[i].style.display = "none";
  	  }
  	}
  	return false;
  }
  
/*******************************************************************************
  Extending Form for Advanced Patent Search.
*******************************************************************************/
  /* 產生 Query String 的地方 */
  function createQueryString() {
  	var searchFields = document.getElementById("searchBox").childNodes;
  	var query = "";
  	for (var i=0; i<searchFields.length; i++) {
  		var field = document.getElementById('fieldOf' + searchFields[i].id).value.replace(/^\s*|\s*$/g,"");
  	  if (field) {
  		  var op = document.getElementById("opOf" + searchFields[i].id);
  		  var select = document.getElementById("selectOf" + searchFields[i].id);
  		  query += " " + op.options[op.selectedIndex].value + " " + select.options[select.selectedIndex].value + (field.indexOf(" ") == -1 ? field : "(" + field + ")");
  	  }
  	}
  	window.alert(query.substr(4));
  	document.getElementById("Query").value = query.substr(4);
  	document.getElementById("patentSearch").submit();
    return false;
  }
 
  function moreFields() {
  	serialNo++;
  	fieldCount++;
    // window.alert("After serialNo!");
  	var newSearch = document.getElementById("Term").cloneNode(true);
  	newSearch.id = newSearch.id + serialNo;
  	var newFields = newSearch.childNodes;
    // window.alert(newSearch.id + " Fields length " + newFields.length + " !");
  	for (var i=0; i<newFields.length; i++) {
  		// window.alert("Inside the loop >> " + i + " " + newFields.length + " " + newFields[i].nodeName);
  		if (newFields[i].id) 
  		  newFields[i].id = newFields[i].id + serialNo;
  		if (newFields[i].name)
  		  newFields[i].name = newFields[i].name + serialNo;

  	}
    // window.alert("After for loop!");
    document.getElementById("searchBox").appendChild(newSearch);
    document.getElementById("remove" + serialNo).onclick = removeSearch;
    document.getElementById("selectOfTerm" + serialNo).onchange = changeHint;
    document.getElementById("showHint" + serialNo).onclick = displayHint;
    if (serialNo == 1) {
      document.getElementById("opOfTerm1").style.visibility = "hidden";
      document.getElementById("remove1").style.visibility = "hidden";
    }
  }
  
  function changeHint() {
  	var node = document.createTextNode(hintArray[this.selectedIndex]);
  	// window.alert(this.parentNode.id);
  	var pNode = document.getElementById("hintOf" + this.parentNode.id);
  	pNode.replaceChild(node, pNode.firstChild);
  	// window.alert(hintArray[this.selectedIndex]);
  }
   
  function displayHint() {
    // window.alert("hintOfTerm" + this.id.substr(8));
  	var pNode = document.getElementById("hintOfTerm" + this.id.substr(8));
  	if (pNode.style.display != "block") {
  	  pNode.style.display = "block";
  	} else {
  	  pNode.style.display = "none" ;
  	}
  }
  
  // function removeSearch(searchNode) {
  function removeSearch(e) {
    // if (!e) var e = window.event; 
    // window.alert(e.type + " " + e.target);
    if (fieldCount == 1) return false;
  	this.parentNode.parentNode.removeChild(this.parentNode);
  	fieldCount--;
  }
  
  function removeAll() {
  	var fields = document.getElementById("searchBox").childNodes;
  	
  	for (var i=fields.length; i>1; i--) {
  		fields[i-1].parentNode.removeChild(fields[i-1]);
    }
    
    fieldCount = 1;
    serialNo = 1;
    document.getElementById("usPatentSearch").reset();
    
    var node = document.createTextNode(hintArray[0]);
  	var pNode = document.getElementById("hintOfselect1");
  	pNode.replaceChild(node, pNode.firstChild);
    
  }
  
  window.onload = init;