// Copyright (C) 2007 Alan Ardzinov, Saint-Petersburg, Russia 
// http://www.terchy.com, ardalan@mail.ru, ICQ 56320602

/*
function htm_AddCss()
function htm_AddNewRow_Table(v, h) 
function htm_Clear(sEditBoxName)
function htm_ConfirmMultiDelete(sPrefix)
function htm_DeleteAddedRow(v, iIndex, sConfirm)
function htm_DeleteRow(sRowID, sConfirm) 
function htm_DrawPost(sHref, sLabel, sTitle, sParams)
function htm_FillBlocks( sBlocks )
function htm_Focus(sForm, sElement)
function htm_GetArrayOfElementsByID(sID)
function htm_GetArrayOfElementsByName(sName)
function htm_GetElementsByName(sName, sFormName)
function htm_GetFormName(oElement)
function htm_GetThisElementIndexInArray_ByName(event, oThis)
function htm_HideAllSelectsInForm(vForm, bShow)
function htm_Select_GetSelectedIndex(sName)
function htm_Select_GetText(sName)
function htm_Select_GetValue(sName)
function htm_Select_SetSelectedIndex(sID, sKeyValue)
function htm_SelectDeselectAll(sPrefix, sHintSelectAll, sHintDeSelectAll)
function htm_SetDisabled(oElement, bDisabled)
function htm_Void(event )
function spinner_Start(sObjId, iStep, event)

*/

var ohtmWaitMsg;
var ohtmClearEbox;
var ohtmClearHidden;

var sHTM_PF_NAMEISPASSED;
var bHTM_SHOW = true;

var iHTM_PROP_HREF = 1;
var iHTM_PROP_ALT = 2;
var iHTM_PROP_INNERHTML = 3;
var sHTM_SEPAR_ID = ",";
var bhtmProcessSelects = false;

//--------------------------------------------------------------

function htm_Void( event )
{
  if(event){ return;}
  event.cancelBubble = true;
}

//---------------------------------------------------------------

function htm_Nothing()
{

}


//---------------------------------------------------------------

function htm_FilterForm_Clear(oForm, sExceptionFields)
{
  sExceptionFields = s_Init(sExceptionFields, "");
  if (sExceptionFields != "") {sExceptionFields = "," + sExceptionFields + ",";}
  
  //alert(s_InStr(sExceptionFields, "," + oForm.elements[0].name + ","));return;
  
  for (i = 0; i < oForm.elements.length; i++)
  {
    if (s_InStr(sExceptionFields, "," + oForm.elements[i].name + ",") == 0) 
    {
      switch (oForm.elements[i].type) 
      {
         case "text":
          oForm.elements[i].value="";
         case "select-one" :
          oForm.elements[i].selectedIndex = 0;
         case "checkbox" :
          oForm.elements[i].checked = false;
         case "radio" :
          oForm.elements[i].checked = (oForm.elements[i].value == "") ? true : false ;
      }   
    }
  }
}


/*---------------------------------------------------------*/

function htm_GetFormElement(sElemName, vForm)
{

  sElemName = s_Init(sElemName, "");
  if (sElemName == "") {return false;}
  vForm = s_Init(vForm, "");
  if (vForm == "") {return false;}

  if (!js_IsObject(vForm)) 
  {
    vForm = document.forms[vForm];  
    if (!vForm) {return false;}  
  }

  var oObj = vForm.elements[sElemName];
  if (!oObj) {return false;}
  return oObj;
  
}


//--------------------------------------------------------------

function htm_GetElementsByName(sName, sFormName)
{
  sFormName = s_Init(sFormName, "");
  
  var aArray = document.getElementsByName( sName );
  if (typeof(aArray) != "object") {return false;}
  if (aArray.length == 0) {return false;}
  
  if (sFormName != "") 
  {
    var aArray2 = new Array();
    var j = 0;
    var oForm;
    
    for (i = 0; i < aArray.length; i++)
    {
      oForm = aArray[i].form;
      if (typeof(oForm) == "object") 
      {
        if ( oForm.name == sFormName)
        {
          aArray2[j] = aArray[i];
          j++;
        }
      }
    }
    if (aArray2.length == 0) {return false;}
    aArray = aArray2;
  }
  
  return aArray;

}

