window.onload = init;

function init(){
	changes = document.getElementsByTagName("input");
	for(i=0; i<changes.length; i++){
		field = changes[i];
		field.onchange = getchanges;
		
	}
	
	document.getElementById("addrow").onclick = addrow;
	document.getElementById("deleterow").onclick = deleterow;
	document.getElementById("reset").onclick = reset;

}



function getchanges(){
var lengthunits ="";
var weightunits ="";
var balanceunits = "";
var locationunits = "";
var addunits = "";

for(i=0; i < document.getElementsByName("lengthunits").length; i++){
	if(document.getElementsByName("lengthunits")[i].checked == true){
		lengthunits = document.getElementsByName("lengthunits")[i].value;
//		break;
	}
}	
for(i=0; i < document.getElementsByName("weightunits").length; i++){
	if(document.getElementsByName("weightunits")[i].checked == true){
		weightunits = document.getElementsByName("weightunits")[i].value;
	}
}	
for(i=0; i < document.getElementsByName("balanceunits").length; i++){
	if(document.getElementsByName("balanceunits")[i].checked == true){
		balanceunits = document.getElementsByName("balanceunits")[i].value;
	}
}	
for(i=0; i < document.getElementsByName("locationunits").length; i++){
	if(document.getElementsByName("locationunits")[i].checked == true){
		locationunits = document.getElementsByName("locationunits")[i].value;
	}
}	
for(i=0; i < document.getElementsByName("addunits").length; i++){
	if(document.getElementsByName("addunits")[i].checked == true){
		addunits = document.getElementsByName("addunits")[i].value;
	}
}	

var lengtharray = document.getElementsByName("lengthunits");
var weightarray = document.getElementsByName("weightunits");
var balancearray = document.getElementsByName("balanceunits");
var locationarray = document.getElementsByName("locationunits");
var addarray = document.getElementsByName("addunits");

var headers = document.getElementById("data").getElementsByTagName("tr")[0].getElementsByTagName("th");
	if(weightunits == "oz"){
		headers[2].innerHTML = "New<br>Weight<br>(oz)";
	}else{
		headers[2].innerHTML = "New<br>Weight<br>(gm)";
	}
	if(balanceunits == "in"){
		headers[3].innerHTML = "New<br>Balance<br>(in)";
	}else{
		headers[3].innerHTML = "New<br>Balance<br>(cm)";
	}





	var urladd = "lengthunits="+lengthunits+"&"+"weightunits="+weightunits+"&"+"balanceunits="+balanceunits+"&"+"locationunits="+locationunits+"&"+"addunits="+addunits+"&";

	var entries = document.getElementsByTagName("input");


	var locations = document.getElementById("data").getElementsByTagName("input");

	var length = locations.length;


	if(((length > 2 && (locations[2].value && locations[6].value)) || (length > 7 && (locations[7].value && locations[9].value)) || (length > 10 && (locations[10].value && locations[12].value)) || (length > 13 && (locations[13].value && locations[15].value)) || (length >16 && (locations[16].value && locations[18].value)))){
		

		document.getElementById("processing").innerHTML = "<img src = '../../images/processing.gif'>";	//add processing timer
		var request = createRequest();
		if (request == null){
			alert("unable to create request");
			return;
		}


	}else if(activated.value == "" || activated.value == null || activated.value == "undefined") { //if((activated == "" && (locations[0].value || locations[1].value)) || (activated == "" && (locations[2].value && locations[3].value)) || (activated == "" && (locations[4].value && locations[5].value)) || (activated == "" && (locations[6].value && locations[7].value)) || (activated == "" && (locations[8].value && locations[9].value))){
		document.getElementById("processing").innerHTML = "<img src = '../../images/processing.gif'>";
		var request = createRequest();
		if (request == null){
			alert("unable to create request");
			return;
		}


	}


	for(i=0; i<entries.length-3; i++){	// -3 because the last 3 input fields are buttons
		if((entries[i].name != "lengthunits" && entries[i].name != "weightunits" && entries[i].name != "balanceunits" && entries[i].name != "locationunits" && entries[i].name != "addunits") && entries[i].value){
			urladd = urladd + entries[i].name + "=" + entries[i].value;
			if(i !== entries.length -3){
				urladd = urladd + "&";
			}
		}
	}
	var end = urladd.match(/&/);
	if(end == "\&"){
		urladd = urladd.replace(/&$/,"");
	}


	url = "customizationReverse2.php";
	request.open("POST", url, true);


	request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");


	request.onreadystatechange = showchanges;
	request.send(urladd);
	
}

