function MassCalc(){
this.stuff=null
this.density=null
this.resultType=null
this.RESULT_TYPE_KG="kg"
this.RESULT_TYPE_M="m"
this.f=document.massCalcForm//form reference
this.bindElements()
}

function recalculate(resultType){
	if(arguments.length==1){
	this.resultType=resultType
	}
	if(this.stuff==null){
		alert(mcStrings.alert1)
		return
	}
	var wasOne=false
	var w=this.getNumerical("bar_diameter")
	if(w>0){
		this.setResult("bar_circle_result",Math.PI*Math.pow(w/2,2)*this.density)
		this.setResult("bar_rectangle_result",Math.pow(w,2)*this.density)
		this.setResult("bar_cube_result",Math.sqrt(3)*Math.pow(w,2)/2*this.density)
		this.setResult("bar_triangle_result",Math.sqrt(3)*Math.pow(w,2)/4*this.density)
		wasOne=true
	}
	var w1=this.getNumerical("plate_width")
	var h1=this.getNumerical("plate_thickness")
	if(w1>0 && h1>0){
		if(h1>(w1/2)){
			alert(mcStrings.alert3)
			this.f.plate_thickness.focus()
			return 
		}
		this.setResult("plate_result",w1*h1*this.density)
		wasOne=true
	}
	var d=this.getNumerical("pipe_diameter")
	var t2=this.getNumerical("pipe_thickness")
	if(d>0 && t2>0){
	this.setResult("pipe_circle_result",(Math.PI*Math.pow(d/2,2)-Math.PI*Math.pow((d-2*t2)/2,2))*this.density)
	//Rury_Okragle.value = format(Math.PI/4 * (4 * document.Kalkulator.SrednicaRury.value * document.Kalkulator.GruboscRury.value - 4 * Math.pow(document.Kalkulator.GruboscRury.value,2)) * Gestosc_m / 1000 ,3);
	this.setResult("pipe_rectangle_result",(Math.pow(d,2)-Math.pow(d-2*t2,2))*this.density)
	//(Math.pow(document.Kalkulator.SrednicaRury.value,2) - Math.pow(document.Kalkulator.SrednicaRury.value - (2 * document.Kalkulator.GruboscRury.value),2)) * Gestosc_m / 1000
	this.setResult("pipe_cube_result",((Math.pow(d,2)/2) * Math.sqrt(3)-Math.PI *Math.pow(d-2*t2,2)/4)*this.density)
	//(((Math.pow(document.Kalkulator.SrednicaRury.value,2)/2) * Math.sqrt(3)) 
	//- (Math.PI * Math.pow((document.Kalkulator.SrednicaRury.value - (2 * document.Kalkulator.GruboscRury.value)),2))/ 4)
	this.setResult("pipe_empty_cube_result",(Math.PI *Math.pow(d,2)/4-Math.pow(d-2*t2,2)/2* Math.sqrt(3))*this.density)
	//((Math.PI * Math.pow(document.Kalkulator.SrednicaRury.value,2)/4) 
	//- ((Math.pow((document.Kalkulator.SrednicaRury.value - (2 * document.Kalkulator.GruboscRury.value)),2)/2) * Math.sqrt(3)))
	wasOne=true
	}
	var w3=this.getNumerical("profiles_width")
	var h3=this.getNumerical("profiles_height")
	var t3=this.getNumerical("profiles_thickness")
	if(w3>0 && h3>0 && t3>0){
	if(t3>(h3/2) || t3>(w3/2)){
	alert(mcStrings.alert3)
	this.f.profiles_thickness.focus()
	return 
	}
		this.setResult("profiles_result",(w3*h3-((w3-2*t3)*(h3-2*t3)))*this.density)
		wasOne=true
	}
	if(!wasOne){
	alert(mcStrings.alert2)
	}
}
MassCalc.prototype.recalculate=recalculate
function getNumerical(fieldName){
var s=this.f[fieldName].value
if(s==undefined || s==""){
return -1
}
s=s.replace(",",".")
var re=new RegExp("([0-9]*\.?[0-9]*)")
re.test(s)
if(RegExp.$1!=s){
return -1
}
var ret=parseFloat(s)
ret/=1000
return ret
}
MassCalc.prototype.getNumerical=getNumerical
function setResult(id,val){
	var unit=" kg/m"
	if(this.resultType==this.RESULT_TYPE_M){
		val=1/val
		unit=" m/kg"
	}
	
	var s=String(val)
	if(s.indexOf(".")>-1){
		//TODO zaokrąglanie
		s=s.substr(0,s.indexOf(".")+3)
	}
	var s2=""
	if(s.length<5){
		s2=s
	}else{
	var waitForKropke=s.indexOf(".")>-1
	var chars=new Array()
	var cnt=1
		for(var i=s.length-1;i>=0;i--){
		chars.push(s.substr(i,1))
		if(waitForKropke){
			if(s.substr(i,1)!="."){
			continue
			}
			waitForKropke=false
			cnt=0
		}
		if(cnt++%3==0 && cnt>1){
		chars.push(" ")
		}
	}
	s2=chars.reverse().join("")
	}
	document.getElementById(id).innerHTML=s2+unit
}
MassCalc.prototype.setResult=setResult

