/******************************************************************************
**  function.js                                                              **
**                                                                           **
**  Stellt Funktionen für die Client Server Kommunikation zur Verfügung.	 **		                                     **
**                                                                           **
**  Autor: Höft, Torben                                                      **
**  Email: t-hoeft@web.de / thoeft@studio-hamburg.de                         **
**  Copyright: 2006                                                          **
**                                                                           **
**  Erstellt: 11. September 2006                                             **
**  Aktualisiert: 11. September 2006                                         **
**                                                                           **
**                                                                           **
******************************************************************************/


//Funktion zum Aufrufen einer Server Funktion
function serverQuestion(url, param, debugMode){

  //Objekt für die AJAX-Kommunikation
  var com = new httpComServerRequest();

  //Parameter übergeben
  com.setParameter(param);

  //url übergeben
  com.setURL(url);

  //Debug-Mode einschalten
  com.setDebugMode(debugMode);

  //Kommunikation starten
  com.comstart();

}


//Funktion, die den User erst um Bestätigung fragt, bevor eine AJAX Kommunikation durchgeführt
//wird
function askUserToSendAjaxRequest(question, url, param, debugMode){

   if(confirm(question)){

      serverQuestion(url, param, debugMode);

   }
}


//Funktion, die den User erst um Bestätigung fragt, bevor AJAX mit Formular senden aufgerufen wird
function askUserToSendAjaxForm(question, url, param, form, debugMode){

   if(confirm(question)){

      serverQuestionWithForm(url, param, form, debugMode);

   }
}


//Funktion zum Aufrufen einer Server Funktion inkl. Auslesen eines Formulars
function serverQuestionWithForm(url, param, form, debugMode){

  var formular = document.forms[form];

  //Formular durchlaufen
  for(i=0; i<formular.length; i++){

  	if(debugMode){

  	   alert(formular[i].type);

  	}


  	if(formular[i].type=="checkbox"){

  		if(formular[i].checked){

  			if(param != ""){

  	          param = param + "&";

  	        }

  			param = param + formular[i].name;

  			param = param + "=";

            param = param + formular[i].value;
        }
  	}


  	if(formular[i].type=="radio"){

  		if(formular[i].checked){

  			if(param != ""){

  	          param = param + "&";

  	        }

  			param = param + formular[i].name;

  			param = param + "=";

            param = param + formular[i].value;
        }
  	}

  	if(formular[i].type=="text"){

  	   if(param != ""){

  	      param = param + "&";

  	   }

  	   param = param + formular[i].name;

  	   param = param + "=";

       //param = param + escape(formular[i].value);

       //param = param + formular[i].value;

       bValue = formular[i].value;

       bValue = bValue.replace(/&/g, escape("&"));

       bValue = bValue.replace(/\+/g, "%2B");


       //bValue = escape(bValue);


       param = param + bValue;

  	}

  	if(formular[i].type=="password"){

  	   if(param != ""){

  	      param = param + "&";

  	   }

  	   param = param + formular[i].name;

  	   param = param + "=";

       //param = param + escape(formular[i].value);
      // param = param + formular[i].value;

       bValue = formular[i].value;

       bValue = bValue.replace(/&/g, escape("&"));

       bValue = bValue.replace(/\+/g, "%2B");

       param = param + bValue;

  	}

  	if(formular[i].type=="textarea"){

  	   if(param != ""){

  	      param = param + "&";

  	   }

  	   param = param + formular[i].name;

  	   param = param + "=";

       //param = param + escape(formular[i].value);
       //param = param + formular[i].value;

       bValue = formular[i].value;

       bValue = bValue.replace(/&/g, escape("&"));

       bValue = bValue.replace(/\+/g, "%2B");

       param = param + bValue;
  	}

  	if(formular[i].type=="hidden"){

  	   if(param != ""){

  	      param = param + "&";

  	   }

  	   param = param + formular[i].name;

  	   param = param + "=";

       //param = param + escape(formular[i].value);
       //param = param + formular[i].value;

       bValue = formular[i].value;

       bValue = bValue.replace(/&/g, escape("&"));

       bValue = bValue.replace(/\+/g, "%2B");

       param = param + bValue;
  	}


  	if(formular[i].type=="select-one"){

  	   if(param != ""){

  	      param = param + "&";

  	   }

  	   alreadyOneSelect = false;

  	   for (fi = 0; fi < formular[i].length; ++fi){

  	   	if (formular[i].options[fi].selected == true){

  	   		if(alreadyOneSelect){

  	   			param = param + "&";
  	   		}

  	   		param = param + formular[i].name;

  	        param = param + "=";

  	   		//param = param + escape(formular[i].options[fi].value);

  	   		//param = param + formular[i].options[fi].value;

  	   		bValue = formular[i].options[fi].value;

            bValue = bValue.replace(/&/g, escape("&"));

            bValue = bValue.replace(/\+/g, "%2B");

            param = param + bValue;

  	   		alreadyOneSelect = true;
  	   	}

  	   }


  	}

  	if(formular[i].type=="select-multiple"){

  	   if(param != ""){

  	      param = param + "&";

  	   }

  	   alreadyOneSelect = false;

  	   for (fi = 0; fi < formular[i].length; ++fi){

  	   	if (formular[i].options[fi].selected == true){

  	   		if(alreadyOneSelect){

  	   			param = param + "&";
  	   		}

  	   		param = param + formular[i].name + '[]';

  	        param = param + "=";

  	   		//param = param + escape(formular[i].options[fi].value);
  	   		//param = param + formular[i].options[fi].value;

  	   		bValue = formular[i].options[fi].value;

            bValue = bValue.replace(/&/g, escape("&"));

            bValue = bValue.replace(/\+/g, "%2B");

            param = param + bValue;

  	   		alreadyOneSelect = true;
  	   	}

  	   }

  	}


    /*if(document.article[i].name=="f_pid"){

       pid = document.article[i].options[document.article[i].selectedIndex].value;

    }*/

  }


  if(debugMode){

     alert(param);

  }

  //Objekt für die AJAX-Kommunikation
  var com = new httpComServerRequest();

  //Parameter übergeben
  com.setParameter(param);

  //url übergeben
  com.setURL(url);

  //Debug-Mode einschalten
  com.setDebugMode(debugMode);

  //Kommunikation starten
  com.comstart();

}