/*
function asd(sName, sValue, bCondition)
function js_False()
function js_GetBrowser()
function js_GetConstant(vOuter, vThis)
function js_GetEvent()
function js_GetRandom(iMin, iMax)
function js_GetSrcElement(evt)
function js_GoBack()
function js_GoFwd()
function js_InheritOrModify(vParent, vThis)
function js_InitBrowsersArray()
function js_InitScriptText(sScriptId_Or_Text) 
function js_IsEvent(vVal)
function js_IsMethod(sStr)
function js_IsObject(vVal)
function js_NoDeal(evt)
function js_SetEvent()
function js_UploadScriptFile(sFileUrl, sID) 
*/

//---------------------------------------------------------------
var js_bNO_INIT = false;

var oEvent;
var js_iBROWSER_IE = 1;
var js_iBROWSER_NN = 2;
var js_iBROWSER_FF = 2;
var js_iBROWSER_OP = 3;

var js_sBROWSER_IE = "Internet Explorer";
var js_sBROWSER_NN = "FireFox, Netscape";

var js_aBROWSERS = new Array();

var iJS_BROWSER = 0;

var sJS_TYPE_UNDEF = "undefined";
var sJS_TYPE_OBJ = "object";
var sJS_TYPE_EVENT = "event"; // my
var sJS_TYPE_FUNC = "function";
var sJS_TYPE_STR = "string";

var bJS_REPEAT = true;
var sJS_PF_CONFIRM = "sJS_PF_CONFIRM";
var sJS_PF_PROMPT = "sJS_PF_PROMPT";

var iJS_X = 0;
var iJS_Y = 0;

var sJS_BYID = "sJS_BYID";

//---------------------------------------------------------------

function js_GetSrcElement(evt)
{
  evt = (typeof(evt) == sJS_TYPE_UNDEF) ? event : evt;
  if (typeof(evt) != sJS_TYPE_OBJ && typeof(evt) != sJS_TYPE_FUNC) {return false;}
  return (js_GetBrowser() == js_iBROWSER_IE) ? evt.srcElement : evt.target;
}

/*---------------------------------------------------------*/

function js_GetConstant(vOuter, vThis)
{
  if (!js_IsMethod(vOuter) && vOuter != "") 
  {
    return vOuter;  
  }
  else
  {
    return vThis;
  }
}

//---------------------------------------------------------------

function js_IsObject(vVal)
{
  return (typeof(vVal) == sJS_TYPE_OBJ && vVal != null );
}

//---------------------------------------------------------------

function js_IsString(vVal)
{
  return (typeof(vVal) == sJS_TYPE_STR && vVal != null );
}

//---------------------------------------------------------------

function js_IsEvent(vVal)
{
  return (typeof(vVal) == sJS_TYPE_OBJ && vVal != null);
}

//---------------------------------------------------------------

function js_InitBrowsersArray()
{
  js_aBROWSERS = new Array();
  js_aBROWSERS[js_iBROWSER_IE] = js_sBROWSER_IE;
  js_aBROWSERS[js_iBROWSER_NN] = js_sBROWSER_NN;
}

//---------------------------------------------------------------

js_InitBrowsersArray();

//---------------------------------------------------------------

function js_GetBrowser()
{
/*
IE: Microsoft Internet Explorer
FF: Netscape
OP: Opera

copy:
js_GetBrowser()
if (iJS_BROWSER == js_iBROWSER_IE) {}

*/
  var sStr = navigator.appName;
  
  if (s_IsLeft(sStr, "Microsoft"))
  {
    iJS_BROWSER = js_iBROWSER_IE;
    return iJS_BROWSER;
  }
  else
  {
    if (s_IsLeft(sStr, "Netscape"))
    {
      iJS_BROWSER = js_iBROWSER_NN;
      return iJS_BROWSER;
    }
    else
    {
      if (s_IsLeft(sStr, "Opera")) 
      {
        iJS_BROWSER = js_iBROWSER_OP;
        return iJS_BROWSER;
      }
      else
      {
        iJS_BROWSER = -1;
        return iJS_BROWSER;
      }
    }
  }
  
}

//---------------------------------------------------------------

function js_SetEvent()
{
  if (typeof(oEvent) == "object" && oEvent != null) {return;}
  oEvent = js_GetEvent();
}

//---------------------------------------------------------------

function js_GetEvent()
{

  if (js_GetBrowser() == js_iBROWSER_IE) 
  {
    return event;
  }
  else
  {
    return Event;
  }
}

//---------------------------------------------------------------

function js_GoBack()
{
  history.back();
}

//---------------------------------------------------------------

function js_GoFwd()
{
  history.forward();
}

/*---------------------------------------------------------*/

function js_GetRandom(iMin, iMax)
{
  i = Math.random();
  i = (iMax - iMin) * i + iMin;
  i = Math.round(i);
  return i;
}

/*---------------------------------------------------------*/

function js_NoDeal(evt)
{
  return false;
}

/*---------------------------------------------------------*/

function js_UploadScriptFile(sFileUrl, sID) 
{
  sID = s_Init(sID, "");
  var s = document.createElement('script');
  s.type = 'text/javascript';
  document.getElementsByTagName('body')[0].appendChild(s);
  sFileUrl = s_AddParamToQS (sFileUrl, s_GetRandomParamForQS());
  s.src = sFileUrl;
  if (sID != "") {s.id = sID;}
  
}