function evStuffChange(){
	
	if(this.stuff==null){
	this.f.stuff.options[0]=null
	}
	this.stuff=this.f.stuff.options[this.f.stuff.selectedIndex].value;
	for(var i=this.f.density.options.length;i>=0;i--){
		this.f.density.options[i]=null
	}
	
	var l=McDensityData[this.stuff].length
	for(var i=0;i<l;i++){
	this.f.density.options[i]=new Option(McDensityData[this.stuff][i][0],McDensityData[this.stuff][i][1])
	}
	this.evDensityChange()
	
}
MassCalc.prototype.evStuffChange=evStuffChange
function evDensityChange(){
this.density=parseFloat(this.f.density.value)*1000
if(this.resultType!=null){
	this.recalculate()
	}
}
MassCalc.prototype.evDensityChange=evDensityChange
MassCalc.prototype.bindElements=bindElements
function bindElements(){
this.f.stuff.onchange=new Function("massCalc.evStuffChange()")
this.f.density.onchange=new Function("massCalc.evDensityChange()")
}
var massCalc=new MassCalc()
McDensityData={}
McDensityData.stal=[]
McDensityData.stal.push(new Array("7.85 kg/dm3","7.85"))
McDensityData.stal.push(new Array("7.5 kg/dm3","7.5"))
McDensityData.stal.push(new Array("7.7 kg/dm3","7.7"))
McDensityData.stal.push(new Array("7.8 kg/dm3","7.8"))
McDensityData.stal.push(new Array("7.9 kg/dm3","7.9"))
McDensityData.stal.push(new Array("8.0 kg/dm3","8.0"))
McDensityData.stal.push(new Array("8.1 kg/dm3","8.1"))
McDensityData.miedz=[]
McDensityData.miedz.push(new Array("8.9 kg/dm3","8.9"))
McDensityData.mosiadz=[]
McDensityData.mosiadz.push(new Array("8.5 kg/dm3","8.5"))
McDensityData.braz=[]
McDensityData.braz.push(new Array("8.5 kg/dm3","8.5"))
McDensityData.braz.push(new Array("B2, B4, B8, B443 - 8.895 kg/dm3","8.895"))
McDensityData.braz.push(new Array("BA5 - 8.1975 kg/dm3","8.1975"))
McDensityData.braz.push(new Array("BA8 - 7.8 kg/dm3","7.8"))
McDensityData.braz.push(new Array("BA83 - 7.695 kg/dm3","7.695"))
McDensityData.braz.push(new Array("Bk1, Bk31 - 8.4975 kg/dm3","8.4975"))
McDensityData.braz.push(new Array("BB1,7 - 8.4 kg/dm3","8.4"))
McDensityData.braz.push(new Array("BB2 - 8.295 kg/dm3","8.295"))
McDensityData.braz.push(new Array("BB21, BC2 - 8.895 kg/dm3","8.895"))
McDensityData.braz.push(new Array("B10, B101, B102 - 8.8 kg/dm3","8.8"))
McDensityData.aluminium=[]
McDensityData.aluminium.push(new Array("2.7 kg/dm3","2.7"))
McDensityData.aluminium.push(new Array("EN AW-3103 - 2.7486 kg/dm3","2.7486"))
McDensityData.aluminium.push(new Array("EN AW-5251 - 2.6784 kg/dm3","2.6784"))
McDensityData.aluminium.push(new Array("EN AW-6101A - 2.6892 kg/dm3","2.6892"))
McDensityData.aluminium.push(new Array("EN AW-6082 - 2.7 kg/dm3","2.7"))
McDensityData.aluminium.push(new Array("EN AW-5019 - 2.6379 kg/dm3","2.6379"))
McDensityData.aluminium.push(new Array("EN AW-6061 - 2.7135 kg/dm3","2.7135"))
McDensityData.aluminium.push(new Array("EN AW-2017A - 2.7999 kg/dm3","2.7999"))
McDensityData.aluminium.push(new Array("EN AW-2024 - 2.7675 kg/dm3","2.7675"))
McDensityData.aluminium.push(new Array("EN AW-2014 - 2.7999 kg/dm3","2.7999"))
McDensityData.aluminium.push(new Array("EN AW-5754 - 2.6595 kg/dm3","2.6595"))
McDensityData.aluminium.push(new Array("EN AW-5005A - 2.6892 kg/dm3","2.6892"))
McDensityData.aluminium.push(new Array("2.8 kg/dm3","2.8"))
McDensityData.aluminium.push(new Array("2.9 kg/dm3","2.9"))
McDensityData.stopy_cu_ni=[]
McDensityData.stopy_cu_ni.push(new Array("8.9 kg/dm3","8.9"))
McDensityData.olow=[]
McDensityData.olow.push(new Array("11.68 kg/dm3","11.68"))
McDensityData.stopy_olowiu=[]
McDensityData.stopy_olowiu.push(new Array("9.9 kg/dm3","9.9"))
McDensityData.stopy_cynku=[]
McDensityData.stopy_cynku.push(new Array("6.7 kg/dm3","6.7"))
McDensityData.cual8=[]
McDensityData.cual8.push(new Array("7.8 kg/dm3","7.8"))
McDensityData.zloto=[]
McDensityData.zloto.push(new Array("19.3 kg/dm3","19.3"))
McDensityData.cynk=[]
McDensityData.cynk.push(new Array("7.2 kg/dm3","7.2"))
McDensityData.tytan=[]
McDensityData.tytan.push(new Array("4.51 kg/dm3","4.51"))
McDensityData.srebro=[]
McDensityData.srebro.push(new Array("10.5 kg/dm3","10.5"))
McDensityData.srebro.push(new Array("Ag935 - 10.485 kg/dm3","10.485"))
McDensityData.cyna=[]
McDensityData.cyna.push(new Array("7.3 kg/dm3","7.3"))
function ovButton(bRef){
bRef.className="calculateButtonOver"
}
function ouButton(bRef){
bRef.className="calculateButton"
}

