//
//инициализация функции сравнения
mui.ready(function(){
    //-- объявляем глобальные переменные
    window.compare_ = mui.getAttr($('items_inp'), 'value2') || mui.getAttr($('items_inp_lm'), 'value2') || '';
    //-- синхронизируем массивы по value и value2
    if ($('items_inp') && compare_) $('items_inp').value = compare_;
    if ($('items_inp_lm') && compare_) $('items_inp_lm').value = compare_;
    //удаляем все пробельные символы, это важно для определения пустой строки
    compare_ = compare_.replace(/\s+/, '');
    //Note: When the string is empty, split returns an array containing one empty string, rather than an empty array.
    compare_ = (compare_ != '') ? compare_.split(',') : [];
    var length = mui.isArray(compare_) ? compare_.length : 0;

    window.compare_t = null;//переменная таймаут
    window.compare_t2 = null;//для отдельного товара
    window.compare_block = $('compare_block');//внешний блок вместе с закладкой
    window.container = $('compare_container');//блок со списком сравнения
    window.subm1 = $('compare_submit1');
    window.subm2 = $('compare_submit2');
    window.subm3 = $('compare_submit3');
    window.compare_add_link2 = $('compare_add_link2');
    window.compare_inner = $('compare_inner');
    window.obj_prop = {};//здесь будем хранить свойства "текущего" товара для сравнения
    window.i_fly = null;//для установления интервала в летящей картинке
    window.last_fly_id = null;//запоминаем последний "летучий" id

    try {
        //если список сравнения не пуст, показываем блок сравнения
        if (compare_block) compare_block.style.display = (!!length) ? 'block' : 'none';                
        if (subm3) {
            if (length > 1) {subm3.removeAttribute('disabled');}
            else {subm3.setAttribute('disabled','disabled');}
            $('compare_submit3').value = $('compare_submit3').value.replace(/[0-9]+/, length);//обновляем подпись к кнопке
        }
        if (!!length) {
            //обновляем подпись к кнопке
            if ($('compare_submit1')) $('compare_submit1').value = $('compare_submit1').value.replace(/[0-9]+/, length);
            if ($('compare_submit2')) $('compare_submit2').value = $('compare_submit2').value.replace(/[0-9]+/, length);
        }
    } catch (e) {}
});

//
//добавляем информацию о товаре в блок сравнения
function add_good_block(id){
    try {
        //добавляем в блок сравнения
        if (container) container.innerHTML += get_good_block(id);
        //делаем чекбокс активным
        if ($('chk_'+id)) $('chk_'+id).checked = true;
        if ($('label_'+id)) {
            $('label_'+id).innerHTML = "<a href='m1_compare.php?items_="+compare_.join(',')+"'>сравнить</a>";
            $('label_'+id).removeAttribute('for');
        }
    } catch (e) {}
}

