Frame Layout Documentation
Java Script Windows
How The Java Script Tabs Picks Pages
Development Notes Silverlight

Frame Layout Developer Documentation


User Help
Program Code Introduction
Detail On The Major Files
JavaScript Syntax
Cascading Style Sheets (css)

User Help

  1. Pressing the link Location changes the site view from Frames to a Single Page
  2. Pressing the link Current Home changes the site view from a Single Page to Frames
  3. x Displays the pages in the Right Mouse Click Site Tour
  4. Note that different pages use different tree selections on the left screen.
  5. Pressing
    Montego Home
    places the site in its default frame display
The table below shows the frame names and directory path of the pages:
FRAME name=fraToolbar src=frameToolbar.htm
FRAME name=fraWestFrame src=frameWest.htm FRAME name=fraContentFrame src=frameContent.htm
FRAME name=fraSearchTab src=frameWest/search.htm FRAME name=fraContentBar src=frameContent/contentbar.htm
FRAME name=fraDTBar src=frameWest/dtbar.htm FRAME name=fraContent src=frameContent/contenthome.htm
FRAME name=fraDeeptree src=frameWest/deeptree.htm
If you wish to see this Frame layout as JavaScript Windows (target=_top).  Or inside of this Frame JavaScript Windows [no target].

Program Code Introduction

Test The Values

The basis of this css and html WebSite is a page with three frame locations.
  1. A toolbar frame across the top of the screen.
  2. A search, treebar and tree group of frames to the left or west of the document
  3. A contentbar and contentpage to the right or east of the document

The content pages can either appear as part of the frame setup or in their own right
JavaScript window.document.referrer (not always reliable) or whether window.self.location equals and so forth can help with this determination.

