// base folder name
// NOTE: all html chunks using this var MUST be built in functions!
var navbase='';

// place here the text of latest news!
var WhatsNew='<b>26.11.2004</b><br><b>DM2003 <font color="#FF0000">final release</font></b> '+
'(build #195) and new branding <a href="http://www.datamaster2003.com">web site</a> are ready for use!!! ';

var showCurtains=false;   // set false to supress curtains

// browser detection
var nn4=(document.layers) ? true : false;
var ie4=(document.all) ? true : false;

////////////////////// DESIGN BUILD ////////////////////// 

// page banner

function buildBannerRow()
{
var BannerRow='<tr><td colspan="3" class="BannerCell" height="60" background="'+
navbase+'design/banbkg.gif">&nbsp;Data Master 2000&nbsp;</td></tr>';

var BannerRowIE5='<tr><td colspan="3"><table border="0" width="100%" cellspacing="0" '+
'cellpadding="0" class="BannerTableIE5"><tr><td class="BannerCellIE5" width="100%" '+
'height="60" nowrap>&nbsp;Data Master 2000&nbsp;</td></tr></table></td></tr>';

var av=navigator.appVersion;
var msie4=(av.indexOf('MSIE 4')>0);
if ((!ie4) || msie4) {return BannerRow} else {return BannerRowIE5};
};

// horizontal menu

var HMenuItems=new Array(
'Home',
'Download',
'Manuals',
'Sources');

var HMenuHints=new Array(
'Data Master 2000 home page',
'Software archives download page',
'Data Master 2000 online manuals',
'Help on DM2000 VCL library');

var HMenuHrefs=new Array(
'dm2000',
'download',
'manuals',
'sources');

function BuildMenuRow()
{
var HMenuRow='<table class="BlockHead" height="22" border="0" '+
'cellpadding="0" cellspacing="0" width="100%"><tr>';
if (!ie4) {HMenuRow+='<td class="BlockHead" nowrap>'};
for (i=0; i<HMenuItems.length; i++)
if (ie4) 
{
 HMenuRow+='<td class="HMenuNormalIE" onmouseover="HMenuOn(this,'+i+');" '+
 'onmouseout="HMenuOff(this);" onclick="HMenuClk('+i+')">&nbsp;<img src="'+navbase+
 'design/'+HMenuHrefs[i]+'.gif" width="16" height="16" border="0" align="absmiddle">&nbsp;'+
 HMenuItems[i]+'&nbsp;&nbsp;</td><td width="1" class="HMenuDivider"><img '+
 'src="'+navbase+'design/clear.gif" width="1" height="1" border="0"></td>';
} else
{
 HMenuRow+='&nbsp;<img align="absbottom" src="'+navbase+
 'design/'+HMenuHrefs[i]+'.gif" width="16" height="16" border="0"> '+
 '&nbsp;<a class="BlockHeadLink" href="'+navbase+HMenuHrefs[i]+
 '.htm">'+HMenuItems[i]+'</a>&nbsp;|';
};
if (!ie4) {HMenuRow+='</td>'};

// EMAIL link
HMenuRow+='<td class="BlockHead" align="right" nowrap';
if (ie4) {HMenuRow+=' width="100%"'};
HMenuRow+='><a class="BlockHeadLink" href="http://www.datamaster2003.com">DM2003</a>&nbsp;|&nbsp;<img src="'+navbase+
'design/mail.gif" width="16" height="16" border="0" align="absmiddle">&nbsp;<a class="BlockHeadLink" '+
'href="mailto:rrr4@hotmail.com?subject=DM2000">E-mail</a>&nbsp;&nbsp;&nbsp;</td>';
HMenuRow+='</tr></table>'; return HMenuRow;  // close menu table
};

// dividers
function BuildDividerLine(vertical)
{
var DividerLine='class="DividerLine"><img border="0" src="'+navbase+
'design/clear.gif" width="1" height="1"></td>';
if (vertical) {return '<td width="1" '+DividerLine} else 
{return '<tr><td colspan="3" height="1" '+DividerLine+'</tr>'};
};

