/* 
	Jay's Simple Ajax Plugin
	Created 5.17.2010
	by Jay Pilgreen
	copyright River City Studio
*/

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


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

var rcsDoc = window.document;
function getE( v ) {
	e = false;
	if ( rcsDoc.getElementById ) {
		e = rcsDoc.getElementById( v );
	}
	else if ( rcsDoc.all ) {
		e = rcsDoc.all[ 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>";
		fadeOutBox(1);
    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>Sending...</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;
    
}


