// Copyright 2007 Holodyn Corporation

// Post URL to ID
// ----------------------------------------------------
function postURL( url, cell_id, preCall, postCall ) {
  if( preCall ){
    eval( 'result = '+preCall );
    if( !result ) return false;
  }
  var pre_url = url.replace(/\?.*/,'');
  var pos_url = url.replace(/^.*\?/,'&');
  var xmlHttpReq = false;
  var self = this;
  // Mozilla/Safari
  if (window.XMLHttpRequest) {
    self.xmlHttpReq = new XMLHttpRequest();
  }
  // IE
  else if (window.ActiveXObject) {
    self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
  }
  self.xmlHttpReq.open('POST', pre_url, true);
  self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  self.xmlHttpReq.onreadystatechange = function() {
    if (self.xmlHttpReq.readyState == 4) {
      updateCell( cell_id, self.xmlHttpReq.responseText );
      if( postCall ) eval( postCall );
    }
  }
  self.xmlHttpReq.send(pos_url);
  setLoadingIndicator( cell_id );
}

// Collect Form Data and Post to Form Action
// ----------------------------------------------------
function postForm( form_id, cell_id, preCall, postCall ) {
  if( preCall ){
    eval( 'result = '+preCall );
    if( !result ) return false;
  }
  var form = document.getElementById( form_id );
  var xmlHttpReq = false;
  var self = this;
  // Mozilla/Safari
  if (window.XMLHttpRequest) {
    self.xmlHttpReq = new XMLHttpRequest();
  }
  // IE
  else if (window.ActiveXObject) {
    self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
  }
  self.xmlHttpReq.open('POST', form.action, true);
  self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  self.xmlHttpReq.onreadystatechange = function() {
    if (self.xmlHttpReq.readyState == 4) {
      updateCell( cell_id, self.xmlHttpReq.responseText );
      if( postCall ) eval( postCall );
    }
  }
  self.xmlHttpReq.send(getFormQueryStr( form_id ));
  setLoadingIndicator( cell_id );
}

// Pull Form Data
// ----------------------------------------------------
function getFormQueryStr( form_id ) {
  var form = document.getElementById( form_id );
  var amp = "";
  var query = "";
  for(i=0; i<form.elements.length; i++){
    if(form.elements[i].type == "text" || form.elements[i].type == "textarea" || form.elements[i].type == "hidden"){
      query += amp+form.elements[i].name+"="+encodeURIComponent(form.elements[i].value);
    } else if (form.elements[i].type == "radio" || form.elements[i].type == "checkbox") {
      if( form.elements[i].checked )
        query += amp+form.elements[i].name+"="+encodeURIComponent(form.elements[i].value);
    } else if (form.elements[i].type == "select-one") {
      query += amp+form.elements[i].name+"="+form.elements[i].options[form.elements[i].selectedIndex].value;
    } else if (form.elements[i].type == "select-multiple") {
      if( form.elements[i].name == 'city_select[]' ) {
        for( var k=0; k<form.elements[i].options.length; k++ )
          query += amp+form.elements[i].name+"="+form.elements[i].options[k].value;
      } else {
        for( var k=0; k<form.elements[i].options.length; k++ )
          if( form.elements[i].options[k].selected )
            query += amp+form.elements[i].name+"="+form.elements[i].options[k].value;
      }
    }
    amp = "&";
  }
  return query;
}

// Set Loading Indicator on Active DIV
// ----------------------------------------------------
function setLoadingIndicator( cell_id ){
  document.getElementById( cell_id ).innerHTML = '<span class="loadingIndicator">Loading...  Please Wait...</span>';
}

// Update DIV
// ----------------------------------------------------
function updateCell( cell_id, content ){
  document.getElementById( cell_id ).innerHTML = content;
}
