/*
customized wrapper to use with AJForm. Requires inc_ajax.js for cross-domain compatible mode

Example:

var url='ajx_aaskdjfakjsdf.asp';
//on asp side, use request.form instead of request.querystring
ajf_clearfields();
ajf_addfield('EmailAddress','asdf@asdf.com');
ajf_addtfield('Message',x_unlimitedtext);
ajf_submit(url,null,sendmessage_sub);

function sendmessage_sub(datafromasp,successboolean){
 var resp=ajx_getresponsevars(responsedata);
 if (resp[0]===false){
  alert(resp[1]);
  return;
 }
 show success mesage
}

*/

addloadcommand('ajf_outputdivs()');
function ajf_outputdivs(){
 appendhtml('<div id="ajf_div" style="display:none;"></div>');
}


var ajf_n = new Array();
var ajf_v = new Array();
var ajf_t = new Array();

function ajf_clearfields(){
 ajf_n = new Array();
 ajf_v = new Array();
 ajf_t = new Array();
}

function ajf_addfield(fname,fvalue){
 //takes raw data, not html prepped
// alert(fname + ' = ' +fvalue);
 var ajfid=ajf_n.length;
 ajf_n[ajfid]=fname;
 ajf_v[ajfid]=fvalue;
 ajf_t[ajfid]=false;
}

function ajf_addtfield(fname,fvalue){
 //takes raw data, not html prepped
 var ajfid=ajf_n.length;
 ajf_n[ajfid]=fname;
 ajf_v[ajfid]=fvalue;
 ajf_t[ajfid]=true;
}

var ajfw_precallback=null;
var ajfw_postcallback=null;
var ajfw_postcallbackparam=null;
var ajfw_waiting=false;

function ajf_submit(url,precallback,postcallback,postcallbackparam){
// if (isdifferentdomain(xmlurl)){
//...left off  return loadXMLurl_xdomain(xmlurl, loadingfunct, donefunct, doneparameter1, isasync);
// }
 if (isdifferentdomain(url)){//do cross-domain compatible method (can't send more than 1900 characters though
  var qs='q=1';
  for (i=0;i<=ajf_n.length-1;i++){
   qs+='&'+prepinput(ajf_n[i])+'='+escape(prepinput(ajf_v[i]));
  }
  if (url.indexOf('?')>=0){
   if (url.indexOf('?')<url.length-1){//append to existing querystring
    qs='&'+qs;
   }
  }
  url+=qs;
  url=url.substring(0,1940);//ie can't handle more than 1940 characters in the url
  loadXMLurl(url, precallback, postcallback, postcallbackparam, true);
 } else {
  var h='<form action="'+url+'" method=post onsubmit="ajfprecallback(); ajform:ajfpostcallback();" name="ajf_form" id="ajf_form">';
  for (i=0;i<=ajf_n.length-1;i++){
   if (ajf_t[i])
    h+='<textarea name="'+prepinput(ajf_n[i])+'">'+prepinput(ajf_v[i])+'</textarea>';
   else
    h+='<input name="'+prepinput(ajf_n[i])+'" value="'+prepinput(ajf_v[i])+'">';
  }
  h+='<input type=submit name="ajf_submit" id="ajf_submit"></form>';
  ajf_n=new Array();
  ajf_v=new Array();
  changetext('ajf_div',h);
  ajfw_precallback=precallback;
  ajfw_postcallback=postcallback;
  ajfw_postcallbackparam=postcallbackparam
  AJForm.register(document.ajf_form);
  document.ajf_form.ajf_submit.click();
 }
}

function prepinput(x){
 if (typeof x=='number')
  return x;
 if (x==null)
  return '';
 return x.replace(RegExp('&','g'),'&amp;').replace(RegExp('"','g'),'&quot;');
}

function ajfpostcallback(data,statusCode,statusMessage){
 if (ajfw_postcallback==null) return;
 if (!mt(ajfw_postcallbackparam))
  ajfw_postcallback(data,(statusCode==0),ajfw_postcallbackparam)
 else
  ajfw_postcallback(data,(statusCode==0))
 ajfw_waiting=false;
}

function ajfprecallback(f){
 if (ajfw_waiting) return false;
 ajfw_waiting=true;
 if (ajfw_precallback!=null)
  ajfw_precallback();
 return true;
}

