			function _fdClrSlctn(id) {
				$("#"+id ).val(""); 
				$("#"+id+"_display").html("");
				$("#fancyDD_"+id+"_panel .fddLink").removeClass("fddSelection");
				_fdSlctnsCntr['fancyDD_'+id].current	= 0;
				_fdSlctnsCntr['fancyDD_'+id].selections	= [];
				TriggerEvent('FDDSelectionCleared',[ { 'DDID': id },'FDDSelectionCleared' ]);								
				
			}
			
			function _fdWrtSlctns(id) {
			
				var max = _fdSlctnsCntr['fancyDD_'+id].max; //this let's us know the maximum amount of selections
				
				if( _fdSlctnsCntr['fancyDD_'+id].selections.length < 1 )
				{//no selections
					$('#'+id+'_display').html('');
					$('#'+id).val('');
				} else if( max == 1 ){
					//most FDDs allow a single selection
					$('#'+id).val(_fdSlctnsCntr['fancyDD_'+id].selections[0][0]);
					$('#'+id+'_display').html( "<a href='javascript: _fdClrSlctn(\""+id+"\"); void(0);' style='color: red; font-weight: bold'>x</a>" + _fdSlctnsCntr['fancyDD_'+id].selections[0][1] );
					
				} else if(_fdSlctnsCntr['fancyDD_'+id].selections.length > 0) 
				{	//1 or more selections; this is a multi-selector type (max > 1 )
					
					var valString = "[";
					var labelString = '';
					for(var i=0;i<_fdSlctnsCntr['fancyDD_'+id].selections.length;i++)
					{
						valString += _fdSlctnsCntr['fancyDD_'+id].selections[i][0] +',';
						labelString += _fdSlctnsCntr['fancyDD_'+id].selections[i][1] + ',';
					}
					valString = valString.substr(0,valString.length-1);
					valString += ']';
	 				
					$('#'+id).val(valString);
					$('#'+id+'_display').html( "<a href='javascript:  _fdClrSlctn(\""+id+"\"); void(0);' class='fdClrLk'>x</a>" + labelString );
				}	
				$('#'+id+'_display').css('width',$('#'+id+'_display').html().length); //adjust the field width
			}
			
			var _fdSlctnsCntr = [];
			function _fdClsMltSlctr(id) {
				__asvar_fddreg["fancyDD_"+id+"_panel"]=0; 
				TriggerEvent("HideFDDPanel",[ { "DDID": "fancyDD_"+id },"HideFDDPanel" ]);

				_fdWrtSlctns(id);

			}
			
			function _fdClk(id, value, label, controlIndex ) {
				var max = _fdSlctnsCntr['fancyDD_'+id].max;
				var current = _fdSlctnsCntr['fancyDD_'+id].current;

				if( max > 1 && current > 0)
				{
					/* check to see if the item is in the list; if so remove it and return; */
					for( var i=0; i < _fdSlctnsCntr['fancyDD_'+id].selections.length;i++)
					{
						if( _fdSlctnsCntr['fancyDD_'+id].selections[i][0] == value )
						{
							_fdSlctnsCntr['fancyDD_'+id].current--;
							_fdSlctnsCntr['fancyDD_'+id].selections.splice(i,1);							
							$('#fdLk'+id+'_'+controlIndex ).removeClass('fddSelection');
							
							return;
						}
					}
				} else if (max == 1 )
				{
				
					$("#fancyDD_"+id+"_panel .fddLink").removeClass("fddSelection");

					if( _fdSlctnsCntr['fancyDD_'+id].selections.length > 0 
					&& _fdSlctnsCntr['fancyDD_'+id].selections[0][0] == value )
					{//if the item in a single selecter is clicked again; "unselect" it					
						_fdSlctnsCntr['fancyDD_'+id].selections.splice(0,1);							
						
						return;
					}						
				}
				
				$('#fdLk'+id+'_'+controlIndex ).addClass('fddSelection');

				if( max == 1 ) 
				{ //there can only be one selection; do it!
					_fdSlctnsCntr['fancyDD_'+id].selections[0] = [value,label];
				} else
				{
			
				
					if( _fdSlctnsCntr['fancyDD_'+id].selections.length> max )
					{ //if there are more selections than the max selection, we need to replace a selection; the last by default
						_fdSlctnsCntr['fancyDD_'+id].selections[max-1]		= [value, label];
					} else  _fdSlctnsCntr['fancyDD_'+id].selections[_fdSlctnsCntr['fancyDD_'+id].selections.length] = [value,label];
				}
				
				if( ++current >= max  )
				{ 
				
					// this block allows us to count the current number of selections
					//in the current dropdown
					
					_fdWrtSlctns(id);					
					__asvar_fddreg['fancyDD_'+id+'_panel']=0;					
					
					TriggerEvent('HideFDDPanel',[ { 'DDID': 'fancyDD_'+id },'HideFDDPanel' ]);			
					TriggerEvent('FDDItemSelected',[ { 'DDID': id,'ID': value },'FDDItemSelected' ]);								
				} else
				{
					_fdSlctnsCntr['fancyDD_'+id].current = current;				
				}
			}

			$(document).ready(function(){
				
		 			__asvar_fddreg = {};
		
		 			$(document).bind('HideFDDPanel',function(e, args) {
						if( __asvar_fddreg[args.DDID+'_panel'] < 1 )
						{
							$('#'+args.DDID+' > .fancyDDButton').removeClass('fancyDDButton_on'); 
							$('#'+args.DDID+'_panel').fadeOut(250); 
							__asvar_fddreg[args.DDID+'_panel'] = 0;
		
							
							_fdWrtSlctns(args.DDID.replace('fancyDD_','') );	
						}
		 			});
		
		 			var __fddCtrlKeyActive = false;
		
					var __ignoredDD = ''; 			
		
					function __bindFancyDDObjects() {
			 			$('#fancyDD > .fancyDDButton').mouseover(function(){__asvar_fddreg[this.id+'_panel']+=1; });
			 			$('#fancyDD > .fancyDDButton').mouseout(function(){__asvar_fddreg[this.id+'_panel']-=1; });
		
		 				$('.fancyDD').mouseover(function(){ 
							__asvar_fddreg[this.id+'_panel'] += 1;			
							$('#'+this.id+' > .fancyDDButton').addClass('fancyDDButton_over'); 
						});
						$('.fancyDD').mouseout(function(){ 
							$('#'+this.id+' > .fancyDDButton').removeClass('fancyDDButton_over'); 
							__asvar_fddreg[this.id+'_panel'] -= 1;
							setTimeout( "TriggerEvent('HideFDDPanel',[{ 'DDID': '"+this.id+"' },'HideFDDPanel' ])",500);
						});
		
						$('.fancyDDButtonLabel').click(function(){ 
		
							__ignoredDD = '';
							if( $(this).parent().children().hasClass('fancyDDButton_on') )
							{ //if the dropdown link was clicked again; close the window
		
								$(this ).parent().children().removeClass('fancyDDButton_over'); 
								__asvar_fddreg[this.parentNode.id+'_panel'] = 0;
								TriggerEvent('HideFDDPanel',[{ 'DDID': this.parentNode.id },'HideFDDPanel' ]);
								
								__ignoredDD = this.parentNode.id;
								return;
							}
						
						});
						
						$('.fancyDDButton').click(function(){ 
		
							__ignoredDD = '';
							if( $(this).hasClass('fancyDDButton_on') )
							{ //if the dropdown link was clicked again; close the window
		
								$(this ).parent().removeClass('fancyDDButton_over'); 
								__asvar_fddreg[this.parentNode.id+'_panel'] = 0;
								TriggerEvent('HideFDDPanel',[{ 'DDID': this.parentNode.id },'HideFDDPanel' ]);
								
								__ignoredDD = this.parentNode.id;
								return;
							}
						
						});
						
						
						$('.fancyDD').click(function(){ 
						
							if( __ignoredDD != this.id )
							{				
								$('#'+this.id+' > .fancyDDButton').addClass('fancyDDButton_on'); 
								var o = $(this).offset();
								var x,y;
								x = o.left; y = o.top+20;
								var panel_width = $('#'+this.id+'_panel').width()+20;
				
								if( x+panel_width > $(window).width() )
								{			
									x -= (x+panel_width) - $(window).width();
								}
								$('#'+this.id+'_panel').css({ 'left': x, 'top': y });
								$('#'+this.id+'_panel').slideDown(250); 
							}
						});			
					}
					__bindFancyDDObjects();
				
			});