//******************************************************************************
// **  SOHO INTERNET LIBRARY  **       SOFTWARE HOUSE 2006(r)
// TITLE  : sh_main
// AUTHOR : A. SIEDLER                             2002-12-05
// UPDATED: A. SIEDLER                             2006-01-25
//******************************************************************************










//******************************************************************************
// FUNCTION:
// ARGUMENT:
// RETURNS :
//******************************************************************************
function sh_menuOff()
{
  //return true;
  //alert("sh_menuOff");
  return false;
}










//******************************************************************************
//******************************************************************************
function sh_status(Vmsg)
{
  window.defaultStatus=Vmsg;
  return;
}









//******************************************************************************
// FUNCTION:
// ARGUMENT:
// RETURNS :
//******************************************************************************
function sh_nav_isIE()
{
  var Lnav=navigator.appName;
  var Lbuf=Lnav.indexOf('Microsoft')!=-1;
  return Lbuf;
  //var vvv=navigator.appCodeName;
  //var vvv=navigator.platform;
}










//******************************************************************************
// FUNCTION:
// ARGUMENT:
// RETURNS :
//******************************************************************************
function sh_nav_obj(Vid, Vprop, Varg)
{
  var Lbuf="";

  //"IE"
  if(document.all)
  {
    Lbuf=Vid+"."+Vprop+"=\""+Varg + "\";";
  }

  //"NN4"
  if(document.layers)
  {
    //document.layers["fred"].bgColor=newcolor;
    alert("NETSCAPE 4 not yet implemented!");
  }

  //"NN6"
  if(!document.all && document.getElementById)
  {
    Lbuf="document.getElementById(\"" + Vid + "\")." + Vprop + "=\"" + Varg + "\";";
  }

  eval(Lbuf);
  //alert(Lbuf);
}










//******************************************************************************
// FUNCTION:
// ARGUMENT:
// RETURNS :
//******************************************************************************
function sh_style_set(Vid, Vprop, Varg)
{
  var Lbuf="";

  //"IE"
  if(document.all)
  {
    //Lbuf=Vid+"."+Vprop+"=\""+Varg + "\";";
    Lbuf="document.getElementById(\"" + Vid + "\")." + Vprop + "=\"" + Varg + "\";";

  }

  //"NN4"
  if(document.layers)
  {
    //document.layers["fred"].bgColor=newcolor;
    alert("NETSCAPE 4 not yet implemented!");
  }

  //"NN6"
  if(!document.all && document.getElementById)
  {
    Lbuf="document.getElementById(\"" + Vid + "\")." + Vprop + "=\"" + Varg + "\";";
  }
  eval(Lbuf);
  //alert(Lbuf);
}










//******************************************************************************
// FUNCTION:
// ARGUMENT:
// RETURNS :
//******************************************************************************
function sh_style_get(Vid, Vprop)
{
  var Lbuf="";
  var Lres="";

  if(document.all) //"IE"
  {
    Lbuf="document.getElementById(\"" + Vid + "\").style." + Vprop + ";";
  }

  if(document.layers) //"NN4"
  {
    //document.layers["fred"].bgColor=newcolor;
    alert("NETSCAPE 4 not yet implemented!");
  }

  if(!document.all && document.getElementById) //"NN6"
  {
    switch(Vprop)
    {
    case "pixelHeight": Vprop2 = "height"; break;
    case "pixelWidth":  Vprop2 = "width";  break;
    default:            Vprop2 =  Vprop;
    }
    Lbuf="document.getElementById(\"" + Vid + "\").style." + Vprop2 + ";";
  }
  Lres=eval(Lbuf);
  switch(Vprop)
  {
  case "pixelHeight":
  case "pixelWidth":
    Lres=parseInt(Lres); break;
  }
  return(Lres);
}










//******************************************************************************
// FUNCTION:
// ARGUMENT:
// RETURNS :
//******************************************************************************
function sh_innerHTML(Vid, Varg)
{
  var Lbuf="";
  var Lid;


  //"IE"
  if(document.all)
  {
    Lid = eval(Vid);
    Lid.innerHTML = Varg;
  }

  //"NN4"
  if(document.layers)
  {
    //document.layers["fred"].bgColor=newcolor;
    alert("NETSCAPE 4 not yet implemented!");
  }

  //"NN6"
  if(!document.all && document.getElementById)
  {
    document.getElementById(Vid).innerHTML = Varg;
  }
  //alert(Lbuf);
}








