//////////////////////////////////////////////////////
// KP DHTML Utilities
// Description: Extends cssplib.js functionality
// with browser detection, NN4 resize fix, 
// rollovers, and popup windows
// 
// Critical Mass recommends the removal of comments
// from web files before deploying to a live environment 
// in order to reduce overall file size.
//////////////////////////////////////////////////////

function UA(){
var v = navigator.appVersion.toLowerCase(), u = navigator.userAgent.toLowerCase(), n = navigator.appName;
this.mac = (v.indexOf("mac")+1);
this.win = (v.indexOf("win")+1);
this.nn = (n == "Netscape");
this.ie = (n == "Microsoft Internet Explorer");
this.aol = (u.indexOf("aol")+1);
this.opera = (u.indexOf("opera")+1);
this.ver = (this.ie) ? parseFloat(v.split('msie ')[1]) : parseFloat(v);
this.v4 = (parseInt(v) == 4);
this.os = (this.mac) ? 'mac' : (this.win) ? 'win' : navigator.platform;
this.name = (this.nn) ? 'nn' : (this.ie) ? 'ie' : n;
this.codeName = this.name +'_'+ parseInt(this.ver) + '_'+ this.os;
}
var ua = new UA();
var docloaded = false;

var onloadHandlers = [];
function loadEvents() {
  for(var i=0; i<onloadHandlers.length;i++) {
    eval(onloadHandlers[i]);
  }
docloaded = true;
}
window.onload = loadEvents;

var onresizeHandlers = [];
function resizeEvents() {
 for(var i=0; i<onresizeHandlers.length;i++) {
  eval(onresizeHandlers[i]);
  }
}
window.onresize = resizeEvents;

// legacy function - DO NOT CALL DIRECTLY!!
function getObjByName(name,doc) {
var o = 0;
if(!doc) doc = document;
if(doc[name]) o=doc[name];
if(document.all && doc.all[name]) o=doc.all[name];
  if(o){
  if(!o.getElementsByTagName) o.getElementsByTagName = getElementsArray;
  return o;
  }
if(document.layers) {
  for(var i=0;i < doc.layers.length;i++){
  var lyrdoc = doc.layers[i].document;
  if(lyrdoc[name]) return lyrdoc[name];
    if(lyrdoc.layers.length > 0) {
    var o = getObjByName(name,lyrdoc);
    if(o) return o;
    }
  }
}
return 0;
}
if(!document.getElementById) document.getElementById = getObjByName;
// legacy function - DO NOT CALL DIRECTLY!!
function getElementsArray(el) {
  if(document.layers) {
  var doc = (this == document) ? document : this.document;
    switch(el) {
    case 'img' : return doc.images;
    case 'a' : return doc.links;
    case 'div' : return doc.layers;
    case 'form' : return doc.forms;
    default : return 0;
    }
  }
if(document.all) return this.all.tags(el);
return 0;
}
if(!document.getElementsByTagName) document.getElementsByTagName = getElementsArray;
if(document.layers) Layer.prototype.getElementsByTagName = getElementsArray;

function swapImg() {
if(!document.images) return;
var args = swapImg.arguments;
  for(var i=0;i < args.length;i+=2) {
  var imgSrc = (args[i + 1].indexOf('[') != -1) ? eval(args[i + 1] + '.src') : args[i + 1];
  if(getObjByName(args[i])) getObjByName(args[i]).src = imgSrc;
  }
}

function handleResize(init) {
if(!(ua.nn && ua.v4)) return;
  if(init==true) with (navigator) {
  document.pgW=innerWidth;
  document.pgH=innerHeight;
  onresizeHandlers[onresizeHandlers.length] = 'handleResize()';
  }
  else if (innerWidth!=document.pgW || innerHeight!=document.pgH) location.reload();
}
handleResize(true);

function getWidth(width) {
  if(arguments[1]) {
    if(ua.mac) {
    if(ua.ie && ua.v4) width += 2;
    if(ua.nn) width += 17;
    }
    if(ua.win) {
    width += 16;
    if(ua.aol) width += 20;
    }
  }
  else {
    if(ua.mac) {
    if(ua.ie && ua.v4) width -= 17;
    }
    if(ua.win) {
    if(ua.aol) width += 20;
    }
  }
return width;
}

function getHeight(height) {
  if(arguments[1]) {
    if(ua.mac) {
    if(ua.ie && ua.v4) height -= 15;
    }
    if(ua.win) {
    if(ua.aol) height += 20;
    }
  }
  else {
    if(ua.mac) {
    if(ua.ie && ua.v4) height -= 15;
    }
    if(ua.win) {
    if(ua.aol) height += 20;
    }
  }
return height;
}

