/*
var sugestie = new Array();//lista wyrazów - sugestii
var wyraz;
var key;
var position = -1;
var zgaszona;
var sugestie_div;

var city_input_name = "city_input";//pole gdzie jest wypisywany tekst
var sugestie_div_name = "sugestie_div";//element div, który działa jako tło pod listę podpowiedzi
var sugestie_div_rel_name = "sugestie_div_rel";//element div, który jest umiejscowiony relatywnie i zawiera w sobie umiejscowiony absolutnie element sugestie_div.
var sugestie_div_passive_name = "sugestie_div_passive";//element div, który działa jako tło pod listę podpowiedzi

var sug_elem_class = "sug_elem_class";
var sug_active_class = "sug_active_class";
*/
//<!--Porównanie wyrazów - zdarzenia oraz logika -->

function okresl_sugestie(){
	sugestie = [];
	var j=0;
	for(var i=0;i<lista.length;i++){
		if(wyraz_pasuje(lista[i])){
			sugestie[j] = lista[i];
			j++;
		}
	}
	wyswietl_sugestie();
}

function wyczysc(){
	while (sugestie_div.hasChildNodes()){
		noten=sugestie_div.firstChild;
		sugestie_div.removeChild(noten);
	}
	sugestie_div.className = sugestie_div_passive_name;
	position = -1;
}

function dodaj_wyraz(wyraz){
	var sp = document.createElement("div");
	sp.onmouseover = mouseOver;
	sp.onclick = mouseClick;
	sp.className = sug_elem_class;
	sp.appendChild(document.createTextNode(wyraz));
	sugestie_div.appendChild(sp);
}

function wyswietl_sugestie(){
	wyczysc();
	sugestie_div.className = sugestie_div_name;
	for(var j=0;j<sugestie.length;j++){
		dodaj_wyraz(sugestie[j]);
	}
	
	if(sugestie.length==0){
		wyczysc();
	}
}

function wyraz_pasuje(wzlisty){

	if(wyraz.length>0){
		sub = wzlisty.substring(0,wyraz.length);
	
		if(sub.toLowerCase() == wyraz.toLowerCase()){
			return true;
		}else{
			return false;
		}	
	}
	else
		return false;
}


//Uwaga - ta funkcja jest przypisana do zdarzeń.
function pobierz_wyraz(){
	wyraz = document.getElementById(city_input_name).value;
	okresl_sugestie();
}


//<!--Prezentacja jako drop down list-->
function getX(e) {
    var x = 0;                
    while(e) {                
        x = x + e.offsetLeft; 
        e = e.offsetParent;   
    }
    return x;                 
}


function getY(element) {
    var y = 0;
    for(var e = element; e; e = e.offsetParent) 
        y = y + e.offsetTop;                       

    /*
    for(e = element.parentNode; e && e != document.body; e = e.parentNode)
        if (e.scrollTop) y -= e.scrollTop;
        */  
    return y;
}

function findPosX(obj)
{
  var curleft = 0;
  if(obj.offsetParent)
      while(1) 
      {
        curleft += obj.offsetLeft;
        if(!obj.offsetParent)
          break;
        obj = obj.offsetParent;
      }
  else if(obj.x)
      curleft += obj.x;
  return curleft;
}

function findPosY(obj)
{
  var curtop = 0;
  if(obj.offsetParent)
      while(1)
      {
        curtop += obj.offsetTop;
        if(!obj.offsetParent)
          break;
        obj = obj.offsetParent;
      }
  else if(obj.y)
      curtop += obj.y;
  return curtop;
}


function findPosX2(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
		} while (obj = obj.offsetParent);
	}
	return curleft;
}

