//
// Copyright 2008 by The Software Interface
//
var trace = 0;
var seqno = 0;
var GetInfoUrl = location.pathname.match(/^.*(?=\/)/)+'/get.php';

//
// XMLHttpRequest Methods:
//
//  abort()
//  getAllResponseHeaders()
//  getResponseHeader(headerName)
//  open(method, URL)
//  open(method, URL, async)
//  open(method, URL, asnyc, userName)
//  open(method, URL, asnyc, userName, password)
//  send(content)
//  setRequestHeader(label, value)
//
// XMLHttpRequest Properties:
//
//  onreadystatechange
//  readyState
var XHTTP_INIT = 0;       // [uninitialized] open() has not yet been called
var XHTTP_OPEN = 1;       // [open] send() has not yet been called
var XHTTP_SENT = 2;       // [sent] send() has been called, headers and status are available
var XHTTP_RECV = 3;       // [receiving] downloading, responseText holds partial data
var XHTTP_DONE = 4;       // [loaded] finished
//  responseText
//  responseXML
//  responseBody (binary, ActiveX only)
//  status
var HTTP_OK      = 200;   // requested item is available, not necessarily accepted or completed
var HTTP_ACCEPT  = 202;   // requested was accepted, but not necessarily completed
var HTTP_MOVED   = 301;   // requested page has permanently moved
var HTTP_FOUND   = 302;   // requested page has temporarily moved
var HTTP_BAD_REQ = 400;   // Bad Request
var HTTP_UNAUTH  = 401;   // Unauthorized
var HTTP_FORBID  = 403;   // Forbidden, request denied: no permission
var HTTP_NOTFOUND= 404;   // Not Found
var HTTP_INTERR  = 500;   // Internal Server Error
var HTTP_INTERR  = 501;   // Not Implemented
var HTTP_INTERR  = 503;   // Service Unavailable
//  statusText

function GetInfo(request, auth, callback)
{
  var http;

  try {
    http = new XMLHttpRequest();                      // Firefox, Opera 8.0+, Safari
  } catch(ex) {
    try {
      http = new ActiveXObject("Msxml2.XMLHTTP");     // Internet Explorer 6.0+
    } catch(ex) {
      try {
        http = new ActiveXObject("Microsoft.XMLHTTP");  // Internet Explorer 5.5
      } catch(ex) {
        alert("Your browser does not support XHTTP!  Please try a more recent browser,\n"+
              "such as IE 5.5+, Firefox, Opera 8.0+, Safari, etc.  If the problem persists,\n"+
              "please contact technical support.");
        return false;
      }
    }
  }
  http.onreadystatechange = function()
  {
    if (trace) window.status = '['+http.readyState+'] '+http.responseText;
    switch (http.readyState)
    {
      case XHTTP_DONE:
        if (http.status == HTTP_OK) {
          if (trace > 1) alert('Response: '+http.responseText);
          // parse response
          var ack = http.responseText.match(/^.*?(?=,)/); // msg = auth,json
          if (ack) ack = ack[0];  // 1st match
          // if message is authentic, process it
          if (ack == auth) {
            //var info = eval('('+http.responseText.substring(ack.length)+')');
            var json = http.responseText.substring(ack.length+1);
            var info = eval('('+json+')');
            callback(info);
          }
          // otherwise report an error, if debugging
          else if (trace) {
            var errmsg = 'Response didn\'t pass authentication';
            if (trace > 1) alert(errmsg);
            window.status = errmsg;
          }
        }
        else if (trace) {
          var errmsg = http.statusText+' ['+http.status+']';
          if (http.responseText) errmsg += ': '+http.responseText;
          if (trace > 1) alert(errmsg);
          window.status = errmsg;
        }
        // memory leak?
        //http = null;
        break;
    }
  }
  request += '&s='+(++seqno);
  if (trace > 2) request += '&d';
  request  = GetInfoUrl+'?'+request;
  if (trace) {
    if (trace > 1) alert('GET: '+request);
    window.status = 'GET: '+request;
  }
  http.open('GET',request,true);
  http.send(null);
}

function GetCompanyInfo(bid,cid) {
  var auth = bid ^ (seqno+1);
  GetInfo('q=co&bid='+bid+'&cid='+cid, auth, UpdateCompany);
}
function UpdateCompany(info) {
  var elem;
  if (elem = document.getElementById('CompanyName'    )) elem.innerHTML = info.company;
  if (elem = document.getElementById('CompanyBenefits')) elem.innerHTML = info.benefits;
  if (elem = document.getElementById('ContactName'    )) elem.innerHTML = info.contact;
  if (elem = document.getElementById('ContactAddress' )) elem.innerHTML = info.address;
  if (elem = document.getElementById('ContactEmail'   )) elem.innerHTML = info.email;
  if (elem = document.getElementById('ContactPhone'   )) elem.innerHTML = info.phone;
  if (elem = document.getElementById('ContactFax'     )) elem.innerHTML = info.fax;
}

function GetContactInfo(bid,cid) {
  var auth = cid ^ (seqno+1);
  GetInfo('q=cn&bid='+bid+'&cid='+cid, auth, UpdateContact);
}
function UpdateContact(info) {
  var elem;
  if (elem = document.getElementById('ContactEmail')) elem.innerHTML = info.email;
  if (elem = document.getElementById('ContactPhone')) elem.innerHTML = info.phone;
  if (elem = document.getElementById('ContactFax'  )) elem.innerHTML = info.fax;
}

function SaveJob() {
  if (ValidRecord()) document.f.submit();
  return false;
}
