
var prob1;
var prob2;
var prob3;
var prob4;
var retA1;
var retA2;
var retA3;
var retA4;
var retB1;
var retB2;
var retB3;
var retB4;

function getCRChars() {
    var theAgent = navigator.userAgent;
    if (theAgent.indexOf("(Win") >= 0) {
    	return "\r\n"; 
    } else if (theAgent.indexOf("(Mac") >= 0) {
    	return "\r"; 
    } else {
    	return "\n";
    }
}


function newProb(form) {
    var CR = getCRChars();
    var padP1 = "";
    var padP2 = "";
    var padP3 = "";
    var padP4 = "";
    prob1 = Math.round(Math.random()*60) + 1;
    if (prob1 < 10) padP1 = " ";
    prob2 = Math.round(Math.random()*(98-prob1)) + 1;
    if (prob2 < 10) padP2 = " ";
    prob3 = Math.round(Math.random()*(98-prob1-prob2)) + 1;
    if (prob3 < 10) padP3 = " ";
    prob4 = 100 - prob1 - prob2 - prob3;
    if (prob4 < 10) padP4 = " ";
    var padA1 = "";
    var padA2 = "";
    var padA3 = "";
    var padA4 = "";
    var padB1 = "";
    var padB2 = "";
    var padB3 = "";
    var padB4 = "";
    var isNeg = Math.random();   
    if (isNeg < 0.20) {
    	isNeg = -1;
    } else {
    	isNeg = 1;
    	padA1 = " ";
    }
    retA1 = isNeg*Math.round(Math.random()*50); 
    if ((retA1 < 10) && (retA1 > -10)) padA1 += " "; 
    isNeg = Math.random();    
    if (isNeg < 0.20) {
    	isNeg = -1;
    } else {
    	isNeg = 1;
    	padA2 = " ";
    }
    retA2 = isNeg*Math.round(Math.random()*50); 
    if ((retA2 < 10) && (retA2 > -10)) padA2 += " "; 
    isNeg = Math.random();
    if (isNeg < 0.20) {
    	isNeg = -1;
    } else {
    	isNeg = 1;
    	padA3 = " ";
    }
    retA3 = isNeg*Math.round(Math.random()*50); 
    if ((retA3 < 10) && (retA3 > -10)) padA3 += " "; 
    isNeg = Math.random();
    if (isNeg < 0.20) {
    	isNeg = -1;
    } else {
    	isNeg = 1;
    	padA4 = " ";
    }
    retA4 = isNeg*Math.round(Math.random()*50);
    if ((retA4 < 10) && (retA4 > -10)) padA4 += " ";  
    isNeg = Math.random();   
    if (isNeg < 0.20) {
    	isNeg = -1;
    } else {
    	isNeg = 1;
    	padB1 = " ";
    }
    retB1 = isNeg*Math.round(Math.random()*50); 
    if ((retB1 < 10) && (retB1 > -10)) padB1 += " "; 
    isNeg = Math.random();   
    if (isNeg < 0.20) {
    	isNeg = -1;
    } else {
    	isNeg = 1;
    	padB2 = " ";
    }
    retB2 = isNeg*Math.round(Math.random()*50); 
    if ((retB2 < 10) && (retB2 > -10)) padB2 += " "; 
    isNeg = Math.random();   
    if (isNeg < 0.20) {
    	isNeg = -1;
    } else {
    	isNeg = 1;
    	padB3 = " ";
    }
    retB3 = isNeg*Math.round(Math.random()*50); 
    if ((retB3 < 10) && (retB3 > -10)) padB3 += " "; 
    isNeg = Math.random();   
    if (isNeg < 0.20) {
    	isNeg = -1;
    } else {
    	isNeg = 1;
    	padB4 = " ";
    }
    retB4 = isNeg*Math.round(Math.random()*50);
    if ((retB4 < 10) && (retB4 > -10)) padB4 += " "; 
    probString = "Find the Expected Return, Variance, and Standard ";
    probString += "Deviation for the returns on Stock 1 and Stock 2. Also, ";
    probString += "find the Covariance and Correlation Coefficient between ";
    probString += "the returns on Stocks 1 and 2." + CR + CR;
    probString += "\tProb.  Stock 1  Stock 2" + CR;
    probString += "\t-----  -------  -------" + CR;
    probString += "\t " + padP1 + prob1 + "\%    " + padA1 + retA1 + "\%     " + padB1 + retB1 + "\%" + CR;
    probString += "\t " + padP2 + prob2 + "\%    " + padA2 + retA2 + "\%     " + padB2 + retB2 + "\%" + CR;
    probString += "\t " + padP3 + prob3 + "\%    " + padA3 + retA3 + "\%     " + padB3 + retB3 + "\%" + CR;
    probString += "\t " + padP4 + prob4 + "\%    " + padA4 + retA4 + "\%     " + padB4 + retB4 + "\%" + CR;
    form.ERProblem.value = probString;
}

