var $ = jQuery.noConflict();

// Algemene globalen
var $gs_Koptekst_EigenProgrammas = "";
var $gs_Koptekst_GeenEigenProgrammas = "";
var $gb_EigenProgrammas;
var $ga_checkfields;
var $ga_dataobject;
var $gn_id;
var $gb_detailsGewijzigd = false;
var $gn_niveau = 0;

// Arrays met de data van de gekoppelde gemeente/projecten
var $ga_deelnemende_gemeenten;
var $ga_niet_deelnemende_gemeenten;
var $ga_deelnemende_projecten;
var $ga_niet_deelnemende_projecten;

// Arrays met de ID's van selecties in de tabellen 
var $ga_gem_action_ontkoppel;
var $ga_gem_action_koppel;
var $ga_proj_action_ontkoppel;
var $ga_proj_action_koppel;

// Grid en Tab objecten
var $obj_gem_grid_niet_gekoppeld;
var $obj_gem_grid_gekoppeld;
var $obj_proj_grid_niet_gekoppeld;
var $obj_proj_grid_gekoppeld;
var $obj_grid_andere_prog;
var $obj_grid_alle_projecten;
var $obj_grid_prog_bij_proj;
var $obj_maintabs;
var $obj_progtabs;

// Arrays voor initiatie tabs
var $ga_init_maintabs = {"tab-eigen-programmas": false, "tab-andere-programmas": false, "tab-gekoppelde-projecten": false};
var $ga_init_progtabs = {"tab-gemeenten": false, "tab-projecten": false};


function initViewOverzichtProgrammas() {

  // Scherm layout initiatie
  $("#div-programma-details").hide();
  $("#action-errors").hide();
  $("#tab-programma-details").hide();
  $("#div-project-details").hide();
  
  // Tekst instellen bij eigen programma's
  displayEigenProgrammas();
  
  // Click acties initieren
  $("#programma-action-add").click(function() {
    setProgrammaDetails();
  });
  
  $("#programma-action-back").click(function() {
    doTerugNaarOverzicht();
  });
  
  $("#programma-action-cancel").click(function() {
    doCancelProgrammaDetails();
  });

  $("#programma-action-save").click(function() {
    doSaveProgrammaDetails();
  });
  
  $("#programma-action-remove").click(function() {
    customPopup("#message-remove-confirmation", {
      width: 372,
      resizable: false,
      buttons: {
        "ja": function() {
          $("#message-remove-confirmation").dialog("close");
          doRemoveProgramma();
        },
        "nee": function() {
          $("#message-remove-confirmation").dialog("close");
        }
      }
    });
  });
  
  $("#action-gemeente-uit-deelnemen").click(function() {
    doOntkoppelGemeente();
  });	
  
  $("#action-gemeente-naar-deelnemen").click(function() {
    doKoppelGemeente();
  }); 
  
  $("#action-project-uit-deelnemen").click(function() {
    doOntkoppelProject();
  }); 
  
  $("#action-project-naar-deelnemen").click(function() {
    doKoppelProject();
  }); 

  $("#action-gemeenten-save").click(function() {
    doSaveDeelnameGemeenten();
  });

  $("#action-projecten-save").click(function() {
    doSaveDeelnameProjecten();
  });
  
  // Date pickers initieren
  var $arr_datepicker_format = formatArrayDatePicker();
  $("#prog_datum_start").datepicker($arr_datepicker_format);
  $("#prog_datum_eind").datepicker($arr_datepicker_format);
  
  // Errorhandling initieren
  $ga_checkfields = new Array();
  setChangeEvent("prog_programma_naam", 5);  
  setChangeEvent("prog_datum_start", 10, true); // Verplichte datum
  setChangeEvent("prog_datum_eind", 0, true);   // Optionele datum
  
  // Tabs initieren
  $obj_maintabs = $("#tab-programma-pagina");
  $obj_progtabs = $("#tab-programma-details");
  $obj_maintabs.tabs({
    select: selectTabsProgrammaPagina
  });
  
  $obj_progtabs.tabs({
    select: selectTabsProgrammaDetails
  });
  
  var $action_gemeenten_selectall = $("action-gemeenten-selectall");
  $action_gemeenten_selectall.click(function(){
  });
    
  showMainTabs();
}

function selectTabsProgrammaPagina(pEvent, pUI) { 
  var $s_id = pUI.panel.id;
  var $b_inited = $ga_init_maintabs[$s_id];
  if ($b_inited == false) {
    if ($s_id == "tab-eigen-programmas") {
      displayEigenProgrammas();
    } else if ($s_id == "tab-andere-programmas") {
      // Andere programma's
      initGridAndereProgrammas();
      getData_AndereProgrammas();
      $ga_init_maintabs[$s_id] = true;
    } else if ($s_id == "tab-gekoppelde-projecten") {
      initGridAlleGekoppeldeProjecten();
      initGridProgrammasBijProject();
      getData_AlleProjecten();
    }
  }
  
}