function showchanges(){

	var responsearray = new Array();
	var response = request.responseText;
	responsearray = response.split(",");
	var responsearray2 = new Array();

	for(i=0;i<responsearray.length;i++){
		element = responsearray[i].split(":");
		first = element[0];
		second = element[1];
		responsearray2[first] = second;
	}

	if(request.readyState == 4){
		if(request.status == 200){
			document.getElementById("processing").innerHTML = "";

			if(responsearray2["power"]){
				document.getElementById('powerpotential').innerHTML = responsearray2["power"];
			}else{
				document.getElementById("powerpotential").innerHTML = " ";
			}
			if(responsearray2["plow"]){
				document.getElementById('plowthrough').innerHTML = responsearray2["plow"];
			}else{
				document.getElementById("plowthrough").innerHTML = " ";
			}
			if(responsearray2["power3"]){
				document.getElementById('powerpotential3').innerHTML = responsearray2["power3"];
			}else{
				document.getElementById("powerpotential3").innerHTML = " ";
			}
			if(responsearray2["plow3"]){
				document.getElementById('plowthrough3').innerHTML = responsearray2["plow3"];
			}else{
				document.getElementById("plowthrough3").innerHTML = " ";
			}


			if(responsearray2["newweight1"]){
				document.getElementById('newweight1').innerHTML = responsearray2["newweight1"] + "<br>" + responsearray2["changeweight1"] + "%";
			}else{
				document.getElementById("newweight1").innerHTML = " ";
			}
			if(responsearray2["newbalance1"]){
				document.getElementById("balance1").innerHTML = responsearray2["newbalance1"]+"<br>"+responsearray2["balance1pts"] + "<br>" + responsearray2["changebal1"] + "%";
			}else{
				document.getElementById("balance1").innerHTML = " ";
			}
			if(responsearray2["newswing1"]){
				document.getElementById("swingweight1").innerHTML = responsearray2["newswing1"] + "<br>" + responsearray2["changeswing1"] + "%";
			}else{
				document.getElementById("swingweight1").innerHTML = " ";
			}
			if(responsearray2["newtwist1"]){
				document.getElementById("twistweight1").innerHTML = responsearray2["newtwist1"] + "<br>" + responsearray2["changetwist1"] + "%";
			}else{
				document.getElementById("twistweight1").innerHTML = " ";
			}

			if(responsearray2["newpower1"]){
				document.getElementById("power1").innerHTML = responsearray2["newpower1"] + "<br>" + responsearray2["changepower1"] + "%";
			}else{
				document.getElementById("power1").innerHTML = " ";
			}
			if(responsearray2["newplow1"]){
				document.getElementById("plow1").innerHTML = responsearray2["newplow1"] + "<br>" + responsearray2["changeplow1"] + "%";
			}else{
				document.getElementById("plow1").innerHTML = " ";
			}
			if(responsearray2["newpower3_1"]){
				document.getElementById("power3_1").innerHTML = responsearray2["newpower3_1"] + "<br>" + responsearray2["changepower3_1"] + "%";
			}else{
				document.getElementById("power3_1").innerHTML = " ";
			}
			if(responsearray2["newplow3_1"]){
				document.getElementById("plow3_1").innerHTML = responsearray2["newplow3_1"] + "<br>" + responsearray2["changeplow3_1"] + "%";
			}else{
				document.getElementById("plow3_1").innerHTML = " ";
			}



			if(responsearray2["newweight2"]){
				document.getElementById("newweight2").innerHTML = responsearray2["newweight2"] + "<br>" + responsearray2["changeweight2"] + "%";
			}else{
				document.getElementById("newweight2").innerHTML = " ";
			}
			if(responsearray2["newbalance2"]){
				document.getElementById("balance2").innerHTML = responsearray2["newbalance2"]+"<br>"+responsearray2["balance2pts"] + "<br>" + responsearray2["changebal2"] + "%";
			}else{
				document.getElementById("balance2").innerHTML = " ";
			}
			if(responsearray2["newswing2"]){
				document.getElementById("swingweight2").innerHTML = responsearray2["newswing2"] + "<br>" + responsearray2["changeswing2"] + "%";
			}else{
				document.getElementById("swingweight2").innerHTML = " ";
			}
			if(responsearray2["newtwist2"]){
				document.getElementById("twistweight2").innerHTML = responsearray2["newtwist2"] + "<br>" + responsearray2["changetwist2"] + "%";
			}else{
				document.getElementById("twistweight2").innerHTML = " ";
			}

			if(responsearray2["newpower2"]){
				document.getElementById("power2").innerHTML = responsearray2["newpower2"] + "<br>" + responsearray2["changepower2"] + "%";
			}else{
				document.getElementById("power2").innerHTML = " ";
			}
			if(responsearray2["newplow2"]){
				document.getElementById("plow2").innerHTML = responsearray2["newplow2"] + "<br>" + responsearray2["changeplow2"] + "%";
			}else{
				document.getElementById("plow2").innerHTML = " ";
			}
			if(responsearray2["newpower3_2"]){
				document.getElementById("power3_2").innerHTML = responsearray2["newpower3_2"] + "<br>" + responsearray2["changepower3_2"] + "%";
			}else{
				document.getElementById("power3_2").innerHTML = " ";
			}
			if(responsearray2["newplow3_2"]){
				document.getElementById("plow3_2").innerHTML = responsearray2["newplow3_2"] + "<br>" + responsearray2["changeplow3_2"] + "%";
			}else{
				document.getElementById("plow3_2").innerHTML = " ";
			}




			if(responsearray2["newweight3"]){
				document.getElementById("newweight3").innerHTML = responsearray2["newweight3"] + "<br>" + responsearray2["changeweight3"] + "%";
			}else{
				document.getElementById("newweight3").innerHTML = " ";
			}
			if(responsearray2["newbalance3"]){
				document.getElementById("balance3").innerHTML = responsearray2["newbalance3"]+"<br>"+responsearray2["balance3pts"] + "<br>" + responsearray2["changebal3"] + "%";
			}else{
				document.getElementById("balance3").innerHTML = " ";
			}
			if(responsearray2["newswing3"]){
				document.getElementById("swingweight3").innerHTML = responsearray2["newswing3"] + "<br>" + responsearray2["changeswing3"] + "%";
			}else{
				document.getElementById("swingweight3").innerHTML = " ";
			}
			if(responsearray2["newtwist3"]){
				document.getElementById("twistweight3").innerHTML = responsearray2["newtwist3"] + "<br>" + responsearray2["changetwist3"] + "%";
			}else{
				document.getElementById("twistweight3").innerHTML = " ";
			}
			if(responsearray2["newpower3"]){
				document.getElementById("power3").innerHTML = responsearray2["newpower3"] + "<br>" + responsearray2["changepower3"] + "%";
			}else{
				document.getElementById("power3").innerHTML = " ";
			}
			if(responsearray2["newplow3"]){
				document.getElementById("plow3").innerHTML = responsearray2["newplow3"] + "<br>" + responsearray2["changeplow3"] + "%";
			}else{
				document.getElementById("plow3").innerHTML = " ";
			}
			if(responsearray2["newpower3_3"]){
				document.getElementById("power3_3").innerHTML = responsearray2["newpower3_3"] + "<br>" + responsearray2["changepower3_3"] + "%";
			}else{
				document.getElementById("power3_3").innerHTML = " ";
			}
			if(responsearray2["newplow3_3"]){
				document.getElementById("plow3_3").innerHTML = responsearray2["newplow3_3"] + "<br>" + responsearray2["changeplow3_3"] + "%";
			}else{
				document.getElementById("plow3_3").innerHTML = " ";
			}




			if(responsearray2["newweight4"]){
				document.getElementById("newweight4").innerHTML = responsearray2["newweight4"] + "<br>" + responsearray2["changeweight4"] + "%";
			}else{
				document.getElementById("newweight4").innerHTML = "";
			}
			if(responsearray2["newbalance4"]){
				document.getElementById("balance4").innerHTML = responsearray2["newbalance4"]+"<br>"+responsearray2["balance4pts"] + "<br>" + responsearray2["changebal4"] + "%";
			}else{
				document.getElementById("balance4").innerHTML = "";
			}
			if(responsearray2["newswing4"]){
				document.getElementById("swingweight4").innerHTML = responsearray2["newswing4"] + "<br>" + responsearray2["changeswing4"] + "%";
			}else{
				document.getElementById("swingweight4").innerHTML = "";
			}
			if(responsearray2["newtwist4"]){
				document.getElementById("twistweight4").innerHTML = responsearray2["newtwist4"] + "<br>" + responsearray2["changetwist4"] + "%";
			}else{
				document.getElementById("twistweight4").innerHTML = " ";
			}
			if(responsearray2["newpower4"]){
				document.getElementById("power4").innerHTML = responsearray2["newpower4"] + "<br>" + responsearray2["changepower4"] + "%";
			}else{
				document.getElementById("power4").innerHTML = " ";
			}
			if(responsearray2["newplow4"]){
				document.getElementById("plow4").innerHTML = responsearray2["newplow4"] + "<br>" + responsearray2["changeplow4"] + "%";
			}else{
				document.getElementById("plow4").innerHTML = " ";
			}
			if(responsearray2["newpower3_4"]){
				document.getElementById("power3_4").innerHTML = responsearray2["newpower3_4"] + "<br>" + responsearray2["changepower3_4"] + "%";
			}else{
				document.getElementById("power3_4").innerHTML = " ";
			}
			if(responsearray2["newplow3_4"]){
				document.getElementById("plow3_4").innerHTML = responsearray2["newplow3_4"] + "<br>" + responsearray2["changeplow3_4"] + "%";
			}else{
				document.getElementById("plow3_4").innerHTML = " ";
			}





			if(responsearray2["newweight5"]){
				document.getElementById("newweight5").innerHTML = responsearray2["newweight5"] + "<br>" + responsearray2["changeweight5"] + "%";
			}else{
				document.getElementById("newweight5").innerHTML = "";
			}
			if(responsearray2["newbalance5"]){
				document.getElementById("balance5").innerHTML = responsearray2["newbalance5"]+"<br>"+responsearray2["balance5pts"] + "<br>" + responsearray2["changebal5"] + "%";
			}else{
				document.getElementById("balance5").innerHTML = "";
			}
			if(responsearray2["newswing5"]){
				document.getElementById("swingweight5").innerHTML = responsearray2["newswing5"] + "<br>" + responsearray2["changeswing5"] + "%";
			}else{
				document.getElementById("swingweight5").innerHTML = "";
			}
			if(responsearray2["newtwist5"]){
				document.getElementById("twistweight5").innerHTML = responsearray2["newtwist5"] + "<br>" + responsearray2["changetwist5"] + "%";
			}else{
				document.getElementById("twistweight5").innerHTML = " ";
			}
			if(responsearray2["newpower5"]){
				document.getElementById("power5").innerHTML = responsearray2["newpower5"] + "<br>" + responsearray2["changepower5"] + "%";
			}else{
				document.getElementById("power5").innerHTML = " ";
			}
			if(responsearray2["newplow5"]){
				document.getElementById("plow5").innerHTML = responsearray2["newplow5"] + "<br>" + responsearray2["changeplow5"] + "%";
			}else{
				document.getElementById("plow5").innerHTML = " ";
			}
			if(responsearray2["newpower3_5"]){
				document.getElementById("power3_5").innerHTML = responsearray2["newpower3_5"] + "<br>" + responsearray2["changepower3_5"] + "%";
			}else{
				document.getElementById("power3_5").innerHTML = " ";
			}
			if(responsearray2["newplow3_5"]){
				document.getElementById("plow3_5").innerHTML = responsearray2["newplow3_5"] + "<br>" + responsearray2["changeplow3_5"] + "%";
			}else{
				document.getElementById("plow3_5").innerHTML = " ";
			}





		}
	}
}



  function addrow(){
    var tbody = document.getElementById("data").getElementsByTagName("tbody")[0];
    
 	var rowarray = document.getElementById("data").getElementsByTagName("tr");
    var rownumber = rowarray.length -1;  //number of rows minus header row
    var nextrow = rownumber + 1;
    if(nextrow <6){
    var row = document.createElement("tr");
	}else{
		alert("You can only have 5 rows.");
		return;
	}
    var td1 = document.createElement("td");
    var L = document.createTextNode("L");
    var W = document.createTextNode(" W");
    var input1 = document.createElement("input");
    td1.appendChild(L);
    td1.appendChild(input1);
	td1.className="center7";
    input1.setAttribute("size", "6");
    input1.setAttribute("id", "location"+nextrow);
    input1.setAttribute ("name", "location"+nextrow);
   	input1.onchange = getchanges;
   
    td1.appendChild(W);
    var input2 = document.createElement("input");
    td1.appendChild(input2);
    input2.setAttribute("size", "6");
    input2.setAttribute("id", "location3_"+nextrow);
    input2.setAttribute ("name", "location3_"+nextrow);
   	input2.onchange = getchanges;


    var td2 = document.createElement("td");
    var input3 = document.createElement("input");
    td2.appendChild(input3);
	td2.className="center7";
    input3.setAttribute("size", "6");
    input3.setAttribute("id", "weight"+nextrow);
    input3.setAttribute("name", "weight"+nextrow);
    input3.onchange = getchanges;

    var td3 = document.createElement("td");
    td3.appendChild (document.createTextNode(" "));
	td3.id="newweight"+nextrow;
	td3.className="center7";
	
    var td4 = document.createElement("td");
    td4.appendChild (document.createTextNode(" "));
	td4.id="balance"+nextrow;
	td4.className="center7";

    var td5 = document.createElement("td");
    td5.appendChild (document.createTextNode(" "));
	td5.id="swingweight"+nextrow;
	td5.className="center7";

    var td6 = document.createElement("td");
    td6.appendChild (document.createTextNode(" "));
	td6.id="twistweight"+nextrow;
	td6.className="center7";

    var td7 = document.createElement("td");
    td7.appendChild (document.createTextNode(" "));
	td7.id="power"+nextrow;
	td7.className="center7";

    var td8 = document.createElement("td");
    td8.appendChild (document.createTextNode(" "));
	td8.id="plow"+nextrow;
	td8.className="center7";

    var td9 = document.createElement("td");
    td9.appendChild (document.createTextNode(" "));
	td9.id="power3_"+nextrow;
	td9.className="center7";

    var td10 = document.createElement("td");
    td10.appendChild (document.createTextNode(" "));
	td10.id="plow3_"+nextrow;
	td10.className="center7";

    row.appendChild(td1);
    row.appendChild(td2);
    row.appendChild(td3);
    row.appendChild(td4);
    row.appendChild(td5);
    row.appendChild(td6);
    row.appendChild(td7);
    row.appendChild(td8);
    row.appendChild(td9);
    row.appendChild(td10);

    tbody.appendChild(row);

  }
 
 
 function deleterow(){
	var table = document.getElementById("data");
	var allrows = table.getElementsByTagName("tr");
	var lastindex = allrows.length -1;
	if(lastindex > 1){
 		allrows[lastindex].parentNode.removeChild(allrows[lastindex]);
 	}else{
 		alert("You cannot delete the first row.");
 	}
 	return
 }
 
 
