// Copyright (C) 2007 Alan Ardzinov, Saint-Petersburg, Russia 
// http://www.terchy.com, ardalan@mail.ru, ICQ 56320602

/*
function GetParentLayerId(sLayerId)
function PopUp_ConfirmOperation(event, sQuestion, sObjTypeID, sObjID)
function Popup_DontHide_Add(sPopUpID)
function Popup_DontHide_Remove(sPopUpID)
function PopUp_GetObjectName(sPrefix, i)
function Popup_GetParentLayerCoors(sPopupId)
function PopUp_Hide(event, oObject, sFormName)
function PopUp_HideNew(sObjectID, sFormName, evt)
function PopUp_InsertValue(sListBoxMenuID, sListBoxMenuFormName)
function PopUp_LayerAdd(sPopupId, sParentPopupId)
function PopUp_LayerDelete(sLayerToDelete)
function PopUp_ListBox_Show(sHiddenName, sEboxName, sListBoxMenuID, sListBoxID)
function PopUp_Show(sPopupId, evt, sParentPopupId, iShiftLeft, iShiftTop )
function PopUp_ShowObjectMenu(i, sMenuID, sObjectNameID, event, sObjectName)

*/

var sPOPUP_DONOTCHANGECOORS = "sPOPUP_DONOTCHANGECOORS";
var sPOPUP_EVENTSTOSHOW     = "sPOPUP_EVENTSTOSHOW";

var gsEboxName;
var gsHiddenName;
var giEboxIndex;

var oListBoxMenu;
var oListBox;

var aPopup_Layers;
var aPopup_LayersParent;
var iPopup_PrevX = 0;
var iPopup_PrevY = 0;
var sPopup_ParentPopupId = "";
var aPopup_FormsToHideSelects;
var aPopup_PopUpsProtectedFromHiding;
var iPopup_X = 0;
var iPopup_Y = 0;

//--------------------------------------------------------------

function Popup_DontHide_Add(sPopUpID)
{
  aPopup_PopUpsProtectedFromHiding = arr_AddNewValue (aPopup_PopUpsProtectedFromHiding, sPopUpID);
}

//--------------------------------------------------------------

function Popup_DontHide_Remove(sPopUpID)
{
  aPopup_PopUpsProtectedFromHiding = arr_RemoveValue (aPopup_PopUpsProtectedFromHiding, sPopUpID);
}

//--------------------------------------------------------------

function GetParentLayerId(sLayerId)
{
  if (typeof(aPopup_Layers) != "object") 
  {
    return "";
  }
  
  if (aPopup_Layers.length == 0)
  {
    return "";
  }

  for (i=0;i<aPopup_Layers.length;i++)
  {
    if (aPopup_Layers[i] == sLayerId) {return aPopup_LayersParent[i];}
  }
  return "";
}
//--------------------------------------------------------------

function Popup_GetParentLayerCoors(sPopupId)
{
  iPopup_PrevX = 0;
  iPopup_PrevY = 0;

//  sParentPopupId = s_Init(sParentPopupId, "");

  sParentPopupId = GetParentLayerId(sPopupId);


  if (sParentPopupId == "") {return;}

  var oPrevMenu = document.getElementById(sParentPopupId);


  if (!oPrevMenu) {return;}
  
  iPopup_PrevX = htm_RemovePx(oPrevMenu.style.left); 
  iPopup_PrevY = htm_RemovePx(oPrevMenu.style.top);

  if (sPopupId == "ProfileSubMenu") 
  {
//    alert(iPopup_PrevY);
  }
  
}

//--------------------------------------------------------------

function PopUp_LayerAdd(sPopupId, sParentPopupId)
{
  if (typeof(aPopup_Layers) != "object") 
  {
    aPopup_Layers = new Array();
  }
  if (typeof(aPopup_LayersParent) != "object") 
  {
    aPopup_LayersParent = new Array();
  }
  
  if (aPopup_Layers.length > 0)
  {
    for (i=0;i<aPopup_Layers.length;i++)
    {
      if (aPopup_Layers[i] == sPopupId) {return;}
    }
  }
    
  aPopup_Layers[aPopup_Layers.length] = sPopupId;
  aPopup_LayersParent[aPopup_LayersParent.length] = sParentPopupId;
  
}


//--------------------------------------------------------------

function PopUp_LayerDelete(sLayerToDelete)
{
  if (typeof(aPopup_Layers) != "object") 
  {
    return;
  }
    
  if (aPopup_Layers.length == 0) { return; }

  if (sLayerToDelete != aPopup_Layers[aPopup_Layers.length - 1]) {return;}

//  if (PopUp_IsMouseOverLayer(sLastLayerId)) {return;}
//alert("sLayerToDelete="+sLayerToDelete);
  var aArray;
  aArray = aPopup_Layers.slice(0, -1);
  aPopup_Layers = aArray;
}

