<?xml version="1.0" encoding="UTF-8"?>
<dynaForm name="patterns_Parallel" id="patterns_Parallel" type="xmlform" width="100%" enableTemplate="1">
  <action type="hidden"/>
  <LANG type="private"/>
  <ROU_UID type="hidden"/>
  <PROCESS type="hidden"/>
  <TASK type="hidden"/>
  <ROU_TYPE_OLD type="hidden"/>
  <TITLE type="title" showInTable="0">
    <en><![CDATA[Parallel]]></en>
  </TITLE>
  <ROU_TYPE type="hidden"/>
  <GRID_PARALLEL_TYPE type="grid" xmlgrid="patterns/patterns_GridParallelType" addRow="1" deleteRow="1" editRow=""/>
  <BTN_CANCEL type="button" onclick="cancel();">
    <en><![CDATA[Cancel]]></en>
  </BTN_CANCEL>
  <SAVE type="button" onclick="savePattern();">
    <en><![CDATA[Save]]></en>
  </SAVE>
  <JS type="javascript"><![CDATA[
var bModified = false;
var modified  = function() {
  bModified   = true;
};
var oGrid          = object_patterns_Parallel.getElementByName('GRID_PARALLEL_TYPE');
oGrid.onaddrow     = modified;
oGrid.ondeleterow  = modified;
oGrid.setFunctions([{sFieldName: 'ROU_NEXT_TASK', sFunction: modified}]);
Pm.tmp.derivationsPanel.events.remove = function() {
  if (bModified) {
   	if(confirm(G_STRINGS.ID_SAVE_DERIVATION_RULES_BEFORE_CLOSING)){
	  		savePattern();
	  		return false;
  		}else{
  			return false;
		  }
    /*Pm.tmp.derivationsPanel.cancelClose=true;
    new leimnud.module.app.confirm().make({
      label:  G_STRINGS.ID_SAVE_DERIVATION_RULES_BEFORE_CLOSING,
      action: function() {
        Pm.tmp.derivationsPanel.cancelClose=false;
        bModified = false;
        getField('SAVE').onclick();
      }.extend(this),
      cancel: function() {
        Pm.tmp.derivationsPanel.cancelClose=false;
        bModified = false;
        Pm.tmp.derivationsPanel.remove();
      }
    });*/
    return false;
  }
  else {
    return true;
  }
};

var savePattern = function(oForm)
{ oForm=document.getElementById('patterns_Parallel');
  var oAux;
  var oType     = getField('ROU_TYPE');
  var oOldType  = getField('ROU_TYPE_OLD');
  var i         = 1;
  var aData     = {};
  var bContinue = true;
  if (oType.value != oOldType.value)
  {
    if (!confirm('You are changing the pattern, are you sure?'))
    {
      return false;
    }
  }
  switch (oType.value)
  {
    case 'SELECT':
      var aAux = [];
      while (oAux = document.getElementById('form[GRID_SELECT_TYPE][' + i + '][ROU_NEXT_TASK]'))
      {
        if (!aAux.inArray(oAux.value))
        {
          aAux.push(oAux.value);
        }
        else
        {
          bContinue = false;
        }
        i++;
      }
    break;
    case 'EVALUATE':
      var aAux = [];
      while (oAux = document.getElementById('form[GRID_EVALUATE_TYPE][' + i + '][ROU_NEXT_TASK]'))
      {
        if (!aAux.inArray(oAux.value))
        {
          aAux.push(oAux.value);
        }
        else
        {
          bContinue = false;
        }
        i++;
      }
    break;
    case 'PARALLEL':
      var aAux = [];
      while (oAux = document.getElementById('form[GRID_PARALLEL_TYPE][' + i + '][ROU_NEXT_TASK]'))
      {
        if (!aAux.inArray(oAux.value))
        {
          aAux.push(oAux.value);
        }
        else
        {
          bContinue = false;
        }
        i++;
      }
    break;
    case 'PARALLEL-BY-EVALUATION':
      var aAux = [];
      while (oAux = document.getElementById('form[GRID_PARALLEL_EVALUATION_TYPE][' + i + '][ROU_NEXT_TASK]'))
      {
        if (!aAux.inArray(oAux.value))
        {
          aAux.push(oAux.value);
        }
        else
        {
          bContinue = false;
        }
        i++;
      }
    break;
  }
  if (!bContinue)
  {
    alert('You cannot select to the same task several times!');
    return bContinue;
  }
  i             = 1;
  aData.tas_uid = getField('TASK').value;
  aData.data    = [];
  switch (oType.value)
  {
    case 'SEQUENTIAL':
      aData.type = 0;
      aData.data.push(getField('ROU_NEXT_TASK').value);
    break;
    case 'SELECT':
      aData.type = 1;
      while (oAux = document.getElementById('form[GRID_SELECT_TYPE][' + i + '][ROU_NEXT_TASK]'))
      {
        aData.data.push(oAux.value);
        i++;
      }

    break;
    case 'EVALUATE':
      aData.type = 2;
      while (oAux = document.getElementById('form[GRID_EVALUATE_TYPE][' + i + '][ROU_NEXT_TASK]'))
      {
        aData.data.push(oAux.value);
        i++;
      }
    break;
    case 'PARALLEL':
      aData.type = 3;
      while (oAux = document.getElementById('form[GRID_PARALLEL_TYPE][' + i + '][ROU_NEXT_TASK]'))
      {
        aData.data.push(oAux.value);
        i++;
      }
    break;
    case 'PARALLEL-BY-EVALUATION':
      aData.type = 4;
      while (oAux = document.getElementById('form[GRID_PARALLEL_EVALUATION_TYPE][' + i + '][ROU_NEXT_TASK]'))
      {
        aData.data.push(oAux.value);
        i++;
      }
    break;
    case 'SEC-JOIN':
      aData.type = 5;
      aData.data.push(getField('ROU_NEXT_TASK').value);
    break;
  }
  Pm.data.build.derivation(aData);
  ajax_post(oForm.action, oForm, 'POST');
  bModified = false;
  Pm.tmp.derivationsPanel.remove();
};

function cancel(){
    Pm.tmp.derivationsPanel.remove();
}

]]></JS>
</dynaForm>
