var town=function(town_id){
var urlGetTown= '/distance/ajax/get_towns.php';
var select_item=-1;
var count_all_item=0;
var object_input_town = $("#"+town_id); 
var object_popup=$("<div> </div> ").insertAfter("#"+town_id).addClass('padding_div').attr('id', town_id+'_padding_div').css("display","none");

function findPos(obj) {
	var curleft = obj.offsetLeft || 0;
	var curtop = obj.offsetTop || 0;
	while (obj = obj.offsetParent) {
		curleft += obj.offsetLeft;
		curtop += obj.offsetTop;
	}
	return {x:curleft,y:curtop};
}
function SetTopAndLeft(){
	var pos = object_input_town.position();
	var iWidth=object_popup.width();
	var rightposition=pos.left+iWidth;
	var  dWidth=$(document).width();
	if (rightposition>dWidth){
	    	pos.left=pos.left-(rightposition-dWidth)-20;
	} 
object_popup.css({ top: pos.top+object_input_town.height()+6 + "px" , left: pos.left + "px" });/*
   var containerPosition;
   containerPosition = parent.position();
   var leftpozition=containerPosition.left; 
   var rightposition=leftpozition+355;
   var toppozition=containerPosition.top; 
   var bottomposition=toppozition+300;
   var  documentwidth=$(document).width();
    if (rightposition>documentwidth){
        leftpozition=leftpozition-(rightposition-documentwidth);
    } 
    element.css({ top: containerPosition.top+20 , left: leftpozition  });
    */
}
var showPopUp=function (parent,element){
	//SetTopAndLeft(parent,element);
	SetTopAndLeft();
	
	select_item=-1;
	//element.children().expire();
	element.css("display","");
};
var hidePopUp=function (element){
	element.empty();	
	element.css("display","none");
};
	
$(document).click(function (event) { 
	      $('.padding_div').css("display","none"); 
});
	
var select_element=function (element){
		$('.div_item').removeClass('active');
		element.addClass('active'); 
};
	




var hidden_town_id=$("<input type='hidden'/>").attr('id',town_id+"-id").insertAfter(object_input_town);


var getInputTownValue= function (){
	var out= object_input_town.attr("value");
	return out;
}; 
		  
var setInputTownValue=function (value){   object_input_town.attr( "value", value);}; 
var setValue=function (element,value){ element.attr( "value", value);};
 

var _mouseout=function (e) {
	$(this).removeClass('active');
	select_item=-1;
};
var _keydown=function (e) {
	
	if(e.keyCode == 38||e.keyCode ==40||e.keyCode ==13){
	   if(e.keyCode == 38){
	      select_item--;
	      if (select_item<0)   select_item=count_all_item-1;
	        select_element($("#"+town_id+"_padding_div_item"+select_item));
	   	}
		if(e.keyCode == 40){
		  	select_item++;
		    if (select_item>=count_all_item)   select_item=0; 
		       select_element($("#"+town_id+"_padding_div_item"+select_item));
		    }
		if(e.keyCode == 13) {
		    if(select_item!=-1){
		       $("#"+town_id+"_padding_div_item"+select_item).click();
		       hidePopUp(object_popup);
	        }
		}  
		return false;  	  
	}    
};

var timer; 
var bizi=false;

var displayTip= function(element){
	 clearTimeout (timer);
	 if(getInputTownValue().length>1){ 
	
	 if(element.attr('id')==town_id) refresh(urlGetTown,getInputTownValue() ); 
	 }
	 else {hidePopUp(object_popup);	}
	 
};

var _keyup=function (e) {
	var element=$(this);
	var text=$(this).attr( "value" ); 
	if(e.keyCode == 37||e.keyCode ==38||e.keyCode ==39||e.keyCode ==40||e.keyCode ==13){}
	 else{
			if (timer) clearTimeout(timer);
			timer = setTimeout(function(){displayTip(element);}, 500);
			//var timer = setTimeout(function(){displayTip(element);}, 500);	
			//displayTip(element);
		};  
		
	 };

	 

	 
var refresh=function(urlGet, town){
	
	object_input_town.addClass("loading");
	//object_popup.append(progress);
	hidePopUp(object_popup);
	
	$.getJSON(urlGet,
		{'town': town, 'hash':Math.random()},
		function(data){
			object_input_town.removeClass("loading");
			var count=0;    	
			$.each(data.countris, function(i,country){
				count++;    
				var p=  $("<p class='div_item' >"+(country.town_name!=null?country.town_name+"; ":"")+(country.country_name!=null?""+country.country_name:"")+
		    	    (country.area_name!=null?"; "+country.area_name:"")+"</p>");
					p.attr('id',  town_id+"_padding_div_item"+i);
					var div_item=$("#"+town_id+"_padding_div_item"+i);	
					
					//var events = div_item.data("events");
					//for (var type in events) {
						//if (type == evt) {
							//div_item.unbind(evt);
							//div_item.expire();
							//alert(type);
						//}
					//}
					
					
					if(div_item!=null)	div_item.expire();
			    	object_popup.append(p); 
			    	div_item.livequery("mouseover",function () {	
			    		$(this).addClass('active'); 
			    		select_item=i;
			    	});  
			    	div_item.livequery("mouseout", _mouseout);
			    	div_item.livequery("click",function () {
		    	    	//alert("");
						if(country.town_name!=null){  setInputTownValue((country.town_name!=null?country.town_name+"; ":"")+(country.country_name!=null?""+country.country_name:"")+
					    	    (country.area_name!=null?"; "+country.area_name:"")); setValue(hidden_town_id,country.town_id);}else setInputTownValue(""); 
							    	});	 
						
			    	});
			    	count_all_item=count;
			    	if (count_all_item>0) showPopUp(object_input_town,object_popup);    
		});
};


	
var _keydown=function (e) {
			if(e.keyCode == 38||e.keyCode ==40||e.keyCode ==13){
			   if(e.keyCode == 38){
			      select_item--;
			      if (select_item<0)   select_item=count_all_item-1;
			        select_element($("#"+town_id+"_padding_div_item"+select_item));
			   	}
				if(e.keyCode == 40){
				  	select_item++;
				    if (select_item>=count_all_item)   select_item=0; 
				       select_element($("#"+town_id+"_padding_div_item"+select_item));
				    }
				if(e.keyCode == 13) {
				    if(select_item!=-1){
				       $("#"+town_id+"_padding_div_item"+select_item).click();
				       hidePopUp(object_popup);
			        }
				}  
				return false;  	  
			}    	
};

object_input_town.bind("keyup",  _keyup);

object_input_town.bind("keydown", _keydown);


};