You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Carl Lipo <ca...@internap.com> on 2001/04/05 01:48:25 UTC

Apache::ASP -- Corruption of statedir files/truncation of method names

I've just started having problems with asp state files for Apache::ASP
2.09 becoming corrupted during use. My application will work just fine but
at somepoint the session asp state files get corrupted and only deleting
them allows the application to continue working. Oddly, this occurs on two
different servers so the problem does not appear to be machine specific. 

The symptom of the problem is that application errors are returned
from the asp code execution that look something like this:

Uncaught exception from user code:
        Can't locate object method 'Quer' via package
&quot;Apache::ASP::Request'; at (eval 263) <a href=#167>l
ine 167</a>. INAP::NEIS::_usr_local_applprod_infosource_apps_netcfg_viewNodes_htmxINL() called
at /usr/local/lib/site_perl/Apache/
ASP.pm line 1504

or

$Response::Appe not defined at /usr/local/lib/site_perl/Apache/ASP.pm <a
href=#3132>line 3132</a>

Where the object method that cant be located is truncated from the actual
ASP method (i.e., Query will be truncated to be Quer or $Response::Append
to log will be tructed at Response::Appe). What appears to be happnening
is that the namespace is corrupted somehow and the Apache::ASP/mod_perl is
not mapping the names of methods correctly. 

When we delete the state files, the problem goes away (and then returns at
some point in the future). Has anyone encountered this problem? Is there a
bug in the 2.09 code?

This is our environment:
Linux,  Apache 1.3.19, mod_perl 1.25
Apache::ASP 2.09

----------------------------------------------------------------------------
Here is the actual error output:

<table>
<tr><td valign=top><font size=-1><b> Global: </b><td valign=top><font size=-1> /usr/local/etc/infosource/apps/netcfg/
<tr><td valign=top><font size=-1><b>   File: </b><td valign=top><font size=-1> /usr/local/applprod/infosource/apps/netcfg/viewNodes.htm
<tr><td valign=top><font size=-1><b>     IP: </b><td valign=top><font size=-1> 64.94.117.16
<tr><td valign=top><font size=-1><b> HTTP_*: </b><td valign=top><font size=-1> HTTP_ACCEPT= image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*<br>
  HTTP_ACCEPT_CHARSET= iso-8859-1,*,utf-8<br>
  HTTP_ACCEPT_ENCODING= gzip<br>
  HTTP_ACCEPT_LANGUAGE= en<br>
  HTTP_CONNECTION= Keep-Alive<br>
  HTTP_COOKIE= session-id=0eef76d5377c6e62def6333423014869<br>
  HTTP_HOST= applprod4.sea.internap.com<br>
  HTTP_REFERER= https://applprod4.sea.internap.com/apps/netcfg/searchNode.htm<br>
  HTTP_USER_AGENT= Mozilla/4.75 [en] (X11; U; Linux 2.2.16 i686)
<tr><td valign=top><font size=-1><b>  Query: </b><td valign=top><font size=-1> 
<tr><td valign=top><font size=-1><b>   Form: </b><td valign=top><font size=-1> search=   Search  <br>
  searchLocation= <br>
  searchNodeName= <br>
  searchNodeStatus= <br>
  searchNodeType= <br>
  searchRack= <br>
  searchSiteCode= sea<br>
  sessionActive= Active
</table>

<tt>
<b><u>Errors Output</u></b>
<ol>

<li> Uncaught exception from user code:
	Can't locate object method &quot;Quer&quot; via package &quot;Apache::ASP::Request&quot; at (eval 263) <a href=#167>line 167</a>.
	INAP::NEIS::_usr_local_applprod_infosource_apps_netcfg_viewNodes_htmxINL() called at /usr/local/lib/site_perl/Apache/ASP.pm line 1504
	eval {...} called at /usr/local/lib/site_perl/Apache/ASP.pm line 1504
	Apache::ASP::Execute('Apache::ASP=HASH(0x8d7d930)') called at /usr/local/lib/site_perl/Apache/ASP.pm line 174
	Apache::ASP::handler('Apache=SCALAR(0x8d2b978)') called at /dev/null line 0
	eval {...} called at /dev/null line 0
, /usr/local/lib/site_perl/Apache/ASP.pm line 1506
</ol>

<b><u>Debug Output</u></b>
<ol>

<li> Uncaught exception from user code:
	Can't locate object method &quot;Quer&quot; via package &quot;Apache::ASP::Request&quot; at (eval 263) line 167.
	INAP::NEIS::_usr_local_applprod_infosource_apps_netcfg_viewNodes_htmxINL() called at /usr/local/lib/site_perl/Apache/ASP.pm line 1504
	eval {...} called at /usr/local/lib/site_perl/Apache/ASP.pm line 1504
	Apache::ASP::Execute('Apache::ASP=HASH(0x8d7d930)') called at /usr/local/lib/site_perl/Apache/ASP.pm line 174
	Apache::ASP::handler('Apache=SCALAR(0x8d2b978)') called at /dev/null line 0
	eval {...} called at /dev/null line 0
, /usr/local/lib/site_perl/Apache/ASP.pm line 1506
</ol>
</tt>
<pre>

<b><u>ASP to Perl Script</u></b><a name=1>&nbsp;</a>

