// ----------------------------------------------------------------------------
// General purpose BROWSER ELEMENT support
// ----------------------------------------------------------------------------
// *                                                                          *
// *                           Copyright 2002                                 *
// *                        CHECCO SERVICES, INC.                             *
// *                         All Rights Reserved.                             *
// *                                                                          *
// *     This software contains proprietary and confidential information      *
// *     belonging to CHECCO SERVICES, INC., and may not be decompiled,       *
// *     disassembled, disclosed, reproduced or copied without the prior      *
// *     written consent of CHECCO SERVICES, INC..                            *
// *                                                                          *
// ----------------------------------------------------------------------------

// ----------------------------------------------------------------------------
// Reference Guide
// ----------------------------------------------------------------------------
// Static Objects:
//	BrowserUtil
// Properties:
//	.showAlert
// Methods:
//	.alert
//	.findDOM	
//	.nextDOM	
//	.findTAG
//	.nextTAG
//	.findLayer	
//	.nextLayer
//	.findImage	
//	.nextImage
//	.findAnchor
//	.nextAnchor
//	.findForm	
//	.nextForm
//	.findElement
//	.nextElement
//	.HtmlArg
//	.ParseArgs
//	.setCookie
//	.getCookie
// ----------------------------------------------------------------------------

// ----------------------------------------------------------------------------
// Example Usage
// ----------------------------------------------------------------------------
// <script language="JavaScript">
// </script>
// ----------------------------------------------------------------

// ----------------------------------------------------------------------------
// Change History
// ----------------------------------------------------------------------------
// Modified:  John C. Checco
// History:  2002-08-23
// 	- added support for jsRegistry 
// 	- created static class

jsRegistry.add('browser-util','browser-type');

// ----------------------------------------------------------------------------
var BrowserUtil = new Object();
// ----------------------------------------------------------------------------
BrowserUtil.showAlert = 1;
// ----------------------------------------------------------------------------
BrowserUtil.noop	=BrowserUtil_noop;
BrowserUtil.alert	=BrowserUtil_alert;
// ----------------------------------------------------------------------------
BrowserUtil.findDOM	=BrowserUtil_findDOM;
BrowserUtil.nextDOM	=BrowserUtil_nextDOM;
BrowserUtil.findTAG	=BrowserUtil_findTAG;
BrowserUtil.nextTAG	=BrowserUtil_nextTAG;
BrowserUtil.findLayer	=BrowserUtil_findLayer;
BrowserUtil.nextLayer	=BrowserUtil_nextLayer;
BrowserUtil.findImage	=BrowserUtil_findImage;
BrowserUtil.nextImage	=BrowserUtil_nextImage;
BrowserUtil.findAnchor	=BrowserUtil_findAnchor;
BrowserUtil.nextAnchor	=BrowserUtil_nextAnchor;
BrowserUtil.findForm	=BrowserUtil_findForm;
BrowserUtil.nextForm	=BrowserUtil_nextForm;
BrowserUtil.findElement	=BrowserUtil_findElement;
BrowserUtil.nextElement	=BrowserUtil_nextElement;
// ----------------------------------------------------------------
BrowserUtil.HtmlArg	=BrowserUtil_HtmlArg;
BrowserUtil.ParseArgs	=BrowserUtil_ParseArgs;
// ----------------------------------------------------------------
BrowserUtil.setCookie	=BrowserUtil_setCookie;
BrowserUtil.getCookie	=BrowserUtil_getCookie;

// ----------------------------------------------------------------
// static functions
// ----------------------------------------------------------------
function BrowserUtil_noop() 
{
}

function BrowserUtil_alert(msg) 
{
   if ( BrowserUtil.showAlert ) 
   {
      BrowserUtil.showAlert = confirm(msg + 
      		"\n-------------------------------" + 
      		"\nPress [CANCEL] to stop messages");
   }
}

// -----------------------------
function BrowserUtil_findDOM(ename,byname,partial,fromdoc)
{
   if ( !fromdoc ) fromdoc = document;
   var formlist = fromdoc.getElementsByTagName(ename);
   if ( formlist ) {
      for ( var i = 0; i < formlist.length; i ++ )
      {
         var tf = formlist.item(i);
         if ( tf )
         {
            var chkVAL = tf.getAttribute('name');
            if ( !chkVAL ) chkVAL = tf.getAttribute('id');
            if ( chkVAL ) {
               if ( chkVAL == byname )
               {
                  return tf;
               }
               else if ( partial && chkVAL.substr(0,byname.length) == byname )
               {
                  return tf;
               }
            }
         }
      }
   }
   return null;
}