function resetTabsProgrammaDetails() {
  $ga_init_progtabs = {"tab-gemeenten": false, "tab-projecten": false};
  if ($obj_progtabs.tabs("option", "selected") != 0) {
    $obj_progtabs.tabs("option", "selected", 0);
  } else {
    handleTab_ProgTabs("tab-gemeenten");
  } 
}

function selectTabsProgrammaDetails(pEvent, pUI) {
  handleTab_ProgTabs(pUI.panel.id);
}

function handleTab_ProgTabs($ps_id) {
  var $b_inited = $ga_init_progtabs[$ps_id];
  if ($b_inited == false) {
    if ($ps_id == "tab-gemeenten") {
      // Deelnemende gemeenten
      initTab_ProgTabs_Gemeenten();
    } else if ($ps_id == "tab-projecten") {
      // Gekoppelde projecten
      initTab_ProgTabs_Projecten();
    }
    $ga_init_progtabs[$ps_id] = true;
  }  
}

function initTab_ProgTabs_Gemeenten() {
  initGridNietGekoppeldeGemeenten();
  initGridGekoppeldeGemeenten();
  getData_Gemeenten();
}

function initTab_ProgTabs_Projecten() {
  
  $("#projecten-filter-projectoms").change(function() {
    doFilterProjectOms();
  });
  
  initGridNietGekoppeldeProjecten();
  initGridGekoppeldeProjecten();
  getData_Projecten();
}

function displayEigenProgrammas() {
  $("#table_report_18").trigger("reloadGrid");
  if ($gb_EigenProgrammas != undefined && $gb_EigenProgrammas == false) {
    // Geen eigen programma's
    $("#koptekst-eigen-programmas").html($gs_Koptekst_GeenEigenProgrammas);
  } else {
    $("#koptekst-eigen-programmas").html($gs_Koptekst_EigenProgrammas);
  }
}

function setChangeEvent($ps_element_id, $pn_min_length, $pb_check_datum) {
  
  errorHandler.addForCheck($ps_element_id, $pn_min_length, $pb_check_datum);
  
  $ga_checkfields.push($ps_element_id);
  
  $("#" + $ps_element_id).change(function() {
    var $ps_element_id = $(this).attr("id");
    var $v_value = $(this).val(); 
    var $b_error = false;
    
    if (!errorHandler.checkField($ps_element_id, $v_value)) {
      $b_error = true;  
      errorHandler.add(false, $ps_element_id, "Vul een geldige waarde in voor dit veld");
    }
    
    if ($b_error == true) {
      errorHandler.displayErrors(); 
    } else {
      errorHandler.clearField($ps_element_id);
    }
    $gb_detailsGewijzigd = true;
  });
}

function setProgrammaDetails($p_progid) {
  // Haal de programma details op
  if ($p_progid == undefined) {
    $p_progid = 0;
    $("#programma-action-remove").hide();
  } else {
    $("#programma-action-remove").show();
  }
  $gn_id = $p_progid;
  $.post(
      globalvar_siteurl + 'programma/getProgrammaDetails',
      {
        ajax: 1,
        pid: $p_progid
      },
      function ($p_data) {
        // Retour informatie ontvangen
        if ($p_data != undefined && $p_data != null && $p_data.formdata != undefined) {
          // Informatie overnemen naar velden
          $gb_detailsGewijzigd = false;
          var $v_value = '';
          for (var $s_index in $p_data.formdata) {
            $v_value = $p_data.formdata[$s_index];
            if ($v_value == null) { $v_value = '';}

            $("#" + $s_index).val($v_value);
          }
          $ga_dataobject = $p_data.formdata;
          if ($gn_id > 0) {
            // Bij bestaand programma de extra gegevens tonen
            resetTabsProgrammaDetails();            
          }
          showProgrammaDetails();
        } else {
          $gn_id = 0;
          $ga_dataobject = null;
          showProgrammaDetails(true);
        }
        
      },
      "json"
  );

}
function showMainTabs() {
  if ($gn_niveau == 3) {
    // superset
    $obj_maintabs.tabs("remove", 1);    
  } else if ($gn_niveau == 2) {
    // Geen gemeente, dan alleen TAB Eigen Programmas
    $obj_maintabs.tabs("remove", 1);    
  } else if ($gn_niveau == 1) {
    // Gemeente
    
  }
}

