var ts_boxclass='dropcontainer';		// parent element 
var ts_triggeron='activetrigger';		// class for the active trigger link

var ts_triggeroff='trigger';			// class for the inactive trigger link
var ts_dropdownclosed='dropdownhidden'; // closed dropdown
var ts_dropdownopen='dropdownvisible';	// open dropdown
var ts_lastopeneddropdown = null;		// object of last opened drop down trigger

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }

function ts_opendrowpdown(trigger)
{	
	// close last opened drop down box
	if(ts_lastopeneddropdown != null && ts_lastopeneddropdown != trigger)
	{
		ts_swapdropdownclasses(ts_lastopeneddropdown);
	}	
	ts_swapdropdownclasses(trigger);
	ts_lastopeneddropdown = trigger.className.trim() == ts_triggeron ? trigger : null;
}

function ts_swapdropdownclasses(trigger)
{
	ts_swapclass(trigger,ts_triggeroff,ts_triggeron)
	ts_swapclass(trigger.parentNode.getElementsByTagName('ul')[0],ts_dropdownclosed,ts_dropdownopen);
}

function ts_selectitem(item)
{ 
	// get link trigger
	var istrigger = item.parentNode.parentNode.parentNode.getElementsByTagName('a')[0];
	
	// get input hidden field
	var input = item.parentNode.parentNode.parentNode.getElementsByTagName('input')[0];
	
	ts_swapclass(istrigger,ts_triggeron,ts_triggeroff);
	ts_swapclass(item.parentNode,ts_dropdownopen,ts_dropdownclosed)
	istrigger.firstChild.nodeValue=item.firstChild.firstChild.nodeValue;
	
	// set value of hidden field and refresh form
	input.value = item.firstChild.id;
}

function ts_submit(item)
{
	// get input hidden field
	var input = item.parentNode.parentNode.parentNode.getElementsByTagName('input')[0];
	input.form.submit();
}

function ts_check(o,c)
{
 	return new RegExp('\\b'+c+'\\b').test(o.className);
}

function ts_swapclass(o,c1,c2)
{
	var cn=o.className;
	o.className=!ts_check(o,c1)?cn.replace(c2,c1):cn.replace(c1,c2);
}

function ts_addclass(o,c)
{
	if(!ts_check(o,c)){o.className+=o.className==''?c:' '+c;}
}