// page footer

function BuildFooter()
{
return '<tr><td colspan="3"><table border="0" width="100%" cellspacing="0" cellpadding="0">'+
'<tr><td class="Footer">&copy; 2003 <a href="http://rrr.datamaster2003.com" '+
'class="BlackLink">RRR</a>.  All rights reserved.&nbsp;<a href="'+
navbase+'disclaim.htm" class="BlackLink">Terms of use.</a></td><td align="right" '+
'class="Footer"><a href="#top" class="BlackLink"><img border="0" src="'+
navbase+'design/top.gif" hspace="4" align="absbottom" width="9" height="11">Top</a>'+
'&nbsp;&nbsp;&nbsp;<a href="'+window.location+'?print" class="BlackLink"><img border="0" src="'+
navbase+'design/printer.gif" align="absbottom" hspace="4" width="15" '+
'height="11">Printable version</a></td></tr></table></td></tr>';
};

// leftside menu

var LMenuGeneralItems=new Array(
'About',
'Screenshots',
'Links',
'Applications',
'Actions',
'Dialogs',
'Windows',
'VCL objects',
'COM objects');

var LMenuGeneralHrefs=new Array(
'about.htm',
'scrshots.htm',
'links.htm',
'about.htm#app',
'usrguide.htm#actions',
'usrguide.htm#dialogs',
'usrguide.htm#windows',
'sources.htm',
'pgmguide.htm#howto');

var LMenuDialogsItems=new Array(
'Application',
'Axis options',
'Serie options',
'Worksheet',
'Page setup',
'DM2000 setup',
'Base line',
'Calculator',
'Digitizer',
'Linear fitter',
'NLSF fitter',
'NLSF options',
'Speed tester',
'Transformation',
'Function copy');

var LMenuDialogsHrefs=new Array(
'apppropsform.htm',
'axispropsform.htm',
'seriepropsform.htm',
'worksheetpropsform.htm',
'pagesetupform.htm',
'setupform.htm',
'baselineform.htm',
'calculatorform.htm',
'digitizerform.htm',
'linearfitform.htm',
'nlsfform.htm',
'nlsfoptionsform.htm',
'speedtestform.htm',
'transformationform.htm',
'functioncopyform.htm');

var LMenuWindowsItems=new Array(
'Notes window',
'Script window',
'Minibrowser',
'Serie manager',
'Monitor',
'Main window',
'Data window');

var LMenuWindowsHrefs=new Array(
'notesform.htm',
'scriptingform.htm',
'browserform.htm',
'seriemgrform.htm',
'monitorform.htm',
'mainform.htm',
'dataform.htm');

var LMenuActionsItems=new Array(
'File commands',
'Edit commands',
'View commands',
'Plot tools',
'Plot scaling',
'Data analysis');

var LMenuActionsHrefs=new Array(
'actfile.htm',
'actedit.htm',
'actview.htm',
'actplot.htm',
'actscale.htm',
'actproc.htm');

var LMenuVCLItems=new Array(
'TContainer',
'TPlot',
'TWorksheet',
'TAxis',
'TSerie',
'TMathParser');

var LMenuVCLHrefs=new Array(
'libcont.htm',
'libplot.htm',
'libwks.htm',
'libaxis.htm',
'libserie.htm',
'libparse.htm');

var LMenuCOMItems=new Array(
'Application',
'App Events',
'Document',
'Container',
'Worksheet',
'Plot',
'Plot axis',
'Plot serie',
'Notes');

var LMenuCOMHrefs=new Array(
'idmapp.htm',
'idmappev.htm',
'idmdoc.htm',
'idmcont.htm',
'idmwks.htm',
'idmplot.htm',
'idmaxis.htm',
'idmserie.htm',
'idmnotes.htm');

var LMenuAppItems=new Array(
'EPR spectrometer',
'MW spectrometer',
'GM measurements',
'DC conductivity',
'AC conductivity');

