
function ajaxCall(async, methodType, url, data, successCallback, errorCallback) {
    $.ajax({
        async: async,
        type: methodType,
        contentType: "application/json; charset=utf-8",
        url: url,
        data: data,
        dataType: "json",
        error: errorCallback,
        success: successCallback
    });
}

function ajaxXmlCall(async, methodType, url, data, successCallback, errorCallback) {
    $.ajax({
        async: async,
        type: methodType,
        contentType: "text/xml; charset=utf-8",
        url: url,
        data: data,
        dataType: "xml",
        error: errorCallback,
        success: successCallback
    });
}
jQuery.fn.toXML = function ()
{
  var toXML = function(node)
  {
    var out = '';
    var attributes = '';
    var content = '';
    out += '<' + node.nodeName;
    if (node.childNodes)
    {
      for (var i = 0; i < node.childNodes.length; i++)
      {
        switch(node.childNodes[i].nodeType)
        {
          case 1:     // ELEMENT_NODE
            content += toXML(node.childNodes[i]);
            break;
          case 2:     // ATTRIBUTE_NODE
            attributes += ' ' + node.childNodes[i].nodeName  + '="'
                              + node.childNodes[i].nodeValue + '"';
            break;
          case 3:     // TEXT_NODE
          case 4:     // CDATA_SECTION_NODE
          case 5:     // ENTITY_REFERENCE_NODE
          case 6:     // ENTITY_NODE
          case 7:     // PROCESSING_INSTRUCTION_NODE
          case 8:     // COMMENT_NODE
          case 9:     // DOCUMENT_NODE
          case 10:    // DOCUMENT_TYPE_NODE
          case 11:    // DOCUMENT_FRAGMENT_NODE
          case 12:    // NOTATION_NODE
            content += node.childNodes[i].nodeValue;
            break;
        }
      }
    }
    out += attributes;
    if (content.length > 0)
    {
      out += '>' + content;
      out += '</' + node.tagName + '>';
    }
    else
    {
      out += '/>';
    }
    return out;
  }
  var out = '';
  if (this.length > 0) {
    if (typeof XMLSerializer == 'function' ||
        typeof XMLSerializer == 'object')
    {
      var xs = new XMLSerializer();
      this.each(function() { out += xs.serializeToString(this); });
    }
    else if (this[0].xml !== undefined)
    {
      this.each(function() { out += this.xml; });
    }
    else
    {
      if (this.length > 0)
      {
        this.each( function() { out += toXML(this); } );
      }
    }
  }
  return out;
};

//// Contact xml

var ContactSubmitXml;
var submitSuccess = false;

function SubmitXmlSchemaLoad()
{
    ajaxXmlCall(false, "GET", "/FormMail.aspx?G=1", null, OnContactSubmitXmlSchemaLoaded, OnContactSubmitXmlSchemaLoadError);
}

function OnContactSubmitXmlSchemaLoaded(result)
{
    ContactSubmitXml = result;
    console.debug(ContactSubmitXml);
}

function OnContactSubmitXmlSchemaLoadError(result)
{
    alert('Contact schema load error: ' + result.innerHTML);
}


function SubmitContactXml(name,email,telephone,enquiry,chkSignUp)
{
    if (ContactSubmitXml != null)
    {
    
        ContactSubmitXml.documentElement.childNodes[0].textContent = name;
        ContactSubmitXml.documentElement.childNodes[1].textContent = enquiry;
        ContactSubmitXml.documentElement.childNodes[2].textContent = email;
        ContactSubmitXml.documentElement.childNodes[3].textContent = telephone;
        ContactSubmitXml.documentElement.childNodes[4].textContent = chkSignUp;
        
        ajaxXmlCall(false, "POST", "/FormMail.aspx?P=1", $(ContactSubmitXml).toXML(), OnContactSubmitXmlLoaded, OnContactSubmitXmlLoadedError);
    }
    else
    {
        alert('Contact schema not loaded yet');
    }
}

function OnContactSubmitXmlLoaded(result)
{
    if (result.firstChild.textContent == "True")
        submitSuccess = true;
        
    console.debug(submitSuccess);
}

function OnContactSubmitXmlLoadedError()
{
    alert('Contact Submit error: ' + result.innerHTML);
}