//-------------------------------------------------------------

function htm_GetArrayOfElementsByID(sID)
{
  var aArray = new Array();
  j = 0;
  for (i = 0; i < document.all.length; i++)
  {
    oNextElement = document.all[i];
    if (oNextElement.id == sID)
    { 
      aArray[j] = oNextElement;
      j++;
    }
  }
  
  if (j == 0) {aArray = false;}
  
  return aArray;
}

//------------------------------------------------------------------------------

function htm_GetArrayOfElementsByName(sName)
{
  var aArray = new Array();
  j = 0;
  for (i = 0; i < document.all.length; i++)
  {
    oNextElement = document.all[i];
    if (oNextElement.name == sName)
    { 
      aArray[j] = oNextElement;
      j++;
    }
  }
  
  if (j == 0) {aArray = false;}
  
  return aArray;
}

//------------------------------------------------------------------------------

function htm_GetThisElementIndexInArray_ByName(event, oThis)
{
  var oSrcElement = js_GetSrcElement(event);
  oThis = s_Init(oThis, oSrcElement);
  sName = oThis.name;
  
  var aArray;
  
  aArray = document.getElementsByName(sName);
  

  if (typeof(aArray) != "object") {return -1;}
  if (aArray.length == 0) {return -1;}
  if (aArray.length == 1) {return 0;}
  
  j = 0;
  for (i = 0; i < aArray.length; i++)
  {
    if (aArray[i] == oThis)
    {
      return j;
    }
    j++;
  }
  
  return -1;
}

//------------------------------------------------------------------------------

function htm_Select_GetSelectedIndex(sName)
{
  return document.all[sName].selectedIndex;
}

//------------------------------------------------------------------------------

function htm_Select_GetValue(sName)
{
  return document.all[sName].value;
}

//--------------------------------------------------------------

function htm_GetFormName(oElement)
{

  if (typeof(oElement.form) == "undefined" || oElement.form == null) {return "";}
  return oElement.form.name;

}
//------------------------------------------------------------------------------

function htm_Select_SetSelectedIndex(sID, sKeyValue)
{
// TOdO: sHTM_PF_NAMEISPASSED
  var oSelect;
  var oOptions;

  if (typeof(sID) == "object") 
  {
    oSelect = sID;
  }
  else
  {
    if (sID == "") {return;}
    oSelect = document.getElementById(sID);
  }
  

  if (!oSelect) {return;};
  
// alert(sID);
  oOptions = oSelect.options;

  
  if (oOptions.length == 0) {return;}

  for (i = 0; i < oOptions.length; i++)
  {
    if (oSelect.options[i].value == sKeyValue) 
    {
      oSelect.selectedIndex = i;
      return;
    }
  }
}

//------------------------------------------------------------------------------

function htm_Select_GetText(sName)
{
//alert(sName);
  oSelect = document.getElementsByName(sName)[0];
  if (!oSelect) {return false;}


  if (typeof(oSelect.selectedIndex) != "undefined" && oSelect.selectedIndex >= 0)
  {
    return oSelect.options[oSelect.selectedIndex].text;
  }
  else
  {
    return "";
  }
}

//------------------------------------------------------------------------------

function htm_Focus(sForm, sElement)
{
  if (typeof(document.forms[sForm].elements[sElement]) == "undefined") {return;}
  document.forms[sForm].elements[sElement].focus();
}

//------------------------------------------------------------------------------
function htm_Clear(sEditBoxName, event)
{
  var oEditBox;
  
  if (typeof(ohtmClearEbox) == "object") 
  {
    oEditBox = ohtmClearEbox;
  }
  else
  {
    oClrButton = js_GetSrcElement(event);
  
    iIndex = htm_GetThisElementIndexInArray_ByName(event, oClrButton);
  
    var oEditBox = document.getElementsByName(sEditBoxName)[iIndex];
    if (!oEditBox) {return;}
  }

  oEditBox.value = "";
  if (typeof(ohtmClearHidden) == "object") 
  {
    ohtmClearHidden.value = "";
  }
  
  oEditBox = false;
  ohtmClearHidden = false;
}

