
// Cargo capacity in units of M or D
function cargoCapacity(cargobay)
{
	return cargobay * 100;
}

// Fuel capacity in D
function fuelCapacity(fuelbay)
{
	return fuelbay * 100;
}

// Attack damage
function attackPower(weapons)
{
	return weapons;
}

// Defense HP
function defense(size, shields)
{
	return size + shields*10;
}

// Speed in PC/h
function speed(size, engines)
{
	return 25 * Math.pow(size/4,-0.5) * engines / (size/4);
}

// Fuel use in D/h
function fuelUse(size, engines)
{
	return 1000 * Math.pow(size/4,-1.1) * engines;
}

// Range in PC
function shiprange(size, engines, fuelbay)
{
	return speed(size, engines) * Math.floor(60 * fuelCapacity(fuelbay) / fuelUse(size, engines)) / 60;
}

// Return range in PC
function returnrange(size, engines, fuelbay)
{
	return speed(size, engines) * Math.floor(60 * fuelCapacity(fuelbay) / fuelUse(size, engines) / 2) / 60;
}

function updateProdVals(id,output,maxc,maxe){
	cspan = document.getElementById("conssp"+id);
	espan = document.getElementById("effsp"+id);	
	var index = document.getElementById("pdd"+id).selectedIndex;
	var pval = parseFloat(document.getElementById("pdd"+id)[index].value);
	pval = pval/100;
	var cc = parseInt(maxc * output)*6;
	var ce = parseInt(maxe * output)*6;
	var nc = parseInt(maxc * pval)*6;
	var ne = parseInt(maxe * pval)*6;
	var ed =0;
	var cd=0;
	if(cc==nc && ce==ne){
		cspan.innerHTML = cc;
		cspan.title="";
		espan.innerHTML = ce;
		espan.title="";
	}else{				
		cd = nc-cc;
		ed = ne-ce;
		cspan.innerHTML = nc + "("+ cc+")";
		cspan.title=((cd>=0)?"+":"") + cd;
		espan.innerHTML = ne + "("+ ce+")";
		espan.title=((ed>=0)?"+":"") + ed;
	}
}

function reloadPage(){
	location.reload(true);
}

function liveCount(seconds,name,dual,reload,first){
	span=document.getElementById(name);
	if(first==1){
		var d = new Date();
		d.setTime(d.getTime()+(seconds*1000));
		span.title = d.toLocaleDateString() + " " + d.toLocaleTimeString();
		if(dual==1){
			spanb=document.getElementById("b" + name);
			spanb.title = d.toLocaleDateString() + " " + d.toLocaleTimeString();
		}
	}
	hours = Math.floor(seconds/3600);
	minutes = Math.floor(seconds/60)%60;
	sec = seconds%60;
	span.innerHTML =  hours + ":" + padString(minutes,"0",2) + ":" + padString(sec,"0",2);
	//span.title = hours + ":" + padString(minutes,"0",2) + ":" + padString(sec,"0",2);
	if (seconds>0){
		 setTimeout('liveCount('+(seconds - 1)+',"'+name+'",'+ dual +','+reload+',0);',1000);
	}else{
		if(reload==1) setTimeout('reloadPage()',10000);
	}

}

function livePercent(seconds,cost,buildrate,progress,name,first){
	var sec = seconds;
	var per;
	if (sec > 600) sec = 0;
	per = (((buildrate*(sec/600))+progress)/cost)*100;
	span=document.getElementById(name);
	span.innerHTML = Math.min(Math.round(per),100);
	if (per<100){
		setTimeout('livePercent('+(sec+1)+','+cost+','+buildrate+','+progress+',"'+name+'",0);',1000);
	}
}

function padString(string,chr,len){
	tempstring = string.toString();
	while(tempstring.length < len) tempstring = chr + tempstring;
	return tempstring;
}

function loadShip(){
	var index = document.getElementById("hullselect").selectedIndex;
	var ship = document.getElementById("hullselect")[index].value;
	document.getElementById("description").innerHTML=desc[ship];
	document.getElementById("size").innerHTML=size[ship];
	document.getElementById("cost").innerHTML=cost[ship];
	document.getElementById("maxweapons").innerHTML=weap[ship];
}

