﻿var  Error = {
              text:"",
              add: function(txt){
                  Error.text+=txt+'\r\n';
                }
          }

        function E(id){ return document.getElementById(id);}

        function F(node) {this.node=node} // wrapper
        F.prototype = {
           set: function(value) {
              this.node.innerHTML=value.toFixed(2);
            },
            getFloat: function() { // get Float
              this.node.value=this.node.value.replace(/,/,".").replace(/-/,"");

              if(isNaN(parseFloat(this.node.value))){
                F.prototype.fieldError(this.node);
              } else{
                 F.prototype.fieldNormal(this.node);
                 this.node.value=parseFloat(this.node.value);
                 return parseFloat(this.node.value);
              }
            },
            getInt: function() { // get int
                this.node.value=this.node.value.replace(/-/,"");
              if(isNaN(parseInt(this.node.value))){
                F.prototype.fieldError(this.node);
              } else{
                 F.prototype.fieldNormal(this.node);
                 this.node.value=parseInt(this.node.value);
                 return parseInt(this.node.value);
              }
            },
            fieldError: function(el) {
                el.style.border="1px solid red";
                el.style.backgroundColor="#FFF4F4";
                 var obj=E("data").getElementsByTagName("label");
                 var lbl=false;
                 for (var key in obj)
                     if(obj[key].htmlFor==el.id){
                        Error.add('Поле "'+obj[key].innerHTML.replace(/\<br\>/,"").replace(/&nbsp;/," ")+ '" - не является числом');
                        lbl=true;
                     }
                if(!lbl)  Error.add('Поле "'+el.id+'"- не является числом');
            },
            fieldNormal: function(el) {
                el.style.border="1px solid black";
                el.style.backgroundColor="#FFFFFF";
            }
        };

        function R(id){return new F(E(id))}

        function reset (){
            var data=E("data");
            var input=data.getElementsByTagName("input");
            var select=data.getElementsByTagName("select");
            var obj=input;
            for (var key in obj) {
                if(obj[key].type){
                    obj[key].value="";
                    obj[key].style.border="1px solid black";
                    obj[key].style.backgroundColor="#FFFFFF";
                }
            }
            obj=select;
            for (var key in obj) obj[key].selectedIndex=0;
            E("tableResult").style.display="none";
        }

	function calculate (){
            Error.text="";

           // var d=R("f_d").getInt();
			var  d=parseInt($("#f_d").val());
		
            var X=R("f_X").getFloat();
            var Y=R("f_Y").getFloat();
            var Zd=R("f_Zd").getFloat();
            var Zf=R("f_Zf").getFloat();
            var Nx=R("f_Nx").getInt();
            var Ny=R("f_Ny").getInt();
            var M=R("f_M").getInt();
            var Lm=R("f_Lm").getFloat();
            var Hm=R("f_Hm").getFloat();
            var C=R("f_C").getInt();
            var Lc=R("f_Lc").getFloat();
            var Hc=R("f_Hc").getFloat();
            if(Error.text!=""){
                alert(Error.text);
				E("tableResult").style.display="none";
                return false;
            }

            var Def=120;
            var Kd=8.26;

            switch (d){
                case 180: Def=140; Kd=6.55;  break;
                case 200: Def=160; Kd=5.31; break;
                case 220: Def=180; Kd=4.38; break;
                case 240: Def=200; Kd=3.69; break;
                case 260: Def=220; Kd=3.14;
            }

            var Nz=Zd*(1/Def);
            var Nf=Zf*(1/Def);
            var Pd=Nz*2*(X+Y);
            var Pp=(Nx*X*Nz)+(Ny*Y*Nz);
            var Pfr=X*Nf;
            var Pm=M*Lm*Hm*(1/Def);
            var Pc=C*Lc*Hc*(1/Def);
            var Psum=Pd+Pp+Pfr-Pm-Pc;
            var V=Psum*(1/6000)*(1/Kd);



            R("r_Def").set(Def);
            R("r_Kd").set(Kd);
            R("r_Nz").set(Nz);
            R("r_Nf").set(Nf);
            R("r_Pd").set(Pd);
            R("r_Pp").set(Pp);
            R("r_Pfr").set(Pfr);
            R("r_Pm").set(Pm);
            R("r_Pc").set(Pc);
            R("r_Psum").set(Psum);
            R("r_V").set(V);
            E("tableResult").style.display="block";
        }

