function get_module(REQUEST_URI,targetSelector,QUERY_STRING,method)
{
  data = 'REQUEST_URI='+REQUEST_URI;

  if(QUERY_STRING)
  {
    data += '&'+QUERY_STRING;
  }

  if(method && method.toLowerCase() == 'get')
    method = 'GET';
  else
    method = 'POST';

  $.ajax(
  {
    async: false,
    type: method,
    url: '/ajax/get_module.php',
    data: data,
    dataType: 'html',
    success: function(html)
    {
      $(targetSelector).html(html);
    }
  });
}

function post_form_to_module(REQUEST_URI,targetSelector,formSelector)
{
  var QUERY_STRING = $(formSelector).serialize();
  get_module(REQUEST_URI,targetSelector,QUERY_STRING,'POST');
}

function get_form_to_module(REQUEST_URI,targetSelector,formSelector)
{
  var QUERY_STRING = $(formSelector).serialize();
  get_module(REQUEST_URI,targetSelector,QUERY_STRING,'GET');
}

function test_ajax_library(){
  alert("ajax-library");
}

function setSubmitButtonInWaitState(submitButtonSelector, imgLoaderFileName){
  if(imgLoaderFileName == null) imgLoaderFileName = "ajaxloader_circle_blue.gif";
  if(submitButtonSelector == null) submitButtonSelector = ".imgBtnSubmit";
  //var imgLink = "<img src=\"/gfx/icons/" + imgLoaderFileName + "\" />";
  var imgLink = "/gfx/icons/" + imgLoaderFileName;
  //alert(submitButtonSelector + " - " + imgLoaderFileName);
  $(submitButtonSelector).attr("src",imgLink);
}

function setInputInWaitState(inputSelector)
{
  if(inputSelector == null) inputSelector = ".imgBtnSubmit";
  $(inputSelector).attr("disable",true);
}

function setInputInInputState(inputSelector)
{
  if(inputSelector == null) inputSelector = ".imgBtnSubmit";
  $(inputSelector).removeAttr("disable");
}

