// Näppäimistöllä tehtyihin valintoihin liittyviä metodeja

// **************** OSASTOVALINTA ********************

// Näppäimistölla voi myös tehdä valintoja, näissä "typed" metodeissa käsitellään niitä.


// mainCategoryn valinta, 8 = tab, 32 = , 39 = ', 13 = enter
function frm_parent_typed(event)
{
	 var keyCode = window.event ? event.keyCode : event.which;
	 
	 if(keyCode != 13 && keyCode != 32 && keyCode != 39)
	 {	
	 	update_frm_a();		
		var tOpt = new Option("-- Valitse --", "", false, false);		
		document.advancedSearcher.subCategory.options.add(tOpt,0);
		return false;
	}
	else
	{
		frm_parent_selected(event);
		return true;
	}
}

function frm_selection_typed(event)
{
	 var keyCode = window.event ? event.keyCode : event.which;
	 
	 if(keyCode == 13 || keyCode == 32 || keyCode == 37)
	 {	
	 	//document.advancedSearcher.mainCategory.selectedIndex = document.advancedSearcher.mainCategory.selectedIndex - 1;
	 	frm_selection_selected(event);
		//document.advancedSearcher.mainCategory.selectedIndex = document.advancedSearcher.mainCategory.selectedIndex + 1;
		return true;
	}
	
	return false;
}

function mozSelect(i)
{
	document.advancedSearcher.subCategory.selectedIndex = i;
}

function frm_child_typed(event)
{	
	//var e = event ? event : window.event;
	//var keyCode = (typeof(e.keyCode) == 'number') ? e.keyCode : ((typeof(e.which) == 'number') ? e.which : ((typeof(e.charCode) == 'number') ? e.charCode : null));
	//event = e;	 		
	
	var keyCode = window.event ? event.keyCode : event.which;
	if(event.preventDefault) 
	{			
		//event.preventDefault();
		//event.stopPropagation();
	}
	
	 if(keyCode == 37 || keyCode == 40 || keyCode == 38 )
	 {	 					
		return 1;
	 }
	 else if(keyCode != 13 && keyCode != 32 && keyCode != 39 && keyCode != 16 && keyCode != 9)
	 {
	 		//if(event.preventDefault) 
			//{			
			//	event.preventDefault();
			//	event.stopPropagation();
			//}
			//event.cancelBubble = true;
			event.returnvalue = false;
			
	 		frm_keyPressed = true;
			
	  		var agt=navigator.userAgent.toLowerCase();
			var sndr = document.advancedSearcher.subCategory;
			var reChar = new RegExp('^'+String.fromCharCode(keyCode)+'.*','i');
			var reBreakedChar = new RegExp('^[\\s|\\xa0]*'+String.fromCharCode(keyCode)+'.*','i');
			var selectedIndex = sndr.selectedIndex;
					 
					 if(selectedIndex < 0)
					 {
					 	//sndr.selectedIndex = 1;						
					 	selectedIndex = 0;
					 }
						
                var continueIteration = true;
                var firstMatch = -1;
                var matchFound = false;         
                            
                for(var i = 1 ; i < sndr.options.length ; i++) {
                    if((sndr.options[i].text.match(reBreakedChar))) { 
                      
                        if(firstMatch == -1)
                            firstMatch = i;
                            								
                        if(i <= selectedIndex && ( sndr.options[selectedIndex].text.match(reBreakedChar)))
								{
                            continueIteration = true;
								}
                        else
								{																		
									continueIteration = false;
								}
                        
                        if(!continueIteration) {									
                            sndr.selectedIndex = i;
									 if(navigator.userAgent.toLowerCase().indexOf("msie") == -1)
									 {									 
									 	setTimeout("mozSelect("+i+")",10);
									}
										
                            matchFound = true;
                            break;
                        }
                    }                    
                }                    
                
                if(!matchFound && firstMatch != -1)      
                    sndr.selectedIndex = firstMatch;									  
						  			            					
				return 0;
	}
	else
	{			
		frm_child_selected(event);		
	}
	return 2;
}