function winOpen() {
  var a = arguments;
  var n,f,s,w,h,t,l;
  n = (a[1]) ? a[1] : 'child';
  f = (a[6]) ? a[6].toString() : null;
  s = (f && f.search(/scrollbars=(1|true)/) != -1);
  w = getWidth(a[2],s);
  h = getHeight(a[3],s);
  t = (a[4]) ? a[4] : 0;
  l = (a[5]) ? a[5] : 0;
  child = window.open(a[0],n,'width='+w+',height='+h+',top='+t+',left='+l+',directories=0,'+f);
  //child.location.reload();
  if(child) setTimeout('child.focus()',100);
  window.popupDest = a[0];
  window.setTimeout("testBlocked(child, window.popupDest)", 200);
  if(f && f.search(/temp=(1|true)/) != -1) window.onfocus = function(){ if(window.child) child.close(); child = null };
}

function testBlocked(obj, lnk) {
  if (!obj) {
    location.href = lnk;
  }
}


var remoteOpen = winOpen;
var scrollOpen = winOpen;
var msgWin = winOpen;

function show(div){
if(document.layers) getObjByName(div).visibility = 'show';
else document.getElementById(div).style.visibility = 'visible';
}
function hide(div){
if(document.layers) getObjByName(div).visibility = 'hide';
else document.getElementById(div).style.visibility = 'hidden';
}

var request = new Object();
request.getParameter = function(param) {
var s = window.location.search;
if(!s) return null;
if(!(s.indexOf(param+'=')+1)) return null;
return s.split(param+'=')[1].split('&')[0];
}

var globalFormObj = new Object();

function getFormObj(formname) {
  var formref = (ua.nn && ua.v4) ? window.document.getElementById(formname) : document.forms[formname];
  return formref;
}

function submitForm(formname) {
  var formref = getFormObj(formname);

  formref.submit();

  // Supress multiple clicks
  if (!document.layers) {
    for (i=0; i<document.links.length; i++) {
      if (document.links[i].href.indexOf("submitForm('"+formname)>-1) {
  	    globalFormObj.buttonObj = document.links[i];
      }
    }  
    if (globalFormObj.buttonObj) {
      globalFormObj.oldButHref = globalFormObj.buttonObj.href;
      globalFormObj.buttonObj.href = "#";
	  setTimeout("globalFormObj.buttonObj.href = globalFormObj.oldButHref;",60000);
    }
  } 
}

function resetForm(formname) {
  var formref = getFormObj(formname);
  formref.reset();
}

function submitFormSetParameter(formname, paramValue) {
  var formref = getFormObj(formname);
  
  //window.document.getElementById('form1').event.value = paramValue;
 
  formref.event.value = paramValue;
  formref.submit();
  
  // Supress multiple clicks
  if (!document.layers) {
    for (i=0; i<document.links.length; i++) {
      if (document.links[i].href.indexOf("submitFormSetParameter('"+formname)>-1) {
  	    globalFormObj.buttonObj = document.links[i];
      }
    }  
    if (globalFormObj.buttonObj) {
      globalFormObj.oldButHref = globalFormObj.buttonObj.href;
      globalFormObj.buttonObj.href = "#";
	  setTimeout("globalFormObj.buttonObj.href = globalFormObj.oldButHref;",60000);
    }
  }   
}

function submitFormSetParameterValue(formname, paramValue) {
  var formref = getFormObj(formname);

  formref.event.value = paramValue;
  formref.submit();
  
  // Supress multiple clicks
  if (!document.layers) {
    for (i=0; i<document.links.length; i++) {
      if (document.links[i].href.indexOf("submitFormSetParameterValue('"+formname)>-1) {
  	    globalFormObj.buttonObj = document.links[i];
      }
    }  
    if (globalFormObj.buttonObj) {
      globalFormObj.oldButHref = globalFormObj.buttonObj.href;
      globalFormObj.buttonObj.href = "#";
	  setTimeout("globalFormObj.buttonObj.href = globalFormObj.oldButHref;",60000);
    }
  }     
}



