
/*********************************************
			Combo Box Public funcs
/*********************************************/
var CurrentComboBox=null;

function ComboBox()
{
	//private objects
	this.options=new Array();
	
	//public params
	this.name="";
	this.disabled=false;

	//public methods
	this.innerHTML=ComboBox_ToString;
	this.draw=ComboBox_Draw;
	this.AddOption=ComboBox_AddOption;
}

function ComboBox_AddOption(text,value,selected)
{
	var Arr=this.options;
	
	var idx=Arr.length;
	Arr[idx]=new Array(3);
	Arr[idx][0]=text;
	Arr[idx][1]=value;
	Arr[idx][2]=selected;
	
	this.options=Arr;
}
function ComboBox_Draw()
{
	var str=this.innerHTML();
	document.write(str);
}
function ComboBox_ToString()
{
	var str="";
	
	var Name=this.name;
	var Disabled=(this.disabled)?"yes":"no";
	var Options=this.options;
	var SelectedText=GetSelectedOptionText(Options)
	var SelectedValue=GetSelectedOptionValue(Options)
	var Css=(this.disabled)?"clsComboBoxDisabled":"clsComboBox";

	str+="";
	str+="<span class='" + Css + "' ComboBox='yes' Name=\"" + Name + "\" id=\"" + Name + "_CBOX\" DisFunc='" + Disabled + "' onclick='ComboBox_Click(this)' onmouseover='ComboBox_Over(this)' onmouseout='ComboBox_Out(this)'>";
	str+="	<table border=0 cellpadding=0 cellspacing=0><tr>";
	str+="		<td class=clsComboBoxText id=\"" + Name + "_CBOX_TEXT\">" + SelectedText + "</td>";
	str+="		<td class=clsComboBoxArrow Item='Arrow'>&nbsp;</td>";
	str+="	</tr></table>";
		
	str+="	<input type=\"hidden\" id=\"" + Name + "\" name=\"" + Name + "\" value=\"" + SelectedValue + "\">";
	str+="</span>";
    
	str+=GetListOptions(Options,Name);
	
	
	return str;
}
/*********************************************
			Combo Box Public funcs
/*********************************************/



/*********************************************
			Combo Box Private Funcs
/*********************************************/
function GetListOptions(Arr,Name)
{
	var str="";
	str+="<table id=\"" + Name + "_CBOX_OPT_LIST\" class=\"clsOptionList\" cellpadding=0 cellspacing=2>";
	for(var i=0;i<Arr.length;i++)
	{
		var text	=Arr[i][0];
		var value	=Arr[i][1];
		var selected=Arr[i][2];

		str+="<tr><td name=\"" + Name + "_CBOX\" class='clsOptionListItem' onmouseover='OptionList_Over(this)' onmouseout='OptionList_Out(this)' onclick='OptionList_Click(this)' Value=\"" + value + "\">" + text + "</td></tr>";
	}
	str+="</table>";
	return str;
}
function GetSelectedOptionText(Arr)
{
	var idx=GetSelectedOptionIdx(Arr);
	return Arr[idx][0]; 
}
function GetSelectedOptionValue(Arr)
{
	var idx=GetSelectedOptionIdx(Arr);
	return Arr[idx][1]; 
}
function GetSelectedOptionIdx(Arr)
{
	for(var i=0;i<Arr.length;i++)
	{
		var text	=Arr[i][0];
		var value	=Arr[i][1];
		var selected=Arr[i][2];
		
		if(selected) return i;
	}
	return 0;
}
function IsListOpened(name)
{
    var o=document.getElementById(name);
    if(o)
        return (o.getAttribute("IsOpened")=="yes")?true:false;
    else
        return false;
}

/*********************************************
			Combo Box Private Funcs
/*********************************************/



/*********************************************
			Combo Box Events
/*********************************************/
function ComboBox_Click(cbox)
{
	if(cbox && cbox.DisFunc!="yes")
	{
	
	    if(IsListOpened(cbox.id))
	    {
	        cbox.className="clsComboBox";
		    ComboBoxOptionsHide(cbox.id);
	    }
	    else
	    {
		    cbox.className="clsComboBoxOver";
		    ComboBoxOptionsShow(cbox.id);
		}
	}
	if(CurrentComboBox && CurrentComboBox.id!=cbox.id && IsListOpened(CurrentComboBox.id))
	    ComboBoxOptionsHide(CurrentComboBox.id);
	    
	
	CurrentComboBox=cbox;
}
function ComboBoxOptionsShow(name)
{
    var oList=document.getElementById(name + "_OPT_LIST");
	oList.style.display="block";
	document.getElementById(name).setAttribute("IsOpened","yes");
}
function ComboBoxOptionsHide(name)
{
    var oList=document.getElementById(name + "_OPT_LIST");
    oList.style.display="none";
    document.getElementById(name).setAttribute("IsOpened","no");
}
function ComboBox_Over(cbox)
{//window.status='Over';
	if(cbox && cbox.DisFunc!="yes")
		cbox.className="clsComboBoxOver";
}
function ComboBox_Out(cbox)
{//window.status='Out';
	if(cbox && cbox.DisFunc!="yes")
	{
//		if(!IsListOpened(cbox.id))
//			cbox.className="clsComboBox";
			//ComboBoxOptionsHide(cbox.id)
    }
}
function ComboBox_Select(name,text,value)
{
    CurrentComboBox=document.getElementById(name);
	if(CurrentComboBox)
	{
		//change text
		var Txt=document.getElementById(CurrentComboBox.id + "_TEXT");
		if(Txt)
			Txt.innerHTML=text;
			
		//change value
		var inputId=CurrentComboBox.id.replace("_CBOX","");
		var inp=document.getElementById(inputId);
		if(inp)
		{
			inp.value=value;
		}
		ComboBoxOptionsHide(CurrentComboBox.id)
		
		//call user function if exists
		if(typeof(cUserComboBox_OnChange)=="function") cUserComboBox_OnChange(CurrentComboBox.getAttribute("Name"),text,value);
	}
}
/*********************************************
			Combo Box Events
/*********************************************/




/*********************************************
			Option List Events
/*********************************************/
function OptionList_Over(obj)
{
	if(obj)
		obj.className="clsOptionListItemOver";
}
function OptionList_Click(obj)
{
	if(obj)
	{
		ComboBox_Select(obj.getAttribute("Name"),obj.innerHTML,obj.getAttribute("Value"));
	}
}
function OptionList_Out(obj)
{
	if(obj)
		obj.className="clsOptionListItem";
}				
/*********************************************
			Option List Events
/*********************************************/