var LMenuAppHrefs=new Array(
'facil/epr.htm',
'facil/mw.htm',
'facil/gm.htm',
'facil/ro.htm',
'facil/ac.htm');

// define index in general and custom categories

var idxGeneral=-1;
var idxCategory=-1;
var PHREF=window.location.href;  

// note: category root page also included in search!!!
for (i=0; i<LMenuGeneralHrefs.length; i++)
{ if (PHREF.indexOf(LMenuGeneralHrefs[i])>0) {idxGeneral=i}; }

// search Actions category
for (i=0; i<LMenuActionsHrefs.length; i++)
{ if (PHREF.indexOf(LMenuActionsHrefs[i])>0) {idxGeneral=4; idxCategory=i;}; }

// search Dialogs category
for (i=0; i<LMenuDialogsHrefs.length; i++)
{ if (PHREF.indexOf(LMenuDialogsHrefs[i])>0) {idxGeneral=5; idxCategory=i;}; }

// search Windows category
for (i=0; i<LMenuWindowsHrefs.length; i++)
{ if (PHREF.indexOf(LMenuWindowsHrefs[i])>0) {idxGeneral=6; idxCategory=i;}; }

// search VCL category
for (i=0; i<LMenuVCLHrefs.length; i++)
{ if (PHREF.indexOf(LMenuVCLHrefs[i])>0) {idxGeneral=7; idxCategory=i;}; }

// search COM category
for (i=0; i<LMenuCOMHrefs.length; i++)
{ if (PHREF.indexOf(LMenuCOMHrefs[i])>0) {idxGeneral=8; idxCategory=i;}; }

// search App category (notice: NO ROOT file!)
for (i=0; i<LMenuAppHrefs.length; i++)
{ if (PHREF.indexOf(LMenuAppHrefs[i])>0) {idxGeneral=-2; idxCategory=i;}; }

function BuildBlockHeader(Header)
{
return '<tr><td class="BlockHead" height="22"><img border="0" src="'+navbase+
'design/clear.gif" align="texttop" width="14" height="1">'+Header+'</td></tr>';
};