//
//формируем блок товара для блока с левого меню
function get_good_block(id){

        var s_info = $('good_span_' + id);
        //пытаемся вытянуть информацию из служебного тега
        if (typeof s_info != 'undefined') {
            try {
                var img = mui.getAttr(s_info, 'img_') || '',
                    price = mui.getAttr(s_info, 'price_') || '',
                    name = mui.getAttr(s_info, 'product_') || '',
                    link = mui.getAttr(s_info, 'href_') || '';
            } catch (e){}
        }
        //если служебного тега нет, берем с разных мест
        try {            
            //если какого-то элемента нет, то будет undefined
            //эта фнк. служебная, поэтому mui уже подключен
            var name_link = $('product_'+id);
            img = img || mui.getAttr($('img_'+id), 'src') || '';
            price = price || ($('price_'+id) ? $('price_'+id).innerHTML : '');
            name = name || ((name_link) ? name_link.innerHTML : '');
            link = link || (mui.getAttr(name_link, 'href') || '');

            obj_prop['img'] = img;
            obj_prop['price'] = price;
            obj_prop['name'] = name;
            obj_prop['link'] = link;
            
            //чуть подчищаем цены (чтоб не было "от от $380")
            if (!/от/.test(price)){
                price = 'от <span>'+price+'</span>';
            }
        }
        catch (e) {}

        //это маленький скрытый блок
        var html = '<div id="compare_sm_'+id+'" class="comp-sm-div" style="display:none">';
            html += '    <table cellspacing="0" cellpadding="0" border="0">';
            html += '        <tr valign="top" class="hand" jclose="compare_'+id+',compare_sm_'+id+'" jtype="click">';
            html += '            <td><img width="11" height="11" style="margin: 2px 0 0;" class="hand" alt="" src="img/comp-open.gif" jtype="click" jclose="compare_'+id+',compare_sm_'+id+'"></td>';
            html += '            <td class="comp-sm-name">';
            html += '                <a href="'+link+'" onclick="stopEventPropagation(event);">'+name+'</a>';
            html += '                <img width="7" height="7" class="hand" style="margin-left:7px; position: relative; top: -1px;" alt="" src="img/del-comp-unit.gif" onclick="on_choose(\''+id+'\'); if (mui) mui.fclose(\'remove_compare_'+id+', add_compare_'+id+'\', true)">';
            html += '            </td>';
            html += '        </tr>';
            html += '    </table>';
            html += '</div>';

        //это большой блок с кратким описанием модели
            html += '<div id="compare_'+id+'" class="topgoods-block" style="visibility:hidden">';
            html += '   <table cellspacing="0" cellpadding="0" border="0">';
            html += '       <tr valign="top" class="hand" jclose="compare_'+id+',compare_sm_'+id+'" jtype="click">';
            html += '           <td><img width="11" height="11" class="hand" alt="" src="img/comp-close.gif" jclose="compare_'+id+', compare_sm_'+id+'" jtype="click"></td>';
            html += '           <td class="comp-sm-name">';
            html += '               <div class="topgoods-img">';
            html += '                   <table cellspacing="0" cellpadding="0" border="0">';
            html += '                       <tr><td><a href="'+link+'" onclick="stopEventPropagation(event);"><img alt="'+name+'" src="'+img+'" /></a></td></tr>';
            html += '                   </table>';
            html += '               </div>';
            html += '               <div class="topgoods-desc">';
            html += '                   <a href="'+link+'" onclick="stopEventPropagation(event);">'+name+'</a><br />'+price+'<br />';
            html += '                   <span class="compare-remove hand" onclick="on_choose(\''+id+'\'); if (mui) mui.fclose(\'remove_compare_'+id+', add_compare_'+id+'\', true)"><em>убрать из сравнения</em></span>';
            html += '               </div>';
            html += '           </td>';
            html += '        </tr>';
            html += '    </table>';
            html += '</div>';

        //запоминаем модель, которую пытаемся добавить в список сравнения
        window.last_fly_id = 'compare_'+id;

        return html;
}