//-----------------------------------------------------------

function PopUp_Show(sPopupId, evt, sParentPopupId, iShiftLeft, iShiftTop )
{
  evt = (typeof(evt) == sJS_TYPE_UNDEF) ? js_GetEvent() : evt;
  iShiftLeft = s_Init(iShiftLeft, - 50);
  iShiftTop = s_Init(iShiftTop, - 50);

  bChangeCoors = !s_GetPrefix(sPopupId, sPOPUP_DONOTCHANGECOORS);
//  alert(sPopupId + "  " + bChangeCoors);
  sPopupId = s_CutPrefix(sPopupId, sPOPUP_DONOTCHANGECOORS);
  
  var oPopup = htm_GetElById(sPopupId);
  if (!oPopup) 
  {
    alert("Cant find popup: " + sPopupId);
    return;
  }
  
//  PopUp_LayerDelete(sPopupId);
  
  
  if (oPopup.style.display  == "block" && !bChangeCoors) 
  {
    return;  
  }
  
  sParentPopupId = s_Init(sParentPopupId, "");
  
//  coo_Create("ParentLayer", sParentPopupId, 200); 
  
  PopUp_LayerAdd(sPopupId, sParentPopupId);

  if (sParentPopupId == "")
  {
    iPopup_PrevX = 0;
    iPopup_PrevY = 0;
  }
  else
  {
    Popup_GetParentLayerCoors(sPopupId);
  }
 
//if (sPopupId == "LoginFormPopup") {alert(bChangeCoors);}

  if (bChangeCoors) 
  {

//if (sPopupId == "LoginFormPopup") {alert(js_IsEvent(evt));}

    if (js_IsEvent(evt)) 
    {

      if (js_GetBrowser() == js_iBROWSER_NN) 
      {
        //FireFox
        oPopup.style.left     = evt.pageX + iShiftLeft;// + document.body.scrollLeft;// - iPopup_PrevX;
        oPopup.style.top      = evt.pageY + iShiftTop;// + document.body.scrollTop;// - iPopup_PrevY;
      }
      else
      {
        oPopup.style.left     = evt.x + iShiftLeft + document.body.scrollLeft;// - iPopup_PrevX;
        oPopup.style.top      = evt.y + iShiftTop + document.body.scrollTop;// - iPopup_PrevY;
      }
    }
    else
    {
      if (js_GetBrowser() == js_iBROWSER_NN) 
      {
        //FireFox
        oPopup.style.left     = iJS_X;// + document.body.scrollLeft;// - iPopup_PrevX;
        oPopup.style.top      = iJS_Y;// + document.body.scrollTop;// - iPopup_PrevY;
      }
      else
      {
        oPopup.style.left     = iJS_X + document.body.scrollLeft;// - iPopup_PrevX;
        oPopup.style.top      = iJS_Y + document.body.scrollTop;// - iPopup_PrevY;
      }
    }
    
    
  }
  
  htm_HideAllSelects();

  oPopup.style.display  = "block";

}

//-----------------------------------------------------------

function PopUp_HideNew(sObjectID, evt)
{
  if (sObjectID == move_sID) {return;}
  evt = (typeof(evt) == sJS_TYPE_UNDEF) ? js_GetEvent() : evt;
  
  oObject = htm_GetElById(sObjectID);
  if (!oObject) {return;}
  if (typeof (oObject) != "object" ) {return;}
  if (oObject.style.display == "none") {return;}

  if (arr_ValueExists(aPopup_PopUpsProtectedFromHiding, sObjectID)) {return;}

  oObject.style.display = "none";


  if (typeof(evt) == sJS_TYPE_OBJ && evt != null) 
    {evt.cancelBubble = true;}

  
}

//-----------------------------------------------------------

function PopUp_Hide(event, oObject)
{
  if (typeof (oObject) != "object" ) {return;}
  oObject.style.display = "none";
//  PopUp_LayerDelete();
}

//-----------------------------------------------------------