// **************** ALUEVALINTA ********************


// Näppäimistölla voi myös tehdä valintoja, näissä "typed" metodeissa käsitellään niitä.
// provincen valinta, 8 = tab, 32 = , 39 = ', 13 = enter
function frm2_parent_typed(event)
{
	 var keyCode = window.event ? event.keyCode : event.which;
	 
	 if(keyCode != 13 && keyCode != 32 && keyCode != 39)
	 {	
	 	update_frm2_a();		
		var tOpt = new Option("-- Valitse --", "", false, false);		
		document.advancedSearcher.municipality.options.add(tOpt,0);
		return false;
	}
	else
	{
		frm2_parent_selected(event);
		return true;
	}
}

function frm2_selection_typed(event)
{
	 var keyCode = window.event ? event.keyCode : event.which;
	 
	 if(keyCode == 13 || keyCode == 32 || keyCode == 37)
	 {	
	 	//document.advancedSearcher.province.selectedIndex = document.advancedSearcher.province.selectedIndex - 1;
	 	frm2_selection_selected(event);
		//document.advancedSearcher.province.selectedIndex = document.advancedSearcher.province.selectedIndex + 1;
		return true;
	}
	
	return false;
}

function mozSelect(i)
{
	document.advancedSearcher.municipality.selectedIndex = i;
}

function frm2_child_typed(event)
{	
	//var e = event ? event : window.event;
	//var keyCode = (typeof(e.keyCode) == 'number') ? e.keyCode : ((typeof(e.which) == 'number') ? e.which : ((typeof(e.charCode) == 'number') ? e.charCode : null));
	//event = e;	 		
	
	var keyCode = window.event ? event.keyCode : event.which;
	if(event.preventDefault) 
	{			
		//event.preventDefault();
		//event.stopPropagation();
	}
	
	 if(keyCode == 37 || keyCode == 40 || keyCode == 38 )
	 {	 					
		return 1;
	 }
	 else if(keyCode != 13 && keyCode != 32 && keyCode != 39 && keyCode != 16 && keyCode != 9)
	 {
	 		//if(event.preventDefault) 
			//{			
			//	event.preventDefault();
			//	event.stopPropagation();
			//}
			//event.cancelBubble = true;
			event.returnvalue = false;
			
	 		frm2_keyPressed = true;
			
	  		var agt=navigator.userAgent.toLowerCase();
			var sndr = document.advancedSearcher.municipality;
			var reChar = new RegExp('^'+String.fromCharCode(keyCode)+'.*','i');
			var reBreakedChar = new RegExp('^[\\s|\\xa0]*'+String.fromCharCode(keyCode)+'.*','i');
			var selectedIndex = sndr.selectedIndex;
					 
					 if(selectedIndex < 0)
					 {
					 	//sndr.selectedIndex = 1;						
					 	selectedIndex = 0;
					 }
						
                var continueIteration = true;
                var firstMatch = -1;
                var matchFound = false;         
                            
                for(var i = 1 ; i < sndr.options.length ; i++) {
                    if((sndr.options[i].text.match(reBreakedChar))) { 
                      
                        if(firstMatch == -1)
                            firstMatch = i;
                            								
                        if(i <= selectedIndex && ( sndr.options[selectedIndex].text.match(reBreakedChar)))
								{
                            continueIteration = true;
								}
                        else
								{																		
									continueIteration = false;
								}
                        
                        if(!continueIteration) {									
                            sndr.selectedIndex = i;
									 if(navigator.userAgent.toLowerCase().indexOf("msie") == -1)
									 {									 
									 	setTimeout("mozSelect("+i+")",10);
									}
										
                            matchFound = true;
                            break;
                        }
                    }                    
                }                    
                
                if(!matchFound && firstMatch != -1)      
                    sndr.selectedIndex = firstMatch;									  
						  			            					
				return 0;
	}
	else
	{			
		frm2_child_selected(event);		
	}
	return 2;
}




