    /**
	 * Suggest AJAX develop
	 */

	/**
	 * globa handler of sstatus suggest
	 * - values 0 & 1, false and true not used for type modification by cookies ?
	 */          	
	var find_suggest_enable = readCookie('find_suggest_enable') ? readCookie('find_suggest_enable') : 1;
	/* staus of suggest box visibility*/
    var find_suggest_visible = false;
    /* id of selected value in suggest box */
    var selItemId = 'ajSelItem';
    /* genral name prefix */
    var sugPrefix = 'find';
    
	/**
	 * GLOBAL VARIABLES
	 *
	 * general handlers
	 */
	var xmlhttp = false;	//handler
		
	/**
	 * Navigation & filling joined element
	 *
	 * - hook up input onkey action
	 * - suggest div id = element.id + suggest
	 */
	function AJ_AutoComplet(element, e, urlAction){
		
		//prefix for id's
		var elPref = element.id;
		
        //complet name of enable input
		var sugEnableId = elPref + '_suggest_enable';

		//local handler
        eval ('var sugEnable = ' + sugEnableId + ';');
		
		//alert(typeof sugEnable);
		//test enable status
		if(sugEnable!= 0){

			//test navi keys
			if (!e) var e = window.event;
			if (e.keyCode) code = e.keyCode;
			else if (e.which) code = e.which;
			
			//suggest object
			var sugObj = document.getElementById(elPref + '_suggest');
			
			//spec keys for action on suggest box
			//apply only by visibility
			eval ('var sugVisibility =' +  elPref + '_suggest_visible');
			
			if (sugVisibility){
            			
    			if (code==40){
    				//down arrow
    				selItem  = document.getElementById('ajSelItem');
    				if(!selItem){
    					
    					selItem = sugObj.firstChild;
    					
                        //select first anchor
    					if(selItem.tagName!="A"){
                        
        					while (selItem && selItem.tagName!="a" && selItem.tagName!="A"){
                            
                                selItem=selItem.nextSibling;
                            }
                        }
    				}
    				else{
                        //no roll-up, stay at end   	
    					if(selItem.nextSibling){
    					   
    					   //test if next is a
    					   nextItem=selItem.nextSibling;
    					   
    					   while (nextItem && nextItem.tagName!="a" && nextItem.tagName!="A"){
                            
                                nextItem=nextItem.nextSibling;
                           }
    					   
    					   if (nextItem){
                               //a finded
                               selItem.removeAttribute("id");	
    					       selItem = nextItem;     
                           }
    					}
    				}

    				selItem.setAttribute("id","ajSelItem");
    				return false;
    			}
    			else if (code == 38) {
    				//up arrow
    				selItem  = document.getElementById('ajSelItem');
    				
    				if(!selItem){
    					//select last in list
    					selItem = sugObj.lastChild;
    					//select first anchor
    					if(selItem.tagName!="A"){
    					     
                             while (selItem && selItem.tagName!="a" && selItem.tagName!="A"){
                            
                                selItem=selItem.previousSibling;
                            }
    					}
    				}
    				else{
    					
                        if(selItem.previousSibling){
    					   
    					   //test if next is a
    					   nextItem=selItem.previousSibling;
    					   
    					   while (nextItem && nextItem.tagName!="a" && nextItem.tagName!="A"){
                            
                                nextItem=nextItem.previousSibling;
                           }
    					   
    					   if (nextItem){
                               //a finded
                               selItem.removeAttribute("id");	
    					       selItem = nextItem;     
                           }
    					}					
    				}
    	
    				selItem.setAttribute("id","ajSelItem");
    				return false;
    			}
    	    	else if (code == 27) {
    				//ESC key
    				//unselected
    				
    				selItem  = document.getElementById('ajSelItem');
    				
    				if(selItem){
    					
    					selItem.removeAttribute("id");
    					//todo hideSuggest
    					hideSuggest(sugObj.id);
    				}
    				return false;
    	        }
    	        
                //return false;
    	    
            }//visible

   	        //no spec keys
			var typedText = element.value;
			
			if (typedText.length>1){
				
				AJ_IniHttpRequest();
				//send query & last add element value
				AJ_SendRequest('GET', urlAction + encodeURI(element.value), true);	
			}
			else{
            
                //hide
                hideSuggest(elPref + '_suggest');
            }
        
        }//suggest enable test
		
		return false;
	}
	
	/**
	 * sumbit suggest bind form
	 * - call clickOnSuggest action 
	 * 
	 * @param string formName
	 * @param string suggPref      	 
	 */           	
    function sugFormSubmit(formName, suggPref){
          
        selItem  = document.getElementById(selItemId);   
        
        if(selItem){
    	
        	clickOnSuggest(selItem, suggPref, formName);
        	return false;
    	}
    	
    	return true;
    }


	/**
	 * ini global handler for XMLHttpRequest
	 * - status in xmlhttp
	 */
	function AJ_IniHttpRequest(){

		/*@cc_on @*/
		/*@if (@_jscript_version >= 5)
		// JScript gives us Conditional compilation, we can cope with old IE versions.
		// and security blocked creation of the objects.
		 try {
		  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		 } catch (e) {
		  try {
		   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		  } catch (E) {
		   xmlhttp = false;
		  }
		 }
		@end @*/
		if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
			try {
				xmlhttp = new XMLHttpRequest();
			} catch (e) {
				xmlhttp=false;
			}
		}
		if (!xmlhttp && window.createRequest) {
			try {
				xmlhttp = window.createRequest();
			} catch (e) {
				xmlhttp=false;
			}
		}
	}
	
	//MAKE REQUEST

	function AJ_SendRequest(method, url, async, readyStateFn){
		
 		xmlhttp.open(method, url, async);
 		xmlhttp.onreadystatechange=AJ_Complete;
 		//xmlhttp.onreadystatechange=readyStateFn;
 		xmlhttp.send(null);
 	}
	
	function AJ_Complete(){
		
		var elId = sugPrefix + '_suggest';
		
		if (xmlhttp.readyState==4) {
   			
            var content =  xmlhttp.responseText;
            //show
            if (content.length > 0){
                
                document.getElementById(elId).innerHTML = xmlhttp.responseText;
                showSuggest(elId);
            }
            else{
            
                hideSuggest(elId);
            }
  		}
	}
	
	/**
	 * find position fnc
	 */
	
		// http://www.quirksmode.org/js/findpos.html

	function findPos(obj)
	{
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			curleft = obj.offsetLeft;
			curtop = obj.offsetTop;
			while (obj = obj.offsetParent) {
				curleft += obj.offsetLeft
				curtop += obj.offsetTop
			}
		}
		return [curleft,curtop];
	}
		
	function getElDim(obj)
	{
		var w = 0;
		var h = obj.offsetHeight ? obj.offsetHeight : 0;
		
		if (obj.offsetWidth){
			
			w = obj.offsetWidth;
		}
		return [w, h];
	}

	
	//global handler
	

	
	/**
	 * Set absolute position for suggest
	 * 
	 * @param string sugId id of suggest box
	 * @param string elId  id of input element
	 * @param string contId    DOM container of elID  	 
	 *                	 
	 */
	function setSuggestPosition(sugId, elId, contId){
		
		if (document.getElementById(sugId) && document.getElementById(elId)){
			
			//get par position
			var mainEl = document.getElementById(elId);
			var suggEl = document.getElementById(sugId);
			
			//pokud je vztaženo k jiném nadřazenému 'relative' box pak set here
			var contTop = 0;
			var contLeft = 0;

			if (contId!=''){
			
				contPos = findPos(document.getElementById(contId));
				var contTop = contPos[1];
				var contLeft = contPos[0];
			}
			
			//get position
			var pos = findPos(mainEl);
			//get dimension
			var elDim = getElDim(mainEl);
			
			suggEl.style.top = (pos[1] - contTop + elDim[1]) +'px';
			suggEl.style.left = (pos[0] - contLeft) +'px';
			
			//suggEl.style.width = elDim[0];
			//set focus
			document.getElementById(elId).focus();
		}
		return false;			
	}
	
	/**
	 * ini enable status from cookies
	 */     	
	function iniSuggest(sugId){
    
        var cookieName = sugId + '_enable';
    
       	if (document.getElementById(sugId + '_enable')){
       	    
            var elCh = document.getElementById(cookieName);
       	    //direct set element, global var not initialized
       	    elCh.checked = readCookie(cookieName)==0 ? false : true;
       	}
    }
	
	/**
	 * set global handler by enable chckbox status
	 * - set cookies
	 */
	function setSuggestStatus(sugId){
		
		var status = 1;	//default enable
		
		if (document.getElementById(sugId + '_enable')){
			
			var elCh = document.getElementById(sugId + '_enable');
			
			status = elCh.checked ? 1 : 0;
		}
		//set global value
		eval (sugId + '_enable = ' + status + ';');
		//update cookie
		createCookie(sugId + '_enable', status, 30);
	}

	/**
	 * show suggest box
	 */
	function showSuggest(sugId){
		
		if (document.getElementById(sugId)){
			
    		document.getElementById(sugId).style.visibility = 'visible';
    		//set flag
			eval ( sugId + '_visible = true');
		}
	}
	
	/**
	 * hide suggest box
	 */
	function hideSuggest(sugId){
		
		if (document.getElementById(sugId)){
			
    		document.getElementById(sugId).style.visibility = 'hidden';
    		//set flag
			eval ( sugId + '_visible = false');
		}
	}
    	
	/**
	 * onclick Suggest action
	 * - this fn can be modify by case
	 * 
	 * @param element selItem         	 
	 * @param string suggPref  name of suggest prefix
	 * @param string formName  name of suggest form       	 
	 */	 
	function clickOnSuggest(selItem, suggPref, formName){
		
		if(selItem){
        
		  //fill search input with clicked values
		  //document.getElementById(suggPref).value = selItem.innerHTML;
		  
          //set flag for log & href
		  document.getElementById(suggPref+'_flag').value = selItem.getAttribute('cool');
          //set flag for log & href
		  document.getElementById('ltype').value = selItem.getAttribute('ltype');
          //action
		  document.forms[formName].action = '/suggest_link.php';
          //action - submit forms
		  document.forms[formName].submit();
        }
		//always false no href action
		return false;		
	}
	
	/**
	 * Cookies operation
	 * 
	 * - complet solution from http://www.quirksmode.org/js/cookies.html
	 * - author-guru ppk, thanks for save time:)
	 */
	
	function createCookie(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}
	
	function readCookie(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}
	
	function eraseCookie(name) {
		createCookie(name,"",-1);
	}