function doIt() {
    document.ERCalc.p1.value = "" + prob1;
    document.ERCalc.p2.value = "" + prob2;
    document.ERCalc.p3.value = "" + prob3;
    document.ERCalc.p4.value = "" + prob4;
    document.ERCalc.p5.value = "0";
    document.ERCalc.r11.value = "" + retA1;
    document.ERCalc.r12.value = "" + retA2;
    document.ERCalc.r13.value = "" + retA3;
    document.ERCalc.r14.value = "" + retA4;
    document.ERCalc.r15.value = "0";
    document.ERCalc.r21.value = "" + retB1;
    document.ERCalc.r22.value = "" + retB2;
    document.ERCalc.r23.value = "" + retB3;
    document.ERCalc.r24.value = "" + retB4;
    document.ERCalc.r25.value = "0";
    document.ERCalc.er1.value = "";
    document.ERCalc.er2.value = "";
    document.ERCalc.v1.value = "";
    document.ERCalc.v2.value = "";
    document.ERCalc.sd1.value = "";
    document.ERCalc.sd2.value = "";
    document.ERCalc.cov.value = "";
    document.ERCalc.corr.value = "";
    doERCalc(document.ERCalc);
}


function doERCalc(form) {
 	var thep1 = form.p1.value;
 	if (!isPositiveNumber(thep1)) {
 		return false;
 	}
 	if (thep1 == "") thep1 = 0;
 	thep1 = parseFloat(thep1);
 	var thep2 = form.p2.value;
 	if (!isPositiveNumber(thep2)) {
 		return false;
 	}
 	if (thep2 == "") thep2 = 0;
 	thep2 = parseFloat(thep2);
 	var thep3 = form.p3.value;
 	if (!isPositiveNumber(thep3)) {
 		return false;
 	}
 	if (thep3 == "") thep3 = 0;
 	thep3 = parseFloat(thep3);
 	var thep4 = form.p4.value;
 	if (!isPositiveNumber(thep4)) {
 		return false;
 	}
 	if (thep4 == "") thep4 = 0;
 	thep4 = parseFloat(thep4);
 	var thep5 = form.p5.value;
 	if (!isPositiveNumber(thep5)) {
 		return false;
 	}
 	if (thep5 == "") thep5 = 0;
 	thep5 = parseFloat(thep5);
 	var sumP = thep1 + thep2 + thep3 + thep4 + thep5;
 	if (sumP != 100) {
 		alert("The sum of the probabilities must equal 100\%.");
 		return false;
 	}
 	var ther11 = form.r11.value;
 	if (!isNumber(ther11)) {
 		return false;
 	}
 	if (ther11 == "") ther11 = 0;
 	ther11 = parseFloat(ther11);
 	var ther12 = form.r12.value;
 	if (!isNumber(ther12)) {
 		return false;
 	}
 	if (ther12 == "") ther12 = 0;
 	ther12 = parseFloat(ther12);
 	var ther13 = form.r13.value;
 	if (!isNumber(ther13)) {
 		return false;
 	}
 	if (ther13 == "") ther13 = 0;
 	ther13 = parseFloat(ther13);
 	var ther14 = form.r14.value;
 	if (!isNumber(ther14)) {
 		return false;
 	}
 	if (ther14 == "") ther14 = 0;
 	ther14 = parseFloat(ther14);
 	var ther15 = form.r15.value;
 	if (!isNumber(ther15)) {
 		return false;
 	}
 	if (ther15 == "") ther15 = 0;
 	ther15 = parseFloat(ther15);
 	var ther21 = form.r21.value;
 	if (!isNumber(ther21)) {
 		return false;
 	}
 	if (ther21 == "") ther21 = 0;
 	ther21 = parseFloat(ther21);
 	var ther22 = form.r22.value;
 	if (!isNumber(ther22)) {
 		return false;
 	}
 	if (ther22 == "") ther22 = 0;
 	ther22 = parseFloat(ther22);
 	var ther23 = form.r23.value;
 	if (!isNumber(ther23)) {
 		return false;
 	}
 	if (ther23 == "") ther23 = 0;
 	ther23 = parseFloat(ther23);
 	var ther24 = form.r24.value;
 	if (!isNumber(ther24)) {
 		return false;
 	}
 	if (ther24 == "") ther24 = 0;
 	ther24 = parseFloat(ther24);
 	var ther25 = form.r25.value;
 	if (!isNumber(ther25)) {
 		return false;
 	}
 	if (ther25 == "") ther25 = 0;
 	ther25 = parseFloat(ther25);
 	var theER1 = (thep1*ther11 + thep2*ther12  + thep3*ther13  + thep4*ther14  + thep5*ther15)/100;
 	var theER2 = (thep1*ther21 + thep2*ther22  + thep3*ther23  + thep4*ther24  + thep5*ther25)/100;
 	var theV1 = (thep1*Math.pow(ther11-theER1,2) + thep2*Math.pow(ther12-theER1,2)  + thep3*Math.pow(ther13-theER1,2)  + thep4*Math.pow(ther14-theER1,2)  + thep5*Math.pow(ther15-theER1,2))/1000000;
 	var theV2 = (thep1*Math.pow(ther21-theER2,2) + thep2*Math.pow(ther22-theER2,2)  + thep3*Math.pow(ther23-theER2,2)  + thep4*Math.pow(ther24-theER2,2)  + thep5*Math.pow(ther25-theER2,2))/1000000;
 	var theSD1 = Math.sqrt(theV1);
 	var theSD2 = Math.sqrt(theV2);
 	var theCov = (thep1*(ther11-theER1)*(ther21-theER2) + thep2*(ther12-theER1)*(ther22-theER2)  + thep3*(ther13-theER1)*(ther23-theER2)  + thep4*(ther14-theER1)*(ther24-theER2)  + thep5*(ther15-theER1)*(ther25-theER2))/1000000;
	var theCorr = "";
	if ((theSD1 > 0) && (theSD2 > 0)) {
		theCorr = (theCov)/(theSD1*theSD2);
	}	
 	form.er1.value = "" + Math.round(theER1*100)/100;
 	form.er2.value = "" + Math.round(theER2*100)/100;
 	form.v1.value = "" + Math.round(theV1*100000)/100000;
 	form.v2.value = "" + Math.round(theV2*100000)/100000;
 	form.sd1.value = "" + Math.round(theSD1*10000)/100;
 	form.sd2.value = "" + Math.round(theSD2*10000)/100;
 	form.cov.value = "" + Math.round(theCov*100000)/100000;
 	form.corr.value = "" + Math.round(theCorr*100000)/100000;
 	return true;
}

