$(document).ready(function() {
	var elementID;
	var internalID;
	var openItem = '';

	$('div[id*=select-element]').click(function() {
		elementID = $(this).attr('id');
		internalID = elementID.split("-")[2];

		if(openItem == elementID)
		{
			$('#select-options-' + internalID).slideUp(250);
			$('#select-options-' + internalID).unbind('mouseleave');
			$('#select-options-' + internalID).unbind('mouseenter');
			$('body').unbind('click');
			document.getElementById('select-element-' + internalID).style.backgroundPosition = '0px 0px';
			openItem = '';
		} else {
			if(openItem != '')
			{
				var oldId = openItem.split("-")[2];
				
				$('#select-options-' + oldId).slideUp(250);
				$('#select-options-' + oldId).unbind('mouseleave');
				$('#select-options-' + oldId).unbind('mouseenter');
				$('body').unbind('click');
				document.getElementById('select-element-' + oldId).style.backgroundPosition = '0px 0px';
				openItem = '';	
			}
			
			openItem = elementID;
			
			$('#select-options-' + internalID).slideDown(500, function() {
				document.getElementById('select-element-' + internalID).style.backgroundPosition = '0px -27px';
			});
		
			$('#select-options-' + internalID + ' > ul > li').click(function() {
				$('#selected-option-' + internalID).html($(this).html());
				$('#select-value-' + internalID).val($(this).attr('id'));
				
				selectChangeHandler(document.getElementById('select-value-' + internalID));
				
				$('#select-options-' + internalID).slideUp(250);
				$('#select-options-' + internalID).unbind('mouseleave');
				$('#select-options-' + internalID).unbind('mouseenter');
				$('body').unbind('click');
				$(this).unbind('click');
				document.getElementById('select-element-' + internalID).style.backgroundPosition = '0px 0px';
				openItem = '';
			});
			
			// user interaction
			$('#select-element-' + internalID + ', #select-options-' + internalID).mouseleave(function() {
				$('body').click(function() {
					$('#select-options-' + internalID).slideUp(250);
					$('#select-options-' + internalID).unbind('mouseleave');
					$('#select-options-' + internalID).unbind('mouseenter');
					$('body').unbind('click');
					document.getElementById('select-element-' + internalID).style.backgroundPosition = '0px 0px';
					openItem = '';
				});
			});
			
			$('#select-element-' + internalID + ', #select-options-' + internalID).mouseenter(function() {
				$('body').unbind('click');
			});
		}
	});
});