var ot="", timer=0, x=-1,y=0;
var option_position=0 ;
var beg_value ='' ;
var products =new Array() ;
var orders =new Array() ;
var contragents =new Array() ;

function Product(id,subid,name,comment,price_p,price_n,price_o){
    this.id =id ;
    this.subid =subid ;
    this.name =name ;
    this.comment =comment ;
    this.price_p =price_p ;
    this.price_n =price_n ;
    this.price_o =price_o ;
    this.edizms =Array() ;
}

function Order(id,name,price,code,date,contragent_id,ord_dostavka_cost,city,phone){
    this.id =id ;
    this.name =name ;
    this.price =price ;
    this.code =code ;
    this.date =date ;
    this.contragent_id =contragent_id ;
    this.ord_dostavka_cost =ord_dostavka_cost ;
    this.city =city ;
    this.phone =phone ;
}

function Contragent(id,index,name,city,address,company,inn,rs,bank,type){
    this.id=id ;
    this.index =index ;
    this.name =name ;
    this.city =city ;
    this.address =address ;
    this.company =company ;
    this.inn =inn ;
    this.rs =rs ;
    this.bank =bank ;
    this.type =type ;
}

function Edizm(id,name,koef,is_basic){
    this.id =id ;
    this.name =name ;
    this.koef =koef ;
    this.is_basic =is_basic ;
}



function getObj(objID){
    if (document.getElementById) {
        return document.getElementById(objID);
    } else if (document.all) {
        return document.all[objID];
    } else if (document.layers) {
        return document.layers[objID];
    }
}

function ajaxLoad(obj,formname, url0,defMessage,post,callback){
    var ajaxObj;

    url =encodeURI(url0) ;
    //alert(url) ;
    
    if (defMessage) document.getElementById(obj).innerHTML=defMessage;
    if (window.XMLHttpRequest) {
        ajaxObj = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        ajaxObj = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        return; 
    } 

    //ajaxObj.open ((post?'POST':'GET'), url);
    ajaxObj.open ('POST', url);
    if (post&&ajaxObj.setRequestHeader)
        ajaxObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=windows-1251;");
    ajaxObj.setRequestHeader("Referer", location.href); // нужен в Donate
    
    if (obj=='cart') {
        ajaxObj.onreadystatechange = ajaxManageCart(obj,formname,ajaxObj,(callback?callback:null));
    } else if (obj=='captcha') {
        ajaxObj.onreadystatechange = ajaxRefreshCaptcha(obj,formname,ajaxObj,(callback?callback:null));
    } else if (obj=='accounts') {
        ajaxObj.onreadystatechange = ajaxManageAccounts(obj,formname,ajaxObj,(callback?callback:null));
    } else if (obj=='mols') {
        ajaxObj.onreadystatechange = ajaxManageMols(obj,formname,ajaxObj,(callback?callback:null));
    } else if (obj=='zakups') {
        ajaxObj.onreadystatechange = ajaxManageZakups(obj,formname,ajaxObj,(callback?callback:null));
    } else if (obj=='zakupcontra') {
        ajaxObj.onreadystatechange = ajaxManageZakupContra(obj,formname,ajaxObj,(callback?callback:null));
    } else if (obj=='reasoncontragent') {
        ajaxObj.onreadystatechange = ajaxSetContragent(obj,formname,ajaxObj,(callback?callback:null));
    } else if (obj=='getrest') {
        ajaxObj.onreadystatechange = ajaxManageRest(obj,formname,ajaxObj,(callback?callback:null));
    } else if (obj=='transagents') {
        ajaxObj.onreadystatechange = ajaxManageAgents(obj,formname,ajaxObj,(callback?callback:null));
    } else if (obj=='updatetransagent' || obj=='updatecartcountry') {
        ajaxObj.onreadystatechange = ajaxUpdateCart(obj,formname,ajaxObj,(callback?callback:null));
    } else if (obj=='paytypes' || obj=='paytypesbyagent') {
        ajaxObj.onreadystatechange = ajaxManagePayTypes(obj,formname,ajaxObj,(callback?callback:null));
    } else if (obj=='request_param') {
        ajaxObj.onreadystatechange = ajaxManageFeedbackRequest(obj,formname,ajaxObj,(callback?callback:null));
    } else {
        ajaxObj.onreadystatechange = ajaxCallBack(obj,formname,ajaxObj,(callback?callback:null));
    }
    
    ajaxObj.send(post); 
    return false;
} 

function ss1(){
    alert('ss') ;
    return false ;
}

function addEdizmForProduct(product_id,edizm){
    for (k=0; k < products.length; k++) {
        if(products[k].id == product_id) {
            products[k].edizms[edizm.id] =edizm ;
        }
    } 
}