function PopUp_ListBox_Show(sHiddenName, sEboxName, sListBoxMenuID, sListBoxID)
{
  oEvent = js_GetEvent();
  oButton = oEvent.srcElement;
//  if (s_InStr("<#Settings_@sPOPUPEVENTSLABEL#>", event.type) <= 0) {return false;}

  oListBoxMenu = document.getElementById(sListBoxMenuID);
  if (!oListBoxMenu) {return false;}

  oListBox = document.getElementById(sListBoxID);
  if (!oListBox) {return false;}
  
  
  iIndex = htm_GetThisElementIndexInArray_ByName(oButton);

  var oEBox = document.getElementsByName(sEboxName)[iIndex];
  if (!oEBox) {return false;}

  ohtmClearEbox = oEBox;

  var oHidden = document.getElementsByName(sHiddenName)[iIndex];
  var sListBoxSelectedIndex;
  
  if (typeof(oListBox.selectedIndex) != "undefined" && oListBox.selectedIndex >= 0)
  {
    sText = htm_Select_GetText(oListBox.name);
    sValue = htm_Select_GetValue(oListBox.name);
    
    if (sValue == "") {sText = "";}

    if (oEBox.value == "" && sText != "")
    {
      oEBox.value = sText;
      
      if (oHidden) 
      {
        oHidden.value = sValue;
      }

      return;
    }
  }

  if (oHidden) 
  {
    ohtmClearHidden = oHidden;
    sListBoxSelectedIndex = oHidden.value;
    if (sListBoxSelectedIndex != "") 
    {
      htm_Select_SetSelectedIndex(oListBox, sListBoxSelectedIndex);
    }
  }
  
  oListBoxMenu.style.left = oEvent.x - 10 + document.body.scrollLeft;
  oListBoxMenu.style.top = oEvent.y - 10 + document.body.scrollTop;
  
  gsEboxName = sEboxName;
  gsHiddenName = sHiddenName;
  giEboxIndex = iIndex;
  
  oListBoxMenu.style.display = "block";
}

//-----------------------------------------------------------

function PopUp_InsertValue(sListBoxMenuID, sListBoxMenuFormName)
{
  oEvent = js_GetEvent();
  if (gsEboxName == "") {return false;}

  oListBox = oEvent.srcElement; //document.getElementById("CountriesListBox");
  if (!oListBox) {return false;}

  var oEBox = document.getElementsByName(gsEboxName)[giEboxIndex];
  if (!oEBox) {return false;}
  

  sText = htm_Select_GetText(oListBox.name);
  sValue = htm_Select_GetValue(oListBox.name);
  
  if (sValue == "") {sText = "";}
  
  oEBox.value = sText;

  if (gsHiddenName != "")
  {
    var oEBoxHidden = document.getElementsByName(gsHiddenName)[giEboxIndex];
    if (oEBoxHidden) 
    {
      oEBoxHidden.value = sValue;
  //alert(oEBoxHidden.value);    
    }
  }

  PopUp_HideNew(sListBoxMenuID, sListBoxMenuFormName);
  cancelBubble = true;
}

/*---------------------------------------------------------*/
//      sObjectName = PopUp_GetNameFromHidden(i, oSrcObject.id);

function PopUp_GetNameFromHidden(i, sMenuID)
{
  sName = "";
  sMenuID = s_Init(sMenuID, "");

  var oObj = htm_GetElById("PopupName" + i + sMenuID);

  if (oObj) 
  {
    sName = oObj.value;
  }
  return sName;
}

/*---------------------------------------------------------*/

function PopUp_GetNameFromSrcElement(event)
{
  oObj = js_GetSrcElement(event);
  if (oObj) 
  {
    sObjectName = oObj.innerHTML;
  }
  else
  { sObjectName = ""; }
  return sObjectName;
}


/*---------------------------------------------------------*/

function PopupMenu_SetRows(sID, aOperations)
{
  sID = sID;
  oTable = htm_GetElById(sID);
  if (!oTable) {return false;}
  
  var aRows = oTable.childNodes[0].childNodes;
  if (aRows.length < 1) {return false;}
  
  var i;
  var j = 0;
  for (i = 0; i < aRows.length; i++)
  {
    if (arr_ValueExists(aOperations, aRows[i].id)) 
    {
      aRows[i].style.display = "block";
      j++;
    }
    else
    {
      aRows[i].style.display = "none";
    }
  }
  return j;
}

/*---------------------------------------------------------*/

function PopupMenu_GetRows(sID)
{
  oTable = htm_GetElById(sID);
  if (!oTable) {return false;}
  
  var aRows = oTable.childNodes[0].childNodes;
  
  if (aRows.length < 1) {return false;}
  
  return aRows;
}

/*---------------------------------------------------------*/

function PopupMenu_GetRowsIDs(sID)
{
  aRows = PopupMenu_GetRows(sID);
  if (!aRows) {return false;}
  if (aRows.length < 1) {return false;}
  
  var i;
  var aRows1 = new Array();
  for (i = 0; i < aRows.length; i++)
  {
    aRows1[i] = aRows[i].id;
  }
  
  return aRows1;
}

/*---------------------------------------------------------*/