function showProgrammaDetails($pb_close_details) {

  var $b_hide = false;
  if ($pb_close_details == undefined || $pb_close_details == false) {
    // De details indien mogelijk weergeven 
    if ($ga_dataobject == null) {
      // De details niet laten zien, want er is geen onderliggend object
      $b_hide = true;
    } else {
      // Het detail deel laten zien
      if ($gn_id > 0) {
        // Er wordt een bestaand programma gewijzigd, dan ook de extra tabs tonen
        if ($gn_niveau == 1) {
          // Op gemeente niveau het tabblad projecten selecteren
          $("#tab-programma-details").show().tabs('select', '#tab-projecten');
        } else {
          $("#tab-programma-details").show().tabs('select', '#tab-gemeenten');
        }
        
      } else {
        // Bij een nieuw programma de tabs niet laten zien
        $("#tab-programma-details").hide();
      }
      
      $("#programma-overzicht-deel").hide();
      $("#div-programma-details").ClearTypeFadeIn({speed: '600'});
      jqResizeTables();
    }
  } else {
    // De details niet weergeven
    $b_hide = true;
  }
  
  if ($b_hide == true) {
    $("#div-programma-details").ClearTypeFadeOut({speed: '600'});
    $("#programma-overzicht-deel").show();
  }
}

function doTerugNaarOverzicht() {
  $("#table_report_18").trigger("reloadGrid");
  
  // Controleer of er details gewijzigd zijn
  if ($gb_detailsGewijzigd == true) {
    // Er zijn zaken gewijzigd, dit melden en vragen of er terug gegaan moet worden
    customPopup("#message-terug-naar-overzicht", {
        width: 422,
        resizable: false,
        buttons: {
          "nee, terug naar formulier": function() {
            $("#message-terug-naar-overzicht").dialog("close");
          },
          "ja/nee, formulier verlaten": function() {
            $("#message-terug-naar-overzicht").dialog("close");
            showProgrammaDetails(true);      
            displayEigenProgrammas();
          }
        }
    });
    
  } else {
    errorHandler.clearErrors();
    showProgrammaDetails(true);      
    displayEigenProgrammas();
  }
}

function doCancelProgrammaDetails() {
  // Controleer of er details gewijzigd zijn
  if ($gb_detailsGewijzigd == true) {
    // Er zijn zaken gewijzigd, dit melden en vragen of er geannuleerd moet worden
    customConfirm("Waarschuwing", 
                  "Er zijn details van het programma gewijzigd. Weet u zeker dat u wilt annuleren?",
                  function() {
                    errorHandler.clearErrors();
                    setProgrammaDetails($gn_id);  
                  },
                  function() {
                    return;
                  });
    
  } else {
    errorHandler.clearErrors();
    setProgrammaDetails($gn_id);      
  }    
}

function doSaveProgrammaDetails() {
  // Controleer velden op fouten
  var $s_fieldid;
  for (var $n_index in $ga_checkfields) {
    $s_fieldid = $ga_checkfields[$n_index];
    $("#" + $s_fieldid).change();
  }
  if (errorHandler.hasErrors()) {
    customAlert("Opslaan", "Het programma kan niet worden opgeslagen. Het formulier is niet correct ingevuld.");
  } else if ($ga_dataobject == null) {
    customAlert("Opslaan", "Er is een onbekende fout opgetreden bij het opslaan van het programma.");  
  } else {
    // Data object vullen
    var $v_value;
    for (var $s_index in $ga_dataobject) {
      $v_value = $("#" + $s_index).val();      
      $ga_dataobject[$s_index] = $v_value;
    }
    
    $.post(
        globalvar_siteurl + 'programma/saveProgrammaDetails',
        {
          ajax: 1,
          pid: $gn_id,
          data: $ga_dataobject
        },
        function ($p_data) {
          if ($p_data != undefined && $p_data.result != false) {
            $("#table_report_18").trigger("reloadGrid");
            // Opslaan gelukt
            if ($gn_id == 0) {
              $gn_id = $p_data.data.pid;
              resetTabsProgrammaDetails();
              showProgrammaDetails();
            }
            $("#programma-action-remove").show();
            customAlert("Opslaan", "Het programma is opgeslagen.");
            if ($gb_EigenProgrammas == false) {
              // Er waren nog geen programma's, maar nu dus wel
              $gb_EigenProgrammas = true;
              displayEigenProgrammas();
            } 
          } else {
            customAlert("Opslaan", "Er is een fout opgetreden bij het opslaan van het programma.");
          }
          
        },
        "json"
    );
    
  }
}

function doRemoveProgramma() {
  
  if ($gn_id) {
    $.post(
        globalvar_siteurl + 'programma/removeProgramma',
        {
          ajax: 1,
          pid: $gn_id
        },
        function (p_data) {
          if (p_data != undefined && p_data.result != false) {
            // verwijderen gelukt
            showProgrammaDetails(true);
            displayEigenProgrammas();
            customAlert("Verwijderen", "Het programma is verwijderd.");
          } else {
            customAlert("Verwijderen", "Er is een fout opgetreden bij het verwijderen van het programma.");
          }
          
        },
        "json"
    );
  }
}