function ajaxCallBack(obj, formname, ajaxObj, callback){
    return function(){
        if (ajaxObj.readyState == 4) {
            if (callback) if (!callback(obj,ajaxObj))return;
            if (ajaxObj.status==200) {
                if (ajaxObj.getResponseHeader("Content-Type").indexOf("application/x-javascript")>=0) {
                    eval(ajaxObj.responseText);
                } else {
                    
                    if (obj=='weight') {
                        count_total_weight() ;
                        return ;
                    }

                    if (obj=='cost') {
                        count_total_cost() ;
                        return ;
                    }

                    if (obj=='code') {
                        count_total_codes() ;
                        return ;
                    }

                    var ss =document.getElementById(obj+'div') ;
                    if (ss!=null) {
                        ss.innerHTML = '';
                    }

                    //alert(ajaxObj.responseText) ;

                    var str = ajaxObj.responseText.split("\n");
                    j=0 ;
                    

                    if (formname=='cart') {
                        alert('cart='+str) ;
                    } else if (formname=='orderform') {
                        products =new Array() ;
                        
                        for (i=0; i < str.length - 1; i++) {
                            
                            if (trim(str[i])=='') {
                                continue
                            }

                            //alert(str[i]) ;
                            var prodinfo = str[i].split("=");

                            
                                prod_id    =prodinfo[1] ;
                                prod_subid  =prodinfo[2] ;
                                prod_name  =prodinfo[3] ;
                                prod_comment  =prodinfo[4] ;
                                prod_price_p =prodinfo[5] ;
                                prod_price_n =prodinfo[6] ;
                                prod_price_o =prodinfo[7] ;
    
                                //alert(prod_id+' '+prod_code+' '+prod_name+' '+prod_price_p+' '+prod_price_n+' '+prod_price_o) ;
    
                                products[j] =new Product(prod_id,prod_subid,prod_name,prod_comment,prod_price_p,prod_price_n,prod_price_o) ;
    
                                var suggest = '<div id="option'+ (j++) +'" onmouseover="javascript:suggestOver(this);" ';
                                suggest += 'onmouseout="javascript:suggestOut(this);" ';
                                suggest += 'onclick="javascript:setSearch(\''+ obj +'\',\''+formname+'\','+j+');" ';
                                suggest += 'class="suggest_link">'+prod_name+' '+prod_comment+' '+ prod_price_p+'/'+prod_price_n + '</div>';
                                ss.innerHTML += suggest;
                          }

                    } else if (formname=='payform' || formname=='otkazform') {
                        orders =new Array() ;
                        
                        for (i=0; i < str.length - 1; i++) {
                            if (trim(str[i])=='') {
                                continue
                            }

                            //alert(str[i]) ;
                            var orderinfo = str[i].split("=");
                            
                            ord_id        =orderinfo[0] ;
                            ord_ind       =orderinfo[1] ;
                            ord_name      =orderinfo[2] ;
                            ord_city      =orderinfo[3] ;
                            ord_date      =orderinfo[4] ;
                            ord_code      =orderinfo[5] ;
                            ord_sum       =orderinfo[6] ;
                            ord_contra_id =orderinfo[7] ;
                            ord_dostavka_cost =orderinfo[8] ;
                            ord_phone =orderinfo[9] ;
                            
                            //alert('ord_city='+ord_city+" ord_phone="+ord_phone) ;
                            //alert(ord_id+' '+ord_ind+' '+ord_name+' '+ord_city) ;

                            orders[j] =new Order(ord_id,ord_name,ord_sum,ord_code,ord_date,ord_contra_id,ord_dostavka_cost,ord_city,ord_phone) ;

                            var suggest = '<div id="option'+ (j++) +'" onmouseover="javascript:suggestOver(this);" ';
                            suggest += 'onmouseout="javascript:suggestOut(this);" ';
                            suggest += 'onclick="javascript:setSearch(\''+ obj +'\',\''+formname+'\','+j+');" ';
                            suggest += 'class="suggest_link">'+ ord_date + ' #'+ ord_code+ ' $='+ ord_sum + '<br>' + ord_name+'<br>'+ord_ind+'&nbsp;' +ord_city + '</div>';
                            ss.innerHTML += suggest;
                        }
                        
                    } else if (formname == 'guestclientform') {
                        var region_obj =document.getElementById("oblastobj") ;
                        var city_obj =document.getElementById("cityobj") ;  

                        for (i=0; i < str.length - 1; i++) {
                            if (trim(str[i])=='') {
                                continue
                            }

                            var info = str[i].split("=");
                            
                            region_obj.value =info[0] ;
                            city_obj.value   =info[1] ;
                            
                            break ;
                        }

                    } else if (formname == 'clientform') {
                        clients =new Array() ;
                        var suggest ="" ;
                        for (i=0; i < str.length - 1; i++) {
                            if (trim(str[i])=='') {
                                continue
                            }

                            var prodinfo = str[i].split("=");
                            
                            if (prodinfo.length ==2) {// оригинальное название города по справочнику
                                var city =document.getElementById("client_city") ;
                                var oblast =document.getElementById("client_oblast") ;
                                if (city != null && oblast != null) {
                                    city.value =trim(prodinfo[1]) ;
                                    oblast.value =trim(prodinfo[0]) ;
                                    continue ;
                                }
                            } else {
                                client_id    =prodinfo[0] ;
                                client_index  =prodinfo[1] ;
                                client_fio  =prodinfo[2] ;
                                client_city =prodinfo[3] ;
                                client_address =prodinfo[4] ;
                                client_phone =prodinfo[5] ;
                                client_email =prodinfo[6] ;
                                client_oblast =prodinfo[7] ;
                                
                                clients[j] =new Client(client_id,client_index,client_fio,client_city,client_address,client_phone,client_email,client_oblast) ;
                                suggest +="<tr><td><a href=\"javascript:useClient("+(j++)+")\" title=\"Использовать данные клиента\"><img src=\"/xsl/staroslav/img/return.png\" border=\"0\"></a></td>" ;
                                suggest +="<td><b>"+client_fio+"</b><br />"+client_city+"<br />"+client_address+"<br />"+client_phone+"<br />"+client_email+"</td></tr>" ;
                            }
                        }

                        var client_list =document.getElementById("client_list") ;
                        if (client_list == null) {
                            alert("no client list area...!") ;
                            return ;
                        } else {
                            var tab ="<table class=\"clients\" cellpadding=\"0\" cellspacing=\"0\"><tr><th colspan=\"2\" nowrap=\"1\">Клиенты по этому индексу:</th></tr>" ;
                            tab +=suggest ;
                            tab +="</table>" ;
                            client_list.innerHTML =tab ;
                        }
                    } else if (formname == 'conform') {
                        contragents =new Array() ;
                        var suggest ="" ;
                        for (i=0; i < str.length - 1; i++) {
                            if (trim(str[i])=='') {
                                continue
                            }

                            var coninfo = str[i].split("=");
                            
                            client_id    =coninfo[0] ;
                            client_index  =coninfo[1] ;
                            client_fio  =coninfo[2] ;
                            client_city =coninfo[3] ;
                            client_address =coninfo[4] ;
                            client_company =coninfo[5] ;
                            client_inn =coninfo[6] ;
                            client_rs =coninfo[7] ;
                            client_bank =coninfo[8] ;
                            client_type =coninfo[9] ;
                            
                            contragents[j] =new Contragent(client_id,client_index,client_fio,client_city,client_address,client_company,client_inn,client_rs,client_bank,client_type) ;

                            var suggest = '<div id="option'+ (j++) +'" onmouseover="javascript:suggestOver(this);" ';
                            suggest += 'onmouseout="javascript:suggestOut(this);" ';
                            suggest += 'onclick="javascript:setSearch(\''+ obj +'\',\''+formname+'\','+j+');" ';
                            if (client_type==0) {// физлицо
                                suggest += 'class="suggest_link">'+ client_fio+ ' #'+ client_city +' <br>'+client_address +'</div>';
                            } else { // юрлицо
                                suggest += 'class="suggest_link">'+ client_company + ' #'+ client_city+ ' <br>'+ client_inn +' р.с.:'+client_rs+' в '+client_bank  + '</div>';
                            }
                            
                            ss.innerHTML += suggest;
                            
                        }
                    } else {
                        for (i=0; i < str.length - 1; i++) {
                            str_cur =trim(str[i]) ;
                            if (str_cur=='') {
                                continue
                            }
                            var suggest = '<div id="option'+ (j++) +'" onmouseover="javascript:suggestOver(this);" ';
                            suggest += 'onmouseout="javascript:suggestOut(this);" ';
                            suggest += 'onclick="javascript:setSearch(\''+ obj +'\',\''+formname+'\',\''+str_cur+'\');" ';
                            //suggest += ' onclick="alert(22)" ';
                            suggest += 'class="suggest_link">' + str_cur + '</div>';
                            ss.innerHTML +=suggest;
                        }
                        //alert(ss.innerHTML) ;
                    }
                   
                    if (j>0) {
                        showLayer(obj) ;
                    } else {
                        hideLayer(obj) ;
                    }
                    
                }
            }
        }
    }
}