function BuildMarginCol()
{                                // V global width of all blocks defined here!
var MarginCol='<table border="0" width="120" cellspacing="0" cellpadding="0">';

// build General category caption
MarginCol+=BuildBlockHeader('DM 2000');

for (i=0; i<LMenuGeneralItems.length; i++)
if (ie4)
{
  if (i==idxGeneral)
  {
  MarginCol+='<tr><td height="18" class="LMenuNormalIE" onmouseover="LMenuOn(this);" '+
  'onmouseout="LMenuOff(this);" onclick="LMenuClk('+i+',LMenuGeneralHrefs)"><img '+
  'border="0" src="'+navbase+'design/dot.gif" align="texttop" '+
  'width="14" height="14">'+LMenuGeneralItems[i]+'</td></tr>';
  }
  else
  {
  MarginCol+='<tr><td height="18" class="LMenuNormalIE" onmouseover="LMenuOn(this);" '+
  'onmouseout="LMenuOff(this);" onclick="LMenuClk('+i+',LMenuGeneralHrefs)"><img '+
  'border="0" src="'+navbase+'design/clear.gif" align="texttop" '+
  'width="14" height="1">'+LMenuGeneralItems[i]+'</td></tr>';
  };
} else
{
  MarginCol+='<td height="18" class="Block"><img border="0" src="'+navbase;
  if (i==idxGeneral) 
  {MarginCol+='design/dot.gif" height="14" ';} else 
  {MarginCol+='design/clear.gif" height="1" ';};
  MarginCol+='width="14" align="texttop"><a class="BlockLink" href="'+navbase+
  LMenuGeneralHrefs[i]+'">'+LMenuGeneralItems[i]+'</a></td></tr>';
};

// build Custom category caption (NOTE: it is NESTED into the BuildMarginCol()!!!)
function buildCustomCat(Items, Hrefs, HrefsName)
{
for (i=0; i<Items.length; i++)
if (ie4)
{
  if (i==idxCategory)
  {
  MarginCol+='<tr><td height="18" class="LMenuNormalIE" onmouseover="LMenuOn(this);" '+
  'onmouseout="LMenuOff(this);" onclick="LMenuClk('+i+','+HrefsName+')"><img '+
  'border="0" src="'+navbase+'design/dot.gif" align="texttop" '+
  'width="14" height="14">'+Items[i]+'</td></tr>';
  }
  else
  {
  MarginCol+='<tr><td height="18" class="LMenuNormalIE" onmouseover="LMenuOn(this);" '+
  'onmouseout="LMenuOff(this);" onclick="LMenuClk('+i+','+HrefsName+')"><img '+
  'border="0" src="'+navbase+'design/clear.gif" align="texttop" '+
  'width="14" height="1">'+Items[i]+'</td></tr>';
  };
} else
{
  MarginCol+='<td height="18" class="Block"><img border="0" src="'+navbase;
  if (i==idxCategory) 
  {MarginCol+='design/dot.gif" height="14" ';} else 
  {MarginCol+='design/clear.gif" height="1" ';};
  MarginCol+='width="14" align="texttop"><a class="BlockLink" href="'+
  navbase+Hrefs[i]+'">'+Items[i]+'</a></td></tr>';
};
}; // end of buildCustomCat()

if (showCurtains)
{
  MarginCol+='<tr><td height="20">&nbsp;</td></tr>'; // write spacer
  MarginCol+=BuildBlockHeader("What's cool");
  MarginCol+='<tr><td class="Block" height="120">&nbsp;'+BuildCurtains()+'</td></tr>';
};

MarginCol+='<tr><td height="20">&nbsp;</td></tr>'; // write spacer between blocks

if ((idxGeneral>3)||(idxGeneral==-2)) // custom category exists!
{
  if (idxGeneral>3)                  // write category header
  {
    MarginCol+=BuildBlockHeader(LMenuGeneralItems[idxGeneral]);   
    if (idxGeneral==4) buildCustomCat(LMenuActionsItems,LMenuActionsHrefs,'LMenuActionsHrefs');
    if (idxGeneral==5) buildCustomCat(LMenuDialogsItems,LMenuDialogsHrefs,'LMenuDialogsHrefs');
    if (idxGeneral==6) buildCustomCat(LMenuWindowsItems,LMenuWindowsHrefs,'LMenuWindowsHrefs');
    if (idxGeneral==7) buildCustomCat(LMenuVCLItems,LMenuVCLHrefs,'LMenuVCLHrefs');
    if (idxGeneral==8) buildCustomCat(LMenuCOMItems,LMenuCOMHrefs,'LMenuCOMHrefs');
  }
  else                               // special Applications category w/o General entry
  {
    MarginCol+=BuildBlockHeader('Applications');
    buildCustomCat(LMenuAppItems, LMenuAppHrefs, 'LMenuAppHrefs');
  };
} else // no custom category -> build news block instead!
{
  MarginCol+=BuildBlockHeader("What's new");
  MarginCol+='<tr><td class="Block"><table border="0" cellpadding="0" cellspacing="6">'+
  '<tr><td class="Block">'+WhatsNew+'<div align="center"><a class="BlockLink" href="'+navbase+
  'news.htm">More news >></a></div></td></tr></table></td></tr>'; 
};

MarginCol+='<tr><td height="30">&nbsp;</td></tr>'; // this spacer divides mirror list

// build mirrors links
/*
var pagefilename=PHREF.substr(PHREF.lastIndexOf('/'));
if (PHREF.indexOf('distrib')>0) {pagefilename='/distrib'+pagefilename;};   // correct path!
if (PHREF.indexOf('facil')>0) {pagefilename='/facil'+pagefilename;};
if (PHREF.indexOf('wm')>0) {pagefilename='/wm'+pagefilename;};

if (!(PHREF.indexOf('gpi')>0)) MarginCol+='<tr><td height="20" align="center"><a '+
'class="BlackLink" href="http://at14.smp.gpi.ru/dm2000'+pagefilename+
'"><b>GPI mirror</b></a></td></tr>';
if (!(PHREF.indexOf('tripod')>0)) MarginCol+='<tr><td height="20" align="center"><a '+
'class="BlackLink" href="http://datamaster2000.tripod.com'+pagefilename+
'"><b>Tripod mirror</b></a></td></tr>';
if (!(PHREF.indexOf('denco')>0)) MarginCol+='<tr><td height="20" align="center"><a '+
'class="BlackLink" href="http://www.denco-computing.com/dm2000'+pagefilename+
'"><b>UK mirror</b></a></td></tr>';
*/

MarginCol+='<tr><td height="30" align="center"><a href="http://www.datamaster2003.com">'+
'<b>Data Master 2003</b></a></td></tr>'; 

MarginCol+='<tr><td height="30" align="center"><a href="http://www.denco-computing.com" '+
'target="_blank">Denco Computing</a></td></tr>'; 
MarginCol+='<tr><td height="100" align="center">'+BuildSiteMeter()+'</td></tr>'; // sitemeter
MarginCol+='</table>'; // close left menu table

return MarginCol;
};

