/******************************************************************************
**  ajaxServerResponse.js                                                    **
**                                                                           **
**  Dient zur Auswertung der Server XML-Antwort.						     **
**                                                                           **
**  Autor: Höft, Torben                                                      **
**  Email: t-hoeft@web.de / thoeft@studio-hamburg.de                         **
**  Copyright: 2006                                                          **
**                                                                           **
**  Erstellt: 14. September 2006                                             **
**  Aktualisiert: 14. September 2006                                         **
**                                                                           **
**                                                                           **
******************************************************************************/

function ajaxServerResponse(){
	
	
   this.handleServerResponse = function(xmlObject){

	    var functionResult = null;
		var functionType = null;
		
		//Funktionsergebnis ermitteln
		if(xmlObject.getElementsByTagName("FunctionResult")[0]){
		
			if(xmlObject.getElementsByTagName("FunctionResult")[0].childNodes[0]){
			
		       functionResult = xmlObject.getElementsByTagName("FunctionResult")[0].childNodes[0].nodeValue;
		
			}	 
		}
		
		
		if(xmlObject.getElementsByTagName("FunctionType")[0]){
		
			if(xmlObject.getElementsByTagName("FunctionType")[0].childNodes[0]){
			
		       functionType = xmlObject.getElementsByTagName("FunctionType")[0].childNodes[0].nodeValue;
		
			}	 
		}
		 
		if(functionResult=="OK"){
			
			//Server hat Funktion erfolgreich durchgeführt 
					
			if(functionType=="changeProgressBar"){
				
				var tableBarDivName = "";
				var progressPercent = 0;
							
				if(xmlObject.getElementsByTagName("ProgressPercent")[0]){
		
			       if(xmlObject.getElementsByTagName("ProgressPercent")[0].childNodes[0]){
			
		              progressPercent = xmlObject.getElementsByTagName("ProgressPercent")[0].childNodes[0].nodeValue;
			       }	 
		         }
		         
		         
		         if(xmlObject.getElementsByTagName("ProgressTablebar")[0]){
		
			       if(xmlObject.getElementsByTagName("ProgressTablebar")[0].childNodes[0]){
			
		              tableBarDivName = xmlObject.getElementsByTagName("ProgressTablebar")[0].childNodes[0].nodeValue;
		
			       }	 
		         }
		         	         
		         changePercentProgressBar(progressPercent, tableBarDivName);
		         
			}
			
			
			//Ändern von Content-Areas
			var contentAreaNode =  xmlObject.getElementsByTagName("ContentArea");
					
			if(contentAreaNode.length==1){
									
			   changeDivArea(contentAreaNode);					
					
			}
			
			
			//AddOnTimerFunction ermitteln
			var addOnTimerFunctionNode =  xmlObject.getElementsByTagName("AddOnTimerFunction");
				
			if(addOnTimerFunctionNode.length==1){
				 	
			    startTimerFunctions(addOnTimerFunctionNode);	
				 
			}
					
		}else if(functionResult=="NOK"){
							
			//Server konnte Funktion nicht erfolgreich durchgeführen
			var errorNode =  xmlObject.getElementsByTagName("ERROR");
							
			if(errorNode.length==1){
				
			   var errorType = "";
			   var errorNumber = "";
			   var errorMessage = "";
			   				
			   for(i=0; i<errorNode[0].childNodes.length; i++){
			   	
			   	   if(errorNode[0].childNodes[i].nodeName == "Type"){
			   	   	  	
			   	   	  if(errorNode[0].childNodes[i].childNodes[0]){
			   	   	
			   	        errorType = errorNode[0].childNodes[i].childNodes[0].nodeValue;		   	   	
			   	   	
			   	   	  }
			   	   }
			   	   
			   	   if(errorNode[0].childNodes[i].nodeName == "Number"){
			   	   	  	
			   	   	  if(errorNode[0].childNodes[i].childNodes[0]){
			   	   	
			   	   	     errorNumber = errorNode[0].childNodes[i].childNodes[0].nodeValue;
			   	   	
			   	   	  }
			   	   }
			   	   
			   	   if(errorNode[0].childNodes[i].nodeName == "Message"){
			   	   	   	 
			   	   	  if(errorNode[0].childNodes[i].childNodes[0]){ 
			   	   	  	
			   	   	      errorMessage = errorNode[0].childNodes[i].childNodes[0].nodeValue;
			   	   	      
			   	   	  }
			   	   }  	
			   }
			   
			   
			   //alert(errorType + " " + errorNumber + " " + errorMessage);
			   
			   //Ändern von Content-Areas
			   var contentAreaNode =  xmlObject.getElementsByTagName("ErrorContentArea");
						
			   if(contentAreaNode.length==1){
										
				 changeDivArea(contentAreaNode);					
						
			   }
				
				
			   //AddOnTimerFunction ermitteln
			   var addOnTimerFunctionNode =  xmlObject.getElementsByTagName("ErrorAddOnTimerFunction");
					
			   if(addOnTimerFunctionNode.length==1){
					 	
				  startTimerFunctions(addOnTimerFunctionNode);	
					 
			   }
				
			}
			
		}else{
			
			//Anderer Fehler
			alert("System Fehler");
		}
   	
    }
   
   
    //Ändern von Div-Elementen
	function changeDivArea(contentAreaNode){
				
		for(i=0; i<contentAreaNode[0].childNodes.length; i++){
			
		   var divId = "";
		   var divContent = "";	
			
		   for(k=0; k<contentAreaNode[0].childNodes[i].childNodes.length; k++){
		   	
		   	   if(contentAreaNode[0].childNodes[i].childNodes[k].nodeName == "ID"){
		   	   	
		   	   	  if(contentAreaNode[0].childNodes[i].childNodes[k].childNodes[0]){
		   	   	
		   	   	     divId = contentAreaNode[0].childNodes[i].childNodes[k].childNodes[0].nodeValue;
		   	   	
		   	   	  }
		   	   }
		   	
		   	   if(contentAreaNode[0].childNodes[i].childNodes[k].nodeName == "Content"){
		   	   	
		   	   	   if(contentAreaNode[0].childNodes[i].childNodes[k].childNodes[0]){
		   	   	   	
		   	   	   	  divContent = contentAreaNode[0].childNodes[i].childNodes[k].childNodes[0].nodeValue;
		   	   	   	
		   	   	   }	   	   	
		   	   }	    	
		   }
		   
		   
		   if(document.getElementById(divId)){
		   
		      document.getElementById(divId).innerHTML = divContent;
		   
		   }	   	
		}
		
	}
	
	
	//Funktion zum aufrufen von Timer-Funktionen
	function startTimerFunctions(addOnTimerFunctionNode){
		
		for(i=0; i<addOnTimerFunctionNode[0].childNodes.length; i++){
			
		   var timer = 0;
		   var functionName = "";	
			
		   for(k=0; k<addOnTimerFunctionNode[0].childNodes[i].childNodes.length; k++){
		   	
		   	   if(addOnTimerFunctionNode[0].childNodes[i].childNodes[k].nodeName == "Timer"){
		   	   	
		   	   	  if(addOnTimerFunctionNode[0].childNodes[i].childNodes[k].childNodes[0]){
		   	   	
		   	   	     divId = addOnTimerFunctionNode[0].childNodes[i].childNodes[k].childNodes[0].nodeValue;
		   	   	
		   	   	  }
		   	   }
		   	
		   	   if(addOnTimerFunctionNode[0].childNodes[i].childNodes[k].nodeName == "FunctionName"){
		   	   	
		   	   	   if(addOnTimerFunctionNode[0].childNodes[i].childNodes[k].childNodes[0]){
		   	   	   	
		   	   	   	  functionName = addOnTimerFunctionNode[0].childNodes[i].childNodes[k].childNodes[0].nodeValue;
		   	   	   	
		   	   	   }	   	   	
		   	   }	    	
		   }
		   
		   
		   if(functionName!=""){
		   
		       Timer = setTimeout(functionName, timer);  	
		   	       
		   }	   	
		}	
		
	}
	
	
	//Ändern eines Fortschrittsbalken
	function changePercentProgressBar(progressPercent, tablebarDivName){
		
		document.getElementById(tablebarDivName).width=progressPercent+"%";
				
	}
   	
}