var client = {

    MainMenuTree: '',
    MainRazdelName: '',
    price_th: {},
    price_td: {},
    RequestArea: '',
    razdelId: '',
    skrepArray: {},


    loadMainMenu: function(e) {
        var e = new Event(e).stop();
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $("request").setHTML(client.drawInfo());
                client.drawMenu(reqRequest.responseText);
                //client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'LM', id: this.id});
        $$('table.menu div.selected').each(function(div){ div.className = ''; });
        this.className = 'selected';
    },


    drawMenu: function (jsMenu) {
        var row = new Array();
        jsMenu = jsMenu.split("%");
        MainMenuTree  = '<div class="treeMain"></div>';
        for (var i = 0; i < (jsMenu.length-1); i++) {
            row[i] = jsMenu[i].split("|");
            if (i == 0)
            {
                MainRazdelName = row[i][1];
                MainMenuTree += '<div class="razdel_bottom">'+MainRazdelName+'</div>';
            }
            else
            {
                if (row[i][3] == 0) subClass = 'passive_right'; else subClass = 'passive_bottom';
                MainMenuTree += '<div class="'+subClass+'" id="_'+row[i][0]+'"><a href="/'+row[i][0]+'/">'+row[i][1]+'</a> ['+row[i][2]+']</div>';
            }
        }
        $('tree').empty();
        $('tree').setHTML(MainMenuTree);
        $$('div.passive_right').each(function(div) { div.addEvent('click', client.loadPrice); });
        $$('div.passive_bottom').each(function(div) { div.addEvent('click', client.loadSubMenu); });
    },

    
    loadSubMenu: function(e) {
        var e = new Event(e).stop();
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $("request").setHTML(client.drawInfo());
                client.drawSUBMenu(reqRequest.responseText);
                //client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'LM', id: this.id});
        this.className = 'active_bottom';
    },
    
    
    drawSUBMenu: function(jsMenu) {
        var subClass = '';
        var row = new Array();
        var SubMenuTree = '<div class="razdel_left" onClick="return false;"><a href="#">'+MainRazdelName+'</a></div>';
        jsMenu = jsMenu.split("%");            
        for (var i = 0; i < (jsMenu.length-1); i++) {
            row[i] = jsMenu[i].split("|");
            if (i==0) SubMenuTree += '<div id="_'+row[i][0]+'" class="razdel_bottom"><a href="#">'+row[i][1]+'</a>&nbsp;['+row[i][2]+']</div>';
            else
            {
                if (row[i][3] != 0)
                    SubMenuTree += '<div id="_'+row[i][0]+'" class="passive_bottom"><a href="/'+row[i][0]+'/">'+row[i][1]+'</a>&nbsp;['+row[i][2]+']</div>';
                else
                    SubMenuTree += '<div id="_'+row[i][0]+'" class="passive_right"><a href="/'+row[i][0]+'/goods/">'+row[i][1]+'</a>&nbsp;['+row[i][2]+']</div>';
            }
        }
        $('tree').empty();
        $('tree').setHTML(SubMenuTree);
        $$('div.razdel_left')[0].addEvent('click', client.returnToMainMenu);
        $$('div.active_right').each(function(div){ div.className = 'passive_right'; });
        $$('div.passive_right').each(function(div){ div.addEvent('click', client.loadPrice); });
        $$('div.passive_bottom').each(function(div){ div.addEvent('click', client.loadSUBsubMenu); });

    },
    
    
    drawInfo: function() {
        return '<div width="625">&nbsp;</div>';//'<table class="price" style="width:600px;"><tr>    <th colspan="2">Информация по наличию товаров</th>    <td class="noBrd" width="20" rowspan="6"></td>    <th colspan="2">Ценовая динамика товара</th></tr><tr>    <td width="50"><div class="pr_G5"></div></td>    <td>товар свободен для заказа</td>    <td><img src="/img/dot_blue.gif" width="7" height="7" alt="new"></td>    <td>новая позиция</td></tr><tr>    <td><div class="pr_Y6"></div></td>    <td>товар зарезервирован</td>    <td><img src="/img/price_dn.gif" width="7" height="7" alt="за неделю: -14 руб. (-5,4%)"></td>    <td>цена упала за неделю</td></tr><tr>    <td><div class="pr_YG"></div></td>    <td>товар ожидается в ближайшие дни</td>    <td><img src="/img/price_up.gif" width="7" height="7" alt="за неделю: +14 руб. (+5,4%)"></td>    <td>цена увеличилась за неделю</td></tr><tr>    <td><div class="no"></div></td>    <td>товар в данный момент отсутствует</td>    <td colspan="2" rowspan="2" class="noBrd" style="color: #C7C7AB;" valign="top"><br>Замкнуло.Ру отслеживает динамику цен всех появляющихся товарных позиций.<br>Для просмотра графика динамики цены достаточно щёлкнуть на цену соответствующего товара.</td></tr><tr>    <td colspan="2" class="noBrd" style="color: #C7C7AB;"><br>Товар, свободный для заказа можно отложить в корзину, щёлкнув на значке наличия соответствующего товара.<br>В случаях, если товар зарезервирован или отсутствует, его можно пометить, и автоматическая система рассылки оповестит Вас о поступлении товара в продажу (требуется регистрация).<br>Детальная информация о товаре доступна щелчком мыши на артикульном номере товара.</td>    </tr></table>';
    },
    
    
    returnToMainMenu: function(e){
        var e = new Event(e).stop();
        $('tree').setHTML(MainMenuTree);
        $$('div.passive_right').each(function(div){ div.addEvent('click', client.loadPrice); });
        $$('div.passive_bottom').each(function(div){ div.addEvent('click', client.loadSubMenu); });
    },
    
   
    start: function() {
        $$('table.menu div').each(function(div){ div.addEvent('click', client.loadMainMenu); });
        client.loginSearchPrepare();
        client.afterRequest();
        if ($('search'))   $('search').addEvent('keyup', client.loginSearchPrepare);
        if ($('userName')) $('userName').addEvent('keyup', client.loginSearchPrepare);
        if ($('pass'))     $('pass').addEvent('keyup', client.loginSearchPrepare);
        $('request').getElements('div[class^=pr_G]').each(function(div){ div.addEvent('click', client.toTrash); });
    },

    
    loginSearchPrepare: function() {
        if ($('search'))   {if ($('search').value.length >= 2)   $('searchBut').disabled = false; else $('searchBut').disabled = true;}
        if ($('userName')) {if ($('userName').value!='' && $('pass').value!='') $('loginBut').disabled = false; else $('loginBut').disabled = true;}

    },
    
    
    loadSUBsubMenu: function(e) {
        var e = new Event(e).stop();
        if (!this.getNext() || this.getNext() && this.getNext().className != 'subSub') {
            var reqRequest = new JsHttpRequest();
            reqRequest.caching = false;
            reqRequest.onreadystatechange = function() {
                if (reqRequest.readyState == 4 && reqRequest.responseText) {
                    client.drawSUBsubMenu(reqRequest.responseText);
                    client.afterRequest();
                }
            }
            reqRequest.open(null, '/zLoader.php', true);
            reqRequest.send({action: 'LSM', id: this.id});
            $$('div.active_right').each(function(div){ div.className = 'passive_right'; });
            $$('div.active_bottom').each(function(div){ div.className = 'passive_bottom'; });
            this.className = 'active_bottom';
        }
        if (this.getNext() && this.getNext().className == 'subSub') {
            this.getNext().remove();
            this.className = 'passive_bottom';
        }
    },

    
    drawSUBsubMenu: function(jsMenu) {
        var row = new Array();
        var SubMenuTree = '';
        jsMenu = jsMenu.split("%");            
        for (var i = 0; i < (jsMenu.length-1); i++) {
            row[i] = jsMenu[i].split("|");

            if (row[i][3] != 0)
                SubMenuTree += '<div id="_'+row[i][0]+'" class="passive_bottom"><a href="/'+row[i][0]+'/">'+row[i][1]+'</a>&nbsp;['+row[i][2]+']</div>';
            else
                SubMenuTree += '<div id="_'+row[i][0]+'" class="passive_right"><a href="/'+row[i][0]+'/goods/">'+row[i][1]+'</a>&nbsp;['+row[i][2]+']</div>';

        }
        new Element('div', {'class': 'subSub'}).setHTML(SubMenuTree).injectAfter($$('div.active_bottom')[0]);
        $$('div.active_right').each(function(div){ div.className = 'passive_right'; });
        $$('div.passive_right').each(function(div){ div.addEvent('click', client.loadPrice); });
        $$('div.passive_bottom').each(function(div){ div.addEvent('click', client.loadSUBsubMenu); });
        this.className = 'active_right';
        //alert($('_'+row[0][0]).getParent().getParent().className);
        //if ($$('div.subSub')[0] && $('_'+row[0][0]).getParent().getParent().className != 'subSub') $$('div.subSub')[0].remove();
    },


    loadPrice: function(e) {
        var e = new Event(e).stop();
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseJS.th) {
                if (reqRequest.responseJS && reqRequest.responseJS.th) price_th = reqRequest.responseJS.th;
                if (reqRequest.responseJS && reqRequest.responseJS.td) price_td = reqRequest.responseJS.td; else price_td = {};
                client.drawPriceList();
                client.afterRequest();
            }
        }
        razdelId = this.id.replace('_','').toInt();
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'LP', id: this.id});
        $$('div.active_right').each(function(div){ div.className = 'passive_right'; });
        $$('div.active_bottom').each(function(div){ div.className = 'passive_bottom'; });
        this.className = 'active_right';
    },


    drawPriceList: function() {
        var returnPrice = '';
        var td_length = price_td.length;
        returnPrice += '<table class="price">';
        returnPrice += '<tr><th colspan="3">'+ price_th +'</th>';
        returnPrice += '<th style="text-align:center;"><img src="/img/mini_up.gif" width="11" height="7" title="Сортировать по убыванию" onclick="client.sortUp()">&nbsp;&nbsp;Руб.&nbsp;<img src="/img/mini_dn.gif" width="11" height="7" title="Сортировать по возрастанию" onclick="client.sortDn()"></th><th colspan="2"></th></tr>';
        if (td_length > 0)
            price_td.each(function(td) {
                if ((!td['cid'] || td['cid'] == 'null') && razdelId) td['cid'] = razdelId;
                returnPrice += '<tr>';
                returnPrice += '<td class="art"><a href="/'+ td['cid'] +'/goods/'+ td['id'] +'.html" onclick="client.showGood('+ td['id'] +'); return false;" title="посмотреть описание">'+ td['art'] +'</a></td>';
                if (td['p'] == 0) returnPrice += '<td>';
                else returnPrice += '<td ondblclick="client.renameTitle(this,'+ td['id'] +');">';
                returnPrice += td['title'] + '</td>';
                returnPrice += '<td class="sklad">'+ client.drawSkladStat(td['sklad']) +'</td>';
                returnPrice += '<td class="pr">';

                if (td['updn'] == 0) {
                    if (td['p'] == 0) returnPrice += '<span style="margin-right:5px;">'+ td['price'] +'</span>';
                    else returnPrice += '<acronym style="margin-right:5px;" title="'+ td['p'] +'['+ td['source'] +']">'+ td['price'] +'</acronym>';
                }
                else {
                    if (td['p'] == 0) returnPrice += '<div>'+ td['price'] +'</div>';
                    else returnPrice += '<div title="'+ td['p'] +'['+ td['source'] +']">'+ td['price'] +'</div>';
                }

                if (td['updn'] > 0) returnPrice += '<div class="up" onclick="client.priceGraph(this, '+ td['id'] +', \''+ td['title'] +'\')" title="За неделю цена поднялась на '+ td['updn'] +' руб., что составило '+ td['proc'] +'% от стоимости"></div>';
                if (td['updn'] < 0) returnPrice += '<div class="dn" onclick="client.priceGraph(this, '+ td['id'] +', \''+ td['title'] +'\')" title="За неделю цена упала на '+ Math.abs(td['updn']) +' руб., что составило '+ td['proc'] +'% от стоимости"></div>';

                returnPrice += '</td>';
                returnPrice += '<td class="gar">'+ td['gar'] +'</td>';
                returnPrice += '<td class="trBut">'+ client.drawTrashButton(td['id'], td['in_trash']) +'</div></td>';
                returnPrice += '</tr>';
            });
        else returnPrice += '<tr><td colspan="5">Результат запроса пуст</td></tr>';
        returnPrice += '</table>';
        $('request').empty();
        $('request').setHTML(returnPrice);
    },


    drawTrashButton: function(thisId, in_trash) {
        var minus = 'minus_bw';
        var title = 'Кликни чтобы добавить в корзину!';

        if (in_trash > 0) {
            title = 'В корзине '+ in_trash +' шт. данного товара';
            minus = 'minus';
            if (in_trash > 3) in_trash = 3;
        }

        return '<div class="'+ minus +'" title="–1 из корзины" onclick="client.toTrash(this.id)" id="m'+ thisId +'"></div><div class="trash'+ in_trash +'" title="'+ title +'" onclick="client.toTrash(this.id)" id="t'+ thisId +'"></div><div class="plus" title="+1 в корзину" onclick="client.toTrash(this.id)" id="p'+ thisId +'"></div>';
    },


    drawSkladStat: function(sklad) {
        if (sklad == 'XXXXXX' || sklad == 'XXXXX' || sklad == 'XXXX' || sklad == 'XXX' || sklad == 'XX' || sklad == 'X')
        return '<div class="'+ sklad +'" title="Наличие товара на складе"></div>';
        else return '<div class="no" title="Товар отсутствует на складе"></div>';
    },
    
    
    loadContent: function(what) {
        //var e = new Event(e).stop();
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $('request').empty();
                $('request').setHTML(reqRequest.responseText);
                if (reqRequest.responseJS && reqRequest.responseJS.tree) $('tree').setHTML(reqRequest.responseJS.tree);
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: what});
        //$$('table.m a').each(function(a){ a.className = 'table.m a:hover'; });
    },


    loadContentById: function(what, thisId) {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                RequestArea = $('request').innerHTML;
                $('request').empty();
                $('request').setHTML(reqRequest.responseText);
                if (reqRequest.responseJS && reqRequest.responseJS.tree) $('tree').setHTML(reqRequest.responseJS.tree);
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: what, id: thisId});
    },
    

    toTrash: function(thisId) {
        if ($(thisId).className != 'minus_bw') {
            var reqRequest = new JsHttpRequest();
            reqRequest.caching = false;
            reqRequest.onreadystatechange = function() {
                if (reqRequest.readyState == 4 && reqRequest.responseText) {
                    $('TRASHID').setHTML(reqRequest.responseText);
                    if (reqRequest.responseJS['goodInTrash']) client.trashStyle(thisId, reqRequest.responseJS['goodInTrash']);
                }
            }
            reqRequest.open(null, '/zLoader.php', true);
            reqRequest.send({action: 'TOTR', id: thisId});
        }
    },


    trashStyle: function(thisId, goodInTrash) {
        var id = thisId.substring(1);
        if (goodInTrash > 0) {
            $('t'+ id).title = 'В корзине '+ goodInTrash +' шт. данного товара';
            if (goodInTrash > 3) goodInTrash = 3;
            $('t'+ id).className = 'trash'+ goodInTrash;
            $('m'+ id).className = 'minus';
        }
        else {
            $('m'+ id).className = 'minus_bw';
            $('t'+ id).title = 'Кликни чтобы добавить в корзину!';
            $('t'+ id).className = 'trash0';
        }
    },

                                                                          
    trashKol: function(thisId,this_) {
        var reqRequest = new JsHttpRequest();
        if (this_.value > 0) {
            reqRequest.caching = false;
            reqRequest.onreadystatechange = function() {
                if (reqRequest.readyState == 4 && reqRequest.responseText) {
                    response = reqRequest.responseText.split("|");
                    this_.value = response[0];
                    $('TRASHID').setHTML(response[2]);
                    $('trashSum').setHTML(response[1]);
                }
            }
            reqRequest.open(null, '/zLoader.php', true);
            reqRequest.send({action: 'TRKOL', id: thisId, k: this_.value});
        }
    },
    
    
    saveTrash: function() {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $('TRASHID').setHTML(reqRequest.responseText);
                if ($('ZAKAZID')) $('ZAKAZID').innerHTML = $('ZAKAZID').getText().toInt() + 1;
                client.loadContent('zakazList');
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send(client.sendFormElements('trashForm'));
    },
    
    
    deleteTrashRow: function(thisId) {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                client.loadContent('trash');
                $$('#TRASHID')[0].setHTML(reqRequest.responseText);
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'TRRDEL', id: thisId});
    },
    
    
    deleteZakazRow: function(thisZakaz, thisId) {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                client.loadContentById('zakaz', thisZakaz);
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'ZRDEL', zakaz: thisZakaz, id: thisId});
    },
    
                                                                        
    updateZakaz: function(id) { 
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
            client.loadContentById('zakaz', id);
            client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send(client.sendFormElements('zakazForm'));
    },
    
    
    clearTrash: function() {       
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                client.loadContent('trash');
                $('TRASHID').setHTML(reqRequest.responseText);
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'CTR'});
    },
    
    
    highlightPrices: function() {
      $$('table.price').each(function(table){
        table.getElements('td').addEvent('mouseenter', function(e){          
          var event = new Event(e).stop();          
          $(event.target).getParent().getChildren().each(function(td){
            if (td.getTag() == 'td' && !td.hasClass('noBrd'))
            td.setStyle('background-color', '#FBFBF5');
          });
        });
        table.getElements('td').addEvent('mouseleave', function(e){          
          var event = new Event(e).stop();
          $(event.target).getParent().getChildren().each(function(td){
            if (td.getTag() == 'td' && !td.hasClass('noBrd'))
            td.setStyle('background-color', 'transparent');
          });
        });
      });
    },
    
    
    deleteGroup: function(thisId, go_to) {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
            if ($('ZAKAZID')) $('ZAKAZID').innerHTML = $('ZAKAZID').getText().toInt() - 1;
            client.loadContent(go_to);
            client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'DG', id: thisId});
    },
    
    
    deleteUngroupGood: function(thisId) {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
            client.loadContent('zakazList');
            client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'DUG', id: thisId});
    },
    

    login: function() {
        var password = $('pass').value;
        var user = $('userName').value;
        if (password!='' && user!='') {
            var reqRequest = new JsHttpRequest();
            reqRequest.caching = false;
            reqRequest.onreadystatechange = function() {
                if (reqRequest.readyState == 4 && reqRequest.responseText || reqRequest.responseJS) {
                if (reqRequest.responseText) $('uMenu').setHTML(reqRequest.responseText);
                if (reqRequest.responseJS) $('request').setHTML(reqRequest.responseJS.loginMsg);
                client.afterRequest();
                client.start();
                }
            }
            reqRequest.open(null, '/zLoader.php', true);
            reqRequest.send({action: 'LOGIN', userName: user, pass: password});
        }
    },
    
    
    enableProvod: function() {
        var allValues = 0;
        $('ungrp').getElements('input[name^=k]').each(function(kol) { 
            if (kol.value>0) allValues += kol.value;
        });
        if (allValues > 0) $('groupButton').disabled = false;
        else $('groupButton').disabled = true;
    },
      
    
    addToGroup: function(id) {
        if ($('s'+id).innerHTML > 0) {
            $('s'+id).setHTML(($('s'+id).innerHTML*1-1));
            $('k'+id).value = ($('k'+id).value*1 + 1);
            client.enableProvod();
        }
    },
    
    
    addKeyGroup: function(id,sklad) {
        if ($('k'+id).value <= sklad) {
            $('s'+id).setHTML(sklad-$('k'+id).value);
        }
        else {
            $('s'+id).setHTML(sklad);
            $('k'+id).value = '';
        }
        client.enableProvod();
    },
    
    
    groupGoods: function(go_to) {
        var reqRequest = new JsHttpRequest();
        var formValues = $('ungrp').toQueryString();   
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                client.loadContent(go_to);
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php?'+formValues, true);
        reqRequest.send({action: 'GRP'});
    },
    
    
    checkActive: function(this_) {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() { }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'checkActive', id: this_.value, chk: this_.checked, what: this_.name});
    },
    
    
    provodka: function() {
        var i = 0;
        var formValues = '';
        if ($('grp'))   $('grp').getElements('input[name^=group]').each(function(inp){ if (inp.checked) { if (formValues!='') formValues += '&'; formValues += 'groups[]='+inp.value;} });
        if ($('ungrp')) $('ungrp').getElements('input[name^=ungroup]').each(function(inp){ if (inp.checked) { if (formValues!='') formValues += '&'; formValues += 'ungroups[]='+inp.value;} });
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $('request').setHTML(reqRequest.responseText);
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php?'+formValues, true);
        reqRequest.send({action: 'PROVOD'});
    },
    
    
    provodkaCount: function() {
        var count = 0;
        if ($('provodForm'))   $('provodForm').getElements('input[name^=tid]').each(function(inp){ if (inp.checked) { count += inp.getParent().getPrevious().getText().toFloat();} });
        $('summa').setText(count);
    },


    skrepka: function(thisId_) {
        var thisId = 'skr'+thisId_;

        if (!$('mainSkr')) {
            new Element('div', {'class': 'skrepka', 'id': 'mainSkr'}).setHTML('').injectTop($$('body')[0]);
            $('mainSkr').setStyle('top', $$('table.userMenu')[0].getCoordinates()['top'] + 49);
            $('mainSkr').setStyle('width', $$('table.userMenu')[0].getCoordinates()['right']);
        }



        if (!$(thisId)) {
            if ($('mainSkr').getElements('table').length >= 5) {
                $('mainSkr').getElements('table')[0].remove();
            }

            var value = $('request').getElement('table.price th').getText();
            var skrep = '<table class="skrepka"><tr><td class="l"></td><td><div style="overflow:hidden;white-space:nowrap;width:117px;"><img style="cursor:pointer;" onclick="client.deleteSkrepka(\''+thisId+'\')" src="/img/mini_delete.gif" width="11" height="11" title="убрать закладку" align="absmiddle"> <a href="javascript:client.returnGood(\''+thisId+'\')" title="'+value.replace('"','')+'">'+value+'</a></div></td><td>...</td><td class="r">&nbsp;</td></tr></table>';

            if ($('mainSkr').getElements('table'))
                 new Element('div', {'styles': {'float': 'right', 'opacity': '0'}, 'id': thisId}).setHTML(skrep).injectInside($('mainSkr'));
            else new Element('div', {'styles': {'float': 'right', 'opacity': '0'}, 'id': thisId}).setHTML(skrep).injectBefore($('mainSkr').getElements('table')[0].getParent());

            var fx = new Fx.Styles($(thisId), {duration:180, wait:false});
            fx.start({'opacity': [0,1]});

        }

        client.goGo($('request'), $(thisId));
        client.skrepArray[thisId] = $('request').innerHTML;
        $('request').setHTML(RequestArea);
        client.afterRequest();
        $('mainSkr').getElements('div.skrepkaSel').each(function(div){ div.className = 'skrepka'; });

    },
    
    
    deleteSkrepka: function(thisId) {
        var fx = new Fx.Styles($(thisId), {duration:180, wait:false});
        fx.start({'opacity': [1,0]});
        (function(){$(thisId).remove()}).delay(280);
        if (client.skrepArray[thisId]) client.skrepArray[thisId] = '';
    },
    

    showGood: function(thisId) {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $('request').setHTML(reqRequest.responseText);
                client.highlightPrices();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'showGood', id: thisId});
    },


    returnGood: function(thisId) {
        $('request').setHTML(client.skrepArray[thisId]);
        client.goGo($(thisId), $('request'));

        $('mainSkr').getElements('div.skrepkaSel').each(function(div){ div.className = 'skrepka'; });
        $(thisId).className = "skrepkaSel";

        //client.deleteSkrepka(thisId);
        client.highlightPrices();
        $('request').getElements('div[class^=pr_G]').each(function(div){ div.addEvent('click', client.toTrash); });
    },

    delShowGood: function(thisId) {
        if ($(thisId)) client.deleteSkrepka(thisId); // $(thisId).className = "skrepka";
        var fx = new Fx.Styles($('request').getChildren()[0], {duration:200, wait:false});
            fx.start({'opacity': [1,0]});
        (function(){$('request').setHTML(RequestArea);}).delay(200);
        (function(){$('request').getElements('div[class^=pr_G]').each(function(div){ div.addEvent('click', client.toTrash); });}).delay(250);
    },

    goGo: function(startItem, endItem) {
        var start = startItem.getCoordinates(),
            end = endItem.getCoordinates();

        new Element('div', {
            'styles': {
                'position': 'absolute',
                'z-index': '2',
                'left': start['left'],
                'top': start['top'],
                'border': '1px solid #CCCCCC',
                'width': start['width'],
                'height': start['height']
                },
            'id': 'goGo'}
        ).setHTML('').injectInside($$('body')[0]);
        var goGo = $('goGo');
        var fx = new Fx.Styles('goGo', {duration:200, wait:false, onComplete: function(){goGo.remove()}}).start({
            'left': [start['left'], end['left']],
            'top': [start['top'], end['top']],
            'width': [start['width'], end['width']],
            'height': [start['height'], end['height']]
        });
    },


    borderGo: function(this_, endW, endH) {
        if ($('borderGo')) $('borderGo').remove();

        var startCoordinates = $(this_).getCoordinates();
        var endCoordinates = $('request').getElement('table.price td').getCoordinates();//$$('table.price td')[0].getCoordinates();
        var endLeft = startCoordinates['left'] + 110;
        var endTop = startCoordinates['top'] - endH/2  + startCoordinates['height']/2;
        var minTop = endCoordinates['top'] - 40;

        if (endTop < minTop) endTop = minTop;
        else if ((endTop + endH) > $$('table.bottom')[0].getTop()) endTop = $$('table.bottom')[0].getTop() - endH;

        new Element('div', {
            'styles': {
                'position': 'absolute', 
                'z-index': '5',
                'left': startCoordinates['left'], 
                'top': startCoordinates['top'], 
                'border': '1px solid #CCCCCC', 
                'width': startCoordinates['width'],
                'height': startCoordinates['height']
                }, 
            'id': 'borderGo'}
        ).setHTML('').injectInside($$('body')[0]);
    
        var fx = new Fx.Styles($('borderGo'), {duration:200, wait:false});
            fx.start({
                'left': endLeft,
                'top': endTop,
                'width': endW,
                'height': endH
            }); 
    },
    
    
    showGoodPic: function(this_, src, w, h) {
        var html = '<img src="'+src+'" width="'+w+'" height="'+h+'" title="Кликните, чтобы закрыть" style="cursor:pointer;" onclick="client.removeThis($(this).getParent());">';
        client.borderGo(this_, w, h);
        if ($('borderGo'))
        (function(){$('borderGo').setHTML(html)}).delay(200);
    },
    
    
    removeThis: function(this_) {
        var fx = new Fx.Styles(this_, {duration:180, wait:false});
        fx.start({'opacity': [1,0]}); 
        (function(){this_.remove()}).delay(250);
    },
    
    
    sendFormElements: function(formName) {
        var theForm = $(formName);
        var formElementsArray = {action: formName};
        var elements = theForm.getElements('input').merge(theForm.getElements('button')).merge(theForm.getElements('textarea')).merge(theForm.getElements('select'));
        elements.each(function(e){
                formElementsArray[e.name] = e.getValue();
            }
        );
        return formElementsArray;
    },
    
    
    saveProvod: function() { 
        var reqRequest = new JsHttpRequest();                              
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                client.loadContent('zakazList');
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send(client.sendFormElements('provodForm'));
    },
    
    
    reloadUserMenu: function() {
        var reqRequest = new JsHttpRequest();                              
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $('uMenu').setHTML(reqRequest.responseText);
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'uMenu'});
    },
    
    
    regUser: function() { 
        var reqRequest = new JsHttpRequest();                              
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $('request').setHTML(reqRequest.responseText);
                client.reloadUserMenu();
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send(client.sendFormElements('registerForm'));
    },

    
    loadTitle: function(thisId) {
        var reqRequest = new JsHttpRequest();                              
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $('DMD').setHTML(reqRequest.responseText);
                if ($$('table.catMain')[0].getElements('td.sel')[0]) $$('table.catMain')[0].getElements('td.sel')[0].className = 'item';
                $('cat'+thisId).className="sel";
                //$('cat'+thisId).setStyle('border-color', '#EFEFEF #FFFFFF #EFEFEF #EFEFEF');
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);        
        reqRequest.send({action: 'loadTitle', id: thisId});
    },
    
    
    popupWindow: function(txt, w, h) {
        if ($('popup')) $('popup').remove();
        new Element('div', {
            'styles': {
                'position': 'absolute',
                'padding': '7px', 
                'z-index': '2',
                'left': window.getSize()['size']['x']/2 - w/2, 
                'top': window.getSize()['size']['y']/2 - h/2 + 70, 
                'border': '1px solid #CCCCCC', 
                'background-color': '#FFFFFF',
                'width': w,
                'height': h
                }, 
            'id': 'popup'}
        ).setHTML(txt).injectInside($$('body')[0]);
    },

    
    loadProp: function(thisId, upd) {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                client.popupWindow(reqRequest.responseText, 250, 370);
                if ($('popup').getElements('input.b')) {
                    $('popup').setStyle('height', $('popup').getElements('input.b').getTop() - $('popup').getTop() + 20);
                }
            }
        }
        reqRequest.open(null, '/zLoader.php', true);        
        reqRequest.send({action: 'loadProp', id: thisId, update: upd});
    },
    
    
    saveProperty: function() { 
        var reqRequest = new JsHttpRequest();                              
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                if ($('itemForm').getElements('input[name=date]')[0]) client.loadContent('zakazList');
                else client.loadContent('skladList');
                if ($('popup')) $('popup').remove();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send(client.sendFormElements('itemForm'));
    },
    
    
    destroyProvodka: function(thisId) {
        var reqRequest = new JsHttpRequest();                              
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                client.loadContent('skladList');
                if ($('popup')) $('popup').remove();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'destroyProvodka', id: thisId});
    },
    
    
    showUserDetail: function(thisId) {
        var reqRequest = new JsHttpRequest();       
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                client.popupWindow(reqRequest.responseText, 380, 305);
                if ($('popup').getElements('input.b')) {
                    $('popup').setStyle('height', $('popup').getElements('input.b').getTop() - $('popup').getTop() + 20);
                }
            }
        }
        reqRequest.open(null, '/zLoader.php', true);        
        reqRequest.send({action: 'showUserDetail', id: thisId});
    },
    
    
    updUser: function() {      
        var reqRequest = new JsHttpRequest();                              
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText == 1) {
                if ($('popup')) $('popup').remove();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send(client.sendFormElements('userForm'));
    },
    
    
    chUser: function(zakazId, userId) {
        var reqRequest = new JsHttpRequest();                              
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $('zakUser').setHTML(reqRequest.responseText+' <a href="javascript:client.chUserSave('+zakazId+', $(\'zakUser\').getChildren()[0].value)"><img src="/img/revert.gif" align="absmiddle" width="9" height="9" title="подтвердить смену хозяина"></a>');
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'chUser', id: userId});
    },
    
    
    chUserSave: function(zakazId, userId) {
        var reqRequest = new JsHttpRequest();                              
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $('zakUser').setHTML(reqRequest.responseText);
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'chUserSave', zId: zakazId, uId: userId});
    },
    
    
    sale: function(zakazId) {
        var reqRequest = new JsHttpRequest();                              
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $("request").setHTML(reqRequest.responseText);
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'sale', id: zakazId});
    },
        
    
    saleBack: function(zakazId) {
        var reqRequest = new JsHttpRequest();                              
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $("request").setHTML(reqRequest.responseText);
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'saleBack', id: zakazId});
    },
    
    
    toArc: function(zakazId) {
        var reqRequest = new JsHttpRequest();                              
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $("request").setHTML(reqRequest.responseText);
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'toArc', id: zakazId});
    },
    
    
    delUser: function(thisId) {
        var reqRequest = new JsHttpRequest();                              
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText == 1) {
                var row = $('u'+thisId).getParent().getParent();
                if (row.tagName == 'TR') row.remove();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'delUser', id: thisId});
    },
    
    
    kontragent: function() {
        var subBut = $('raschetForm').getElements('input.b')[0];
        var plus   = $('raschetForm').getElements('input[name=plus]')[0];
        var minus  = $('raschetForm').getElements('input[name=minus]')[0];
        var minus  = $('raschetForm').getElements('input[name=minus]')[0];
        var data   = $('raschetForm').getElements('input[name=data]')[0];
        if (minus.value!='') plus.disabled = true;
        if (plus.value!='') minus.disabled = true;
        if (minus.value=='') plus.disabled = false;
        if (plus.value=='') minus.disabled = false;
        if (data.value!='' && (minus.value!='' || plus.value!='')) 
             subBut.disabled = false;
        else subBut.disabled = true;
    },
    

    saveRaschet: function(thisId) {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $("request").setHTML(reqRequest.responseText);
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send(client.sendFormElements('raschetForm'));
    },

    
    delRaschetRow: function(date, thisId) { 
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $("request").setHTML(reqRequest.responseText);
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'delRaschetRow', dat: date, id: thisId});
    },
    
    
    search: function() {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {   
            if (reqRequest.readyState == 4 && reqRequest.responseJS.th) {
                if (reqRequest.responseJS && reqRequest.responseJS.razdels) client.drawMenu(reqRequest.responseJS.razdels);
                if (reqRequest.responseJS && reqRequest.responseJS.th) price_th = reqRequest.responseJS.th;
                if (reqRequest.responseJS && reqRequest.responseJS.td) price_td = reqRequest.responseJS.td; else price_td = {};
                client.drawPriceList();
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'search', search: $('search').value, type: $('type').value});
    },


    showAdvPrvPictures: function(this_,ids) {
        var returned = '';
        var ids = ids.split('|');

        for (var i = 0; i < ids.length-1; i++) {
            var id = ids[i].split(',');
            if (id[1] == 0) returned += '<img style="margin-top:24px;" src="http://files.zamknulo.ru/goods/sml/'+id[0]+'_'+(i+2)+'.jpg"><br />';
            if (id[1] != 0) returned += '<img style="margin-top:24px;cursor:pointer;" src="http://files.zamknulo.ru/goods/sml/'+id[0]+'_'+(i+2)+'.jpg" onClick="client.showGoodPic(this, \'http://files.zamknulo.ru/goods/big/'+id[0]+'_'+(i+2)+'.jpg\', '+id[1]+', '+id[2]+');"><br />';
        }

        $(this_).getParent().setHTML(returned);

    },

    sortUp: function() {
        price_td.sort(client.Up);
        client.drawPriceList();
        client.afterRequest();
    },

    sortDn: function() {
        price_td.sort(client.Dn);
        client.drawPriceList();
        client.afterRequest();
    },

    Up: function(a, b) {
        var a = a.price.replace(' ','').replace(',','.').toFloat(),
            b = b.price.replace(' ','').replace(',','.').toFloat();
        return a - b;
    },

    Dn: function(a, b) {
        var a = a.price.replace(' ','').replace(',','.').toFloat(),
            b = b.price.replace(' ','').replace(',','.').toFloat();
        return b - a;
    },


    sendForm: function(this_) {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $("request").setHTML(reqRequest.responseText);
                client.afterRequest();
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send(client.sendFormElements(this_.id));
    },


    messagePlug: function() {
        var htm = '<br /><br /><div align="center"><object type="application/x-shockwave-flash" id="plugoo" data= "http://www.plugoo.com/plug.swf?go=8N6IJHVHTKWU744" width="160" height="300"> <param name="movie" value= "http://www.plugoo.com/plug.swf?go=8N6IJHVHTKWU744" /> <param name="allowScriptAccess" value="always" /> <param name="wmode" value="transparent" /> </object></div>';
        $('tree').setHTML(htm);
    },


    renameTitle: function(this_, thisId) {
        var thisText = this_.getText();
        if (thisText!='') {
            this_.innerHTML = '<form id="renameTitle" onsubmit="client.renameTitleDb(this); return false;"><input type="hidden" name="id" value="'+ thisId +'"><input type="text" name="title" style="width:300px;"> <img src="/img/mini_edit.gif" width="11" height="11" onclick="client.loadGoodTitle('+ thisId +');"></form>';
            $('renameTitle').title.value = thisText;
        }
    },


    renameTitleDb: function(this_) {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                this_.getParent().setHTML(reqRequest.responseText);
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send(client.sendFormElements('renameTitle'));
    },


    loadGoodTitle: function(good) {
        var reqRequest = new JsHttpRequest();
        reqRequest.caching = false;
        reqRequest.onreadystatechange = function() {
            if (reqRequest.readyState == 4 && reqRequest.responseText) {
                $("renameTitle").title.value = reqRequest.responseText;
            }
        }
        reqRequest.open(null, '/zLoader.php', true);
        reqRequest.send({action: 'loadGoodTitle', id: good});
    },


    priceGraph: function(this_, thisId, title) {
        client.popupWindow('<img width="15" height="15" align="right" onclick="client.removeThis($(\'popup\'));" style="cursor: pointer;" title="Закрыть график" src="/img/good_close.gif"/>Динамика цены за последнюю неделю<br /><br />'+ title +'<br /><br /><img src="/graph/'+ thisId +'.png" width="355" height="150" title="Динамика цены за последнюю неделю"><br /><br />'+this_.title, 390, 240);
        $('popup').setStyle('opacity', '0');
        $('popup').setStyle('padding', '15px');
        $('popup').setStyle('text-align', 'center');
        var fx = new Fx.Styles($('popup'), {duration:500, wait:true});
        fx.start({'opacity': [0,1]});

        client.goGo(this_, $('popup'));
    },


    afterRequest: function () {
        client.highlightPrices();
        RequestArea = $('request').innerHTML;
    }

};

window.addEvent('domready', client.start);

//Sorting function