function reset(){

	var rows = document.getElementById("data").getElementsByTagName("tbody")[0].getElementsByTagName("tr");
	var specrows =  document.getElementById("specs").getElementsByTagName("tr");

	for(i=1; i<specrows.length; i++){  //i=1 so skip header row
 			var inputspecs = specrows[i].getElementsByTagName("input"); //does not get radio unit buttons
				for(j=0; j<inputspecs.length; j++){

					if(inputspecs[j].type=="radio"){
						continue;
					}else{	

 						inputspecs[j].value = "";  //change input cell to no value
					}
 				}

 			var calcspecs = specrows[i].getElementsByTagName("td"); //does not get radio unit buttons
				for(j=0; j<calcspecs.length; j++){
					if(calcspecs[j].getElementsByTagName("input").length>0){
						continue;
					}else{	

 						calcspecs[j].innerHTML = "";  //change input cell to no value
					}
 				}
	}

	for(i=0; i<rows.length; i++){  //skip header row

		if(i == 0){
 			var thcells = rows[i].getElementsByTagName("th");
			thcells[2].innerHTML = "New<br>Weight";		
			thcells[3].innerHTML = "New<br>Balance";		
			thcells[4].innerHTML = "New<br>Swingwt<br>(kg&middot;cm&sup2;)";		
			thcells[5].innerHTML = "New<br>Twistwt<br>(kg&middot;cm&sup2;)";		
			thcells[6].innerHTML = "New<br>Power %<br>(center)";		
			thcells[7].innerHTML = "New<br>PlowIndex %<br>(center)";		
			thcells[8].innerHTML = "New<br>Power %<br>(3/9 O'clock)";		
			thcells[9].innerHTML = "New<br>PlowIndex %<br>(3/9 O'clock)";		
 		}else if(i==1 || i==2){  //first or second row only, others will be deleted
			//remmove values from input cells
 			var inputcells = rows[i].getElementsByTagName("input");
				for(j=0; j<inputcells.length; j++){
					if(inputcells[j].type=="radio"){
						continue;
						
 					}else{
 						inputcells[j].value = "";
					}
 				}
			//remove values from output cells
 			var tdcells = rows[i].getElementsByTagName("td");
				for(k=2; k<tdcells.length; k++){  //skip first two input cells
 					tdcells[k].innerHTML = " ";

 				}


		//remove rows
		}else if(i>2){
			rows[i].parentNode.removeChild(rows[i]);
			i = i-1;	//removing a row changes index so if continue looping i is always 1 more than rows so it won't work correctly.
 		}
	}
	document.getElementById('powerpotential').innerHTML = " ";
	document.getElementById('plowthrough').innerHTML = " ";

	document.getElementsByName("lengthunits")[0].checked=true;
	document.getElementsByName("weightunits")[0].checked=true;
	document.getElementsByName("balanceunits")[0].checked=true;
	document.getElementsByName("locationunits")[0].checked=true;
	document.getElementsByName("addunits")[1].checked=true;

}
 

