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

  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 ){

	  var isPayPal = NOF_IsTargetPayPal(destForm);
	  var optionsIndex = 0;
	  
      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 && srcProp.value ) {
            if (dstName == 'actionurl') {
              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)
                    {
                    	if (isPayPal)
                    	{
                    		if (optionsIndex < 2)
                    		{
                    			if (destForm["on" + optionsIndex])
                    				destForm["on" + optionsIndex].value = dstName;
                    				
								if (destForm["os" + optionsIndex])                    				
	                      			destForm["os" + optionsIndex].value = srcProp.options[j].value;
	                      			
	                    		optionsIndex++;
                    		}
                    	}
                    	else
							NOF_setElementValue(destForm,dstName, srcProp.options[j].value);
                    }
              }
              else {
					NOF_setElementValue(destForm,dstName, srcProp.value);
              }
            }
          }
        }
      }

    NOF_StoreRPC(destForm);
    }
  }
}

function NOF_IsTargetPayPal(destForm)
{
	if (destForm.action.indexOf('paypal.com') != -1)
		return true;
	else
		return false;
}


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;
}

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();
}