function initGridNietGekoppeldeGemeenten() {
  
  var sTableID = "table_nietgekoppelde_gemeenten";
  $obj_gem_grid_niet_gekoppeld = $("#" + sTableID);
  
  if ($gn_niveau == 1) {
    // Op gemeente niveau grid met niet gekoppelde gemeenten niet tonen
    $("#div-nietgekoppelde-gemeenten").css("width", 0);
    $("#div-gekoppelde-gemeenten").toggleClass("float-right", false);
    $("#div-gekoppelde-gemeenten").toggleClass("float-left", true);
    $obj_gem_grid_niet_gekoppeld.hide();
    $("#action-buttons-gemeente-koppeling").hide();
    return;
  }
  
  $obj_gem_grid_niet_gekoppeld.jqGrid( {
    colNames: ['id','Gemeente'],
    colModel: [{name: 'id', index: 'id', width: 0, hidden: true},
               {name: 'gemeente', index: 'gemeente', width: 320}],
    subGrid: false,    
    datatype: 'local',
    data: $ga_niet_deelnemende_gemeenten,
    rowNum: 25,
    scroll: true,
    scrollrows: true,
    multiselect: true,
    sortname: 'gemeente',
    sortorder: 'asc',
    viewrecords: false,
    caption: 'Niet deelnemende gemeenten',
    hoverrows: true,
    height: 250,
    viewsortcols: [true, 'vertical', true],
    footerrow: false,
    userDataOnFooter: false,
    onSelectRow:  function(pRowID, pStatus) {
                    // Gemeenten bijhouden om te koppelen (row select)
                    $ga_gem_action_koppel[pRowID]= pStatus;
                  },
    onSelectAll:  function (pRowIDs, pStatus) {
                    // Gemeenten bijhouden om te koppelen (multiselect)
                    var nRowID;
                    for (var $n_index in pRowIDs) {
                      nRowID = pRowIDs[$n_index];
                      if (nRowID != undefined) {
                        $ga_gem_action_koppel[nRowID]= pStatus;
                      }
                    }
                  }
    });
}

function initGridGekoppeldeGemeenten() {
  var sTableID = "table_gekoppelde_gemeenten";
  $obj_gem_grid_gekoppeld = $("#" + sTableID);

  $obj_gem_grid_gekoppeld.jqGrid( {
    colNames: ['id','Gemeente'],
    colModel: [{name: 'id', index: 'id', width: 0, hidden: true},
               {name: 'gemeente', index: 'gemeente', width: 320}],
    subGrid: false,    
    datatype: 'local',
    rowNum: 25,
    multiselect: ($gn_niveau != 1),
    sortname: 'gemeente',
    sortorder: 'asc',
    viewrecords: true,
    caption: 'Deelnemende gemeenten',
    hoverrows: true,
    height: 250,
    viewsortcols: [true, 'vertical', true],
    footerrow: false,
    userDataOnFooter: false,
    onSelectRow:  function(pRowID, pStatus) {
                    // Gemeenten bijhouden om te ontkoppelen (row select)
                    $ga_gem_action_ontkoppel[pRowID]= pStatus;
                  },
    onSelectAll:  function (pRowIDs, pStatus) {
                    // Gemeenten bijhouden om te ontkoppelen (multiselect)
                    var nRowID;
                    for (var $n_index in pRowIDs) {
                      nRowID = pRowIDs[$n_index];
                      if (nRowID != undefined) {
                        $ga_gem_action_ontkoppel[nRowID]= pStatus;
                      }
                    }
                  }
    });
  
  // Checkbox in header hiden
  //$("#cb_"+sTableID).hide();
  
}

function getData_Gemeenten() {
  
  $ga_gem_action_ontkoppel = new Array();
  $ga_gem_action_koppel    = new Array();
  
  $.post(
      globalvar_siteurl + 'programma/getProgramma_Gemeenten',
      {
        ajax: 1,
        pid: $gn_id
      },
      function ($p_data) {
        $obj_gem_grid_niet_gekoppeld.clearGridData();
        $obj_gem_grid_gekoppeld.clearGridData();
        if ($p_data != undefined) {
          
          if ($p_data.niet_gekoppeld != undefined) {
            $ga_niet_deelnemende_gemeenten = $p_data.niet_gekoppeld; 
            
            var $obj_data;
            for (var $n_index in $ga_niet_deelnemende_gemeenten) {
              $obj_data = $ga_niet_deelnemende_gemeenten[$n_index];
              $obj_gem_grid_niet_gekoppeld.addRowData($obj_data.id, $obj_data);
            }
          } 
          
          if ($p_data.gekoppeld != undefined) {
            $ga_deelnemende_gemeenten = $p_data.gekoppeld; 
            
            var $obj_data;
            for (var $n_index in $ga_deelnemende_gemeenten) {
              $obj_data = $ga_deelnemende_gemeenten[$n_index];
              $obj_gem_grid_gekoppeld.addRowData($obj_data.id, $obj_data);              
            }
            setProjectFilterGemeenten();              
          }
        }
        
      },
      "json"
  );

}