<a name=2>  1</a>: package INAP::NEIS; ;; sub INAP::NEIS::_usr_local_applprod_infosource_apps_netcfg_viewNodes_htmxINL {  ;;  @_ = (); ;; no strict;;use vars qw($Application $Session $Response $Server $Request);;use lib qw(/usr/local/etc/infosource/apps/netcfg/);;;
<a name=3>  2</a>: 
<a name=4>  3</a>: $Response-&gt;AppendToLog(&quot;[NEIS] - init.htm:&quot;);
<a name=5>  4</a>: 
<a name=6>  5</a>: 
<a name=7>  6</a>: ###################################################
<a name=8>  7</a>: #
<a name=9>  8</a>: #	init.htm
<a name=10>  9</a>: #
<a name=11> 10</a>: #	Dexter and Wayland
<a name=12> 11</a>: #
<a name=13> 12</a>: #	October 2000
<a name=14> 13</a>: #
<a name=15> 14</a>: #	10/12/00  Wayland Wasserman
<a name=16> 15</a>: #	Common header file for entire NCM app
<a name=17> 16</a>: #	Contains database info and other global data
<a name=18> 17</a>: #
<a name=19> 18</a>: #
<a name=20> 19</a>: ####################################################
<a name=21> 20</a>: 
<a name=22> 21</a>: use DBI;                                    # Used for database calls.
<a name=23> 22</a>: use PNAP::NETCFG::DBconn qw(dbconnect);     # Used for database calls.
<a name=24> 23</a>: use PNAP::Conf;
<a name=25> 24</a>: use PNAP::Database::Query;
<a name=26> 25</a>: use NCM::Nodes;
<a name=27> 26</a>: use NCM::Common;
<a name=28> 27</a>: use XML::Config;
<a name=29> 28</a>: use strict;
<a name=30> 29</a>: 
<a name=31> 30</a>: # This part is in the Apache configuration file, httpd.conf.
<a name=32> 31</a>: # BEGIN
<a name=33> 32</a>: # {
<a name=34> 33</a>: # 	$ENV{'ORACLE_HOME'} = 'usr/local/oracle_client/v8_0_5';
<a name=35> 34</a>: # }
<a name=36> 35</a>: 
<a name=37> 36</a>: $Response-&gt;AppendToLog(&quot;[NEIS] - init.htm: test 1&quot;);
<a name=38> 37</a>: 
<a name=39> 38</a>: ### Read the conf file  ###
<a name=40> 39</a>: # my $g_conffile = &quot;/usr/local/etc/netcfg/neis.conf&quot;; # Not used anywhere else.
<a name=41> 40</a>: my $g_debug = 0;
<a name=42> 41</a>: # my $conf = new XML::Config; # Not used anywhere else without first being re-initialized.
<a name=43> 42</a>: 
<a name=44> 43</a>: $Response-&gt;AppendToLog(&quot;[NEIS] - init.htm: $Application-&gt;{'DBService'}&quot;);
<a name=45> 44</a>: 
<a name=46> 45</a>: my $DEBUG = $Application-&gt;{'Debug'};
<a name=47> 46</a>: 
<a name=48> 47</a>: $DEBUG &amp;&amp; $Response-&gt;AppendToLog(&quot;[NEIS] - init.htm: DEBUG level is $DEBUG&quot;);
<a name=49> 48</a>: 
<a name=50> 49</a>: my $g_dbsection = $Application-&gt;{'DBService'};
<a name=51> 50</a>: 
<a name=52> 51</a>: $DEBUG &amp;&amp; $Response-&gt;AppendToLog(&quot;[NEIS] - init.htm: $Application-&gt;{'Application'} $Application-&gt;{'CVS_Version'} - $g_dbsection&quot;);
<a name=53> 52</a>: 
<a name=54> 53</a>: ### Misc Global Variables ###
<a name=55> 54</a>: my $g_nodeName;
<a name=56> 55</a>: my $g_nodeOID;
<a name=57> 56</a>: my $g_retPage;
<a name=58> 57</a>: my $g_prevPage;
<a name=59> 58</a>: my $g_searchCriteria;
<a name=60> 59</a>: 
<a name=61> 60</a>: ### Database connection (Database::Query) ###
<a name=62> 61</a>: my $g_dbconn = new PNAP::Database::Query(Connection=&gt;$g_dbsection, Debug=&gt;$g_debug);
<a name=63> 62</a>: 
<a name=64> 63</a>: ### Database connection (straight DBI) ###
<a name=65> 64</a>: ### Dev Note: this is a test to see how well this works
<a name=66> 65</a>: # my $dbconf = $Application-&gt;{'DBConf'};
<a name=67> 66</a>: # $DEBUG &amp;&amp; $Response-&gt;AppendToLog(&quot;[NEIS] - init.htm: dbconf is $dbconf&quot;);
<a name=68> 67</a>: 
<a name=69> 68</a>: # my $dbconfobj = new PNAP::Conf($dbconf, $g_debug);
<a name=70> 69</a>: # my $service = $dbconfobj-&gt;getServInfo($Application-&gt;{'DBService'});
<a name=71> 70</a>: 
<a name=72> 71</a>: # $Application-&gt;{'DBSID'}      = $service-&gt;{'SID'};
<a name=73> 72</a>: # $Application-&gt;{'DBDriver'}   = $service-&gt;{'Driver'};
<a name=74> 73</a>: # $Application-&gt;{'DBServer'}   = $service-&gt;{'Server'};
<a name=75> 74</a>: # $Application-&gt;{'DBUsername'} = $service-&gt;{'Username'};
<a name=76> 75</a>: # $Application-&gt;{'DBPassword'} = $service-&gt;{'Password'};
<a name=77> 76</a>: # $Application-&gt;{'DBTnsname'}  = $service-&gt;{'Tnsname'};
<a name=78> 77</a>: 
<a name=79> 78</a>: # my $driver    = $Application-&gt;{'DBDriver'};
<a name=80> 79</a>: # my $server    = $Application-&gt;{'DBServer'};
<a name=81> 80</a>: # my $sid       = $Application-&gt;{'DBSID'};
<a name=82> 81</a>: # my $user      = $Application-&gt;{'DBUsername'};
<a name=83> 82</a>: # my $pw        = $Application-&gt;{'DBPassword'};
<a name=84> 83</a>: # my $connstr   = &quot;dbi:$driver:host=$server;sid=$sid&quot;;
<a name=85> 84</a>: # my $g_dbiconn = DBI-&gt;connect($connstr, $user, $pw);
<a name=86> 85</a>: my $g_dbiconn = dbconnect();
<a name=87> 86</a>: 
<a name=88> 87</a>: # This is where we check for form submission for the header.inc
<a name=89> 88</a>: # check for ChangeRole
<a name=90> 89</a>: $Session-&gt;{'Role'} = $Request-&gt;Form('role') if ($Request-&gt;Form('control') eq &quot;ChangeRole&quot;);
<a name=91> 90</a>: 
<a name=92> 91</a>: my $err    = $g_dbiconn-&gt;err() || &quot;&quot;;
<a name=93> 92</a>: my $errstr = $g_dbiconn-&gt;errstr() || &quot;&quot;;
<a name=94> 93</a>: if ($err || $errstr) {
<a name=95> 94</a>: 	$Response-&gt;AppendToLog(&quot;[NEIS] - init.htm: DATABASE ERROR -- ($err) $errstr&quot;);
<a name=96> 95</a>: }
<a name=97> 96</a>: 
<a name=98> 97</a>: ; $main::Response-&gt;WriteRef(\('
<a name=99> 98</a>: 
<a name=100> 99</a>: '));
<a name=101>100</a>: ############################################################################
<a name=102>101</a>: #
<a name=103>102</a>: # viewNodes.htm
<a name=104>103</a>: #
<a name=105>104</a>: # Purpose: displays information about nodes matching the given search criteria
<a name=106>105</a>: #
<a name=107>106</a>: # Input:
<a name=108>107</a>: #	search criteria, read from the Form or $Session variable
<a name=109>108</a>: # 	column name by which results should be sorted, passed along the URL
<a name=110>109</a>: #
<a name=111>110</a>: # Created by:	Catherine Higuchi, Dexter Lieu
<a name=112>111</a>: # Last Update: 09/29/2000
<a name=113>112</a>: #
<a name=114>113</a>: ############################################################################
<a name=115>114</a>: 
<a name=116>115</a>: ### Variable definition ###
<a name=117>116</a>: my $asppage = $INAP::NEIS::asppage;
<a name=118>117</a>: my $pagetitle = &quot;View Nodes&quot;;
<a name=119>118</a>: 
<a name=120>119</a>: ###########################
<a name=121>120</a>: #
<a name=122>121</a>: #	Code to check users permission to edit
<a name=123>122</a>: #		current area
<a name=124>123</a>: #
<a name=125>124</a>: 
<a name=126>125</a>: my $pageTopic = 'NODE';
<a name=127>126</a>: my $userRole = $Session-&gt;{'Role'};
<a name=128>127</a>: my $allowEdit = NCM::Nodes::checkUserRole($userRole, $pageTopic);
<a name=129>128</a>: my $editcols = 2;
<a name=130>129</a>: $editcols = 3 if $allowEdit;
<a name=131>130</a>: $Session-&gt;{&quot;nodeSearchError&quot;} = '';
<a name=132>131</a>: 
<a name=133>132</a>: 
<a name=134>133</a>: ### testing of pagehash...
<a name=135>134</a>: 
<a name=136>135</a>: ##	for ( keys %g_PageHash)
<a name=137>136</a>: ##	{
<a name=138>137</a>: ##		$DEBUG &amp;&amp; $Response-&gt;AppendToLog(&quot;[NEIS] - viewNodes.htm - $g_PageHash-&gt;{$_}&quot;);
<a name=139>138</a>: ##	}
<a name=140>139</a>: 
<a name=141>140</a>: 
<a name=142>141</a>: 
<a name=143>142</a>: 
<a name=144>143</a>: ### read the values from the previous form	###
<a name=145>144</a>: ### and save to the session vars			###
<a name=146>145</a>: my $form=$Request-&gt;Form();
<a name=147>146</a>: my $nm;
<a name=148>147</a>: for ( keys %{$form}) {
<a name=149>148</a>: 	$nm = $_;
<a name=150>149</a>: 	$Session-&gt;{$nm}= $form-&gt;{$nm};
<a name=151>150</a>: 	$DEBUG &amp;&amp; $Response-&gt;AppendToLog(&quot;[NEIS] - viewNodes.htm - $nm: $form-&gt;{$nm}&quot;);
<a name=152>151</a>: }
<a name=153>152</a>: 
<a name=154>153</a>: 
<a name=155>154</a>: if ($Request-&gt;QueryString('assetTag')) {
<a name=156>155</a>: 	$Session-&gt;{&quot;searchNodeOID&quot;} = NCM::Nodes::getNodeFromAsset($g_dbconn, $Request-&gt;QueryString('assetTag'));
<a name=157>156</a>: 	if ( !($Session-&gt;{&quot;searchNodeOID&quot;}) )
<a name=158>157</a>: 	{
<a name=159>158</a>: 		$Session-&gt;{'ERROR'} = 'Invalid Asset Tag';
<a name=160>159</a>: 
<a name=161>160</a>: 		$Response-&gt;Redirect(&quot;index.htm&quot;);
<a name=162>161</a>: 	}
<a name=163>162</a>: 
<a name=164>163</a>: }
<a name=165>164</a>: 
<a name=166>165</a>: 
<a name=167>166</a>: ### get the criteria from the session vars	###
<a name=168><b><font color=red>167</font></b></a>: my $searchNodeOID = $Session-&gt;{&quot;searchNodeOID&quot;} || $Request-&gt;QueryString('OID') || &quot;&quot;;
<a name=169>168</a>: 	my $searchNodeName = $Session-&gt;{&quot;searchNodeName&quot;} || &quot;&quot;;
<a name=170>169</a>: 	my $searchNodeType = $Session-&gt;{&quot;searchNodeType&quot;} || &quot;&quot;;
<a name=171>170</a>: 	my $searchNodeStatus = $Session-&gt;{&quot;searchNodeStatus&quot;} || &quot;&quot;;
<a name=172>171</a>: 	my $searchSiteCode = $Session-&gt;{&quot;searchSiteCode&quot;} || &quot;&quot;;
<a name=173>172</a>: 	my $searchLocation = $Session-&gt;{&quot;searchLocation&quot;} || &quot;&quot;;
<a name=174>173</a>: 	my $searchRack = $Session-&gt;{&quot;searchRack&quot;} || &quot;&quot;;
<a name=175>174</a>: 
<a name=176>175</a>: ### whack the other fields if searching by nodeoid
<a name=177>176</a>: if ($searchNodeOID)
<a name=178>177</a>: {
<a name=179>178</a>: 	$searchNodeName = '';
<a name=180>179</a>: 	$searchNodeType = '';
<a name=181>180</a>: 	$searchNodeStatus = '';
<a name=182>181</a>: 	$searchSiteCode = '';
<a name=183>182</a>: 	$searchLocation = '';
<a name=184>183</a>: 	$searchRack = '';
<a name=185>184</a>: }
<a name=186>185</a>: my @altNodeOIDs;
<a name=187>186</a>: 
<a name=188>187</a>: 
<a name=189>188</a>: $searchNodeName =~ s/'/_/g;
<a name=190>189</a>: $searchLocation =~ s/'/_/g;
<a name=191>190</a>: $searchRack =~ s/'/_/g;
<a name=192>191</a>: 
<a name=193>192</a>: $searchNodeName =~ s/&quot;/_/g;
<a name=194>193</a>: $searchLocation =~ s/&quot;/_/g;
<a name=195>194</a>: $searchRack =~ s/&quot;/_/g;
<a name=196>195</a>: 
<a name=197>196</a>: 
<a name=198>197</a>: if ($Session-&gt;{&quot;altNodeSearch&quot;})
<a name=199>198</a>: {
<a name=200>199</a>: 	@altNodeOIDs = @{$Session-&gt;{&quot;altNodeSearch&quot;}};
<a name=201>200</a>: }
<a name=202>201</a>: 
<a name=203>202</a>: 
<a name=204>203</a>: ### if no criteria bounce them back to search page
<a name=205>204</a>: if ( (! ($searchNodeOID) ) &amp;&amp; (! ($searchNodeName) ) &amp;&amp; (! ($searchNodeType) ) &amp;&amp; (! ($searchNodeStatus) ) &amp;&amp; (! ($searchSiteCode) ) &amp;&amp; (! ($searchLocation) ) &amp;&amp; (! ($searchRack) ) )  {
<a name=206>205</a>: 
<a name=207>206</a>: 	$Session-&gt;{&quot;nodeSearchError&quot;} = 'Search requires at least one field be filled in';
<a name=208>207</a>: 
<a name=209>208</a>: 	$Response-&gt;Redirect(&quot;searchNode.htm&quot;);
<a name=210>209</a>: 
<a name=211>210</a>: 
<a name=212>211</a>: }
<a name=213>212</a>: 
<a name=214>213</a>: 
<a name=215>214</a>: 
<a name=216>215</a>: 
<a name=217>216</a>: 
<a name=218>217</a>: 
<a name=219>218</a>: 
<a name=220>219</a>: 
<a name=221>220</a>: 
<a name=222>221</a>: 
<a name=223>222</a>: 
<a name=224>223</a>: 
<a name=225>224</a>: ### Get the order by column ###
<a name=226>225</a>: my $ordercolumn = $Request-&gt;QueryString('ordercolumn') || &quot;NODENAME, NODETYPE, STATUS, SITECODE&quot;;
<a name=227>226</a>: 
<a name=228>227</a>: ### lists of returned data ###
<a name=229>228</a>: my (@nodeOIDList, @nodeNameList, @nodeTypeList, @nodeTypeCodeList, @statusList, @statusCodeList, @siteCodeList, @locationList, @rackList, @commentList, @updateNbrList);
<a name=230>229</a>: my $nodecount = NCM::Nodes::getNodes($g_dbconn, $searchNodeOID, $searchNodeName, $searchNodeType, $searchNodeStatus,
<a name=231>230</a>: 	$searchSiteCode, $searchLocation, $searchRack, \@altNodeOIDs, $ordercolumn, \@nodeOIDList,
<a name=232>231</a>: 	\@nodeNameList, \@nodeTypeList, \@nodeTypeCodeList, \@statusList, \@statusCodeList,
<a name=233>232</a>: 	\@siteCodeList, \@locationList, \@rackList, \@commentList, \@updateNbrList);
<a name=234>233</a>: 
<a name=235>234</a>: ######################### HTML START #########################
<a name=236>235</a>: 
<a name=237>236</a>: ; $main::Response-&gt;WriteRef(\('
<a name=238>237</a>: &lt;html&gt;
<a name=239>238</a>: &lt;head&gt;
<a name=240>239</a>: 	'));
<a name=241>240</a>:   ######################################################################
<a name=242>241</a>:   # head.inc
<a name=243>242</a>:   #
<a name=244>243</a>:   # use: include in the &lt;head&gt; block on every page and add onload=&quot;init()&quot;
<a name=245>244</a>:   #   to the &lt;body&gt; tag on every page
<a name=246>245</a>:   #
<a name=247>246</a>:   # purpose: defines the meta tags and stylesheets for the page,
<a name=248>247</a>:   #     sets the timeout redirect, sets the page title
<a name=249>248</a>:   #     and creates the menus to be used in the nav bar
<a name=250>249</a>:   #
<a name=251>250</a>:   # prerequisites: the value of $pagetitle describing the specific page
<a name=252>251</a>:   #     is set in each page where this include is used
<a name=253>252</a>:   #
<a name=254>253</a>:   # Created By: Will Stevenson, Dexter Lieu
<a name=255>254</a>:   # Last Update: 09/29/2000
<a name=256>255</a>:   #
<a name=257>256</a>:   ######################################################################
<a name=258>257</a>: 
<a name=259>258</a>:   use vars qw($pagetitle);
<a name=260>259</a>: 
<a name=261>260</a>: # Put go.script include file here rather than in each htm file.
<a name=262>261</a>: if ($asppage =~ /^(searchCircuit|searchBandwidth|searchService|viewCircuitService|editservice|addSecondary)/) {
<a name=263>262</a>:   ; $main::Response-&gt;WriteRef(\(' &lt;script language=&quot;JavaScript&quot;&gt;
<a name=264>263</a>: &lt;!--
<a name=265>264</a>: if(document.layers){origWidth=innerWidth;origHeight=innerHeight;onresize=function(){if(innerWidth!=origWidth||innerHeight!=origHeight)location.reload()}}
<a name=266>265</a>: function MM_showHideLayers() { //v2.0
<a name=267>266</a>:   var i, visStr, args, theObj;
<a name=268>267</a>:   args = MM_showHideLayers.arguments;
<a name=269>268</a>:   for (i=0; i&lt;(args.length-2); i+=3) { //with arg triples (objNS,objIE,visStr)
<a name=270>269</a>:     visStr   = args[i+2];
<a name=271>270</a>:     if (navigator.appName == \'Netscape\' &amp;&amp; document.layers != null) {
<a name=272>271</a>:       theObj = eval(args[i]);
<a name=273>272</a>:       if (theObj) theObj.visibility = visStr;
<a name=274>273</a>:     } else if (document.all != null) { //IE
<a name=275>274</a>:       if (visStr == \'show\') visStr = \'visible\'; //convert vals
<a name=276>275</a>:       if (visStr == \'hide\') visStr = \'hidden\';
<a name=277>276</a>:       theObj = eval(args[i+1]);
<a name=278>277</a>:       if (theObj) theObj.style.visibility = visStr;
<a name=279>278</a>:   } }
<a name=280>279</a>: }
<a name=281>280</a>: 
<a name=282>281</a>: function PopSearch(){
<a name=283>282</a>:         var QUERY=prompt(&quot;Enter Search Term&quot;, &quot;&quot;);
<a name=284>283</a>:         if (QUERY) {
<a name=285>284</a>:                 document.location.href=&quot;/cgi-bin/nph-seek.cgi/query.html?qt=&quot;+QUERY;
<a name=286>285</a>:         }
<a name=287>286</a>: }
<a name=288>287</a>: //--&gt;
<a name=289>288</a>: &lt;/script&gt;
<a name=290>289</a>:  '));
<a name=291>290</a>: }
<a name=292>291</a>: 
<a name=293>292</a>: 
<a name=294>293</a>: ; $main::Response-&gt;WriteRef(\('
<a name=295>294</a>: 
<a name=296>295</a>: 
<a name=297>296</a>: &lt;meta http-equiv=&quot;Pragma&quot;  content=&quot;No-cache&quot;&gt;
<a name=298>297</a>: &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt;
<a name=299>298</a>: &lt;meta http-equiv=&quot;refresh&quot; content=&quot;'.(($Session-&gt;{'Timeout'}*60) ).';URL=logout.htm&quot;&gt;
<a name=300>299</a>: 
<a name=301>300</a>: &lt;noscript&gt;
<a name=302>301</a>: &lt;!-- in case the user is not using javascript we send them to infosource
<a name=303>302</a>:   which has a nice red page that tells them how to enable it --&gt;
<a name=304>303</a>: &lt;meta http-equiv=&quot;refresh&quot; content=&quot;0;URL=http://infosource.internap.com/&quot;&gt;
<a name=305>304</a>: &lt;/noscript&gt;
<a name=306>305</a>: 
<a name=307>306</a>: &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;/track.css&quot;&gt;
<a name=308>307</a>: &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;/sub.css&quot;&gt;
<a name=309>308</a>: &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;netcfg.css&quot;&gt;
<a name=310>309</a>: 
<a name=311>310</a>: &lt;title&gt;')); $Response-&gt;Write(&quot;$Application-&gt;{'Application'} $Application-&gt;{'CVS_Version'}&quot;);; $main::Response-&gt;WriteRef(\(' | '.($pagetitle).'&lt;/title&gt;
<a name=312>311</a>: 
<a name=313>312</a>: &lt;script language=&quot;JavaScript1.2&quot; SRC=&quot;./inc/menu.js&quot;&gt;&lt;/script&gt;
<a name=314>313</a>: &lt;script language=&quot;JavaScript1.2&quot; SRC=&quot;./inc/dhtmllib.js&quot;&gt;&lt;/script&gt;
<a name=315>314</a>: 
<a name=316>315</a>: &lt;script language=&quot;JavaScript1.2&quot;&gt;
<a name=317>316</a>: 
<a name=318>317</a>: '));
<a name=319>318</a>: #check for errormsgs
<a name=320>319</a>: if($Session-&gt;{ERRORMSG} ne ''){
<a name=321>320</a>: ; $main::Response-&gt;WriteRef(\('
<a name=322>321</a>:   top.errorWindow = window.open(\'error.htm\',\'errorWindow\',\'scrollbars=yes,titlebar=no,dependent=yes,width=400,height=400,screenX=200,screenY=200\');
<a name=323>322</a>:   top.errorWindow.focus();
<a name=324>323</a>: '));}; $main::Response-&gt;WriteRef(\('
<a name=325>324</a>: 
<a name=326>325</a>: //&lt;!--
<a name=327>326</a>: var isNetscape=0;
<a name=328>327</a>: var isIE=0;
<a name=329>328</a>: 
<a name=330>329</a>: //This is to fix netscape bug with style sheets;
<a name=331>330</a>: //Reload the document if resized;
<a name=332>331</a>: function onResize(){
<a name=333>332</a>: 
<a name=334>333</a>:   //Netscape has a bug and needs to be reloaded after resized if it
<a name=335>334</a>:   //contains css or dhtml
<a name=336>335</a>:   if(isNetscape){
<a name=337>336</a>:     location.reload();
<a name=338>337</a>:   }
<a name=339>338</a>: }
<a name=340>339</a>: 
<a name=341>340</a>: 
<a name=342>341</a>: //global menus
<a name=343>342</a>: 
<a name=344>343</a>: /***************************************************************
<a name=345>344</a>:  * client side initialization of NEIS::Network Configuration
<a name=346>345</a>:  */
<a name=347>346</a>: function init(){
<a name=348>347</a>: 
<a name=349>348</a>:   //which browser?
<a name=350>349</a>:   if(navigator.appName.indexOf(&quot;Internet Explorer&quot;) != -1){
<a name=351>350</a>:     isIE=1;
<a name=352>351</a>:   }
<a name=353>352</a>:   if( navigator.appName.indexOf(&quot;Netscape&quot;) != -1){
<a name=354>353</a>:     isNetscape=1;
<a name=355>354</a>:   }
<a name=356>355</a>:   if(!isNetscape &amp;&amp; !isIE){
<a name=357>356</a>:     alert(navigator.appName + &quot; is an unsupported browser for NEIS::Network Configuration. \\n Use at your own risk.&quot;);
<a name=358>357</a>:   }
<a name=359>358</a>: 
<a name=360>359</a>:   // if we are using netscape we can create menus right now
<a name=361>360</a>:   // else we will create the menus in ./inc/header.inc for IE
<a name=362>361</a>:   if(isNetscape){
<a name=363>362</a>:     CreateMenus();
<a name=364>363</a>:   }
<a name=365>364</a>: 
<a name=366>365</a>:   window.document.onkeyup=function(event){
<a name=367>366</a>:     if( !isNetscape){
<a name=368>367</a>:       event=window.event;
<a name=369>368</a>:     }
<a name=370>369</a>: 
<a name=371>370</a>:     if (event){
<a name=372>371</a>:       var charCode = (navigator.appName == &quot;Netscape&quot;) ? event.which : event.keyCode;
<a name=373>372</a>:       var actualChar = String.fromCharCode(charCode);
<a name=374>373</a>:     }
<a name=375>374</a>:   } //end function(event)
<a name=376>375</a>: } // end init()
<a name=377>376</a>: 
<a name=378>377</a>: 
<a name=379>378</a>: /**********************************************************
<a name=380>379</a>:  * Creates the menus for NEIS Net Config (NCM)
<a name=381>380</a>:  */
<a name=382>381</a>: 
<a name=383>382</a>: var myMenu;
<a name=384>383</a>: var mainMenu;
<a name=385>384</a>: var roleMenu;
<a name=386>385</a>: 
<a name=387>386</a>: function CreateMenus(){
<a name=388>387</a>:   // create main menu; items to be added via navmenu.htm
<a name=389>388</a>:   mainMenu = new Menu(&quot;main&quot;);
<a name=390>389</a>: 
<a name=391>390</a>:   // get the menu options from navmenu.htm
<a name=392>391</a>:   '));
<a name=393>392</a>: 	#################################################################################
<a name=394>393</a>: 	#
<a name=395>394</a>: 	# navmenu.inc
<a name=396>395</a>: 	#
<a name=397>396</a>: 	# use: this file is included in head.inc; so, as long as head.inc is included
<a name=398>397</a>: 	#		in the file, this file does not have to be explicitly included as well
<a name=399>398</a>: 	#
<a name=400>399</a>: 	# purpose: used to generate the options in the main menu, based on the current
<a name=401>400</a>: 	#			page and context
<a name=402>401</a>: 	#
<a name=403>402</a>: 	# prerequisites: the boolean $allowEdit must be defined in each page (this
<a name=404>403</a>: 	#			determines if the add links are displayed)
<a name=405>404</a>: 	#
<a name=406>405</a>: 	# comment: it may be better to not try to suppress the add links based on role,
<a name=407>406</a>: 	#			and just let the role security in the add pages reject users without
<a name=408>407</a>: 	#			the right access
<a name=409>408</a>: 	#
<a name=410>409</a>: 	# Created By:	Dexter Lieu
<a name=411>410</a>: 	# Last Revision:	10/16/2000
<a name=412>411</a>: 	#
<a name=413>412</a>: 	#################################################################################
<a name=414>413</a>: 
<a name=415>414</a>: 	### define hash of context-sensitive help docs
<a name=416>415</a>: 
<a name=417>416</a>: 	### done just in case someone forgets to define this var
<a name=418>417</a>: 	use vars qw($allowEdit);
<a name=419>418</a>: 
<a name=420>419</a>: 	my %helpdoc = (
<a name=421>420</a>: 		&quot;index.htm&quot;					=&gt; &quot;ncm30.htm&quot;,
<a name=422>421</a>: 		&quot;addLinkGroup.htm&quot;			=&gt; &quot;about_links_and_link_groups.htm&quot;,
<a name=423>422</a>: 		&quot;addNode.htm&quot;				=&gt; &quot;about_nodes.htm&quot;,
<a name=424>423</a>: 		&quot;editEndpoint.htm&quot;			=&gt; &quot;about_endpoints.htm&quot;,
<a name=425>424</a>: 		&quot;editInstalledAsset.htm&quot;	=&gt; &quot;about_assets.htm&quot;,
<a name=426>425</a>: 		&quot;editLinks.htm&quot;				=&gt; &quot;about_links_and_link_groups.htm&quot;,
<a name=427>426</a>: 		&quot;editLinkGroup.htm&quot;			=&gt; &quot;about_links_and_link_groups.htm&quot;,
<a name=428>427</a>: 		&quot;editNode.htm&quot;				=&gt; &quot;about_nodes.htm&quot;,
<a name=429>428</a>: 		&quot;listBWServices.htm&quot;		=&gt; &quot;to_navigate_from_search_results.htm&quot;,
<a name=430>429</a>: 		&quot;listCircuits.htm&quot;			=&gt; &quot;to_navigate_from_search_results.htm&quot;,
<a name=431>430</a>: 		&quot;pickAsset.htm&quot;				=&gt; &quot;about_assets.htm&quot;,
<a name=432>431</a>: 		&quot;pickEndpoint.htm&quot;			=&gt; &quot;about_endpoints.htm&quot;,
<a name=433>432</a>: 		&quot;pickLocation.htm&quot;			=&gt; &quot;about_locations.htm&quot;,
<a name=434>433</a>: 		&quot;pickNode.htm&quot;				=&gt; &quot;about_nodes.htm&quot;,
<a name=435>434</a>: 		&quot;pickRack.htm&quot;				=&gt; &quot;about_racks.htm&quot;,
<a name=436>435</a>: 		&quot;refineAsset.htm&quot;			=&gt; &quot;refining_a_search.htm&quot;,
<a name=437>436</a>: 		&quot;refineEndpoint.htm&quot;		=&gt; &quot;refining_a_search.htm&quot;,
<a name=438>437</a>: 		&quot;refineLocation.htm&quot;		=&gt; &quot;refining_a_search.htm&quot;,
<a name=439>438</a>: 		&quot;refineNode.htm&quot;			=&gt; &quot;refining_a_search.htm&quot;,
<a name=440>439</a>: 		&quot;refineRack.htm&quot;			=&gt; &quot;refining_a_search.htm&quot;,
<a name=441>440</a>: 		&quot;searchBandwidthService.htm&quot;	 	    =&gt; &quot;about_bandwidth_services.htm&quot;,
<a name=442>441</a>: 		&quot;searchCircuit.htm&quot;			=&gt; &quot;about_circuits_and_secondary_circuits.htm&quot;,
<a name=443>442</a>: 		&quot;searchLinkGroup.htm&quot;		=&gt; &quot;searching_for_link_groups.htm&quot;,
<a name=444>443</a>: 		&quot;searchNode.htm&quot;			=&gt; &quot;about_nodes.htm&quot;,
<a name=445>444</a>: 		&quot;viewEndpoints.htm&quot;			=&gt; &quot;to_navigate_from_search_results.htm&quot;,
<a name=446>445</a>: 		&quot;viewInstalledAssets.htm&quot;	=&gt; &quot;to_navigate_from_search_results.htm&quot;,
<a name=447>446</a>: 		&quot;viewLinkGroups.htm&quot;		=&gt; &quot;to_navigate_from_search_results.htm&quot;,
<a name=448>447</a>: 		&quot;viewNodes.htm&quot;				=&gt; &quot;to_navigate_from_search_results.htm&quot;
<a name=449>448</a>: 	);
<a name=450>449</a>: 
<a name=451>450</a>: 
<a name=452>451</a>: 
<a name=453>452</a>: 
<a name=454>453</a>: 
<a name=455>454</a>: 
<a name=456>455</a>: 
<a name=457>456</a>: 	#################################################################################
<a name=458>457</a>: 	# add menu options for the viewEndpoints.htm page
<a name=459>458</a>: 	#################################################################################
<a name=460>459</a>: 	if ($asppage =~ /viewEndpoints/)
<a name=461>460</a>: 	{ ; $main::Response-&gt;WriteRef(\('
<a name=462>461</a>: 		mainMenu.addMenuItem(&quot;Back to Nodes List&quot;, &quot;document.location.href=\'viewNodes.htm\'&quot;);
<a name=463>462</a>: &lt;!--		mainMenu.addMenuItem(&quot;Search Nodes&quot;, &quot;document.location.href=\'searchNode.htm\'&quot;); --&gt;
<a name=464>463</a>: 		mainMenu.addMenuSeparator();
<a name=465>464</a>: 		')); if ($allowEdit)
<a name=466>465</a>: 		{ ; $main::Response-&gt;WriteRef(\('
<a name=467>466</a>: 			mainMenu.addMenuItem(&quot;Add Endpoints&quot;, &quot;document.location.href=\'editEndpoint.htm?nodeOID='.($g_nodeOID).'\'&quot;);
<a name=468>467</a>: 			mainMenu.addMenuSeparator();
<a name=469>468</a>: 		')); } ; $main::Response-&gt;WriteRef(\('
<a name=470>469</a>: 	')); }
<a name=471>470</a>: 
<a name=472>471</a>: 
<a name=473>472</a>: 	#################################################################################
<a name=474>473</a>: 	# add menu options for the viewInstalledAssets.htm page
<a name=475>474</a>: 	#################################################################################
<a name=476>475</a>: 	if ($asppage =~ /viewInstalledAssets/)
<a name=477>476</a>: 	{ ; $main::Response-&gt;WriteRef(\('
<a name=478>477</a>: 		mainMenu.addMenuItem(&quot;Back to Nodes List&quot;, &quot;document.location.href=\'viewNodes.htm\'&quot;);
<a name=479>478</a>: &lt;!--		mainMenu.addMenuItem(&quot;Search Nodes&quot;, &quot;document.location.href=\'searchNode.htm\'&quot;); --&gt;
<a name=480>479</a>: 		mainMenu.addMenuSeparator();
<a name=481>480</a>: 		')); if ($allowEdit)
<a name=482>481</a>: 		{ ; $main::Response-&gt;WriteRef(\('
<a name=483>482</a>: 			mainMenu.addMenuItem(&quot;Add Installed Asset&quot;, &quot;document.location.href=\'editInstalledAsset.htm?OID='.($g_nodeOID).'\'&quot;);
<a name=484>483</a>: 			mainMenu.addMenuSeparator();
<a name=485>484</a>: 		')); } ; $main::Response-&gt;WriteRef(\('
<a name=486>485</a>: 	')); }
<a name=487>486</a>: 
<a name=488>487</a>: 
<a name=489>488</a>: 	#################################################################################
<a name=490>489</a>: 	# add common options to all menus except the denied page
<a name=491>490</a>: 	#################################################################################
<a name=492>491</a>: 	if ( $asppage !~ /(denied|logout)/ ) {
<a name=493>492</a>: 
<a name=494>493</a>: 
<a name=495>494</a>: 	#################################################################################
<a name=496>495</a>: 	# add menu options for adding a node
<a name=497>496</a>: 	#################################################################################
<a name=498>497</a>: 	if (NCM::Nodes::checkUserRole($Session-&gt;{'Role'}, 'NODE'))
<a name=499>498</a>: 	{ ; $main::Response-&gt;WriteRef(\('
<a name=500>499</a>: 		mainMenu.addMenuItem(&quot;Add a Node&quot;, &quot;document.location.href=\'addNode.htm?origPage='.($asppage).'\'&quot;);
<a name=501>500</a>: 		mainMenu.addMenuSeparator();
<a name=502>501</a>: 	')); }
<a name=503>502</a>: 
<a name=504>503</a>: 
<a name=505>504</a>: 	#################################################################################
<a name=506>505</a>: 	# add menu options for adding linkgroups
<a name=507>506</a>: 	#################################################################################
<a name=508>507</a>: 	if (NCM::Nodes::checkUserRole($Session-&gt;{'Role'}, 'LINK'))
<a name=509>508</a>: 	{ ; $main::Response-&gt;WriteRef(\('
<a name=510>509</a>: 		mainMenu.addMenuItem(&quot;Add a Link Group&quot;, &quot;document.location.href=\'editLinkGroup.htm?origPage='.($asppage).'\'&quot;);
<a name=511>510</a>: 		mainMenu.addMenuItem(&quot;Add a PNAP&quot;, &quot;document.location.href=\'addPNAP.htm\'&quot;);
<a name=512>511</a>: 		mainMenu.addMenuSeparator();
<a name=513>512</a>: 	')); }
<a name=514>513</a>: ; $main::Response-&gt;WriteRef(\('
<a name=515>514</a>: 		mainMenu.addMenuItem(&quot;Go To Asset&quot;, &quot;javascript:GoToAsset();&quot;);
<a name=516>515</a>: 		mainMenu.addMenuItem(&quot;Go To Link Group&quot;, &quot;javascript:GoToLG();&quot;);
<a name=517>516</a>: 		mainMenu.addMenuItem(&quot;Go To Service&quot;, &quot;javascript:GoToSVC();&quot;);
<a name=518>517</a>: 		mainMenu.addMenuSeparator();
<a name=519>518</a>: 		mainMenu.addMenuItem(&quot;Search Bandwidth Services&quot;, &quot;document.location.href=\'searchBandwidthService.htm\'&quot;);
<a name=520>519</a>: 		mainMenu.addMenuItem(&quot;Search Circuit Services&quot;, &quot;document.location.href=\'searchCircuit.htm\'&quot;);
<a name=521>520</a>: 		mainMenu.addMenuItem(&quot;Search Link Groups and Links&quot;, &quot;document.location.href=\'searchLinkGroup.htm\'&quot;);
<a name=522>521</a>: 		mainMenu.addMenuItem(&quot;Search Nodes and Endpoints&quot;, &quot;document.location.href=\'searchNode.htm\'&quot;);
<a name=523>522</a>: 		mainMenu.addMenuItem(&quot;Search Services&quot;, &quot;document.location.href=\'searchService.htm\'&quot;);
<a name=524>523</a>:     ')); if ($Session-&gt;{'Role'} =~ /^NCMADM$/) { ; $main::Response-&gt;WriteRef(\('
<a name=525>524</a>:     mainMenu.addMenuSeparator();
<a name=526>525</a>:     &lt;!-- mainMenu.addMenuItem(&quot;Administer Roles&quot;, &quot;document.location.href=\'roleAdmin.htm\'&quot;); --&gt;
<a name=527>526</a>:     mainMenu.addMenuItem(&quot;Administer Roles&quot;, &quot;document.location.href=\''.($INAP::NEIS::Application-&gt;{'RolesLocation'}).'/index.htm?rct=NEIS&amp;logo=/apps/netcfg/images/netconfig.gif\'&quot;);
<a name=528>527</a>:     ')); } ; $main::Response-&gt;WriteRef(\('
<a name=529>528</a>: 		mainMenu.addMenuSeparator();
<a name=530>529</a>: 		mainMenu.addMenuItem(&quot;NCM Home&quot;, &quot;document.location.href=\'index.htm\'&quot;);
<a name=531>530</a>: 		mainMenu.addMenuSeparator();
<a name=532>531</a>: 		mainMenu.addMenuItem(&quot;Help&quot;, &quot;open(\'https://infosource.internap.com/appdocs/ncm/WebHelp/index.htm\',\'helpwindow\',\'scrollbars\');&quot;);
<a name=533>532</a>: 
<a name=534>533</a>: ////    mainMenu.addMenuItem(&quot;Help&quot;, &quot;open(\'https://infosource.internap.com/apps/ncm/webhelp/'.($helpdoc{$asppage}).'\',\'helpwindow\',\'scrollbars\');&quot;);
<a name=535>534</a>: 
<a name=536>535</a>: 	')); } elsif ( $asppage =~ /(denied|logout)/ ) { ; $main::Response-&gt;WriteRef(\('
<a name=537>536</a>: 		mainMenu.addMenuItem(&quot;NCM Home&quot;, &quot;document.location.href=\'index.htm\'&quot;);
<a name=538>537</a>:   ')); }
<a name=539>538</a>: ; $main::Response-&gt;WriteRef(\('
<a name=540>539</a>: 
<a name=541>540</a>: 
<a name=542>541</a>:   setupMenu(mainMenu,\'grayblue\');
<a name=543>542</a>: 
<a name=544>543</a>:   //located in ./inc/header.inc
<a name=545>544</a>:   createRoleMenu(&quot;'.($Session-&gt;{'Role'}).'&quot;);
<a name=546>545</a>: 
<a name=547>546</a>:   mainMenu.writeMenus();
<a name=548>547</a>: }
<a name=549>548</a>: 
<a name=550>549</a>: function setupMenu( menu, type){
<a name=551>550</a>:   menu.enableHideOnMouseOut=1;
<a name=552>551</a>:   menu.menuBorder=0;
<a name=553>552</a>:   menu.menuItemHeight=0;
<a name=554>553</a>:   menu.menuItemBorder=0;
<a name=555>554</a>:   menu.menuHiliteBgColor=&quot;#cccccc&quot;;
<a name=556>555</a>:   menu.fontSize=12;
<a name=557>556</a>: 
<a name=558>557</a>:   if(type==\'white\'){
<a name=559>558</a>:     menu.fontColor = &quot;blue&quot;;
<a name=560>559</a>:     menu.bgColor = &quot;#dddddd&quot;;
<a name=561>560</a>:     menu.menuItemBgColor = &quot;white&quot;;
<a name=562>561</a>:     menu.menuHiliteBgColor = &quot;#a6b9e9&quot;;
<a name=563>562</a>:   }
<a name=564>563</a>: 
<a name=565>564</a>:   if(type==\'grayblue\'){
<a name=566>565</a>:     menu.fontColorHilite = &quot;#0000ff&quot;;
<a name=567>566</a>:   }
<a name=568>567</a>: }
<a name=569>568</a>: 
<a name=570>569</a>: 
<a name=571>570</a>: // Note from Dex: I don\'t think we need these last three menus,
<a name=572>571</a>: // but they may become useful so I\'m leaving them in for now
<a name=573>572</a>: 
<a name=574>573</a>: function ShowUserMenu( UserName){
<a name=575>574</a>:   if(UserName != &quot;No data&quot;){
<a name=576>575</a>:     userMenu = new Menu(UserName);
<a name=577>576</a>:     userMenu.addMenuItem(&quot;Infosource Page&quot;, &quot;document.location.href=\'https://infosource.internap.com/corp/staff/info.htm?login=&quot;+UserName+&quot;\'&quot;);
<a name=578>577</a>:     userMenu.addMenuSeparator();
<a name=579>578</a>:     userMenu.addMenuItem(&quot;Email&quot;, &quot;document.location.href=\'mailto:&quot;+UserName+&quot;@internap.com\'&quot;);
<a name=580>579</a>:     userMenu.addMenuItem(&quot;Page&quot;, &quot;document.location.href=\'https://infosource.internap.com/corp/staff/page.htm?login=&quot;+UserName+&quot;\'&quot;);
<a name=581>580</a>:     setupMenu(userMenu,\'white\');
<a name=582>581</a>:     userMenu.writeMenus();
<a name=583>582</a>:     showMenu(userMenu);
<a name=584>583</a>:   }
<a name=585>584</a>: }
<a name=586>585</a>: 
<a name=587>586</a>: function NewContact(){
<a name=588>587</a>:   top.contactWindow = window.open(\'newcontact.htm\',\'contactWindow\',\'titlebar=no,dependent=yes,width=300,height=200,screenX=100,screenY=100\');
<a name=589>588</a>:   top.contactWindow.focus();
<a name=590>589</a>: 
<a name=591>590</a>:   document.FNewContact.target=\'contactWindow\';
<a name=592>591</a>:   document.FNewContact.submit();
<a name=593>592</a>: }
<a name=594>593</a>: 
<a name=595>594</a>: function GetUserInfo( UserName){
<a name=596>595</a>:   document.location.href=&quot;https://infosource.internap.com/corp/staff/info.htm?login=&quot;+UserName;
<a name=597>596</a>: }
<a name=598>597</a>: 
<a name=599>598</a>: //***************************************
<a name=600>599</a>: //Navigates to the next service
<a name=601>600</a>: //
<a name=602>601</a>: //
<a name=603>602</a>: function GoToSVC(){
<a name=604>603</a>:   var SVCOID=prompt(&quot;Enter Service&quot;, &quot;'.($Session-&gt;{'LastsvcOID'}).'&quot;);
<a name=605>604</a>:   if(SVCOID!=null){
<a name=606>605</a>:     if(isNaN(SVCOID))
<a name=607>606</a>:       alert(\'Sorry.  You did not enter a valid number\');
<a name=608>607</a>:     else
<a name=609>608</a>:       document.location.href=&quot;viewCircuitService.htm?SVCOID=&quot;+SVCOID;
<a name=610>609</a>:   }
<a name=611>610</a>: }
<a name=612>611</a>: 
<a name=613>612</a>: //***************************************
<a name=614>613</a>: //Navigates to the asset
<a name=615>614</a>: //
<a name=616>615</a>: //
<a name=617>616</a>: function GoToAsset(){
<a name=618>617</a>:   var ASTNBR=prompt(&quot;Enter Asset Tag&quot;,&quot;&quot;);
<a name=619>618</a>:   if(ASTNBR.length &gt; 0){
<a name=620>619</a>:     if(isNaN(ASTNBR))
<a name=621>620</a>:       alert(\'Sorry.  You did not enter a valid number\');
<a name=622>621</a>:     else
<a name=623>622</a>:       document.location.href=&quot;viewNodes.htm?assetTag=&quot;+ASTNBR;
<a name=624>623</a>:   } else {
<a name=625>624</a>:       alert(\'Sorry.  You did not enter a valid number\');
<a name=626>625</a>:   }
<a name=627>626</a>: }
<a name=628>627</a>: 
<a name=629>628</a>: //***************************************
<a name=630>629</a>: //Navigates to the next link group
<a name=631>630</a>: //
<a name=632>631</a>: //
<a name=633>632</a>: function GoToLG(){
<a name=634>633</a>:   var LGOID=prompt(&quot;Enter Link Group&quot;, &quot;'.($Session-&gt;{'searchLinkGroupOID'}).'&quot;);
<a name=635>634</a>:   if(LGOID!=null){
<a name=636>635</a>:     if(isNaN(LGOID))  {
<a name=637>636</a>:       alert(\'Sorry.  You did not enter a valid number\');
<a name=638>637</a>:       return 0;
<a name=639>638</a>:     } else {
<a name=640>639</a>:       document.FGoToLinkGroupDetail.searchLinkGroupOID.value=LGOID;
<a name=641>640</a>:       document.FGoToLinkGroupDetail.submit();
<a name=642>641</a>:     }
<a name=643>642</a>:   }
<a name=644>643</a>: }
<a name=645>644</a>: 
<a name=646>645</a>: /***************************************************
<a name=647>646</a>:  * Function is used to submit the LinkGroupOID to
<a name=648>647</a>:  * the View Link Group page
<a name=649>648</a>:  *
<a name=650>649</a>:  */
<a name=651>650</a>: function GoToLinkGroupDetail(linkgroupOID){
<a name=652>651</a>:   document.FGoToLinkGroupDetail.searchLinkGroupOID.value=linkgroupOID;
<a name=653>652</a>:   document.FGoToLinkGroupDetail.submit();
<a name=654>653</a>: }
<a name=655>654</a>: /**********************************************************
<a name=656>655</a>: 	TOOL TIP
<a name=657>656</a>: 	Timing and positioning constants for tool tip display.
<a name=658>657</a>: 	*/
<a name=659>658</a>: 
<a name=660>659</a>: 
<a name=661>660</a>: var toolTipWait = 1000;    // Delay before showing tool tip.
<a name=662>661</a>: var toolTipShow = 25000;   // Time to keep tool tip active.
<a name=663>662</a>: var toolTipxOff =    0;    // Horizontal distance from mouse.
<a name=664>663</a>: var toolTipyOff =   20;    // Vertical distance from mouse.
<a name=665>664</a>: 
<a name=666>665</a>: function startToolTip(name) {
<a name=667>666</a>:   var tip = getLayer(name);
<a name=668>667</a>:   // Clear out any pending timer.
<a name=669>668</a>:   if (tip.timerID)
<a name=670>669</a>:     clearTimeout(tip.timerID);
<a name=671>670</a>: 
<a name=672>671</a>:   // Set timer to show tool tip.
<a name=673>672</a>:   tip.timerID = setTimeout(\'showToolTip(&quot;\' + name + \'&quot;)\', toolTipWait);
<a name=674>673</a>: }
<a name=675>674</a>: 
<a name=676>675</a>: function showToolTip(name) {
<a name=677>676</a>:   var tip = getLayer(name);
<a name=678>677</a>:     // Clear out any pending timer.
<a name=679>678</a>:   if (tip.timerID)
<a name=680>679</a>:     clearTimeout(tip.timerID);
<a name=681>680</a>: 
<a name=682>681</a>:   // Position and show the tool tip.
<a name=683>682</a>:   moveLayerTo(tip, window.pageX + toolTipxOff, window.pageY + toolTipyOff);
<a name=684>683</a>:   showLayer(tip);
<a name=685>684</a>:   // Set timer to hide the tool tip after a delay.
<a name=686>685</a>:   tip.timerID = setTimeout(\'hideToolTip(&quot;\' + name + \'&quot;)\', toolTipShow);
<a name=687>686</a>: }
<a name=688>687</a>: 
<a name=689>688</a>: function hideToolTip(name) {
<a name=690>689</a>:   var tip = getLayer(name);
<a name=691>690</a>:   // Clear out any pending timer.
<a name=692>691</a>:   if (tip.timerID)
<a name=693>692</a>:     clearTimeout(tip.timerID);
<a name=694>693</a>: 
<a name=695>694</a>:   hideLayer(tip);
<a name=696>695</a>: }
<a name=697>696</a>: //--&gt;
<a name=698>697</a>: &lt;/script&gt;
<a name=699>698</a>: 
<a name=700>699</a>: 	&lt;script language=&quot;JavaScript&quot;&gt;
<a name=701>700</a>: &lt;!--
<a name=702>701</a>: if(document.layers){origWidth=innerWidth;origHeight=innerHeight;onresize=function(){if(innerWidth!=origWidth||innerHeight!=origHeight)location.reload()}}
<a name=703>702</a>: function MM_showHideLayers() { //v2.0
<a name=704>703</a>:   var i, visStr, args, theObj;
<a name=705>704</a>:   args = MM_showHideLayers.arguments;
<a name=706>705</a>:   for (i=0; i&lt;(args.length-2); i+=3) { //with arg triples (objNS,objIE,visStr)
<a name=707>706</a>:     visStr   = args[i+2];
<a name=708>707</a>:     if (navigator.appName == \'Netscape\' &amp;&amp; document.layers != null) {
<a name=709>708</a>:       theObj = eval(args[i]);
<a name=710>709</a>:       if (theObj) theObj.visibility = visStr;
<a name=711>710</a>:     } else if (document.all != null) { //IE
<a name=712>711</a>:       if (visStr == \'show\') visStr = \'visible\'; //convert vals
<a name=713>712</a>:       if (visStr == \'hide\') visStr = \'hidden\';
<a name=714>713</a>:       theObj = eval(args[i+1]);
<a name=715>714</a>:       if (theObj) theObj.style.visibility = visStr;
<a name=716>715</a>:   } }
<a name=717>716</a>: }
<a name=718>717</a>: 
<a name=719>718</a>: function PopSearch(){
<a name=720>719</a>:         var QUERY=prompt(&quot;Enter Search Term&quot;, &quot;&quot;);
<a name=721>720</a>:         if (QUERY) {
<a name=722>721</a>:                 document.location.href=&quot;/cgi-bin/nph-seek.cgi/query.html?qt=&quot;+QUERY;
<a name=723>722</a>:         }
<a name=724>723</a>: }
<a name=725>724</a>: //--&gt;
<a name=726>725</a>: &lt;/script&gt;
<a name=727>726</a>: 
<a name=728>727</a>: &lt;/head&gt;
<a name=729>728</a>: &lt;body onLoad=&quot;init()&quot;&gt;
<a name=730>729</a>: 	'));
<a name=731>730</a>: 
<a name=732>731</a>:   # this file is included in the &lt;body&gt; tag of every page
<a name=733>732</a>:   # and generates the role menu and HTML for the header
<a name=734>733</a>:   # (company logo, application gif, nav bar)
<a name=735>734</a>: 
<a name=736>735</a>: ; $main::Response-&gt;WriteRef(\('
<a name=737>736</a>: 
<a name=738>737</a>: &lt;script language=&quot;JavaScript1.2&quot;&gt;
<a name=739>738</a>: &lt;!--
<a name=740>739</a>: 
<a name=741>740</a>:   function ChangeRole(role) {
<a name=742>741</a>:     document.FChangeRole.role.value=role;
<a name=743>742</a>:     document.FChangeRole.submit();
<a name=744>743</a>:   }
<a name=745>744</a>: 
<a name=746>745</a>:   function createRoleMenu() {
<a name=747>746</a>:     roleMenu=new Menu(&quot;role&quot;);
<a name=748>747</a>: 
<a name=749>748</a>: 
<a name=750>749</a>: '));  if ($Session-&gt;{'Role'}) { ; $main::Response-&gt;WriteRef(\('
<a name=751>750</a>: 
<a name=752>751</a>: 
<a name=753>752</a>:     roleMenu.addMenuItem(&quot;'.($Session-&gt;{'RoleLong'}).'&quot;);
<a name=754>753</a>: 
<a name=755>754</a>: 
<a name=756>755</a>: '));
<a name=757>756</a>:     }
<a name=758>757</a>: 
<a name=759>758</a>:     if ($Session-&gt;{'Roles'}) {
<a name=760>759</a>:       my @Roles = @{$Session-&gt;{'Roles'}};
<a name=761>760</a>:       my @RolesLong = @{$Session-&gt;{'RolesLong'}};
<a name=762>761</a>:       my $role;
<a name=763>762</a>:       my $roleCounter = 0;
<a name=764>763</a>: 
<a name=765>764</a>:       foreach $role (@Roles) {
<a name=766>765</a>: 
<a name=767>766</a>:         unless ($role eq $Session-&gt;{'Role'}) {  ; $main::Response-&gt;WriteRef(\('
<a name=768>767</a>: 
<a name=769>768</a>:      		roleMenu.addMenuItem(&quot;'.( $RolesLong[$roleCounter] ).'&quot;,&quot;ChangeRole(\''.( $role ).'\');&quot;);
<a name=770>769</a>: 
<a name=771>770</a>: 
<a name=772>771</a>: 		'));
<a name=773>772</a>:         }
<a name=774>773</a>:         $roleCounter++;
<a name=775>774</a>:       }
<a name=776>775</a>: 
<a name=777>776</a>:       if ($Session-&gt;{'Role'} =~ /^NCMADM$/) {
<a name=778>777</a>: ; $main::Response-&gt;WriteRef(\('
<a name=779>778</a>:     roleMenu.addMenuSeparator();
<a name=780>779</a>: 
<a name=781>780</a>:     roleMenu.addMenuItem(&quot;Administer Roles&quot;, &quot;document.location.href=\''.( $INAP::NEIS::Application-&gt;{'RolesLocation'} ).'/index.htm?rct=NEIS&amp;logo=/apps/netcfg/images/netconfig.gif\'&quot;);
<a name=782>781</a>: '));
<a name=783>782</a>:       }
<a name=784>783</a>: ; $main::Response-&gt;WriteRef(\('
<a name=785>784</a>: 
<a name=786>785</a>:     setupMenu(roleMenu,\'grayblue\');
<a name=787>786</a>: '));
<a name=788>787</a>:     } ### end if
<a name=789>788</a>: 
<a name=790>789</a>: ; $main::Response-&gt;WriteRef(\('
<a name=791>790</a>: 
<a name=792>791</a>:   }   // end function
<a name=793>792</a>: 
<a name=794>793</a>: //--&gt;
<a name=795>794</a>: &lt;/script&gt;
<a name=796>795</a>: 
<a name=797>796</a>: &lt;!-- form used to change user role --&gt;
<a name=798>797</a>: &lt;form name=&quot;FChangeRole&quot; method=&quot;post&quot;&gt;
<a name=799>798</a>:   &lt;input type=&quot;hidden&quot; name=&quot;control&quot; value=&quot;ChangeRole&quot;&gt;
<a name=800>799</a>:   &lt;input type=&quot;hidden&quot; name=&quot;role&quot;&gt;
<a name=801>800</a>: &lt;/form&gt;
<a name=802>801</a>: 
<a name=803>802</a>: &lt;!-- form used to move to the viewLinkGroups.htm page --&gt;
<a name=804>803</a>: &lt;form name=&quot;FGoToLinkGroupDetail&quot; method=&quot;post&quot; action=&quot;viewLinkGroups.htm&quot;&gt;
<a name=805>804</a>:   &lt;input type=&quot;hidden&quot; name=&quot;searchLinkGroupOID&quot;&gt;
<a name=806>805</a>:   &lt;input type=&quot;hidden&quot; name=&quot;search&quot; value=&quot;SEARCH&quot;&gt;
<a name=807>806</a>: &lt;/form&gt;
<a name=808>807</a>: 
<a name=809>808</a>: &lt;!-- main nav --&gt;
<a name=810>809</a>: &lt;table width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;
<a name=811>810</a>:   &lt;tr&gt;
<a name=812>811</a>:   &lt;td&gt;&lt;img src=&quot;../../images/info-sm2.gif&quot; align=&quot;left&quot; usemap=&quot;#gomenu&quot; border=&quot;0&quot; alt=&quot;InfoSource&quot;&gt;&lt;/td&gt;
<a name=813>812</a>:   &lt;td align=&quot;right&quot;&gt; &lt;/td&gt;
<a name=814>813</a>:   &lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;
<a name=815>814</a>:     &lt;a href=&quot;index.htm&quot;&gt;&lt;img src=&quot;./images/netconfig.gif&quot; alt=&quot;Network Configuration&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
<a name=816>815</a>:     &lt;font size=&quot;-1&quot; color=&quot;red&quot;&gt;&lt;br&gt;
<a name=817>816</a>:     &lt;div align=&quot;center&quot;&gt;
<a name=818>817</a>: '));
<a name=819>818</a>: $Response-&gt;Write(&quot;DEBUG MODE ON&quot;) if ($Application-&gt;{'Debug'} eq &quot;1&quot;);
<a name=820>819</a>: ; $main::Response-&gt;WriteRef(\('
<a name=821>820</a>:     &lt;/div&gt;
<a name=822>821</a>:     &lt;/font&gt;
<a name=823>822</a>:   &lt;/td&gt;
<a name=824>823</a>:   &lt;/tr&gt;
<a name=825>824</a>: &lt;/table&gt;
<a name=826>825</a>: &lt;!-- end mainnav --&gt;
<a name=827>826</a>: 
<a name=828>827</a>: &lt;script language=&quot;JavaScript1.2&quot;&gt;
<a name=829>828</a>: &lt;!--
<a name=830>829</a>: 	//this is nessecary for the menus to show up on IE.
<a name=831>830</a>: 	//IE needs to create the menus after the &lt;BODY&gt; tag
<a name=832>831</a>: 
<a name=833>832</a>: 	if(document.all){
<a name=834>833</a>: 		CreateMenus();
<a name=835>834</a>: 	}
<a name=836>835</a>: //--&gt;
<a name=837>836</a>: &lt;/script&gt;
<a name=838>837</a>: 
<a name=839>838</a>: 
<a name=840>839</a>: 
<a name=841>840</a>: &lt;!-- begin navbar --&gt;
<a name=842>841</a>: &lt;table border=&quot;0&quot; bgcolor=&quot;#0000AA&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;&gt;
<a name=843>842</a>:   &lt;tr&gt;
<a name=844>843</a>:   &lt;td align=&quot;left&quot; class=&quot;navsm&quot;&gt;Current User: '.($Session-&gt;{'FirstName'}).' '.($Session-&gt;{'LastName'}).'&amp;nbsp&amp;nbsp&amp;nbsp
<a name=845>844</a>: '));
<a name=846>845</a>: if ($Session-&gt;{'Role'} ne '') {
<a name=847>846</a>:   if ($asppage eq &quot;index.htm&quot;) { ; $main::Response-&gt;WriteRef(\('
<a name=848>847</a>:     Current Role: &lt;a class=&quot;navsm&quot; href=&quot;javascript:void(0)&quot; onmouseover=&quot;window.showMenu(window.roleMenu);&quot; &gt;'.($Session-&gt;{'RoleLong'}).'&lt;/a&gt;
<a name=849>848</a>:   ')); } else { ; $main::Response-&gt;WriteRef(\('
<a name=850>849</a>:     Current Role: '.($Session-&gt;{'RoleLong'}).'
<a name=851>850</a>:   ')); }
<a name=852>851</a>: }
<a name=853>852</a>: ; $main::Response-&gt;WriteRef(\('
<a name=854>853</a>:   &lt;/td&gt;
<a name=855>854</a>:   &lt;td align=&quot;right&quot; class=&quot;navsm&quot;&gt;
<a name=856>855</a>:     &lt;!-- &lt;a href=&quot;mywo.htm&quot; onMouseOver=&quot;window.showMenu(window.myMenu);&quot; class=&quot;navsm&quot;&gt;My NetConfig&lt;/a&gt;&amp;nbsp;&amp;nbsp;|&amp;nbsp;&amp;nbsp; --&gt;
<a name=857>856</a>:     &lt;a href=&quot;javascript:void(0)&quot; onmouseover=&quot;window.showMenu(window.mainMenu);&quot; class=&quot;navsm&quot;&gt;Main Menu&lt;/a&gt;
<a name=858>857</a>:     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
<a name=859>858</a>:     &lt;a href=&quot;logout.htm&quot; class=&quot;navsm&quot;&gt;Sign Out&lt;/a&gt; &amp;nbsp;&amp;nbsp;
<a name=860>859</a>:   &lt;/td&gt;
<a name=861>860</a>:   &lt;/tr&gt;
<a name=862>861</a>: &lt;/table&gt;
<a name=863>862</a>: &lt;!-- end navbar --&gt;
<a name=864>863</a>: &lt;br&gt;
<a name=865>864</a>: 
<a name=866>865</a>: 
<a name=867>866</a>: 	&lt;center&gt;
<a name=868>867</a>: 	&lt;form method=&quot;POST&quot;&gt;
<a name=869>868</a>: 		&lt;table border=&quot;0&quot; cellpadding=&quot;4&quot;&gt;
<a name=870>869</a>: 			&lt;tr&gt;
<a name=871>870</a>: 				&lt;th class=&quot;header&quot; colspan=&quot;9&quot;&gt;&lt;font size=&quot;+1&quot;&gt;Nodes&lt;/font&gt;&lt;/th&gt;
<a name=872>871</a>: 			&lt;/tr&gt;
<a name=873>872</a>: 			&lt;tr&gt;
<a name=874>873</a>: 				&lt;td colspan=&quot;9&quot;&gt;
<a name=875>874</a>: 
<a name=876>875</a>: 					')); ### if the user has edit rights, show the edit links
<a name=877>876</a>: 						if ($allowEdit)
<a name=878>877</a>: 						{ ; $main::Response-&gt;WriteRef(\('
<a name=879>878</a>: 					&lt;img src=&quot;images/edite.gif&quot; width=&quot;15&quot; height=&quot;18&quot; border=&quot;0&quot; alt=&quot;Edit&quot;&gt; Edit
<a name=880>879</a>: 					&amp;nbsp;&amp;nbsp;&amp;nbsp;
<a name=881>880</a>: 					')); } ; $main::Response-&gt;WriteRef(\('
<a name=882>881</a>: 
<a name=883>882</a>: 					&lt;img src=&quot;images/editp.gif&quot; width=&quot;15&quot; height=&quot;18&quot; border=&quot;0&quot; alt=&quot;Endpoints&quot;&gt; Endpoints
<a name=884>883</a>: 					&amp;nbsp;&amp;nbsp;&amp;nbsp;
<a name=885>884</a>: 					&lt;img src=&quot;images/edita.gif&quot; width=&quot;15&quot; height=&quot;18&quot; border=&quot;0&quot; alt=&quot;Assets&quot;&gt; Assets
<a name=886>885</a>: 				&lt;/td&gt;
<a name=887>886</a>: 			&lt;/tr&gt;
<a name=888>887</a>: 			&lt;tr&gt;
<a name=889>888</a>:  				&lt;th colspan=&quot;'.($editcols).'&quot;&gt;Select:&lt;/th&gt;
<a name=890>889</a>: 				&lt;td class=&quot;columnHeader&quot;&gt;
<a name=891>890</a>: 					&lt;A href=&quot;'.($asppage).'?ordercolumn=NODENAME&quot;&gt;Name&lt;/A&gt;
<a name=892>891</a>: 				&lt;/td&gt;
<a name=893>892</a>: 				&lt;td class=&quot;columnHeader&quot;&gt;
<a name=894>893</a>: 					&lt;A href=&quot;'.($asppage).'?ordercolumn=NODETYPE&quot;&gt;Type&lt;/A&gt;
<a name=895>894</a>: 				&lt;/td&gt;
<a name=896>895</a>: 				&lt;td class=&quot;columnHeader&quot;&gt;
<a name=897>896</a>: 					&lt;A href=&quot;'.($asppage).'?ordercolumn=STATUS&quot;&gt;Status&lt;/A&gt;
<a name=898>897</a>: 				&lt;/td&gt;
<a name=899>898</a>: 				&lt;td class=&quot;columnHeader&quot;&gt;
<a name=900>899</a>: 					&lt;A href=&quot;'.($asppage).'?ordercolumn=SITECODE&quot;&gt;Site Code&lt;/A&gt;
<a name=901>900</a>: 				&lt;/td&gt;
<a name=902>901</a>: 				&lt;td class=&quot;columnHeader&quot;&gt;
<a name=903>902</a>: 					&lt;A href=&quot;'.($asppage).'?ordercolumn=LOCATIONDSCR&quot;&gt;Location&lt;/A&gt;
<a name=904>903</a>: 				&lt;/td&gt;
<a name=905>904</a>: 				&lt;td class=&quot;columnHeader&quot;&gt;
<a name=906>905</a>: 					&lt;A href=&quot;'.($asppage).'?ordercolumn=RACKNBR&quot;&gt;Rack #&lt;/A&gt;
<a name=907>906</a>: 				&lt;/td&gt;
<a name=908>907</a>: 			&lt;/tr&gt;
<a name=909>908</a>: 
<a name=910>909</a>:             ')); ### Add the data to the table ###
<a name=911>910</a>:                  my $iCount;
<a name=912>911</a>: 				 my $bgcolor;
<a name=913>912</a>:                  for ($iCount = 0; $iCount &lt; $nodecount; $iCount++)
<a name=914>913</a>:                  {
<a name=915>914</a>: 					# set the alternating row colors
<a name=916>915</a>: 					if ($iCount%2 != 0) {
<a name=917>916</a>: 						$bgcolor = &quot;eeeeee&quot;
<a name=918>917</a>: 					} else {
<a name=919>918</a>: 						$bgcolor = &quot;ffffff&quot;
<a name=920>919</a>: 					}
<a name=921>920</a>: 					; $main::Response-&gt;WriteRef(\('
<a name=922>921</a>:              &lt;tr&gt;
<a name=923>922</a>: 
<a name=924>923</a>: 				')); ### if the user has edit rights, show the edit links
<a name=925>924</a>: 					if ($allowEdit)
<a name=926>925</a>: 					{ ; $main::Response-&gt;WriteRef(\('
<a name=927>926</a>: 
<a name=928>927</a>: 				&lt;td&gt;&lt;A href=&quot;editNode.htm?OID='.($nodeOIDList[$iCount]).'&quot;&gt;
<a name=929>928</a>: 					&lt;img src=&quot;images/edite.gif&quot; width=&quot;15&quot; height=&quot;18&quot; border=&quot;0&quot; alt=&quot;Edit&quot;&gt;&lt;/a&gt;
<a name=930>929</a>: 				&lt;/td&gt;
<a name=931>930</a>: 
<a name=932>931</a>: 				')); } ; $main::Response-&gt;WriteRef(\('
<a name=933>932</a>: 
<a name=934>933</a>: 				&lt;td&gt;&lt;A href=&quot;viewEndpoints.htm?OID='.($nodeOIDList[$iCount]).'&amp;nodeName='.($nodeNameList[$iCount]).'&quot;&gt;
<a name=935>934</a>: 					&lt;img src=&quot;images/editp.gif&quot; width=&quot;15&quot; height=&quot;18&quot; border=&quot;0&quot; alt=&quot;Endpoints&quot;&gt;&lt;/a&gt;
<a name=936>935</a>: 				&lt;/td&gt;
<a name=937>936</a>: 				&lt;td&gt;&lt;A href=&quot;viewInstalledAssets.htm?OID='.($nodeOIDList[$iCount]).'&quot;&gt;
<a name=938>937</a>: 					&lt;img src=&quot;images/edita.gif&quot; width=&quot;15&quot; height=&quot;18&quot; border=&quot;0&quot; alt=&quot;Assets&quot;&gt;&lt;/a&gt;
<a name=939>938</a>: 				&lt;/td&gt;
<a name=940>939</a>:                  &lt;td bgcolor=&quot;#'.($bgcolor).'&quot;&gt;'.( $nodeNameList[$iCount] ).'&amp;nbsp;&lt;/td&gt;
<a name=941>940</a>:                  &lt;td bgcolor=&quot;#'.($bgcolor).'&quot;&gt;'.( $nodeTypeList[$iCount] ).'&amp;nbsp;&lt;/td&gt;
<a name=942>941</a>:                  &lt;td bgcolor=&quot;#'.($bgcolor).'&quot;&gt;'.( $statusList[$iCount] ).'&amp;nbsp;&lt;/td&gt;
<a name=943>942</a>:                  &lt;td bgcolor=&quot;#'.($bgcolor).'&quot;&gt;'.( $siteCodeList[$iCount] ).'&amp;nbsp;&lt;/td&gt;
<a name=944>943</a>:                  &lt;td bgcolor=&quot;#'.($bgcolor).'&quot;&gt;'.( $locationList[$iCount] ).'&amp;nbsp;&lt;/td&gt;
<a name=945>944</a>:                  &lt;td bgcolor=&quot;#'.($bgcolor).'&quot;&gt;'.( $rackList[$iCount] ).'&amp;nbsp;&lt;/td&gt;
<a name=946>945</a>:             &lt;/tr&gt;
<a name=947>946</a>: 
<a name=948>947</a>: 				')); } ### end for loop 
<a name=949>948</a>: ; $main::Response-&gt;WriteRef(\('
<a name=950>949</a>: 
<a name=951>950</a>: 			&lt;tr&gt;
<a name=952>951</a>: 				&lt;td colspan=&quot;9&quot;&gt;
<a name=953>952</a>: 					&lt;font color=&quot;red&quot;&gt;
<a name=954>953</a>: 
<a name=955>954</a>: 				'));
<a name=956>955</a>: 				if (0 == $nodecount)
<a name=957>956</a>: 				{ ; $main::Response-&gt;WriteRef(\('
<a name=958>957</a>: 					&lt;font size=&quot;+2&quot;&gt;
<a name=959>958</a>: 					No nodes were found with that search critera. Please try again.
<a name=960>959</a>: 					&lt;/font&gt;
<a name=961>960</a>: 				')); } else { ; $main::Response-&gt;WriteRef(\('
<a name=962>961</a>: 					Your search returned '.($nodecount ).' nodes.
<a name=963>962</a>: 				')); } ; $main::Response-&gt;WriteRef(\('
<a name=964>963</a>: 
<a name=965>964</a>: 					&lt;/font&gt;
<a name=966>965</a>: 				&lt;/td&gt;
<a name=967>966</a>: 			&lt;/tr&gt;
<a name=968>967</a>: 		&lt;/table&gt;
<a name=969>968</a>: 		&lt;!-- SAVE THE SEARCH CRITERIA --&gt;
<a name=970>969</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchNodeOID&quot; value=&quot;'.($searchNodeOID).'&quot;&gt;
<a name=971>970</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchNodeName&quot; value=&quot;'.($searchNodeName).'&quot;&gt;
<a name=972>971</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchNodeType&quot; value=&quot;'.($searchNodeType).'&quot;&gt;
<a name=973>972</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchNodeStatus&quot; value=&quot;'.($searchNodeStatus).'&quot;&gt;
<a name=974>973</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchSiteCode&quot; value=&quot;'.($searchSiteCode).'&quot;&gt;
<a name=975>974</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchLocation&quot; value=&quot;'.($searchLocation).'&quot;&gt;
<a name=976>975</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchRack&quot; value=&quot;'.($searchRack).'&quot;&gt;
<a name=977>976</a>: 	&lt;/form&gt;
<a name=978>977</a>: 	&lt;/center&gt;
<a name=979>978</a>:   &lt;div align=&quot;center&quot;&gt;Problems? Please &lt;a href=&quot;javascript:document.FBug.submit();&quot;&gt;let us know.&lt;/a&gt;&lt;/div&gt;
<a name=980>979</a>: &lt;form name=&quot;FBug&quot; method=&quot;get&quot; action=&quot;/cgi-bin/itservices.cgi&quot;&gt;
<a name=981>980</a>:   &lt;input type=&quot;hidden&quot; name=&quot;app&quot; value=&quot;'));$Response-&gt;Write(qq($Application-&gt;{'Application'} $Application-&gt;{'CVS_Version'}));; $main::Response-&gt;WriteRef(\('&quot;&gt;
<a name=982>981</a>: &lt;/form&gt;
<a name=983>982</a>: &lt;div align=&quot;left&quot;&gt;&lt;b&gt;&lt;i&gt;Version '.($Application-&gt;{'CVS_Version'}).'&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
<a name=984>983</a>: &lt;!-- &lt;div align=&quot;right&quot;&gt;&lt;i&gt;For &lt;/i&gt;&lt;b&gt;&lt;font face=&quot;Helvetica&quot; color=&quot;blue&quot;&gt;Inter&lt;/font&gt;NAP&lt;/b&gt;&lt;i&gt; internal use only.&lt;/i&gt;&lt;/div&gt; --&gt;
<a name=985>984</a>: &lt;div align=&quot;right&quot;&gt;&lt;i&gt;For &lt;b&gt;INTERNAP&lt;/b&gt; internal use only.&lt;/i&gt;&lt;/div&gt;
<a name=986>985</a>: ')); # Comment out this functionality until I need to add menus later.
<a name=987>986</a>: # &lt;script language=&quot;JavaScript1.2&quot;&gt;
<a name=988>987</a>: # &lt;!--
<a name=989>988</a>: # 	//this is nessecary for the menus to show up on IE.
<a name=990>989</a>: # 	//IE needs to create the menus after the &lt;BODY&gt; tag
<a name=991>990</a>: # 	if(document.all){ # document.all is only defined in IE, not in Netscape.
<a name=992>991</a>: # 		CreateMenus();
<a name=993>992</a>: #   }
<a name=994>993</a>: # //--&gt;
<a name=995>994</a>: # &lt;/script&gt;
<a name=996>995</a>: unless ($asppage =~ /^(pick|refine)/) { ; $main::Response-&gt;WriteRef(\('
<a name=997>996</a>:   &lt;Map name=&quot;gomenu&quot;&gt;
<a name=998>997</a>:   &lt;area shape=&quot;rect&quot; coords=&quot;61,0,251,25&quot; href=&quot;/&quot;&gt;
<a name=999>998</a>: &lt;/map&gt;
<a name=1000>999</a>: 
<a name=1001>1000</a>: &lt;div id=&quot;goOff&quot;&gt;&lt;a href=&quot;javascript:void(0)&quot; onMouseOver=&quot;MM_showHideLayers(\'document.layers[\\\'goOff\\\']\',\'document.all[\\\'goOff\\\']\',\'hide\',\'document.layers[\\\'go\\\']\',\'document.all[\\\'go\\\']\',\'hide\')&quot;&gt;&lt;img src=&quot;/images/1space.gif&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;400&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/div&gt;
<a name=1002>1001</a>: 
<a name=1003>1002</a>: &lt;div id=&quot;goTgl&quot;&gt;&lt;a href=&quot;javascript:void(0)&quot; onMouseOver=&quot;MM_showHideLayers(\'document.layers[\\\'goOff\\\']\',\'document.all[\\\'goOff\\\']\',\'show\',\'document.layers[\\\'go\\\']\',\'document.all[\\\'go\\\']\',\'show\')&quot;&gt;&lt;img src=&quot;/images/1space.gif&quot; alt=&quot;&quot; width=&quot;120&quot; height=&quot;55&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/div&gt;
<a name=1004>1003</a>: 
<a name=1005>1004</a>: &lt;div id=&quot;go&quot;&gt;
<a name=1006>1005</a>:   &lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;/&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000000&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Home&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;
<a name=1007>1006</a>:   &lt;a href=&quot;/corp/staff/pageall.htm&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Paging&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
<a name=1008>1007</a>:   &lt;a href=&quot;/passwd/cgi-bin/prox/password.cgi&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Change&amp;nbsp;Password&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;
<a name=1009>1008</a>:   &lt;a href=&quot;/top/help.htm&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Help&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
<a name=1010>1009</a>:   &lt;a href=&quot;/dept/index.htm&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Departments&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
<a name=1011>1010</a>:   &lt;a href=&quot;/apps/index.htm&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Applications&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
<a name=1012>1011</a>:   &lt;a href=&quot;/corp/staff/search.htm&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Staff&amp;nbsp;Search&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
<a name=1013>1012</a>:   &lt;a href=&quot;javascript:PopSearch();&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;InfoSource&amp;nbsp;Search&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;br&gt;
<a name=1014>1013</a>:   &lt;!--&lt;a href=&quot;javascript:q=document.getSelection();for(i=0;i&lt;frames.length;i++){q=frames[i].document.getSelection();if(q)break;}if(!q)void(q=prompt(\'Enter Search Terms\',\'\'));if(q)location.href=\'https://infosource.internap.com/cgi-bin/nph-seek.cgi/query.html?qt=\'+escape(q)&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;InfoSource&amp;nbsp;Search&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;--&gt;&lt;br&gt;
<a name=1015>1014</a>: &lt;/div&gt;
<a name=1016>1015</a>: 
<a name=1017>1016</a>: ')); } ; $main::Response-&gt;WriteRef(\('
<a name=1018>1017</a>: 
<a name=1019>1018</a>: 
<a name=1020>1019</a>: &lt;/body&gt;
<a name=1021>1020</a>: &lt;/html&gt;'));;;no lib qw(/usr/local/etc/infosource/apps/netcfg/); ;; }

</pre>
<hr width=30% size=1>
<font size=-1>
<i> 
An error has occured with the Apache::ASP script just run. 
If you are the developer working on this script, and cannot work 
through this problem, please try researching the it at the 
<a href=http://www.apache-asp.org/>Apache::ASP web site</a>,
specifically the <a href=http://www.apache-asp.org/faq.html>FAQ section</a>.
Failing that, check out your 
<a href=http://www.apache-asp.org/support.html>support options</a>, and 
if necessary include this debug output with any query. 






Re: Apache::ASP -- Corruption of statedir files/truncation of methodnames

Posted by Carl Lipo <ca...@internap.com>.
The statedir is local so it doesnt seem to be an NFS issue. There
definitely seems to be a corruption of the StateDir files: here is a error
that crops up in our error log.

[Thu Apr  5 08:09:07 2001] [notice] child pid 11555 exit signal
Segmentation fault (11)
Use of uninitialized value at /usr/lib/perl5/MLDBM.pm line 161 (#1)
    
    (W) An undefined value was used as if it were already defined.  It was
    interpreted as a "" or a 0, but maybe it was a mistake.  To suppress
this warning assign an initial value to your variables.
    


Unauthorized use, disclosure, or distribution of information within
this message is prohibited.

On Wed, 4 Apr 2001, Joshua Chamas wrote:

> Carl Lipo wrote:
> > 
> > I've just started having problems with asp state files for Apache::ASP
> > 2.09 becoming corrupted during use. My application will work just fine but
> > at somepoint the session asp state files get corrupted and only deleting
> > them allows the application to continue working. Oddly, this occurs on two
> > different servers so the problem does not appear to be machine specific.
> > 
> > The symptom of the problem is that application errors are returned
> > from the asp code execution that look something like this:
> > 
> > Uncaught exception from user code:
> >         Can't locate object method 'Quer' via package
> > &quot;Apache::ASP::Request'; at (eval 263) <a href=#167>l
> > ine 167</a>. INAP::NEIS::_usr_local_applprod_infosource_apps_netcfg_viewNodes_htmxINL() called
> > at /usr/local/lib/site_perl/Apache/
> > ASP.pm line 1504
> > 
> 
> Generally problems of this nature, where even perl data seems
> to be corrupted, seem to be from buffer overrun type issues
> that normally result in segfaults.  Looking at your config, 
> I would suspect the culprit to be use of DB_File on your
> StateDir, where /usr/local/etc/infosource/apps/netcfg/state-dir
> may be mounted over NFS.  NFS typically does not support the 
> flock() style locking that Apache::ASP uses to protect DB_File 
> from corruption.  
> 
> If you are & must use NFS, don't use DB_File, use the default 
> SDBM_File, which does not corrupt as easily.  If you need to 
> get past the 1000 byte limit, then you might use 
> MLDBM::Sync::SDBM_File which I developed just for this purpose.
> I need to add config support for this still to Apache::ASP though.
> If you can switch to a CIFS/or samba mounted file system, do 
> this, as this supports flock() semantics.
> 
> If StateDir is mounted locally, then possibly there is a bug in 
> Apache::ASP StateDB locking, but this is less likely the case
> and we might look at other types of buffer overrun issues that
> might corrupt perl data structures.  If your modperl httpd is compiled
> DSO, compile it static, as I have seen no end of odd errors with
> the DSO config from time to time.  
> 
> Also, DBD::Oracle and long values with CLOBs/BLOBs can create 
> another type of buffer overrun, which is supposedly on OCI bug, 
> though you didn't mention use of Oracle this is an odd bug that 
> stung me recently.
> 
> If you give up on trying to find this bug, which seems to be 
> related to StateDB corruption, you may create $Application & 
> $Session objects with Apache::Session in the global.asa Script_OnStart, 
> which would at least eliminate the StateDB issue.
> 
> -- Josh
> 
> _________________________________________________________________
> Joshua Chamas			        Chamas Enterprises Inc.
> NodeWorks >> free web link monitoring	Huntington Beach, CA  USA 
> http://www.nodeworks.com                1-714-625-4051
> 
> 




Re: Apache::ASP -- Corruption of statedir files/truncation of methodnames

Posted by Joshua Chamas <jo...@chamas.com>.
Carl Lipo wrote:
> 
> I've just started having problems with asp state files for Apache::ASP
> 2.09 becoming corrupted during use. My application will work just fine but
> at somepoint the session asp state files get corrupted and only deleting
> them allows the application to continue working. Oddly, this occurs on two
> different servers so the problem does not appear to be machine specific.
> 
> The symptom of the problem is that application errors are returned
> from the asp code execution that look something like this:
> 
> Uncaught exception from user code:
>         Can't locate object method 'Quer' via package
> &quot;Apache::ASP::Request'; at (eval 263) <a href=#167>l
> ine 167</a>. INAP::NEIS::_usr_local_applprod_infosource_apps_netcfg_viewNodes_htmxINL() called
> at /usr/local/lib/site_perl/Apache/
> ASP.pm line 1504
> 

Generally problems of this nature, where even perl data seems
to be corrupted, seem to be from buffer overrun type issues
that normally result in segfaults.  Looking at your config, 
I would suspect the culprit to be use of DB_File on your
StateDir, where /usr/local/etc/infosource/apps/netcfg/state-dir
may be mounted over NFS.  NFS typically does not support the 
flock() style locking that Apache::ASP uses to protect DB_File 
from corruption.  

If you are & must use NFS, don't use DB_File, use the default 
SDBM_File, which does not corrupt as easily.  If you need to 
get past the 1000 byte limit, then you might use 
MLDBM::Sync::SDBM_File which I developed just for this purpose.
I need to add config support for this still to Apache::ASP though.
If you can switch to a CIFS/or samba mounted file system, do 
this, as this supports flock() semantics.

If StateDir is mounted locally, then possibly there is a bug in 
Apache::ASP StateDB locking, but this is less likely the case
and we might look at other types of buffer overrun issues that
might corrupt perl data structures.  If your modperl httpd is compiled
DSO, compile it static, as I have seen no end of odd errors with
the DSO config from time to time.  

Also, DBD::Oracle and long values with CLOBs/BLOBs can create 
another type of buffer overrun, which is supposedly on OCI bug, 
though you didn't mention use of Oracle this is an odd bug that 
stung me recently.

If you give up on trying to find this bug, which seems to be 
related to StateDB corruption, you may create $Application & 
$Session objects with Apache::Session in the global.asa Script_OnStart, 
which would at least eliminate the StateDB issue.

-- Josh

_________________________________________________________________
Joshua Chamas			        Chamas Enterprises Inc.
NodeWorks >> free web link monitoring	Huntington Beach, CA  USA 
http://www.nodeworks.com                1-714-625-4051

Re: Apache::ASP -- Corruption of statedir files/truncation of method names

Posted by Carl Lipo <ca...@internap.com>.
In addition:  here are the httpd.conf configurations for this application:

        <FilesMatch "\.(htm|asp)$">
            PerlSetVar Global /usr/local/etc/infosource/apps/netcfg/
            # PerlSetVar Global .
            PerlSetVar GlobalPackage INAP::NEIS
            PerlSetVar StateDir /usr/local/etc/infosource/apps/netcfg/state-dir
            PerlSetVar CookiePath  /apps/netcfg
            SetHandler perl-script
            PerlHandler Apache::ASP Apache::SSI
            PerlSetVar SessionTimeout 90
            #0 production, 2 or 1 for dev
            PerlSetVar Debug 0
            PerlSetVar StatINCMatch PNAP|NCM
            # PerlSetVar StatINC 1
            #0 production, text compression
            # PerlSetVar DynamicIncludes 0
            PerlSetVar Clean 0
            PerlSetVar StateDB DB_File
            PerlSetVar AllowSessionState 1
            PerlSetVar DebugBufferLength 500
            PerlSetVar StateCache 0
            # PerlSetVar UseStrict 1
            PerlSetVar TimeHiRes 1
        </FilesMatch>


On Wed, 4 Apr 2001, Carl Lipo wrote:

> 
> I've just started having problems with asp state files for Apache::ASP
> 2.09 becoming corrupted during use. My application will work just fine but
> at somepoint the session asp state files get corrupted and only deleting
> them allows the application to continue working. Oddly, this occurs on two
> different servers so the problem does not appear to be machine specific. 
> 
> The symptom of the problem is that application errors are returned
> from the asp code execution that look something like this:
> 
> Uncaught exception from user code:
>         Can't locate object method 'Quer' via package
> &quot;Apache::ASP::Request'; at (eval 263) <a href=#167>l
> ine 167</a>. INAP::NEIS::_usr_local_applprod_infosource_apps_netcfg_viewNodes_htmxINL() called
> at /usr/local/lib/site_perl/Apache/
> ASP.pm line 1504
> 
> or
> 
> $Response::Appe not defined at /usr/local/lib/site_perl/Apache/ASP.pm <a
> href=#3132>line 3132</a>
> 
> Where the object method that cant be located is truncated from the actual
> ASP method (i.e., Query will be truncated to be Quer or $Response::Append
> to log will be tructed at Response::Appe). What appears to be happnening
> is that the namespace is corrupted somehow and the Apache::ASP/mod_perl is
> not mapping the names of methods correctly. 
> 
> When we delete the state files, the problem goes away (and then returns at
> some point in the future). Has anyone encountered this problem? Is there a
> bug in the 2.09 code?
> 
> This is our environment:
> Linux,  Apache 1.3.19, mod_perl 1.25
> Apache::ASP 2.09
> 
> ----------------------------------------------------------------------------
> Here is the actual error output:
> 
> <table>
> <tr><td valign=top><font size=-1><b> Global: </b><td valign=top><font size=-1> /usr/local/etc/infosource/apps/netcfg/
> <tr><td valign=top><font size=-1><b>   File: </b><td valign=top><font size=-1> /usr/local/applprod/infosource/apps/netcfg/viewNodes.htm
> <tr><td valign=top><font size=-1><b>     IP: </b><td valign=top><font size=-1> 64.94.117.16
> <tr><td valign=top><font size=-1><b> HTTP_*: </b><td valign=top><font size=-1> HTTP_ACCEPT= image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*<br>
>   HTTP_ACCEPT_CHARSET= iso-8859-1,*,utf-8<br>
>   HTTP_ACCEPT_ENCODING= gzip<br>
>   HTTP_ACCEPT_LANGUAGE= en<br>
>   HTTP_CONNECTION= Keep-Alive<br>
>   HTTP_COOKIE= session-id=0eef76d5377c6e62def6333423014869<br>
>   HTTP_HOST= applprod4.sea.internap.com<br>
>   HTTP_REFERER= https://applprod4.sea.internap.com/apps/netcfg/searchNode.htm<br>
>   HTTP_USER_AGENT= Mozilla/4.75 [en] (X11; U; Linux 2.2.16 i686)
> <tr><td valign=top><font size=-1><b>  Query: </b><td valign=top><font size=-1> 
> <tr><td valign=top><font size=-1><b>   Form: </b><td valign=top><font size=-1> search=   Search  <br>
>   searchLocation= <br>
>   searchNodeName= <br>
>   searchNodeStatus= <br>
>   searchNodeType= <br>
>   searchRack= <br>
>   searchSiteCode= sea<br>
>   sessionActive= Active
> </table>
> 
> <tt>
> <b><u>Errors Output</u></b>
> <ol>
> 
> <li> Uncaught exception from user code:
> 	Can't locate object method &quot;Quer&quot; via package &quot;Apache::ASP::Request&quot; at (eval 263) <a href=#167>line 167</a>.
> 	INAP::NEIS::_usr_local_applprod_infosource_apps_netcfg_viewNodes_htmxINL() called at /usr/local/lib/site_perl/Apache/ASP.pm line 1504
> 	eval {...} called at /usr/local/lib/site_perl/Apache/ASP.pm line 1504
> 	Apache::ASP::Execute('Apache::ASP=HASH(0x8d7d930)') called at /usr/local/lib/site_perl/Apache/ASP.pm line 174
> 	Apache::ASP::handler('Apache=SCALAR(0x8d2b978)') called at /dev/null line 0
> 	eval {...} called at /dev/null line 0
> , /usr/local/lib/site_perl/Apache/ASP.pm line 1506
> </ol>
> 
> <b><u>Debug Output</u></b>
> <ol>
> 
> <li> Uncaught exception from user code:
> 	Can't locate object method &quot;Quer&quot; via package &quot;Apache::ASP::Request&quot; at (eval 263) line 167.
> 	INAP::NEIS::_usr_local_applprod_infosource_apps_netcfg_viewNodes_htmxINL() called at /usr/local/lib/site_perl/Apache/ASP.pm line 1504
> 	eval {...} called at /usr/local/lib/site_perl/Apache/ASP.pm line 1504
> 	Apache::ASP::Execute('Apache::ASP=HASH(0x8d7d930)') called at /usr/local/lib/site_perl/Apache/ASP.pm line 174
> 	Apache::ASP::handler('Apache=SCALAR(0x8d2b978)') called at /dev/null line 0
> 	eval {...} called at /dev/null line 0
> , /usr/local/lib/site_perl/Apache/ASP.pm line 1506
> </ol>
> </tt>
> <pre>
> 
> <b><u>ASP to Perl Script</u></b><a name=1>&nbsp;</a>
> 
> <a name=2>  1</a>: package INAP::NEIS; ;; sub INAP::NEIS::_usr_local_applprod_infosource_apps_netcfg_viewNodes_htmxINL {  ;;  @_ = (); ;; no strict;;use vars qw($Application $Session $Response $Server $Request);;use lib qw(/usr/local/etc/infosource/apps/netcfg/);;;
> <a name=3>  2</a>: 
> <a name=4>  3</a>: $Response-&gt;AppendToLog(&quot;[NEIS] - init.htm:&quot;);
> <a name=5>  4</a>: 
> <a name=6>  5</a>: 
> <a name=7>  6</a>: ###################################################
> <a name=8>  7</a>: #
> <a name=9>  8</a>: #	init.htm
> <a name=10>  9</a>: #
> <a name=11> 10</a>: #	Dexter and Wayland
> <a name=12> 11</a>: #
> <a name=13> 12</a>: #	October 2000
> <a name=14> 13</a>: #
> <a name=15> 14</a>: #	10/12/00  Wayland Wasserman
> <a name=16> 15</a>: #	Common header file for entire NCM app
> <a name=17> 16</a>: #	Contains database info and other global data
> <a name=18> 17</a>: #
> <a name=19> 18</a>: #
> <a name=20> 19</a>: ####################################################
> <a name=21> 20</a>: 
> <a name=22> 21</a>: use DBI;                                    # Used for database calls.
> <a name=23> 22</a>: use PNAP::NETCFG::DBconn qw(dbconnect);     # Used for database calls.
> <a name=24> 23</a>: use PNAP::Conf;
> <a name=25> 24</a>: use PNAP::Database::Query;
> <a name=26> 25</a>: use NCM::Nodes;
> <a name=27> 26</a>: use NCM::Common;
> <a name=28> 27</a>: use XML::Config;
> <a name=29> 28</a>: use strict;
> <a name=30> 29</a>: 
> <a name=31> 30</a>: # This part is in the Apache configuration file, httpd.conf.
> <a name=32> 31</a>: # BEGIN
> <a name=33> 32</a>: # {
> <a name=34> 33</a>: # 	$ENV{'ORACLE_HOME'} = 'usr/local/oracle_client/v8_0_5';
> <a name=35> 34</a>: # }
> <a name=36> 35</a>: 
> <a name=37> 36</a>: $Response-&gt;AppendToLog(&quot;[NEIS] - init.htm: test 1&quot;);
> <a name=38> 37</a>: 
> <a name=39> 38</a>: ### Read the conf file  ###
> <a name=40> 39</a>: # my $g_conffile = &quot;/usr/local/etc/netcfg/neis.conf&quot;; # Not used anywhere else.
> <a name=41> 40</a>: my $g_debug = 0;
> <a name=42> 41</a>: # my $conf = new XML::Config; # Not used anywhere else without first being re-initialized.
> <a name=43> 42</a>: 
> <a name=44> 43</a>: $Response-&gt;AppendToLog(&quot;[NEIS] - init.htm: $Application-&gt;{'DBService'}&quot;);
> <a name=45> 44</a>: 
> <a name=46> 45</a>: my $DEBUG = $Application-&gt;{'Debug'};
> <a name=47> 46</a>: 
> <a name=48> 47</a>: $DEBUG &amp;&amp; $Response-&gt;AppendToLog(&quot;[NEIS] - init.htm: DEBUG level is $DEBUG&quot;);
> <a name=49> 48</a>: 
> <a name=50> 49</a>: my $g_dbsection = $Application-&gt;{'DBService'};
> <a name=51> 50</a>: 
> <a name=52> 51</a>: $DEBUG &amp;&amp; $Response-&gt;AppendToLog(&quot;[NEIS] - init.htm: $Application-&gt;{'Application'} $Application-&gt;{'CVS_Version'} - $g_dbsection&quot;);
> <a name=53> 52</a>: 
> <a name=54> 53</a>: ### Misc Global Variables ###
> <a name=55> 54</a>: my $g_nodeName;
> <a name=56> 55</a>: my $g_nodeOID;
> <a name=57> 56</a>: my $g_retPage;
> <a name=58> 57</a>: my $g_prevPage;
> <a name=59> 58</a>: my $g_searchCriteria;
> <a name=60> 59</a>: 
> <a name=61> 60</a>: ### Database connection (Database::Query) ###
> <a name=62> 61</a>: my $g_dbconn = new PNAP::Database::Query(Connection=&gt;$g_dbsection, Debug=&gt;$g_debug);
> <a name=63> 62</a>: 
> <a name=64> 63</a>: ### Database connection (straight DBI) ###
> <a name=65> 64</a>: ### Dev Note: this is a test to see how well this works
> <a name=66> 65</a>: # my $dbconf = $Application-&gt;{'DBConf'};
> <a name=67> 66</a>: # $DEBUG &amp;&amp; $Response-&gt;AppendToLog(&quot;[NEIS] - init.htm: dbconf is $dbconf&quot;);
> <a name=68> 67</a>: 
> <a name=69> 68</a>: # my $dbconfobj = new PNAP::Conf($dbconf, $g_debug);
> <a name=70> 69</a>: # my $service = $dbconfobj-&gt;getServInfo($Application-&gt;{'DBService'});
> <a name=71> 70</a>: 
> <a name=72> 71</a>: # $Application-&gt;{'DBSID'}      = $service-&gt;{'SID'};
> <a name=73> 72</a>: # $Application-&gt;{'DBDriver'}   = $service-&gt;{'Driver'};
> <a name=74> 73</a>: # $Application-&gt;{'DBServer'}   = $service-&gt;{'Server'};
> <a name=75> 74</a>: # $Application-&gt;{'DBUsername'} = $service-&gt;{'Username'};
> <a name=76> 75</a>: # $Application-&gt;{'DBPassword'} = $service-&gt;{'Password'};
> <a name=77> 76</a>: # $Application-&gt;{'DBTnsname'}  = $service-&gt;{'Tnsname'};
> <a name=78> 77</a>: 
> <a name=79> 78</a>: # my $driver    = $Application-&gt;{'DBDriver'};
> <a name=80> 79</a>: # my $server    = $Application-&gt;{'DBServer'};
> <a name=81> 80</a>: # my $sid       = $Application-&gt;{'DBSID'};
> <a name=82> 81</a>: # my $user      = $Application-&gt;{'DBUsername'};
> <a name=83> 82</a>: # my $pw        = $Application-&gt;{'DBPassword'};
> <a name=84> 83</a>: # my $connstr   = &quot;dbi:$driver:host=$server;sid=$sid&quot;;
> <a name=85> 84</a>: # my $g_dbiconn = DBI-&gt;connect($connstr, $user, $pw);
> <a name=86> 85</a>: my $g_dbiconn = dbconnect();
> <a name=87> 86</a>: 
> <a name=88> 87</a>: # This is where we check for form submission for the header.inc
> <a name=89> 88</a>: # check for ChangeRole
> <a name=90> 89</a>: $Session-&gt;{'Role'} = $Request-&gt;Form('role') if ($Request-&gt;Form('control') eq &quot;ChangeRole&quot;);
> <a name=91> 90</a>: 
> <a name=92> 91</a>: my $err    = $g_dbiconn-&gt;err() || &quot;&quot;;
> <a name=93> 92</a>: my $errstr = $g_dbiconn-&gt;errstr() || &quot;&quot;;
> <a name=94> 93</a>: if ($err || $errstr) {
> <a name=95> 94</a>: 	$Response-&gt;AppendToLog(&quot;[NEIS] - init.htm: DATABASE ERROR -- ($err) $errstr&quot;);
> <a name=96> 95</a>: }
> <a name=97> 96</a>: 
> <a name=98> 97</a>: ; $main::Response-&gt;WriteRef(\('
> <a name=99> 98</a>: 
> <a name=100> 99</a>: '));
> <a name=101>100</a>: ############################################################################
> <a name=102>101</a>: #
> <a name=103>102</a>: # viewNodes.htm
> <a name=104>103</a>: #
> <a name=105>104</a>: # Purpose: displays information about nodes matching the given search criteria
> <a name=106>105</a>: #
> <a name=107>106</a>: # Input:
> <a name=108>107</a>: #	search criteria, read from the Form or $Session variable
> <a name=109>108</a>: # 	column name by which results should be sorted, passed along the URL
> <a name=110>109</a>: #
> <a name=111>110</a>: # Created by:	Catherine Higuchi, Dexter Lieu
> <a name=112>111</a>: # Last Update: 09/29/2000
> <a name=113>112</a>: #
> <a name=114>113</a>: ############################################################################
> <a name=115>114</a>: 
> <a name=116>115</a>: ### Variable definition ###
> <a name=117>116</a>: my $asppage = $INAP::NEIS::asppage;
> <a name=118>117</a>: my $pagetitle = &quot;View Nodes&quot;;
> <a name=119>118</a>: 
> <a name=120>119</a>: ###########################
> <a name=121>120</a>: #
> <a name=122>121</a>: #	Code to check users permission to edit
> <a name=123>122</a>: #		current area
> <a name=124>123</a>: #
> <a name=125>124</a>: 
> <a name=126>125</a>: my $pageTopic = 'NODE';
> <a name=127>126</a>: my $userRole = $Session-&gt;{'Role'};
> <a name=128>127</a>: my $allowEdit = NCM::Nodes::checkUserRole($userRole, $pageTopic);
> <a name=129>128</a>: my $editcols = 2;
> <a name=130>129</a>: $editcols = 3 if $allowEdit;
> <a name=131>130</a>: $Session-&gt;{&quot;nodeSearchError&quot;} = '';
> <a name=132>131</a>: 
> <a name=133>132</a>: 
> <a name=134>133</a>: ### testing of pagehash...
> <a name=135>134</a>: 
> <a name=136>135</a>: ##	for ( keys %g_PageHash)
> <a name=137>136</a>: ##	{
> <a name=138>137</a>: ##		$DEBUG &amp;&amp; $Response-&gt;AppendToLog(&quot;[NEIS] - viewNodes.htm - $g_PageHash-&gt;{$_}&quot;);
> <a name=139>138</a>: ##	}
> <a name=140>139</a>: 
> <a name=141>140</a>: 
> <a name=142>141</a>: 
> <a name=143>142</a>: 
> <a name=144>143</a>: ### read the values from the previous form	###
> <a name=145>144</a>: ### and save to the session vars			###
> <a name=146>145</a>: my $form=$Request-&gt;Form();
> <a name=147>146</a>: my $nm;
> <a name=148>147</a>: for ( keys %{$form}) {
> <a name=149>148</a>: 	$nm = $_;
> <a name=150>149</a>: 	$Session-&gt;{$nm}= $form-&gt;{$nm};
> <a name=151>150</a>: 	$DEBUG &amp;&amp; $Response-&gt;AppendToLog(&quot;[NEIS] - viewNodes.htm - $nm: $form-&gt;{$nm}&quot;);
> <a name=152>151</a>: }
> <a name=153>152</a>: 
> <a name=154>153</a>: 
> <a name=155>154</a>: if ($Request-&gt;QueryString('assetTag')) {
> <a name=156>155</a>: 	$Session-&gt;{&quot;searchNodeOID&quot;} = NCM::Nodes::getNodeFromAsset($g_dbconn, $Request-&gt;QueryString('assetTag'));
> <a name=157>156</a>: 	if ( !($Session-&gt;{&quot;searchNodeOID&quot;}) )
> <a name=158>157</a>: 	{
> <a name=159>158</a>: 		$Session-&gt;{'ERROR'} = 'Invalid Asset Tag';
> <a name=160>159</a>: 
> <a name=161>160</a>: 		$Response-&gt;Redirect(&quot;index.htm&quot;);
> <a name=162>161</a>: 	}
> <a name=163>162</a>: 
> <a name=164>163</a>: }
> <a name=165>164</a>: 
> <a name=166>165</a>: 
> <a name=167>166</a>: ### get the criteria from the session vars	###
> <a name=168><b><font color=red>167</font></b></a>: my $searchNodeOID = $Session-&gt;{&quot;searchNodeOID&quot;} || $Request-&gt;QueryString('OID') || &quot;&quot;;
> <a name=169>168</a>: 	my $searchNodeName = $Session-&gt;{&quot;searchNodeName&quot;} || &quot;&quot;;
> <a name=170>169</a>: 	my $searchNodeType = $Session-&gt;{&quot;searchNodeType&quot;} || &quot;&quot;;
> <a name=171>170</a>: 	my $searchNodeStatus = $Session-&gt;{&quot;searchNodeStatus&quot;} || &quot;&quot;;
> <a name=172>171</a>: 	my $searchSiteCode = $Session-&gt;{&quot;searchSiteCode&quot;} || &quot;&quot;;
> <a name=173>172</a>: 	my $searchLocation = $Session-&gt;{&quot;searchLocation&quot;} || &quot;&quot;;
> <a name=174>173</a>: 	my $searchRack = $Session-&gt;{&quot;searchRack&quot;} || &quot;&quot;;
> <a name=175>174</a>: 
> <a name=176>175</a>: ### whack the other fields if searching by nodeoid
> <a name=177>176</a>: if ($searchNodeOID)
> <a name=178>177</a>: {
> <a name=179>178</a>: 	$searchNodeName = '';
> <a name=180>179</a>: 	$searchNodeType = '';
> <a name=181>180</a>: 	$searchNodeStatus = '';
> <a name=182>181</a>: 	$searchSiteCode = '';
> <a name=183>182</a>: 	$searchLocation = '';
> <a name=184>183</a>: 	$searchRack = '';
> <a name=185>184</a>: }
> <a name=186>185</a>: my @altNodeOIDs;
> <a name=187>186</a>: 
> <a name=188>187</a>: 
> <a name=189>188</a>: $searchNodeName =~ s/'/_/g;
> <a name=190>189</a>: $searchLocation =~ s/'/_/g;
> <a name=191>190</a>: $searchRack =~ s/'/_/g;
> <a name=192>191</a>: 
> <a name=193>192</a>: $searchNodeName =~ s/&quot;/_/g;
> <a name=194>193</a>: $searchLocation =~ s/&quot;/_/g;
> <a name=195>194</a>: $searchRack =~ s/&quot;/_/g;
> <a name=196>195</a>: 
> <a name=197>196</a>: 
> <a name=198>197</a>: if ($Session-&gt;{&quot;altNodeSearch&quot;})
> <a name=199>198</a>: {
> <a name=200>199</a>: 	@altNodeOIDs = @{$Session-&gt;{&quot;altNodeSearch&quot;}};
> <a name=201>200</a>: }
> <a name=202>201</a>: 
> <a name=203>202</a>: 
> <a name=204>203</a>: ### if no criteria bounce them back to search page
> <a name=205>204</a>: if ( (! ($searchNodeOID) ) &amp;&amp; (! ($searchNodeName) ) &amp;&amp; (! ($searchNodeType) ) &amp;&amp; (! ($searchNodeStatus) ) &amp;&amp; (! ($searchSiteCode) ) &amp;&amp; (! ($searchLocation) ) &amp;&amp; (! ($searchRack) ) )  {
> <a name=206>205</a>: 
> <a name=207>206</a>: 	$Session-&gt;{&quot;nodeSearchError&quot;} = 'Search requires at least one field be filled in';
> <a name=208>207</a>: 
> <a name=209>208</a>: 	$Response-&gt;Redirect(&quot;searchNode.htm&quot;);
> <a name=210>209</a>: 
> <a name=211>210</a>: 
> <a name=212>211</a>: }
> <a name=213>212</a>: 
> <a name=214>213</a>: 
> <a name=215>214</a>: 
> <a name=216>215</a>: 
> <a name=217>216</a>: 
> <a name=218>217</a>: 
> <a name=219>218</a>: 
> <a name=220>219</a>: 
> <a name=221>220</a>: 
> <a name=222>221</a>: 
> <a name=223>222</a>: 
> <a name=224>223</a>: 
> <a name=225>224</a>: ### Get the order by column ###
> <a name=226>225</a>: my $ordercolumn = $Request-&gt;QueryString('ordercolumn') || &quot;NODENAME, NODETYPE, STATUS, SITECODE&quot;;
> <a name=227>226</a>: 
> <a name=228>227</a>: ### lists of returned data ###
> <a name=229>228</a>: my (@nodeOIDList, @nodeNameList, @nodeTypeList, @nodeTypeCodeList, @statusList, @statusCodeList, @siteCodeList, @locationList, @rackList, @commentList, @updateNbrList);
> <a name=230>229</a>: my $nodecount = NCM::Nodes::getNodes($g_dbconn, $searchNodeOID, $searchNodeName, $searchNodeType, $searchNodeStatus,
> <a name=231>230</a>: 	$searchSiteCode, $searchLocation, $searchRack, \@altNodeOIDs, $ordercolumn, \@nodeOIDList,
> <a name=232>231</a>: 	\@nodeNameList, \@nodeTypeList, \@nodeTypeCodeList, \@statusList, \@statusCodeList,
> <a name=233>232</a>: 	\@siteCodeList, \@locationList, \@rackList, \@commentList, \@updateNbrList);
> <a name=234>233</a>: 
> <a name=235>234</a>: ######################### HTML START #########################
> <a name=236>235</a>: 
> <a name=237>236</a>: ; $main::Response-&gt;WriteRef(\('
> <a name=238>237</a>: &lt;html&gt;
> <a name=239>238</a>: &lt;head&gt;
> <a name=240>239</a>: 	'));
> <a name=241>240</a>:   ######################################################################
> <a name=242>241</a>:   # head.inc
> <a name=243>242</a>:   #
> <a name=244>243</a>:   # use: include in the &lt;head&gt; block on every page and add onload=&quot;init()&quot;
> <a name=245>244</a>:   #   to the &lt;body&gt; tag on every page
> <a name=246>245</a>:   #
> <a name=247>246</a>:   # purpose: defines the meta tags and stylesheets for the page,
> <a name=248>247</a>:   #     sets the timeout redirect, sets the page title
> <a name=249>248</a>:   #     and creates the menus to be used in the nav bar
> <a name=250>249</a>:   #
> <a name=251>250</a>:   # prerequisites: the value of $pagetitle describing the specific page
> <a name=252>251</a>:   #     is set in each page where this include is used
> <a name=253>252</a>:   #
> <a name=254>253</a>:   # Created By: Will Stevenson, Dexter Lieu
> <a name=255>254</a>:   # Last Update: 09/29/2000
> <a name=256>255</a>:   #
> <a name=257>256</a>:   ######################################################################
> <a name=258>257</a>: 
> <a name=259>258</a>:   use vars qw($pagetitle);
> <a name=260>259</a>: 
> <a name=261>260</a>: # Put go.script include file here rather than in each htm file.
> <a name=262>261</a>: if ($asppage =~ /^(searchCircuit|searchBandwidth|searchService|viewCircuitService|editservice|addSecondary)/) {
> <a name=263>262</a>:   ; $main::Response-&gt;WriteRef(\(' &lt;script language=&quot;JavaScript&quot;&gt;
> <a name=264>263</a>: &lt;!--
> <a name=265>264</a>: if(document.layers){origWidth=innerWidth;origHeight=innerHeight;onresize=function(){if(innerWidth!=origWidth||innerHeight!=origHeight)location.reload()}}
> <a name=266>265</a>: function MM_showHideLayers() { //v2.0
> <a name=267>266</a>:   var i, visStr, args, theObj;
> <a name=268>267</a>:   args = MM_showHideLayers.arguments;
> <a name=269>268</a>:   for (i=0; i&lt;(args.length-2); i+=3) { //with arg triples (objNS,objIE,visStr)
> <a name=270>269</a>:     visStr   = args[i+2];
> <a name=271>270</a>:     if (navigator.appName == \'Netscape\' &amp;&amp; document.layers != null) {
> <a name=272>271</a>:       theObj = eval(args[i]);
> <a name=273>272</a>:       if (theObj) theObj.visibility = visStr;
> <a name=274>273</a>:     } else if (document.all != null) { //IE
> <a name=275>274</a>:       if (visStr == \'show\') visStr = \'visible\'; //convert vals
> <a name=276>275</a>:       if (visStr == \'hide\') visStr = \'hidden\';
> <a name=277>276</a>:       theObj = eval(args[i+1]);
> <a name=278>277</a>:       if (theObj) theObj.style.visibility = visStr;
> <a name=279>278</a>:   } }
> <a name=280>279</a>: }
> <a name=281>280</a>: 
> <a name=282>281</a>: function PopSearch(){
> <a name=283>282</a>:         var QUERY=prompt(&quot;Enter Search Term&quot;, &quot;&quot;);
> <a name=284>283</a>:         if (QUERY) {
> <a name=285>284</a>:                 document.location.href=&quot;/cgi-bin/nph-seek.cgi/query.html?qt=&quot;+QUERY;
> <a name=286>285</a>:         }
> <a name=287>286</a>: }
> <a name=288>287</a>: //--&gt;
> <a name=289>288</a>: &lt;/script&gt;
> <a name=290>289</a>:  '));
> <a name=291>290</a>: }
> <a name=292>291</a>: 
> <a name=293>292</a>: 
> <a name=294>293</a>: ; $main::Response-&gt;WriteRef(\('
> <a name=295>294</a>: 
> <a name=296>295</a>: 
> <a name=297>296</a>: &lt;meta http-equiv=&quot;Pragma&quot;  content=&quot;No-cache&quot;&gt;
> <a name=298>297</a>: &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt;
> <a name=299>298</a>: &lt;meta http-equiv=&quot;refresh&quot; content=&quot;'.(($Session-&gt;{'Timeout'}*60) ).';URL=logout.htm&quot;&gt;
> <a name=300>299</a>: 
> <a name=301>300</a>: &lt;noscript&gt;
> <a name=302>301</a>: &lt;!-- in case the user is not using javascript we send them to infosource
> <a name=303>302</a>:   which has a nice red page that tells them how to enable it --&gt;
> <a name=304>303</a>: &lt;meta http-equiv=&quot;refresh&quot; content=&quot;0;URL=http://infosource.internap.com/&quot;&gt;
> <a name=305>304</a>: &lt;/noscript&gt;
> <a name=306>305</a>: 
> <a name=307>306</a>: &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;/track.css&quot;&gt;
> <a name=308>307</a>: &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;/sub.css&quot;&gt;
> <a name=309>308</a>: &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;netcfg.css&quot;&gt;
> <a name=310>309</a>: 
> <a name=311>310</a>: &lt;title&gt;')); $Response-&gt;Write(&quot;$Application-&gt;{'Application'} $Application-&gt;{'CVS_Version'}&quot;);; $main::Response-&gt;WriteRef(\(' | '.($pagetitle).'&lt;/title&gt;
> <a name=312>311</a>: 
> <a name=313>312</a>: &lt;script language=&quot;JavaScript1.2&quot; SRC=&quot;./inc/menu.js&quot;&gt;&lt;/script&gt;
> <a name=314>313</a>: &lt;script language=&quot;JavaScript1.2&quot; SRC=&quot;./inc/dhtmllib.js&quot;&gt;&lt;/script&gt;
> <a name=315>314</a>: 
> <a name=316>315</a>: &lt;script language=&quot;JavaScript1.2&quot;&gt;
> <a name=317>316</a>: 
> <a name=318>317</a>: '));
> <a name=319>318</a>: #check for errormsgs
> <a name=320>319</a>: if($Session-&gt;{ERRORMSG} ne ''){
> <a name=321>320</a>: ; $main::Response-&gt;WriteRef(\('
> <a name=322>321</a>:   top.errorWindow = window.open(\'error.htm\',\'errorWindow\',\'scrollbars=yes,titlebar=no,dependent=yes,width=400,height=400,screenX=200,screenY=200\');
> <a name=323>322</a>:   top.errorWindow.focus();
> <a name=324>323</a>: '));}; $main::Response-&gt;WriteRef(\('
> <a name=325>324</a>: 
> <a name=326>325</a>: //&lt;!--
> <a name=327>326</a>: var isNetscape=0;
> <a name=328>327</a>: var isIE=0;
> <a name=329>328</a>: 
> <a name=330>329</a>: //This is to fix netscape bug with style sheets;
> <a name=331>330</a>: //Reload the document if resized;
> <a name=332>331</a>: function onResize(){
> <a name=333>332</a>: 
> <a name=334>333</a>:   //Netscape has a bug and needs to be reloaded after resized if it
> <a name=335>334</a>:   //contains css or dhtml
> <a name=336>335</a>:   if(isNetscape){
> <a name=337>336</a>:     location.reload();
> <a name=338>337</a>:   }
> <a name=339>338</a>: }
> <a name=340>339</a>: 
> <a name=341>340</a>: 
> <a name=342>341</a>: //global menus
> <a name=343>342</a>: 
> <a name=344>343</a>: /***************************************************************
> <a name=345>344</a>:  * client side initialization of NEIS::Network Configuration
> <a name=346>345</a>:  */
> <a name=347>346</a>: function init(){
> <a name=348>347</a>: 
> <a name=349>348</a>:   //which browser?
> <a name=350>349</a>:   if(navigator.appName.indexOf(&quot;Internet Explorer&quot;) != -1){
> <a name=351>350</a>:     isIE=1;
> <a name=352>351</a>:   }
> <a name=353>352</a>:   if( navigator.appName.indexOf(&quot;Netscape&quot;) != -1){
> <a name=354>353</a>:     isNetscape=1;
> <a name=355>354</a>:   }
> <a name=356>355</a>:   if(!isNetscape &amp;&amp; !isIE){
> <a name=357>356</a>:     alert(navigator.appName + &quot; is an unsupported browser for NEIS::Network Configuration. \\n Use at your own risk.&quot;);
> <a name=358>357</a>:   }
> <a name=359>358</a>: 
> <a name=360>359</a>:   // if we are using netscape we can create menus right now
> <a name=361>360</a>:   // else we will create the menus in ./inc/header.inc for IE
> <a name=362>361</a>:   if(isNetscape){
> <a name=363>362</a>:     CreateMenus();
> <a name=364>363</a>:   }
> <a name=365>364</a>: 
> <a name=366>365</a>:   window.document.onkeyup=function(event){
> <a name=367>366</a>:     if( !isNetscape){
> <a name=368>367</a>:       event=window.event;
> <a name=369>368</a>:     }
> <a name=370>369</a>: 
> <a name=371>370</a>:     if (event){
> <a name=372>371</a>:       var charCode = (navigator.appName == &quot;Netscape&quot;) ? event.which : event.keyCode;
> <a name=373>372</a>:       var actualChar = String.fromCharCode(charCode);
> <a name=374>373</a>:     }
> <a name=375>374</a>:   } //end function(event)
> <a name=376>375</a>: } // end init()
> <a name=377>376</a>: 
> <a name=378>377</a>: 
> <a name=379>378</a>: /**********************************************************
> <a name=380>379</a>:  * Creates the menus for NEIS Net Config (NCM)
> <a name=381>380</a>:  */
> <a name=382>381</a>: 
> <a name=383>382</a>: var myMenu;
> <a name=384>383</a>: var mainMenu;
> <a name=385>384</a>: var roleMenu;
> <a name=386>385</a>: 
> <a name=387>386</a>: function CreateMenus(){
> <a name=388>387</a>:   // create main menu; items to be added via navmenu.htm
> <a name=389>388</a>:   mainMenu = new Menu(&quot;main&quot;);
> <a name=390>389</a>: 
> <a name=391>390</a>:   // get the menu options from navmenu.htm
> <a name=392>391</a>:   '));
> <a name=393>392</a>: 	#################################################################################
> <a name=394>393</a>: 	#
> <a name=395>394</a>: 	# navmenu.inc
> <a name=396>395</a>: 	#
> <a name=397>396</a>: 	# use: this file is included in head.inc; so, as long as head.inc is included
> <a name=398>397</a>: 	#		in the file, this file does not have to be explicitly included as well
> <a name=399>398</a>: 	#
> <a name=400>399</a>: 	# purpose: used to generate the options in the main menu, based on the current
> <a name=401>400</a>: 	#			page and context
> <a name=402>401</a>: 	#
> <a name=403>402</a>: 	# prerequisites: the boolean $allowEdit must be defined in each page (this
> <a name=404>403</a>: 	#			determines if the add links are displayed)
> <a name=405>404</a>: 	#
> <a name=406>405</a>: 	# comment: it may be better to not try to suppress the add links based on role,
> <a name=407>406</a>: 	#			and just let the role security in the add pages reject users without
> <a name=408>407</a>: 	#			the right access
> <a name=409>408</a>: 	#
> <a name=410>409</a>: 	# Created By:	Dexter Lieu
> <a name=411>410</a>: 	# Last Revision:	10/16/2000
> <a name=412>411</a>: 	#
> <a name=413>412</a>: 	#################################################################################
> <a name=414>413</a>: 
> <a name=415>414</a>: 	### define hash of context-sensitive help docs
> <a name=416>415</a>: 
> <a name=417>416</a>: 	### done just in case someone forgets to define this var
> <a name=418>417</a>: 	use vars qw($allowEdit);
> <a name=419>418</a>: 
> <a name=420>419</a>: 	my %helpdoc = (
> <a name=421>420</a>: 		&quot;index.htm&quot;					=&gt; &quot;ncm30.htm&quot;,
> <a name=422>421</a>: 		&quot;addLinkGroup.htm&quot;			=&gt; &quot;about_links_and_link_groups.htm&quot;,
> <a name=423>422</a>: 		&quot;addNode.htm&quot;				=&gt; &quot;about_nodes.htm&quot;,
> <a name=424>423</a>: 		&quot;editEndpoint.htm&quot;			=&gt; &quot;about_endpoints.htm&quot;,
> <a name=425>424</a>: 		&quot;editInstalledAsset.htm&quot;	=&gt; &quot;about_assets.htm&quot;,
> <a name=426>425</a>: 		&quot;editLinks.htm&quot;				=&gt; &quot;about_links_and_link_groups.htm&quot;,
> <a name=427>426</a>: 		&quot;editLinkGroup.htm&quot;			=&gt; &quot;about_links_and_link_groups.htm&quot;,
> <a name=428>427</a>: 		&quot;editNode.htm&quot;				=&gt; &quot;about_nodes.htm&quot;,
> <a name=429>428</a>: 		&quot;listBWServices.htm&quot;		=&gt; &quot;to_navigate_from_search_results.htm&quot;,
> <a name=430>429</a>: 		&quot;listCircuits.htm&quot;			=&gt; &quot;to_navigate_from_search_results.htm&quot;,
> <a name=431>430</a>: 		&quot;pickAsset.htm&quot;				=&gt; &quot;about_assets.htm&quot;,
> <a name=432>431</a>: 		&quot;pickEndpoint.htm&quot;			=&gt; &quot;about_endpoints.htm&quot;,
> <a name=433>432</a>: 		&quot;pickLocation.htm&quot;			=&gt; &quot;about_locations.htm&quot;,
> <a name=434>433</a>: 		&quot;pickNode.htm&quot;				=&gt; &quot;about_nodes.htm&quot;,
> <a name=435>434</a>: 		&quot;pickRack.htm&quot;				=&gt; &quot;about_racks.htm&quot;,
> <a name=436>435</a>: 		&quot;refineAsset.htm&quot;			=&gt; &quot;refining_a_search.htm&quot;,
> <a name=437>436</a>: 		&quot;refineEndpoint.htm&quot;		=&gt; &quot;refining_a_search.htm&quot;,
> <a name=438>437</a>: 		&quot;refineLocation.htm&quot;		=&gt; &quot;refining_a_search.htm&quot;,
> <a name=439>438</a>: 		&quot;refineNode.htm&quot;			=&gt; &quot;refining_a_search.htm&quot;,
> <a name=440>439</a>: 		&quot;refineRack.htm&quot;			=&gt; &quot;refining_a_search.htm&quot;,
> <a name=441>440</a>: 		&quot;searchBandwidthService.htm&quot;	 	    =&gt; &quot;about_bandwidth_services.htm&quot;,
> <a name=442>441</a>: 		&quot;searchCircuit.htm&quot;			=&gt; &quot;about_circuits_and_secondary_circuits.htm&quot;,
> <a name=443>442</a>: 		&quot;searchLinkGroup.htm&quot;		=&gt; &quot;searching_for_link_groups.htm&quot;,
> <a name=444>443</a>: 		&quot;searchNode.htm&quot;			=&gt; &quot;about_nodes.htm&quot;,
> <a name=445>444</a>: 		&quot;viewEndpoints.htm&quot;			=&gt; &quot;to_navigate_from_search_results.htm&quot;,
> <a name=446>445</a>: 		&quot;viewInstalledAssets.htm&quot;	=&gt; &quot;to_navigate_from_search_results.htm&quot;,
> <a name=447>446</a>: 		&quot;viewLinkGroups.htm&quot;		=&gt; &quot;to_navigate_from_search_results.htm&quot;,
> <a name=448>447</a>: 		&quot;viewNodes.htm&quot;				=&gt; &quot;to_navigate_from_search_results.htm&quot;
> <a name=449>448</a>: 	);
> <a name=450>449</a>: 
> <a name=451>450</a>: 
> <a name=452>451</a>: 
> <a name=453>452</a>: 
> <a name=454>453</a>: 
> <a name=455>454</a>: 
> <a name=456>455</a>: 
> <a name=457>456</a>: 	#################################################################################
> <a name=458>457</a>: 	# add menu options for the viewEndpoints.htm page
> <a name=459>458</a>: 	#################################################################################
> <a name=460>459</a>: 	if ($asppage =~ /viewEndpoints/)
> <a name=461>460</a>: 	{ ; $main::Response-&gt;WriteRef(\('
> <a name=462>461</a>: 		mainMenu.addMenuItem(&quot;Back to Nodes List&quot;, &quot;document.location.href=\'viewNodes.htm\'&quot;);
> <a name=463>462</a>: &lt;!--		mainMenu.addMenuItem(&quot;Search Nodes&quot;, &quot;document.location.href=\'searchNode.htm\'&quot;); --&gt;
> <a name=464>463</a>: 		mainMenu.addMenuSeparator();
> <a name=465>464</a>: 		')); if ($allowEdit)
> <a name=466>465</a>: 		{ ; $main::Response-&gt;WriteRef(\('
> <a name=467>466</a>: 			mainMenu.addMenuItem(&quot;Add Endpoints&quot;, &quot;document.location.href=\'editEndpoint.htm?nodeOID='.($g_nodeOID).'\'&quot;);
> <a name=468>467</a>: 			mainMenu.addMenuSeparator();
> <a name=469>468</a>: 		')); } ; $main::Response-&gt;WriteRef(\('
> <a name=470>469</a>: 	')); }
> <a name=471>470</a>: 
> <a name=472>471</a>: 
> <a name=473>472</a>: 	#################################################################################
> <a name=474>473</a>: 	# add menu options for the viewInstalledAssets.htm page
> <a name=475>474</a>: 	#################################################################################
> <a name=476>475</a>: 	if ($asppage =~ /viewInstalledAssets/)
> <a name=477>476</a>: 	{ ; $main::Response-&gt;WriteRef(\('
> <a name=478>477</a>: 		mainMenu.addMenuItem(&quot;Back to Nodes List&quot;, &quot;document.location.href=\'viewNodes.htm\'&quot;);
> <a name=479>478</a>: &lt;!--		mainMenu.addMenuItem(&quot;Search Nodes&quot;, &quot;document.location.href=\'searchNode.htm\'&quot;); --&gt;
> <a name=480>479</a>: 		mainMenu.addMenuSeparator();
> <a name=481>480</a>: 		')); if ($allowEdit)
> <a name=482>481</a>: 		{ ; $main::Response-&gt;WriteRef(\('
> <a name=483>482</a>: 			mainMenu.addMenuItem(&quot;Add Installed Asset&quot;, &quot;document.location.href=\'editInstalledAsset.htm?OID='.($g_nodeOID).'\'&quot;);
> <a name=484>483</a>: 			mainMenu.addMenuSeparator();
> <a name=485>484</a>: 		')); } ; $main::Response-&gt;WriteRef(\('
> <a name=486>485</a>: 	')); }
> <a name=487>486</a>: 
> <a name=488>487</a>: 
> <a name=489>488</a>: 	#################################################################################
> <a name=490>489</a>: 	# add common options to all menus except the denied page
> <a name=491>490</a>: 	#################################################################################
> <a name=492>491</a>: 	if ( $asppage !~ /(denied|logout)/ ) {
> <a name=493>492</a>: 
> <a name=494>493</a>: 
> <a name=495>494</a>: 	#################################################################################
> <a name=496>495</a>: 	# add menu options for adding a node
> <a name=497>496</a>: 	#################################################################################
> <a name=498>497</a>: 	if (NCM::Nodes::checkUserRole($Session-&gt;{'Role'}, 'NODE'))
> <a name=499>498</a>: 	{ ; $main::Response-&gt;WriteRef(\('
> <a name=500>499</a>: 		mainMenu.addMenuItem(&quot;Add a Node&quot;, &quot;document.location.href=\'addNode.htm?origPage='.($asppage).'\'&quot;);
> <a name=501>500</a>: 		mainMenu.addMenuSeparator();
> <a name=502>501</a>: 	')); }
> <a name=503>502</a>: 
> <a name=504>503</a>: 
> <a name=505>504</a>: 	#################################################################################
> <a name=506>505</a>: 	# add menu options for adding linkgroups
> <a name=507>506</a>: 	#################################################################################
> <a name=508>507</a>: 	if (NCM::Nodes::checkUserRole($Session-&gt;{'Role'}, 'LINK'))
> <a name=509>508</a>: 	{ ; $main::Response-&gt;WriteRef(\('
> <a name=510>509</a>: 		mainMenu.addMenuItem(&quot;Add a Link Group&quot;, &quot;document.location.href=\'editLinkGroup.htm?origPage='.($asppage).'\'&quot;);
> <a name=511>510</a>: 		mainMenu.addMenuItem(&quot;Add a PNAP&quot;, &quot;document.location.href=\'addPNAP.htm\'&quot;);
> <a name=512>511</a>: 		mainMenu.addMenuSeparator();
> <a name=513>512</a>: 	')); }
> <a name=514>513</a>: ; $main::Response-&gt;WriteRef(\('
> <a name=515>514</a>: 		mainMenu.addMenuItem(&quot;Go To Asset&quot;, &quot;javascript:GoToAsset();&quot;);
> <a name=516>515</a>: 		mainMenu.addMenuItem(&quot;Go To Link Group&quot;, &quot;javascript:GoToLG();&quot;);
> <a name=517>516</a>: 		mainMenu.addMenuItem(&quot;Go To Service&quot;, &quot;javascript:GoToSVC();&quot;);
> <a name=518>517</a>: 		mainMenu.addMenuSeparator();
> <a name=519>518</a>: 		mainMenu.addMenuItem(&quot;Search Bandwidth Services&quot;, &quot;document.location.href=\'searchBandwidthService.htm\'&quot;);
> <a name=520>519</a>: 		mainMenu.addMenuItem(&quot;Search Circuit Services&quot;, &quot;document.location.href=\'searchCircuit.htm\'&quot;);
> <a name=521>520</a>: 		mainMenu.addMenuItem(&quot;Search Link Groups and Links&quot;, &quot;document.location.href=\'searchLinkGroup.htm\'&quot;);
> <a name=522>521</a>: 		mainMenu.addMenuItem(&quot;Search Nodes and Endpoints&quot;, &quot;document.location.href=\'searchNode.htm\'&quot;);
> <a name=523>522</a>: 		mainMenu.addMenuItem(&quot;Search Services&quot;, &quot;document.location.href=\'searchService.htm\'&quot;);
> <a name=524>523</a>:     ')); if ($Session-&gt;{'Role'} =~ /^NCMADM$/) { ; $main::Response-&gt;WriteRef(\('
> <a name=525>524</a>:     mainMenu.addMenuSeparator();
> <a name=526>525</a>:     &lt;!-- mainMenu.addMenuItem(&quot;Administer Roles&quot;, &quot;document.location.href=\'roleAdmin.htm\'&quot;); --&gt;
> <a name=527>526</a>:     mainMenu.addMenuItem(&quot;Administer Roles&quot;, &quot;document.location.href=\''.($INAP::NEIS::Application-&gt;{'RolesLocation'}).'/index.htm?rct=NEIS&amp;logo=/apps/netcfg/images/netconfig.gif\'&quot;);
> <a name=528>527</a>:     ')); } ; $main::Response-&gt;WriteRef(\('
> <a name=529>528</a>: 		mainMenu.addMenuSeparator();
> <a name=530>529</a>: 		mainMenu.addMenuItem(&quot;NCM Home&quot;, &quot;document.location.href=\'index.htm\'&quot;);
> <a name=531>530</a>: 		mainMenu.addMenuSeparator();
> <a name=532>531</a>: 		mainMenu.addMenuItem(&quot;Help&quot;, &quot;open(\'https://infosource.internap.com/appdocs/ncm/WebHelp/index.htm\',\'helpwindow\',\'scrollbars\');&quot;);
> <a name=533>532</a>: 
> <a name=534>533</a>: ////    mainMenu.addMenuItem(&quot;Help&quot;, &quot;open(\'https://infosource.internap.com/apps/ncm/webhelp/'.($helpdoc{$asppage}).'\',\'helpwindow\',\'scrollbars\');&quot;);
> <a name=535>534</a>: 
> <a name=536>535</a>: 	')); } elsif ( $asppage =~ /(denied|logout)/ ) { ; $main::Response-&gt;WriteRef(\('
> <a name=537>536</a>: 		mainMenu.addMenuItem(&quot;NCM Home&quot;, &quot;document.location.href=\'index.htm\'&quot;);
> <a name=538>537</a>:   ')); }
> <a name=539>538</a>: ; $main::Response-&gt;WriteRef(\('
> <a name=540>539</a>: 
> <a name=541>540</a>: 
> <a name=542>541</a>:   setupMenu(mainMenu,\'grayblue\');
> <a name=543>542</a>: 
> <a name=544>543</a>:   //located in ./inc/header.inc
> <a name=545>544</a>:   createRoleMenu(&quot;'.($Session-&gt;{'Role'}).'&quot;);
> <a name=546>545</a>: 
> <a name=547>546</a>:   mainMenu.writeMenus();
> <a name=548>547</a>: }
> <a name=549>548</a>: 
> <a name=550>549</a>: function setupMenu( menu, type){
> <a name=551>550</a>:   menu.enableHideOnMouseOut=1;
> <a name=552>551</a>:   menu.menuBorder=0;
> <a name=553>552</a>:   menu.menuItemHeight=0;
> <a name=554>553</a>:   menu.menuItemBorder=0;
> <a name=555>554</a>:   menu.menuHiliteBgColor=&quot;#cccccc&quot;;
> <a name=556>555</a>:   menu.fontSize=12;
> <a name=557>556</a>: 
> <a name=558>557</a>:   if(type==\'white\'){
> <a name=559>558</a>:     menu.fontColor = &quot;blue&quot;;
> <a name=560>559</a>:     menu.bgColor = &quot;#dddddd&quot;;
> <a name=561>560</a>:     menu.menuItemBgColor = &quot;white&quot;;
> <a name=562>561</a>:     menu.menuHiliteBgColor = &quot;#a6b9e9&quot;;
> <a name=563>562</a>:   }
> <a name=564>563</a>: 
> <a name=565>564</a>:   if(type==\'grayblue\'){
> <a name=566>565</a>:     menu.fontColorHilite = &quot;#0000ff&quot;;
> <a name=567>566</a>:   }
> <a name=568>567</a>: }
> <a name=569>568</a>: 
> <a name=570>569</a>: 
> <a name=571>570</a>: // Note from Dex: I don\'t think we need these last three menus,
> <a name=572>571</a>: // but they may become useful so I\'m leaving them in for now
> <a name=573>572</a>: 
> <a name=574>573</a>: function ShowUserMenu( UserName){
> <a name=575>574</a>:   if(UserName != &quot;No data&quot;){
> <a name=576>575</a>:     userMenu = new Menu(UserName);
> <a name=577>576</a>:     userMenu.addMenuItem(&quot;Infosource Page&quot;, &quot;document.location.href=\'https://infosource.internap.com/corp/staff/info.htm?login=&quot;+UserName+&quot;\'&quot;);
> <a name=578>577</a>:     userMenu.addMenuSeparator();
> <a name=579>578</a>:     userMenu.addMenuItem(&quot;Email&quot;, &quot;document.location.href=\'mailto:&quot;+UserName+&quot;@internap.com\'&quot;);
> <a name=580>579</a>:     userMenu.addMenuItem(&quot;Page&quot;, &quot;document.location.href=\'https://infosource.internap.com/corp/staff/page.htm?login=&quot;+UserName+&quot;\'&quot;);
> <a name=581>580</a>:     setupMenu(userMenu,\'white\');
> <a name=582>581</a>:     userMenu.writeMenus();
> <a name=583>582</a>:     showMenu(userMenu);
> <a name=584>583</a>:   }
> <a name=585>584</a>: }
> <a name=586>585</a>: 
> <a name=587>586</a>: function NewContact(){
> <a name=588>587</a>:   top.contactWindow = window.open(\'newcontact.htm\',\'contactWindow\',\'titlebar=no,dependent=yes,width=300,height=200,screenX=100,screenY=100\');
> <a name=589>588</a>:   top.contactWindow.focus();
> <a name=590>589</a>: 
> <a name=591>590</a>:   document.FNewContact.target=\'contactWindow\';
> <a name=592>591</a>:   document.FNewContact.submit();
> <a name=593>592</a>: }
> <a name=594>593</a>: 
> <a name=595>594</a>: function GetUserInfo( UserName){
> <a name=596>595</a>:   document.location.href=&quot;https://infosource.internap.com/corp/staff/info.htm?login=&quot;+UserName;
> <a name=597>596</a>: }
> <a name=598>597</a>: 
> <a name=599>598</a>: //***************************************
> <a name=600>599</a>: //Navigates to the next service
> <a name=601>600</a>: //
> <a name=602>601</a>: //
> <a name=603>602</a>: function GoToSVC(){
> <a name=604>603</a>:   var SVCOID=prompt(&quot;Enter Service&quot;, &quot;'.($Session-&gt;{'LastsvcOID'}).'&quot;);
> <a name=605>604</a>:   if(SVCOID!=null){
> <a name=606>605</a>:     if(isNaN(SVCOID))
> <a name=607>606</a>:       alert(\'Sorry.  You did not enter a valid number\');
> <a name=608>607</a>:     else
> <a name=609>608</a>:       document.location.href=&quot;viewCircuitService.htm?SVCOID=&quot;+SVCOID;
> <a name=610>609</a>:   }
> <a name=611>610</a>: }
> <a name=612>611</a>: 
> <a name=613>612</a>: //***************************************
> <a name=614>613</a>: //Navigates to the asset
> <a name=615>614</a>: //
> <a name=616>615</a>: //
> <a name=617>616</a>: function GoToAsset(){
> <a name=618>617</a>:   var ASTNBR=prompt(&quot;Enter Asset Tag&quot;,&quot;&quot;);
> <a name=619>618</a>:   if(ASTNBR.length &gt; 0){
> <a name=620>619</a>:     if(isNaN(ASTNBR))
> <a name=621>620</a>:       alert(\'Sorry.  You did not enter a valid number\');
> <a name=622>621</a>:     else
> <a name=623>622</a>:       document.location.href=&quot;viewNodes.htm?assetTag=&quot;+ASTNBR;
> <a name=624>623</a>:   } else {
> <a name=625>624</a>:       alert(\'Sorry.  You did not enter a valid number\');
> <a name=626>625</a>:   }
> <a name=627>626</a>: }
> <a name=628>627</a>: 
> <a name=629>628</a>: //***************************************
> <a name=630>629</a>: //Navigates to the next link group
> <a name=631>630</a>: //
> <a name=632>631</a>: //
> <a name=633>632</a>: function GoToLG(){
> <a name=634>633</a>:   var LGOID=prompt(&quot;Enter Link Group&quot;, &quot;'.($Session-&gt;{'searchLinkGroupOID'}).'&quot;);
> <a name=635>634</a>:   if(LGOID!=null){
> <a name=636>635</a>:     if(isNaN(LGOID))  {
> <a name=637>636</a>:       alert(\'Sorry.  You did not enter a valid number\');
> <a name=638>637</a>:       return 0;
> <a name=639>638</a>:     } else {
> <a name=640>639</a>:       document.FGoToLinkGroupDetail.searchLinkGroupOID.value=LGOID;
> <a name=641>640</a>:       document.FGoToLinkGroupDetail.submit();
> <a name=642>641</a>:     }
> <a name=643>642</a>:   }
> <a name=644>643</a>: }
> <a name=645>644</a>: 
> <a name=646>645</a>: /***************************************************
> <a name=647>646</a>:  * Function is used to submit the LinkGroupOID to
> <a name=648>647</a>:  * the View Link Group page
> <a name=649>648</a>:  *
> <a name=650>649</a>:  */
> <a name=651>650</a>: function GoToLinkGroupDetail(linkgroupOID){
> <a name=652>651</a>:   document.FGoToLinkGroupDetail.searchLinkGroupOID.value=linkgroupOID;
> <a name=653>652</a>:   document.FGoToLinkGroupDetail.submit();
> <a name=654>653</a>: }
> <a name=655>654</a>: /**********************************************************
> <a name=656>655</a>: 	TOOL TIP
> <a name=657>656</a>: 	Timing and positioning constants for tool tip display.
> <a name=658>657</a>: 	*/
> <a name=659>658</a>: 
> <a name=660>659</a>: 
> <a name=661>660</a>: var toolTipWait = 1000;    // Delay before showing tool tip.
> <a name=662>661</a>: var toolTipShow = 25000;   // Time to keep tool tip active.
> <a name=663>662</a>: var toolTipxOff =    0;    // Horizontal distance from mouse.
> <a name=664>663</a>: var toolTipyOff =   20;    // Vertical distance from mouse.
> <a name=665>664</a>: 
> <a name=666>665</a>: function startToolTip(name) {
> <a name=667>666</a>:   var tip = getLayer(name);
> <a name=668>667</a>:   // Clear out any pending timer.
> <a name=669>668</a>:   if (tip.timerID)
> <a name=670>669</a>:     clearTimeout(tip.timerID);
> <a name=671>670</a>: 
> <a name=672>671</a>:   // Set timer to show tool tip.
> <a name=673>672</a>:   tip.timerID = setTimeout(\'showToolTip(&quot;\' + name + \'&quot;)\', toolTipWait);
> <a name=674>673</a>: }
> <a name=675>674</a>: 
> <a name=676>675</a>: function showToolTip(name) {
> <a name=677>676</a>:   var tip = getLayer(name);
> <a name=678>677</a>:     // Clear out any pending timer.
> <a name=679>678</a>:   if (tip.timerID)
> <a name=680>679</a>:     clearTimeout(tip.timerID);
> <a name=681>680</a>: 
> <a name=682>681</a>:   // Position and show the tool tip.
> <a name=683>682</a>:   moveLayerTo(tip, window.pageX + toolTipxOff, window.pageY + toolTipyOff);
> <a name=684>683</a>:   showLayer(tip);
> <a name=685>684</a>:   // Set timer to hide the tool tip after a delay.
> <a name=686>685</a>:   tip.timerID = setTimeout(\'hideToolTip(&quot;\' + name + \'&quot;)\', toolTipShow);
> <a name=687>686</a>: }
> <a name=688>687</a>: 
> <a name=689>688</a>: function hideToolTip(name) {
> <a name=690>689</a>:   var tip = getLayer(name);
> <a name=691>690</a>:   // Clear out any pending timer.
> <a name=692>691</a>:   if (tip.timerID)
> <a name=693>692</a>:     clearTimeout(tip.timerID);
> <a name=694>693</a>: 
> <a name=695>694</a>:   hideLayer(tip);
> <a name=696>695</a>: }
> <a name=697>696</a>: //--&gt;
> <a name=698>697</a>: &lt;/script&gt;
> <a name=699>698</a>: 
> <a name=700>699</a>: 	&lt;script language=&quot;JavaScript&quot;&gt;
> <a name=701>700</a>: &lt;!--
> <a name=702>701</a>: if(document.layers){origWidth=innerWidth;origHeight=innerHeight;onresize=function(){if(innerWidth!=origWidth||innerHeight!=origHeight)location.reload()}}
> <a name=703>702</a>: function MM_showHideLayers() { //v2.0
> <a name=704>703</a>:   var i, visStr, args, theObj;
> <a name=705>704</a>:   args = MM_showHideLayers.arguments;
> <a name=706>705</a>:   for (i=0; i&lt;(args.length-2); i+=3) { //with arg triples (objNS,objIE,visStr)
> <a name=707>706</a>:     visStr   = args[i+2];
> <a name=708>707</a>:     if (navigator.appName == \'Netscape\' &amp;&amp; document.layers != null) {
> <a name=709>708</a>:       theObj = eval(args[i]);
> <a name=710>709</a>:       if (theObj) theObj.visibility = visStr;
> <a name=711>710</a>:     } else if (document.all != null) { //IE
> <a name=712>711</a>:       if (visStr == \'show\') visStr = \'visible\'; //convert vals
> <a name=713>712</a>:       if (visStr == \'hide\') visStr = \'hidden\';
> <a name=714>713</a>:       theObj = eval(args[i+1]);
> <a name=715>714</a>:       if (theObj) theObj.style.visibility = visStr;
> <a name=716>715</a>:   } }
> <a name=717>716</a>: }
> <a name=718>717</a>: 
> <a name=719>718</a>: function PopSearch(){
> <a name=720>719</a>:         var QUERY=prompt(&quot;Enter Search Term&quot;, &quot;&quot;);
> <a name=721>720</a>:         if (QUERY) {
> <a name=722>721</a>:                 document.location.href=&quot;/cgi-bin/nph-seek.cgi/query.html?qt=&quot;+QUERY;
> <a name=723>722</a>:         }
> <a name=724>723</a>: }
> <a name=725>724</a>: //--&gt;
> <a name=726>725</a>: &lt;/script&gt;
> <a name=727>726</a>: 
> <a name=728>727</a>: &lt;/head&gt;
> <a name=729>728</a>: &lt;body onLoad=&quot;init()&quot;&gt;
> <a name=730>729</a>: 	'));
> <a name=731>730</a>: 
> <a name=732>731</a>:   # this file is included in the &lt;body&gt; tag of every page
> <a name=733>732</a>:   # and generates the role menu and HTML for the header
> <a name=734>733</a>:   # (company logo, application gif, nav bar)
> <a name=735>734</a>: 
> <a name=736>735</a>: ; $main::Response-&gt;WriteRef(\('
> <a name=737>736</a>: 
> <a name=738>737</a>: &lt;script language=&quot;JavaScript1.2&quot;&gt;
> <a name=739>738</a>: &lt;!--
> <a name=740>739</a>: 
> <a name=741>740</a>:   function ChangeRole(role) {
> <a name=742>741</a>:     document.FChangeRole.role.value=role;
> <a name=743>742</a>:     document.FChangeRole.submit();
> <a name=744>743</a>:   }
> <a name=745>744</a>: 
> <a name=746>745</a>:   function createRoleMenu() {
> <a name=747>746</a>:     roleMenu=new Menu(&quot;role&quot;);
> <a name=748>747</a>: 
> <a name=749>748</a>: 
> <a name=750>749</a>: '));  if ($Session-&gt;{'Role'}) { ; $main::Response-&gt;WriteRef(\('
> <a name=751>750</a>: 
> <a name=752>751</a>: 
> <a name=753>752</a>:     roleMenu.addMenuItem(&quot;'.($Session-&gt;{'RoleLong'}).'&quot;);
> <a name=754>753</a>: 
> <a name=755>754</a>: 
> <a name=756>755</a>: '));
> <a name=757>756</a>:     }
> <a name=758>757</a>: 
> <a name=759>758</a>:     if ($Session-&gt;{'Roles'}) {
> <a name=760>759</a>:       my @Roles = @{$Session-&gt;{'Roles'}};
> <a name=761>760</a>:       my @RolesLong = @{$Session-&gt;{'RolesLong'}};
> <a name=762>761</a>:       my $role;
> <a name=763>762</a>:       my $roleCounter = 0;
> <a name=764>763</a>: 
> <a name=765>764</a>:       foreach $role (@Roles) {
> <a name=766>765</a>: 
> <a name=767>766</a>:         unless ($role eq $Session-&gt;{'Role'}) {  ; $main::Response-&gt;WriteRef(\('
> <a name=768>767</a>: 
> <a name=769>768</a>:      		roleMenu.addMenuItem(&quot;'.( $RolesLong[$roleCounter] ).'&quot;,&quot;ChangeRole(\''.( $role ).'\');&quot;);
> <a name=770>769</a>: 
> <a name=771>770</a>: 
> <a name=772>771</a>: 		'));
> <a name=773>772</a>:         }
> <a name=774>773</a>:         $roleCounter++;
> <a name=775>774</a>:       }
> <a name=776>775</a>: 
> <a name=777>776</a>:       if ($Session-&gt;{'Role'} =~ /^NCMADM$/) {
> <a name=778>777</a>: ; $main::Response-&gt;WriteRef(\('
> <a name=779>778</a>:     roleMenu.addMenuSeparator();
> <a name=780>779</a>: 
> <a name=781>780</a>:     roleMenu.addMenuItem(&quot;Administer Roles&quot;, &quot;document.location.href=\''.( $INAP::NEIS::Application-&gt;{'RolesLocation'} ).'/index.htm?rct=NEIS&amp;logo=/apps/netcfg/images/netconfig.gif\'&quot;);
> <a name=782>781</a>: '));
> <a name=783>782</a>:       }
> <a name=784>783</a>: ; $main::Response-&gt;WriteRef(\('
> <a name=785>784</a>: 
> <a name=786>785</a>:     setupMenu(roleMenu,\'grayblue\');
> <a name=787>786</a>: '));
> <a name=788>787</a>:     } ### end if
> <a name=789>788</a>: 
> <a name=790>789</a>: ; $main::Response-&gt;WriteRef(\('
> <a name=791>790</a>: 
> <a name=792>791</a>:   }   // end function
> <a name=793>792</a>: 
> <a name=794>793</a>: //--&gt;
> <a name=795>794</a>: &lt;/script&gt;
> <a name=796>795</a>: 
> <a name=797>796</a>: &lt;!-- form used to change user role --&gt;
> <a name=798>797</a>: &lt;form name=&quot;FChangeRole&quot; method=&quot;post&quot;&gt;
> <a name=799>798</a>:   &lt;input type=&quot;hidden&quot; name=&quot;control&quot; value=&quot;ChangeRole&quot;&gt;
> <a name=800>799</a>:   &lt;input type=&quot;hidden&quot; name=&quot;role&quot;&gt;
> <a name=801>800</a>: &lt;/form&gt;
> <a name=802>801</a>: 
> <a name=803>802</a>: &lt;!-- form used to move to the viewLinkGroups.htm page --&gt;
> <a name=804>803</a>: &lt;form name=&quot;FGoToLinkGroupDetail&quot; method=&quot;post&quot; action=&quot;viewLinkGroups.htm&quot;&gt;
> <a name=805>804</a>:   &lt;input type=&quot;hidden&quot; name=&quot;searchLinkGroupOID&quot;&gt;
> <a name=806>805</a>:   &lt;input type=&quot;hidden&quot; name=&quot;search&quot; value=&quot;SEARCH&quot;&gt;
> <a name=807>806</a>: &lt;/form&gt;
> <a name=808>807</a>: 
> <a name=809>808</a>: &lt;!-- main nav --&gt;
> <a name=810>809</a>: &lt;table width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;
> <a name=811>810</a>:   &lt;tr&gt;
> <a name=812>811</a>:   &lt;td&gt;&lt;img src=&quot;../../images/info-sm2.gif&quot; align=&quot;left&quot; usemap=&quot;#gomenu&quot; border=&quot;0&quot; alt=&quot;InfoSource&quot;&gt;&lt;/td&gt;
> <a name=813>812</a>:   &lt;td align=&quot;right&quot;&gt; &lt;/td&gt;
> <a name=814>813</a>:   &lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;
> <a name=815>814</a>:     &lt;a href=&quot;index.htm&quot;&gt;&lt;img src=&quot;./images/netconfig.gif&quot; alt=&quot;Network Configuration&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
> <a name=816>815</a>:     &lt;font size=&quot;-1&quot; color=&quot;red&quot;&gt;&lt;br&gt;
> <a name=817>816</a>:     &lt;div align=&quot;center&quot;&gt;
> <a name=818>817</a>: '));
> <a name=819>818</a>: $Response-&gt;Write(&quot;DEBUG MODE ON&quot;) if ($Application-&gt;{'Debug'} eq &quot;1&quot;);
> <a name=820>819</a>: ; $main::Response-&gt;WriteRef(\('
> <a name=821>820</a>:     &lt;/div&gt;
> <a name=822>821</a>:     &lt;/font&gt;
> <a name=823>822</a>:   &lt;/td&gt;
> <a name=824>823</a>:   &lt;/tr&gt;
> <a name=825>824</a>: &lt;/table&gt;
> <a name=826>825</a>: &lt;!-- end mainnav --&gt;
> <a name=827>826</a>: 
> <a name=828>827</a>: &lt;script language=&quot;JavaScript1.2&quot;&gt;
> <a name=829>828</a>: &lt;!--
> <a name=830>829</a>: 	//this is nessecary for the menus to show up on IE.
> <a name=831>830</a>: 	//IE needs to create the menus after the &lt;BODY&gt; tag
> <a name=832>831</a>: 
> <a name=833>832</a>: 	if(document.all){
> <a name=834>833</a>: 		CreateMenus();
> <a name=835>834</a>: 	}
> <a name=836>835</a>: //--&gt;
> <a name=837>836</a>: &lt;/script&gt;
> <a name=838>837</a>: 
> <a name=839>838</a>: 
> <a name=840>839</a>: 
> <a name=841>840</a>: &lt;!-- begin navbar --&gt;
> <a name=842>841</a>: &lt;table border=&quot;0&quot; bgcolor=&quot;#0000AA&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;&gt;
> <a name=843>842</a>:   &lt;tr&gt;
> <a name=844>843</a>:   &lt;td align=&quot;left&quot; class=&quot;navsm&quot;&gt;Current User: '.($Session-&gt;{'FirstName'}).' '.($Session-&gt;{'LastName'}).'&amp;nbsp&amp;nbsp&amp;nbsp
> <a name=845>844</a>: '));
> <a name=846>845</a>: if ($Session-&gt;{'Role'} ne '') {
> <a name=847>846</a>:   if ($asppage eq &quot;index.htm&quot;) { ; $main::Response-&gt;WriteRef(\('
> <a name=848>847</a>:     Current Role: &lt;a class=&quot;navsm&quot; href=&quot;javascript:void(0)&quot; onmouseover=&quot;window.showMenu(window.roleMenu);&quot; &gt;'.($Session-&gt;{'RoleLong'}).'&lt;/a&gt;
> <a name=849>848</a>:   ')); } else { ; $main::Response-&gt;WriteRef(\('
> <a name=850>849</a>:     Current Role: '.($Session-&gt;{'RoleLong'}).'
> <a name=851>850</a>:   ')); }
> <a name=852>851</a>: }
> <a name=853>852</a>: ; $main::Response-&gt;WriteRef(\('
> <a name=854>853</a>:   &lt;/td&gt;
> <a name=855>854</a>:   &lt;td align=&quot;right&quot; class=&quot;navsm&quot;&gt;
> <a name=856>855</a>:     &lt;!-- &lt;a href=&quot;mywo.htm&quot; onMouseOver=&quot;window.showMenu(window.myMenu);&quot; class=&quot;navsm&quot;&gt;My NetConfig&lt;/a&gt;&amp;nbsp;&amp;nbsp;|&amp;nbsp;&amp;nbsp; --&gt;
> <a name=857>856</a>:     &lt;a href=&quot;javascript:void(0)&quot; onmouseover=&quot;window.showMenu(window.mainMenu);&quot; class=&quot;navsm&quot;&gt;Main Menu&lt;/a&gt;
> <a name=858>857</a>:     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
> <a name=859>858</a>:     &lt;a href=&quot;logout.htm&quot; class=&quot;navsm&quot;&gt;Sign Out&lt;/a&gt; &amp;nbsp;&amp;nbsp;
> <a name=860>859</a>:   &lt;/td&gt;
> <a name=861>860</a>:   &lt;/tr&gt;
> <a name=862>861</a>: &lt;/table&gt;
> <a name=863>862</a>: &lt;!-- end navbar --&gt;
> <a name=864>863</a>: &lt;br&gt;
> <a name=865>864</a>: 
> <a name=866>865</a>: 
> <a name=867>866</a>: 	&lt;center&gt;
> <a name=868>867</a>: 	&lt;form method=&quot;POST&quot;&gt;
> <a name=869>868</a>: 		&lt;table border=&quot;0&quot; cellpadding=&quot;4&quot;&gt;
> <a name=870>869</a>: 			&lt;tr&gt;
> <a name=871>870</a>: 				&lt;th class=&quot;header&quot; colspan=&quot;9&quot;&gt;&lt;font size=&quot;+1&quot;&gt;Nodes&lt;/font&gt;&lt;/th&gt;
> <a name=872>871</a>: 			&lt;/tr&gt;
> <a name=873>872</a>: 			&lt;tr&gt;
> <a name=874>873</a>: 				&lt;td colspan=&quot;9&quot;&gt;
> <a name=875>874</a>: 
> <a name=876>875</a>: 					')); ### if the user has edit rights, show the edit links
> <a name=877>876</a>: 						if ($allowEdit)
> <a name=878>877</a>: 						{ ; $main::Response-&gt;WriteRef(\('
> <a name=879>878</a>: 					&lt;img src=&quot;images/edite.gif&quot; width=&quot;15&quot; height=&quot;18&quot; border=&quot;0&quot; alt=&quot;Edit&quot;&gt; Edit
> <a name=880>879</a>: 					&amp;nbsp;&amp;nbsp;&amp;nbsp;
> <a name=881>880</a>: 					')); } ; $main::Response-&gt;WriteRef(\('
> <a name=882>881</a>: 
> <a name=883>882</a>: 					&lt;img src=&quot;images/editp.gif&quot; width=&quot;15&quot; height=&quot;18&quot; border=&quot;0&quot; alt=&quot;Endpoints&quot;&gt; Endpoints
> <a name=884>883</a>: 					&amp;nbsp;&amp;nbsp;&amp;nbsp;
> <a name=885>884</a>: 					&lt;img src=&quot;images/edita.gif&quot; width=&quot;15&quot; height=&quot;18&quot; border=&quot;0&quot; alt=&quot;Assets&quot;&gt; Assets
> <a name=886>885</a>: 				&lt;/td&gt;
> <a name=887>886</a>: 			&lt;/tr&gt;
> <a name=888>887</a>: 			&lt;tr&gt;
> <a name=889>888</a>:  				&lt;th colspan=&quot;'.($editcols).'&quot;&gt;Select:&lt;/th&gt;
> <a name=890>889</a>: 				&lt;td class=&quot;columnHeader&quot;&gt;
> <a name=891>890</a>: 					&lt;A href=&quot;'.($asppage).'?ordercolumn=NODENAME&quot;&gt;Name&lt;/A&gt;
> <a name=892>891</a>: 				&lt;/td&gt;
> <a name=893>892</a>: 				&lt;td class=&quot;columnHeader&quot;&gt;
> <a name=894>893</a>: 					&lt;A href=&quot;'.($asppage).'?ordercolumn=NODETYPE&quot;&gt;Type&lt;/A&gt;
> <a name=895>894</a>: 				&lt;/td&gt;
> <a name=896>895</a>: 				&lt;td class=&quot;columnHeader&quot;&gt;
> <a name=897>896</a>: 					&lt;A href=&quot;'.($asppage).'?ordercolumn=STATUS&quot;&gt;Status&lt;/A&gt;
> <a name=898>897</a>: 				&lt;/td&gt;
> <a name=899>898</a>: 				&lt;td class=&quot;columnHeader&quot;&gt;
> <a name=900>899</a>: 					&lt;A href=&quot;'.($asppage).'?ordercolumn=SITECODE&quot;&gt;Site Code&lt;/A&gt;
> <a name=901>900</a>: 				&lt;/td&gt;
> <a name=902>901</a>: 				&lt;td class=&quot;columnHeader&quot;&gt;
> <a name=903>902</a>: 					&lt;A href=&quot;'.($asppage).'?ordercolumn=LOCATIONDSCR&quot;&gt;Location&lt;/A&gt;
> <a name=904>903</a>: 				&lt;/td&gt;
> <a name=905>904</a>: 				&lt;td class=&quot;columnHeader&quot;&gt;
> <a name=906>905</a>: 					&lt;A href=&quot;'.($asppage).'?ordercolumn=RACKNBR&quot;&gt;Rack #&lt;/A&gt;
> <a name=907>906</a>: 				&lt;/td&gt;
> <a name=908>907</a>: 			&lt;/tr&gt;
> <a name=909>908</a>: 
> <a name=910>909</a>:             ')); ### Add the data to the table ###
> <a name=911>910</a>:                  my $iCount;
> <a name=912>911</a>: 				 my $bgcolor;
> <a name=913>912</a>:                  for ($iCount = 0; $iCount &lt; $nodecount; $iCount++)
> <a name=914>913</a>:                  {
> <a name=915>914</a>: 					# set the alternating row colors
> <a name=916>915</a>: 					if ($iCount%2 != 0) {
> <a name=917>916</a>: 						$bgcolor = &quot;eeeeee&quot;
> <a name=918>917</a>: 					} else {
> <a name=919>918</a>: 						$bgcolor = &quot;ffffff&quot;
> <a name=920>919</a>: 					}
> <a name=921>920</a>: 					; $main::Response-&gt;WriteRef(\('
> <a name=922>921</a>:              &lt;tr&gt;
> <a name=923>922</a>: 
> <a name=924>923</a>: 				')); ### if the user has edit rights, show the edit links
> <a name=925>924</a>: 					if ($allowEdit)
> <a name=926>925</a>: 					{ ; $main::Response-&gt;WriteRef(\('
> <a name=927>926</a>: 
> <a name=928>927</a>: 				&lt;td&gt;&lt;A href=&quot;editNode.htm?OID='.($nodeOIDList[$iCount]).'&quot;&gt;
> <a name=929>928</a>: 					&lt;img src=&quot;images/edite.gif&quot; width=&quot;15&quot; height=&quot;18&quot; border=&quot;0&quot; alt=&quot;Edit&quot;&gt;&lt;/a&gt;
> <a name=930>929</a>: 				&lt;/td&gt;
> <a name=931>930</a>: 
> <a name=932>931</a>: 				')); } ; $main::Response-&gt;WriteRef(\('
> <a name=933>932</a>: 
> <a name=934>933</a>: 				&lt;td&gt;&lt;A href=&quot;viewEndpoints.htm?OID='.($nodeOIDList[$iCount]).'&amp;nodeName='.($nodeNameList[$iCount]).'&quot;&gt;
> <a name=935>934</a>: 					&lt;img src=&quot;images/editp.gif&quot; width=&quot;15&quot; height=&quot;18&quot; border=&quot;0&quot; alt=&quot;Endpoints&quot;&gt;&lt;/a&gt;
> <a name=936>935</a>: 				&lt;/td&gt;
> <a name=937>936</a>: 				&lt;td&gt;&lt;A href=&quot;viewInstalledAssets.htm?OID='.($nodeOIDList[$iCount]).'&quot;&gt;
> <a name=938>937</a>: 					&lt;img src=&quot;images/edita.gif&quot; width=&quot;15&quot; height=&quot;18&quot; border=&quot;0&quot; alt=&quot;Assets&quot;&gt;&lt;/a&gt;
> <a name=939>938</a>: 				&lt;/td&gt;
> <a name=940>939</a>:                  &lt;td bgcolor=&quot;#'.($bgcolor).'&quot;&gt;'.( $nodeNameList[$iCount] ).'&amp;nbsp;&lt;/td&gt;
> <a name=941>940</a>:                  &lt;td bgcolor=&quot;#'.($bgcolor).'&quot;&gt;'.( $nodeTypeList[$iCount] ).'&amp;nbsp;&lt;/td&gt;
> <a name=942>941</a>:                  &lt;td bgcolor=&quot;#'.($bgcolor).'&quot;&gt;'.( $statusList[$iCount] ).'&amp;nbsp;&lt;/td&gt;
> <a name=943>942</a>:                  &lt;td bgcolor=&quot;#'.($bgcolor).'&quot;&gt;'.( $siteCodeList[$iCount] ).'&amp;nbsp;&lt;/td&gt;
> <a name=944>943</a>:                  &lt;td bgcolor=&quot;#'.($bgcolor).'&quot;&gt;'.( $locationList[$iCount] ).'&amp;nbsp;&lt;/td&gt;
> <a name=945>944</a>:                  &lt;td bgcolor=&quot;#'.($bgcolor).'&quot;&gt;'.( $rackList[$iCount] ).'&amp;nbsp;&lt;/td&gt;
> <a name=946>945</a>:             &lt;/tr&gt;
> <a name=947>946</a>: 
> <a name=948>947</a>: 				')); } ### end for loop 
> <a name=949>948</a>: ; $main::Response-&gt;WriteRef(\('
> <a name=950>949</a>: 
> <a name=951>950</a>: 			&lt;tr&gt;
> <a name=952>951</a>: 				&lt;td colspan=&quot;9&quot;&gt;
> <a name=953>952</a>: 					&lt;font color=&quot;red&quot;&gt;
> <a name=954>953</a>: 
> <a name=955>954</a>: 				'));
> <a name=956>955</a>: 				if (0 == $nodecount)
> <a name=957>956</a>: 				{ ; $main::Response-&gt;WriteRef(\('
> <a name=958>957</a>: 					&lt;font size=&quot;+2&quot;&gt;
> <a name=959>958</a>: 					No nodes were found with that search critera. Please try again.
> <a name=960>959</a>: 					&lt;/font&gt;
> <a name=961>960</a>: 				')); } else { ; $main::Response-&gt;WriteRef(\('
> <a name=962>961</a>: 					Your search returned '.($nodecount ).' nodes.
> <a name=963>962</a>: 				')); } ; $main::Response-&gt;WriteRef(\('
> <a name=964>963</a>: 
> <a name=965>964</a>: 					&lt;/font&gt;
> <a name=966>965</a>: 				&lt;/td&gt;
> <a name=967>966</a>: 			&lt;/tr&gt;
> <a name=968>967</a>: 		&lt;/table&gt;
> <a name=969>968</a>: 		&lt;!-- SAVE THE SEARCH CRITERIA --&gt;
> <a name=970>969</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchNodeOID&quot; value=&quot;'.($searchNodeOID).'&quot;&gt;
> <a name=971>970</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchNodeName&quot; value=&quot;'.($searchNodeName).'&quot;&gt;
> <a name=972>971</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchNodeType&quot; value=&quot;'.($searchNodeType).'&quot;&gt;
> <a name=973>972</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchNodeStatus&quot; value=&quot;'.($searchNodeStatus).'&quot;&gt;
> <a name=974>973</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchSiteCode&quot; value=&quot;'.($searchSiteCode).'&quot;&gt;
> <a name=975>974</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchLocation&quot; value=&quot;'.($searchLocation).'&quot;&gt;
> <a name=976>975</a>: 		&lt;input type=&quot;hidden&quot; name=&quot;searchRack&quot; value=&quot;'.($searchRack).'&quot;&gt;
> <a name=977>976</a>: 	&lt;/form&gt;
> <a name=978>977</a>: 	&lt;/center&gt;
> <a name=979>978</a>:   &lt;div align=&quot;center&quot;&gt;Problems? Please &lt;a href=&quot;javascript:document.FBug.submit();&quot;&gt;let us know.&lt;/a&gt;&lt;/div&gt;
> <a name=980>979</a>: &lt;form name=&quot;FBug&quot; method=&quot;get&quot; action=&quot;/cgi-bin/itservices.cgi&quot;&gt;
> <a name=981>980</a>:   &lt;input type=&quot;hidden&quot; name=&quot;app&quot; value=&quot;'));$Response-&gt;Write(qq($Application-&gt;{'Application'} $Application-&gt;{'CVS_Version'}));; $main::Response-&gt;WriteRef(\('&quot;&gt;
> <a name=982>981</a>: &lt;/form&gt;
> <a name=983>982</a>: &lt;div align=&quot;left&quot;&gt;&lt;b&gt;&lt;i&gt;Version '.($Application-&gt;{'CVS_Version'}).'&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
> <a name=984>983</a>: &lt;!-- &lt;div align=&quot;right&quot;&gt;&lt;i&gt;For &lt;/i&gt;&lt;b&gt;&lt;font face=&quot;Helvetica&quot; color=&quot;blue&quot;&gt;Inter&lt;/font&gt;NAP&lt;/b&gt;&lt;i&gt; internal use only.&lt;/i&gt;&lt;/div&gt; --&gt;
> <a name=985>984</a>: &lt;div align=&quot;right&quot;&gt;&lt;i&gt;For &lt;b&gt;INTERNAP&lt;/b&gt; internal use only.&lt;/i&gt;&lt;/div&gt;
> <a name=986>985</a>: ')); # Comment out this functionality until I need to add menus later.
> <a name=987>986</a>: # &lt;script language=&quot;JavaScript1.2&quot;&gt;
> <a name=988>987</a>: # &lt;!--
> <a name=989>988</a>: # 	//this is nessecary for the menus to show up on IE.
> <a name=990>989</a>: # 	//IE needs to create the menus after the &lt;BODY&gt; tag
> <a name=991>990</a>: # 	if(document.all){ # document.all is only defined in IE, not in Netscape.
> <a name=992>991</a>: # 		CreateMenus();
> <a name=993>992</a>: #   }
> <a name=994>993</a>: # //--&gt;
> <a name=995>994</a>: # &lt;/script&gt;
> <a name=996>995</a>: unless ($asppage =~ /^(pick|refine)/) { ; $main::Response-&gt;WriteRef(\('
> <a name=997>996</a>:   &lt;Map name=&quot;gomenu&quot;&gt;
> <a name=998>997</a>:   &lt;area shape=&quot;rect&quot; coords=&quot;61,0,251,25&quot; href=&quot;/&quot;&gt;
> <a name=999>998</a>: &lt;/map&gt;
> <a name=1000>999</a>: 
> <a name=1001>1000</a>: &lt;div id=&quot;goOff&quot;&gt;&lt;a href=&quot;javascript:void(0)&quot; onMouseOver=&quot;MM_showHideLayers(\'document.layers[\\\'goOff\\\']\',\'document.all[\\\'goOff\\\']\',\'hide\',\'document.layers[\\\'go\\\']\',\'document.all[\\\'go\\\']\',\'hide\')&quot;&gt;&lt;img src=&quot;/images/1space.gif&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;400&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/div&gt;
> <a name=1002>1001</a>: 
> <a name=1003>1002</a>: &lt;div id=&quot;goTgl&quot;&gt;&lt;a href=&quot;javascript:void(0)&quot; onMouseOver=&quot;MM_showHideLayers(\'document.layers[\\\'goOff\\\']\',\'document.all[\\\'goOff\\\']\',\'show\',\'document.layers[\\\'go\\\']\',\'document.all[\\\'go\\\']\',\'show\')&quot;&gt;&lt;img src=&quot;/images/1space.gif&quot; alt=&quot;&quot; width=&quot;120&quot; height=&quot;55&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/div&gt;
> <a name=1004>1003</a>: 
> <a name=1005>1004</a>: &lt;div id=&quot;go&quot;&gt;
> <a name=1006>1005</a>:   &lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;/&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000000&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Home&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;
> <a name=1007>1006</a>:   &lt;a href=&quot;/corp/staff/pageall.htm&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Paging&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
> <a name=1008>1007</a>:   &lt;a href=&quot;/passwd/cgi-bin/prox/password.cgi&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Change&amp;nbsp;Password&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;
> <a name=1009>1008</a>:   &lt;a href=&quot;/top/help.htm&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Help&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
> <a name=1010>1009</a>:   &lt;a href=&quot;/dept/index.htm&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Departments&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
> <a name=1011>1010</a>:   &lt;a href=&quot;/apps/index.htm&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Applications&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
> <a name=1012>1011</a>:   &lt;a href=&quot;/corp/staff/search.htm&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;Staff&amp;nbsp;Search&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
> <a name=1013>1012</a>:   &lt;a href=&quot;javascript:PopSearch();&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;InfoSource&amp;nbsp;Search&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;&lt;br&gt;
> <a name=1014>1013</a>:   &lt;!--&lt;a href=&quot;javascript:q=document.getSelection();for(i=0;i&lt;frames.length;i++){q=frames[i].document.getSelection();if(q)break;}if(!q)void(q=prompt(\'Enter Search Terms\',\'\'));if(q)location.href=\'https://infosource.internap.com/cgi-bin/nph-seek.cgi/query.html?qt=\'+escape(q)&quot;&gt;&lt;font face=&quot;sans-serif&quot; color=&quot;#000099&quot; size=&quot;-1&quot;&gt;&lt;b&gt;InfoSource&amp;nbsp;Search&lt;/b&gt;&lt;/font&gt;&lt;/a&gt;--&gt;&lt;br&gt;
> <a name=1015>1014</a>: &lt;/div&gt;
> <a name=1016>1015</a>: 
> <a name=1017>1016</a>: ')); } ; $main::Response-&gt;WriteRef(\('
> <a name=1018>1017</a>: 
> <a name=1019>1018</a>: 
> <a name=1020>1019</a>: &lt;/body&gt;
> <a name=1021>1020</a>: &lt;/html&gt;'));;;no lib qw(/usr/local/etc/infosource/apps/netcfg/); ;; }
> 
> </pre>
> <hr width=30% size=1>
> <font size=-1>
> <i> 
> An error has occured with the Apache::ASP script just run. 
> If you are the developer working on this script, and cannot work 
> through this problem, please try researching the it at the 
> <a href=http://www.apache-asp.org/>Apache::ASP web site</a>,
> specifically the <a href=http://www.apache-asp.org/faq.html>FAQ section</a>.
> Failing that, check out your 
> <a href=http://www.apache-asp.org/support.html>support options</a>, and 
> if necessary include this debug output with any query. 
> 
> 
> 
> 
> 
>