/*

	File: AJAX Magic
	Author: Martin

*/

function createRequestObject() {
	
	var request_o; //declare the variable to hold the object.
	var browser = navigator.appName; //find the browser name
	
	if(browser == "Microsoft Internet Explorer"){
		
		/* Create the object using MSIE's method */
		request_o = new ActiveXObject("Microsoft.XMLHTTP");
		
	}else{
		
		/* Create the object using other browser's method */
		request_o = new XMLHttpRequest();
		
	}
	
	return request_o; //return the object
	
}
var http = createRequestObject();




function filterPortConnections() {
	
	var portStatus = document.getElementById('portStatus');
	
	var sfr_id = document.getElementById('sfr_id');
	var sc_id = document.getElementById('sc_id');
	var sm_id = document.getElementById('sm_id');
	var sp_id = document.getElementById('sp_id');
	var si_id = document.getElementById('si_id');
	var sd_id = document.getElementById('sd_id');
	var ss_id = document.getElementById('ss_id');
	
	var series = document.getElementById('series');
	var enq_flowrate = document.getElementById('enq_flowrate');
	var enq_fluid = document.getElementById('enq_fluid');
	var enq_viscosity = document.getElementById('enq_viscosity');
	var enq_temp = document.getElementById('enq_temp');
	
	var port = document.getElementById('port');
	var material = document.getElementById('material');
	var pressure = document.getElementById('pressure');
	var indicators = document.getElementById('indicators');
	var fluid = document.getElementById('fluid');
	var temperature = document.getElementById('temperature');
	var mounting = document.getElementById('mounting');
	var ring = document.getElementById('ring');
	
	portStatus.style.display = "none";
	if(enq_flowrate.value > 0 && sfr_id.selectedIndex > 0 && series.selectedIndex > 0) { 
		
		// Convert the flowrate value.
		var url = "includes/ajax.php?action=filterPortConnections&series="+series.value+"&flowrate_unit="+sfr_id.value+"&flowrate_value="+enq_flowrate.value;

		http.open('get', url);
		http.onreadystatechange = function() { 
			
			if(http.readyState == 4){
				var response = http.responseText;
				response = response.split("|");
				if(response.length > 1) { 
					
					portStatus.innerHTML = "Found "+(response.length-1)+" Port Connections matching your flow measurements.";
					portStatus.style.display = "block";
					changeOpacity(port, 100);
					changeOpacity(material, 100);
					changeOpacity(pressure, 100);
					changeOpacity(indicators, 100);
					changeOpacity(fluid, 100);
					changeOpacity(temperature, 100);
					changeOpacity(mounting, 100);
					changeOpacity(ring, 100);
					
					// Enable form fields
					toggle(sc_id, 1);
					toggle(sm_id, 1);
					toggle(sp_id, 1);
					toggle(si_id, 1);
					toggle(enq_fluid, 1);
					toggle(enq_viscosity, 1);
					toggle(enq_temp, 1);
					toggle(sd_id, 1);
					toggle(ss_id, 1);
					
					sc_id.options.length = 0;
					sc_id.options[0] = new Option("Please Select", "0");
					for(var i=0; i<response.length-1; i++) { 
						parts = response[i].split("=");
						sc_id.options[i+1] = new Option(parts[1], parts[0]);
					}
					
				} else {
					
					// Change opacity of sections
					changeOpacity(port, 30);
					changeOpacity(material, 30);
					changeOpacity(pressure, 30);
					changeOpacity(indicators, 30);
					changeOpacity(fluid, 30);
					changeOpacity(temperature, 30);
					changeOpacity(mounting, 30);
					changeOpacity(ring, 30);
					
					// Disable form fields
					toggle(sc_id, 0);
					toggle(sm_id, 0);
					toggle(sp_id, 0);
					toggle(si_id, 0);
					toggle(enq_fluid, 0);
					toggle(enq_viscosity, 0);
					toggle(enq_temp, 0);
					toggle(sd_id, 0);
					toggle(ss_id, 0);
					
					portStatus.style.display = "block";
					portStatus.innerHTML = "No port connections match your Flow Measurements of '"+enq_flowrate.value+" "+sfr_id.options[sfr_id.selectedIndex].innerHTML+"' and '"+capWords(series)+" Series'. Try another series, or contact Flow-Mon and we can help you.";
					
				}
				
			}
		
		}
		http.send(null);
		
		
	
	} else {
	
		// Change opacity of sections
		changeOpacity(port, 30);
		changeOpacity(material, 30);
		changeOpacity(pressure, 30);
		changeOpacity(indicators, 30);
		changeOpacity(fluid, 30);
		changeOpacity(temperature, 30);
		changeOpacity(mounting, 30);
		changeOpacity(ring, 30);
		
		// Disable form fields
		toggle(sc_id, 0);
		toggle(sm_id, 0);
		toggle(sp_id, 0);
		toggle(si_id, 0);
		toggle(enq_fluid, 0);
		toggle(enq_viscosity, 0);
		toggle(enq_temp, 0);
		toggle(sd_id, 0);
		toggle(ss_id, 0);
	
	}
	
}

function changeOpacity(object, opacity){
 if (navigator.appName.indexOf("Netscape")!=-1
  &&parseInt(navigator.appVersion)>=5)
    object.style.MozOpacity=opacity/100
 else if (navigator.appName.indexOf("Microsoft")!= -1 
  &&parseInt(navigator.appVersion)>=4)
    object.style.filter = 'alpha(opacity=' + (opacity) + ')';
}

function toggle(object, state) { 
	
	if(state == 1) { 
		object.disabled = false;
	} else { 
		object.disabled = true;
	}

}

function capWords(inputString) {
var tmpStr, tmpChar, preString, postString, strlen;
tmpStr = inputString.value.toLowerCase();
stringLen = tmpStr.length;
if (stringLen > 0)
{
  for (i = 0; i < stringLen; i++)
  {
    if (i == 0)
	{
      tmpChar = tmpStr.substring(0,1).toUpperCase();
      postString = tmpStr.substring(1,stringLen);
      tmpStr = tmpChar + postString;
    }
    else
	{
      tmpChar = tmpStr.substring(i,i+1);
      if (tmpChar == " " && i < (stringLen-1))
	  {
      tmpChar = tmpStr.substring(i+1,i+2).toUpperCase();
      preString = tmpStr.substring(0,i+1);
      postString = tmpStr.substring(i+2,stringLen);
      tmpStr = preString + tmpChar + postString;
      }
    }
  }
}
return tmpStr;
}