function doOntkoppelGemeente() {
  
  // Van deelnemend naar niet deelnemend
  if ($ga_gem_action_ontkoppel.length > 0) {
    for (var $n_index in $ga_gem_action_ontkoppel) {
      if ($ga_gem_action_ontkoppel[$n_index] == true) {
        // Naar gekoppelde gemeenten
        $obj_data = $obj_gem_grid_gekoppeld.getRowData($n_index);        
        $obj_gem_grid_niet_gekoppeld.addRowData($n_index, $obj_data);
        $obj_gem_grid_gekoppeld.delRowData($n_index);
      }
    }
    $ga_gem_action_ontkoppel = new Array();
  }
}

function doKoppelGemeente() {
  // Van niet deelnemend naar deelnemend
  if ($ga_gem_action_koppel.length > 0) {
    for (var $n_index in $ga_gem_action_koppel) {
      if ($ga_gem_action_koppel[$n_index] == true) {
        // Naar gekoppelde gemeenten
        $obj_data = $obj_gem_grid_niet_gekoppeld.getRowData($n_index);        
        $obj_gem_grid_gekoppeld.addRowData($n_index, $obj_data);
        $obj_gem_grid_niet_gekoppeld.delRowData($n_index);
      }
    }
    $ga_gem_action_koppel = new Array();
  }
}

function doSaveDeelnameGemeenten() {
  var $arr_gemeenten = $obj_gem_grid_gekoppeld.getDataIDs();
  
  // Opslaan wijzigingen
  $.post(
      globalvar_siteurl + 'programma/saveProgramma_Gemeenten',
      {
        ajax: 1,
        pid: $gn_id,
        gem: $arr_gemeenten
      },
      function ($p_data) {
        if ($p_data != undefined && $p_data.result != false) {
          // Opslaan gelukt
          customAlert("Opslaan", "De deelnemende gemeenten zijn opgeslagen.");
          // De geldende deelnemende gemeenten aanpassen
          $ga_deelnemende_gemeenten = $obj_gem_grid_gekoppeld.getRowData();
          // Refresh projectdata
          $ga_init_progtabs["tab-projecten"] = false;
          // Overzichtstabel refreshen
          $("#table_report_18").trigger("reloadGrid");
        } else {
          customAlert("Opslaan", "Er is een fout opgetreden bij het opslaan van de gemeenten.");
        }        
      },
      "json"
  );
}

function initGridNietGekoppeldeProjecten() {
  
  var sTableID = "table_nietgekoppelde_projecten";
  $("#" + sTableID).jqGrid( {
    colNames: ['id','gemeente','project'],
    colModel: [{name: 'id', index: 'id', width: 0, hidden: true},
               {name: 'gemeente', index: 'gemeente', width: 0, hidden: true},
               {name: 'project', index: 'project', width: 320}],
    subGrid: false,    
    datatype: 'local',
    rowNum: 25,
    scroll: true,
    scrollrows: true,
    multiselect: true,
    sortname: 'project',
    sortorder: 'asc',
    viewrecords: false,
    caption: 'Projecten van gemeenten',
    hoverrows: true,
    height: 250,
    viewsortcols: [true, 'vertical', true],
    footerrow: false,
    userDataOnFooter: false,
    onSelectRow:  function(pRowID, pStatus) {
                    // Projecten bijhouden om te koppelen (row select)
                    $ga_proj_action_koppel[pRowID]= pStatus;
                  },
    onSelectAll:  function (pRowIDs, pStatus) {
                    // Projecten bijhouden om te koppelen (multiselect)
                    var nRowID;
                    for (var $n_index in pRowIDs) {
                      nRowID = pRowIDs[$n_index];
                      if (nRowID != undefined) {
                        $ga_proj_action_koppel[nRowID]= pStatus;
                      }
                    }
                  }
    });
  
  // Checkbox in header hiden
 // $("#cb_"+sTableID).hide();
  
  $obj_proj_grid_niet_gekoppeld = $("#" + sTableID);
}

function initGridGekoppeldeProjecten() {
  var sTableID = "table_gekoppelde_projecten";
  $("#" + sTableID).jqGrid( {
    colNames: ['id','gemeente','project'],
    colModel: [{name: 'id', index: 'id', width: 0, hidden: true},
               {name: 'gemeente', index: 'gemeente', width: 0, hidden: true},
               {name: 'project', index: 'project', width: 320}],
    subGrid: false,    
    datatype: 'local',
    rowNum: 25,
    multiselect: true,
    sortname: 'project',
    sortorder: 'asc',
    viewrecords: true,
    caption: 'Gekoppelde projecten',
    hoverrows: true,
    height: 250,
    viewsortcols: [true, 'vertical', true],
    footerrow: false,
    userDataOnFooter: false,
    onSelectRow:  function(pRowID, pStatus) {
                    // Projecten bijhouden om te ontkoppelen (row select)
                    $ga_proj_action_ontkoppel[pRowID]= pStatus;
                  },
    onSelectAll:  function (pRowIDs, pStatus) {
                    // Projecten bijhouden om te ontkoppelen (multiselect)
                    var nRowID;
                    for (var $n_index in pRowIDs) {
                      nRowID = pRowIDs[$n_index];
                      if (nRowID != undefined) {
                        $ga_proj_action_ontkoppel[nRowID]= pStatus;
                      }
                    }
                  }    
    });
  
  // Checkbox in header hiden
  //$("#cb_"+sTableID).hide();
  
  $obj_proj_grid_gekoppeld = $("#" + sTableID);
  
}

