var calc = {
  curr:{},
  curr_sel_els:function(){
    var re = [];
    for( var k in this.curr ){
      re.push( DOM.make( {
        tag:'option',
        text:k,
        prop:{
          value:this.curr[ k ]
        }
      } ) );
    }
    return re;
  }, // curr_sel_els
  nekust_ip:function( par ){
    var els = {};
    function calc_rez(){
      els.sum.value = Math.round( Number( els.price.value ) - Number( els.pirm_iemaksa.value ) );
      if( isNaN( els.sum.value ) ) els.sum.value = '';
      var men = Number( els.time.value ) * 12;
      if( men == 0 ){
        els.rez.value = '';
        return;
      } 
      var p = Number( els.proc.value ) / 1200
      var k = 1 + p;
      var pw = Math.pow( k, men );      
      els.rez.value = Math.round( Number( els.sum.value ) * ( p * pw ) / ( pw - 1 ) );
      if( isNaN( els.rez.value ) ) els.rez.value = '';                 
    };      
    var re = DOM.make( {
      tag:'div',
      className:'zipcalc',        
      els:[
        DOM.make( {
          tag:'table',
          prop:{
            cellSpacing:'0'
          },
          els:[
            DOM.make( {
              tag:'tbody',
              els:[
                DOM.make( {
                  tag:'tr',
                  className:'zipcalc_row_re',
                  els:[
                    DOM.make( {
                      tag:'td',
                      className:'zipcalc_row_name',
                      text:dic( 'Kredita kalkulators' ),
                      prop:{                                                    
                        colSpan:'3',
                        style:{
                          textAlign:'center'
                        }
                      }
                    } )  
                  ]
                } ),
                DOM.make( {
                  tag:'tr',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Objekta cena' ),
                      className:'zipcalc_row_name'
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[
                        els.price = DOM.make( {
                          tag:'input',
                          className:'inp',
                          prop:{
                            value:par.price || '',
                            onkeyup:function(){
                              els.pirm_iemaksa.value = Math.round( Number( els.pirm_iemaksap.value ) / 100 * Number( els.price.value ) );
                              if( isNaN( els.pirm_iemaksa.value ) ) els.pirm_iemaksa.value = '';
                              calc_rez();
                            },
                            onchange:function(){
                              this.onkeyup();
                            }
                          }
                        } )
                      ]
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.currency = DOM.make( {
                          tag:'select',
                          className:'inp',
                          els:calc.curr_sel_els(),
                          prop:{
                            onchange:function(){
                              els.price.value = Math.round( Number( els.price.value ) * this.value_ / this.value );
                              els.price.onchange();
                              this.value_ = this.value; 
                              if( isNaN( els.price.value ) ) els.price.value = '';
                              els.re_curr.innerHTML = this.childNodes[ this.selectedIndex ].innerHTML;
                              els.curr1.innerHTML =els.re_curr.innerHTML;
                              els.curr2.innerHTML =els.re_curr.innerHTML;
                              calc_rez();
                            }
                          }
                        } )
                      ]
                    } )
                  ]
                } ),
                DOM.make( {
                  tag:'tr',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Pirma iemaksa' ),
                      className:'zipcalc_row_name'
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.pirm_iemaksap = DOM.make( {
                          tag:'input',
                          className:'inp',
                          prop:{
                            value:'10',
                            onkeyup:function(){
                              els.pirm_iemaksa.value = Math.round( Number( els.pirm_iemaksap.value ) / 100 * Number( els.price.value ) );
                              if( isNaN( els.pirm_iemaksa.value ) ) els.pirm_iemaksa.value = ''; 
                              calc_rez();
                            },
                            onchange:function(){
                              this.onkeyup();
                            }
                          }
                        } )
                      ]
                    } ),
                    DOM.make( {
                      tag:'td',
                      text:'%'
                    } ) 
                  ]
                } ),                  
                DOM.make( {
                  tag:'tr',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Pirma iemaksa' ),
                      className:'zipcalc_row_name'
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.pirm_iemaksa = DOM.make( {
                          tag:'input',
                          className:'inp',
                          prop:{
                            value:par.price ? Math.round( par.price * 0.1 ) : '',
                            onkeyup:function(){
                              els.pirm_iemaksap.value = Math.round( Number( this.value ) / Number( els.price.value ) * 10000 ) / 100;
                              if( isNaN( els.pirm_iemaksap.value ) ) els.pirm_iemaksap.value = ''; 
                              calc_rez();
                            },
                            onchange:function(){
                              this.onkeyup();
                            }
                          }
                        } )
                      ]
                    } ),
                    els.curr1 = DOM.make( {
                      tag:'td'
                    } )
                  ]
                } ),
                DOM.make( {
                  tag:'tr',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Kredita summa' ),
                      className:'zipcalc_row_name'
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.sum = DOM.make( {
                          tag:'input',
                          className:'inp',
                          prop:{
                            readOnly:true,
                            value:par.price ? ( els.price.value - els.pirm_iemaksa.value ) : '',
                            style:{
                              color:'#ccc'
                            }
                          }
                        } )
                      ]
                    } ),
                    els.curr2 = DOM.make( {
                      tag:'td'
                    } )
                  ]
                } ),
                DOM.make( {
                  tag:'tr',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Procentuala likme' ),
                      className:'zipcalc_row_name'
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.proc = DOM.make( {
                          tag:'input',
                          className:'inp',
                          prop:{
                            value:5.7,
                            onkeyup:function(){
                              this.value = this.value.replace( ',', '.' );
                              calc_rez();
                            },
                            onchange:function(){
                              this.onkeyup();
                            }
                          }
                        } )
                      ]
                    } ),
                    DOM.make( {
                      tag:'td',
                      text:'%'
                    } )
                  ]
                } ),
                DOM.make( {
                  tag:'tr',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Termins' ),
                      className:'zipcalc_row_name'                                                
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.time = DOM.make( {
                          tag:'input',
                          className:'inp',
                          prop:{
                            value:20,
                            onkeyup:calc_rez,
                            onchange:calc_rez
                          }
                        } )
                      ]
                    } ),
                    DOM.make( {
                      tag:'td',
                      text:dic( 'gadi' )
                    } )
                  ]
                } ),
                DOM.make( {
                  tag:'tr',
                  className:'zipcalc_row_re',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Ikmenesa maksajums' ),
                      className:'zipcalc_row_name'
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.rez = DOM.make( {
                          tag:'input',
                          className:'inp',
                          prop:{
                            readOnly:true,
                            style:{
                              fontWeight:'bold'
                            }
                          }
                        } )
                      ]
                    } ),
                    els.re_curr = DOM.make( {
                      tag:'td'
                    } )
                  ]
                } )
              ]                
            } ) // tbody
          ]
        } )        
      ]
    } );
    re.Append( par.node );
    if( par.currency ) els.currency.value = calc.curr[ par.currency ];
    els.currency.value_ = els.currency.value;
    els.currency.onchange();
    return re;                  
  }, // nekust_ip
  
  term_sel_els:function( s, e, st ){
    var re = [];
    for( var i = s; i <= e; i = i + st ){
      re.push( DOM.make( {
        tag:'option',
        text:i,
        prop:{
          value:i
        }
      } ) );
    }
    return re;
  }, //
  
  lizings:function( par ){
    function calc_rez(){
      var sum = els.sum.value = Math.round( Number( els.price.value ) - Number( els.pirm_iemaksa.value ) );
      if( isNaN( els.sum.value ) ) els.sum.value = '';
      var men = Number( els.time.value );
      if( men == 0 ){
        els.rez.value = '';
        return;
      }
      var sum_proc = 0; 
      for( var i = 1; i <= men; i++ ){
        sum_proc += Number( els.proc.value ) / 100 * sum;        
        sum -= Math.round( Number( els.sum.value ) / men );        
      }
      els.rez.value = Math.round( ( Number( els.sum.value ) + sum_proc ) / men * 100 ) / 100;
      if( isNaN( els.rez.value ) ) els.rez.value = '';
    }
    var els = {};
    var re = DOM.make( {
      tag:'div',
      className:'zipcalc',
      els:[
        DOM.make( {
          tag:'table',
          prop:{
            cellSpacing:'0'
          },
          els:[
            DOM.make( {
              tag:'tbody',
              els:[
                DOM.make( {
                  tag:'tr',
                  className:'zipcalc_row_re',
                  els:[
                    DOM.make( {
                      tag:'td',
                      className:'zipcalc_row_name',
                      text:dic( 'Lizinga kalkulators' ),
                      prop:{                                                    
                        colSpan:'3',
                        style:{
                          textAlign:'center'
                        }
                      }
                    } )  
                  ]
                } ),
                DOM.make( {
                  tag:'tr',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Cena' ),
                      className:'zipcalc_row_name'
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[
                        els.price = DOM.make( {
                          tag:'input',
                          className:'inp',
                          prop:{
                            value:par.price || '',
                            onkeyup:function(){
                              els.pirm_iemaksa.value = Math.round( Number( els.pirm_iemaksap.value ) / 100 * Number( els.price.value ) );
                              if( isNaN( els.pirm_iemaksa.value ) ) els.pirm_iemaksa.value = '';
                              calc_rez();
                            },
                            onchange:function(){
                              this.onkeyup();
                            }
                          }
                        } )
                      ]
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.currency = DOM.make( {
                          tag:'select',
                          className:'inp',
                          els:calc.curr_sel_els(),
                          prop:{
                            onchange:function(){
                              els.price.value = Math.round( Number( els.price.value ) * this.value_ / this.value );
                              els.price.onchange();
                              this.value_ = this.value; 
                              if( isNaN( els.price.value ) ) els.price.value = '';
                              els.re_curr.innerHTML = this.childNodes[ this.selectedIndex ].innerHTML;
                              els.curr1.innerHTML =els.re_curr.innerHTML;
                              els.curr2.innerHTML =els.re_curr.innerHTML;
                              calc_rez();
                            }
                          }
                        } )
                      ]
                    } )
                  ]
                } ),
                DOM.make( {
                  tag:'tr',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Pirma iemaksa' ),
                      className:'zipcalc_row_name'
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.pirm_iemaksap = DOM.make( {
                          tag:'input',
                          className:'inp',
                          prop:{
                            value:'10',
                            onkeyup:function(){
                              els.pirm_iemaksa.value = Math.round( Number( els.pirm_iemaksap.value ) / 100 * Number( els.price.value ) );
                              if( isNaN( els.pirm_iemaksa.value ) ) els.pirm_iemaksa.value = ''; 
                              calc_rez();
                            },
                            onchange:function(){
                              this.onkeyup();
                            }
                          }
                        } )
                      ]
                    } ),
                    DOM.make( {
                      tag:'td',
                      text:'%'
                    } ) 
                  ]
                } ),                  
                DOM.make( {
                  tag:'tr',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Pirma iemaksa' ),
                      className:'zipcalc_row_name'
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.pirm_iemaksa = DOM.make( {
                          tag:'input',
                          className:'inp',
                          prop:{
                            value:par.price ? Math.round( par.price * 0.1 ) : '',
                            onkeyup:function(){
                              els.pirm_iemaksap.value = Math.round( Number( this.value ) / Number( els.price.value ) * 10000 ) / 100;
                              if( isNaN( els.pirm_iemaksap.value ) ) els.pirm_iemaksap.value = ''; 
                              calc_rez();
                            },
                            onchange:function(){
                              this.onkeyup();
                            }
                          }
                        } )
                      ]
                    } ),
                    els.curr1 = DOM.make( {
                      tag:'td'
                    } )
                  ]
                } ),
                DOM.make( {
                  tag:'tr',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Lizinga summa' ),
                      className:'zipcalc_row_name'
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.sum = DOM.make( {
                          tag:'input',
                          className:'inp',
                          prop:{
                            readOnly:true,
                            value:par.price ? ( els.price.value - els.pirm_iemaksa.value ) : '',
                            style:{
                              color:'#ccc'
                            }
                          }
                        } )
                      ]
                    } ),
                    els.curr2 = DOM.make( {
                      tag:'td'
                    } )
                  ]
                } ),
                DOM.make( {
                  tag:'tr',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Procentuala likme' ) + ' ' + dic( 'menesii' ),
                      className:'zipcalc_row_name'
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.proc = DOM.make( {
                          tag:'input',
                          className:'inp',
                          prop:{
                            value:1,
                            onkeyup:function(){
                              this.value = this.value.replace( ',', '.' );
                              calc_rez();
                            },
                            onchange:function(){
                              this.onkeyup();
                            }
                          }
                        } )
                      ]
                    } ),
                    DOM.make( {
                      tag:'td',
                      text:'% ' + dic( 'no atlikuma' )  
                    } )
                  ]
                } ),
                DOM.make( {
                  tag:'tr',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Termins' ),
                      className:'zipcalc_row_name'                                                
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.time = DOM.make( {
                          tag:'select',
                          className:'inp',
                          els:this.term_sel_els( 3, 60, 3 ),
                          prop:{
                            value:36,
                            onchange:calc_rez,
                            onkeyup:calc_rez
                          }
                        } )
                      ]
                    } ),
                    DOM.make( {
                      tag:'td',
                      text:dic( 'meeneshi' )
                    } )
                  ]
                } ),
                DOM.make( {
                  tag:'tr',
                  className:'zipcalc_row_re',
                  els:[
                    DOM.make( {
                      tag:'td',
                      text:dic( 'Ikmenesa maksajums' ),
                      className:'zipcalc_row_name'
                    } ),
                    DOM.make( {
                      tag:'td',
                      els:[ 
                        els.rez = DOM.make( {
                          tag:'input',
                          className:'inp',
                          prop:{
                            readOnly:true,
                            style:{
                              fontWeight:'bold'
                            }
                          }
                        } )
                      ]
                    } ),
                    els.re_curr = DOM.make( {
                      tag:'td'
                    } )
                  ]
                } )
              ]                
            } ) // tbody
          ] 
        } ) // table   
      ]
    } ); // div
    re.Append( par.node );
    if( par.currency ) els.currency.value = calc.curr[ par.currency ];
    els.currency.value_ = els.currency.value;    
    els.currency.onchange();
    return re;
  } // lizings
};