function URLEncode (plaintext) {
	var SAFECHARS = "0123456789" +
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
    "abcdefghijklmnopqrstuvwxyz" +
    "-_.!~*'()";
	var HEX = "0123456789ABCDEF";
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch === " ") {
		    encoded += "+";
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    alert ("Unicode Character '" + ch + "' cannot be encoded using standard URL encoding.\n" + "(URL encoding only supports 8-bit characters.)\n" + "A space (+) will be substituted.");
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	}
	return encoded;
}
function alertContents (postType, httpRequest) {
  var e;
  if (httpRequest.readyState == 4) {
    if (httpRequest.status == 200) {
      //alert (httpRequest.responseText);
      var doc = httpRequest.responseXML;
      e = doc.getElementsByTagName('error')[0];
      if (e) {
        alert (e.firstChild.data);
        return false;
      }

      /*
      switch (postType) {

      case "DiagnosCustomer":
        //e = doc.getElementsByTagName('id')[0];
        //if (e) { ID = e.firstChild.data; }
        break;

      }
      */
    } else {
      alert ("There was a problem with the request.");
    }
  }
}
function makeRequest (postType, postData) {
  var httpRequest;
  if (window.XMLHttpRequest) {
    httpRequest = new XMLHttpRequest ();
    if (httpRequest.overrideMimeType) {
      httpRequest.overrideMimeType ("text/xml");
    }
  } else if (window.ActiveXObject) {
    try {
      httpRequest = new ActiveXObject ("Msxml2.XMLHTTP");
    } 
    catch (e) {
      try {
        httpRequest = new ActiveXObject ("Microsoft.XMLHTTP");
      } 
      catch (f) {}
    }
  }

  if (!httpRequest) {
    alert ("Giving up :( Cannot create an XMLHTTP instance");
    return false;
  }
  httpRequest.onreadystatechange = function () { alertContents (postType, httpRequest); };
  httpRequest.open ("POST", "/ajax/", true);
  httpRequest.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');
  httpRequest.send (postData);
}
function JSSubmitDiagnosCustomer (dataForm) {
  var postData = "DataType=DiagnosCustomer&ID=" + dataForm.ID.value + "&Key=" + dataForm.Key.value + "&CustomerName=" + URLEncode (dataForm.CustomerName.value) + "&CustomerAddress=" + URLEncode (dataForm.CustomerAddress.value) + "&CustomerPhone=" + URLEncode (dataForm.CustomerPhone.value) + "&CustomerEmail=" + URLEncode (dataForm.CustomerEmail.value) + "&LicensePlate=" + URLEncode (dataForm.LicensePlate.value);
  makeRequest("DiagnosCustomer", postData);

  document.getElementById('DiagnosInfoEdit').style.display = 'none';
  document.getElementById('DiagnosInfoEditLink').style.display = 'inline';

  if (dataForm.CustomerName.value !== '') { document.getElementById('CustomerNameDisplay').style.display = 'block'; }
  document.getElementById('CustomerNameValue').childNodes[0].nodeValue = dataForm.CustomerName.value;

  if (dataForm.CustomerAddress.value !== '') { document.getElementById('CustomerAddressDisplay').style.display = 'block'; }
  document.getElementById('CustomerAddressValue').childNodes[0].nodeValue = dataForm.CustomerAddress.value;

  if (dataForm.CustomerPhone.value !== '') { document.getElementById('CustomerPhoneDisplay').style.display = 'block'; }
  document.getElementById('CustomerPhoneValue').childNodes[0].nodeValue = dataForm.CustomerPhone.value;

  if (dataForm.CustomerEmail.value !== '') { document.getElementById('CustomerEmailDisplay').style.display = 'block'; }
  document.getElementById('CustomerEmailValue').childNodes[0].href = 'mailto:' + dataForm.CustomerEmail.value;
  document.getElementById('CustomerEmailValue').childNodes[0].childNodes[0].nodeValue = dataForm.CustomerEmail.value;

  if (dataForm.LicensePlate.value !== '') { document.getElementById('LicensePlateDisplay').style.display = 'block'; }
  document.getElementById('LicensePlateValue').childNodes[0].nodeValue = dataForm.LicensePlate.value;

  document.getElementById('DiagnosInfoDisplay').style.display = 'inline';  

  return false;
}
function readCookie(Name) {
	var nameEQ = Name + '=';
	var ca = document.cookie.split(';');
	for(var i = 0;i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0) === ' ') { c = c.substring (1, c.length); }
		if (c.indexOf(nameEQ) === 0) { return c.substring (nameEQ.length, c.length); }
	}
	return null;
}
function createCookie (Name, Value, Days) {
  var expires;
	if (Days) {
		var date = new Date();
		date.setTime (date.getTime() + (Days * 24 * 60 * 60 * 1000));
		expires = "; expires=" + date.toGMTString();
	}	else {
    expires = "";
  }
  //alert (Name + "=" + Value + expires + "; path=/");
	document.cookie = Name + "=" + Value + expires + "; path=/";
}
function CookieHandle (Name, ID, Keep) {
  var newX = '';
  var x = readCookie(Name);
  if (x) {
    var xArray = x.split ('|');
    for (var i = 0; i < xArray.length; i++) {
      if (xArray[i] == ID) {
        if (Keep === true) { return true; }
        else { continue; }
      }
      if (newX != '') { newX = newX + '|'; }
      newX = newX + xArray[i];
    }
    if (Keep === true) { newX = newX + '|' + ID; }
  } else {
    newX = ID;
  }
  createCookie (Name, newX, 14);
  return true;
}