function setSubmitButtonInSubmitState(submitButtonSelector, imgButtonFileName){
  if(imgButtonFileName == null) imgButtonFileName = "save.png";
  if(submitButtonSelector == null) submitButtonSelector = ".imgBtnSubmit";
  //alert(submitButtonSelector + ' - ' + imgButtonFileName);
  //alert(submitButtonSelector + " YYYY- " + imgButtonFileName);
  var imgLink = "/gfx/buttons/" + imgButtonFileName;
  $(submitButtonSelector).attr("src",imgLink);
}
function getRequestAjaxString(objSendValues){
    var strSendString = '';
    var sign = '&';
    for (var key in objSendValues){
      if(key != null)
        strSendString += key + '=' + objSendValues[key] + sign;
    }

    strSendString = strRemoveLastSpecialSign(strSendString,sign);
    return strSendString;
  }

  function getFormFieldValue(entryNr, IDName){
    if(IDName != null){
      var selector = '#' + IDName + '_' + entryNr;
      var idValue = $(selector).val();
      //alert(iDFieldName+'---'+idValue+': '+selector);
      return idValue;
    }else{
        return '';
    }
  }

  function ajaxDelete(strAjax, ajaxDeleteFilePath, ajaxLoadFilePath, msg, bShowMessage, bReloadContent){
    if(bShowMessage == null) bShowMessage = true;
    if(bReloadContent == null) bReloadContent = true;
    //alert("send: "+strAjaxSend);
    //alert("strAjax--------: " + strAjax);
    var strNewEntrys = '';
    var message = '';
    var bDeletionSucceeded = false;
    $.ajax({
      type: "POST",
      url: ajaxDeleteFilePath,
      data: strAjax,
      dataType: "json",
      success: function (arNewEntrys) {
          strNewEntrys = arrayInHTMLJSAlert(arNewEntrys);
          if(arNewEntrys['succeeded'] == true)
          {
            bDeletionSucceeded = arNewEntrys['succeeded'];
          }else{
            bDeletionSucceeded = arNewEntrys['succeeded'];
          }
          if(arNewEntrys['debug'] == true){
            alert('DEBUG ajaxDelete: ' + strNewEntrys);
          }
          if(bShowMessage) alert('(' + arNewEntrys['succeeded'] + ')');
          if(bDeletionSucceeded && bReloadContent){
            //alert("Lade Seite: " + bDeletionSucceeded);
            ajaxLoad(strAjax, ajaxLoadFilePath, msg, false);
          }
          return bDeletionSucceeded;
      }
    });

  }



  function ajaxLoad(strAjax, ajaxLoadFilePath, msg, bShowMessage){
    if(bShowMessage == null) bShowMessage = true;
   //alert("strAjax--------: " + strAjax + " # " + ajaxLoadFilePath);
    var strNewEntrys = '';
    var message = '';

    $.ajax({
      type: "POST",
      url: ajaxLoadFilePath,
      data: strAjax,
      dataType: "json",
      success: function (arNewEntrys) {
     // alert("Angekommen");
      //alert(arNewEntrys);
          strNewEntrys = arrayInHTMLJSAlert(arNewEntrys);
         // alert(strNewEntrys);
          if(arNewEntrys['succeeded'] == true)
          {
            if(arNewEntrys['debug'] == true)
            {
              alert('DEBUG ajaxLoad: ' + strNewEntrys);
              alert('DEBUG ajaxLoad: ' + strSpecialEntrys);
            }

            if(bShowMessage) alert('(' + arNewEntrys['succeeded'] + ')');
          }
          strSpecialEntrys = treatSpecialNewEntrys(arNewEntrys);
      }
    });
  }

  function ajaxSave(strAjax, ajaxSaveFilePath, ajaxLoadFilePath, bShowMessage, bReloadContent){
    if(bShowMessage == null) bShowMessage = true;
    if(bReloadContent == null) bReloadContent = true;
    //alert("send: "+strAjax);
    var strNewEntrys = '';
    var message = '';
    setSubmitButtonInWaitState();
    var bDeletionSucceeded = false;
    $.ajax({
      type: "POST",
      url: ajaxSaveFilePath,
      data: strAjax,
      dataType: "json",
      success: function (arNewEntrys) {
          strNewEntrys = arrayInHTMLJSAlert(arNewEntrys);
          if(arNewEntrys['succeeded'] == true)
            bDeletionSucceeded = true;
          else
            bDeletionSucceeded = true;

          setSubmitButtonInSubmitState();
          if(bShowMessage)
              showMessageAjaxMessage(arNewEntrys['message']);


          // reload?
          if(bDeletionSucceeded && bReloadContent){
            //alert("Lade Seite (Save) : " + bDeletionSucceeded);
            reloadMediaManagerButton(arNewEntrys);
            setNewFormFieldValues(arNewEntrys);
            strAjax = getRequestAjaxString(arNewEntrys);
            ajaxLoad(strAjax, ajaxLoadFilePath, msg, false);
          }
      }
    });
  }

  function  reloadMediaManagerButton(arNewEntrys)
  {
    if(arNewEntrys["__linkMediaManager"] != null)
    {
      //alert(arNewEntrys["__linkMediaManager"]);

      //$("#" + "__linkMediaManager").html(arNewEntrys["__linkMediaManager"]);
      $("#" + "__linkMediaManager").attr("href", arNewEntrys["__linkMediaManager"]);
    }
  }

  function showMessageAjaxMessage(message)
  {
    var alertMessage = '';
    if(message == null)
    {
      alertMessage = "No Message defined";
    }
    else
    {
      alertMessage = message;
    }
    alert(alertMessage);
  }

  function ajaxUpdateSingleValueButton(strAjax, ajaxSaveFilePath,
                                 bShowMessage, submitButtonSelector){
    if(bShowMessage == null) bShowMessage = true;
    if(submitButtonSelector == null) bReloadContent = "__singleValueField";
    //alert("send: "+strAjax + "FilePath: " + ajaxSaveFilePath);
    var strNewEntrys = '';
    var message = '';
    setSubmitButtonInWaitState(submitButtonSelector);
    var bDeletionSucceeded = false;
    $.ajax({
      type: "POST",
      url: ajaxSaveFilePath,
      data: strAjax,
      dataType: "json",
      success: handleUpdateSingleValueButton
    });
  }

  function handleUpdateSingleValueButton(arNewEntrys)
  {
    strNewEntrys = arrayInHTMLJSAlert(arNewEntrys);
    if(arNewEntrys['succeeded'] == true)
        bSucceeded = true;
    else
        bSucceeded = false;

    if(arNewEntrys['debug'] == true){
      var strNewEntrys = arrayInHTMLJSAlert(arNewEntrys);
      message += '\n\n' + strNewEntrys;
      alert(message);
    }
    setSubmitButtonInSubmitState(arNewEntrys['imageButtonSelector'],
                                 arNewEntrys[arNewEntrys['imageButtonSelector']]);

}

