window.omdLoaded = 1;
window.omdInProgress = 0;

//    window.addOnload( foo );
//    window.addOnload( function() { foo(arg); } );
//    window.addOnload( function() { bar(a, b, c); } );

window.addOnload = function (fn) {
    if (!window.OnloadCache) window.OnloadCache = [];
    var ol = window.OnloadCache;
    ol.push( fn );
}

window.onload = function () {
    var ol = window.OnloadCache;
    if (ol)
        for (var x = 0; x < ol.length; x++)
            ol[x]();
}

// START: Because IE5 does not support push.........

function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}

function isFunction(a) {
    return typeof a == 'function';
}

Function.prototype.method = function (name, func) {
    this.prototype[name] = func;
    return this;
};

if (!isFunction(Function.apply)) {
    Function.method('apply', function (o, a) {
        var r, x = '____apply';
        if (!isObject(o)) {
            o = {};
        }
        o[x] = this;
        switch ((a && a.length) || 0) {
        case 0:
            r = o[x]();
            break;
        case 1:
            r = o[x](a[0]);
            break;
        case 2:
            r = o[x](a[0], a[1]);
            break;
        case 3:
            r = o[x](a[0], a[1], a[2]);
            break;
        case 4:
            r = o[x](a[0], a[1], a[2], a[3]);
            break;
        case 5:
            r = o[x](a[0], a[1], a[2], a[3], a[4]);
            break;
        case 6:
            r = o[x](a[0], a[1], a[2], a[3], a[4], a[5]);
            break;
        default:
            alert('Too many arguments to apply.');
        }
        delete o[x];
        return r;
    });
} 

function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}

if (!isFunction(Array.prototype.splice)) {
    Array.method('splice', function (s, d) {
        var max = Math.max,
            min = Math.min,
            a = [], // The return value array
            e,  // element
            i = max(arguments.length - 2, 0),   // insert count
            k = 0,
            l = this.length,
            n,  // new length
            v,  // delta
            x;  // shift count

        s = s || 0;
        if (s < 0) {
            s += l;
        }
        s = max(min(s, l), 0);  // start point
        d = max(min(isNumber(d) ? d : l, l - s), 0);    // delete count
        v = i - d;
        n = l + v;
        while (k < d) {
            e = this[s + k];
            if (!isUndefined(e)) {
                a[k] = e;
            }
            k += 1;
        }
        x = l - s - d;
        if (v < 0) {
            k = s + i;
            while (x) {
                this[k] = this[k - v];
                k += 1;
                x -= 1;
            }
            this.length = n;
        } else if (v > 0) {
            k = 1;
            while (x) {
                this[n - k] = this[l - k];
                k += 1;
                x -= 1;
            }
        }
        for (k = 0; k < i; ++k) {
            this[s + k] = arguments[k + 2];
        }
        return a;
    });
}

if (!isFunction(Array.prototype.push)) {
    Array.method('push', function () {
        this.splice.apply(this,
            [this.length, 0].concat(Array.prototype.slice.apply(arguments)));
        return this.length;
    });
}

// END: Because IE5 does not support push.........

function externalLink( url )
{
   window.open( url, '_blank' );
}

function gs(param1) {
   omdExec( findObj( 'omdControls' ), '', 'gos', param1 );
}

function oo(id,cmd,param1) {
   omdExec( findObj( 'omdControls' ), id, cmd, param1 );
}
function poo(id,cmd,param1) {
   var form	= findObj( 'omdControls' );
   var url	= form.action;
   url		+= '&omdId=' + id + '&omdCmd=' + cmd + '&omdParam=' + param1;
   omdPopup( '', 800, 640, url );
}

function gp(formObj,cmd,param1) {
   omdExec( formObj, '', cmd, param1 );
   return false;
}

function omdExec(formObj,id,cmd,param1)
{
   //if( window.omdInProgress == 1 ) {
      //alert( "Operation in progress - please wait" );
      //return true;
   //} else {
   psForm();	// Make sure that disabled fields are enabled again
      window.omdInProgress = 1;
      formObj.omdCmd.value = cmd;
      formObj.omdParam.value = param1;
      if( id != '' ) {
         if( id == 'null' ) {
            formObj.omdId.value = '';
         } else {
            formObj.omdId.value = id;
         }
      }
      formObj.submit();
   //}
}

