/*
CYBERNETIC CREDIT COSTS
FACTOR 	COST IN CREDITS
Active Points 1-10 	Real Cost x (Active Cost x 1000)
Active Points 11-20 	Real Cost x (Active Cost x 1250)
Active Points 21-30 	Real Cost x (Active Cost x 1500)
Active Points 31-40 	Real Cost x (Active Cost x 2000)
Active Points 41-50 	Real Cost x (Active Cost x 3000)
+10 Active Points 	Increase multiplier by 1000

Uncommon 	Total of above x 1.5
Rare 	Total of above x 2

Replace (Foci) 	Total of above x .5
Repair 	Total of above x .33

Upgrade 	(New Device Cost - Existing Device Cost) x .9
*/

var increment = new Array(11,21,31,41);
function getCyberneticCost(ddlForm)
{
	
	handleRealCostActivePoints(ddlForm);
	var ap = getCyberneticActivePoints(ddlForm);
	var rc = getCyberneticRealCost(ddlForm);
	var baseCost = parseFloat("0");
	var multiple = getCyberneticMultiple(ap);
	
	var ctv = getCyberneticTypeMultiple(ddlForm);
	var crv = getCyberneticRarityMultiple(ddlForm);
	
	baseCost = ((rc * (ap * multiple)) * crv) * ctv;
	
	ddlForm.cyberneticCreditCost.value = FormatNumber(baseCost,0,false,false,true);
	
}
function getCyberneticMultiple(ap)
{
	var multiple = parseFloat("0");
	
	if(ap < increment[0])
		multiple = 1000;
	if(ap < increment[1])
		multiple = 1250;
	if(ap < increment[2])
		multiple = 5000;
	if(ap < increment[3])
		multiple = 2000;
	if(ap >= increment[3])
		multiple += ((((ap - increment[3]) /10) +1) * 1000);
	
	return multiple
}	
function handleRealCostActivePoints(ddlForm)
{
	var ap = parseFloat("0");
	//parse input
	ap  = getCyberneticActivePoints(ddlForm);
	

	var rc = parseFloat("0");
	//parse input
	rc  = getCyberneticRealCost(ddlForm);
	
	if(rc > ap) //RealCost cannot exceed ActivePoints; 0 RC
	{
		ddlForm.cyberneticRealCost.value = FormatNumber(parseFloat(ap),0,false,false,true);
		ddlForm.cyberneticActivePoints.value = FormatNumber(parseFloat(rc),0,false,false,true);
	}
	else
	{	
		ddlForm.cyberneticActivePoints.value = FormatNumber(parseFloat(ap),0,false,false,true);
		ddlForm.cyberneticRealCost.value = FormatNumber(parseFloat(rc),0,false,false,true);
	}
	
}

function getCyberneticActivePoints(ddlForm)
{
	var ap = parseFloat("0");
	//parse input
	ap  = ddlForm.cyberneticActivePoints.value.replace(/\$|\,/g,'');
	ap  =  parseFloat((isNaN(ap ) || (ap =="")) ? "0": ap );
	
	ddlForm.cyberneticActivePoints.value = FormatNumber(parseFloat(ap),0,false,false,true);
	return parseFloat(ap);
}
function getCyberneticRealCost(ddlForm)
{
	var rc = parseFloat("0");
	//parse input
	rc  = ddlForm.cyberneticRealCost.value.replace(/\$|\,/g,'');
	rc  =  parseFloat((isNaN(rc) || (rc =="")) ? "0": rc );
	ddlForm.cyberneticRealCost.value = FormatNumber(parseFloat(rc),0,false,false,true);
	return parseFloat(rc);
}
function getCyberneticTypeMultiple(ddlForm)
{
	var ctv = parseFloat("0");
	//parse input
	ctv = ddlForm.cyberneticTypeList[ddlForm.cyberneticTypeList.selectedIndex].value;
	return parseFloat(ctv);
}
function getCyberneticRarityMultiple(ddlForm)
{
	var crv = parseFloat("0");
	//parse input
	crv = ddlForm.cyberneticRarityList[ddlForm.cyberneticRarityList.selectedIndex].value;
	return parseFloat(crv);
}
function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
	/**********************************************************************
	IN:
		NUM - the number to format
		decimalNum - the number of decimal places to format the number to
		bolLeadingZero - true / false - display a leading zero for
										numbers between -1 and 1
		bolParens - true / false - use parenthesis around negative numbers
		bolCommas - put commas as number separators.
 
	RETVAL:
		The formatted number!
 	**********************************************************************/
{ 
        if (isNaN(parseInt(num))) return "NaN";

	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;		// Get sign of number
	
	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum))
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;					// Readjust for sign
	
	
	// Create a string object to do our formatting on
	var tmpNumStr = new String(tmpNum);

	// See if we need to strip out the leading zero or not.
	if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
		if (num > 0)
			tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
		else
			tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
		
	// See if we need to put in the commas
	if (bolCommas && (num >= 1000 || num <= -1000)) {
		var iStart = tmpNumStr.indexOf(".");
		if (iStart < 0)
			iStart = tmpNumStr.length;

		iStart -= 3;
		while (iStart >= 1) {
			tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
			iStart -= 3;
		}		
	}

	// See if we need to use parenthesis
	if (bolParens && num < 0)
		tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

	return tmpNumStr;	
}