function BrowserUtil_nextDOM(fromfld,byname,partial)
{
   var ename = fromfld.getAttribute('tagName');
   var fromdoc = fromfld.document;
   var formlist = fromdoc.getElementsByTagName(ename);
   var found = 0;
   if ( formlist ) {
      for ( var i = 0; i < formlist.length; i ++ )
      {
         var tf = formlist.item(i);
         if ( found ) {
            var chkVAL = tf.getAttribute('name');
            if ( !chkVAL ) chkVAL = tf.getAttribute('id');
            if ( chkVAL ) {
               if ( chkVAL == byname )
               {
                  return tf;
               }
               else if ( partial && chkVAL.substr(0,byname.length) == byname )
               {
                  return tf;
               }
            }
         }
         else {
            if ( tf == fromfld ) {
               found = 1;
            }
         }
      }
   }
   return null;
}

// -----------------------------
function BrowserUtil_findTAG(ename,byname,partial,fromdoc)
{
   if ( !fromdoc ) fromdoc = document;
   var formlist = fromdoc.all.tags(ename);
   for ( var i = 0; i < formlist.length; i ++ )
   {
      var tf = formlist[i];
      var chkVAL = tf.name ? tf.name : tf.id;
      //BrowserUtil.alert("FindTAG(" + ename + "," + byname + "," + partial + "):\n element=(" + tf.tagName + "," + chkVAL + ")");
      if ( chkVAL == byname )
      {  
         return tf;
      }
      else if ( partial && chkVAL.substr(0,byname.length) == byname )
      {
         return tf;
      }
   }
   return null;
}

function BrowserUtil_nextTAG(fromfld,byname,partial)
{
   var ename = fromfld.tagName;
   var fromdoc = fromfld.document;
   var formlist = fromdoc.all.tags(ename);
   var found = 0;
   if ( formlist ) {
      for ( var i = 0; i < formlist.length; i ++ )
      {
         var tf = formlist[i];
         if ( found ) {
            var chkVAL = tf.name ? tf.name : tf.id;
            if ( chkVAL == byname )
            {
               return tf;
            }
            else if ( partial && chkVAL.substr(0,byname.length) == byname )
            {
               return tf;
            }
         }
         else {
            if ( tf == fromfld ) {
               found = 1;
            }
         }
      }
   }
   return null;
}

// -----------------------------
function BrowserUtil_findLayer(byname,partial,fromdoc)
{
   if (BrowserType.is_dom) { 
      return BrowserUtil.findDOM("div",byname,partial,fromdoc); 
   }
   if (BrowserType.is_nav4) { 
       if ( !fromdoc ) fromdoc = document;
       for ( var i = 0; i < fromdoc.layers.length; i ++ )
       {   
       	   var tf = fromdoc.layers[i];
           var chkVAL = tf.name ? tf.name : tf.id;
           if ( !chkVAL ) {
           	//  NS4 javascript support... ugh!
           }
           else if ( chkVAL == byname ) {
              return tf;
           }
           else if ( partial && chkVAL.substr(0,byname.length) == byname )
           {
              return tf;
           }
       }
       for ( var j = 0; j < fromdoc.layers.length; j ++ )
       {   
	   for ( var i = 0; i < fromdoc.layers[j].document.layers.length; i ++ )
	   {  
		   var tf = fromdoc.layers[j].document.layers[i];
         	   var chkVAL = tf.name ? tf.name : tf.id;
		   if ( !chkVAL ) {
           	      //  NS4 javascript support... ugh!
           	   }
           	   else if ( chkVAL == byname ) {
		      return tf;
		   }
		   else if ( partial && chkVAL.substr(0,byname.length) == byname )
		   {
		      return tf;
		   }
	   }
       }
   } 
   else { 
      return BrowserUtil.findTAG("div",byname,partial,fromdoc); 
   }
   return null;
}

