var target_box_parent_name="products_list00";
var target_box_name="products_list01";
var target_selection_name="products_list02";
var target_input_name="product_text01";
var target_input;
var target_box_max_height;
var category_hash=new Object();

function normalize_input(target_input){
	return target_input.value.toUpperCase();
}
function set_value(target_box,target_selection,targetinput,avalue){
		if( document.getElementById ){
			if( target_selection ){
				if( target_selection.selectedIndex >=0 ){
					if( target_selection.options[target_selection.selectedIndex] ){
						targetinput.value = target_selection.options[target_selection.selectedIndex].value;
					}
				}
			}else{
				targetinput.value=avalue;
			}
			close_product_list(target_box,target_selection );
		}
}
function getOriginalElement(target_box){
	if(target_box){
		return target_box.firstChild;
	}else{
		return "";
	}
}
function list_product(target_box,selection_name,targetinput){
	if( document.getElementById ){
		if(targetinput.value){
			var target_value=normalize_input(targetinput);
			var list_array=list_target_array( target_value );
			if(list_array && list_array.length>0){
				var selection = open_product_list(target_box,selection_name,targetinput);
				var opts;
				if (selection){
					opts=selection.options
				}else{
					opts=target_box.childNodes;
				}
				var option_length=opts.length;
				for(var i=0;i<list_array.length;i++){
					var avalue=list_array[i];
					var newopt;
					if (opts[i] ) {
						if(selection){
							opts[i].value=avalue;
						}else{
							opts[i].removeChild( opts[i].firstChild);
							var txnode=document.createTextNode(avalue);
							opts[i].appendChild(txnode);
						}
						newopt=opts[i];
					}else{
						if(selection){
							newopt = document.createElement('option');
							newopt.value=avalue;
							newopt.text=avalue;
							newopt.setAttribute("class","select_option");
							selection.appendChild(newopt);
						}else{
							var origin=getOriginalElement(target_box);
							newopt=origin;
							if(i > 0 ){
								//var newopt = document.createElement('a');
								newopt=origin.cloneNode(false);
								var txnode=document.createTextNode(avalue);
								newopt.appendChild(txnode);
								target_box.appendChild(newopt);
							}
							//newopt.setAttribute("class","line");
							//newopt.setAttribute("href","javascript:void(0)");
							//newopt.style.backgroundImage="url(/support/img/common/dotted.gif)";
							//newopt.style.backgroundRepeat="repeat-x";
						}
					}
					newopt.onclick=function(){
						var target_input=document.getElementById(window.target_input_name);
						var target_box=document.getElementById(window.target_box_name);
						var target_selection=document.getElementById(window.target_selection_name);
						var avalue=this.firstChild.nodeValue;
						window.set_value(target_box,"",target_input,avalue);
						return false;
					}
				}
				if(list_array.length < opts.length){
					var option_length=opts.length;
					for(var i=option_length-1; i > list_array.length-1 ;i--){
						if(i>0){
							if(selection){
								selection.removeChild(opts[i]);
							}else{
								target_box.removeChild(opts[i]);
							}
						}
					}
				}
				if( list_array.length > 10 ){
					target_box.style.height=window.target_box_max_height;
				}else{
					target_box.style.height="auto";
				}
			}
		}else{
			var selection=document.getElementById( selection_name );
			if(selection){
				close_product_list(target_box,selection );
			}else{
				close_product_list(target_box,"" );
			}
		}
	}	
}
function open_product_list(target_box,selection_name,target_input){
	var selecton="";
	if( document.getElementById){
		//alert("x");
		var selection=create_select(target_box,selection_name,target_input);
		//target_box.style.height="100%";
		//var target_box2=document.getElementById(window.target_box_name);
		target_box.style.display="block";
		target_box.style.visibility="visible";
		//target_list.style.overflow="auto";
	}
	return selection;
}
function close_product_list(target_box,target_selection ){
	
	if( document.getElementById ){
		//var selection=document.getElementById( selection_name );
		//var target_list=document.getElementById("products_list02");
		//var target_box2=document.getElementById(window.target_box_name);
		if(target_selection){
			target_box.removeChild( target_selection );
		}
		//target_box.style.height="1%";
		if(target_box){
			target_box.style.visibility="hidden";
			target_box.style.display="none";
		}
	}
}
function create_select(target_box,child_name,target_input){
		var target_selection=document.getElementById( child_name );
		//selectタグの作成
		
		if( ! target_selection){
			//alert("create select");
			/*
			target_selection=document.createElement("select");
			target_selection.id=child_name;
			target_selection.setAttribute("size","10");
			target_selection.setAttribute("name","pl");
			target_selection.setAttribute("class","select_list");
			target_box.appendChild( target_selection );
			target_selection.onclick=function(){
				var target_input=document.getElementById(window.target_input_name);
				var target_box=document.getElementById(window.target_box_name);
				var target_selection=document.getElementById(window.target_selection_name);
				window.set_value(target_box,target_selection,target_input);
			}
			*/
			return target_selection;
		}else{
			return "";
		}
}
function preLoadAction(){
	//var xmlttp=createXMLHttpRequest();
	//loadFile( null , "get" , "x.csv", true, onLoadAction )
	var url = "/xml/products.xml";
	if(window.ActiveXObject || window.XMLHttpRequest){
		var http = new JKL.ParseXML( url );
		var data = http.parse();
		//document.write( data["products"]["product"]["name"] );   // ["〜"] で連想配列にアクセス
		//document.write( data.products.product[0].name );
		var plen= data.products.product.length;
		var x_products_array=new Array();
		for(var i=0;i<plen;i++){
			var aname=data.products.product[i].name;
			//var acategory=data.products.product[i].category;
			//category_hash[name]=acategory;
			//var vp =aname + ","+ "category";
			x_products_array.push(aname);

			//alert( "array[" + i + "]=" + x_products_array[i] );
		}
		//alert( x_products_array.join(","));
		init_product_array(x_products_array );
	}
}

function onLoadAction(){
	if( getPreferredStyleSheet && setActiveStyleSheet){
		var cookie = readCookie("style");
		var atitle = cookie ? cookie : getPreferredStyleSheet();
		setActiveStyleSheet(atitle);
	}

	if( document.getElementById && (window.ActiveXObject || window.XMLHttpRequest) ){;
		
		var target_box=document.getElementById(window.target_box_name);
		//
		var target_input=document.getElementById(window.target_input_name);
		var target_selection=create_select(target_box,window.target_selection_name,target_input);

		target_input.onkeyup=function(){
			var target_box=document.getElementById(window.target_box_name);
			var target_input=document.getElementById(window.target_input_name);
			window.list_product(target_box,window.target_selection_name,target_input);
			
		}
		//
		target_input.onfocus=function(){
			var target_box=document.getElementById(window.target_box_name);
			var target_input=document.getElementById(window.target_input_name);
			//alert(target_input.value);
			window.list_product(target_box,window.target_selection_name,target_input);
		}
		window.target_box_max_height = target_box.style.height;
		close_product_list(target_box,target_selection );
	}
}
preLoadAction();