function ajaxManageCart(obj, formname, ajaxObj, callback){
    return function(){
        if (ajaxObj.readyState == 4) {
            if (callback) if (!callback(obj,ajaxObj))return;
            if (ajaxObj.status==200) {
                if (ajaxObj.getResponseHeader("Content-Type").indexOf("application/x-javascript")>=0) {
                    eval(ajaxObj.responseText);
                } else {
                    var str = ajaxObj.responseText.split("\n");
                    
                    if (formname=='cart') {
                        alert(str) ;

                    } else {
                        alert('unknown object for cart') ;
                    }
                }
            }
        }
    }
}

function ajaxManageAccounts(obj, formname, ajaxObj, callback){
    return function(){
        if (ajaxObj.readyState == 4) {
            if (callback) if (!callback(obj,ajaxObj))return;
            if (ajaxObj.status==200) {
                if (ajaxObj.getResponseHeader("Content-Type").indexOf("application/x-javascript")>=0) {
                    eval(ajaxObj.responseText);
                } else {
                    var str = ajaxObj.responseText.split("\n");
                    
                    var accs ='<select id="accounts" name="account" class="ptype">' ;
                    for (i=0; i < str.length - 1; i++) {
                        if (trim(str[i])=='') {
                            continue
                        }

                        //alert(str[i]) ;
                        var accinfo = str[i].split("=");
                        
                        acc_id        =accinfo[0] ;
                        acc_name      =accinfo[1] ;
                        acc_basic     =accinfo[2] ;
                        acc_rest      =accinfo[3] ;
                        
                        var sel ='' ;

                        //alert('acc_basic='+acc_basic) ;
                        if (acc_basic==1) {
                            sel =' selected="1"' ;
                        }

                        accs +='<option value="'+acc_id+'" '+sel+'>['+ acc_rest +'] '+acc_name+'<\/option>' ;
                    }
                    accs +='<\/select>' ;
                    var selobj =document.getElementById("account") ;
                    if (selobj!=null) {
                        selobj.innerHTML =accs ;
                    } else {
                        alert('select DIV does not exist') ;
                    }
                }
            }
        }
    }
}