//******************************************************************************
// FUNCTION:
// ARGUMENT:
// RETURNS :
//******************************************************************************
function sh_div_load(Vdiv, Vurl)
{
  NN=navigator.appName=='Netscape';
  allX = (NN) ? window.innerWidth : document.body.clientWidth;
  allY = (NN) ? window.innerHeight : document.body.clientHeight;

  var Lwid, Lhei, Lobj;
  Lobj = "document.all['" + Vdiv + "']";

  if(document.all)
  {
    eval("Lobj=Lobj.replace(/.layers/gi, '.all')");
    Lwid=eval(Lobj + ".style.pixelWidth");
    Lhei=eval(Lobj + ".style.pixelHeight");
    //myVar="<OBJECT id=xid name=xname type=text/x-scriptlet width="+Lwid+" height="+Lhei+" data="+Vurl+"></OBJECT>"
    myVar="<OBJECT type=text/x-scriptlet width="+Lwid+" height="+Lhei+" data="+Vurl+"></OBJECT>"
    eval(Lobj + ".innerHTML =\""+myVar+"\"");
  }
}










//******************************************************************************
// FUNCTION:
// ARGUMENT:
// RETURNS :
//******************************************************************************
function sh_fileNormal(Vpath)
{
  var Lbuf, Lstr;
  var Lpath = new String(Vpath);
  Lstr = /\\/g;
  Lbuf = Lpath.replace(Lstr, "\\\\");
  return Lbuf;
}










//******************************************************************************
// FUNCTION:
// ARGUMENT:
// RETURNS :
//******************************************************************************
function sh_fileList(Vpath)
{
  var Llist = new Array();
  var Lpath, Lfso, Lfolder, Lfiles, Lbuf;
  Lpath = request.ServerVariables("APPL_PHYSICAL_PATH") + Vpath;
  Lpath=sh_fileNormal(Lpath);

  Lfso = Server.CreateObject("Scripting.FileSystemObject");
  Lfolder = Lfso.GetFolder(Lpath);
  var LfileCollection = Lfolder.Files;

  Lfiles = new Enumerator(LfileCollection);
  i=0;
  while(!Lfiles.atEnd())
  {
    Lbuf = Lfiles.item()
    Llist[i]=Lbuf.name;
    Lfiles.moveNext();
    i++;
  }
  return(Llist);
}










//******************************************************************************
// FUNCTION:
// ARGUMENT:
// RETURNS :
//******************************************************************************
function sh_fileListPrn(Vvar, Vpath)
{
  var Llist;
  Llist = sh_fileList(Vpath);
  response.write("\n");
  response.write(String.fromCharCode(60) + "SCRIPT language=\"JavaScript\">\n");

  response.write("var " + Vvar + "=new Array(" + Llist.length + ");\n");
  for(i=0; i<Llist.length; i++)
  {
    response.write(Vvar + "[" + i + "]=\"" + Llist[i] + "\";\n");
  }
  response.write("</SCRIPT" +  String.fromCharCode(62) + "\n");
  response.write("\n");
}










//******************************************************************************
// FUNCTION:
// ARGUMENT:
// RETURNS :
//******************************************************************************
function sh_s2a(Vstr, Vchr)
{
  var Lres;
  if(Vchr==null) Vchr=",";
  Lres = Vstr.split(Vchr);
  return(Lres);
}










//******************************************************************************
// FUNCTION: get current date
// ARGUMENT: 1 (string) separator / NULL = "-"
// ARGUMENT: 2 (bool) format null=2005-01-06 true=06-01-2005
// RETURNS : formated date: 2005-01-06  or  06-01-2005 if Inv=true
//******************************************************************************
function sh_date(Vchar, Linv)
{
  Lchar = "-";
  if(Vchar) Lchar = Vchar;

  Lobj = new Date();
  Lyear = Lobj.getFullYear();
  Lmonth = "" + (Lobj.getMonth()+1);
  if(1 == Lmonth.length) Lmonth = "0" + Lmonth;
  Lday = "" + (Lobj.getDate());
  if(1 == Lday.length) Lday = "0" + Lday;

  if(Linv)
    Ldate = Lday + Lchar + Lmonth + Lchar + Lyear;
  else
    Ldate = Lyear + Lchar + Lmonth + Lchar + Lday;
  return Ldate;
}










