function CustomComboBox_Start(id){

    function setDisplayedText(){
        $('#'+id+'_displayText').text( $('#'+id+' option:selected').text() );
    }


    function attachChangeOptionChangeCallback(){
        $('#'+id).change(function(){
            $('#'+id+'_displayText').text( $('#'+id+' option:selected').text() );
        });
    }

    function attachBoxClickCallback(){
        $('#'+id+'_box').click(function(){
            var selectionListVisible = $('#'+id+'_SelectionList').is(':visible');


            if( !selectionListVisible ){
                var elementOnScreenTop = $('#'+id+'_box').offset().top - $(document).scrollTop() + $('#'+id+'_box').height();
                var expectedSelectionListHeight = $(window).height() - elementOnScreenTop - 20;
                $('#'+id+'_SelectionList').css('max-height', expectedSelectionListHeight);

                showSelectionList();
            }
            else{
                hideSelectionList();
            }

            return false;
        });

        
    }


    function showSelectionList(){
        $('#'+id+'_box').css('z-index', 1000);
        $('#'+id+'_SelectionList').slideDown('fast');
    }


    function hideSelectionList(){
        $('#'+id+'_SelectionList').fadeOut('fast', function(){
            $('#'+id+'_box').css('z-index', 0);
        });
    }

    function addAllOptionsToSelectionList(){
        $('#'+id+' > option').each(function(index){
            $('#'+id+'_SelectionList').append('<li rel="'+$(this).val()+'">'+$(this).text()+'</li>');
        });
    }

    function attachSelectionListClickCallback(){
        $('#'+id+'_SelectionList > li').click(function(){
            var rel = $(this).attr('rel');

            $('#'+id+' > option[value="'+rel+'"]').selected(true);
            setDisplayedText();
        })
    }

    function attachHideSelectionOnDocumentClick(){
        $('body').click(function(){
            hideSelectionList();
        });
    }



    addAllOptionsToSelectionList();
    setDisplayedText();
    attachChangeOptionChangeCallback();
    attachBoxClickCallback();
    attachSelectionListClickCallback();
    attachHideSelectionOnDocumentClick();








}
