/*
	Jay's Ajax Loader	
*/

/* ------------------------------- Ajax Functionality ----------------------------- */
    


/* ---------------------- GENERIC RETURN ELEMENT FUNCTION ----------------------- */

function getE( v ) {
  // e is for element!
  e = false;
 
    var d = window.document;
  if ( d.getElementById ) {
    e = d.getElementById( v );
  }
  else e = d[ v ];

  return e;
}

/* ------------ AJAX BASE FUNCTIONALITY ---------------- */

var xmlhttp = null;
var nextFunc = "";



/* ------------------------ BASIC AJAX LOADER ---------------------------- */



function getPage( displayDiv, url, second ) {
    
    if ( second != false ) nextFunc = second;
    else nextFunc = "";
    
    xmlhttp=null;
    if (window.XMLHttpRequest) {// code for all new browsers
      xmlhttp=new XMLHttpRequest();
  }
    else if (window.ActiveXObject) {// code for IE5 and IE6
      xmlhttp=new ActiveXObject( "Microsoft.XMLHTTP" );
  }
    if (xmlhttp!=null) {
        xmlhttp.onreadystatechange=function() {
            stateChange( displayDiv, nextFunc );
        };
        xmlhttp.open( "GET", url, true );
        xmlhttp.send( null );
  }
    else {
      alert( "Your browser does not support XMLHTTP." );
  }
}

/* -------------------     EVENT HANDLER FOR HTTP STATE CHANGE --------------------------- */

function stateChange( displayDiv, nextFunc ) {
    if (xmlhttp.readyState==4) {// 4 = "loaded"
        if (xmlhttp.status==200) {// 200 = OK
            e = getE( displayDiv );
            e.innerHTML = xmlhttp.responseText;
            if ( nextFunc != "" ) eval( nextFunc );
        }
        else {
            alert("Problem retrieving XML data");
        }
    }
}


/* ---------------------------- Call Function  ---------------------------------- */


function popContent( displayDiv, url, nextFunc ) {
    e = getE( displayDiv );
    e.innerHTML = "<p>loading...</p>";
    getPage( displayDiv, url, nextFunc );
}






/* ------------------------------- POST Subission Ajax Functionality ----------------------------- */


/* ------------------------ BASIC AJAX LOADER (Differs From Regular) ---------------------------- */



function getForm( displayDiv, url, params, second ) {

    if ( second != false ) nextFunc = second;
    else nextFunc = "";
    
    xmlhttp=null;
    if (window.XMLHttpRequest) {// code for all new browsers
      xmlhttp=new XMLHttpRequest();
  }
    else if (window.ActiveXObject) {// code for IE5 and IE6
      xmlhttp=new ActiveXObject( "Microsoft.XMLHTTP" );
  }
    if (xmlhttp!=null) {
        xmlhttp.onreadystatechange=function() {
            formStateChange( displayDiv, nextFunc );
        };
        xmlhttp.open( "POST", url, true );
        
        // New Headers to Manually Declare Form Submission
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.setRequestHeader("Content-length", params.length);
        xmlhttp.setRequestHeader("Connection", "close");
        
        xmlhttp.send( params );
  }
    else {
      alert( "Your browser does not support XMLHTTP." );
  }
}


/* -------------------     EVENT HANDLER FOR HTTP STATE CHANGE (Same As Regular) --------------------------- */

function formStateChange( displayDiv, nextFunc ) {
    if (xmlhttp.readyState==4) {// 4 = "loaded"
        if (xmlhttp.status==200) {// 200 = OK
            e = getE( displayDiv );
            e.innerHTML = xmlhttp.responseText;
            if ( nextFunc != "" ) eval( nextFunc );
        }
        else {
            alert("Problem retrieving XML data");
        }
    }
}


/* ---------------------------- Call Function (Additional Variable)  ---------------------------------- */


function popForm( displayDiv, url, formToGrab, nextFunc ) {
    var params = getFormData( formToGrab );
    e = getE( displayDiv );
    e.innerHTML = "<p>loading...</p>";
    getForm( displayDiv, url, params, nextFunc );
}



/* ------- Take the Chosen Form and Make a String Uut of the Variables ------- */

function getFormData( formToGrab ) {
    var paramString = "";
    for(i=0; i<formToGrab.length; i++) {
      if(formToGrab[i].type == "radio" || formToGrab[i].type == "checkbox") {
        if(formToGrab[i].checked == true) {
          paramString = paramString + formToGrab[i].name + "=" + escape(formToGrab[i].value);
        }
      } 
      else if(formToGrab[i].name != "" && formToGrab[i].value != "") {
        paramString = paramString + formToGrab[i].name + "=" + escape(formToGrab[i].value);
      }
       if(i < formToGrab.length - 1)    {
         paramString = paramString + "&";
       }
    }
    
    return paramString;
    
}