function initGridAndereProgrammas() {
  var sTableID = "table_beschikbare_programmas";
  $obj_grid_andere_prog = $("#" + sTableID); 
  
  $obj_grid_andere_prog.jqGrid( {
    colNames: ['id', "Programma", "Programma-eigenaar", "Aantal projecten"],
    colModel: [{name: 'programma_id', index: 'id', width: 0, hidden: true},
               {name: 'programma_naam', index: 'programma_naam', width: 320},
               {name: 'eigenaar_volledige_omschrijving', index: 'eigenaar', width: 320},
               {name: 'aantal_projecten', index: 'aantal_projecten', width: 150, align: 'right'}],
    subGrid: false,    
    datatype: 'local',
    rowNum: 25,
    multiselect: false,
    sortname: 'project',
    sortorder: 'asc',
    viewrecords: true,
    caption: 'Gekoppelde projecten',
    hoverrows: true,
    height: 250,
    viewsortcols: [true, 'vertical', true],
    footerrow: false,
    userDataOnFooter: false,
    onSelectRow:  function(pRowID, pStatus) {
                    // Naar programma deelname
                    var $arr_rowdata = $(this).getRowData(pRowID);
                    $("#input-progid-deelname").val($arr_rowdata.programma_id);
                    $("#form-prog-deelname").submit();
                  }
    });
  
  jqResizeTables();
  
  // Checkbox in header hiden
  $("#cb_"+sTableID).hide();
    
}

function initGridAlleGekoppeldeProjecten() {
  var sTableID = "tabel-alle-gekoppelde-projecten";   
  $obj_grid_alle_projecten = $("#" + sTableID); 
  
  $obj_grid_alle_projecten.jqGrid( {
    colNames: ['id', "Project", "Aantal programma's"],
    colModel: [{name: 'id', index: 'id', width: 0, hidden: true},
               {name: 'project_dialog', index: 'project_dialog', width: 450},
               {name: 'aantal_programmas', index: 'aantal_programmas', width: 150, align: 'right'}],
    subGrid: false,    
    datatype: 'local',
    rowNum: 1000,
    multiselect: false,
    sortname: 'project',
    sortorder: 'asc',
    viewrecords: true,
    caption: 'Gekoppelde projecten',
    hoverrows: true,
    height: (12*23) + 4,
    viewsortcols: [true, 'vertical', true],
    footerrow: false,
    userDataOnFooter: false,
    onSelectRow:  function(pRowID, pStatus) {
                    // Programma's tonen
                    getData_ProgrammaBijProject(pRowID);
                  }
    });
  
  jqResizeTables();
  
  // Checkbox in header hiden
  $("#cb_"+sTableID).hide();    
}

function programmasBijProjectCellFormatter(cellvalue, options, rowObject) {
  if (rowObject.mag_bewerken) {
    return "<a href='javascript:programmaBewerken("+rowObject.id+");'>" + cellvalue + "</a>";
  } else {
    return "<a href='javascript:customPopup(\"#message-edit-notallowed\",{title:\"Programma bewerken\"});'>" + cellvalue + "</a>";
  }
}

function programmaBewerken(programma_id) {
  $obj_maintabs.tabs("select", 0);
  setProgrammaDetails(programma_id);
}

function initGridProgrammasBijProject() {
  var sTableID = "tabel-programmas-bij-project";
  
  $obj_grid_prog_bij_proj = $("#" + sTableID); 
  
  $obj_grid_prog_bij_proj.jqGrid( {
    colNames: ['id', "Programma", "Programma-eigenaar", "Aantal projecten", "Mag bewerken"],
    colModel: [{name: 'programma_id', index: 'id', width: 0, hidden: true},
               {name: 'programma_naam', index: 'programma_naam', width: 320, formatter: programmasBijProjectCellFormatter},
               {name: 'eigenaar_volledige_omschrijving', index: 'eigenaar', width: 320},
               {name: 'aantal_projecten', index: 'aantal_projecten', width: 150, align: 'right'},
               {name: 'mag_bewerken', index: 'mag_bewerken', width: 150, align: 'right', hidden: true}],
    subGrid: false,
    datatype: 'local',
    rowNum: 1000,
    multiselect: false,
    sortname: 'project',
    sortorder: 'asc',
    viewrecords: true,
    caption: "Programma bij project",
    hoverrows: true,
    height: 165,
    viewsortcols: [true, 'vertical', true],
    footerrow: false,
    userDataOnFooter: false,
    onSelectRow:  function(pRowID, pStatus) {
                    // Naar programma deelname
//                    var $arr_rowdata = $(this).getRowData(pRowID);
//                    $("#input-progid-deelname").val($arr_rowdata.programma_id);
//                    $("#form-prog-deelname").submit();
                  }
    });
  
  jqResizeTables();
  
  // Checkbox in header hiden
  $("#cb_"+sTableID).hide();    
}

