Html Application template

6 comments

The great thing about HTAs is that you can access the file system. Cool for a offline laptop / kiosk version of a web site. The database  can be replaced by XML data structure.


<html>
  <head>
    <title>Sky Game</title>
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <script language="JavaScript" src="html/common.js"></script>
       
    <HTA:APPLICATION
      ID="HTA_skyjump"
      APPLICATIONNAME="Sky game"
      ICON="images/favicon.ico"
      WINDOWSTATE="normal"
      BORDERSTYLE="normal"
      BORDER="thin"
      CAPTION="yes"
      MAXIMIZEBUTTON="yes"
      MINIMIZEBUTTON="no"
      SCROLL="no"
      SELECTION="no"
      SHOWINTASKBAR="yes"
      SINGLEINSTANCE="yes"
      SYSMENU="yes"
            VERSION="1.0">
  </head>
  <body leftmargin=0 marginwidth=0 topmargin=0 marginheight=0 bgcolor="#ffffff" onload="initSkyGameHTAWindow()">
   
        <!--WINDOWSTATE="maximize"-->
        <iframe frameborder="0" src="html/skygame.html" application="yes" width="100%" height="100%" scrolling="no" marginheight="0" marginwidth="0" id="mainhtaframe"/>
    </body>
</html>
 
 
contents of html/common.js:
 
