//******************************************************************* "constants-like" vars
// they can/should be overriden on pages, but this script won't  change them
var pg_mainTitle="", pg_subTitle="";
var pg_logoLeft="", pg_logoRight="", pg_vMenuImg="",
    pg_btnPrintView="", pg_btnScreenView="", pg_backgrndImg="";
var pg_hMenu=null, pg_vMenu=null;
// the following "pg_minMenuWidth" var exists for a very special reason:
//  in the onload event, the "content" div is to be pushed left by vertical-menu left+offsetWidth
//  If the vertical menu items contain images, the offsetWidth does not know their
//  size, so it's equal only to text-width; UNLESS the images are already in the cache,
//  and then their size is known and included in offsetWidth!!!
//  This cannot be resolved in javascript, so set it initilally to an "expected" value
//  and use the max("expected", menu.left+menu.offsetWidth) in the onLoad event
//  If images in vert menu does not change its size needed by text, leave it to 0
var pg_minMenuWidth=0;
var pg_frameSet="frameSet.htm";  // which frames page to use for simple view

//************************************************************************ global variables
var pg_printerFriendly;

//******************************************************************************* pg_init()
function pg_init()
{
if (this.window!=this.window.top) // if in frame, keep only the core page
  { frm_writeMenu(pg_hMenu, true); frm_writeMenu(pg_vMenu, false); return; }
var content=pg_createContent();
document.body.appendChild(pg_createPrintViewBtn());
document.body.appendChild(pg_createHeaders());
if (pg_hMenu) menu_insert("siteHrzMenu", pg_hMenu, "", true);
if (pg_vMenu)
  {
  menu_insert("siteVrtMenu", pg_vMenu, pg_vMenuImg, false);
  if (ldr_microsoft) document.body.onscroll=pg_onScroll;
  else document.onscroll=pg_onScroll;
  }
document.body.appendChild(content);
var view=util_extractParameter("mode", location.search);
pg_printerFriendly=(view && view.toLowerCase()=="printerfriendly");
pg_placePageParts();
}

//********************************************************************** pg_createContent()
function pg_createContent()
{
var node;
node=document.createElement("div");
node.id="content";
var more=true;
while (more)
  {
  more=false;
  contentNodes=document.body.childNodes;
  for (var i=0; i<contentNodes.length; i++)
    {
    if (contentNodes.item(i).nodeName.toLowerCase()=="script") continue;
    node.appendChild(document.body.removeChild(contentNodes.item(i)));
    more=true; break;
    }
  }
return node;
}

//************************************************************************** pg_createImg()
function pg_createImg(src, clss, id, alt)
{
var node=document.createElement("img");
node.src=src;
if (clss.length) node.className=clss;
if (id.length) node.id=id;
if (alt.length) node.alt=alt;
return node;
}

//*********************************************************************** pg_createHeaders()
function pg_createHeaders()
{
var divHeaders=document.createElement("div");
divHeaders.id="headers";
if (pg_logoLeft.length || pg_logoRight.length)  // add raster logos, if defined
  {
  var divLogos=document.createElement("div");
  divLogos.id="siteLogos";
  if (pg_logoLeft.length) divLogos.appendChild(pg_createImg(pg_logoLeft, "", "", ""));
  if (pg_logoRight.length) divLogos.appendChild(pg_createImg(pg_logoRight, "spaced", "", ""));
  divHeaders.appendChild(divLogos);
  }
if (pg_mainTitle.length || pg_subTitle.length)  // add text titles, if defined
  {
  var divTitles=document.createElement("div");
  divTitles.id="siteTitles";
  if (pg_mainTitle.length)
    {
    var p1=document.createElement("p");
    p1.className="siteTitle";
    p1.innerHTML=pg_mainTitle;
    divTitles.appendChild(p1);
    }
  if (pg_subTitle.length)
    {
    var p2=document.createElement("p");
    p2.className="siteSubTitle";
    p2.innerHTML=pg_subTitle;
    divTitles.appendChild(p2);
    }
  divHeaders.appendChild(divTitles);
  }
if (pg_hMenu || pg_vMenu)  // add menus, if defined
  {
  var btnNode=pg_createImg(pg_btnScreenView, "", "viewBtnScreen", "Print Friendly");
  btnNode.onclick=function() { pg_printerFriendly=true; pg_placePageParts(); }
  divHeaders.appendChild(btnNode);
  if (pg_hMenu)
    {
    var divHorzMenu=document.createElement("div");
    divHorzMenu.setAttribute("id", "siteHrzMenu", "now");
    divHeaders.appendChild(divHorzMenu);
    }
  if  (pg_vMenu)
    {
    var divVertMenu=document.createElement("div");
    divVertMenu.setAttribute("id", "siteVrtMenu", "now");
    divHeaders.appendChild(divVertMenu);
    }
  }
return divHeaders;
}