function PopUpMenu_GetOperations(oSrcObject)
{
  if (!js_IsObject(oSrcObject)) {return false;}

  var sID = oSrcObject.id;
  if (sID == "") {return false;}
  
  sID = "PopupOperations" + sID;
  var oOperationHidden = htm_GetElById(sID);
  if (!oOperationHidden) {return false;}
  
  var sOperations = oOperationHidden.value;
  
  var aOperations = s_Split(sOperations, ",");
  if (aOperations.length <= 0) {return false;}
  
  return aOperations;
}


/*---------------------------------------------------------*/

function PopUp_ShowObjectMenu(i, sMenuID, event, oSrcObject, iMaxLen, sObjectName)
{
  var sObjectNameID = sMenuID + "ObjectTitle";

  if (!js_IsObject(oSrcObject)) 
  {oSrcObject = js_GetSrcElement(event);}
  var aOperations = PopUpMenu_GetOperations(oSrcObject);
  if (!aOperations) {return false;}

  iMaxLen = s_Init(iMaxLen, 0);

  if (s_InStr(sPOPUP_EVENTSTOSHOW, event.type) <= 0) {return false;}

  sObjectName =  s_Init(sObjectName, "");

  if (sObjectName == "") 
  {
    sObjectName = PopUp_GetNameFromHidden(i, sMenuID);
    if (sObjectName == "") 
    {
      sObjectName = PopUp_GetNameFromHidden(oSrcObject.id);
    }

    if (sObjectName == "") 
    {
      sObjectName = PopUp_GetNameFromSrcElement(event);
    }
    if (sObjectName == "") {return;}
  }


  var oProdGroupsMenu = htm_GetElById(sMenuID);
  if (!oProdGroupsMenu) {return;}

//  var aLinksInMenu = arr(aPopup_PopupMenuLinks, sMenuID, "");
//  if (aLinksInMenu == "") {return false;}

//alert(aLinksInMenu);

  var aRowsInMenu = PopupMenu_GetRows(sMenuID + "Rows");
  if (!aRowsInMenu) {return false;}
  
  var iRowsCount = PopupMenu_SetRows(sMenuID + "Rows", aOperations);

// was: if (!iRowsCount || iRowsCount == 0) {return false;}  
// updated 2008-12-16
  if (!iRowsCount || iRowsCount <= 1) {return false;}
  
  
  
  var oLink;
  for (j = 0; j < aRowsInMenu.length; j++)
  {
    oLink = htm_GetElById(aRowsInMenu[j].id + "Link");
    
    if (oLink) 
    {
      sStr = oLink.href;
      
      sAfterEqual = s_GetToken(sSTR_FROMRIGHT + sStr, "=");
      if (s_InStr(sAfterEqual, "#") > 0) 
      {
        oLink.href = sStr;
      }
      else
      {

        sStr = s_ReplaceToSubString(sSTR_FROMRIGHT + sStr, "=", "");
        if (s_Right(sStr, 1) == "=") 
        {
          sStr = sStr + i;
          oLink.href = sStr;
        }
        else
        {
          /* if href is not defined */
  //        alert(sStr);
          if (oLink.className == "aWholeHref") 
          {
  /*
  i, sMenuID, sObjectNameID, event, iMaxLen, sObjectName
  PopupWholeHrefInfoMenu
  */
            sId = "PopupWholeHref" + sMenuID + i;
            var oHidden = htm_GetElById(sId);
            if (oHidden) {oLink.href = oHidden.value;}
          }
        }

      
      }

      oImg = htm_GetElById(aRowsInMenu[j].id + "Img");
      if (oImg) 
      {
        oImg.href = oLink.href;
      }    
      
    }
    
  }
  
  htm_SetElementProperty(sObjectNameID, iHTM_PROP_INNERHTML, sObjectName, iMaxLen);

  PopUp_Show (oProdGroupsMenu.id, event);
}

/*---------------------------------------------------------*/

function PopUp_ConfirmOperation(event, sQuestion, sObjTypeID, sObjID)
{
  var oObjType = htm_GetElById(sObjTypeID);
  var oObj = htm_GetElById(sObjID);
  if (oObjType && oObj) 
  {
    sObjName = oObj.innerHTML;
    sObjName = s_Replace(sObjName, "&nbsp;", " ");
    sQuestion = oObjType.innerHTML + sObjName + "\r\n" + sQuestion;
  }
  return confirm(sQuestion);
}




/*---------------------------------------------------------*/

function PopUp_GetObjectName(sPrefix, i)
{
  var oObj = htm_GetElById("Name" + sPrefix + i);
  if (oObj) 
  {
    return oObj.value;
  }
  else
  {
    oObj = htm_GetElById(sPrefix + i);
    if (!oObj) {return "";}
    return oObj.innerHTML;
  }
}