// JavaScript Document
var structureLocation = '../data/structure.xml'
var source = null;
var compInfo = null;
var titleHeight = 18;
var         NS4 = (document.layers);
var         IE4 = (document.all);
var        ver4 = (NS4 || IE4);
var     isMac = (navigator.appVersion.indexOf("Mac") != -1);
var    isMenu = (NS4 || (IE4 && !isMac));
var loadStatic = false;
//var serviceAddress = "http://www.servername.com/saveoffline.asp"
var serviceAddress = "http://www.servername.com/saveoffline.asp"
var xmlHeader = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"   
var msg=''
// called by flash to save a vote in the xml dom database
function SetDetails(firstname,email,airport)
{
    //set global
    source = new ActiveXObject("Microsoft.XMLDOM");
    source.async = false;
   
    try
    {
       
        //var res = source.loadXML(result.value) // load from a string
        var res = source.load(structureLocation) // load from a file
       
        var xpath = "//database";
        var itemNode = source.selectSingleNode(xpath);
        if(itemNode)
        {
            var regNode = source.createElement("Registration")
            itemNode.appendChild(regNode)
            var s = " ";                     // Declare variables.
            var d = new Date();              // Create Date object with today's date.
            s += d.getYear() + "/";          // Get year.
            text = ''+(d.getMonth() + 1)     // Get month
            s += ((text.length==1)?'0'+text:text) + "/";  
            text = ''+(d.getDate())
            s += ((text.length==1)?'0'+text:text) + " ";          // Get day
            var c = ":";
            text = ''+d.getHours()
            s += ((text.length==1)?'0'+text:text) + c;       
            text = ''+d.getMinutes() ;         // Get Minutes
            s += ((text.length==1)?'0'+text:text) +  c;       
            text = ''+d.getSeconds() ;       // Get Seconds
            s += ((text.length==1)?'0'+text:text) +  c;       
            text = ''+d.getMilliseconds();        // Get Milliseconds
            s += ((text.length==2)?'0'+text:text) +  '.';       
               
            attrName = "datestamp"
            var attr = source.createAttribute(attrName)
            regNode.attributes.setNamedItem(attr)
            regNode.setAttribute(attrName, s)
          
            var node = source.createElement("FirstName")
            regNode.appendChild(node)
            node.text = firstname
           
            node = source.createElement("Email")
            regNode.appendChild(node)
            node.text = email
            node = source.createElement("Airport")
            regNode.appendChild(node)
            node.text = airport
            node = source.createElement("Source")
            regNode.appendChild(node)
            node.text = GetUserInfo()
           
            //save back to file
            source.save(structureLocation)
           
            //window.document.main.SetVariable("errMsg", "");
        }
    } catch(ex)
    {
           
        /*
        alert(''+
            'Failed :\n'+
            '    ex        ['+ex.message+']\n'+
            ''+
            '')
        */   
        window.document.main.SetVariable("errMsg", 'There was a failure to save, details follow: '+ex.message);
    }
}
// start game main window
function initSkyGameHTAWindow()
{
    window.offscreenBuffering = 1
    window.moveTo(0,0)
    window.resizeTo(screen.availWidth, screen.availHeight)
}
// start game
function initSkyGame()
{
    window.offscreenBuffering = 1
    window.resizeTo(screen.availWidth, screen.availHeight)
}
// send data back to the server
function initSendOnline()
{
     if(!IE4)alert('You can only run this using IE4 or better');return
   
    msg += '\n Send Online start ';showMessagebox(msg)       
   
    var dataIsland = document.getElementById('XMLID')
    msg += '\n Send data['+dataIsland+'] ';showMessagebox(msg)       
    //msg += '\n data inner html['+dataIsland.innerHTML+'] ';showMessagebox(msg)       
   
    var xmlText = dataIsland.innerHTML
    msg += '\n data length ['+xmlText.length+'] ';showMessagebox(msg)       
    msg += '\n data ['+xmlText+'] ';showMessagebox(msg)       
   
    msg += "\n create object";showMessagebox(msg)       
    source = new ActiveXObject("Microsoft.XMLDOM");
    msg += "\n set async";showMessagebox(msg)       
    source.async = false;
    msg += "\n Try load...";showMessagebox(msg)       
    try
    {
        var res = source.loadXML(xmlText) // load from an xml text stream
    } catch(ex)
    {
        msg += '\n ...There was a failure to load xml stream, details follow: '+ex.message;showMessagebox(msg)       
    }       
   
    msg += "\n Load result ["+res+"]";showMessagebox(msg)
    msg += "\n Number of nodes ["+source.childNodes[0].childNodes.length+"]";showMessagebox(msg)
    if(res)
    {     
        var url=serviceAddress
        msg += "\n serviceAddress ["+serviceAddress+"]";showMessagebox(msg)
        msg += "\n call server (async) ["+url+"]";showMessagebox(msg)
        makeRequestPost(url,"SaveCallback",'data='+escape(source.xml)+'&rnd='+ Math.floor(Math.random()*255))
    }else
    {
   
        msg += "\n Load xml from data island failed - stop. Please email ["+structureLocation+"] to jeremy@beweb.co.nz ";showMessagebox(msg)
    }
    msg += '\n Send Online end ';showMessagebox(msg)       
   
}
// send data back to the server
function initSend()
{
    source = new ActiveXObject("Microsoft.XMLDOM");
    source.async = false;
    msg += "\n Prepare to send file";showMessagebox(msg)       
    msg += "\n File name ["+structureLocation+"]";showMessagebox(msg)       
    msg += "\n Try load...";showMessagebox(msg)       
    try
    {
        var res = source.load(structureLocation) // load from an xml file
    } catch(ex)
    {
        msg += '\n ...There was a failure to load, details follow: '+ex.message;showMessagebox(msg)       
    }       
   
    msg += "\n Load result ["+res+"]";showMessagebox(msg)
    if(res)
    {     
        msg += "\n Loaded ok";showMessagebox(msg)
        //msg += "\n xml ["+escape(source.xml)+"]";showMessagebox(msg)       
       
        var url=serviceAddress
        msg += "\n serviceAddress ["+serviceAddress+"]";showMessagebox(msg)
        msg += "\n call server (async) ["+url+"]";showMessagebox(msg)
        makeRequestPost(url,"SaveCallback",'data='+escape(source.xml)+'&rnd='+ Math.floor(Math.random()*255))
       
    }    else
    {
   
        msg += "\n Load failed - stop. Please email ["+structureLocation+"] to jeremy@beweb.co.nz ";showMessagebox(msg)
    }
   
}
// load the template, replace the marker with the xml structure, then
function initCreateOnlineFormFromTemplate(http_request)
{
    msg += '\n Setup templates for Online Send';showMessagebox(msg)       
    //
    var templatename="html/sendreg_online.html.template"
    var outname="html/sendreg_online.html"
    msg += '\n read template['+templatename+']';showMessagebox(msg)       
  var ForReading = 1
    var ForWriting = 2
    var ForAppending = 8
  var fso, f
  fso = new ActiveXObject("Scripting.FileSystemObject")
   
    //msg += '\n mp path['+MapPath(templatename)+']';showMessagebox(msg)       
   
  f = fso.OpenTextFile(templatename, ForReading, 1)
  var htmlText = f.ReadAll()
  f.Close()
   
    //msg += '\n template contains['+escape(htmlText)+']';showMessagebox(msg)       
    msg += '\n htmlText length['+htmlText.length+']';showMessagebox(msg)       
    msg += '\n read xml ['+structureLocation+']';showMessagebox(msg)       
  f = fso.OpenTextFile('data/structure.xml', ForReading, 1)
  var xmlText = f.ReadAll()
  f.Close()
   
    //msg += '\n xml contains['+escape(xmlText)+']';showMessagebox(msg)       
    msg += '\n xml length['+xmlText.length+']';showMessagebox(msg)       
   
   
    msg += '\n write new file['+outname+']';showMessagebox(msg)       
    textOut= htmlText.replace(new RegExp("XXXMARKERXXX","gi"), xmlText)
    //msg += '\n new text['+escape(textOut)+']';showMessagebox(msg)       
    msg += '\n textOut length['+textOut.length+']';showMessagebox(msg)       
    msg += '\n open';showMessagebox(msg)       
  f = fso.OpenTextFile(outname, ForWriting, 1)
    msg += '\n write now';showMessagebox(msg)       
  f.Write(textOut)
    msg += '\n write done';showMessagebox(msg)       
  f.Close()
    msg += '\n close done';showMessagebox(msg)       
    //msg += '\n <a href="/sendreg_online.html" target="_blank">click here to export to web server</a> ';showMessagebox(msg)       
    msg += '\n An Internet Explorer window will be opened to send the data to the server. You should allow activex objects if prompted.';showMessagebox(msg)       
    window.open('sendreg_online.html')
    fso=null
    msg += '\n setup end ';showMessagebox(msg)       
    msg += '\n *** You may now close this program *** ';showMessagebox(msg)       
}
function SaveCallback(http_request)
{
    if (http_request.readyState == 4)
    {
        if (http_request.status == 200)
        {
            msg += '\n Call returned ok. result['+http_request.responseText+']';showMessagebox(msg)
            msg += '\n --SEND COMPLETE--';showMessagebox(msg)
        } else
        {
            msg += '\n There was a problem with the request. ';showMessagebox(msg)
            msg += '\n  http_request.status['+http_request.status+']';showMessagebox(msg)
            msg += '\n  http_request.responseText['+http_request.responseText+']';showMessagebox(msg)
           
            //alert('There was a problem with the request.<%if (session("devaccess")) then%>dev:['+http_request.status+']<%end if%>');
        }
        msg += '\n ** please close this program **';showMessagebox(msg)
        msg += '\n END';showMessagebox(msg)
        //window.close()
    }else
    {
        msg += '\n Waiting...';showMessagebox(msg)
    }
}
function makeRequestPost(url,returnFunction, parameters)
{
    var http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType)
        {
            http_request.overrideMimeType('text/xml');
            // See note below about this line
        }
    } else if (window.ActiveXObject)
    { // IE
        try
        {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e)
        {
            try
            {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!http_request)
    {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }
   
    returnFunction = returnFunction + '(http_request)';
    http_request.onreadystatechange = function() { eval(returnFunction) };
    if(true || url==prompt('call:',url))            //     
    {
        msg += '\n Call...';showMessagebox(msg)
        try
        {
            http_request.open('POST', url, true);
            http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            http_request.setRequestHeader("Content-length", parameters.length);
            http_request.setRequestHeader("Connection", "close");
            http_request.send(parameters);
            msg += '\n ... Call made, wait for callback..';showMessagebox(msg)
        } catch (e)
        {
            msg += '\n ... Call failed['+e.message+'] ';showMessagebox(msg)
            if(e.message.indexOf('Access is denied')!=-1)
            {
                msg += "\n <b>Note</b>: Access denied message may mean you are running this from a network drive. Please run from the actual computer. ";showMessagebox(msg)
            }
            msg += "\n Call to online service failed - stop. Please email ["+structureLocation+"] to jeremy@beweb.co.nz ";showMessagebox(msg)
       
        }
    }
}
function GetUserInfoEx()
{
    msg += '\n Get environment vars';showMessagebox(msg)       
    var ws, en, buf;
    //ws=WScript.CreateObject("WScript.Shell");
    msg += '\n create shell';showMessagebox(msg)       
    ws=new ActiveXObject("WScript.Shell");
    msg += '\n create enum';showMessagebox(msg)       
    en=new Enumerator(ws.Environment)
    msg += '\n create enum done';showMessagebox(msg)       
    buf=[];
    for(;!en.atEnd();en.moveNext())
    buf.push(en.item());
    //WScript.Echo(buf.join("\n"));
    msg += '\n env ['+buf+'] ';showMessagebox(msg)       
   
    var wmiService, compSystem;
    msg += '\n create winmgmts ';showMessagebox(msg)       
    wmiService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2");
    // the '.' denotes local system, it can be replaced with the name of the remote machine
    msg += '\n exec winmgmts query';showMessagebox(msg)       
    compSystem = wmiService.ExecQuery("Select * from Win32_ComputerSystem");
    msg += '\n enum';showMessagebox(msg)       
    var enumItems = new Enumerator(compSystem);
    msg += '\n enum done';showMessagebox(msg)       
   
    var curUser = ""
    for (; !enumItems.atEnd(); enumItems.moveNext())
    {
        msg += '\n enum loop..';showMessagebox(msg)       
        var item = enumItems.item()
        //WScript.echo("Logged in user: " + item.UserName);
        msg += '\n Logged in user: ' + item.UserName+'] ';showMessagebox(msg)       
        if(item.UserName+''!=''){curUser =item.UserName}
    }
    msg += '\n enum loop done.';showMessagebox(msg)       
    msg += '\n curUser['+curUser+']';showMessagebox(msg)       
   
    //var WshNetwork = WScript.CreateObject("WScript.Network");
    var WshNetwork = new ActiveXObject("WScript.Network");
    //WScript.Echo("Domain = " + WshNetwork.UserDomain);
    //WScript.Echo("Computer Name = " + WshNetwork.ComputerName);
    //WScript.Echo("User Name = " + WshNetwork.UserName);
    compInfo = "\\\\"+WshNetwork.UserDomain+"\\"+WshNetwork.ComputerName+"@"+WshNetwork.UserName
    msg += '\n compInfo['+compInfo+']';showMessagebox(msg)       
    ws=null;
    WshNetwork = null
}
function GetUserInfo()
{
    //var WshNetwork = WScript.CreateObject("WScript.Network");
    var WshNetwork = new ActiveXObject("WScript.Network");
    //WScript.Echo("Domain = " + WshNetwork.UserDomain);
    //WScript.Echo("Computer Name = " + WshNetwork.ComputerName);
    //WScript.Echo("User Name = " + WshNetwork.UserName);
    var compInfo = "\\\\"+WshNetwork.UserDomain+"\\"+WshNetwork.ComputerName+"@"+WshNetwork.UserName
    //msg += '\n compInfo['+compInfo+']';showMessagebox(msg)       
    ws=null;
    WshNetwork = null
    return     compInfo
}
function MM_openBrWindow(theURL,winName,features) { //v2.0
    window.open(theURL,winName,features);
}
// dreamweaver code
function MM_swapImgRestore() { //v3.0
    var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
    var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
        var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
        if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_findObj(n, d) { //v4.01
    var p,i,x;    if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
    var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
     if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
contents of html/skygame.html
 
<html>
  <head>
    <title>Sky Game/title>
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <link rel="STYLESHEET" href="/../css/stylesheet.css" type="text/css">
    <script language="JavaScript" src="common.js"></script>
    <script language="JavaScript" src="messagebox.js"></script>
  </head>
  <body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" bgcolor="#ffffff" onload="initSkyGame();" >
        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,24,0"
            width="100%" height="700" id="main" name="main" align="middle">
            <param name="allowScriptAccess" value="sameDomain" />
            <param name="allowFullScreen" value="false" />
            <param name="movie" value="../swf/main_vanilla.swf" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#ffffff" />
            <param name="wmode" value="transparent" />
            <param name="menu" value="false" />
            <embed src="../swf/main_vanilla.swf" wmode="transparent" quality="high" bgcolor="#CCFF00"
              width="1000" height="700" name="main" id="main" menu="false" align="middle" allowscriptaccess="sameDomain" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
        </object>
    </body>
</html>
 
contents of sendreg_online.html.template
<html>
  <head>
    <title>Sky Game</title>
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <link rel="STYLESHEET" href="/css/stylesheet.css" type="text/css">
    <script language="JavaScript" src="common.js"></script>
    <script language="JavaScript" src="messagebox.js"></script>
  </head>
  <body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" bgcolor="#ffffff" onload="initSendOnline();" >
   
        <!-- this file is overwritten by the template -->
       
       
    <!--<div id="service" style="BEHAVIOR:url('../htc/webservice.htc')"></div>-->
    <DIV id="messageBox" class="messageBox" style="LEFT: 409px; TOP: 402px; TEXT-ALIGN: center"><BR>
      ...</DIV>
        <DIV id="xmlIsland">
            <SCRIPT LANGUAGE="xml" ID="XMLID">
 
            </SCRIPT>
        </DIV>
    </body>
       
    </body>
</html>
 
 
contents of messagebox.js
//------------------------------------------------------------------------------
function hideMessagebox()
{
    document.all.messageBox.style.display = 'none'
}
//------------------------------------------------------------------------------
function hideMessageboxWait(timeoutMilliseconds)
{
    window.setTimeout('hideMessagebox()',timeoutMilliseconds);
}
//------------------------------------------------------------------------------
function showMessagebox(messageText)
{
    document.all.messageBox.style.top = (document.body.clientHeight / 3) * 2
    document.all.messageBox.style.left = document.body.clientWidth / 2 - (document.all.messageBox.offsetWidth / 2)
    //document.all.messageBox.style.border= '2px blue solid'
 
    messageText = messageText.replace(new RegExp("\n","gm"), "<br/>")
    document.all.messageBox.innerHTML = '<table border="1" cellpadding="0" cellspacing="0" width="100%" height="100%"><tr><td valign="middle" align="center" style="font-size:xx-small;"><div style="text-align:left;">'+messageText+'<div></td></tr></table>'
    document.all.messageBox.style.display = ''
}
//------------------------------------------------------------------------------
function showMessageboxWait(messageText, timeoutMilliseconds)
{
    window.setTimeout('showMessagebox(\''+messageText+'\')',timeoutMilliseconds);
}
//------------------------------------------------------------------------------
 
Contents of _send_registrations.hta
 
<html>
  <head>
    <title>Sky Game</title>
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <HTA:APPLICATION
      ID="HTA_skyjumpDS"
      APPLICATIONNAME="Sky Game- Data Sender"
      ICON="images/favicon.ico"
      WINDOWSTATE="normal"
      BORDERSTYLE="normal"
      BORDER="thin"
      CAPTION="yes"
      SELECTION="yes"
      SCROLL="yes"
      CONTEXTMENU="yes"
      SCROLLFLAT="yes"
      MAXIMIZEBUTTON="yes"
      MINIMIZEBUTTON="yes"
      NAVIGABLE="yes"
      SHOWINTASKBAR="no"
      SINGLEINSTANCE="yes"
      SYSMENU="yes"
      VERSION="1.0">
    <!--
            APPLICATIONNAME applicationName Sets or gets the name of the HTML Application (HTA).
            BORDER border Sets or gets the type of window border for the HTML Application (HTA). 
            BORDERSTYLE borderStyle Sets or gets the style set for the content border in the HTML Application (HTA) window.
            CAPTION caption Sets or gets a Boolean value that indicates whether the window is set to display a title bar or a caption, for the HTML Application (HTA).
              commandLine Gets the argument used to launch the HTML Application (HTA).
            CONTEXTMENU contextMenu Sets or gets a string value that indicates whether the context menu is displayed when the right mouse button is clicked.
            ICON icon Sets or gets the name and location of the icon specified in the HTML Application (HTA).
            INNERBORDER innerBorder Sets or gets a string value that indicates whether the inside 3-D border is displayed.
            MAXIMIZEBUTTON maximizeButton Sets or gets a Boolean value that indicates whether a Maximize button is displayed in the title bar of the HTML Application (HTA) window.
            MINIMIZEBUTTON minimizeButton Sets or gets a Boolean value that indicates whether a Minimize button is displayed in the title bar of the HTML Application (HTA) window.
            NAVIGABLE navigable Sets or gets a string value that indicates whether linked documents are loaded in the main HTML Application (HTA) window or in a new browser window. 
            SCROLL scroll Sets or gets a string value that indicates whether the scroll bars are displayed.
            SCROLLFLAT scrollFlat Sets or gets a string value that indicates whether the scroll bar is 3-D or flat.
            SELECTION selection Sets or gets a string value that indicates whether the content can be selected with the mouse or keyboard.
            SHOWINTASKBAR showInTaskBar Sets or gets a value that indicates whether the HTML Application (HTA) is displayed in the Microsoft Windows taskbar.
            SINGLEINSTANCE singleInstance Sets or gets a value that indicates whether only one instance of the specified HTML Application (HTA) can run at a time. 
            SYSMENU sysMenu Sets or gets a Boolean value that indicates whether a system menu is displayed in the HTML Application (HTA).
            VERSION version Sets or gets the version number of the HTML Application (HTA).
            WINDOWSTATE windowState Sets or gets the initial size of the HTA window.
                normal Default. Window is the default size for Microsoft Internet Explorer.
                minimize Window is not displayed on launch. Instead, the title of the minimized application appears in the taskbar.
                maximize Window is sized to fill the screen.
        -->
       
  </head>
  <body  leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" bgcolor="#ffffff">
        <iframe frameborder="0" src="html/setup_sendreg_online.html" application="yes" width="100%"  height="100%" scrolling="yes" noresize="noresize" marginheight="0" marginwidth="0" id="mainhtaframe"/>
<!--         <iframe frameborder="0" src="html/sendreg.html" application="yes" width="100%"  height="100%" scrolling="yes" noresize="noresize" marginheight="0" marginwidth="0" id="mainhtaframe"/> -->
    </body>
</html>

Comments


Leave a Comment