// ---- funktioner för tangentbord ----

var keyboard_active=0;
var keyboard_click=[];
var keyboard_onedit=[];

function keyboard_show(show){
	// effekt: sätter inställning om att visa tangentbord eller ej till
	//         show, och flyttar sen fokus till ev tidigare input

	keyboard_active=show;
	prev=focus_history_prev();
	//if(!prev){
	//	// sätter på godtyckligt input-element
	//	var match=find_below(document,"input","type","text");
	//	prev=match[0];
	//};
	if(prev){
		prev.focus();
	};
};

function keyboard_onedit_register(input,process){
	// effekt: kör process när tangentbord ändrat input

	keyboard_onedit[input]=process;
};

function keyboard_focus(input){
	// effekt: slår på tangentbord för alla input om tangentbord är aktiverat

	// gör tangentbord bara om funktionen är påslagen
	if(!keyboard_active) return;

	// ta bort existerande
	keyboard_delete(input);
	
	var c=document.createElement('div');
	c.innerHTML='<div class="tyda_keyboard_top"><div class="tyda_keyboard"></div></div>';
	var node=c.firstChild;

	keys=['å','ä','ö','Å','Ä','Ö']
	for(var i=0;i < keys.length;i++){
		var c=document.createElement('div');
		c.innerHTML='<a href="#">'+keys[i]+'</a>';
		var a=c.firstChild;
		a.onmousedown=function(){
			keyboard_click[input]=1;
		};
		a.onmouseup=function(){
			delete(keyboard_click[input]);
		};
		a.onclick=function(){
			insert_selection(input,this.firstChild.nodeValue);
			input.focus();
			// kör registrerad onedit
			if(keyboard_onedit[input]) keyboard_onedit[input]();
			return false;
		};
		node.firstChild.appendChild(a);
	};
	
	// lägger till tangentbord
	var matches=find_below(input.parentNode,'div','class','tyda_keyboard_location');
	if(matches[0]){
		// fanns förberedd plats för tangentbord
		matches[0].appendChild(node);
	}
	else{
		// i övriga fall ska tangentbord infogas efter input
		parent=input.parentNode;
		if(input.nextSibling){
			parent.insertBefore(node,input.nextSibling);
		}
		else{
			parent.appendChild(node);
		};
	};
};

function keyboard_blur(input){
	// effekt: slår av tangentbord för input nu eller vid mus-släpp

	// stäng inte om tangentbordet håller på att klickas på
	if(keyboard_click[input]) return;
	
	// stäng senare (vid mus-upp) om något annat klickas på
	if(mouse_down()){
		// registrera funktion som kör en gång, sen avregistrerar sig
		add_listener(document,'mouseup',function(){
			keyboard_delete(input);
			remove_listener(document,'mouseup',arguments.callee);
		});
		return;		
	};

	keyboard_delete(input);
};

function keyboard_delete(input){
	// effekt: slår av tangentbord för input

	var matches=find_below(input.parentNode,'div','class','tyda_keyboard_top');
	for(var i=0;i < matches.length;i++){
		parent=matches[i].parentNode;
		parent.removeChild(matches[i]);
	};
};