//validate function not functional right now
function validate(array){
	var tester = array;
	var re=/^-?\d+(\.\d+)?$/;
	var re2=/^\d+(\.\d+)?$/;
	for(i=0; i<tester.length-3; i++){
		if(tester[i].value){
			if(tester[i].name == "startlength" || tester[i].name == "startweight" || tester[i].name == "startbalance" || tester[i].name == "startswingweight" || tester[i].name == "location1" || tester[i].name == "location2" || tester[i].name == "location3" || tester[i].name == "location4" || tester[i].name == "location5"){
				if(!re2.test(tester[i].value)){
					alert("Only positive numbers allowed. Fix before continuing.");
					tester[i].focus();
					tester[i].select();
					return false;
				 }

				if(tester[i].name == "startlength"){
					var testlength = tester[i].value;
				}
				if(tester[i].name == "startweight"){
					var testweight = tester[i].value;
				}
				if(tester[i].name == "startbalance" || tester[i].name == "location1" || tester[i].name == "location2" || tester[i].name == "location3" || tester[i].name == "location4" || tester[i].name == "location5"){
					if(testlength){
						if(tester[i].value - testlength > 0){
							alert("Location must be less than or equal to the racquet length. Fix before continuing.");
							tester[i].focus();
							tester[i].select();
							return false;

						}
					}
				}

			}else{
				if(tester[i].type != "radio"){
					if(!re.test(tester[i].value)){
						alert("Only numbers allowed. Fix before continuing.");
						tester[i].focus();
						tester[i].select();
						return false;
					 }
					if(testweight){
						if(tester[i].value < 0 && Math.abs(tester[i].value) > testweight){
							alert("Weight to subtract must be less than the racquet weight. Fix before continuing.");
							tester[i].focus();
							tester[i].select();
							return false;
	
						}
					}
				}
			}
	//	} else {
			//return true;
			//continue;
		}
	}
	//return;
}