var GsAutocompleteCHAR_LIMIT = 1;
var GsAutocompleteTYPES = 't=A884B76A-D005-4B04-AB0A-01FC5D93FF3C,Fornavn,A884B76A-D005-4B04-AB0A-01FC5D93FF3C,Efternavn';
var GsAutocompleteLIMIT = '&limit=10';

// Basic UA detection    
    isOpera = navigator.userAgent.toLowerCase().indexOf('opera') != -1;
// ----- GsAutocomplete GsAutocomplete GsAutocomplete ---
var FormName = 'psfrm'; // Name on Form

var GsAutocompleteItemSelectedName = 'search-fieldSelected';  // hidden field for selected Id
var GsAutocompleteItemSelected = null;  // Id on selected item

var GsAutocompleteItem = null; // Input text box
var GsAutocompleteFormSubmit = null; // Main Form to post
var GsAutocompleteItemDropDown = null;
var updateGsAutocompleteIsTypingCount = 0; 
// --- used to findout if your typing ---
function updateGsAutocompleteTyping(){
	updateGsAutocompleteIsTypingCount++;	
	setTimeout("updateGsAutocompleteTypingTimer();",150);	
}
function updateGsAutocompleteTypingTimer(){	
	updateGsAutocompleteIsTypingCount--;	
	if (updateGsAutocompleteIsTypingCount <= 0){	  
	  updateGsAutocompleteDoAjax(GsAutocompleteItem);	  
	}
}

// --- basic - hide/show
function isGsAutocompleteShowed(){if (GsAutocompleteItemDropDown.style.display == 'block'){return true;}return false;}
function GsAutocomplete_Hide(){	GsAutocompleteItemDropDown.style.display = 'none';}
function GsAutocomplete_Show(){	GsAutocompleteItemDropDown.style.display = 'block';}

function updateGsAutocomplete(item) {
	if (GsAutocompleteItem == null ){
		GsAutocompleteItem = item;		
	}	
    if (GsAutocompleteItem.value.length < 1){
		GsAutocomplete_Hide;
		return false;
	}
	updateGsAutocompleteTyping();
}

function updateGsAutocompleteDoAjax(item) {    	
	if (item.value.length <= GsAutocompleteCHAR_LIMIT){
		GsAutocomplete_Hide();
		return false;
	}			
	var q = '&q='+encodeURI(item.value);	
	AjaxUpdate('/GsAutocompleteSvkh.aspx?'+GsAutocompleteTYPES+GsAutocompleteLIMIT+q,'',GsAutocompleteUpdateCallBack,'','');	
}

function GsAutocompleteUpdateCallBack(ResponseContent, AjaxStatus, CallBackParameter)
 {
	//alert('GsAutocompleteUpdateCallBack : ResponseContent='+ResponseContent);
	if (ResponseContent.length > 9){
      document.getElementById('GsAutocomplete').innerHTML=ResponseContent;
	  updateChildrenGsAutocomplete();
      GsAutocomplete_Show();
	}else{
		GsAutocomplete_Hide();;
	}	
}
function initGsAutocomplete(item){
	if (GsAutocompleteItem == null ){

		GsAutocompleteItem = item;
		GsAutocompleteFormSubmit = document.getElementById(FormName);
		GsAutocompleteItemSelected = document.getElementById(GsAutocompleteItemSelectedName);
		item.setAttribute('autocomplete', 'off');
		item.onkeydown  = function(e) {return AutoComplete_KeyDown(e);}
        item.onkeyup    = function(e) {return AutoComplete_KeyUp(e);}
        item.onkeypress = function(e) {if (!e) e = window.event; if (e.keyCode == 13 || isOpera) return false;}
        //item.ondblclick = function() {AutoComplete_ShowDropdown(this.getAttribute('id'));}
        item.onclick    = function(e) {if (!e) e = window.event; e.cancelBubble = true; e.returnValue = false;}
		GsAutocompleteItemDropDown = document.getElementById('GsAutocomplete');
		var docclick = function(){GsAutocomplete_Hide();}
        if (document.addEventListener) {
            document.addEventListener('click', docclick, false);
        } else if (document.attachEvent) {
            document.attachEvent('onclick', docclick, false);
        }	
	}else{
		
	}
	
	//updateChildrenGsAutocomplete();
	// -- debug
	//GsAutocomplete_Show();
	
}
// / -- to be able to move select up and down with keys 
var GsAutocompleteChildren = null;
var GsAutocompleteCurrentChildIndex = -1;
function updateChildrenGsAutocomplete(){	
	var ul = GsAutocompleteItemDropDown.children[0];
	GsAutocompleteChildren = ul.children;
	GsAutocompleteCurrentChildIndex = -1;	
	for (var i = 0; i < GsAutocompleteChildren.length; i++){
		GsAutocompleteChildren[i].className = 'autocomplete_item';		
		//GsAutocompleteChildren[i].onClick = 'AutoComplete_OnClick('+i+');return false;';
		GsAutocompleteChildren[i].setAttribute('onmouseover','hoverClass(this,"autocomplete_item_highlighted")');
		GsAutocompleteChildren[i].setAttribute('onmouseout','hoverClass(this,"autocomplete_item")');
	}	
}