// curtains definition (all 3 arrays MUST have equal size!!!)

var curtBanners=new Array(
'objects.jpg',
'dsp.gif',
'ixbt.jpg');

var curtHrefs=new Array(
'http://www.microsoft.com/ie',
'http://sunsite.icm.edu.pl/delphi',
'http://ixbt.stack.net');

var curtHints=new Array(
'Download Internet Explorer',
'Delphi Super Page logo',
'iXBT Hardware');

function BuildCurtains()
{
var curtains='';
if (!(ie4 || nn4))
{
var rndcurt=Math.round(Math.random()*(curtBanners.length-1)+1)-1;
curtains='<a href="'+curtHrefs[rndcurt]+'" target="_blank"><img src="'+navbase+'banners/'+
curtBanners[rndcurt]+'" width="100" height="100" border="0" hspace="5"'+
'alt="'+curtHints[rndcurt]+'"></a>'; 
} else {
for (i=0; i<curtHrefs.length; i++)
{ 
  curtains+='<div id="curtlayer'+i+'" class="CurtainLayer"><a href="'+
  curtHrefs[i]+'" target="_blank"><img src="'+navbase+'banners/'+
  curtBanners[i]+'" width="100" height="100" border="0" alt="'+
  curtHints[i]+'"></a></div>';
};};
return curtains;
}



////////////////////// MAIN BUILD FUNCTIONS //////////////////////

function buildTop()
{
if (window.location.search=='?print') return;
document.write('<table border="0" cellspacing="5" cellpadding="0">'+
buildBannerRow()+'<tr><td width="120" valign="top" align="center">'+
BuildMarginCol()+'</td>'+BuildDividerLine(true)+
'<td class="Data" valign="top">'+BuildMenuRow());
};

function buildBottom()
{
if (window.location.search=='?print') return;
document.write('</td></tr>'+BuildDividerLine(false)+BuildFooter()+'</table>');
};

    

////////////////////// SITEMETER COUNTER CODE //////////////////////

// Copyright (c)2000 Site Meter, Inc. 
// Modified by RRR for compatibility with DM2000 site navigation