function findPosY2(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {  
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return curtop;
}

function rysuj_tlo_listy(type){
	var city_input = document.getElementById(city_input_name);
	sugestie_div = document.getElementById(sugestie_div_name);
	var sugestie_div_rel = document.getElementById(sugestie_div_rel_name);
	sugestie_div_rel.style.position = "absolute";
	sugestie_div_rel.style.zIndex = "100";//IE - Internet Explorer 7 problem
	
	
	if(type="IE"){
		sugestie_div_rel.style.top =  (findPosY2(city_input) + 20)+"px";
		sugestie_div_rel.style.left = (findPosX2(city_input))+"px";
	}else 
	if(type=="without_parents"){
		sugestie_div_rel.style.top =  (city_input.offsetTop + 20)+"px";
		sugestie_div_rel.style.left = (city_input.offsetLeft)+"px";
	}else if(type="with_parents"){
		sugestie_div_rel.style.top =  (findPosY2(city_input)+20)+"px";
		sugestie_div_rel.style.left = (findPosX2(city_input))+"px";
	}
}

//<!-- Inicjalizacja wszystkich funkcji -->

function init(type){
	document.getElementById(city_input_name).onkeydown = keyDownHandler;
	document.getElementById(city_input_name).onkeyup = keyHandler;//pobierz_wyraz;
	document.getElementById(city_input_name).onfocus = gainedFocus;
	document.getElementById(city_input_name).onclick = cityMouseClick;
	
	
	document.onclick = lostFocus;
	var browser=navigator.appName;
	
	if(browser=="Microsoft Internet Explorer"){
		rysuj_tlo_listy("IE");
	}else if(type=="without_parents"){
		rysuj_tlo_listy("without_parents");
	}else{
		rysuj_tlo_listy("with_parents");
	}
		
	position = -1;
	sugestie_div.className = sugestie_div_passive_name;
	
	
}



//<!-- żeby nie submitowało formularza, jak user wciśnie enter w polu miasta-->
function disableEnterKey(e)
{
     var key;

     if(window.event)
          key = window.event.keyCode;     //IE
     else
          key = e.which;     //firefox

     if(key == 13){
    	 if(zgaszona)
    		 return true;
    	 else
    		 return false;
     }
     else
          return true;
}


//<!-- keygetter i keyhandler -->
function keyHandler(event){
	if (!event && window.event) event = window.event;
	if (event) key = event.keyCode;
	else key = event.which;
	
	if (key == 40){ //Key down
		if(position<sugestie.length-1){
			if(zgaszona){
				zgaszona = false;
				pobierz_wyraz();
			}else{
				position += 1;
				setClass(position, sug_active_class);
				setClass(position-1, sug_elem_class);
			}
		}
	}else if(key == 38){//Key up
		if(position>0){
			position = position - 1;
			setClass(position, sug_active_class);
			setClass(position+1, sug_elem_class);
		}else if(position==0){
			position = position - 1;
			setClass(position+1, sug_elem_class);
			wyczysc();
			zgaszona = true;
		}else{
			wyczysc();
			zgaszona = true;
		}
	}else if(key == 27){//Esc	Tab
		wyczysc();
		zgaszona = true;
	}else if(key == 8){ // Backspace
		pobierz_wyraz();
		zgaszona = false;
	}else if(key == 13){//Enter
		if(position>=0){
			wybrany_wyraz();
			wyczysc();
			zgaszona = true;
		}else{
			wyczysc();
			zgaszona = true;
		}
	}else if((key>=60 && key<=90) || (key>=97&&key<=122) || (key==32) || (key==46)){ 
		pobierz_wyraz();
		zgaszona = false;
	}
}

//wyłączenie diva sugestii przy przejściu tabulatorem
function keyDownHandler(event){
	if (!event && window.event) event = window.event;
	if (event) key = event.keyCode;
	else key = event.which;
	
	if(key == 9){//Tab
		lostFocus();
	}	
}

function lostFocus(){
	wyczysc();
	zgaszona = true;
}

function gainedFocus(){
	zgaszona = true;
}

function wybrany_wyraz(){
	document.getElementById(city_input_name).value = sugestie_div.childNodes[position].firstChild.nodeValue;
}

function setColor (posi, color, forg){
	sugestie_div.childNodes[posi].style.background = color;
	sugestie_div.childNodes[posi].style.color = forg;
}

function setClass(posi, cssClass){
	sugestie_div.childNodes[posi].className = cssClass;
}


//Obsługa myszki
function mouseOver(){
	for (var j=0;j<sugestie.length;++j){
		setClass(j, sug_elem_class);
	}
		
	
	for(var i=0;i<sugestie.length;++i)
		if(this == sugestie_div.childNodes[i]){
			position = i;
		}
	
	this.className = sug_active_class;

}


function mouseClick(){
	document.getElementById(city_input_name).value = this.firstChild.nodeValue;
	wyczysc();
	zgaszona = true;
	position = -1;
}


var cityMouseClick = function(e){
	if(zgaszona){
		pobierz_wyraz();
		zgaszona = false;
		
		if(window.event)
			e = window.event;
		
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
		
	}else{
		wyczysc();
		zgaszona = true;
	}
}

function get_pos_test(event){
	if (!event && window.event) event = window.event;
	
	var targ;
	if (event.target) targ = event.target;
	else if (event.srcElement) targ = event.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;

	//alert(event.target.id);
	var ci = document.getElementById("city_input");
	var pox = findPosX(ci);
	var poy = findPosY(ci);
	var test_div = document.getElementById("test_test");

	var wyraz = "x: " + pox + " y: " + poy;
	test_div.appendChild(document.createTextNode(wyraz));
	
	
}
