/* Селект */

/* Пример использования:

    <form>
            <script>
                var st = new select('st', 'copy_from');
                st.value[0] = ['ID', 'Летнии скидки 50%', ''];
                st.value[1] = ['ID', 'Зимние скидки 150%', 'SELECT'];
                st.Write();
            </script>

    <input type="submit"/>
    </form>
*/


    function select(class_name, name, type, text_before, text_after)
    {
        this.value = new Array();
        this.name = name;
        this.class_name = class_name;
        this.set_event = '';
        this.add_row = '';
        this.title = '';
        this.cur_value = '';
        this.type = type;
        if(text_before)
            this.text_before = text_before;
        else
            this.text_before = '';
        if(text_after)
            this.text_after = text_after;
        else
            this.text_after = '';
        if(this.type == 'mini')
        {
            this.height = '28px';
            this.height_list = 20;
            this.width = 140;
            this.width_title = this.width - 40;
            this.type = '_'+this.type;
            this.scroll_num_row = 9;
        }
        else if(this.type == 'small')
        {
            this.height = '43px';
            this.height_list = 31;
            this.width = 55;
            this.width_title = 100;
            this.type = '_'+this.type;
            this.scroll_num_row = 7;
        }
        else
        {
            this.height = '43px';
            this.height_list = 31;
            this.width = 260;
            this.width_title = this.width - 60;
            this.type = '';
            this.scroll_num_row = 10;
        }
        this.display = 1;
        this.off = 0;

        // methods
        this.Write = select_write;
        this.SelectValue = select_value;
        this.ShowSelect = select_show_select;
        this.AddEvent = select_add_event;
        this.Event = select_event;
        this.Hide = select_hide;
    }

    function select_write()
    {
        var tr='', tr_len=0, set_value=false, set_value_first=false;
        for(var i in this.value)
        {
            if(set_value_first === false)
                set_value_first = i;
            tr += '<tr id="select_'+this.class_name+'_value_'+i+'" class="select_list_tr'+this.type+'" OnMouseOver="'+this.class_name+'.SelectValue('+i+');"><td>'+this.value[i][1]+'</td></tr>';
            if(this.value[i][2])
                set_value = i;
            tr_len++;
        }
        if(this.add_row)
        {
            tr += '<tr class="select_list_tr'+this.type+'" align="right"><td>'+this.add_row+'</td></tr>';
        }

        document.write('<table height="'+this.height+'" width="'+this.width+'px" border="0" cellpadding="0" cellspacing="0" OnClick="'+this.class_name+'.ShowSelect();">');
        document.write('<tr height="'+this.height+'"><td class="select_top_left'+this.type+'"><img src="/img/s.gif" width="4"></td><td id="select_'+this.class_name+'_title" class="select_top_bg'+this.type+'">'+this.title+'</td><td class="select_top_right'+this.type+'"><img src="/img/s.gif" width="4"></td><td width="20"><img src="/templates/first/i/select/button'+this.type+'.gif"></td></tr>');
        document.write('<tr height="0"><td colspan="4"><div id="select_'+this.class_name+'_list" class="select_list_div'+this.type+'"><table cellpadding="6" cellspacing="1" class="select_list_table'+this.type+'" width="100%">'+tr+'</table></div></td></tr>');
        document.write('</table>');
        document.write('<input name="'+this.name+'" id="select_'+this.class_name+'_input" type="hidden" value="">');
    
        var list = document.getElementById('select_'+this.class_name+'_list');
        list.style.width = this.width;
        if(tr_len > this.scroll_num_row)
            list.style.height = (this.height_list*this.scroll_num_row)+'px';

        this.AddEvent(document, 'click', this.class_name+'.Hide('+this.class_name+');');
        if(set_value !== false)
            this.SelectValue(set_value);
        else if(!this.title)
            this.SelectValue(set_value_first);
    }

    function select_value(num)
    {
        var value, num, str, text;
        for(var i in this.value)
        {
            value = document.getElementById('select_'+this.class_name+'_value_'+i);
            if(num == i)
            {
                value.className = 'select_list_tr_selected'+this.type;
                title = document.getElementById('select_'+this.class_name+'_title');
                num_letter = Math.round(this.width_title/11);
                if(this.text_after)
                    text = this.value[i][1]+'&nbsp;'+this.text_after;
                else
                    text = this.value[i][1];
                if(text.length > num_letter)
                    title.innerHTML = text.slice(0, num_letter);
                else
                    title.innerHTML = text;
                this.cur_value = this.value[i][1];
                input = document.getElementById('select_'+this.class_name+'_input');
                input.value = this.value[i][0];
            }
            else
                value.className = 'select_list_tr'+this.type;
        }
        if(this.set_event)
            eval(this.set_event);
    }

    function select_hide(select)
    {
        if(this.off == 1)
        {
            this.display = 0;
            this.ShowSelect();
        }
        else
            this.off = 1;
    }

    function select_show_select()
    {
        var cal = document.getElementById('select_'+this.class_name+'_list');
        if(this.display)
        {
            cal.style.display = 'block';
            this.display = 0;
        }
        else
        {
            cal.style.display = 'none';
            this.display = 1;
        }
        this.off = 0;
    }
    
    function select_add_event(element, event, func_st)
    {
        eval('func = function() {'+func_st+'}');
        if(element.addEventListener)
            element.addEventListener(event, func, false);
        else if(element.attachEvent)
            element.attachEvent('on' + event, func);
    }

    function select_event(event, func_st)
    {
//        element =
//        this.select_add_event(element, event, func_st);
    }