//------------------------------------------------------------------------------
function htm_DeleteRow(sRowID, sConfirm) 
{
  sConfirm = s_Init(sConfirm, gsHTM_SHURETODELETE);
  if (!confirm(sConfirm)) {return;}
  var oElem = document.getElementById(sRowID);
  oElem.innerHTML = "";
  event.cancelBubble;
}
 
//------------------------------------------------------------------------------

var iAddedElements = 0;
 
function htm_AddNewRow_Table(v, h) 
{

  var target = document.getElementById(v);

  var aArray = new Array();
  
  // comment1: the next row somehow doesnt work:
  // aArray = document.getElementsByName(h);

  // so we use udf:  
  aArray = document.getElementsByName(h);

  
  if (target && aArray.length > 0) 
  {

    var row = document.createElement("TR")
    iAddedElements ++;
    row.id = "ae" + iAddedElements;
    
    var td1;
    for (i = 0; i < aArray.length; i++)
    {
      td1 = document.createElement("TD")
      
      td1.innerHTML = aArray[i].innerHTML;
      sStr = td1.innerHTML;
      if (sStr.indexOf("name=DelAddedRow", 0) > 0) 
      {
        sStr = s_Replace(sStr, 'onclick=""', 'onclick="htm_DeleteAddedRow(\'' + v + '\',\'' + row.id + '\');"');
//alert(sStr);
        td1.innerHTML = sStr;
      }
      
      
      
      row.appendChild(td1);
    }

    target.appendChild(row);
  }

} 


//--------------------------------------------------------------

function htm_DeleteAddedRow(v, iIndex, sConfirm)
{
  sConfirm = s_Init(sConfirm, gsHTM_SHURETODELETE);
  if (!confirm(sConfirm)) {return;}
  var target = document.getElementById(v);
  var child = document.getElementById(iIndex);
  target.removeChild(child);
}



//--------------------------------------------------------------

function htm_FormsToHideSelects_Add(sFormName)
{
  if (!bhtmProcessSelects) {return;}
  if (typeof(aHtm_FormsToProcessSelects) != "object")
  {
    aHtm_FormsToProcessSelects = new Array();
  }
  aHtm_FormsToProcessSelects = arr_AddNewValue (aHtm_FormsToProcessSelects, sFormName);
}

//--------------------------------------------------------------

function htm_ShowAllSelects(vForm)
{
//  alert("htm_ShowAllSelects");
  if (!bhtmProcessSelects) {return;}

  vForm = s_Init (vForm, "");
  htm_HideAllSelects(vForm, bHTM_SHOW);
}
//--------------------------------------------------------------

function htm_HideAllSelects(vForm, bShow)
{
// bShow may be bHTM_SHOW = true;
  if (!bhtmProcessSelects) {return;}

  var aForms = new Array();
  
  vForm = s_Init (vForm, "");

  if (typeof(vForm) == "string") 
  {
    if (vForm == "") 
    {
      if (is_array(aHtm_FormsToProcessSelects) && aHtm_FormsToProcessSelects.length > 0) 
      {
        aForms = arr_Equal (aHtm_FormsToProcessSelects);
      }
      else
      {
        aForms = arr_Equal (document.forms);
//      alert(document.forms);
      }
    }
    else
    {
      aForms[0] = document.forms[vForm];
    }
  }
  else
  {
    if (typeof(vForm) == "object") 
    {
      aForms[0] = vForm;
    }
  }
  
  if (aForms.length == 0) {return;}

  bShow = s_Init (bShow, false);
  
  
  for (j = 0; j < aForms.length; j++)
  {
    vForm = aForms[j];
//    alert("FORM______________" + vForm.name);
    for (i = 0; i < vForm.elements.length; i++)
    {
      oElement = vForm.elements[i];
//alert("element: " + oElement.name);
      if (s_IsLeft(oElement.type, "select") && !s_IsLeft(oElement.id, "UNVIS")) 
      {
//alert("select: " + oElement.name);
        oElement.style.visibility = bShow ? "visible" : "hidden";
      }
    }
    
  }
  
}

