if(typeof Array.prototype.push != 'function') {
  Array.prototype.push = ArrayPush;
  function ArrayPush(value) {
    this[this.length] = value;
  }
} // IE 5 fix


function $(element) {
  if (typeof element == 'string')
    return document.getElementById(element);
}


function getElementsByClass(searchClass,node,tag) {
  var classElements = new Array();
  if ( node == null )
    node = document;
  if ( tag == null )
    tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
  for (i = 0, j = 0; i < elsLen; i++) {
    if ( pattern.test(els[i].className) ) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}


function addEvent(obj, evType, fn){ 
  if (obj.addEventListener){ 
    obj.addEventListener(evType, fn, false); 
    return true; 
  }
  else if (obj.attachEvent){ 
    var r = obj.attachEvent("on"+evType, fn); 
    return r; 
  }
  else { 
    return false; 
  } 
}


function getHTTPObject() {
  var xhr = false;
  if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    try {
      xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        xhr = false;
      }
    }
  }
  return xhr;
}


AjaxContact = {
  contactFormSetup: function() {
    if(!document.getElementById) { return; }
    var contactForm = $('contactForm');
	if(!contactForm) { return; }
    addEvent(contactForm, 'submit', AjaxContact.stopSubmit);
  },

  stopSubmit: function(e) {
    if (window.event && window.event.returnValue) { 
      window.event.returnValue = false; 
    } 
    if (e && e.preventDefault) { 
      e.preventDefault(); 
    } 
    AjaxContact.sendAjaxEmail();
  },
  
  sendAjaxEmail: function() {
    // create progress indicator
    var progress = $('progress');
    if(progress) {
      progress.style.display = 'block';  
    }
	
    var req = getHTTPObject();
    if(req) {
      req.onreadystatechange = function() { AjaxContact.processRequestChange(req); }
      var name    = encodeURIComponent($('name').value);
      var phone   = encodeURIComponent($('phone').value);
      var city    = encodeURIComponent($('city').value);
      var state   = encodeURIComponent($('state').value);
	  var date    = encodeURIComponent($('date').value);
	  var details = encodeURIComponent($('details').value);
	  //var spam    = encodeURIComponent($('spam').value);
      var url     = '/ajax_contact.php';
	  var data    = 'name=' + name +'&phone=' + phone + '&city=' + city + '&state=' + state + '&date=' + date + '&details=' + details;
      req.open('POST', url, true);
      req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	  req.send(data);
    }
  },

  processRequestChange: function(req) {
    if (req.readyState == 4) {
      // remove progress indicator
      var progress = $('progress');
      if(progress) {
        progress.style.display = 'none';  
      }

      if (req.status == 200 || request.status == 304) {
		// clear any previous messages
		var form_message = $('form_message');
		form_message.innerHTML = '';

        // parse response from server
		var data = eval('('+req.responseText+')');
		
		// display success or error
		form_message.innerHTML = '<p class="' + data.json.result + '">' + data.json.message + '</p>';		

        // if success, clear form; else, populate fields with server response
		if(data.json.result == 'success') {
		  $('contactForm').reset();
		} else {
		  $('name').value    = data.json.name;
		  $('phone').value   = data.json.phone;
		  $('city').value    = data.json.city;
		  $('state').value   = data.json.state;
		  $('date').value    = data.json.date;
		  $('details').value = data.json.details;
		}
      }
    }
  }
}; // end AjaxContact


var NewWindow = {
  init: function(att,val) {
    if (!document.getElementById || !document.createElement || !document.appendChild) { return; }
    var strAtt   = ((typeof att == 'undefined') || (att == null)) ? 'class' : att;
    var strVal   = ((typeof val == 'undefined') || (val == null)) ? 'non-html' : val;
    var arrLinks = document.getElementsByTagName('a');
    var oRegExp  = new RegExp("(^|\\s)" + strVal + "(\\s|$)");
    var oLink;
    for (var i = 0; i < arrLinks.length; i++) {
      oLink = arrLinks[i];
      if ((strAtt == 'class') && (oRegExp.test(oLink.className)) || (oRegExp.test(oLink.getAttribute(strAtt)))) {
		oLink.onclick = NewWindow.openWin;
      }
    }
    oWarning = null;
  },
  openWin: function(e) {
    var event = (!e) ? window.event : e;
    if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey)
	  return true;
    else {
      var oWin = window.open(this.getAttribute('href'), '_blank');
      if (oWin) {
        if (oWin.focus) { oWin.focus(); return false; }
      }
      oWin = null;
      return true;
    }
  }
};  // end NewWindow


addEvent(window, 'load', function(){NewWindow.init('rel', 'external');});
addEvent(window, 'load', AjaxContact.contactFormSetup);