function clearERCalc(form) {
	form.p1.value = "0";
	form.p2.value = "0";
	form.p3.value = "0";
	form.p4.value = "0";
	form.p5.value = "0";
	form.r11.value = "0";
	form.r12.value = "0";
	form.r13.value = "0";
	form.r14.value = "0";
	form.r15.value = "0";
	form.r21.value = "0";
	form.r22.value = "0";
	form.r23.value = "0";
	form.r24.value = "0";
	form.r25.value = "0";
	form.er1.value = "";
	form.er2.value = "";
	form.v1.value = "";
	form.v2.value = "";
	form.sd1.value = "";
	form.sd2.value = "";
	form.cov.value = "";
	form.corr.value = "";
}
 
 function isPositiveNumber(inputStr) {
 	var decFlag = false;
 	if (inputStr == ".") {
 		alert("Please make sure that only numbers are input.");
 		return false;
 	}
 	for (var i = 0; i < inputStr.length; i++) {
 		var oneChar = inputStr.substring(i,i+1);
 		if (((oneChar >= "0") && (oneChar <= "9")) || ((oneChar == ".") && (decFlag == false))) {
 		
 		} else {
 			alert("Please make sure that only numbers are input.");
 			return false;
 		}
 		if (oneChar == ".") {
	 		decFlag = true;
	 	}
 	}
	return true;
 }
 
 function isNumber(inputStr) {
 	var decFlag = false;
 	if (inputStr == ".") {
 		alert("Please make sure that only numbers are input.");
 		return false;
 	}
 	for (var i = 0; i < inputStr.length; i++) {
 		var oneChar = inputStr.substring(i,i+1);
 		if ((i == 0) && (inputStr.length > 1)) {
	 		if (((oneChar >= "0") && (oneChar <= "9")) || ((oneChar == ".") && (decFlag == false)) || (oneChar == "-")) {
	 		
	 		} else {
	 			alert("Please make sure that only numbers are input.");
	 			return false;
	 		}
	 	} else {
	 		if (((oneChar >= "0") && (oneChar <= "9")) || ((oneChar == ".") && (decFlag == false))) {
	 		
	 		} else {
	 			alert("Please make sure that only numbers are input.");
	 			return false;
	 		}
	 	}
	 	if (oneChar == ".") {
	 		decFlag = true;
	 	}	
 	}
	return true;
 }
 
function launchERCalc() {
    window.open("ERCalcWindow.html","Win1","menubar,resizable,height=320,width=334");
}

