
  var AGP_GUI_gridLastHoverItem = null;
  var AGP_GUI_gridInceaseAmmountOfGrids = 0;

  $(document).ready(function() {
	  
	  $(".multiSelectEvent").bind("click", function(event){
		  
		  var grid = $(this).parents(".AGP_GUI_grid");
		  var gridId = grid.attr("id").replace("AGP_GUI_grid","")
		  clickMultiSlect(event, $(this), gridId);
	  });
	  
  });

  function AGP_GUI_grid_highliteTD(tr,gridId)
  {
    if (!ContextPopup.isOpen)
    {
      if (AGP_GUI_gridLastHoverItem == null)
          AGP_GUI_gridLastHoverItem = new Array(AGP_GUI_gridInceaseAmmountOfGrids);
      if (AGP_GUI_gridLastHoverItem[gridId-1] != null)
    	  $(AGP_GUI_gridLastHoverItem[gridId-1]).toggleClass("highlite", false );
    	  
    	  //AGP_GUI_gridLastHoverItem[gridId-1].className = AGP_RemoveValueFromClassName(AGP_GUI_gridLastHoverItem[gridId-1].className,"highlite");
      //tr.className = AGP_addValueToClassName(tr.className,"highlite");
      $(tr).toggleClass("highlite");
      AGP_GUI_gridLastHoverItem[gridId-1] = tr;
    }
  }



  function AGP_GUI_grid_InceaseAmmountOfGrids()
  {
      AGP_GUI_gridInceaseAmmountOfGrids++;

  }

  var selectedRows = new Array();

  var startSelection = 0;
  var endSelection = 1;
  var rows = 2;


  function initMultiSlect(gridId)
  {
      if (selectedRows[gridId] == null)
      {
          selectedRows[gridId] =new Array(3);
          selectedRows[gridId][startSelection] = null;
          selectedRows[gridId][endSelection] = null;
          selectedRows[gridId][rows] = new Array();
      }
  }


  function clearMultiSlect(gridId)
  {
		if (selectedRows[gridId] != null)
		{
			if (selectedRows[gridId][rows] != null)
			{
		    for (i=0;i<selectedRows[gridId][rows].length;i++)
		    {
		      row = selectedRows[gridId][rows][i];
		      $(row).toggleClass("multiselect", false);
		      //row.className = AGP_RemoveValueFromClassName(row.className,"multiselect");
		    }
		    while (selectedRows[gridId][rows].length != 0)
		    {
		      selectedRows[gridId][rows].pop();
			}
	  	}
		}
  }
  
  Array.prototype.remove = function(from, to) 
  {
		var rest = this.slice((to || from) + 1 || this.length);
  	this.length = from < 0 ? this.length + from : from;
  	return this.push.apply(this, rest);
	};

  function addOrRemoveMultiSlect(tr,gridId)
  {
		if (selectedRows[gridId] != null)
		{
			if (selectedRows[gridId][rows] != null)
			{
		    for (i=0;i<selectedRows[gridId][rows].length;i++)
		    {
		      row = selectedRows[gridId][rows][i];
		      if (row == tr)
		      {
		    	row.toggleClass("multiselect", false);
		    	//row.className = AGP_RemoveValueFromClassName(row.className,"multiselect");
		        selectedRows[gridId][rows].remove(i);
		        return;
		      }
		    }
		    addToMultiSlect(tr,gridId);
			}
		}
  }
  
  function addToMultiSlect(tr,gridId)
  {
		if (selectedRows[gridId] != null)
		{
			if (selectedRows[gridId][rows] != null)
			{
		    selectedRows[gridId][rows][selectedRows[gridId][rows].length]=tr;
		    $(tr).toggleClass("multiselect");
		    //alert(tr);
		    //tr.className = AGP_addValueToClassName(tr.className,"multiselect");
		 	}
		}
  }

  function selectRowsForShiftSelection(gridId)
  {
     indexStart = $(selectedRows[gridId][startSelection]).attr("rowIndex");
     indexEnd = $(selectedRows[gridId][endSelection]).attr("rowIndex");

     if (indexEnd<indexStart)
     {
        tmp = indexStart;
        indexStart = indexEnd;
        indexEnd = tmp;
     }
     
     var rows = $(selectedRows[gridId][startSelection]).parent().children(".tdata").toArray();
    // alert("Select from "+indexStart+":"+indexEnd);
     for (i=indexStart;i<=indexEnd;i++)
     {
    	 addToMultiSlect(rows[i-1],gridId);
     }
  }

	var StringSelectionIds = "";
	var userCallBackFunction;
	var iCallbackGridId;
	function askUserConfirmAndPassDataToCallback(gridId,message,mUserCallBackFunction)
	{
     gridId--
     iCallbackGridId = gridId;
     userCallBackFunction = mUserCallBackFunction;
		 bIsEmpty = true;
     StringSelectionIds = "-1";
     if (selectedRows[gridId] != null)
		 {
			if (selectedRows[gridId][rows] != null)
			{
				if (selectedRows[gridId][rows].length != 0)
				{
       		bIsEmpty = false;

	      	for (i=0;i<selectedRows[gridId][rows].length;i++)
			    {
			      row = selectedRows[gridId][rows][i];
			      if ($(row).attr("number")!= null)
		          StringSelectionIds = StringSelectionIds+","+$(row).attr("number");
			    }
			    AGP_confirmBackToJs(message,ConfirmCallback);
				}
			}
		}
		if (bIsEmpty)
			alert("Selectie is leeg");
	}

	function ConfirmCallback(booleanOK)
	{
		userCallBackFunction(booleanOK,StringSelectionIds,iCallbackGridId);
	}

  function clickMultiSlect(e, tr ,gridId)
  {
	  
	if (!e) var e = window.event;
   
	gridId--;
    if (selectedRows[gridId] == null)
      initMultiSlect(gridId);

    if (e.ctrlKey==1)
    {
      if (selectedRows[gridId][startSelection] != null)
      {
        clearMultiSlect(gridId);
        selectedRows[gridId][startSelection] = null;
        selectedRows[gridId][endSelection] = null;
      }
      addOrRemoveMultiSlect(tr,gridId);
    }
    else if (e.shiftKey==1)
    {
      if (selectedRows[gridId][startSelection] == null)
      {
    	clearMultiSlect(gridId);
        selectedRows[gridId][startSelection] = tr;
        selectedRows[gridId][endSelection] = tr;
      }
      else
      {
        selectedRows[gridId][endSelection] = tr;
        clearMultiSlect(gridId);
      }
      selectRowsForShiftSelection(gridId);
    }
    else
    {
      clearMultiSlect(gridId);
      selectedRows[gridId][startSelection] = null;
      selectedRows[gridId][endSelection] = null;
    }
  }