//****************************************************************** pg_createPrintViewBtn()
function pg_createPrintViewBtn()
{
var node=pg_createImg(pg_btnPrintView, "", "viewBtnPrint", "Screen Friendly");
node.onclick=function() { pg_printerFriendly=false; pg_placePageParts(); }
return node;
}

//********************************************************************* pg_placePageParts()
function pg_placePageParts()
{
var headers=document.getElementById("headers");
var content=document.getElementById("content");
if (!headers || !content) { alert("no headers of content found\n"); return; }
if (pg_printerFriendly)
  {
  headers.style.display="none";
  document.body.style.backgroundImage="none";
  var printViewBtn=document.getElementById("viewBtnPrint");
  content.style.paddingLeft=(parseInt(printViewBtn.width)+5)+"px"
  printViewBtn.style.display="block";
  }
else
  {
  if (pg_backgrndImg) document.body.style.backgroundImage='url("'+pg_backgrndImg+'")';
  var left=pg_minMenuWidth;
  var vMenu=document.getElementById("siteVrtMenu"),
      hMenu=document.getElementById("siteHrzMenu"),
      titles=document.getElementById("siteTitles"),
      logos=document.getElementById("siteLogos");
  headers.style.display="block";
  if (pg_vMenu)
     left=Math.max(left, util_calcOffsetLeft(vMenu)+vMenu.offsetWidth);
  if (logos) logos.style.paddingLeft=(left+10)+"px";
  if (titles) titles.style.paddingLeft=(left+15)+"px";
  if (pg_hMenu) hMenu.getElementsByTagName("div").item(0).style.paddingLeft=left+"px";
  content.style.paddingLeft=(left+20)+"px";
  document.getElementById("viewBtnPrint").style.display="none";
  if (pg_vMenu || pg_hMenu) document.body.style.margin="1px";
  }
}

//***************************************************************** pg_setPrinterFriendly()
function pg_setPrinterFriendly(val)
{
if (pg_printerFriendly!=val) { pg_printerFriendly=val; pg_placePageParts(); }
}

//************************************************************************* pg_showFramed()
function pg_showFramed(state)
{
var isFramed=(top.frames.length!=0);
if (isFramed==state) return;
var frameSet=ldr_makeRelativeLink(pg_frameSet);
var ref=ldr_makeRelativeLink(document.location.href);
if (state) window.location.replace(frameSet+"?goTo="+ref);
else top.window.location.replace(ref);
}

//******************************************************************************************
// a handler for window's onscroll event
//**************************************************************************** pg_onScroll()
function pg_onScroll(evt)
{
var topEdgeMargin=10;  // must be same as in tne style sheet
if (pg_printerFriendly) return;
var vMenuElement=document.getElementById("siteVrtMenu");
var yAmount=0;
if (document.documentElement.clientHeight>1.2*vMenuElement.scrollHeight)
  yAmount=(!ldr_microsoft)?window.pageYOffset:document.documentElement.scrollTop;
  //document.documentElement.scrollTop won't work with chrome (it does with firefox!)
vMenuElement.style.top=(yAmount+topEdgeMargin)+"px";
}

