// User script file

var SMSTimeout = null;
function checkFieldLength(id) {
  clearTimeout(SMSTimeout);
  SMSTimeout = setTimeout(function() {
    var obj = getObjectById(id);
    if (!obj || !obj.value) return;
    var valueLength = obj.value.length;
    if (valueLength > obj.getAttribute('maxlength'))
      ChangeClass(obj, 'clFlatTextInputError');
    else
      ChangeClass(obj, 'clFlatTextInput');
    SetContent(id+'_SIZE', parseInt(valueLength));
  }, 200);
}

function SaveAndRedirect(Action) {
  SetField('MainForm', 'NextAction', Action);
  SubmitForm('MainForm');
}

function RemoveCCOM(obj) {
  var id = obj.id.substring(0, obj.id.indexOf('.'))
  SetField('MainForm', id+'.CCOM_ENABLED', '0');
  Hide(id);
  return false;
}

function AppendCCOM(e, id, Type) {
  var row;
  var obj;
  var prefix;
  CancelEvent(e);
  if (!Counts[Type])
    return false;
  obj = getObjectById(id);
  if (!obj)
    return false;
  Counts[Type] = parseInt(Counts[Type])+1;
  prefix = Type+'['+Counts[Type]+']';

  row = obj.cloneNode(true);
  row.id = prefix;
  replaceIDs(row, id, prefix);
  row = row.cloneNode(true);
  insertBefore(obj, row);
  
  SetField('MainForm', id+'.CCOM_VALUE', '');
  SetField('MainForm', id+'.CCOM_INFO', '');
  Show(prefix+'.RemoveCCOM');
  Hide(prefix+'.AppendCCOM');
  return false;
}

function insertBefore(obj, src) {
  if (obj && obj.parentNode && src)
    obj.parentNode.insertBefore(src, obj);
}

function replaceIDs(src, id, prefix) {
  var re = new RegExp(protectRegExp(id), 'gi');
  var attributes = ['id', 'name'];
  (function(obj) {
    for (var i = 0; i < obj.childNodes.length; i++)
    {
      var child = obj.childNodes[i];
      if (child.nodeType != 1)
        continue;
      for (var j = 0; j < attributes.length; j++)
      {
        var name = attributes[j];
        if (child[name])
        {
          if (name == 'id')
            child.id = child.id.replace(re, prefix);
          else if (name == 'name' || name == 'value' || re.test(child[name]))
            child.setAttribute(name, String(child[name]).replace(re, prefix));
        }
      }
      arguments.callee(child);
    }
  })(src);
}

function handleSearchKeyPress(e, dest) {
  var keyCode = GetEventKeyCode(e);
  if (keyCode != 13) return true;
  CancelEvent(e);
  return doSearch(dest);
}

function doSearch(dest) {
  var obj = getObjectById('SearchField');
  if (!obj || obj.value === null) return false;
  SetField('MainForm', 'FTS_Restriction', obj.value);
  SetField('MainForm', 'XMLC_PartialID', dest);
  SubmitForm('MainForm', 'TARGET', 'XMLC_PartialFrame', 'PARTIAL', '1', 'RESTORE');
  SetField('MainForm', 'XMLC_PartialID', '');
}