function ajaxRefreshCaptcha(obj, formname, ajaxObj, callback){
    return function(){
        if (ajaxObj.readyState == 4) {
            if (callback) if (!callback(obj,ajaxObj))return;
            if (ajaxObj.status==200) {
                if (ajaxObj.getResponseHeader("Content-Type").indexOf("application/x-javascript")>=0) {
                    eval(ajaxObj.responseText);
                } else {
                    var id = trim(ajaxObj.responseText) ;
                    //alert(id) ;
                    var capid =document.getElementById("capid") ;
                    var img =document.getElementById("cap") ;
                    capid.value =id ;
                    img.src ="/jcaptcha?id="+id ;
                }
            }
        }
    }
}

function ajaxManageZakups(obj, formname, ajaxObj, callback){
    return function(){
        if (ajaxObj.readyState == 4) {
            if (callback) if (!callback(obj,ajaxObj))return;
            if (ajaxObj.status==200) {
                if (ajaxObj.getResponseHeader("Content-Type").indexOf("application/x-javascript")>=0) {
                    eval(ajaxObj.responseText);
                } else {
                    var str = ajaxObj.responseText.split("\n");
                    
                    var accs ='&nbsp;<select id="zakups" name="zakup_id" class="zakups" onchange="change_zakup(this)">' ;
                    for (i=0; i < str.length - 1; i++) {
                        if (trim(str[i])=='') {
                            continue
                        }

                        //alert(str[i]) ;
                        var zakupinfo = str[i].split("=");
                        
                        zakup_id        =zakupinfo[0] ;
                        zakup_name      =zakupinfo[1] ;
                        zakup_date      =zakupinfo[2] ;    
                        zakup_sel       =zakupinfo[3] ;
                        zakup_sum       =zakupinfo[4] ;
                        zakup_con_name  =zakupinfo[5] ;
                        
                        var sel ='' ;
                        if (zakup_sel==1) {
                            sel =' selected="1"' ;
                        }

                        accs +='<option value="'+zakup_id+'" '+sel+'>'+zakup_name+ ' ' +zakup_con_name+' ['+ zakup_sum +'] ' +'<\/option>' ;
                    }
                    accs +='<\/select>' ;
                    var molobj =document.getElementById("reason_detail") ;
                    if (molobj!=null) {
                        molobj.innerHTML =accs ;
                    } else {
                        alert('select DIV does not exist') ;
                    }
                }
            }
        }
    }
}

function ajaxManageZakupContra(obj, formname, ajaxObj, callback){
    return function(){
        if (ajaxObj.readyState == 4) {
            if (callback) if (!callback(obj,ajaxObj))return;
            if (ajaxObj.status==200) {
                if (ajaxObj.getResponseHeader("Content-Type").indexOf("application/x-javascript")>=0) {
                    eval(ajaxObj.responseText);
                } else {
                    var str = ajaxObj.responseText.split("\n");
                    
                    contragents =new Array() ;
                    
                    for (i=0; i < str.length - 1; i++) {
                        if (trim(str[i])=='') {
                            continue
                        }

                        var coninfo = str[i].split("=");
                        
                        client_id    =coninfo[0] ;
                        client_index  =coninfo[1] ;
                        client_fio  =coninfo[2] ;
                        client_city =coninfo[3] ;
                        client_address =coninfo[4] ;
                        client_company =coninfo[5] ;
                        client_inn =coninfo[6] ;
                        client_rs =coninfo[7] ;
                        client_bank =coninfo[8] ;
                        client_type =coninfo[9] ;

                        zakup_sum =coninfo[10] ;

                                              
                        if(client_id == -1) {
                            clearContragent() ;
                        }else{
                            var contra =new Contragent(client_id,client_index,client_fio,client_city,client_address,client_company,client_inn,client_rs,client_bank,client_type) ;
                            setContragent(contra,true/* блокируем ручное изменение */) ;
                            // устанавливаем сумму из закупа
                            var sumobj =document.getElementById("summa") ;
                            sumobj.value =zakup_sum ;
                        }
                        break ;
                        
                    }
                }
            }
        }
    }
}

function ajaxManageMols(obj, formname, ajaxObj, callback){
    return function(){
        if (ajaxObj.readyState == 4) {
            if (callback) if (!callback(obj,ajaxObj))return;
            if (ajaxObj.status==200) {
                if (ajaxObj.getResponseHeader("Content-Type").indexOf("application/x-javascript")>=0) {
                    eval(ajaxObj.responseText);
                } else {
                    var str = ajaxObj.responseText.split("\n");
                    
                    var accs ='на МОЛ:&nbsp;<select id="mols" name="mol_id" class="ptype">' ;
                    for (i=0; i < str.length - 1; i++) {
                        if (trim(str[i])=='') {
                            continue
                        }

                        //alert(str[i]) ;
                        var molinfo = str[i].split("=");
                        
                        mol_id        =molinfo[0] ;
                        mol_name      =molinfo[1] ;
                        mol_sel       =molinfo[2] ;
                        
                        var sel ='' ;
                        if (mol_sel==1) {
                            sel =' selected="1"' ;
                        }

                        accs +='<option value="'+mol_id+'" '+sel+'>'+mol_name+'<\/option>' ;
                    }
                    accs +='<\/select>' ;
                    var molobj =document.getElementById("reason_detail") ;
                    if (molobj!=null) {
                        molobj.innerHTML =accs ;
                    } else {
                        alert('select DIV does not exist') ;
                    }
                }
            }
        }
    }
}

