function CalcPP()
{
	var f = document.f;
	var f2 = document.f2;
    
    var errors = [];
    errors['H'] = document.getElementById('error_H');
    errors['L'] = document.getElementById('error_L');
    errors['C'] = document.getElementById('error_C');
    
    for(var j in errors){
        if(errors[j]){
            errors[j].className = 'error closed';
        }
    }
	
    if(!f.H.value)
	{
        errors['H'].innerHTML = 'Enter previous high price.';
        errors['H'].className = 'error open';
		return false;
	}
	else if(!f.L.value)
	{
        errors['L'].innerHTML = 'Enter previous low price.';
        errors['L'].className = 'error open';
		return false;
	}
	else if(!f.C.value)
	{
        errors['C'].innerHTML = 'Enter previous close price.';
        errors['C'].className = 'error open';
		return false;
	}
	else if(!f.O.value)
	{
		//alert("You've not entered current Open price, Woodie's pivot points won't be calculated!");
	}
	piv = (1*f.H.value + 1*f.L.value + 1*f.C.value) / 3;
	r1 = (2 * piv) - f.L.value;
	r2 = piv + 1*f.H.value - f.L.value;
	r3 = 1*f.H.value + 2 * (piv - f.L.value);
	s1 = (2 * piv) - f.H.value;
	s2 = piv - f.H.value + 1*f.L.value;
	s3 = f.L.value - 2 * (f.H.value - piv);
	f2.p1.value = Math.round(piv*10000)/10000;
	f2.r11.value = Math.round(r1*10000)/10000;
	f2.r21.value = Math.round(r2*10000)/10000;
	f2.r31.value = Math.round(r3*10000)/10000;
	f2.s11.value = Math.round(s1*10000)/10000;
	f2.s21.value = Math.round(s2*10000)/10000;
	f2.s31.value = Math.round(s3*10000)/10000;
	piv = (1*f.H.value + 1*f.L.value + 2 * f.C.value) / 4;
	r1 = (2 * piv) - f.L.value;
	r2 = piv + 1*f.H.value - f.L.value;
	s1 = (2 * piv) - f.H.value;
	s2 = piv - f.H.value + 1*f.L.value;
	f2.p2.value = Math.round(piv*10000)/10000;
	f2.r12.value = Math.round(r1*10000)/10000;
	f2.r22.value = Math.round(r2*10000)/10000;
	f2.s12.value = Math.round(s1*10000)/10000;
	f2.s22.value = Math.round(s2*10000)/10000;
	r1c = (f.H.value - f.L.value) * 1.1 / 12 + 1*f.C.value;
	r2c = (f.H.value - f.L.value) * 1.1 / 6 + 1*f.C.value;
	r3c = (f.H.value - f.L.value) * 1.1 / 4 + 1*f.C.value;
	r4c = (f.H.value - f.L.value) * 1.1 / 2 + 1*f.C.value;
	s1c = f.C.value - (f.H.value - f.L.value) * 1.1 / 12;
	s2c = f.C.value - (f.H.value - f.L.value) * 1.1 / 6;
	s3c = f.C.value - (f.H.value - f.L.value) * 1.1 / 4;
	s4c = f.C.value - (f.H.value - f.L.value) * 1.1 / 2;
	f2.r1c.value = Math.round(r1c*10000)/10000;
	f2.r2c.value = Math.round(r2c*10000)/10000;
	f2.r3c.value = Math.round(r3c*10000)/10000;
	f2.r4c.value = Math.round(r4c*10000)/10000;
	f2.s1c.value = Math.round(s1c*10000)/10000;
	f2.s2c.value = Math.round(s2c*10000)/10000;
	f2.s3c.value = Math.round(s3c*10000)/10000;
	f2.s4c.value = Math.round(s4c*10000)/10000;
	if(!f.O.value)
	{
		return false;
	}
	if(f.C.value > f.O.value)
	{
		X = 2*f.H.value + 1 * f.L.value + 1*f.C.value;
	}
	else if(f.C.value < f.O.value)
	{
		X = 1 * f.H.value + 2*f.L.value + 1*f.C.value;
	}
	else
	{
		X = 1*f.H.value + 1*f.L.value + 2 * f.C.value;
	}
	Hnew = X / 2 - f.L.value;
	Lnew = X / 2 - f.H.value;
	f2.h1.value = Math.round(Hnew*10000)/10000;
	f2.l1.value = Math.round(Lnew*10000)/10000;
}
