/**
 * jQuery 查詢關鍵字自動完成及新增關鍵字庫功能 plugin
 * 運用於主計處版
 * Producer : Rob (rob.shau@hyweb.com.tw)
 * Version : 1.2.1
 * UpdateDate : 2010-05-14
 * AddModule : 可透過上下鍵移動選詞 (v1.1)
 * AddModule : 修正Enter鍵選擇問題 (v1.2)
 * AddModule : 修正多人使用時關鍵字新增字會消失問題 (v1.2.1) 
 * Must include jquery.js,jquery.json.js
 *
 */	
	var KeyDB;var SearchDB=new Array();var CanHide=1; var CanSaveTempDB=1; var FirstKey="";var CanSaveNewKey=0;
	$(document).ready(function(){
		$("#searchResult").hide();
		$.ajax({
		  url: "xslGip/style2/data/keyMeta.asp",
		  type: "GET",
		  dataType: "json",
		  cache: false,
		  success: function(data) {
			//資料新增
			if (data==null){
				data = new Array();
			}
			KeyDB = data;			
		  }
		});
		
		function saveNewKeyWord(){
			$("#searchResult").hide();
			$.ajax({
			  url: "xslGip/style2/data/keyMeta.asp",
			  type: "GET",
			  dataType: "json",
			  cache: false,
			  success: function(data) {
				//資料新增
				if (data==null){
					data = new Array();
				}
				KeyDB = data;			
			  }
			});		
			var KeyValue = $("#Search").val();
			//新增關鍵字
			var canSave = 1;
			if (KeyValue==$("#Search").attr("title")||KeyValue=="") {
				canSave=0;
			}
			if (canSave==1){
				$.each(KeyDB,function(i,value){
					if (value.toUpperCase()==KeyValue.toUpperCase()){
						canSave = 0;
						return false;
					}
				});
			}
			if (canSave==1){
				KeyDB.push(KeyValue);	
				//存檔
				$.post("xslGip/style2/SaveKeyData.ashx",{
					fileName : "keyMeta.asp",
					dataString :  $.toJSON(KeyDB)
				},function(data){
				});					
			}					
			CanSaveNewKey=0;
			//go HywebSearch		
			goPage();		
		}
			  
		$(".searchKey").click(function(){
			if (CanSaveNewKey==1) saveNewKeyWord();
		});	
		
		function searchEvent(){
			$("#searchResult").hide();
			$("#searchResult").html("");
			var MaxLimit = 10; var NowCount = 0;
			var matchWord=$("#Search").val().toUpperCase();
			var searchValueLenght = $("#Search").val().length;
			if (searchValueLenght>0){
				var TempDB = new Array(); var listArray; 
				$.each(SearchDB,function(i,value){
					if (value.substring(0,searchValueLenght).toUpperCase()==matchWord){
						if (NowCount < MaxLimit){
						listArray += "<div class=\"KeyItem\">"+value+"</div>";
						}
						if (CanSaveTempDB==1){
						TempDB[NowCount] = value;
						}					
						NowCount += 1;	
					}
				});
				//建立關鍵字清單
				$(listArray).appendTo("#searchResult");
					//建立首字關鍵字暫存資料
					if ((TempDB.length>0)&&(CanSaveTempDB==1)){
						SearchDB=TempDB;
						CanSaveTempDB=0;
					}
				//關鍵字被選取事件
				$(".KeyItem").click(function(){
					$("#Search").val($(this).html());
					$("#searchResult").hide();
					CanSaveNewKey=1;
				});
				if (NowCount>0){		
					var pos=$("#Search").offset();	
					$("#searchResult").offset({left:pos.left,top:pos.top+$("#Search").height()+5});
					$("#searchResult").css({position:"absolute",border:"solid 1px","background-color":"#EDF5FB"});					
					$("#searchResult").width($("#Search").width()+6);
					$("#searchResult").show();					
					$("#searchResult").offset({left:pos.left,top:pos.top+$("#Search").height()+5});
	
				   //選中顯示
				   $(".KeyItem").each(
					   function(i){
							$(this).hover(
							function() {
								$(this).addClass("SelectMe");
								CanHide=0;
							},
							function() {
								$(this).removeClass("SelectMe");
								CanHide=1;
						   });
					   });					
					}
			}
		}
		
		function enterProc(){
			if (CanSaveNewKey==0){
				CanHide=1;						
				$("#searchResult").hide();
				if ($("#Search").val().length>0){
					CanSaveNewKey=1;
				}
			}else{
				saveNewKeyWord();
			}		
		}
		
		$("#Search").keypress(function (e) {
			if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
				enterProc();
				return false;
			} else {
				return true;
			}
		});	
		
		$("#Search").keyup(function(e){		
			switch(e.keyCode) {
				case 13: // enter	
					//enterProc();
					break;
				case 38: // up
					e.preventDefault();
					moveSelection("up");
					break;
				case 40: // down
					e.preventDefault();
					moveSelection("down");
					break;
				default:
					var nowFirstKey = $("#Search").val().substring(0,1).toUpperCase();
					if (($("#Search").val().length==0) || (SearchDB.length==0) || (FirstKey!=nowFirstKey)){
						SearchDB=KeyDB;
						CanSaveTempDB=1;
						FirstKey=nowFirstKey;
					}		
					searchEvent();	
			}			
		});				
		
		function moveSelection(direction){
			CanHide=0;CanSaveNewKey=0;
			var lis = $(".KeyItem");
			if(direction == "down"){
				var start = lis.eq(0);
			} else {
				var start = lis.filter(":last");
			}
			var active = $(".SelectMe:first");
			if(active.length > 0){
				if(direction == "down"){
					start = active.next();
				} else {
					start = active.prev();
				}	
			}
			lis.removeClass("SelectMe");
			start.addClass("SelectMe");	
			$("#Search").val(start.text());
		}		

		$("#Search").focusout(function(event){
			if (CanHide==1){
				$("#searchResult").hide();
				if ($("#Search").val().length>0){
					CanSaveNewKey=1;
				}
			}
		});					
		
	});	
		