function getData_ProgrammaBijProject($pn_projid) {

  $obj_grid_prog_bij_proj.clearGridData();
  $.post(
      globalvar_siteurl + 'programma/getProgrammasBijProject',
      {
        ajax: 1,
        projid: $pn_projid
      },
      function ($p_data) {
        if ($p_data == undefined) { return; }
        if ($p_data.result == undefined) { return; }
        if ($p_data.data == undefined) { return; }
        
        if ($p_data.result == true) {
          // Resultaat inlezen
          for (var $n_index in $p_data.data) {
            $obj_data = $p_data.data[$n_index];            
            $obj_grid_prog_bij_proj.addRowData($obj_data.programma_id, $obj_data);
          }  
          $("#div-project-details").show();
          jqResizeTables();
        } else {
          $("#div-project-details").hide();
        }
        
      },
      "json"
  );
}

function getData_AndereProgrammas() {

  $obj_grid_andere_prog.clearGridData();
  $.post(
      globalvar_siteurl + 'programma/getAndereProgrammas',
      {
        ajax: 1
      },
      function ($p_data) {
        if ($p_data == undefined) { return; }
        if ($p_data.result == undefined) { return; }
        if ($p_data.data == undefined) { return; }
        
        if ($p_data.result == true) {
          // Resultaat inlezen
          for (var $n_index in $p_data.data) {
            $obj_data = $p_data.data[$n_index];            
            $obj_grid_andere_prog.addRowData($obj_data.programma_id, $obj_data);
          }
          
        }
      },
      "json"
  );
}

function getData_AlleProjecten() {

  $obj_grid_alle_projecten.clearGridData();
  $.post(
      globalvar_siteurl + 'programma/getAlleGekoppeldeProjecten',
      {
        ajax: 1
      },
      function ($p_data) {
        if ($p_data == undefined) { return; }
        if ($p_data.result == undefined) { return; }
        if ($p_data.data == undefined) { return; }
        
        if ($p_data.result == true) {
          // Resultaat inlezen
          for (var $n_index in $p_data.data) {
            $obj_data = $p_data.data[$n_index];            
            $obj_grid_alle_projecten.addRowData($obj_data.id, $obj_data);
          }
          
        }
        jqResizeTables();
      },
      "json"
  );
}



function getData_Projecten(pbAlleenNietGekoppeld) {
  
  var bAlleenNietGekoppeld = (pbAlleenNietGekoppeld == undefined ? false : true);
  var nGemeenteFilter = $("#projecten-filter-gemeente").val();
  var sProjectFilter  = getFilterValue_ProjectOms();
  
  $ga_proj_action_ontkoppel = new Array();
  $ga_proj_action_koppel    = new Array();
  
  $.post(
      globalvar_siteurl + 'programma/getProgramma_Projecten',
      {
        ajax: 1,
        pid: $gn_id,
        gemfilter: nGemeenteFilter,
        projecttekst: sProjectFilter,
        refresh_gekoppeld: (bAlleenNietGekoppeld == true ? 0 : 1)
      },
      function ($p_data) {
        
        var bDataFound = false;
        
        setProjectFilterGemeenten(nGemeenteFilter);
        if ($p_data != undefined) {
          
          if ($p_data.niet_gekoppeld != undefined) {
            bDataFound = true;
            $obj_proj_grid_niet_gekoppeld.clearGridData();
            $ga_niet_deelnemende_projecten = $p_data.niet_gekoppeld; 
            
            var $obj_data;
            for (var $n_index in $ga_niet_deelnemende_projecten) {
              $obj_data = $ga_niet_deelnemende_projecten[$n_index];
              $obj_proj_grid_niet_gekoppeld.addRowData($obj_data.id, $obj_data);
            }
          } 
          
          if ($p_data.gekoppeld != undefined) {
            bDataFound = true;
            $obj_proj_grid_gekoppeld.clearGridData();
            $ga_deelnemende_projecten = $p_data.gekoppeld; 
            
            var $obj_data;
            for (var $n_index in $ga_deelnemende_projecten) {
              $obj_data = $ga_deelnemende_projecten[$n_index];
              $obj_proj_grid_gekoppeld.addRowData($obj_data.id, $obj_data);
            }
          }
        }
        
        if ( !bDataFound ) {
          $obj_proj_grid_niet_gekoppeld.clearGridData();
          $obj_proj_grid_gekoppeld.clearGridData();
        }
        
      },
      "json"
  );

}