// **************** AUTON MERKIN / MALLIN VALINTA ********************


// Näppäimistölla voi myös tehdä valintoja, näissä "typed" metodeissa käsitellään niitä.
// maken valinta, 8 = tab, 32 = , 39 = ', 13 = enter
function frm3_parent_typed(event)
{
	 var keyCode = window.event ? event.keyCode : event.which;
	 
	 if(keyCode != 13 && keyCode != 32 && keyCode != 39)
	 {	
	 	update_frm3_a();		
		var tOpt = new Option("-- Valitse --", "", false, false);		
		document.advancedSearcher.model.options.add(tOpt,0);
		return false;
	}
	else
	{
		frm3_parent_selected(event);
		return true;
	}
}

function frm3_selection_typed(event)
{
	 var keyCode = window.event ? event.keyCode : event.which;
	 
	 if(keyCode == 13 || keyCode == 32 || keyCode == 37)
	 {	
	 	//document.advancedSearcher.make.selectedIndex = document.advancedSearcher.make.selectedIndex - 1;
	 	frm3_selection_selected(event);
		//document.advancedSearcher.make.selectedIndex = document.advancedSearcher.make.selectedIndex + 1;
		return true;
	}
	
	return false;
}

function mozSelect(i)
{
	document.advancedSearcher.model.selectedIndex = i;
}

function frm3_child_typed(event)
{	
	//var e = event ? event : window.event;
	//var keyCode = (typeof(e.keyCode) == 'number') ? e.keyCode : ((typeof(e.which) == 'number') ? e.which : ((typeof(e.charCode) == 'number') ? e.charCode : null));
	//event = e;	 		
	
	var keyCode = window.event ? event.keyCode : event.which;
	if(event.preventDefault) 
	{			
		//event.preventDefault();
		//event.stopPropagation();
	}
	
	 if(keyCode == 37 || keyCode == 40 || keyCode == 38 )
	 {	 					
		return 1;
	 }
	 else if(keyCode != 13 && keyCode != 32 && keyCode != 39 && keyCode != 16 && keyCode != 9)
	 {
	 		//if(event.preventDefault) 
			//{			
			//	event.preventDefault();
			//	event.stopPropagation();
			//}
			//event.cancelBubble = true;
			event.returnvalue = false;
			
	 		frm3_keyPressed = true;
			
	  		var agt=navigator.userAgent.toLowerCase();
			var sndr = document.advancedSearcher.model;
			var reChar = new RegExp('^'+String.fromCharCode(keyCode)+'.*','i');
			var reBreakedChar = new RegExp('^[\\s|\\xa0]*'+String.fromCharCode(keyCode)+'.*','i');
			var selectedIndex = sndr.selectedIndex;
					 
					 if(selectedIndex < 0)
					 {
					 	//sndr.selectedIndex = 1;						
					 	selectedIndex = 0;
					 }
						
                var continueIteration = true;
                var firstMatch = -1;
                var matchFound = false;         
                            
                for(var i = 1 ; i < sndr.options.length ; i++) {
                    if((sndr.options[i].text.match(reBreakedChar))) { 
                      
                        if(firstMatch == -1)
                            firstMatch = i;
                            								
                        if(i <= selectedIndex && ( sndr.options[selectedIndex].text.match(reBreakedChar)))
								{
                            continueIteration = true;
								}
                        else
								{																		
									continueIteration = false;
								}
                        
                        if(!continueIteration) {									
                            sndr.selectedIndex = i;
									 if(navigator.userAgent.toLowerCase().indexOf("msie") == -1)
									 {									 
									 	setTimeout("mozSelect("+i+")",10);
									}
										
                            matchFound = true;
                            break;
                        }
                    }                    
                }                    
                
                if(!matchFound && firstMatch != -1)      
                    sndr.selectedIndex = firstMatch;									  
						  			            					
				return 0;
	}
	else
	{			
		frm3_child_selected(event);		
	}
	return 2;
}
