// 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 formData = getForm(f);


		var securityCodeError = '<p><h3>Sorry! Invalid Security Code Provided.</h3></p><p>Please type the security code provided on section four carefully.</p>';  
		var programError = '<p><h3>Sorry! Insurance Quote Reqest Process Could Not Complete.</h3></p><p>Please contact us at <a href="mailto:g.doyle@zippy.com.au">g.doyle@zippy.com.au</a> if you have any questions or concerns.</p>';
		var invalidInvitationCode = '<p><h3>Sorry! Insurance Quote Reqest Process Could Not Complete.</h3></p><p>You might have entered invalid/used password or invitation code. Please try again</p>'; 
		var systemError = '<p><h3>Sorry! Operation Failed</h3></p><p>A system error has been occured, please let us know with our contact us section</p>';
	
		xmlReq.onreadystatechange = function(){
			if(xmlReq.readyState == 4){
				//alert("["+xmlReq.responseText+"]");
				if(xmlReq.responseText == "invalid_security_code"){
					document.getElementById('resultSection').style.display = "block";
					document.getElementById('resultSection').style.color = "#FF3300";
					document.getElementById('resultSection').innerHTML = securityCodeError;
				}else if(xmlReq.responseText == "program_error"){
					document.getElementById('resultSection').style.display = "block";
					document.getElementById('resultSection').style.color = "#FF3300";
					document.getElementById('resultSection').innerHTML = programError;
				}else if(xmlReq.responseText == "invitation_code_error"){
					document.getElementById('resultSection').style.display = "block";
					document.getElementById('resultSection').style.color = "#FF3300";
					document.getElementById('resultSection').innerHTML = invalidInvitationCode;
				}else if(xmlReq.responseText == "system_error"){
					document.getElementById('resultSection').style.display = "block";
					document.getElementById('resultSection').style.color = "#FF3300";
					document.getElementById('resultSection').innerHTML = systemError;     
				}else if(xmlReq.responseText == "invitation_code_ok"){ 
					window.location = "insurance_quote.php";    
				}else if(xmlReq.responseText == "show_quote_result"){
					//window.location = "insurance_quote.php";
					window.location = "quote_confirmation.php";
				}else {
					document.getElementById('resultSection').style.display = "block";
					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 getForm(fobj) {
 var str = "";
 var ft = "";
 var fv = "";
 var fn = "";
 var els = "";
 for(var i = 0;i < fobj.elements.length;i++) {
  els = fobj.elements[i];
  ft = els.title;
  fv = els.value;
  fn = els.name;
 switch(els.type) {
  case "text":
  case "hidden":
  case "password":
  case "textarea":
  str += fn + "=" + encodeURI(fv) + "&";
  break; 

  case "checkbox":
    if(els.checked) str += fn + "=" + encodeURI(fv) + "&";
	break;
  case "radio":
   if(els.checked) str += fn + "=" + encodeURI(fv) + "&";
  break;	

  case "select-one":
	str += fn + "=" +
	els.options[els.selectedIndex].value + "&";
  break;
  } // switch
 } // for
 str = str.substr(0,(str.length - 1));
 return str;
}

// 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){
			//document.getElementById(loadToEId).appendChild(http_request.responseText);		 
			document.getElementById(loadToEId).innerHTML = http_request.responseText;
		}else{
			alert('There was a problem with the request. ['+http_request.status);
		}
	}
}