function BrowserUtil_nextLayer(fromfld,byname,partial)
{
   if (BrowserType.is_dom) { 
      return BrowserUtil.nextDOM(fromfld,byname,partial); 
   }
   if (BrowserType.is_nav4) { 
       var found = 0;
       var fromdoc = fromfld.document;
       for ( var i = 0; i < fromdoc.layers.length; i ++ )
       {   
           if ( found ) {
       	      var tf = fromdoc.layers[i];
              var chkVAL = tf.name ? tf.name : tf.id;
              if ( !chkVAL ) {
           	//  NS4 javascript support... ugh!
              }
              else if ( chkVAL == byname ) {
                 return tf;
              }
              else if ( partial && chkVAL.substr(0,byname.length) == byname )
              {
                 return tf;
              }
           }
           else {
              if ( tf == fromfld ) {
                 found = 1;
              }
           }
       }
       for ( var j = 0; j < fromdoc.layers.length; j ++ )
       {   
	   for ( var i = 0; i < fromdoc.layers[j].document.layers.length; i ++ )
	   {  
              if ( found ) {
		   var tf = fromdoc.layers[j].document.layers[i];
                   var chkVAL = tf.name ? tf.name : tf.id;
		   if ( !chkVAL ) {
           	      //  NS4 javascript support... ugh!
                   }
                   else if ( chkVAL == byname ) {
		      return tf;
		   }
		   else if ( partial && chkVAL.substr(0,byname.length) == byname )
		   {
		      return tf;
		   }
              }
              else {
                 if ( tf == fromfld ) {
                    found = 1;
                 }
              }
	   }
       }
   } 
   else { 
      return BrowserUtil.nextTAG(fromfld,byname,partial); 
   }
   return null;
}

// -----------------------------
function BrowserUtil_findImage(byname,partial,fromdoc)
{  
   if ( BrowserType.is_dom ) { 
   	return BrowserUtil.findDOM("img",byname,partial,fromdoc); 
   }
   if (BrowserType.is_nav4) { 
       if ( !fromdoc ) fromdoc = document;
       for ( var i = 0; i < fromdoc.images.length; i ++ )
       {   
       	   var tf = fromdoc.images[i];
           var chkVAL = tf.name ? tf.name : tf.id;
           if ( !chkVAL ) {
           	//  NS4 javascript support... ugh!
           }
           else if ( chkVAL == byname ) {
              return tf;
           }
           else if ( partial && chkVAL.substr(0,byname.length) == byname )
           {
              return tf;
           }
       }
       for ( var j = 0; j < fromdoc.layers.length; j ++ )
       {   
	   for ( var i = 0; i < fromdoc.layers[j].document.images.length; i ++ )
	   {  
		   var tf = fromdoc.layers[j].document.images[i];
                   var chkVAL = tf.name ? tf.name : tf.id;
		   if ( !chkVAL ) {
                      //  NS4 javascript support... ugh!
                   }
                   else if ( chkVAL == byname ) {
		      return tf;
		   }
		   else if ( partial && chkVAL.substr(0,byname.length) == byname )
		   {
		      return tf;
		   }
	   }
       }
   } 
   else { 
      return BrowserUtil.findTAG("img",byname,partial,fromdoc); 
   }
   return null;
}

function BrowserUtil_nextImage(fromfld,byname,partial)
{
   if (BrowserType.is_dom) { 
      return BrowserUtil.nextDOM(fromfld,byname,partial); 
   }
   if (BrowserType.is_nav4) { 
       var fromdoc = fromfld.document;
       var found = 0;
       for ( var i = 0; i < fromdoc.images.length; i ++ )
       {   
           if ( found ) {
       	      var tf = fromdoc.images[i];
              var chkVAL = tf.name ? tf.name : tf.id;
              if ( !chkVAL ) {
           	//  NS4 javascript support... ugh!
              }
              else if ( chkVAL == byname ) {
                 return tf;
              }
              else if ( partial && chkVAL.substr(0,byname.length) == byname )
              {
                 return tf;
              }
           }
           else {
              if ( tf == fromfld ) {
                 found = 1;
              }
           }
       }
       for ( var j = 0; j < fromdoc.layers.length; j ++ )
       {   
	   for ( var i = 0; i < fromdoc.layers[j].document.images.length; i ++ )
	   {  
              if ( found ) {
		   var tf = fromdoc.layers[j].document.images[i];
                   var chkVAL = tf.name ? tf.name : tf.id;
		   if ( !chkVAL ) {
           	      //  NS4 javascript support... ugh!
                   }
                   else if ( chkVAL == byname ) {
		      return tf;
		   }
		   else if ( partial && chkVAL.substr(0,byname.length) == byname )
		   {
		      return tf;
		   }
              }
              else {
                 if ( tf == fromfld ) {
                    found = 1;
                 }
              }
	   }
       }
   } 
   else { 
      return BrowserUtil.nextTAG(fromfld,byname,partial); 
   }
   return null;
}