function doOntkoppelProject() {
  
  // Van deelnemend naar niet deelnemend
  if ($ga_proj_action_ontkoppel.length > 0) {
    for (var $n_index in $ga_proj_action_ontkoppel) {
      if ($ga_proj_action_ontkoppel[$n_index] == true) {
        // Naar gekoppelde projecten
        $obj_data = $obj_proj_grid_gekoppeld.getRowData($n_index);        
        $obj_proj_grid_niet_gekoppeld.addRowData($n_index, $obj_data);
        $obj_proj_grid_gekoppeld.delRowData($n_index);
      }
    }
    $ga_proj_action_ontkoppel = new Array();
  }

}

function doKoppelProject() {
  // Van niet deelnemend naar deelnemend
  if ($ga_proj_action_koppel.length > 0) {
    for (var $n_index in $ga_proj_action_koppel) {
      if ($ga_proj_action_koppel[$n_index] == true) {
        // Naar gekoppelde projecten
        $obj_data = $obj_proj_grid_niet_gekoppeld.getRowData($n_index);        
        $obj_proj_grid_gekoppeld.addRowData($n_index, $obj_data);
        $obj_proj_grid_niet_gekoppeld.delRowData($n_index);
      }
    }
    $ga_proj_action_koppel = new Array();
  }
  
}

function doSaveDeelnameProjecten() {
  var $arr_projecten = $obj_proj_grid_gekoppeld.getDataIDs();

  $.post(
      globalvar_siteurl + 'programma/saveProgramma_Projecten',
      {
        ajax: 1,
        pid: $gn_id,
        prj: $arr_projecten
      },
      function ($p_data) {
        if ($p_data != undefined && $p_data.result != false) {
          // Opslaan gelukt
          customAlert("Opslaan", "De gekoppelde projecten zijn opgeslagen.");
          // De geldende deelnemende projecten aanpassen
          $ga_deelnemende_projecten = $obj_proj_grid_gekoppeld.getRowData();
        } else {
          customAlert("Opslaan", "Er is een fout opgetreden bij het opslaan van de projecten.");
        }                        
        
      },
      "json"
  );

}

function setProjectFilterGemeenten(pnGemeenteFilter) {
  
  var nGemeenteFilter = (pnGemeenteFilter != undefined ? pnGemeenteFilter : -1);
  
  var $s_html = '<select class="width-200" id="projecten-filter-gemeente"><option value="-1">- Selecteer gemeente -</option>';
  
  // Filter op gemeenten bij projecten laten overeenstemmen met de deelnemende gemeenten
  var $arr_gemeenten = $ga_deelnemende_gemeenten;//$obj_gem_grid_gekoppeld.getRowData();
  
  var $obj_gemeente;
  for (var $n_index in $arr_gemeenten) {
    $obj_gemeente = $arr_gemeenten[$n_index];
    $s_html = $s_html + "<option value='"+$obj_gemeente.id+"'";
    if ($obj_gemeente.id == nGemeenteFilter) {
      $s_html = $s_html + " selected='selected' ";
    }
    $s_html = $s_html + ">"+$obj_gemeente.gemeente+"</option>";
  }
  $s_html = $s_html + '</select>';
  
  $("#div-projecten-filter-gemeente").html('');
  $($s_html).appendTo($("#div-projecten-filter-gemeente"));
    
  $("#projecten-filter-gemeente").change(function() {
    doFilterProjectOpGemeente();
  });

  //$("#div-projecten-filter-gemeente").html($s_html).nextAll();
  
}

function doFilterProjectOpGemeente() {
  var $n_gemeente_filter = $("#projecten-filter-gemeente").val();
  var bDataAanwezig = false;
  
  $obj_proj_grid_niet_gekoppeld.clearGridData();
  
  var $obj_data;
  for (var $n_index in $ga_niet_deelnemende_projecten) {
    $obj_data = $ga_niet_deelnemende_projecten[$n_index];
    //if ($n_gemeente_filter == -1 || $obj_data.gemeente == $n_gemeente_filter) {
    if ($obj_data.gemeente == $n_gemeente_filter) {
      bDataAanwezig = true;
      $obj_proj_grid_niet_gekoppeld.addRowData($obj_data.id, $obj_data);
    }
  }
  
  if ( bDataAanwezig == false ) {
    getData_Projecten(true);
  }
}

function doFilterProjectOms() {
  getData_Projecten(true);
}

function getFilterValue_ProjectOms() {
  return $("#projecten-filter-projectoms").val();
}
