/* carSearch-189.php
   Requests product information from server for given category
   and enables and updates the product drop-down list.
*/

function sortBySize() {
    var request = ajaxbook.RequestHelper.createXHR();

    request.onreadystatechange = function(){
		if(request.readyState == 4){
			if(request.status == 200 || request.status == 304){
				document.getElementById("main").innerHTML = "<h1>Hard Drive Failures by Size</h1>" + request.responseText;
			}
			else{
				alert("Failed to get products. Server response: " 
					  + request.status + " " + request.statusText);
			}
		}
    }

    /* Tell XMLHttpRequest what URL we want to get */
    request.open("GET", "statsBySize.php");

    //send the request, method = GET, therefore null required
    request.send(null);
}


function sortByBrand() {
    var request = ajaxbook.RequestHelper.createXHR();

    request.onreadystatechange = function(){
		if(request.readyState == 4){
			if(request.status == 200 || request.status == 304){
				document.getElementById("main").innerHTML = "<h1>Hard Drive Failures by Brand</h1>" + request.responseText;
			}
			else{
				alert("Failed to get products. Server response: " 
					  + request.status + " " + request.statusText);
			}
		}
    }

    /* Tell XMLHttpRequest what URL we want to get */
    request.open("GET", "statsByBrand.php");

    //send the request, method = GET, therefore null required
    request.send(null);
}


function sortByUser() {
    var request = ajaxbook.RequestHelper.createXHR();

    request.onreadystatechange = function(){
		if(request.readyState == 4){
			if(request.status == 200 || request.status == 304){
				document.getElementById("main").innerHTML = "<h1>Hard Drive Failures by User</h1>" + request.responseText;
			}
			else{
				alert("Failed to get products. Server response: " 
					  + request.status + " " + request.statusText);
			}
		}
    }

    /* Tell XMLHttpRequest what URL we want to get */
    request.open("GET", "statsByUser.php");

    //send the request, method = GET, therefore null required
    request.send(null);
}


function fetchModels(selectedInterface, selectedBrand){
    var request = ajaxbook.RequestHelper.createXHR();

    request.onreadystatechange = function(){
		if(request.readyState == 4){
			if(request.status == 200 || request.status == 304){
				document.getElementById("model").options.length = 0;
				document.getElementById("model").innerHTML = request.responseText; 
				document.getElementById("model").disabled = false;
			}
			else{
				alert("Failed to get products. Server response: " 
					  + request.status + " " + request.statusText);
				document.getElementById("model").selectedIndex = 0;
			}
		}
    }

    /* Tell XMLHttpRequest what URL we want to get */
    request.open("GET", "prodMakeOptions.php?interfaceID=" + encodeURIComponent(selectedInterface, true) + "&brandID=" + encodeURIComponent(selectedBrand, true));

    //send the request, method = GET, therefore null required
    request.send(null);
	
}


function fetchDetails(selectedModel){
	if (selectedModel!="new")
	{
		/*var request = ajaxbook.RequestHelper.createXHR();
	
		request.onreadystatechange = function(){
			if(request.readyState == 4){
				if(request.status == 200 || request.status == 304){
				document.getElementById("main").innerHTML = request.responseText;
				}
				else{
				alert("Failed to get products. Server response: " 
					  + request.status + " " + request.statusText);
				}
			}
		}
	
		// Tell XMLHttpRequest what URL we want to get
		request.open("GET", "prodDetail.php?modelID=" + encodeURIComponent(selectedModel), true);
	
		//send the request, method = GET, therefore null required
		request.send(null); */
	}
	else {
		//document.getElementById("modelspan").innerHTML = "";
		//document.getElementById("newmodelspan").innerHTML = "Model:";
		//document.getElementById("sizespan").innerHTML = "Size (GB):";
		//document.getElementById("rpmspan").innerHTML = "RPMs:";
		//document.getElementById("cachespan").innerHTML = "Cache:";
		changeInputType(document.getElementById("modelSize"), "text");
		changeInputType(document.getElementById("modelRPM"), "text");
		changeInputType(document.getElementById("modelCache"), "text");
		changeInputType(document.getElementById("newmodel"), "text");
		document.getElementById("model").selectedIndex = (document.getElementById("model").length - 1);
		document.getElementById("newmodel").focus();
	}
}


function fetchDetailedStats(brandID){
	if(document.getElementById(brandID).innerHTML == "") {
		var request = ajaxbook.RequestHelper.createXHR();
	
		request.onreadystatechange = function(){
		if(request.readyState == 4){
			if(request.status == 200 || request.status == 304){
			document.getElementById(brandID).innerHTML = request.responseText;
			}
			else{
			alert("Failed to get products. Server response: " 
				  + request.status + " " + request.statusText);
			}
		}
		}
	
		/* Tell XMLHttpRequest what URL we want to get */
		request.open("GET", "statsByBrand_Detail.php?brandID=" + encodeURIComponent(brandID), true);
	
		//send the request, method = GET, therefore null required
		request.send(null);
	}
	else {
		document.getElementById(brandID).innerHTML = "";
	}
}