function ajaxSetContragent(obj, formname, ajaxObj, callback){
    return function(){
        if (ajaxObj.readyState == 4) {
            if (callback) if (!callback(obj,ajaxObj))return;
            if (ajaxObj.status==200) {
                if (ajaxObj.getResponseHeader("Content-Type").indexOf("application/x-javascript")>=0) {
                    eval(ajaxObj.responseText);
                } else {
                    var str = ajaxObj.responseText.split("\n");
                    
                    contragents =new Array() ;
                    
                    for (i=0; i < str.length - 1; i++) {
                        if (trim(str[i])=='') {
                            continue
                        }

                        var coninfo = str[i].split("=");
                        
                        client_id    =coninfo[0] ;
                        client_index  =coninfo[1] ;
                        client_fio  =coninfo[2] ;
                        client_city =coninfo[3] ;
                        client_address =coninfo[4] ;
                        client_company =coninfo[5] ;
                        client_inn =coninfo[6] ;
                        client_rs =coninfo[7] ;
                        client_bank =coninfo[8] ;
                        client_type =coninfo[9] ;

                                              
                        if(client_id == -1) {
                            clearContragent() ;
                        }else{
                            var contra =new Contragent(client_id,client_index,client_fio,client_city,client_address,client_company,client_inn,client_rs,client_bank,client_type) ;
                            setContragent(contra,true/* блокируем ручное изменение */) ;
                        }
                        break ;
                        
                    }
                }
            }
        }
    }
}

function ajaxManageRest(obj, formname, ajaxObj, callback){
    return function(){
        if (ajaxObj.readyState == 4) {
            if (callback) if (!callback(obj,ajaxObj))return;
            if (ajaxObj.status==200) {
                if (ajaxObj.getResponseHeader("Content-Type").indexOf("application/x-javascript")>=0) {
                    eval(ajaxObj.responseText);
                } else {
                    var str = ajaxObj.responseText ;
                    
                    var total_ =document.getElementById("rest") ;
                    if (total_ != null) {
                        total_.innerHTML ='<b>'+str+'</b>' ;
                    }
                }
            }
        }
    }
}

function ajaxManageAgents(obj, param, ajaxObj, callback){
    return function(){
        if (ajaxObj.readyState == 4) {
            if (callback) if (!callback(obj,ajaxObj))return;
            if (ajaxObj.status==200) {
                if (ajaxObj.getResponseHeader("Content-Type").indexOf("application/x-javascript")>=0) {
                    eval(ajaxObj.responseText);
                } else {
                    var str = ajaxObj.responseText ;
                    
                    var td_obj =document.getElementById("agenttd") ;
                    var td_img_obj =document.getElementById("transimg") ;
                    var div_obj =document.getElementById("agent_info") ;

                    if (td_obj == null) {
                        alert('Ошибка! Не задан TD для отображения селекта со списком агентов!') ;
                        return ;
                    }
                    
                    if(param==0) {// Почта России
                        if(td_img_obj != null){
                            td_img_obj.innerHTML ='&nbsp;' ;
                        }
                        if(td_obj != null) {
                            if(td_img_obj != null){// на клиентском сайте
                                td_obj.innerHTML ='<div id="agent_info" />' ;
                            }else{// в бекенде
                                td_obj.innerHTML ='&nbsp;' ;
                                var pay_type_td_obj =document.getElementById("ptype_td") ;
                                text  ='<select tabindex="1" class="trans_agent" name="payment_type">' ;
                                text +='<option value="1">Наложенным платежом<\/option>' ;
                                text +='<option value="0">По предоплате<\/option>' ;
                                text +='</select>' ;
                                pay_type_td_obj.innerHTML =text ;
                            }
                        }
                    }else{
                        td_obj.innerHTML =str ;
                        if(td_img_obj != null){
                            td_img_obj.innerHTML ='<img src="/xsl/staroslav/img/arrow-right.png"/>' ;
                        }else{// backend
                            var current_type =document.getElementById("transfer_type").value ;
                            adjustAvailablePayTypes(current_type) ;
                        }
                    }
                    
                }
            }
        }
    }
}

function ajaxUpdateCart(obj, formname, ajaxObj, callback){
    return function(){
        if (ajaxObj.readyState == 4) {
            if (callback) if (!callback(obj,ajaxObj))return;
            if (ajaxObj.status==200) {
                if (ajaxObj.getResponseHeader("Content-Type").indexOf("application/x-javascript")>=0) {
                    eval(ajaxObj.responseText);
                } else {
                    var str = ajaxObj.responseText ;
                    if(obj=='updatetransagent') {
                        var div_obj =document.getElementById("agent_info") ;
                        div_obj.innerHTML =str ;

                        // для бекенда корректируем типы оплат
                        if(document.getElementById("ptype_td") != null) {
                            var current_agent =document.getElementById("trans_agent").value ;
                            adjustAvailablePayTypes(current_agent) ;
                        }
                    }
                    if(obj=='updatecartcountry') {
                        
                    }
                }
            }
        }
    }
}

