function get_module(REQUEST_URI,targetSelector,POST)
{
  POSTdata = 'REQUEST_URI='+REQUEST_URI;
  if(POST)
  {
    POSTdata += '&'+POST
  }
  $.ajax(
  {
    async: false,
    type: 'POST',
    url: '/ajax/get_module.php',
    data: POSTdata,
    dataType: 'html',
    success: function(html)
    {
      $(targetSelector).html(html);
    }
  });
}
function post_form_to_module(REQUEST_URI,targetSelector,formSelector)
{
  var POST = $(formSelector).serialize();
  get_module(REQUEST_URI,targetSelector,POST);
}


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;
    
  }
  
