//
// Process GET requests
//
function ajax_getprocess ( action, element_id, script ) {

	var ajaxRequest = ajax_getXMLHttp () ;

	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
		  if (ajaxRequest.status == 200) {
		    parts = ajaxRequest.responseText.split("~") ;
			document.getElementById(element_id).innerHTML = parts[0] ;
			if ( parts[1] ) {
			  document.getElementById('bag_total').innerHTML = "Shopping Bag (" + parts[1] + " item" + ( ( parts[1] == 1 ) ? "" : "s" ) + ")" ;
			  document.getElementById('bag_total').style.fontSize = "15px" ;
			  document.getElementById('bag_total').style.color = "#56811f" ;
			} else {
			  document.getElementById('bag_total').innerHTML = "Shopping Bag" ;
			  document.getElementById('bag_total').style.fontSize = "13px" ;
			  document.getElementById('bag_total').style.color = "#b15300" ;
			}
			//document.getElementById(element_id).innerHTML = ajaxRequest.responseText + " - get";
	      } else {
	        alert ( "Error: ajax_getprocess()" ) ;
	      }
		}
	}
	
	document.getElementById(element_id).innerHTML = "<img src=\"images/gr_loading.gif\" style=\"margin-left: 25px;\" />" ;
	ajaxRequest.open ( "GET", "code_" + script + "_ajax.php?action=" + action + "&element_id=" + element_id + "&script=" + script, true ) ;
	ajaxRequest.send ( null ) ; 
	
}

//
// Process POST (form) requests
//
function ajax_postprocess ( f, action, element_id, script ) {

	var ajaxRequest = ajax_getXMLHttp () ;
	var str = ajax_getformvalues ( f ) ;

	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
		  if (ajaxRequest.status == 200) {
		    parts = ajaxRequest.responseText.split("~") ;
			document.getElementById(element_id).innerHTML = parts[0] ;
			if ( parts[1] ) {
			  document.getElementById('bag_total').innerHTML = "Shopping Bag (" + parts[1] + " item" + ( ( parts[1] == 1 ) ? "" : "s" ) + ")" ;
			  document.getElementById('bag_total').style.fontSize = "15px" ;
			  document.getElementById('bag_total').style.color = "#56811f" ;
			} else {
			  document.getElementById('bag_total').innerHTML = "Shopping Bag" ;
			  document.getElementById('bag_total').style.fontSize = "13px" ;
			  document.getElementById('bag_total').style.color = "#b15300" ;
			}
			//document.getElementById(element_id).innerHTML = ajaxRequest.responseText + " - post";
	      } else {
	        alert ( "Error: ajax_postprocess()" ) ;
	      }
		}
	}
	
	document.getElementById(element_id).innerHTML = "<img src=\"images/gr_loading.gif\" style=\"margin-left: 25px;\" />";
	ajaxRequest.open ( "POST", "code_" + script + "_ajax.php", true ) ;
	ajaxRequest.setRequestHeader ( 'Content-Type', 'application/x-www-form-urlencoded' ) ;
	ajaxRequest.send ( str + "&action=" + action + "&element_id=" + element_id + "&script=" + script ) ; 
	
}

//
// Retrieve form data and package it up
//
function ajax_getformvalues ( fobj ) {

  var str = "" ;

  for ( var i = 0 ; i < fobj.elements.length ; i++ ) {
  
    //alert ( fobj.elements[i].type + " -- " + fobj.elements[i].name + "=" + escape ( fobj.elements[i].value ) + "&"  ) ;
  
    switch ( fobj.elements[i].type ) {

        case "hidden":
        case "text":
        case "password":
        case "button":
            str += fobj.elements[i].name + "=" + escape ( fobj.elements[i].value ) + "&" ;
            break ;

        case "checkbox":
            if ( fobj.elements[i].checked ) str += fobj.elements[i].name + "=" + escape ( fobj.elements[i].value ) + "&" ;
            break ;
            
        case "select-one":           
           str += fobj.elements[i].name + "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&" ;
           break ;
    }
  }
  
  return str.substr ( 0, ( str.length - 1 ) ) ;
  
}

//
//
//
function ajax_getXMLHttp () {

  var ajaxRequest ;
	
  try { ajaxRequest = new XMLHttpRequest () ; }
  catch ( e ) {
    try { ajaxRequest = new ActiveXObject ( "Msxml2.XMLHTTP" ) ; }
	catch ( e ) {
      try { ajaxRequest = new ActiveXObject ( "Microsoft.XMLHTTP" ) ; }
	  catch (e) {
	    alert ( "Javascript is required for this functionality." ) ;
        return false ;
      }
    }
  }
  
  return ajaxRequest ;
	
}