﻿		var tableItems = new Array();
		var tableHighlight = -1;
		var exactMatch = false;
		var matchedString;
		var searchString = "";
		var keywordArray;
		var footerHeight;
		
		function loadGraph(val) {
		    
		    document.getElementById("legend").style.display = '';
		    document.getElementById("graph").style.display = '';
		    searchString = val;
			tableHighlight = -1;
    	    document['Image1'].src = "graph.aspx?keyword=" + encodeURIComponent(val);
			document.getElementById("graphCaption").innerHTML = val;
			
			document.getElementById("MyMaster_DemoPageInput_keywordTextBox").value = val;
			searchKeywords(val);
			generateTable(searchString);

			var clientH = document.documentElement.scrollHeight;  
			document.getElementById("footer_masterpage").style.top = clientH + "px";
			
		}
		
		// function define with resize screen height when search kwywork result at 2008-5-21 by luyinghuai        
        function Resize_local_1(cont)
        {
            var clientH=document.documentElement.scrollHeight;                      
            var lhObj=document.getElementById("footer_masterpage");
            var offsetH=lhObj.style.height;
                     
            if(clientH>845)
            {
                lhObj.style.top= document.documentElement.clientWidth + cont + 25 + "px";
            }
            else
            {
                lhObj.style.top=780 + offsetH + "px";
            }
        }
        
		function searchKeywords(searchStr) {
		    exactMatch = false;
		    var returnMax = 10;
		    
		    tableItems = new Array();
		    tableHighlight = -1;
		    if (searchStr == "") { 
		        return ;
		    }
		    var key = searchStr.toLowerCase();
		    var partialMatches = new Array();
		    var elementCount = 0;
		    
		    for (var i=0; i<keywordArray.length; i++) {
		        var str = decodeURI(keywordArray[i]);
		        if (str == key) {
		            exactMatch = true;
		            matchedString = str;
		            tableItems[tableItems.length] = str;
		        } else {
		            var foundIndex = str.indexOf(key);
		            if (foundIndex == 0) {
		                tableItems[tableItems.length] = str;
		            } else {
		                if (keywordArray[i].indexOf(" " + key) > 1) {
		                    partialMatches[partialMatches.length] = str;
		                }
		            }
		        }
		        if (tableItems.length == returnMax) {
		            break;
		        }
		    }
		   
		    for (var copyStart = 0; tableItems.length < returnMax && copyStart < partialMatches.length; copyStart++) {
		        tableItems[tableItems.length] = partialMatches[copyStart];
		    }
		}

        function boldString(str,toBold) {
            if (str.indexOf(toBold) == 0) {
                return "<b>" + toBold + "</b>" + str.substring(toBold.length,str.length);
            } else {
                 var i = str.indexOf(" " + toBold);
                 if (i == -1) {
                    return str;
                 }
                 return str.substring(0,i) + "<b> " + toBold + "</b>" + str.substring(i + toBold.length + 1,str.length);
            }
        }
        
        function highlightTableRow(rowIndex) {
            
            var resultsTable = document.getElementById("resultsTable");	
            for (var i=0; i<resultsTable.rows.length; i++) {
                resultsTable.rows[i].cells[0].className = (i == rowIndex) ? "suggesthighlight" : "suggestrow";
            }
            
            tableHighlight = rowIndex;

        }
        
        function generateTable() {         
         //add by luyinghuai with resize screen height when search kwywork result at 2008-5-21 begin
            if( tableItems != null )
			{
			    var colnum = tableItems.length;
			    var inttemp = 20;	//colheight:20
			    footerHeight = colnum*inttemp;		    
			    Resize_local_1( colnum*inttemp );
			}
            //end
			var resultsTable = document.getElementById("resultsTable");	
			while (resultsTable.rows.length > 0) {
			    resultsTable.deleteRow(0);
			}
			for (var i=0; i<tableItems.length; i++) {
			
			    myRe = /[']/g;
			    myRe2 = /[\\]/g;
			    var myItem = tableItems[i].replace(myRe2, "\\\\").replace(myRe, "\\'");
			    var myRow = resultsTable.insertRow(resultsTable.rows.length);
			    var myCell = myRow.insertCell(0);
				if (i == tableHighlight) {
				    myCell.className = "suggesthighlight";
				} else {
				    myCell.className = "suggestrow";
					myCell.onmouseover = new Function("highlightTableRow(" + i + ")");
				}
				myCell.onclick = new Function("loadGraph('" + myItem + "')");
				var contentSpan = document.createElement('span');
				contentSpan.className = "desc";
				contentSpan.innerHTML = boldString(tableItems[i],searchString.toLowerCase());
				myCell.appendChild(contentSpan);
			}
			if (resultsTable.rows.length == 0) {
                var contentSpan = document.createElement('span');
				contentSpan.className = "desc";
				contentSpan.innerHTML = "<b>No items match your query</b>";

				var myCell = resultsTable.insertRow(0).insertCell(0).appendChild(contentSpan);
			}			
			
		}
		
		function cleanString(newSearchString) {
		    myRe = /  +/g;
			myRe2 = /^ +/;
			return newSearchString.replace(myRe, " ").replace(myRe2,"");
	    }
	    
        function handleNewSearch(newSearchString) {
			searchString = cleanString(newSearchString);
			searchKeywords(searchString);
            generateTable(searchString);
        }
        
        function handleOnChange() {
       
            handleNewSearch(document.getElementById("MyMaster_DemoPageInput_keywordTextBox").value);
        }
        
	function handleKeyUp(field, evt) {
	    document.getElementById('resultsTable').style.display = "block";
		var keyCode = evt.which ? evt.which : evt.keyCode;
		if (keyCode == 13) {
			// enter
			if (tableHighlight >= 0) {
				loadGraph(tableItems[tableHighlight]);
			} else if (exactMatch && matchedString == cleanString(document.getElementById("MyMaster_DemoPageInput_keywordTextBox").value)) {
			    loadGraph(matchedString);
			} else {
			    handleNewSearch(document.getElementById("MyMaster_DemoPageInput_keywordTextBox").value);
			    if (exactMatch) {
				loadGraph(matchedString);
			    }
			}
			Resize();
		} else if (keyCode == 40) {
			// down
			if (tableHighlight + 1 < tableItems.length) {
				tableHighlight++;
				document.getElementById("MyMaster_DemoPageInput_keywordTextBox").value = tableItems[tableHighlight];
				highlightTableRow(tableHighlight);
			}
		} else if (keyCode == 38) {
			// up
			if (tableHighlight - 1 >= 0) {
				tableHighlight--;
				document.getElementById("MyMaster_DemoPageInput_keywordTextBox").value = tableItems[tableHighlight];
				highlightTableRow(tableHighlight);
			}
		} else {
			handleNewSearch(document.getElementById("MyMaster_DemoPageInput_keywordTextBox").value);
		}
	}
		
        function noenter() {
            return !(window.event && window.event.keyCode == 13); 
        }

	function noenter(ev) {
	    var keyCode = ev.which ? ev.which : ev.keyCode; 
	    return !(keyCode == 13); 
}

function PageLoad()
{
    if (tableHighlight >= 0) {
	    loadGraph(tableItems[tableHighlight]);
    } else if (exactMatch && matchedString == cleanString(document.getElementById("MyMaster_DemoPageInput_keywordTextBox").value)) {
        loadGraph(matchedString);
    } else {
        handleNewSearch(document.getElementById("MyMaster_DemoPageInput_keywordTextBox").value);
        if (exactMatch) {
	    loadGraph(matchedString);
        }
    }
}

// add reset function.
// when use click reset imgbutton, the input form and result area will be rest to blank.
function ResetInput_local()
{
    document.getElementById("MyMaster_DemoPageInput_keywordTextBox").value = "";
    document.getElementById('legend').style.display = "none";
    document.getElementById('resultsTable').style.display = "none";
}