//--------------------------------------------------------------

function htm_SelectDeselectAll(sPrefix, sCheckBoxName, sHintSelectAll, sHintDeSelectAll)
{
  sHintSelectAll = s_Init(sHintSelectAll, g_HTM_SELECTALL);
  sHintDeSelectAll = s_Init(sHintDeSelectAll, g_HTM_DESELECTALL);
  sCheckBoxName = s_Init(sCheckBoxName, "");
  
  if (sCheckBoxName != "") 
  {
    oSelectAll = htm_GetElementsByName(sCheckBoxName);
    if (!oSelectAll) {return;}
    oSelectAll = oSelectAll[0];
  }
  else
  {
    oSelectAll = event.srcElement;
  }

    oForm = oSelectAll.form;
    if (typeof(oForm) == "undefined") {return;}

  state = oSelectAll.checked;
  oSelectAll.title = (state) ? sHintDeSelectAll : sHintSelectAll;
  var item = "";
  for (i = 0; i < oForm.elements.length; i++)
  {
    item = oForm.elements[i];
    if (item.name.substring(0, sPrefix.length) == sPrefix)
    {item.checked = state; }
  }
}

//--------------------------------------------------------------

function htm_SetDisabled(oElement, bDisabled)
{
  
  if (typeof(oElement) == sSTR_UNDEF) {return;}
  
  oElement.disabled = bDisabled;
}

//--------------------------------------------------------------

function spinner_Start(sObjId, iStep, event)
{
  oObj = document.getElementById(sObjId);
  if (!oObj) {return;}
  
  iValue = (IsFloatPriv(oObj.value)) ? parseFloat(oObj.value) : 0;
  oObj.value = iValue + iStep
}

//--------------------------------------------------------------

function htm_GetElementsByPrefix(sPrefix, sFormName)
{
  sFormName = s_Init(sFormName, "");

  var aTotalArray = new Array();
  
  if (sFormName == "") 
  {
    aTotalArray = document.all;
  }
  else
  {
    oForm = document.getElementById(sFormName);
    if (!oForm) {return false;}
    
    aTotalArray = oForm.elements;
  }


  
  var aArray = new Array();
  var j = 0;
  
  for (i = 0; i < aTotalArray.length; i++)
  {
    if (typeof(aTotalArray[i].name) != "undefined" && typeof(aTotalArray[i].name) == "string") 
    {
      if (s_IsLeft (aTotalArray[i].name, sPrefix)) 
      {
        aArray[j] = aTotalArray[i];
        j++;
      }
    }
  }
  
  if (j == 0) {return false;}
  
  return aArray;
  
}

//--------------------------------------------------------------

function htm_CountChecked(sPrefix, sFormName)
{
  sFormName = s_Init(sFormName, "");
  
  if (sFormName == "") 
  {
    oElement = event.srcElement;
    if (typeof(oElement) == sSTR_UNDEF) {return -1;}
    
    oForm = oElement.form;
    if (typeof(oForm) != "object") {return -1;}
    
    if (oForm.name == "") {return -1;}
    sFormName = oForm.name;
  }  
   
  var aCheckboxes = htm_GetElementsByPrefix (sPrefix, sFormName);
  
  if (!aCheckboxes) {return -1;}
  
  var iCount = 0;
  for (i = 0; i < aCheckboxes.length; i++)
  {
    if (aCheckboxes[i].checked) {iCount++;}
  }
  return iCount;
}

//--------------------------------------------------------------