// -----------------------------
function BrowserUtil_findAnchor(byname,partial,fromdoc)
{  
   if ( BrowserType.is_dom ) { 
   	return BrowserUtil.findDOM("a",byname,partial,fromdoc); 
   }
   if (BrowserType.is_nav4) { 
       if ( !fromdoc ) fromdoc = document;
       for ( var i = 0; i < fromdoc.anchors.length; i ++ )
       {   
       	   var tf = fromdoc.anchors[i];
           var chkVAL = tf.name ? tf.name : tf.id;
           if ( !chkVAL ) {
           	//  NS4 javascript support... ugh!
           }
           else if ( chkVAL == byname ) {
              return tf;
           }
           else if ( partial && chkVAL.substr(0,byname.length) == byname )
           {
              return tf;
           }
       }
       for ( var j = 0; j < fromdoc.layers.length; j ++ )
       {   
	   for ( var i = 0; i < fromdoc.layers[j].document.anchors.length; i ++ )
	   {  
		   var tf = fromdoc.layers[j].document.anchors[i];
                   var chkVAL = tf.name ? tf.name : tf.id;
		   if ( !chkVAL ) {
           	      //  NS4 javascript support... ugh!
                   }
                   else if ( chkVAL == byname ) {
		      return tf;
		   }
		   else if ( partial && chkVAL.substr(0,byname.length) == byname )
		   {
		      return tf;
		   }
	   }
       }
   } 
   else { 
      return BrowserUtil.findTAG("a",byname,partial,fromdoc); 
   }
   return null;
}

function BrowserUtil_nextAnchor(fromfld,byname,partial)
{
   if (BrowserType.is_dom) { 
      return BrowserUtil.nextDOM(fromfld,byname,partial); 
   }
   if (BrowserType.is_nav4) {
       var fromdoc = fromfld.document;
       var found = 0;
       for ( var i = 0; i < fromdoc.anchors.length; i ++ )
       {   
           if ( found ) {
       	      var tf = fromdoc.anchors[i];
              var chkVAL = tf.name ? tf.name : tf.id;
              if ( !chkVAL ) {
           	//  NS4 javascript support... ugh!
              }
              else if ( chkVAL == byname ) {
                 return tf;
              }
              else if ( partial && chkVAL.substr(0,byname.length) == byname )
              {
                 return tf;
              }
           }
           else {
              if ( tf == fromfld ) {
                 found = 1;
              }
           }
       }
       for ( var j = 0; j < fromdoc.layers.length; j ++ )
       {   
	   for ( var i = 0; i < fromdoc.layers[j].document.anchors.length; i ++ )
	   {  
              if ( found ) {
		   var tf = fromdoc.layers[j].document.anchors[i];
                   var chkVAL = tf.name ? tf.name : tf.id;
		   if ( !chkVAL ) {
           		//  NS4 javascript support... ugh!
           	   }
           	   else if ( chkVAL == byname ) {
		      return tf;
		   }
		   else if ( partial && chkVAL.substr(0,byname.length) == byname )
		   {
		      return tf;
		   }
              }
              else {
                 if ( tf == fromfld ) {
                    found = 1;
                 }
              }
	   }
       }
   } 
   else { 
      return BrowserUtil.nextTAG(fromfld,byname,partial); 
   }
   return null;
}

// -----------------------------
function BrowserUtil_findForm(byname,partial,fromdoc)
{  
   if ( BrowserType.is_dom ) { 
   	return BrowserUtil.findDOM("form",byname,partial,fromdoc); 
   }
   if (BrowserType.is_nav4) { 
       if ( !fromdoc ) fromdoc = document;
       for ( var i = 0; i < fromdoc.forms.length; i ++ )
       {   
       	   var tf = fromdoc.forms[i];
           var chkVAL = tf.name ? tf.name : tf.id;
           if ( !chkVAL ) {
           	//  NS4 javascript support... ugh!
           }
           else if ( chkVAL == byname ) {
              return tf;
           }
           else if ( partial && chkVAL.substr(0,byname.length) == byname )
           {
              return tf;
           }
       }
       for ( var j = 0; j < fromdoc.layers.length; j ++ )
       {   
	   for ( var i = 0; i < fromdoc.layers[j].document.forms.length; i ++ )
	   {  
		   var tf = fromdoc.layers[j].document.forms[i];
                   var chkVAL = tf.name ? tf.name : tf.id;
		   if ( !chkVAL ) {
           		//  NS4 javascript support... ugh!
           	   }
           	   else if ( chkVAL == byname ) {
		      return tf;
		   }
		   else if ( partial && chkVAL.substr(0,byname.length) == byname )
		   {
		      return tf;
		   }
	   }
       }
   } 
   else { 
      return BrowserUtil.findTAG("form",byname,partial,fromdoc); 
   }
   return null;
}

