// Splitter and Attencuator Calculators 
// Copyright (c) 2008, CEPD Inc.
// http://www.cepd.com

function updateTR(form){
    var Z=parseFloat(form.ZTin.value,10);  
    var A=parseFloat(form.ATin.value,10);
    A = Math.pow(10,A/20);
    var R1 = Z*(A-1)/(A+1);
    var R2=(Z*Z-R1*R1)/(2*R1);
    form.R1Tin.value = R1.toFixed(2);
    form.R2Tin.value = R2.toFixed(2);
}
function updateTZ(form){
    var R1= parseFloat(form.R1Tin.value,10);     
    var R2= parseFloat(form.R2Tin.value,10); 
    var Z = Math.sqrt(R1*R1+2*R1*R2);
    var A = A=20/Math.log(10.0)*Math.log((Z+R1)/(Z-R1));
    form.ZTin.value = Z.toFixed(2);
    form.ATin.value = A.toFixed(2);

}
function updateHR(form){
    var Z=parseFloat(form.ZHin.value,10);  
    var A=parseFloat(form.AHin.value,10);
    A = Math.pow(10,A/20);
    var R1 = Z*(A-1)/(A+1);
    var R2=(Z*Z-R1*R1)/(2*R1);
    R1=R1/2;
    form.R1Hin.value = R1.toFixed(2);
    form.R2Hin.value = R2.toFixed(2);
}
function updateHZ(form){
    var R1= parseFloat(form.R1Hin.value,10);   
    R1=R1*2;    
    var R2= parseFloat(form.R2Hin.value,10); 
    var Z = Math.sqrt(R1*R1+2*R1*R2);
    var A = A=20/Math.log(10.0)*Math.log((Z+R1)/(Z-R1));
    form.ZHin.value = Z.toFixed(2);
    form.AHin.value = A.toFixed(2);

}
function updatePR(form){
    var Z=parseFloat(form.ZPin.value,10);  
    var A=parseFloat(form.APin.value,10);
    A = Math.pow(10,A/20);
    R1=Z*(A+1)/(A-1);
    R2=2*(Z*Z*R1)/(R1*R1 - Z*Z);
    form.R1Pin.value = R1.toFixed(2);
    form.R2Pin.value = R2.toFixed(2);
}
function updatePZ(form){
    var R1= parseFloat(form.R1Pin.value,10);     
    var R2= parseFloat(form.R2Pin.value,10); 
    var Z=Math.sqrt(R2*R1*R1/(2*R1+R2));
    var A=20/Math.log(10.0)*Math.log( (R1+Z) /(R1-Z) );
    form.ZPin.value = Z.toFixed(2);
    form.APin.value = A.toFixed(2);
}

function updateOR(form){
    var Z=parseFloat(form.ZOin.value,10);  
    var A=parseFloat(form.AOin.value,10); 
    A = Math.pow(10,A/20);
    R1=Z*(A+1)/(A-1);
    R2=2*(Z*Z*R1)/(R1*R1 - Z*Z);
    R2=R2/2;
    form.R1Oin.value = R1.toFixed(2);
    form.R2Oin.value = R2.toFixed(2);
}
function updateOZ(form){
    var R1= parseFloat(form.R1Oin.value,10);     
    var R2= parseFloat(form.R2Oin.value,10);
    R2=R2*2; 
    var Z=Math.sqrt(R2*R1*R1/(2*R1+R2));
    var A=20/Math.log(10.0)*Math.log( (R1+Z) /(R1-Z) );
    form.ZOin.value = Z.toFixed(2);
    form.AOin.value = A.toFixed(2);
}

function updateAll(form){
    updateY(form);
    updateTR(form);  
    updateHR(form);
    updatePR(form);
    updateOR(form);
    
}



function updateY(form){
    var Z = parseFloat(form.ZYin.value,10);     
    var N = parseInt(form.NYin.value,10);
    var R = Z *(N-1)/(N+1);
    var A = 20/Math.log(10.0)*Math.log(N);
    form.AYin.value = A.toFixed(2);
    form.R1Yin.value = R.toFixed(2);
}