/*---------------------------------------------------------*/

function js_InitScriptText(sScriptId_Or_Text) 
{
  var bById = s_GetPrefix(sScriptId_Or_Text, sJS_BYID);
  if (bById) {sScriptId_Or_Text = s_CutStringFromLeft(sScriptId_Or_Text, sJS_BYID);}
  
  var s = document.createElement('script');
  s.type = 'text\/javascript';
  
  var sText = "";
  if (bById) 
  {
    oScript = document.getElementById(sScriptId_Or_Text);
    if (!oScript) {return;}
    sText = oScript.innerHTML;
  }
  else
  {
    sText = sScriptId_Or_Text;
  }
  
  s.text = sText;
  
  document.getElementsByTagName('body')[0].appendChild(s);
}

/*---------------------------------------------------------*/

function js_False()
{
  return false;
}


/*---------------------------------------------------------*/

function js_IsMethod(sStr)
{
  sStr = sStr + "";
  return (s_IsLeft(sStr, sJS_TYPE_FUNC));

}

/*---------------------------------------------------------*/

function js_InheritOrModify(vParent, vThis)
{
    if (js_IsMethod(vParent)) 
    {
      if (vThis == "" || typeof(vThis) == sJS_TYPE_UNDEF) 
      {
//        alert("inherit: " + vParent);
        return vParent;
      }
      else
      {
//        alert("modify: " + vThis);
        return vThis;
      }
    }
    else
    {
      return vParent;
    }

}


/*---------------------------------------------------------*/

function asd(sName, sValue, bCondition)
{
  sValue = s_Init(sValue, "");
  bCondition = s_Init(bCondition, true);

  if (!bCondition) {return;}
  
  var bConfirm = s_GetPrefix(sName, sJS_PF_CONFIRM);
  if (bConfirm) {sName = s_CutPrefix(sName, sJS_PF_CONFIRM);}

  var bPrompt = s_GetPrefix(sName, sJS_PF_PROMPT);
  if (bPrompt) {sName = s_CutPrefix(sName, sJS_PF_PROMPT);}

  
  var sStr = "";
  
  sStr = sName;
  
  if (bConfirm) 
  {
    if (sValue != "") {sStr += " = " + sValue;}
    if (bJS_REPEAT) {bJS_REPEAT = confirm(sStr, sValue);}
    return;
  }

  if (bPrompt) 
  {
    if (bJS_REPEAT) 
    {
      var bRes = prompt(sStr, sValue);
      if (bRes == null) {bJS_REPEAT = false;}
    }
    return;
  }
  
  if (sValue != "") {sStr += " = " + sValue;}
  alert(sStr);
}

// -----------------------------------------------------

function oldasd(sName, sValue, bShowType, bInAlert, bDo)
{
alert("asd");
//bShowType - показывать ли тип параметра sValue

//bInAlert : true  - выводить a алерт
//           false - (или не задано) - выводить в текст документа
//           1     - не выводить, готовить к выводу в алерте  
//           0     - не выводить, готовить к выводу в текст документа 


//  это меняем на вызов ф. s_Init()
//  if (typeof(bInAlert)  == "undefined") {bInAlert = false;}
  bDo = s_Init(bDo);
  bInAlert = s_Init(bInAlert);
  bShowType = s_Init(bShowType);

  if (!bDo) {return;}
  
  if (typeof(sValue) == "undefined")
  {
    sValue = "значение не задано";
  }
  
  var sStr;
  
  if (!bShowType)
  {
    sStr = sValue;
  }
  else
  {
    switch (typeof(sValue)) 
    {
      case "undefined":
      alert("");
        sType = "неопределенный";
        sValue = "значение не задано";
        break;
      case "number":
        sType = "число";
        break;
      case "string":
        sType = "строка";
        break;
      case "boolean":
        sType = "логический";
        break;
      case "object":
        sType = "объект";
        break;
      case "function":
        sType = "функция";
        break;
    }
    sStr = sValue + "(" + sType + ")";
  }


  if (!is_array(sValue))
  {
    //описываем сначала отрицание т.к. оно короче
    sStr = sName + "=" + sStr + "<br>";
  }
  else
  {
    sArrayHeader = "=============== массив " + sName + ", элементов: " + sValue.length + " =================<br>";
    sStr = sArrayHeader;
    var i;
    for (i = 0; i < sValue.length; i++)
    {
      sStr += "[" + i + "]" + " = " + sValue[i] + "<br>";
    }
    sStr += sArrayHeader;
    document.write(sStr);
  }
  

  if ( typeof(bInAlert) == "number")
  {
    //вывод не предусмотрен, просто подготавливаем строку

    if ( bInAlert == 1)// для последующего вывода в алерте
    {
      sStr = s_Replace (sStr, "<br>", "\n");
    }

    return sStr;
  }
  else
  {
    if (bInAlert)
    {
      sStr = s_Replace (sStr, "<br>", "\n");
      alert(sStr);
    }
    else
    {
      document.write(sStr);
    }
  }
  
}

