function ComboBox(elem, values, link){
    elem = ge(elem);    
    var _box, body = document.getElementsByTagName('body')[0], _list;
    
    _box = document.createElement('div');
    _box.setAttribute('id', elem.id + '_box');
    _box.setAttribute('class', 'combobox');    
    elem.setAttribute('class', 'ui_box');   
    
    _list = document.createElement('div');
    _list.setAttribute('id', elem.id + '_list');
    _list.setAttribute('class', 'combobox_list');
    
    ul = document.createElement('ul');
    for (i in values.value){
        var li = document.createElement('li');
        li.innerHTML = values.value[i];
        ul.appendChild(li);
        addEvent2(li, i, values.value[i], link);
    }

    _list.appendChild(ul);
    pos = getElementPosition(elem.id);
    body.appendChild(_list);    
    elem.appendChild(_box);
    
    setStyle(_list, {left : pos.left+15, top : pos.top + pos.height+25});
    ul.children.item(0).setAttribute('class', 'first');
    ul.lastChild.setAttribute('class', 'last');
    _box.innerHTML = (values.sel != '') ? values.value[values.sel] : ul.children.item(0).innerHTML;
        
    addEvent(_box, 'click', showCombo);
    
    function showCombo(){
        addEvent(body, 'mousedown', function(){hideCombo();});
        addClass(_box, 'comboBoxShow'); 
        _list.style.display = 'block';        
    }
    
    function hideCombo(){
        removeClass(_box, 'comboBoxShow'); 
        _list.style.display = 'none';
        removeEvent(body, 'mousedown', function(){hideCombo();});
    }
    
    function addEvent2(obj, _var, _val, _link){
        addEvent(obj, 'mousedown', function(){
            hideCombo();
            _box.innerHTML = _val;
            if (link){
                window.location = link+_var;
            }
        });
    }
}