function BrowserUtil_nextForm(fromfld,byname,partial)
{
   if (BrowserType.is_dom) { 
      return BrowserUtil.nextDOM(fromfld,byname,partial); 
   }
   if (BrowserType.is_nav4) {
       var fromdoc = fromfld.document;
       var found = 0;
       for ( var i = 0; i < fromdoc.forms.length; i ++ )
       {   
           if ( found ) {
       	      var tf = fromdoc.forms[i];
              var chkVAL = tf.name ? tf.name : tf.id;
              if ( !chkVAL ) {
           	//  NS4 javascript support... ugh!
              }
              else if ( chkVAL == byname ) {
                 return tf;
              }
              else if ( partial && chkVAL.substr(0,byname.length) == byname )
              {
                 return tf;
              }
           }
           else {
              if ( tf == fromfld ) {
                 found = 1;
              }
           }
       }
       for ( var j = 0; j < fromdoc.layers.length; j ++ )
       {   
	   for ( var i = 0; i < fromdoc.layers[j].document.forms.length; i ++ )
	   {  
              if ( found ) {
		   var tf = fromdoc.layers[j].document.forms[i];
                   var chkVAL = tf.name ? tf.name : tf.id;
		   if ( !chkVAL ) {
           		//  NS4 javascript support... ugh!
           	   }
           	   else if ( chkVAL == byname ) {
		      return tf;
		   }
		   else if ( partial && chkVAL.substr(0,byname.length) == byname )
		   {
		      return tf;
		   }
              }
              else {
                 if ( tf == fromfld ) {
                    found = 1;
                 }
              }
	   }
       }
   } 
   else { 
      return BrowserUtil.nextTAG(fromfld,byname,partial); 
   }
   return null;
}

// -----------------------------
function BrowserUtil_findElement(byform,byname,partial)
{  
   for ( var i = 0; i < byform.elements.length; i ++ )
   {  
      var tf = byform.elements[i];
      var chkVAL = tf.name ? tf.name : tf.id;
      if ( !chkVAL ) {
         //  NS4 javascript support... ugh!
      }
      else if ( chkVAL == byname ) {
         return tf;
      }
      else if ( partial && chkVAL.substr(0,byname.length) == byname )
      {
         return tf;
      }
   }
   return null;
}

function BrowserUtil_nextElement(byform,fromfld,partial)
{
   var found = 0;
   for ( var i = 0; i < byform.elements.length; i ++ )
   {
      var tf = byform.elements[i];
      var chkVAL = tf.name ? tf.name : tf.id;
      if ( found ) {
         if ( !chkVAL ) {
           //  NS4 javascript support... ugh!
         }
         else if ( chkVAL == byname ) {
            return tf;
         }
         else if ( partial && chkVAL.substr(0,byname.length) == byname )
         {
            return tf;
         }
      }
      else if ( tf == fromfld ) {
         found = 1;
      }
   }
   return null;
}

// -------------------------------------------
function noop()
{
}

function BrowserUtil_HtmlArg(line)
{
   var tmp = new String();
   tmp = line;
   // tmp.replace(/?/g,"%3F");
   tmp.replace(/%/g,"%25");
   tmp.replace(/&/g,"%26");
   tmp.replace(/ /g,"%20");
   tmp.replace(/\"/g,"%22");  
   tmp.replace(/;/g,"%3B");
   return tmp;
}

function BrowserUtil_ParseArgs()
{
   var args = new Array();
   var search_str = top.location.search.substring(1, top.location.search.length);
   var args_pairs = search_str.split('\&');
   for (var i=0; i<args_pairs.length; ++i) {
      var args_pair = args_pairs[i];
      var name_val = args_pair.split('=');
      args[name_val[0]] = name_val[1];
   }
   return(args);
}

// -------------------------------------------
function BrowserUtil_setCookie(name, value, expire) 
{   
   document.cookie = name + "=" + escape(value) + ";path=/" + ((expire == null) ? "" : ("; expires=" + expire.toGMTString()));
   return 0;
}

function BrowserUtil_getCookie(Name) 
{   
   var search = Name + "="   
   if (document.cookie.length > 0)
   { 
      // if there are any cookies      
      offset = document.cookie.indexOf(search)       
      if (offset != -1) 
      { 
         // if cookie exists          
         offset += search.length          
         // set index of beginning of value         
         end = document.cookie.indexOf(";", offset)          
         // set index of end of cookie value         
         if (end == -1)             
         {
            end = document.cookie.length         
         }
         return unescape(document.cookie.substring(offset, end))      
      }    
   }
   return "";
}