function htm_ConfirmMultiDelete(sPrefix, sFormName)
{

  sFormName = s_Init(sFormName, "");
  
  if (sFormName == "") 
  {
    oElement = event.srcElement;
    if (typeof(oElement) == sSTR_UNDEF) {return false;}
    
    oForm = oElement.form;
    if (typeof(oForm) != "object") {return false;}
    
    if (oForm.name == "") {return false;}
    sFormName = oForm.name;
  }  
  iCount = htm_CountChecked(sPrefix, sFormName);
//alert(iCount);  
  if (iCount <= 0) 
  {
    alert(g_HTM_NOONESELECTED);
    return false;
  }
  var sStr = g_HTM_SHURESELECTEDTODELETE;
  sStr = s_Replace (sStr, "#COUNT#", iCount);
  return confirm (sStr);
}

//--------------------------------------------------------------

function htm_SwitchChecked(sCheckboxName, event)
{
  oElement = js_GetSrcElement(event);

  aCheckboxes = htm_GetElementsByName(sCheckboxName);
  if (!aCheckboxes) {return;}

  
  // for FF
  if (typeof(aCheckboxes.length) == "undefined") 
  {
    aCheckboxes.checked = !aCheckboxes.checked;
    return;
  }

  for (i = 0; i < aCheckboxes.length; i++)
  {
    bDo = true;
    
    if (typeof(oElement) != sSTR_UNDEF)
    {
      if (oElement == aCheckboxes[i]) {bDo = false;}
    }
    
    if (bDo)
    {
      aCheckboxes[i].checked = !aCheckboxes[i].checked;
    }
    
  }  
}

//--------------------------------------------------------------

function htm_RemovePx(sStrWithPx)
{
  sStrWithPx = s_CutStringFromRight(sStrWithPx, "px");
  sStrWithPx = parseInt(sStrWithPx);
  return sStrWithPx;
  
}

/*---------------------------------------------------------*/

function htm_GetSrcForm(evt)
{
  oForm = js_GetSrcElement(evt);
  oForm = oForm.form;
  return oForm;
}

/*---------------------------------------------------------*/

function htm_GetElById(sElementName)
{
  var oElem = document.getElementById(sElementName);
  return oElem;
}

/*---------------------------------------------------------*/

function htm_DrawPost(sHref, sLabel, sTitle, sParams)
{
  /*
  replaces:
  ?   ->   @
  m.ru  ->   mail.ru
  var m_ru = s_Char('m') + s_Char('a') + s_Char('i') + s_Char('l') + s_Char('.') + s_Char('r') + s_Char('u');
  var terchy_com = s_Char('t') + s_Char('e') + s_Char('r') + s_Char('c') + s_Char('h') + s_Char('y') + s_Char('.') + s_Char('c') + s_Char('o') + s_Char('m');
  */

  sTitle = s_Init(sTitle, "");
  
  var mto = s_Char('m') + s_Char('a') + s_Char('i') + s_Char('l') + s_Char('t') + s_Char('o') + s_Char(':');
  sLabel  = s_Init(sLabel, "");
  
  sParams = s_Init(sParams, "");
  
  sHref   = s_Replace(sHref, "?", s_GetChar(0));
  sHref   = s_Replace(sHref, "m.ru", "mail.ru");
//  sHref   = s_Replace(sHref, "t.c", terchy_com);

  if( sLabel == "" )
  { 
    sLabel = sHref; 
  }
  else
  {
    sLabel  = s_Replace(sLabel, "?", s_GetChar(0) );
    sLabel  = s_Replace(sLabel, "m.ru", "mail.ru" );
  //  sLabel  = s_Replace(sLabel, "t.c", terchy_com);
  //  alert(sLink);
  }
  sLink = "<a " + sParams + "href='" + mto + sHref + "' title='" + sTitle + "'>" + sLabel + "</a>";
  document.write (sLink);
  
}


/*---------------------------------------------------------*/

function htm_GetAllNodes(oParent)
{
  var aArray = oParent.childNodes;
  var aResult = new Array();
  var key;
  var i = 0;
  for (key in aArray)
  {
//alert(key + ", " + IsIntPriv(key));
    if (IsIntPriv(key)) 
    {
      aResult[i] = aArray[key];
      i++;
    }
  }
  return aResult;
}