function BuildSiteMeter()
{
var site="sm5dm2000"; // added by RRR

var g_server="sm5";
var g_date=new Date();
var g_hours=0;
var g_minutes=0;
var g_r="";
var g_rtype="0";

// Get the User Agent Name
var g_agent = navigator.appName;

// Get the referral for non-multi-domained-framed sites using a Netscape browser
if ((g_r == "") || (g_r == "unknown origin") || (g_r == "unknown") || (g_r == "undefined"))
	if (document["parent"] != null) 
		if (parent["document"] != null) // ACCESS ERROR HERE!
			if (parent.document["referrer"] != null) 
				if (typeof(parent.document) == "object")
				{
					g_rtype="1";
					g_r=parent.document.referrer; 
				}

// Get the referral for the current document if a framed referral wasn't found
if ((g_r == "") || (g_r == "unknown origin") || (g_r == "unknown") || (g_r == "undefined"))
	if (document["referrer"] != null) 
	{
		g_rtype="4";
		g_r = document.referrer;
	}

// Get the hours
if (g_date)
	g_hours=g_date.getHours();

// Get the minutes
if (g_date)
	g_minutes=g_date.getMinutes();

// Return the image url
var Res="<a href=\"http://" + g_server + ".sitemeter.com/"+
"stats.asp?site="+site+"\" target=_top>"+
"<img src=\"http://" + g_server + ".sitemeter.com/"+
"meter.asp?site="+site+ 
"&refer="+escape(g_r)+
"&hours="+g_hours+
"&minutes="+g_minutes+
"&rtype="+g_rtype+
"\" border=0 title=\"Site Meter\"></a>";
return Res;
}
      


////////////////////// CURTAIN SCRIPTLET CODE //////////////////////

function Curtain(n,w,h) // called once! 
// n - number of layers (0..n-1), w,h - width and height of layer
{
c_number=n;
c_width=w;
c_height=h;
c_nstep=50;
c_k=c_width-2*Math.floor(c_width/2);
c_delta=c_width/(c_nstep*2);	
c_direct=false;
c_j=0;
c_lay=Math.round(Math.random()*(n-1)+1);
var obj=showLayer(c_lay);
doCurtain(obj,c_width,c_number,c_height);
}

function doCurtain() 
// NOTE! uses internal vars of Curtain() !!!
{
setClip(obj,c_width/2-c_delta*c_j,c_width/2+c_delta*c_j+c_k,0,c_height);
c_tau=30;
if (c_direct) 
{ 
  if (c_j>0) {c_j-=1;} 
  else 
    {
      c_direct=!c_direct; c_lay++; 
      if (c_lay>c_number) {c_lay=1;}; 
      obj=showLayer(c_lay);
    }; 
}
else 
{
  if (c_j<c_nstep) {c_j+=1;} else {c_direct=!c_direct; c_tau=10000;};
}; 
setTimeout("doCurtain()", c_tau);
}

// next 2 functions work in both NN4.x and MSIE4.x!

function showLayer(n) // show layer
{
n--;
name="curtlayer"+n;
if (nn4) {obj=document.layers[name];}
else if (ie4) {obj=document.all[name].style;}
obj.visibility=(nn4)? "show" : "visible";
return obj;
}

function setClip(obj,l,r,t,b)  // set clip
{
if (nn4) 
{
  obj.clip.left=l;
  obj.clip.right=r;
  obj.clip.top=t;
  obj.clip.bottom=b;
}
else 
if (ie4) {obj.clip="rect("+t+" "+r+" "+b+" "+l+")";}
}	
        


////////////////////// runtime functions //////////////////////

function HMenuOn(el,i) 
{el.className="HMenuHighlightIE"; window.status=HMenuHints[i];}

function HMenuOff(el) 
{el.className="HMenuNormalIE"; window.status='';}

function HMenuClk(i) 
{window.location.href=navbase+HMenuHrefs[i]+'.htm';}

function LMenuOn(el) 
{el.className="LMenuHighIE";}

function LMenuOff(el) 
{el.className="LMenuNormalIE";}

function LMenuClk(i,Category) 
{window.location.href=navbase+Category[i];}

function checkLink()
{
return true;
}

function pageLoad()
{
// layer WIDTH AND HEIGHT - defined HERE! (size must correspond with *.css)
if (showCurtains && !(window.location.search=='?print') && (ie4 || nn4)) 
setTimeout("Curtain(curtBanners.length,100,100)", 5000); 
}

