// JavaScript Document

// Function 1: basic function to create a XMLHttpRequest object
function getXMLHttpRequestObject(){
	var http_request = false;

	if (window.XMLHttpRequest){ // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		
		if (http_request.overrideMimeType)	{
			http_request.overrideMimeType('text/xml');
			// See note below about this line
		}
	} else if (window.ActiveXObject){ // IE
		try{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e){
			try{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request){
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}

	return http_request;
}

// Function 6: save/insert/update form data
function saveFormData(f){
	xmlReq  = getXMLHttpRequestObject();

	if (xmlReq){
		var formData = '', elem = '';
		for(var s = 0; s < f.elements.length; s++){
			elem = f.elements[s];
			if(formData != ''){
				formData += '&';
			}
			formData += elem.name+"="+elem.value;
	}

		var securityCodeError = '<p><h3>Sorry! Invalid Security Code Provided.</h3></p>';
		var programError = '<p><h3>Sorry! Process Could Not Complete.</h3></p>';
		var invalidInvitationCode = '<p><h3>Sorry! Process Could Not Complete.</h3></p></p>';
		var systemError = '<p><h3>Sorry! Operation Failed</h3></p>';
	
		xmlReq.onreadystatechange = function(){
			if(xmlReq.readyState == 4){
				document.getElementById('resultSection').style.display = "block";
				if(xmlReq.responseText == "invalid_security_code"){
					document.getElementById('resultSection').style.color = "#FF3300";
					document.getElementById('resultSection').innerHTML = securityCodeError;
				}else if(xmlReq.responseText == "program_error"){
					document.getElementById('resultSection').style.color = "#FF3300";
					document.getElementById('resultSection').innerHTML = programError;
				}else if(xmlReq.responseText == "invitation_code_error"){
					document.getElementById('resultSection').style.color = "#FF3300";
					document.getElementById('resultSection').innerHTML = invalidInvitationCode;
				}else if(xmlReq.responseText == "system_error"){
					document.getElementById('resultSection').style.color = "#FF3300";
					document.getElementById('resultSection').innerHTML = systemError;
				}else if(xmlReq.responseText == "invitation_code_ok"){
					window.location = "insurance_quote.php";
				}else {
					document.getElementById('resultSection').innerHTML = xmlReq.responseText ;
				}
			}
		}

		xmlReq.open(f.method, f.action, true);
		xmlReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlReq.send(formData);
		return false;
	}
}

// Function to create dynamic body area/contents based on menu click
function loadDynamicContent(url, loadToEId, parameterVal){
	if(parameterVal != ""){
		url = "libs/carsearch_controller.php?page=" + url + "&" + parameterVal;
	}else{
		url = "libs/carsearch_controller.php?page=" + url;
	}

	var http_request = getXMLHttpRequestObject();
	if (http_request){
		http_request.onreadystatechange = function() { 
			createDynamicContents(http_request, loadToEId); 
		};
		http_request.open('GET', url, true);
		http_request.send(null);
	}
}

//Function supports function loadDynamicContent(url)
function createDynamicContents(http_request, loadToEId){
	if (http_request.readyState == 4){
		if (http_request.status == 200){
			//alert("hello ["+http_request.responseText+" ["+loadToEId);
			document.getElementById(loadToEId).innerHTML = http_request.responseText;
		}else{
			alert('There was a problem with the request [' + http_request.responseText);
		}
	}
}

function getFilteredResult(parameterName, parameterVal, cPage, recPerPage, actionUrl){
	var cPageNo = document.getElementById(cPage).value;
	var noOfRecordsPerPage = document.getElementById(recPerPage).value;
	var fromActionUrl = document.getElementById(actionUrl).value;
	url = "libs/filter_controller.php?field_name=" + parameterName + "&field_value=" + parameterVal + "&current_page=" + cPageNo  + "&per_page_records=" + noOfRecordsPerPage + "&form_action_url=" + fromActionUrl ;
	var http_request = getXMLHttpRequestObject();
	if (http_request){
		http_request.onreadystatechange = function() { 
			createDynamicContents(http_request, 'searchResultSections'); 
		};
		http_request.open('GET', url, true);
		http_request.send(null);
	}
}

function setCurrentFilter(theFilterVal){
	document.getElementById('currentFilter').value = theFilterVal;
	document.getElementById('currentFilterVal').value = document.getElementById(theFilterVal).options[document.getElementById(theFilterVal).selectedIndex].value;
}

function validateFilterForm(){
	var filterField = document.getElementById('currentFilter').value;
	if(filterField.length != 0){
		if(document.getElementById(filterField).selectedIndex == 0){
			alert("Please, select a value to filter");
			return false;
		}
		return true;
	}else{
		alert("Please, select a value to filter");
		return false;
	}
}