function ajaxManagePayTypes(obj, formname, ajaxObj, callback){
    return function(){
        if (ajaxObj.readyState == 4) {
            if (callback) if (!callback(obj,ajaxObj))return;
            if (ajaxObj.status==200) {
                if (ajaxObj.getResponseHeader("Content-Type").indexOf("application/x-javascript")>=0) {
                    eval(ajaxObj.responseText);
                } else {
                    var str = ajaxObj.responseText ;
                    var pay_type_td_obj =document.getElementById("ptype_td") ;
                    if(pay_type_td_obj == null) {
                        alert('ОШИБКА! Не задан ptype_td для типов оплат') ;
                        return ;
                    }
                    pay_type_td_obj.innerHTML =str ;
                }
            }
        }
    }
}

function ajaxManageFeedbackRequest(obj, formname, ajaxObj, callback){
    return function(){
        if (ajaxObj.readyState == 4) {
            if (callback) if (!callback(obj,ajaxObj))return;
            if (ajaxObj.status==200) {
                if (ajaxObj.getResponseHeader("Content-Type").indexOf("application/x-javascript")>=0) {
                    eval(ajaxObj.responseText);
                } else {
                    var str = ajaxObj.responseText.split("#");

                    var ans_editor =document.getElementById("ans_editor") ;
                    var ans_author =document.getElementById("ans_author") ;

                    if(ans_editor == null || ans_author == null) {
                        alert('ОШИБКА! Не заданы объекты селектов для автора и/или редактора') ;
                        return ;
                    }
                    ans_author.innerHTML =str[0] ;
                    ans_editor.innerHTML =str[1] ;
                }
            }
        }
    }
}


function PressKey2(e,objname){ // вызывается при нажатии клавиши в select
    e=e||window.event;
    t=(window.event) ? window.event.srcElement : e.currentTarget; // объект для которого вызывно
    
    if (e.keyCode==13) { // Enter
        t=(window.event) ? window.event.srcElement : e.currentTarget; // объект для которого вызывно
        t.form.onsubmit();
        return;
    }
    if ((e.keyCode==38 && t.selectedIndex==0) || e.keyCode==27) { // Up or ESC
        getObj(objname+'id').focus();
        //getObj(objname).className = 'hideselect';	// спрячем select
        hideLayer(objname) ;
    }
}
// Определение координаты элемента
function pageX(elem) {
    return elem.offsetParent ?
    elem.offsetLeft + pageX( elem.offsetParent ) :
    elem.offsetLeft;
}
function pageY(elem) {
    return elem.offsetParent ?
    elem.offsetTop + pageY( elem.offsetParent ) :
    elem.offsetTop;
}

function absPosition(obj) { 
    var x = y = 0; 
    while (obj) {
        x += obj.offsetLeft; 
        y += obj.offsetTop; 
        obj = obj.offsetParent; 
    } 
    return {x:x, y:y}; 
}

//Mouse over function
function suggestOver(div_value) {
    div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
    div_value.className = 'suggest_link';
}

//Click function
function setSearch(obj,formname,value) {
    //alert('set search '+formname+' value='+value) ;
    var inp =getObj(obj+'id') ;
    
    hideLayer(obj) ;
    
    if (formname =='orderform') {
        var current_product =products[value-1] ;
        if (typeof(current_product)=='undefined' || current_product == null) {
            return ;
        }
        inp.value ='' ;
        inp.blur() ;
        addProduct(current_product.id,current_product.subid,current_product.name,current_product.comment,current_product.price_p,current_product.price_n,current_product.price_o) ;
        var numcel =document.getElementById('num'+current_product.id+'E'+current_product.subid) ;
        numcel.focus() ;
    } else if (formname =='payform') {
        var current_order =orders[value-1] ;
        //alert(current_order) ;
        if (typeof(current_order)=='undefined' || current_order == null) {
            return ;
        }
        inp.value ='' ;
        inp.blur() ;
        addOrder(current_order.id,current_order.name,current_order.price) ;
        var numcel =document.getElementById('sum'+current_order.id) ;
        numcel.focus() ;
    } else if (formname =='otkazform') {
        var current_order =orders[value-1] ;
        
        if (typeof(current_order)=='undefined' || current_order == null) {
            return ;
        }
        inp.value ='' ;
        inp.blur() ;
        setOrder(current_order.id,current_order.name,current_order.price,current_order.code,current_order.date,current_order.contragent_id,current_order.ord_dostavka_cost,current_order.city,current_order.phone) ;
        var numcel =document.getElementById("reason") ;
        numcel.focus() ;
    } else if (formname =='conform') {
        var current_contragent =contragents[value-1] ;
        
        if (typeof(current_contragent)=='undefined' || current_contragent == null) {
            return ;
        }
        setContragent(current_contragent) ;
        //inp.value ='' ;
        inp.blur() ;
    } else {
        inp.value =trim(value) ;
        var frm =getObj(formname) ;
        if (frm!=null) {
            hid =frm[obj+'search'] ;
            if (hid!=null) {
                hid.value=1 ;
            } else {
                alert("hidden ["+obj+"]search not found") ;
                return ;
            }
            frm.submit() ;
        } else {
            alert('form name ['+obj+'form] not defined') ;
        }
    }
}

function test8(){
    alert('qwer') ;
    return false ;
}