<script type="text/javascript">
// Along with self==top Catching the exception can test the Frames existance. 
function isFrameSite(bitmap) {
    var xb=bitmap||0;
    var b = 0;

x = 0x01|0x02|0x04|0x08|0x10|0x20;
00000001 0x01	1  
00000010 0x02	2 
00000100 0x04	4 
00001000 0x08	8 
00010000 0x10  16 
00100000 0x20  32 
01000000 0x40  64
10000000 0x80 128
x &= ~
    if (xb > 0)
        if (xb & 0x01){if (top.fraToolbar != null) { if (top.fraToolbar.location != null) b |= 0x01; } }            
        if (xb & 0x02){if (top.fraWestFrame.fraSearchTab != null) {if (top.fraWestFrame.fraSearchTab.location != null)b |= 0x02;}}
        if (xb & 0x04){if (top.fraWestFrame.fraDTBar != null) {if (top.fraWestFrame.fraDTBar.location != null)b |= 0x04;}}
        if (xb & 0x08){if (top.fraWestFrame.fraDeeptree != null) {if (top.fraWestFrame.fraDeeptree.location != null)b |= 0x08;}}
        if (xb & 0x10){if (top.fraContentFrame.fraContentBar != null) {if (top.fraContentFrame.fraContentBar.location != null)b |= 0x10;}}
        if (xb & 0x20){if (top.fraContentFrame.fraContent != null) {if (top.fraContentFrame.fraContent.location != null)b |= 0x20;}}
        if (top.fraToolbar != null) {if (top.fraToolbar.location != null)b |= 0x01;}
        if (top.fraWestFrame.fraSearchTab != null) {if (top.fraWestFrame.fraSearchTab.location != null)b |= 0x02;}
        if (top.fraWestFrame.fraDTBar != null) {if (top.fraWestFrame.fraDTBar.location != null)b |= 0x04;}
        if (top.fraWestFrame.fraDeeptree != null) {if (top.fraWestFrame.fraDeeptree.location != null)b |= 0x08;}
        if (top.fraContentFrame.fraContentBar != null) {if (top.fraContentFrame.fraContentBar.location != null)b |= 0x10;}
        if (top.fraContentFrame.fraContent != null) {if (top.fraContentFrame.fraContent.location != null)b |= 0x20;}

	return b;

Detail On The Major Files


// this page should never load inside of another frame
if (top.location != self.location)
	top.location = self.location;


<script type="text/javascript">
function clickOnLocation(c,t)
	if ( isFrameSite() )
		if ( !(c==""||c==null||c=="undefined") )
		if (t==""||t==null||t=="undefined"){return;}
	else if ( !(c==""||c==null||c=="undefined") ) window.location=c;

The above function shows the main navigation for altering the content frame and optionally the tree anchor frame.
This frame page does not have a body. Its height is determined by the FRAMESET rows=64,* syntax in JScriptMain.htm
There is a problem with this if the user selects the right mouse and Open In New Window

frameWest.htm and frameContent.htm
These two frame pages are really wrappers for the action pages within the frames.

Directory frameWest
find.htm esbar.htm treedeep.htm
The height of these frames is determined by the FRAMESET rows=137,23,* syntax in frameWest.htm
The width of these frames is determined by the FRAMESET name=fstMain cols=280,* syntax in siteHome.htm or index.htm

Note    The Toolbar can be used to update the pages in the West tree and the right content page

Directory frameContent
contentbar.htm contenthome.htm

Directory jscript
Directory css

Directory footerCOMPANY

Directory images

Directory Location


JavaScript Syntax

The following represent the object syntax for the Frames.
Remember that window. is the default.
Note that .location is the Internet Explorer property for the URL

From any of the left or west frame pages they can access their own sets by:
parent.frames[0].document.bgColor='slateblue'	/* frameWest\search.htm   */
parent.frames[1].document.bgColor='slateblue'	/* frameWest\dtbar.htm    */
parent.frames[2].document.bgColor='slateblue'	/* frameWest\deeptree.htm */

  File Under Repair onwards, doodle notes follow

Cascading Style Sheets (css)


/SYSTEM/CurrentControlSet/Services/W3SVC/Parameters/Virtual Roots
C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\GuiDebug>dbgclr.exe
c:\Program Files\Microsoft Visual Studio .NET 2003\ SDK\ v1.1\ QuickStart\ winforms\ samples\ axhosting\ cs\ document.cs

"The project location is not fully trusted." Problem: A user is unable to develop programs with Visual Studio .NET, getting the error message "The project location is not fully trusted." This typically happens when using a network drive or a roaming user environment. It may also happen when running a compiled .NET program.
Solution: The computer needs to be told that network drives are safe places on which to run .NET code. Log in as administrator on the affected PC.
Open C:\winnt\Microsoft.NET\Framework\v1.0.3705\mscorcfg.msc (location may vary slightly).
Right click on Runtime Security Policy. Choose "Adjust Security." Set Local Intranet to FullTrust.

C:\program files\navnt\activity.log {strings activity.log} The file was authorized.z Script Blocking detected suspicious activity. File: devenv.exe Object: FileSystem Object Activity: GetSpecialFolder The file TAKEON.DOC in compressed file C:\floppy\2\TAKEON.ZIP was infected with the WM.Concept (Damaged) virus. C:\floppy\2\TAKEON.ZIP This script was stopped. Script Blocking detected suspicious activity. File: C:\Program Files\Web Code Expert\codeex.hta Object: Windows Script Host Shell Object Activity: RegWrite The file was authorized. Script Blocking detected suspicious activity. File: C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Samples\Technologies\Interop\Applications\ComServices\ BankAdmin\installSamplebank.Vbs Object: Windows Script Host Shell Object Activity: Run STARTUP ? "C:\Program Files\Microsoft Office\Office\OSA9.EXE" -b -l


%comspec% /k "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat" // --- ----------------------------------------------------------------------------------------------------------------
// --- DEVELOPER: JAVA ODBC (for SqlServer) DATABASE OPEN -------------------------------------------------------------
new sun.jdbc.odbc.JdbcOdbcDriver(); // Register the driver with DriverManager
Connection db = DriverManager.getConnection("jdbc:odbc:Corporate", userid, password); // Get a connection
// --- DEVELOPER: JAVA ODBC (for SqlServer) DATABASE OPEN -------------------------------------------------------------
// --- ----------------------------------------------------------------------------------------------------------------
public DataTable GetProducts(int categoryID)
SqlConnection sqlConnection = new SqlConnection("server=(local)\\NetSDK;database=grocertogo;Trusted_Connection=yes");
SqlDataAdapter sqlAdapter1 = new SqlDataAdapter("Select * from Products where categoryid=" + categoryID, sqlConnection);
DataSet products = new DataSet(); sqlAdapter1.Fill(products, "products"); return products.Tables[0]; }
protected void Page_Load(Object Src, EventArgs E ) { String query = "select * from Titles where title_id = '" + GetBookIndex(DateTime.Now.Day) + "'";
String dsn = (String) ((NameValueCollection) Context.GetConfig("system.web/dsnstore"))["pubs"];
SqlConnection myConnection = new SqlConnection (dsn);
SqlDataAdapter myCommand = new SqlDataAdapter (query, myConnection);
DataSet ds = new DataSet(); myCommand.Fill(ds, "Titles");
DataView myData = ds.Tables["Titles"].DefaultView;
TitleId = myData[0]["title_id"].ToString();
Title = myData[0]["title"].ToString();
Category = myData[0]["type"].ToString();
Price = myData[0]["price"].ToString();
DataBind(); }


