// Find Form Field
function findformfield(name)
{
	for (i=0; i<document.forms.length; i++)
	{
		for (c=0; c<document.forms[i].length; c++)
		{
			if (document.forms[i][c].name==name)
			{
				return document.forms[i][c];
			}
		}
	}
	return false;
}


// Add Item To Selectbox
function selectadd(name,text,val)
{
	var obj=findformfield(name);
	obj.options[obj.options.length]=new Option(text,val);
}


// Remove Item From Selectbox
function selectdel(name,idx)
{
	var obj=findformfield(name);
	obj.options[idx]=null;
}


// Set Value Of Selectbox
function selectsetvalue(name,val)
{
	var obj=findformfield(name);
	var i=0;
	while (i<obj.options.length)
	{
		if (obj.options[i].value==val)
		{
			obj.selectedIndex=i;
			return;
		}
		i++;
	}
}


// Get Value Of Selectbox
function selectgetvalue(name)
{
	var obj=findformfield(name);
	var i=0;
	var ret="";
	if (obj.selectedIndex>-1)
	{
		return obj.options[obj.selectedIndex].value;
	}
}


// Swap Selectbox Items
function selectswap(namefrom,nameto,dontfocus)
{
	var from=findformfield(namefrom);
	var to=findformfield(nameto);
	if (from && to)
	{
		var i=0;
		while (i<from.options.length)
		{
			if (from.options[i].selected)
			{
				selectadd(nameto,from.options[i].text,from.options[i].value);
				selectdel(namefrom,i);
				i--;
			}
			i++;
		}
		if (!dontfocus)
		{
			to.focus()
		}
	}
}


// Change Position Of Item In Selectbox List
function selectmoveitem(name,ammount)
{
	var obj=findformfield(name);
	if (obj)
	{
		if (obj.selectedIndex==-1)
		{
			return;
		}
		if (ammount>0)
		{
			var dir=1;
		}
		else
		{
			var dir=-1;
		}
		while (ammount!=0)
		{
			var p=obj.selectedIndex;
			if ((p+dir)<0 || (p+dir)>=obj.options.length)
			{
				return;
			}
			tmp1=obj.options[p+dir].text;
			tmp2=obj.options[p+dir].value;
			obj.options[p+dir].text=obj.options[p].text;
			obj.options[p+dir].value=obj.options[p].value;
			obj.options[p].text=tmp1;
			obj.options[p].value=tmp2;
			if (document.all)
			{
				tmpc=obj.options[p+dir].style.color;
				tmpb=obj.options[p+dir].style.backgroundColor;
				obj.options[p+dir].style.color=obj.options[p].style.color;
				obj.options[p+dir].style.backgroundColor=obj.options[p].style.backgroundColor;
				obj.options[p].style.color=tmpc;
				obj.options[p].style.backgroundColor=tmpb;
			}
			obj.selectedIndex+=dir;
			ammount-=dir;
		}
	}
}


// Generate A String From A Selectbox To A Textfield
function selectbuildlist(listname,textname)
{
	var ret="";
	var list=findformfield(listname);
	var text=findformfield(textname);
	if (list && text)
	{
		var i=0;
		while (i<list.options.length)
		{
			if (i>0)
			{
				ret+="|";
			}
			ret+=list.options[i].value;
			i++;
		}
		text.value=ret;
	}
}


// Setup Char Counter
function setupcharcounter(textname,countername,limit)
{
	var obj=findformfield(textname);
	obj.textname=textname;
	obj.countername=countername;
	obj.limit=limit;

	obj.onkeyup=charcounter;
	obj.onkeydown=charcounter;
	obj.onkeypress=charcounter;
	obj.onchange=charcounter;
	obj.onpaste=charcounter;

	obj.onchange();
}

// Char Counter
function charcounter()
{
	var obj=findformfield(this.textname);
	var cont=findformfield(this.countername);
	cont.value=this.limit-parseInt(new String(obj.value).length);

}

// --------------------------------------------------
// Checkbox has been ticked:
// Select All = <input type="checkbox" name="id" value="" onClick="tick(this,true);">
// Normal = <input type="checkbox" name="id" value="" onClick="tick(this);">
// --------------------------------------------------
function tick(tick_obj,select_bln)
{
	var f_array=document.forms[tick_obj.form.name];
	var n_str=tick_obj.name;
	if (select_bln==true)
	{
		for (var i_int=0; i_int<f_array.length; i_int++)
		{
			if (f_array[i_int].name==n_str)
			{
				f_array[i_int].checked=tick_obj.checked;
			}
		}
	}
	else
	{
		var all_bln=true;
		for (var i_int=0; i_int<f_array.length; i_int++)
		{
			if (f_array[i_int].name==n_str && f_array[i_int].value!="" && f_array[i_int].checked==false)
			{
				all_bln=false;
			}
		}
		for (var i_int=0; i_int<f_array.length; i_int++)
		{
			if (f_array[i_int].name==n_str && f_array[i_int].value=="")
			{
				f_array[i_int].checked=all_bln;
			}
		}
	}
}



// --------------------------------------------------
// Count number of checkbox that have been ticked
// --------------------------------------------------
function tickcount(form_str,name_str)
{
	var f_array=document.forms[form_str];
	var c_int=0;
	for (var i_int=0; i_int<f_array.length; i_int++)
	{
		if (f_array[i_int].name==name_str && f_array[i_int].value!="")
		{
			c_int+=(f_array[i_int].checked) ? 1 : 0;
		}
	}
	return c_int;
}