function PressKey(e,objname,formname){
    //alert('press key='+objname+"/"+formname) ;
    e=e||window.event;
    t=(window.event) ? window.event.srcElement : e.currentTarget; // объект для которого вызывно

    var current_product =products[option_position] ;
    if (typeof(current_product)!='undefined') {
        //alert("products["+option_position+"]="+current_product.name) ;
    }
    var current_order =orders[option_position] ;

    //alert("PressKey op="+option_position) ;

    setPos(objname+'id',objname+'div',1,{'x':0, 'y':1}); 

    gd =getObj(objname+'div');
    inpobj =getObj(objname+'id');

    if (e.keyCode==27) { // ESC
        timer=0; 
        hideLayer(objname) ;
        return;
    }

    if (e.keyCode==13) { // Enter
        timer=0; 
        
        var current_product =products[option_position-1] ;
        var current_order =orders[option_position-1] ;
        var current_contra =contragents[option_position-1] ;
        /*
        if(typeof(current_product)!='undefined'){
            alert("products["+option_position+"]="+current_product.name) ;
        }
        */
        
        hideLayer(objname) ;

        if (formname == 'orderform') {
            if (typeof(current_product)=='undefined' || current_product == null) {
                return ;
            }
            inpobj.value ='' ;
            //inpobj.blur() ;
            
            addProduct(current_product.id,current_product.subid,current_product.name,current_product.comment,current_product.price_p,current_product.price_n,current_product.price_o) ;
            var numcel =document.getElementById('num'+current_product.id+'E'+current_product.subid) ;
            numcel.focus() ;
        } else if (formname == 'payform') {
            //alert('pay form1')
            
            if (typeof(current_order)=='undefined' || current_order == null) {
                return ;
            }
            inpobj.value ='' ;
            //inpobj.blur() ;
            addOrder(current_order.id,current_order.name,current_order.price) ;
            var numcel =document.getElementById('sum'+current_order.id) ;
            numcel.focus() ;
        } else if (formname == 'conform') {
            if (typeof(current_contra)=='undefined' || current_contra == null) {
                alert('contra = null') ;
                return ;
            }
            inpobj.value ='' ;
            setContragent(current_contra) ;
        } else if (formname == 'otkazform') {
            //alert('pay form1')
            
            if (typeof(current_order)=='undefined' || current_order == null) {
                return ;
            }
            inpobj.value ='' ;
            //inpobj.blur() ;
            setOrder(current_order.id,current_order.name,current_order.price,current_order.code,current_order.date,current_order.contragent_id,current_order.ord_dostavka_cost,current_order.city,current_order.phone) ;
            var numcel =document.getElementById("reason") ;
            numcel.focus() ;
        } else {
            frm =getObj(formname) ;
            if (frm!=null) {
                //alert(frm.name.value) ;
                hid =frm[objname+'search'] ;
                if (hid!=null) {
                    hid.value=1 ;
                } else {
                    alert("hidden ["+objname+"]search not found") ;
                    return ;
                }
                frm.submit() ;
            } else {
                alert('form name ['+objname+'form] not defined') ;
            } 
             
        }
        return;
    }

    if (e.keyCode==38) { // стрелка вверх
        //g.focus();
        //g.selectedIndex=0;
        //return;

        //alert('start option='+option_position) ;
        
        div_cur =getObj('option'+(option_position-1)) ;
        div_next =getObj('option'+(option_position-2)) ;
        
        if (div_next != null) {
            div_cur.className ='suggest_link' ;
            div_next.className ='suggest_link_over' ;
            option_position-- ;
            inpobj.value =div_next.innerHTML ;
        } else {
            if (products.length>0) {
                option_position =products.length ;
                div_prev =getObj('option0') ;
                div_next =getObj('option'+(option_position-1)) ;
                div_prev.className ='suggest_link' ;
                div_next.className ='suggest_link_over' ;
                inpobj.value =div_next.innerHTML ;
            }
        }
        
        //alert('end option='+option_position) ;

        return ;
    }

    if (e.keyCode==40) { // стрелка вниз
        //g.focus();
        //g.selectedIndex=0;
        //return;
        
        //alert('start option='+option_position) ;

        div_cur =getObj('option'+(option_position-1)) ;
        div_next =getObj('option'+option_position) ;
        
        if (div_cur == null) {
            div_cur =div_next ;
            div_cur.className ='suggest_link' ;
        } else {
            //alert('prev div undefined') ;
        }
        
        if (div_next != null) {
            div_cur.className ='suggest_link' ;
            div_next.className ='suggest_link_over' ;
            inpobj.value =div_next.innerHTML ;
            option_position++ ;
        } else {
            //alert('cur div undefined') ;
            //if(div_prev != null){
            //	div_prev.className ='suggest_link_over' ;
            //}
            //option_position-- ;
        }

        //alert('end option='+option_position) ;
        
        return ;
    }


    if (ot==t.value)return; // если ничего не изменилось не "замучить" сервер
    ot=t.value;
    if (timer)clearTimeout(timer);
    var max_len =3 ;
    if (objname == 'index' || objname == 'clientindex') {
        max_len =6 ;
    }

    if (ot.length<max_len) {
        timer=0; 
        hideLayer(objname) ;
        return;
    }

    timer=window.setTimeout("Load('"+objname+"','"+formname+"')",300);   // загружаю через 1 секунду после последнего нажатия клавиши
}

