function NOF_ECM_OnStoreAction( destFormName, srcFormName, action ){
  //determine the action requested and set the destForm
  var destForm      = null;
  var varsPrefix    = null;

  NOF_SubmitHandler_OnInit(destFormName, srcFormName, action);
    
  if ( action == "AddToCart"){
    destForm      = document.forms[destFormName];
    varsPrefix    = "ADDTOC_";
  }else if ( action == "Buy"){
    destForm = document.forms[destFormName];
    varsPrefix    = "BUY_";
  }else if ( action == "ViewCart"){
    destForm = document.forms[destFormName];
    if (destForm != null )
      NOF_StoreRPC(destForm);
    return;
  }else if ( action == "Checkout"){
    destForm = document.forms[destFormName];
    if (destForm != null )
      NOF_StoreRPC(destForm);
    return;
  }else{
    return;
  }

  if ( ( typeof destForm == 'object' ) && destForm != null ) {
    var srcForm = this.document.forms[srcFormName];

    if ( ( typeof srcForm == 'object' ) && srcForm != null ){

      for (i=0; i<destForm.elements.length; i++)
        destForm.elements[i].value = "";

      for (i=0; i<srcForm.elements.length; i++){
        var srcName = srcForm.elements[i].name;
        var dstName = NOF_getDstName(srcName, varsPrefix);
        if (dstName != null) {
          var srcProp = srcForm.elements[i];

          if ( ( typeof srcProp == 'object' ) && srcProp != null ) {
            if (dstName == 'actionurl') {
              if (srcProp.value) {
                destForm.action = srcProp.value;
                destForm[dstName].value = "";
              }
            } else {
              var elementType = NOF_getElementType(srcProp);
              if (elementType.indexOf('select',0) == 0) {
                if (srcProp.options && srcProp.options.length > 0)
                  for (var j=0;j<srcProp.options.length;j++) {
                    if (srcProp.options[j].selected == true) {
                      NOF_OptionsHandler_OnSetValue(destForm,dstName, srcName, srcProp.options[j].value);
                    }
                  }
              } else {
                if (srcProp.value) {
                  NOF_setElementValue(destForm,dstName, srcProp.value);
                }
              }
            }
          }
        }
      }
      NOF_SubmitHandler_OnFinalize(destForm, srcForm);
    NOF_StoreRPC(destForm);
    }
  }
}

function NOF_StoreRPC( destForm )
{
  var wnd =  null;
  if (destForm.target != null && destForm.target.length > 0)
    wnd = window.open('', destForm.target, 'width=655,height=524,location=1,menubar=0,resizable=1,scrollbars=1,status=1,toolbar=0');
  destForm.submit();
  if (wnd)
    wnd.focus();
}

function NOF_getDstName (srcName, varsPrefix) {
  var prefix = "";
  if (srcName.indexOf (varsPrefix) == 0) {
    prefix = varsPrefix;
  } else if (srcName.indexOf ("SHARED_") == 0) {
    prefix = "SHARED_";
  } else if (srcName.indexOf("BUY_") == 0 || srcName.indexOf("ADDTOC_") == 0 || 
           srcName.indexOf("VIEW_") == 0 || srcName.indexOf("CHECKOUT_") == 0) {
    return null;
  }
  
  return srcName.substr(prefix.length);
}

function NOF_setElementValue (form, elementName, value)
{
  for (var i=0; i<form.elements.length; i++) {
    if ( form.elements[i].name == elementName ) {
      form.elements[i].value = value;
      break;
    }
  }
}

function NOF_getElementType (element) {
  if (element != null) {
    var elementType = element.type;
    if (elementType != null) {
      elementType = elementType.toLowerCase();
    } else {
      if (element.length > 0) {
        elementType = element[0].type;
      }
      if (elementType == null) {
        elementType = element.nodeName;
      }
    }
  } else {
    elementType = null;
  }
  
  return elementType.toLowerCase();
}  

//F onInit
function NOF_SubmitHandler_OnInit(destFormName, srcFormName, action)
{
  if (typeof(TP_NOF_SubmitHandler_OnInit) == 'function')
    TP_NOF_SubmitHandler_OnInit( destFormName, srcFormName, action);
}

//F OnSetValue
function NOF_OptionsHandler_OnSetValue(destForm,dstName, name, value)
{
  if (typeof(TP_NOF_OptionsHandler_OnSetValue) == 'function')
    TP_NOF_OptionsHandler_OnSetValue( destForm,dstName, name, value);
  else  
    NOF_setElementValue(destForm,dstName, value);  
}
function NOF_SubmitHandler_OnFinalize(destForm, srcForm)
{
  if (typeof(TP_NOF_SubmitHandler_OnFinalize) == 'function')
    TP_NOF_SubmitHandler_OnFinalize(destForm, srcForm);

}