/*---------------------------------------------------------*/

function htm_FillForm(event)
{
  var oSrc = js_GetSrcElement(event);
  var oForm = oSrc.form;
  if (!oForm) { return false;}
  
  var aArray = oForm.elements;
  var i;
  for (i=0;i<=aArray.length;i++)
  {
  
    if (typeof(oForm.elements[i].type) != "undefined") 
    {

      switch (oForm.elements[i].type)
      {
      case "checkbox":
        oForm.elements[i].checked=true;
        break;
      case "radio":
        oForm.elements[i].checked=true;
        break;
      case "select-one":
        oForm.elements[i].selectedIndex=0;
        break;
      case "text":
        oForm.elements[i].value="test";
        break;
      default:
        break;
      }
    
    }
    
  }
}

/*---------------------------------------------------------*/

function htm_SetElementProperty(sId, iProperty, sValue, iMaxLen)
{

  oElement = htm_GetElById(sId);
  iMaxLen = s_Init(iMaxLen, 0);

  if (!oElement) {return;}
  switch (iProperty) 
  {
     case iHTM_PROP_HREF:
      oElement.href = sValue;
      break;
     case iHTM_PROP_ALT:
      oElement.alt = sValue;
      break;
     case iHTM_PROP_INNERHTML:
      if (iMaxLen > 0) {sValue = s_CutAndAddIfCutted(sValue, iMaxLen);}
      oElement.innerHTML = sValue;
      break;
  }   
}

/*---------------------------------------------------------*/
function htm_AddCss( sSkinCode )
{
/*
var browserVer = parseInt(navigator.appVersion);
*/
  sSkinCode = s_Init( sSkinCode, "" );
  var sBrowser = navigator.appName;
  if (sBrowser.indexOf("Opera") != -1) 
  { 
    sBrowser = "op";
  }
  else
  {
    if (sBrowser.indexOf("Netscape") != -1) 
    { 
      sBrowser = "ff";
    }
    else
    {
      sBrowser = "";
    }
  }
  if ( sBrowser == "" ) { return; }
  document.writeln('<LINK TYPE="text/css" HREF="css/' + sBrowser + '_main.css" REL="stylesheet">');
  document.writeln('<LINK TYPE="text/css" HREF="css/' + sBrowser + '_Help.css" REL="stylesheet">');

}

/*---------------------------------------------------------*/
function htm_FontSizeChange( iDiff )
{
//  var oMainFrame = parent.frames["content"];
  var oMainFrame = document.body;
  var iSize = oMainFrame.style.fontSize;
  if ( iSize == "" ) { iSize = 24; } else { iSize = htm_RemovePx( iSize ); }
  iSize = iSize + iDiff;
  oMainFrame.style.fontSize = iSize;
  coo_Create("FONTSIZE", iSize, 365);
}

/*---------------------------------------------------------*/
function htm_FontSizeGet()
{
  var sFontSize = coo_Read("FONTSIZE", "");
  if ( sFontSize != "") 
  {
    sFontSize = htm_RemovePx( sFontSize );
    document.body.style.fontSize = sFontSize;
  }
}

/*---------------------------------------------------------*/
function htm_FillBlocks( sBlocks )
{
  var key;
  var oTarget, oSource;
  var aBlocks = s_Split( sBlocks, sHTM_SEPAR_ID )
  if ( !is_array( aBlocks ) ) { return; }
  for (key in aBlocks)
  {
    oTarget = htm_GetElById( aBlocks[ key ] );
    if ( oTarget ) 
    {
      oSource = htm_GetElById( aBlocks[ key ] + "Source" );
      if ( oSource ) 
      {
        oTarget.innerHTML = oSource.innerHTML;
      }
    }
/*
alert( aBlocks[ key ] + "\r\n" + "Target:" + oTarget + "\r\n" + "oSource:" + oSource );
*/

  }
}