function hoverClass(who,what){
who.setAttribute(document.all ? 'className'  : 'class', what);
//	who.className = what;
}
function AutoComplete_OnClick(index,idguid){	
  GsAutocompleteCurrentChildIndex = index;
  GsAutocompleteItemSelected.value = idguid;  
  AutoComplete_Select();
}

function AutoComplete_Move(index){
	if (GsAutocompleteCurrentChildIndex > -1 ){
	  GsAutocompleteChildren[GsAutocompleteCurrentChildIndex].className = 'autocomplete_item';
	}
   if ((GsAutocompleteCurrentChildIndex+index) < 0) {
	GsAutocompleteCurrentChildIndex = GsAutocompleteChildren.length-1;
   }else
   if ((GsAutocompleteCurrentChildIndex+index) > GsAutocompleteChildren.length-1){
     GsAutocompleteCurrentChildIndex = 0;
   }else{
     GsAutocompleteCurrentChildIndex += index;
   }
   GsAutocompleteChildren[GsAutocompleteCurrentChildIndex].className = 'autocomplete_item_highlighted';   
}

function AutoComplete_UpdateId(){
	GsAutocompleteItemSelected.value = '';
	if (GsAutocompleteCurrentChildIndex > -1){
		var c = GsAutocompleteChildren[GsAutocompleteCurrentChildIndex].lastChild;
		GsAutocompleteItemSelected.value = c.innerHTML;	
	}
}

function AutoComplete_Select(){
	// do something with select item
	//  GsAutocompleteChildren[GsAutocompleteCurrentChildIndex]
   if (GsAutocompleteCurrentChildIndex > -1){
     
	 AutoComplete_UpdateId();
	 GsAutocomplete_Hide();
	 GsAutocompleteFormSubmit.submit();
	 //var c  = GsAutocompleteChildren[GsAutocompleteCurrentChildIndex].firstChild;
	 //GsAutocompleteItem.value = c.innerHTML;
     //alert('selected item :'+GsAutocompleteCurrentChildIndex);    
   }
}
   
function AutoComplete_KeyDown(event)
{
	if (!event) event = window.event
	var keyCode = event.keyCode;
	switch (keyCode) {	
		case 13:// Return/Enter
			if (isGsAutocompleteShowed()){
				if (GsAutocompleteCurrentChildIndex == -1){
					if (GsAutocompleteItem.value.length > 0){
					AutoComplete_UpdateId();
					GsAutocompleteFormSubmit.submit();
					}
					return true;
				}
				AutoComplete_Select();
				return true;
			}else{
				if (GsAutocompleteItem.value.length > 0){
					GsAutocompleteFormSubmit.submit();
				}
				return true;
			}
			event.returnValue = false;
			event.cancelBubble = true;
			break;            
		case 27: // Escape
			GsAutocomplete_Hide();
			event.returnValue = false;
			event.cancelBubble = true;
			break;          
		case 38: // Up arrow
			if (isGsAutocompleteShowed()){					
				AutoComplete_Move(-1);
			}                
			return false;
			break;
		case 9: // Tab               
			return;            
		// Down arrow
		case 40:
			if (isGsAutocompleteShowed()){					
				AutoComplete_Move(+1);
			}			
			return false;
			break;
	}
}

function AutoComplete_KeyUp(event)
{
	if (!event) event = window.event
	var keyCode = event.keyCode;
	switch (keyCode) {
		case 13:
			event.returnValue = false;
			event.cancelBubble = true;
			break;			
		case 27: // Escape
			GsAutocomplete_Hide();
			event.returnValue = false;
			event.cancelBubble = true;
			break;	   
		case 38:  // Up arrow			 
		case 40: // Down arrow
			return false;
			break;
		default:
			updateGsAutocomplete();
			//AutoComplete_ShowDropdown(id);
			break;
	}
}