function sa(value)
{
   var t = document.getElementsByTagName( "INPUT" );

   for( var i = 0; i < t.length; i++ )
   {
      var d = t[ i ];
      if( d.getAttribute( "type" ) == "checkbox" ) {
         if( d.name.substring( 0, 3 ) == "sel" ) {
            d.checked = value;
         }
      }
   }
}
function fnd(tag,c)
{
   var t = document.getElementsByTagName( tag );
   var d = null;
   for( var i = 0; i < t.length; i++ )
   {
      var x = t[ i ];
      if( x.className == c ) {
         d = x;
      }
   }
   return d;
}
function tog(formObj,cmd,param1)
{
   var d = fnd( 'DIV', param1 );
   var e = fnd( 'SPAN', param1 );
   if( d == null ) return;
   if( e == null ) return;
   if( e.innerHTML == '' ) {
      e.innerHTML = d.innerHTML;
   } else {
      e.innerHTML = '';
   }
}
function treetog(formObj,cmd,param1)
{
   var d = findObj( param1 );
   if( d.style.visibility == 'hidden' )
   {
      d.style.visibility = 'visible';
      d.style.display = 'inline';
   }
   else
   {
      d.style.visibility = 'hidden';
      d.style.display = 'none';
   }
}
function bk(formObj,cmd,param1)
{
   var d = fnd( 'DIV', 'dyn' );
   if( d == null ) return;
   if( d.innerHTML != '' ) {
      if( formObj.bulk.value == '' ) {
         d.innerHTML = '';
      } else {
         gp( formObj,cmd, param1 );
      }
   } else {
      d.innerHTML = 'Enter your data in the box below, using newlines to separate records and , to separate fields, then click "Import" again.<br><textarea name="bulk" rows=7 cols=50></textarea>';
   }
}
function omdPopup( title, width, height, url ) {
   newLeft	= parseInt( ( screen.width - width ) / 2 );
   newTop	= parseInt( ( screen.height - height ) / 2 );
   var win = window.open( url,
      '_blank',
      "toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=" + width + ",height=" + height + ",left=" + newLeft + ",top=" + newTop
                        );
   win.focus();

   return win;
}
function openWindow( url, opts, focus ) {
   var win = window.open(url, "help", "scrollbars=yes,height=400" + opts );
   if( focus ) {
      win.focus();
   }
   return win;
}
function onCnO( formObj, cmd, param1 ) {
   var i = formObj.selectedIndex;
   if( formObj[ i ].value == '**omdNew**' ) {
      var form	= findObj( 'omdControls' );
      var url	= form.action;
      url	+= '&omdPop=2&omdCmd=' + cmd + '&omdParam=' + param1;
      var win	= omdPopup( '', 800, 640, url );
      window.omdPostPop	= formObj;
   }
}
function pickList() {
   var win = window.open( "http://www.evntz.com/scripts/omd.pl?job=BigList", "omd", "scrollbars=yes" );
   win.focus();
}
// Not used, included as an example of how to do it properly.
//function setsize( table, col, size ) {
   //var mybody=document.getElementsByTagName("body").item(0);
   //var mytable=mybody.getElementsByTagName("table").item(table);
   //var mytablehead=mytable.getElementsByTagName("thead").item(0);
   //var myrow=mytablehead.getElementsByTagName("tr").item(0);
   //var mycel=myrow.getElementsByTagName("td").item(col);

   //mycel.setAttribute("width",size);
     
//}
function findObj(n, d) {
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

// based on script from JavaScript Kit www.javascriptkit.com
// but with some bugs fixed
var dragapproved=false
var z,x,y
function move(){
   if (event.button==1&&dragapproved){
      z.setAttribute("width", temp1+event.clientX-x );
      return false;
   }
   document.onmousemove=null;	// otherwise remains in place for ever
}
function drags(){
   if (!document.all)
      return
   if (event.srcElement.className=="drag"){
      dragapproved=true;
      z=event.srcElement;
      temp1=z.offsetWidth;
      x=event.clientX;
      document.onmousemove=move;
   }
}
document.onmousedown=drags
document.onmouseup=new Function("dragapproved=false")

function requirePsForm()
{
   var t = document.getElementsByTagName( "FORM" );
   for( var i = 0; i < t.length; i++ )
   {
      if( ! t[ i ].onsubmit ) {
         t[ i ].onsubmit = function () { psForm(); }
      }
   }
}

function psForm()
{
   var t = document.getElementsByTagName( "INPUT" );
   for( var i = 0; i < t.length; i++ )
   {
      t[ i ].disabled = '';
   }
   return 1;
}

function initForm() {
   var t;
   var s = true;
   var f = 1;
   var inputs = getSearchAsArray();

   do {
      if( f == 1 ) {
         t = document.getElementsByTagName( "INPUT" );
      } else if( f == 2 ) {
         t = document.getElementsByTagName( "TEXTAREA" );
      }
      f++;
      for( var i = 0; i < t.length; i++ )
      {
         var d = t[ i ];
         var n = d.name.substr( 8 );
         if( inputs[ n ] ) {
            if( d.type == "checkbox" ) {
               if( d.value == "on" ) {
                  d.checked = true;
               } else {
                  if( inputs[ n ].indexOf( d.value ) >= 0 ) {
                     d.checked = true;
                  }
               }
            } else {
               d.value = inputs[ n ];
            }
         }
      }
   } while( f < 3 );

   t = document.getElementsByTagName( "SELECT" );
   for( var i = 0; i < t.length; i++ )
   {
      var d = t[ i ];
      var n = d.name.substr( 8 );
      if( inputs[ n ] ) {
         setSelectByValue( d, inputs[ n ], false );
      }
   }

   var messageSpan	= document.getElementById( "omdMess" );
   if( messageSpan ) {
      if( inputs[ 'omdMess' ] ) {
         messageSpan.innerHTML	= inputs[ 'omdMess' ];
      }
   }
}

function getSearchAsArray() {
   var minNav3 = (navigator.appName == "Netscape" && 
      parseInt(navigator.appVersion) >= 3);
   var minIE4 = (navigator.appName.indexOf("Microsoft") >= 0 && 
      parseInt(navigator.appVersion) >= 4);
   var minDOM = minNav3 || minIE4;   // Baseline DOM required for this function
   var results = new Array();
   if (minDOM) {
      var input = unescape(location.search.substr(1));
      if (input) {
         var srchArray = input.split("&");
         var tempArray = new Array();
         for (i = 0; i < srchArray.length; i++) {
            tempArray = srchArray[i].split("=");
            results[tempArray[0]] = tempArray[1];
         }
      }
   }
   return results;
}

function setSelectByValue( select, value, multiple ) {
   for( var i = 0; i < select.options.length; i++ ) {
      if( select.options[ i ].value == value ) {
         if( select.selectedIndex != i ) {
            select.selectedIndex = i;
         }
      }
   }
}

function findParentForm( element )
{
   if ( element.tagName.toUpperCase() == "FORM" )
   {
      return element;
   }
   if ( element.tagName.toUpperCase() != "BODY" )
   {
      return findParentForm( element.parentNode );
   }
   return null;
}