function ajaxUpdateSingleValueInput(strAjax, ajaxSaveFilePath,
     bShowMessage, inputSelector){
    if(bShowMessage == null) bShowMessage = true;
    if(inputSelector == null) bReloadContent = "__inputField";
      //alert("send: "+strAjax + "FilePath: " + ajaxSaveFilePath);
      var strNewEntrys = '';
      var message = '';
      setInputInWaitState(inputSelector);
      var bDeletionSucceeded = false;
      $.ajax({
        type: "POST",
        url: ajaxSaveFilePath,
        data: strAjax,
        dataType: "json",
        success: handleUpdateSingleValueInput
});
}

function handleUpdateSingleValueInput(arNewEntrys)
{
      var message = "";

      var bSucceeded = false;
      if(arNewEntrys['succeeded'] == true)
                bSucceeded = true;

      if(arNewEntrys['debug'] == true){
        var strNewEntrys = arrayInHTMLJSAlert(arNewEntrys);
        message += '\n\n' + strNewEntrys;
        alert(message);
      }
      if(bSucceeded)
      {
        setInputInInputState(arNewEntrys['inputSelector']);
        $(arNewEntrys['inputSelector']).val(arNewEntrys['newValue']);
        //alert(arNewEntrys['newValue']);
        $(arNewEntrys['inputMessageClassSelector']).css("display","none");
        $(arNewEntrys['inputMessageIDSelector']).css("display","inline");

      }
}

  function treatSpecialNewEntrys(arNewEntrys){
    var ergebnis;
    var arSpecialNewEntrys = new Object();
    var strSpecialEntrys = "";
    var i = 0;
    for(var key in arNewEntrys){
      ergebnis = key.match(/__/);
      if(ergebnis){
        //arSpecialNewEntrys[key] = arNewEntrys[key];
        strSpecialEntrys = "\n\nSpecial-Entry " + i + ": " + arNewEntrys[key];
        //alert(strSpecialEntrys);
        $('#' + key).html(arNewEntrys[key]);
      }
      i++;
    }
    return strSpecialEntrys;
  }

  function arrayInHTMLJSAlert(arNewEntrys)
  {
    var strNewEntrys = '';
    var keyText = "";
    for(var key in arNewEntrys)
    {
      strNewEntrys += '\n' + key + '' +
      '\t\t' + arNewEntrys[key] + '';
    }
    strNewEntrys += '\n';
    //alert("mmm" + strNewEntrys);
    return strNewEntrys;

  }

  function setNewFormFieldValues(arNewEntrys){
    for(var key in arNewEntrys){
      //alert(key + " => " + arNewEntrys[key]);
      $("#" + key).val(arNewEntrys[key]);
    }
  }

  function setTextToMessageBox(strNewEntrys)
  {
    $('#javaScriptMessageHandlingBox').html(strNewEntrys);
  }

  function arrayInHTMLTable(arNewEntrys, tablelistCSSClass){
    if(tablelistCSSClass == null) tablelistCSSClass = 'tablelist';
    var strNewEntrys = "<div class=\"" + tablelistCSSClass + "\">";
    strNewEntrys += "<div class=\"header\"><a  onClick='return hideHTMLBlock(\"#javaScriptMessageHandlingBox\");'>" +
                             "<img src=\"/gfx/symbols/close.jpg\" />" +"</a>";
    strNewEntrys += "</div>";
    strNewEntrys += '<table>';
    for(var key in arNewEntrys){
      strNewEntrys += '<tr title="'+ key + '"><td>'
                       + key + '</td><td>' + arNewEntrys[key]
                       + '</td></tr>';
    }
    strNewEntrys += '</table></div>';
    return strNewEntrys;

  }

  function arrayInHTMLList(arNewEntrys, listCSSClass){
    if(listCSSClass == null) listCSSClass = 'list';
    var strNewEntrys = '<div class="' + listCSSClass + '"><ul>';
    for(var key in arNewEntrys){
      strNewEntrys += '<li title="'+ key + '">'
                       + key + ':' + arNewEntrys[key]
                       + '</li>';
    }
    strNewEntrys += '</ul></div>';
    return strNewEntrys;

  }

