var RMI_ITEM_DYNAMIC = 1;
var RMI_HAS_DYNAMIC_SUBITEM = 2;
var RMI_ITEM_CHECKED = 4;
var RMI_ITEM_TERMINAL = 16;
var RMI_ITEM_DISABLED = 32;
var RMI_ITEM_DEFAULT = 64;

var DEF_TRUE = 1;
var DEF_FALSE = 0;
var DEF_MENUAX_CLSID = '111433C4-3447-462E-99D0-D40328345C18';

// reserved nMenu
var DEF_ITEMNO_SETINPUTTOID = 1;
var DEF_ITEMNO_SETAENV = 2;
var DEF_ITEMNO_SAYPOPUP = 1000; // reserved for saypopup 1000~1999
// insert here your reserved (common) nMenu

var isLoadedSayAxMenu = false;
var handleSubMenuItemRequest;
var handleMenuItemUI;
var arrHandleMenuItemSelected = new Array();

// set default function pointer
arrHandleMenuItemSelected["SetInputToid"] = HandleSetInputToid;
arrHandleMenuItemSelected["SetInputToChar"] = HandleSetInputToChar;
arrHandleMenuItemSelected["SetInputToFriend"] = HandleSetInputToFriend;
arrHandleMenuItemSelected["SetAenv"] = HandleSetAenv;
arrHandleMenuItemSelected["execSayMenu"] = HandleExecSayMenu;


///// JavaScript --> SayPopupAx /////
//short RegisterMenuItem(nMenu, nDisplayOrder, strText, nFlag, nParentMenuItem)
function RegisterMenuItem(nMenu, nDisplayOrder, strText, nFlag, nParentMenuItem, strUserText)
{
  LoadSayPopupAx();
  return ID_SAYPOPUPAX.RegisterMenuItem(nMenu, nDisplayOrder, strText, nFlag, nParentMenuItem, strUserText);
}

//short SetMenuItemUI(nMenuItem, strText, bEnable, bCheck, bUseDefaultText, bIsDefault)
function SetMenuItemUI(nMenuItem, strText, bEnable, bCheck, bUseDefaultText, bIsDefault)
{
  LoadSayPopupAx();
  return ID_SAYPOPUPAX.SetMenuItemUI(nMenuItem, strText, bEnable, bCheck, bUseDefaultText, bIsDefault);
}

//short DeleteMenuItem(nMenuItem)
function DeleteMenuItem(nMenuItem)
{
  LoadSayPopupAx();
  return ID_SAYPOPUPAX.DeleteMenuItem(nMenuItem);
}

//short GetMenuItemOrder(nMenuItem)
function GetMenuItemOrder(nMenuItem)
{
  LoadSayPopupAx();
  return ID_SAYPOPUPAX.GetMenuItemOrder(nMenuItem);
}

//short GetIMenuItemLevel(nMenuItem)
function GetIMenuItemLevel(nMenuItem)
{
  LoadSayPopupAx();
  return ID_SAYPOPUPAX.GetIMenuItemLevel(nMenuItem);
}

//string GetIMenuItemText(nMenuItem)
function GetIMenuItemText(nMenuItem)
{
  LoadSayPopupAx();
  return ID_SAYPOPUPAX.GetIMenuItemText(nMenuItem)
}

//string GetMenuItemUserText(nMenuItem)
function GetMenuItemUserText(nMenuItem)
{
  LoadSayPopupAx();
  return ID_SAYPOPUPAX.GetMenuItemUserText(nMenuItem)
}

//void SetMenuItemUserText(nMenuItem, strUserText)
function SetMenuItemUserText(nMenuItem, strUserText)
{
  LoadSayPopupAx();
  return ID_SAYPOPUPAX.SetMenuItemUserText(nMenuItem, strUserText)
}

//short GetParentMenuItem (nMenuItem)
function GetParentMenuItem(nMenuItem)
{
  LoadSayPopupAx();
  return ID_SAYPOPUPAX.GetParentMenuItem(nMenuItem);
}

//short GetRootMenuItem (nMenuItem)
function GetRootMenuItem(nMenuItem)
{
  LoadSayPopupAx();
  return ID_SAYPOPUPAX.GetRootMenuItem(nMenuItem);
}

function ShowSayAxMenu(nMenuItem)
{
  LoadSayPopupAx();
  ID_SAYPOPUPAX.ShowMenu(nMenuItem);
}

///// SayPopupAx --> JavaScript /////
function OnMenuItemSelected(nMenuItem)
{
  var strData = GetMenuItemUserText(nMenuItem);
  var args = strData.split(/:/);
  var type = args[0];
  var param = '';
  if( strData.indexOf(':') > 0 )
    param = strData.substring(strData.indexOf(':')+1);

  if( arrHandleMenuItemSelected[type] )
  {
    arrHandleMenuItemSelected[type](nMenuItem, param);
  }
}
function OnSubMenuItemRequest(nParentMenuItem)
{
  if( handleSubMenuItemRequest )
  {
    handleSubMenuItemRequest(nParentMenuItem);
  }
}
function OnMenuItemUI(nMenuItem)
{
  if( handleMenuItemUI )
  {
    handleMenuItemUI(nMenuItem);
  }
}