function RObj(ea) {
var LS="";var QS=new Object();var un="undefined";var f="function";var n="number";var r="string";var e1="ERROR: Index out of range in\r\nRequest.QueryString";var e2="ERROR: Wrong number of arguments or invalid property assignment\r\nRequest.QueryString";var e3="ERROR: Object doesn't support this property or method\r\nRequest.QueryString.Key"
function Err(arg) {}
function URID(t) {var d="";if (t) {for (var i=0; i<t.length; ++i) {var c=t.charAt(i);d+=(c=="+" ? " ":c);};};return unescape(d);}
function OL(o) {var l=0;for (var i in o) {if (typeof(o[i])!=f) l++;};return l;}
function AK(key) {var auk=true;for (var u in QS) {if (typeof(QS[u])!=f && u.toString().toLowerCase()==key.toLowerCase()) {auk=false;return u;}};if (auk) {QS[key]=new Object();QS[key].toString=function() {return TS(QS[key])};QS[key].Count=function() {return OL(QS[key])};QS[key].Count.toString=function() {return OL(QS[key]).toString()};QS[key].Item=function(e) {if (typeof(e)==un) return QS[key];else {if (typeof(e)==n) {var a=QS[key][Math.ceil(e)];if (typeof(a)==un) Err(e1 +"(\""+key+"\").Item("+e+")");return a;}else Err("ERROR: Expecting numeric input in\r\nRequest.QueryString(\""+key+"\").Item(\""+e+"\")");}};QS[key].Item.toString=function(e) {if (typeof(e)==un) return QS[key].toString();else {var a=QS[key][e];if (typeof(a)==un) Err(e1+"(\""+key+"\").Item("+e+")");return a.toString();};};QS[key].Key=function(e) {var t=typeof(e);if (t==r) {var a=QS[key][e];return (typeof(a)!=un && a && a.toString() ? e:"");}else Err(e3+"("+(e?e:"")+")");};QS[key].Key.toString=function() {return un};};return key}
function AVTK(key, val) {if (key!="") {var key=AK(key);var l=OL(QS[key]);QS[key][l+1]=val;}}
function TS(o) {var s="";for (var i in o) {var ty=typeof(o[i]);if (ty=="object") s+=TS(o[i]);else if (ty!=f) s+=o[i]+", ";};var l=s.length;if (l>1) return(s.substring(0,l-2));return (s=="" ? un:s);}
function KM(k, o) {var k=k.toLowerCase();for (var u in o) {if (typeof(o[u])!=f && u.toString().toLowerCase()==k) return u;};}
if (window.location && window.location.search) {LS=window.location.search;var l=LS.length;if (l>0) {LS=LS.substring(1,l);var preAmpAt=0;var ampAt=-1;var eqAt=-1;var k=0;var skip=false;for (var i=0; i<l; ++i) {var c=LS.charAt(i);if (LS.charAt(preAmpAt)=="=" || (preAmpAt==0 && i==0 && c=="=")) skip=true;if (c=="=" && eqAt==-1 && !skip) eqAt=i;if (c=="&" && ampAt==-1) {if (eqAt!=-1) ampAt=i;if (skip) preAmpAt=i+1;skip=false;};if (ampAt>eqAt) {AVTK(URID(LS.substring(preAmpAt,eqAt)),URID(LS.substring(eqAt+1,ampAt)));preAmpAt=ampAt+1;eqAt=ampAt=-1;++k;};};if (LS.charAt(preAmpAt)!="=" && (preAmpAt!=0 || i!=0 || c!="=")) {if (preAmpAt!=l) {if (eqAt!=-1) AVTK(URID(LS.substring(preAmpAt,eqAt)),URID(LS.substring(eqAt+1,l)));else if (preAmpAt!=l-1) AVTK(URID(LS.substring(preAmpAt,l)),"");};if (l==1) AVTK(LS.substring(0,1),"");};};};var TC=OL(QS);if (!TC) TC=0
QS.toString=function() {return LS.toString()};QS.Count=function() {return (TC ? TC:0)};QS.Count.toString=function() {return (TC ? TC.toString():"0")};QS.Item=function(e) {if (typeof(e)==un) return LS;else {if (typeof(e)==n) {var e=Math.ceil(e);var c=0;for (var i in QS) {if (typeof(QS[i])!=f && ++c==e) return QS[i];};Err(e1+"().Item("+e+")");}else return QS[KM(e, QS)];};return un;};QS.Item.toString=function() {return LS.toString()};QS.Key=function(e) {var t=typeof(e);if (t==n) {var e=Math.ceil(e);var c=0;for (var i in QS) {if (typeof(QS[i])!=f && ++c==e) return i;}}else if (t==r) {var e=KM(e, QS);var a=QS[e];return (typeof(a)!=un && a && a.toString() ? e:"");}else Err(e2+"().Key("+(e?e:"")+")");Err(e1+"().Item("+e+")");};QS.Key.toString=function() {Err(e2+"().Key");}
this.QueryString=function(k) {if (typeof(k)==un) return QS;else {var k=KM(k, QS);if (typeof(QS[k])==un) {t=new Object();t.Count=function() {return 0};t.Count.toString=function() {return "0"};t.toString=function() {return un};t.Item=function(e) {return un};t.Item.toString=function() {return un};t.Key=function(e) {Err(e3+"("+(e?e:"")+")");};t.Key.toString=function() {return un};return t;}if (typeof(k)==n) return QS.Item(k);else return QS[k];}}
this.QueryString.toString=function() {return LS.toString();};this.QueryString.Count=function() {return (TC ? TC:0)};this.QueryString.Count.toString=function() {return (TC ? TC.toString():"0")};this.QueryString.Item=function(e) {if (typeof(e)==un) return LS.toString();else {if (typeof(e)==n) {var e=Math.ceil(e);var c=0;for (var i in QS) {if (typeof(QS[i])!=f && ++c==e) return QS[i];};Err(e1+".Item("+e+")");}else return QS[KM(e, QS)];}if (typeof(e)==(n)) Err(e1+".Item("+e+")");return un;}
this.QueryString.Item.toString=function() {return LS.toString()};this.QueryString.Key=function(e) {var t=typeof(e);if (t==n) {var e=Math.ceil(e);var c=0;for (var i in QS) {if (typeof(QS[i])=="object" && (++c==e)) {return i;}}}else if (t==r) {var e=KM(e, QS);var a=QS[e];return (typeof(a)!=un && a && a.toString() ? e:"");}else Err(e2+".Key("+(e?e:"")+")");Err(e1+".Item("+e+")");};this.QueryString.Key.toString=function() {Err(e2+".Key");};}
var Request=new RObj(false);