function getPartsSize(){
	var engines = parseInt(document.getElementById("engines").value);
	var fuel = parseInt(document.getElementById("fuel").value);
	var cargo = parseInt(document.getElementById("cargo").value);
	var weapons = parseInt(document.getElementById("weapons").value);
	var shields = parseInt(document.getElementById("shields").value);
	return engines + fuel + cargo + weapons + shields;
}

function validateDesForm(shsz,mw){
	var calcsize = getPartsSize();
	var sname = document.getElementById("shipname").value;
	var wep = parseInt(document.getElementById("weapons").value);
	var engines = parseInt(document.getElementById("engines").value);
	var shields = parseInt(document.getElementById("shields").value);
	var cargo = parseInt(document.getElementById("cargo").value);
	var fuel = parseInt(document.getElementById("fuel").value);
	
	if(sname == ""){
		alert("You need a ship name.");
		return false;
	}
	
	if(calcsize > shsz){
		alert("You have overloaded your ship by " + (calcsize -shsz) + ".");
		return false;
	}
	if(calcsize < shsz){
		alert("You have " + (shsz-calcsize) + " more space too fill.");
		return false;
	}
	if(wep > mw){
		alert("You have too many weapons. You need to remove " + (wep - mw) + ".");
		return false;
	}
	if(engines<1){
		alert("You need at least 1 engine.");
		return false;
	}
	if(fuel<1){
		alert("You need at least 1 Fuel.");
		return false;
	}
	
	if(wep<0 || shields<0 || cargo <0){
		alert("You can't have a negative value");
		return false;
	}
	
	if((calcsize == shsz) && (wep<=mw)) return true;
	return false;	
}

function validateField(name,size,min,max){
	var field = parseInt(document.getElementById(name).value);
	if (field.toString() =="NaN") field = 0;
	var calcsize = getPartsSize();
	var remspace = calcsize - field;
	if (field < min) field = min;
	if (calcsize>size) field = field - (calcsize-size);
	if (field>max) field = max;
	if (field>(size-remspace)) field = size - remspace; 
	document.getElementById(name).value = field;
	document.getElementById("remain").value = size-getPartsSize();

	updatestats();
}

function minus(sectionid,min)
{
	section = document.getElementById(sectionid);
	remain = document.getElementById("remain");
	if (section.value > min)
	{
		section.value -= 1;
		remain.value = Number(remain.value) + 1;
	}

	updatestats();
}

function plus(sectionid,max)
{
	section = document.getElementById(sectionid);
	remain = document.getElementById("remain");
	if (remain.value > 0 && section.value < max)
	{
		section.value = Number(section.value) + 1;
		remain.value -= 1;
	}

	updatestats();
}

function updatestats()
{
	var size = parseInt(document.getElementById("size").innerHTML);

	var engines = parseInt(document.getElementById("engines").value);
	var fuel = parseInt(document.getElementById("fuel").value);
	var weapons = parseInt(document.getElementById("weapons").value);
	var shields = parseInt(document.getElementById("shields").value);
	var cargo = parseInt(document.getElementById("cargo").value);

	var speedElement = document.getElementById("speed");
	var rangeElement = document.getElementById("range");
	var attackElement = document.getElementById("attack");
	var defenseElement = document.getElementById("defense");
	var capacityElement = document.getElementById("capacity");

	speedElement.innerHTML = speed(size, engines).toFixed(2);
	rangeElement.innerHTML = shiprange(size, engines, fuel).toFixed(2);
	attackElement.innerHTML = attackPower(weapons);
	defenseElement.innerHTML = defense(size, shields);
	capacityElement.innerHTML = cargoCapacity(cargo);
}

function updateOtherP(id){
	var index = document.getElementById("opd"+id).selectedIndex;
	var selval = document.getElementById("opd"+id)[index].value;
	
	if(selval==0){
		document.getElementById("opo"+id).style.visibility="visible";
	}else{
		document.getElementById("opo"+id).style.visibility="hidden";
	}
}

function changePage(id,page,pid){
	var index = document.getElementById("pcdd"+id).selectedIndex;
	var selval = document.getElementById("pcdd"+id)[index].value;
	
	if(selval != pid){
		document.location = "./" + page + "?planet=" + selval;
	}
}

function checkPasswords(){
	var newpw = document.getElementById("newpw").value;
	var conpw = document.getElementById("conpw").value;
	if(newpw==conpw) return true;
	alert("New Password and Confirm Password do not match");
	return false;
}