function fetchDetailedSizeStats(modelSize){
	if(document.getElementById(modelSize).innerHTML == "") {
		var request = ajaxbook.RequestHelper.createXHR();
	
		request.onreadystatechange = function(){
		if(request.readyState == 4){
			if(request.status == 200 || request.status == 304){
			document.getElementById(modelSize).innerHTML = request.responseText;
			}
			else{
			alert("Failed to get products. Server response: " 
				  + request.status + " " + request.statusText);
			}
		}
		}
	
		/* Tell XMLHttpRequest what URL we want to get */
		request.open("GET", "statsBySize_Detail.php?modelSize=" + encodeURIComponent(modelSize), true);
	
		//send the request, method = GET, therefore null required
		request.send(null);
	}
	else {
		document.getElementById(modelSize).innerHTML = "";
	}
}


function fetchDetailedUserStats(userID){
	if(document.getElementById(userID).innerHTML == "") {
		var request = ajaxbook.RequestHelper.createXHR();
	
		request.onreadystatechange = function(){
		if(request.readyState == 4){
			if(request.status == 200 || request.status == 304){
			document.getElementById(userID).innerHTML = request.responseText;
			}
			else{
			alert("Failed to get products. Server response: " 
				  + request.status + " " + request.statusText);
			}
		}
		}
	
		/* Tell XMLHttpRequest what URL we want to get */
		request.open("GET", "statsByUser_Detail.php?userID=" + encodeURIComponent(userID), true);
	
		//send the request, method = GET, therefore null required
		request.send(null);
	}
	else {
		document.getElementById(userID).innerHTML = "";
	}
}


function fetchModelStats(modelName){
	if(document.getElementById(modelName).innerHTML == "") {
		var request = ajaxbook.RequestHelper.createXHR();
	
		request.onreadystatechange = function(){
		if(request.readyState == 4){
			if(request.status == 200 || request.status == 304){
			document.getElementById(modelName).innerHTML = request.responseText;
			}
			else{
			alert("Failed to get products. Server response: " 
				  + request.status + " " + request.statusText);
			}
		}
		}
	
		/* Tell XMLHttpRequest what URL we want to get */
		request.open("GET", "statsByModel.php?modelName=" + encodeURIComponent(modelName), true);
	
		//send the request, method = GET, therefore null required
		request.send(null);
	}
	else {
		document.getElementById(modelName).innerHTML = "";
	}
}


function searchByModel(selectedModel){
    var request = ajaxbook.RequestHelper.createXHR();

    request.onreadystatechange = function(){
	if(request.readyState == 4){
	    if(request.status == 200 || request.status == 304){
			document.getElementById("main").innerHTML = request.responseText;
			if(request.responseText == "") {
				document.getElementById("main").innerHTML = "<b><center>No products match your search.</center></b>";
			}
	    }
	    else{
		alert("Failed to get products. Server response: " 
		      + request.status + " " + request.statusText);
	    }
	}
    }

    /* Tell XMLHttpRequest what URL we want to get */
    request.open("GET", "http://ec2-174-129-129-22.compute-1.amazonaws.com/~justinp/382-EC2/fp/prodSearch.php?prodModel=" + encodeURIComponent(selectedModel), true);

    //send the request, method = GET, therefore null required
	request.send(null);
}


function changeInputType(oldObject, oType) {
	var newObject = document.createElement('input');
	newObject.type = oType;
 
	// 'Copy' old types to new element
	if(oldObject.size)
		newObject.size = oldObject.size;
	if(oldObject.value)
		newObject.value = oldObject.value;
	if(oldObject.name)
		newObject.name = oldObject.name;
	if(oldObject.id)
		newObject.id = oldObject.id;
	if(oldObject.onClick)
		newObject.onClick = oldObject.onClick;
	if(oldObject.className)
		newObject.className = oldObject.className;
 
	// replace old object with new one
	oldObject.parentNode.replaceChild(newObject,oldObject);
	return newObject;
}


//Register event handlers when page loads

function init(){ 
    var interfaceSelect = document.getElementById("interface");
    var brandSelect = document.getElementById("brand");
    interfaceSelect.onchange = function()
	{
		var selectedInterface = interfaceSelect.options[interfaceSelect.selectedIndex].value;
		var selectedBrand = brandSelect.options[brandSelect.selectedIndex].value;
		if("" == selectedInterface || "" == selectedBrand){
			//user has selected top list item which has no value
			document.getElementById("model").selectedIndex = 0;
			document.getElementById("model").disabled = true;
		}
		else{
			//fetchModels(selectedInterface, selectedBrand);
			createModels();
			document.getElementById("model").disabled = false;
		}
	}
   	brandSelect.onchange = function()
	{
		var selectedInterface = interfaceSelect.options[interfaceSelect.selectedIndex].value;
		var selectedBrand = brandSelect.options[brandSelect.selectedIndex].value;
		if("" == selectedInterface || "" == selectedBrand){
			//user has selected top list item which has no value
			document.getElementById("model").selectedIndex = 0;
			document.getElementById("model").disabled = true;
		}
		else{
			//fetchModels(selectedInterface, selectedBrand);
			createModels();
			document.getElementById("model").disabled = false;
		}
	}
}

//execute init() after page loads
window.onload = init;