You can use the OleDbConnection, OleDbCommand, and OleDbDataAdapter classes to manage database connections. These classes are part of the System.Data.OleDb namespace, one of the constituents of ADO.NET.


Mike, To get detailed events you need to cast the axWebBrowser. Document to an mshtml.HTMLDocument. To do this takes a small bit of work:

  1. First you need to reference the mshtml library.
  2. To do that, go to the Solution Explorer, highlight "References" and right-click...
  3. then go to Add Reference...
  4. This brings up a dialog with some tabs.
  5. Select the COM tab and look for the item named "Microsoft HTML Object Library" and highlight it,
  6. then click Select and hit OK.
After you've done that, you can make the cast, set the event(s) you want to respond to, and move on with life. Here's a rough sample:
private void axWebBrowser1_DocumentComplete(object sender,
AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
mshtml.HTMLDocument doc = (mshtml.HTMLDocument)axWebBrowser1.Document;
mshtml.HTMLDocumentEvents2_Event iEvent = (mshtml.HTMLDocumentEvents2_Event) doc;
iEvent.onclick += new mshtml.HTMLDocumentEvents2_onclickEventHandler(ClickEventHandler);

private bool ClickEventHandler(mshtml.IHTMLEventObj e) // you can get this declaration syntax at the link below
MessageBox.Show(e.srcElement.getAttribute("href", 0).ToString());	// displays the full link clicked..."href" being the element of the link we want to know about
return true;														// returning true allows the event to be handled by the browser...which means it will try to load the page. If it's false, it does nothing (which means you can handle it personally)
This should get you started. If I had more time, I'd post a better sample. HTH, ShaneB


// Create a simple package containing a class with a single field (President).
package USA {
   class Head {
      static var President : String = "Bush";
// Create another simple package containing two classes.
// The class Head has the field PrimeMinister.
// The class Localization has the field Currency.
package UK {
   public class Head {
      static var PrimeMinister : String = "Blair";
   public class Localization {
      static var Currency : String = "Pound";
// Use another package for more specific information.
package USA.Florida {
   public class Head {
      static var Governor : String = "Bush";
// Declare a local class that shadows the imported classes.
   class Head {
      static var Governor : String = "Davis";

// Import the USA, UK, and USA.Florida packages.
import USA;
import UK;
import USA.Florida;

// Access the package members with fully qualified names.
// The Localization class is not shadowed locally, 
//     so it can be accessed with or without a fully qualified name.

Loading Assemblies When you specify /autoref- at the jsc.exe compilation command, there is no automatic association between namespaces and assemblies. You need to specify the assembly names explicitly. Use the /reference switch to do this. The syntax is simple: /reference:file[;file2] Since only one .exe file can be associated with a single application, your assemblies should be .dll files. In any case, when you compile with /target:winexe or /target:exe, do not pass to the /reference switch any assemblies created with /target:winexe or /target:exe. When you reference an Assembly A which references another assembly (B), you may need to reference Assembly B as well, if Assembly B inherits from Assembly A, or if Assembly A implements an interface from Assembly B. In order for the compiler to recognize types in an assembly, it needs to resolve these types first. You need to force the compiler to resolve these types by creating instances of these types, or by inheriting from these types. Here is an example for using the /reference switch: jsc /reference:metad1.dll;metad2.dll /out:out.exe input.js
The compiler searches for the assembly in the following order:
Current working directory, from where the compiler is invoked. The common language runtime system directory. Directories specified by /lib. Directories specified by the LIB environment variable. Here is an example using /lib:
jsc /lib:c:\ /reference:t2.dll t2.js

Java Script Windows  Development Notes Silverlight  Technical Site Documentation  How The Java Script Tabs Picks Pages