


function dropdownMulti(contain, dataName,listName,returnName,selected,listTitle,typeDropdown)
{
	this.contain 			= 	null;
	this.dataName 			= 	null;
	this.listName 			= 	null;
	this.returnName 		= 	null;
	this.selected 			= 	null;
	this.listTitle 			= 	null;
	this.typeDropdown 		= 	null;
	this.data 				= 	null;
	this.className			=	"dropdown";
	this.hiddenNode			=	0;
	this.selectedlDefault	=	"- Tất cả -";
	

	this.initialize		=	function(contain,dataName,listName,returnName,typeDropdown,selected,listTitle)
	{
		this.typeDropdown 	= 	typeDropdown;
		this.contain		=	document.getElementById(contain);
		this.dataName 		= 	dataName;
		this.listName 		= 	listName;
		this.returnName 	= 	returnName;
		this.selected 		= 	selected;
		this.listTitle 		= 	listTitle;
		this.data			=	eval(this.dataName );	
		
		
		
		if (typeDropdown == 1)
		{
			this.selectedlDefault  = "- Chọn một -"
		}
		
		this.setupSelect(listName,returnName);
		this.resetAll(selected); 
	}
	
	this.getHandle		=	function(data)
	{
		
		var rs;
		if(rs =  eval(data) )
		{
			return rs
		}
		return false
	}
	
	this.setData		=	function(global,data,id,selected)
	{
		if(!id) return;
		var slen				=	id.length
		var sl					=	(selected) ? selected:id.value
		
		var j 					= 	0;
		var is_sl;
		var hiddenNode			=	global.hiddenNode;
		var	selectedlDefault	= 	global.selectedlDefault
		var option;
		var	text;
		 //clear curent select
		while(slen)
		{
			id.options[slen-1] = null
			slen	=	id.length
		}
		
		if( data.constructor==String ) return 0;
		
		option			= 	document.createElement("option")
		option.value	=  	-1
		text			=	document.createTextNode(selectedlDefault) 
		option.appendChild(text)
		id.appendChild(option)
		
		//id[j++]=new Option(selectedlDefault, -1, false,false) 
		//alert(sl)
		for(var i in data)
		{
			is_sl = (sl==i) ? true:false;
			
			if( data[i].constructor==Object ) 
			{
				option			= 	document.createElement("option")
				option.value	=  	i
				text			=	document.createTextNode(data[i]['n']) 
				option.appendChild(text)
				id.appendChild(option)
				
				if (is_sl)
				{
					option.selected = true;
				}
				
				j = 1 
			}
			else
			{
				if(i !='n')
				{
					option			= 	document.createElement("option")
					option.value	=  	i
					text			=	document .createTextNode(data[i]) 
					option.appendChild(text)
					id.appendChild(option)
					if (is_sl)
					{
						option.selected = true;
					}	
					j = 1
				}
			}
			
			if (hiddenNode && is_sl)
			{
				hiddenNode.value = i
			}
				
		}
		
		return (j>0) ? 1:0;
	}
	
	this.getParentValue	=	function(global,level)
	{
	
		var contain				=	global.contain;  
		var select				=	contain.getElementsByTagName("select");
		if ( select && select[level-2] )
		{
			return (select[level-2].value)
		}
	}
	
	this.setupSelect	=	function(array,returnName)
	{
		if (this.contain != null)
		{
			var global 		= 	this;
			var len			=	array.length;
			var selectNode;	
			var div;
			var lastId;
			if(returnName)
			{
				hiddenNode			= 	document.createElement("input") 
				this.hiddenNode		=	hiddenNode
				hiddenNode.type		=	"hidden"
				hiddenNode.name 	=	returnName
				hiddenNode.id		=	returnName
				hiddenNode.value	=	-1;
				this.contain.appendChild(hiddenNode)
			}
		}
			
		for(	var i = 0; i< len ;i++	)
		{
			selectNode  			= 	document.createElement("select") 
										selectNode.setAttribute("NAME",array[i])
			div						=	document.createElement("div") 
			div.style.margin		=	"5" 
			selectNode.style.width	=	"240";
			selectNode.className	=	"fieldselect";
			selectNode.id			=	(i+1)
			span					=	document.createElement("span")
			span2  					= 	document.createElement("span") 
			
			span2.appendChild(selectNode)
			
			if (this.listTitle)
			{
				if (this.listTitle[i])
				{	  
				  span.innerHTML = "<b> "+ this.listTitle[i] + ":<\/b>"   
				}
			}
			else
			{
				span.innerHTML = "<b>Cấp "+ (i+1) + ":<\/b>&nbsp;" 
			}
			
			div.appendChild(span)
			div.appendChild(span2)
			
			this.contain.appendChild(div)  
			
			selectNode.onchange = function()
			{	
				if ( this.id ){				
					global.resetLevel(global,this.id,"-1")				
					if(returnName)
					{
						if ( this.value == -1 &&  Number(this.id) > 1 )
						{
							hiddenNode.value = global.getParentValue(global,this.id)
						}
						else 
						{
							hiddenNode.value	=	this.value;
						}
					}
					
				}
			}
			
		}
	
	}
	
	this.resetLevel		=	function(global,level,selected)
	{
		var contain				=	global.contain;  
		var select				=	contain.getElementsByTagName("select");
		var len					=	select.length;
		var source				=	global.dataName; 
		var getHandle			=	global.getHandle; 
		var sourceHandle		=	null;
		var set               	=	0; 
		var setData				=	global.setData; 
		var	resetLevel			= 	global.resetLevel;
		
		
		
		for(var i=0 ; i<level ; i++)
		{
			source += "["+ select[i].value +"]";
			
			if ( !select[i].value )
			{
				return resetLevel(global,(i),selected);
			}
			
			if ( getHandle(source) == false)
			{
				return resetLevel(global,(i),selected);
			}
			select[i].style.display = ""
			select[i].parentNode.parentNode.style.display = ""
		}
		
		if( select[i] ){
			if (sourceHandle = getHandle(source))
			{
				set = setData(global,sourceHandle,select[i],selected);
				select[i].style.display = ""
				select[i].parentNode.parentNode.style.display = "" 
			}
		}
		
		var s =  ( Number(level) + Number(set) ); 
		
		while( s < len )
		{
			if(select[s]){
				select[s].style.display = "none"
				select[s].parentNode.parentNode.style.display = "none"  
			} 	
			s++;
		}
	}
	
	this.resetAll		=	function(array)
	{
		if(!array) array = new Array();
		
		if ( this.contain != null )
		{
			var contain		=	this.contain;
			var select		=	contain.getElementsByTagName("select");
			var len			=	select.length;
			
			
			var	selected;
			
			for ( var i=0 ; i<len ; i++ )
			{
				
				selected	=	(array[i]) ? array[i] :""; 				
				this.resetLevel(this,i,selected)
			}
		}	
		
	}
	this.initialize(contain,dataName,listName,returnName,typeDropdown,selected,listTitle);
}