///// common function /////
function LoadSayPopupAx()
{
  if( isLoadedSayAxMenu == true )
    return;

  if( "object" ==  typeof(eval("document.all.ID_SAYPOPUPAX")) )
  {
    isLoadedSayAxMenu = true;
    return;
  }
  else
  {
    document.body.insertAdjacentHTML("beforeEnd", "<OBJECT ID=ID_SAYPOPUPAX CLASSID=\"clsid:"+DEF_MENUAX_CLSID+"\" width=0 height=0 style='display:none'></OBJECT>");
  }
}

function ShowSayAxMenuXP2(nMenuItem, daction, moduleID, isPopup)
{
  if( isOverXPSP2() )
  {
    var clsid = DEF_MENUAX_CLSID;
    if(!daction || 'undefined' == typeof(daction))
        var daction = new Array();
    if(!isPopup || 'undefined' == typeof(isPopup))
        var isPopup = 0;
    if(!moduleID || 'undefined' == typeof(moduleID))
        var moduleID = '';
    var sayaxredirect = 'tredirect';
    if('undefined' != typeof(daction['sayax']))
        sayaxredirect = daction['sayax'];

   var objaxinfo = new ClsAxInfo();
   objaxinfo.addInfoWithClsid(clsid);
   if( SayAxUsingConfirm(objaxinfo, daction, moduleID, isPopup) != 1 )
     return;
  }

  try {
    ShowSayAxMenu(nMenuItem);
  }
  catch(Exception){
    // no action
  }
}

///// Handler /////
function HandleSetInputToid(nMenuId, param)
{
  var args;
  var usrid = '';
  var enableMultiId = false;
  var inputname = 'fo.toid';
  var inputobj;

  if( param.indexOf(',') > 0 )
  {
    args = param.split(/,/);
    usrid = args[0];

    if( args[1] == '1' )
      enableMultiId = true;

    if( args.length > 2 )
      inputname = args[2];
  }
  else
  {
    usrid = param;
  }

  inputobj = eval(inputname);

  if( enableMultiId )
  {
    if( inputobj.value.length > 0 )
      inputobj.value += ","+usrid;
    else
      inputobj.value = usrid;
  }
  else
  {
    inputobj.value = usrid;
  }

  if( typeof(eval("document.fo")) != 'undefined' && typeof(eval("document.fo.toMsrl")) != 'undefined' ) // for memo
    document.fo.toMsrl.value = "";
}

///// Handler /////
function HandleSetInputToChar(nMenuId, param)
{
  var args;
  var charnick = '';
  var enableMultiId = false;
  var dpname;
  var tag;
  if( param.indexOf(',') > 0 )
  {
    args = param.split(/,/);
    tag = args[0].split(/=/);
    if( typeof( document.all[tag[0]] ) == "object" ) document.all[tag[0]].value = tag[1];
    var bisConfirm = window.showModalDialog(
      "http://pmang.sayclub.com/pmangpub_check_user.nwz?ssn="+document.MAIN_FORM.ssn.value+"&targetid="+document.all.id.value+"&charge_id="+document.all.saleinfo_id.value,
      "", "dialogWidth:450px; dialogHeight:375px; edge:sunken; center:yes; resizable:no; status:no; help:no; scroll:no;"
    );
    if( bisConfirm && args.length > 2 )
    {
      for( var i=1; i<args.length; i++ )
      {
        tag = args[i].split(/=/);
        if( typeof( document.all[tag[0]] ) == "object" ) document.all[tag[0]].value = tag[1];
      }
    }
    else
    {
      if( typeof( document.all["tochar"] ) == "object" ) document.all["tochar"].value = "";
      resetwgifttarget();
    }
  }
}

function HandleSetInputToFriend(nMenuId, param)
{
  pub_shop.selectFriend( nMenuId, param );
}

var curChkMenuId = -1; // please set default
function HandleSetAenv(nMenuId, args)
{
  if( 'undefined' != typeof(change_aenv_by_ax) )
  {
    if( change_aenv_by_ax(args) )
    {
      if( curChkMenuId > 0 )
        SetMenuItemUI(curChkMenuId, '', DEF_TRUE, DEF_FALSE, DEF_TRUE, DEF_FALSE); // old checked menu

      curChkMenuId = nMenuId;// memorize checked MenuId

      SetMenuItemUI(nMenuId, '', DEF_TRUE, DEF_TRUE, DEF_TRUE, DEF_FALSE); // new check
    }
  }
}

function HandleExecSayMenu(nMenuId, args)
{
//alert(args); // DEBUG
  if( strSayPopupParam ) // in sp_menu_ax
  {
    if( args && args.indexOf("|") > 0 )
    {
      var arrTmpData = args.split("|");
      execSayMenu(arrTmpData[0], strSayPopupParam+""+args.substring(args.indexOf("|")+1));
    }
    else
    {
      execSayMenu(args, strSayPopupParam);
    }
  }
}