function Load(target,formname){
    var obj =getObj(target+'div') ;
    var objname =obj.name ;
    var page ='search' ;
    addparam ="" ;

    if (formname=='orderform') {
        page ='searchproduct' ;
        var oper_type =document.getElementById("oper_type") ;
        if(oper_type == null) {
            alert("Hidden oper_type not defined!") ;
            return ;
        }
        
        addparam ="&oper_type="+oper_type.value ;
    }

    if (target == "con") { // контрагент
        addparam ="&contype="+"0" ;//getCurrentConType() ;
    }

    ajaxLoad(target, formname, '/ecom/'+page+'.jsp?target='+target+addparam+'&pattern='+trim(ot), '','','');
    
    timer=0;
}

function ChangeCart(action,value){
    var page ='ecomajx' ;

    /*
    var valobj =document.getElementById(target) ;
    if(valobj==null){
        alert('invalid value object') ;
        return ;
    }
    var value =trim(valobj.value) ;
    if(value == 'undefined' || value == ''){
        alert('error: value is:'+value) ;
        return ;
    }
    */

    ajaxLoad('cart', 'cart', '/ecom/'+page+'.jsp?obj=cart&act='+action+'&val='+value, '','','');
}

function loadAgents(id){
    ajaxLoad('transagents', id, '/ecom/ajxservice.jsp?act=transagents&type_id='+id, '','','');
}

function refreshCaptcha(){
    ajaxLoad('captcha', '', '/ecom/ajxservice.jsp?act=captcha', '','','');
}

function adjustAvailablePayTypes(type_id){
    ajaxLoad('paytypes', id, '/ecom/ajxservice.jsp?act=paytypes&type_id='+type_id,'','','');
}

function adjustAvailablePayTypesByAgent(agent_id){
    ajaxLoad('paytypesbyagent', id, '/ecom/ajxservice.jsp?act=paytypesbyagent&agent_id='+agent_id,'','','');
}

function updateCartTransAgent(id){
    ajaxLoad('updatetransagent', '', '/ecom/ajxservice.jsp?act=updatetransagent&agent_id='+id, '','','');
}

function updateCartCountry(is_foreign){
    ajaxLoad('updatecartcountry', '', '/ecom/ajxservice.jsp?act=updatecartcountry&is_foreign='+(is_foreign?1:0), '','','');
}

function showLayer(id){
    if (id != 'index') {
        var ooo =getObj(id+'div') ;
        var inp =getObj(id+'id') ;
        ooo.className="showselectdiv" ;
        option_position =0 ;
        if (inp != null) {
            beg_value =inp.value ;
        }
    } else {
        //alert('show clients') ;
    }
}

function hideLayer(id){
    if (id != 'index') {
        var ooo =getObj(id+'div') ;
        if (ooo != null) {
            ooo.innerHTML ='' ;
            ooo.className="hideselectdiv" ;
            option_position =0 ;
            beg_value ='' ;
        } else {
            alert('div ['+ id +'] undefined') ;
        }
    } else {
        var client_list =document.getElementById("client_list") ;
        if (client_list == null) {
            alert("no client list area...!") ;
            return ;
        } else {
            client_list.innerHTML ="" ;
        }

    }
    
}


function setPosXY(obj,x,y) {
    if (obj) {
        obj.style.position='absolute';
        obj.style.left=x+'px';
        obj.style.top=y+'px';
    }
}


function getBounds(obj){
    var w=obj.offsetWidth;
    var h=obj.offsetHeight;
    var x=y=0;
    while (obj) {
        x+=obj.offsetLeft;
        y+=obj.offsetTop;
        obj=obj.offsetParent;
    }
    return{x:x,y:y,width:w,height:h};
}

function setPos(anc_id,obj_id,corner,margin){
// anc_id – id элемента, относительно которого будем позиционировать
// obj_id – id элемента, который будем позиционировать
// corner – номер угла (смотрите Рис.1)
// margin – отступ между элементами, чтобы они не “слипались”
    if (!corner)corner=1;
    var obj=document.getElementById(obj_id);
    var anc=document.getElementById(anc_id);

    if (!obj||!anc) {
        alert('noobj') ; 
        return;
    }
    var b=getBounds(anc);
    var c=getBounds(obj);
    var xs=0,ys=0; // координаты left и top родительского элемента (на случай, если кто-то из родителей абсолютно позиционирован)
    var par=obj;
    for (var i=0;i<50;i++) {
        par=par.parentNode;
        if (!par||par.tagName=='BODY') break;
        var s=getCurrentStyle(par);
        if (par.tagName=='DIV'&&s&&s.position=='absolute') {
            var p=getBounds(par);
            xs+=p.x
            ys+=p.y;
            break;
        }
    }
    var xc=0,yc=0; // Дополнительные отступы, учитывающие номер угла
    switch (corner) {
    case 2:
        yc=-c.height-b.height;
        break;
    case 3:
        yc=-c.height-b.height;
        xc=-c.width;
        break;
    case 4:
        xc=-c.width+b.width;
        break;
    }
    var xm=0;ym=0; // Дополнительные отступы, учитывающие параметр margin
    if (margin) {
        xm=margin.x;
        ym=margin.y;
    }
    setPosXY(obj,b.x-xs+xc+xm,b.y+b.height-ys+yc+ym);
}

function getCurrentStyle(el){
    if (!el) return null;
    var s=el.currentStyle; 
    if (!s) s=document.defaultView.getComputedStyle(el,null); // Для FireFox
    return s;
}

function trim(str){
    return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}