//
//главная фнк сравнения, добавление/удаление
function on_choose(id_good){
    if (typeof mui != 'undefined') {
        var state = 'n';//состояние y|n - добавляем или удаляем модель из сравнения
        clearInterval(i_fly);//интервал по "вылету картинки"
        if ($(last_fly_id)) $(last_fly_id).style.visibility = 'visible';
        if ($('img_fly')) $('img_fly').style.display = 'none';//блок с вылетающей картинкой

        try {
            var node = $("compare_"+id_good),//блок с данной моделью
                node_sm = $("compare_sm_"+id_good),//маленький блок с моделью
                pos = mui.inArray(id_good, compare_);//узнаем позицию модели в массиве сравнения
                
            //если уже есть, удаляем из списка сравнения
            if (pos >= 0) {
                state = "n";
                if (node && node.parentNode) node.parentNode.removeChild(node);
                if (node_sm && node_sm.parentNode) node_sm.parentNode.removeChild(node_sm);
                //удаляем элемент из блока
                if ($('chk_'+id_good)) $('chk_'+id_good).checked = false;//делаем чекбокс неактивным
                compare_.splice(pos, 1);//удаляем из массива сравнения
                if ($('label_'+id_good)) {
                    $('label_'+id_good).innerHTML = "<em>сравнить</em>";
                    $('label_'+id_good).setAttribute('for', 'chk_'+id_good);
                }
            }
            //добавляем в список сравнения
            //если кликаем на чекбоксе, то он должен быть неактивным
            else {
                if (
                        container && compare_inner && /* есть на странице внешние контейнеры */
                        ( 
                            this.nodeType && /* используем конструкцию fnk_name.call(obj, ...) */
                            (this.nodeName.toUpperCase() != 'INPUT' || this.checked) /* или не input или checked input */
                        )
                    ) {

                    state = "y";                 

                    //добавляем мигание на 1 сек
                    compare_inner.className = "left-compare-block";
                    clearTimeout(compare_t);
                    compare_t = setTimeout(function(){
                        compare_inner.className = "left-block";
                    }, 1000);

                    compare_.push(id_good);//добавляем в список сравнения
                    add_good_block(id_good);//добавляем в блок сравнения
                    clearTimeout(compare_t2);
                    for (var i=0,l=compare_.length; i<l; i++){
                        if ($('compare_'+compare_[i])) $('compare_'+compare_[i]).className = "topgoods-block";
                    }

                    if ($('compare_'+id_good)) $('compare_'+id_good).className = "topgoods-block dark-orange";
                    compare_t2 = setTimeout(function(){
                        if ($('compare_'+id_good)) $('compare_'+id_good).className = "topgoods-block";
                    }, 3000);

                    //операции с массивом уже были произведены, просто создаем переменную для быстрого доступа с длинне массива сравнения
                    var length = window.compare_.length;
                    //если список сравнения не пуст, показываем блок сравнения
                    if (!!length) {
                        compare_block.style.display = 'block';
                        compare_inner.style.display = 'block';
                    }

                    //делаем эффект "полета"
                    var start = (this.nodeType) ? mui.getCoordsXY(this) : 0,
                        finish = mui.getCoordsXY($('compare_'+id_good));
                        finish = [finish[0]+25, finish[1]+25];

                    var img_fly = $('img_fly');
                    if (typeof img_fly == 'undefined') {
                            img_fly = document.createElement('div');
                            img_fly.id = 'img_fly';
                            img_fly = document.body.appendChild(img_fly);
                    }
                    img_fly.style.cssText = "position:absolute; top:"+start[1]+"px; left:"+start[0]+"px; display:block;";

                    var o = {duration : 600};
                    o.onStart = function(){
                        img_fly.innerHTML = "<img src='"+obj_prop['img']+"' />";
                    };
                    o.onComplete = function(){
                        img_fly.style.display = 'none';
                        if ($(last_fly_id)) $(last_fly_id).style.visibility = 'visible';
                    };
                    setTimeout(function(){
                        mui.animate(img_fly, {'top' : finish[1], 'left' : finish[0]}, o);
                    }, 0);
                }
            }

            //операции с массивом уже были произведены, просто создаем переменную для быстрого доступа с длинне массива сравнения
            length = compare_.length;
            //если список сравнения не пуст, показываем блок сравнения
            if (compare_block) compare_block.style.display = (!!length) ? 'block' : 'none';
            if (compare_inner) compare_inner.style.display = (!!length) ? 'block' : 'none';

            if (subm1) $('compare_submit1').value = subm1.value.replace(/[0-9]+/, length);
            if (subm2) $('compare_submit2').value = subm2.value.replace(/[0-9]+/, length);
            if ($('compare_num')) $('compare_num').innerHTML = "Сравнить "+length+" товаров";
            
            var cjoin = compare_.join(',');
            
            if (subm3) {
                if (length > 1) {subm3.removeAttribute('disabled');}
                else {subm3.setAttribute('disabled','disabled');}
                $('compare_submit3').value = $('compare_submit3').value.replace(/[0-9]+/, length);//обновляем подпись к кнопке
            }

            //обновляем массив с id_good
            if ($('items_inp')){
                $('items_inp').value = cjoin;
                $('items_inp').setAttribute('value2', cjoin);
            }
            if ($('items_inp_lm')) {
                $('items_inp_lm').value = cjoin;
                $('items_inp_lm').setAttribute('value2', cjoin);
            }

            for (var i=0, l=length; i<l; i++){
                if ($('label_' + compare_[i])) {
                    var a = $('label_'+compare_[i]).getElementsByTagName('a');
                    if (a.length > 0) a[0].href="m1_compare.php?items_="+cjoin;
                }
            }
            mui.loadJSON('/mtools/mui_add2comparing.php?idg_='+id_good+'&set_='+state);
        } catch (e) {}
    }
}