function getDynamicFormLink(partialLink) {
  var formLink = Request.QueryString("formLink");
  var newurl = formLink + partialLink;  
  window.location.href=newurl;
}



function getFirstAvailableApptURL(oldurl) {
                if(ua.nn && ua.v4) {
                                 alert("Your browser appears unable to use the 'Show me the first available appointment link'.  Please use the blue 'Continue' button to proceed.  You may wish to upgrade to a newer version of your browser to avoid this problem in the future.");
                } else {
                                 var formVal = document.makestep1.default_fac.selectedIndex;
                                 var val = document.makestep1.default_fac.options[formVal].value;
                                 var newurl = oldurl + val;
                                 //alert(newurl);
                                 window.location.href=newurl;
                }
}



function numbersonly(myfield, e, dec)
{
var key;
var keychar;

if (window.event)
   key = window.event.keyCode;
else if (e)
   key = e.which;
else
   return true;
keychar = String.fromCharCode(key);

// control keys
if ((key==null) || (key==0) || (key==8) ||
    (key==9) || (key==13) || (key==27) )
   return true;

// numbers
else if ((("0123456789").indexOf(keychar) > -1))
   return true;

// decimal point jump
else if (dec && (keychar == "."))
   {
   myfield.form.elements[dec].focus();
   return false;
   }
else
   return false;
}

// code for HOME dropdown
var qn;
var nn6 = (!document.layers && window.Event);

function isEvent(e,id) {
  var prt,cls,c,src,tgt;
  prt = (document.all)?'parentElement':'parentNode';
  t = (e.type=='mouseover');
  c = function(o) {
    for(var i=0; i<3; i++) {
      if(o && o.id && o.id==id) return o;
      if(o && o[prt]) {
        o = o[prt];
      } else {
        return null;
      }
    }
    return null;
  }
  src = c((window.Event)?e[(t)?'relatedTarget':'currentTarget']:e.fromElement);
  tgt = c((window.Event)?e[(!t)?'relatedTarget':'currentTarget']:e.toElement);
  return (t)?((tgt.opn)?null:tgt):((src && !tgt)?src:null);
}
function nn6Inherit(o,f) {
  var a = o.getElementsByTagName('a');
  for(var i=0; i<a.length; i++) {
    a[i].style.visibility = (f)?'visible':'hidden';
  }
}
function hdlQkNv(evt) {
  var e;
  e = (window.Event)?evt:event;
  o = (document.layers)?e.target:isEvent(e,'HomeBtn');
  if(o==null) return false;
  if(e.type=='mouseover') {
    if(nn6) {
      if(e.layerY < qn.getClipValue('top')) return false;
      nn6Inherit(qn,true);
    }
    swapImg('dd0','image/common/global/global_nav_0_1.gif');
    qn.clipTo(0,91,53,0);
    qn.opn = true;
  } else {
    if(nn6) nn6Inherit(qn,false);
    qn.clipTo(0,91,10,0);
    swapImg('dd0','image/common/global/global_nav_0_0.gif');
    qn.opn = false;
  }
  e.returnValue = false;
}  
function dropDown() {
qn = new csspObj('HomeBtn');
qn.opn = false;
qn.onmouseover = hdlQkNv;
qn.onmouseout = hdlQkNv;
	if(nn6) {
	  qn.clipTo(0,91,10,0);
	  nn6Inherit(qn,false);
	}
}

