

/*
 *    =============================
 *       		AJAX CLASS
 *    =============================
 */

function AJAX(){
      // Loader parameters
      this.currentRequest  = false;     
      this.action_done = false; //?      
      //this.actionArray = new Array('user-search','select-menu','container');
}




/*
 *    =============================
 *       AJAX PUBLIC METHODS
 *    =============================
 */

AJAX.prototype.load = function(parentModule, module, action, parameters){
          						
	this.executeRequest(new AJAXRequest(parentModule, module, action, parameters, this.frame));		
		
}

/*
 *    =============================
 *     		 AJAX REQUEST
 *    =============================
 */

function AJAXRequest(parentModule, module, action, parameters, time_index){
						    
    this.ajax_url   	= "../../LandingPage/handleRequest.php"; 
	     
    this.parentModule 	= parentModule;
    this.module    		= module;
    this.action    		= action;
    this.parameters 	= parameters;
    this.request    	= null;
    this.done 			= false;
}

AJAXRequest.prototype.execute = function(){
    		
	
    // Setup parameters
	var parameters = '&action=' + this.action;         
    parameters += '&module=' + this.module + '&parentModule=' + this.parentModule;
        
    if(this.parameters) parameters += "&parameters=" + this.parameters;
    //if(this.parameters) parameters += "&" + this.parameters;
                        
    // Mozilla, Opera, Safari sowie Internet Explorer 7
    if (typeof XMLHttpRequest != 'undefined') {
        this.request = new XMLHttpRequest();
    }
    if (!this.request) {
        // Internet Explorer 6 und �lter
        try {
            this.request  = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            try {
                this.request  = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
                this.request  = false;
            }
        }
    }                  
        
    
        
    if(!this.request) alert("request failed!");
         
	this.request.open("POST", this.ajax_url, true);	
	
	//this.request.overrideMimeType("text/xml");  //first without xml
	this.request.setRequestHeader("Content-type", "application/x-www-form-urlencoded, charset=utf-8");	  
	this.request.onreadystatechange=ajaxCheckRequestStatus;		
	this.request.send(parameters);	  
}

// TODO
function ajaxCheckRequestStatus(){
	 	
    if(!AJAX.currentRequest) return;
    AJAX.currentRequest.checkRequestStatus();
}

AJAXRequest.prototype.checkRequestStatus = function(){
	  	
  switch(this.request.readyState){
    case 0: // NICHT INITIALISIERT
    case 1: // LADEND
    case 2: // GELADEN
    case 3: // INTERAKTIV
    break;
    case 4:
      if(this.request.status!=200){
          // TODO: error handling einsetzen
        alert(" parentModule: "+ this.parentModule + " Module:" + this.module + "  konnten nicht geladen werden " + this.request.status);
      } else {                	      	  
    	  
    	  //alert(" take some action when required...... ");    	  
    	 document.getElementById(this.module).innerHTML = this.request.responseText;    	    	
      }
    break;
  }
}


AJAX.prototype.executeRequest = function(AJAXRequestObj){    
    AJAX.currentRequest = AJAXRequestObj; //
    AJAX.currentRequest.execute();    
}



/*
 *    =============================
 *       		INIT AJAX
 *    =============================
 */

var AJAX = new AJAX();

/*
 * trigger new load 
 */
function triggerNewLoad(parent, module, action, parameters){		
	AJAX.load(parent, module, action, parameters);	
}