//******************************************************************************
// FUNCTION: fades imgs  & texts and maybe more
// ARGUMENT: 1 HTML object id
// globals
//******************************************************************************
sh_gbl_ie5 = (document.all && document.getElementById);
sh_gbl_ns6 = (!document.all && document.getElementById);
var shImgFadeOpac = 0;
var shImgFadeTime = 0;



//******************************************************************************

//******************************************************************************
function shImgFadeEx(Vid, Vop)
{
  if(sh_gbl_ie5) document.getElementById(Vid).filters.alpha.opacity = Vop;
  if(sh_gbl_ns6) document.getElementById(Vid).style.MozOpacity = Vop/100;
}



function xshImgFadeIn(Vid)
{
  clearInterval(shImgFadeTime);
  if(shImgFadeOpac != 100)
  {
    shImgFadeOpac+=2;
/*
    if(sh_gbl_ie5) document.getElementById(Vid).filters.alpha.opacity = shImgFadeOpac;
    if(sh_gbl_ns6) document.getElementById(Vid).style.MozOpacity = shImgFadeOpac/100;
*/
//alert(Vop);
//    shImgFadeEx(Vid, shImgFadeOpac);
    shImgFadeTime = setInterval('shImgFadeIn(\"'+Vid+'\")', 10);
  }
}










//******************************************************************************
//******************************************************************************
function xshImgFadeOut(Vid)
{
  clearInterval(shImgFadeTime);
  if(shImgFadeOpac != 0)
  {
    shImgFadeOpac-=2;
/*
    if(sh_gbl_ie5) document.getElementById(Vid).filters.alpha.opacity = shImgFadeOpac;
    if(sh_gbl_ns6) document.getElementById(Vid).style.MozOpacity = shImgFadeOpac/100;
*/
//    shImgFadeEx(Vid, shImgFadeOpac);
    shImgFadeTime = setInterval('shImgFadeOut(\"'+Vid+'\")', 10);
  }
}


function doNix(Vo) { var x=0; /*alert(Vo);*/}

function shImgFadeIn(Vid, Vo)
{
  if(isNaN(Vo)) Vo=0;
  clearInterval(shImgFadeTime);
  shImgFadeEx(Vid, Vo);
  if(Vo == 100) return;
//shImgFadeTime=  setInterval('doNix('+Vo+')', 100);
  shImgFadeTime = setInterval('shImgFadeIn(\"'+Vid+'\",' +(5+Vo)+ ')', 1);
}




var shImgFadeTimeOut;
function shImgFadeOut(Vid, Vo)
{
  if(isNaN(Vo)) Vo=100;
  //Ltmp="LtimeX" + Vid;
  //eval("clearInterval("+Ltmp+");");
  clearInterval(shImgFadeTimeOut);
  shImgFadeEx(Vid, Vo);
  if(Vo <= 0) return;
  Ltime = setInterval('shImgFadeOut(\"'+Vid+'\",' +(Vo-5)+ ')', 1);
  shImgFadeTimeOut = Ltime;
  //Ltmp="LtimeX" + Vid + "=Ltime";
//  eval(Ltmp);
}










//******************************************************************************
//******************************************************************************
function allValidChars(email)
{
  var parsed = true;
  var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
  for (var i=0; i < email.length; i++) {
    var letter = email.charAt(i).toLowerCase();
    if(validchars.indexOf(letter) != -1)
      continue;
    parsed = false;
    break;
  }
  return parsed;
}

function shCheckMail(email)
{
  required=true;
  if(email==null)return false;
  if(email.length==0) return false;

  if(!allValidChars(email)) {  // check to make sure all characters are valid
      return false;
  }
  if(email.indexOf("@") < 1) { //  must contain @, and it must not be the first character
      return false;
  } else if(email.lastIndexOf(".") <= email.indexOf("@")) {  // last dot must be after the @
      return false;
  } else if(email.indexOf("@") == email.length) {  // @ must not be the last character
      return false;
  } else if(email.indexOf("..") >=0) { // two periods in a row is not valid
  return false;
  } else if(email.indexOf(".") == email.length) {  // . must not be the last character
  return false;
  }
  return true;
}
//******************************************************************************
//******************************************************************************
