///////////////////////////////////////////////////////////////////
//
// MGH Main Javascript Functions
//
//
///////////////////////////////////////////////////////////////////

 ///////////////////////
 //
 ///////////////////////
 function ShowDiv(divid)
 {
    if (document.layers) document.layers[divid].visibility = "show";
    else document.getElementById(divid).style.display = "block";
 } // End 'ShowDiv'


 ///////////////////////
 //
 ///////////////////////
 function HideDiv(divid)
 {
    if (document.layers) document.layers[divid].visibility = "hide";
    else document.getElementById(divid).style.display = "none";
 } // End 'HideDiv'


 ///////////////////////
 // Ajax Shorthand Function
 ///////////////////////
 function $$(id) 
 { 
    return document.getElementById(id); 
 } // End '$$'


 ///////////////////////
 //
 ///////////////////////
 function swapStyle(id, st)
 {
    $$(id).className = st;
 } // End 'swapStyle'


 ///////////////////////
 // Get XML Data Quicker
 ///////////////////////
 function getValue(obj, key) 
 { 
    if (obj.getElementsByTagName(key).item(0).firstChild)
       return obj.getElementsByTagName(key).item(0).firstChild.nodeValue;
    else
       return ""; 
 } // End 'getValue'


 ///////////////////////
 //
 ///////////////////////
 function getRequestStatus()
 {
    if (req.responseXML)
    {
       var _r   = req.responseXML.getElementsByTagName('response');
       var _e   = _r.item(0);
       var err  = getValue(_e, 'error');
       var emsg = getValue(_e, 'errorMsg');

       return new Array(err, emsg);
    }

    return new Array(-1, 0);
 } // End 'getRequestStatus'


 ///////////////////////
 //
 ///////////////////////
 function URLEncode(myText)
 {
    var SAFECHARS = "0123456789" +
                    "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
                    "abcdefghijklmnopqrstuvwxyz" +
                    "-_.!~*'()";
    var HEX = "0123456789ABCDEF";
    var encoded = "";

    for (var i = 0; i < myText.length; i++ ) 
    {
       var ch = myText.charAt(i);

       if (ch == " ") 
       {
          encoded += "+";
       } 
       else if (SAFECHARS.indexOf(ch) != -1) 
       {
          encoded += ch;
       } 
       else 
       {
          var charCode = ch.charCodeAt(0);

          if (charCode > 255) 
          {
             alert("Unicode Character '" + ch 
                 + "' cannot be encoded using standard URL encoding.\n" +
                   "(URL encoding only supports 8-bit characters.)\n" +
                   "A space (+) will be substituted." );

             encoded += "+";
          } 
          else 
          {
             encoded += "%";
             encoded += HEX.charAt((charCode >> 4) & 0xF);
             encoded += HEX.charAt(charCode & 0xF);
          }
       }
    } // for

    return encoded;
 } // End 'URLEncode'


 ///////////////////////
 //
 ///////////////////////
 function URLDecode(myText)
 {
    var HEXCHARS = "0123456789ABCDEFabcdef"; 
    var plaintext = "";
    var i = 0;

    while (i < myText.length) 
    {
       var ch = myText.charAt(i);

       if (ch == "+") 
       {
          plaintext += " ";
          i++;
       } 
       else if (ch == "%") 
       {

          if (i < (encoded.length-2) 
              && HEXCHARS.indexOf(myText.charAt(i+1)) != -1 
              && HEXCHARS.indexOf(emyText.charAt(i+2)) != -1 ) 
          {
             plaintext += unescape( myText.substr(i,3) );
             i += 3;
          } 
          else 
          {
             alert( 'Bad escape combination near ...' + myText.substr(i) );
             plaintext += "%[ERROR]";
             i++;
          }
       } 
       else 
       {
          plaintext += ch;
          i++;
       }
    } // while

    return plaintext;
 } // End 'URLDecode'


 ///////////////////////
 //
 ///////////////////////
 function echeck(str) 
 {
    var at="@";
    var dot=".";
    var lat=str.indexOf(at);
    var lstr=str.length;
    var ldot=str.indexOf(dot);

    if (str.indexOf(at)==-1)
       return false;

    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)
       return false;

    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)
       return false;

    if (str.indexOf(at,(lat+1))!=-1)
       return false;

    if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
       return false;

    if (str.indexOf(dot,(lat+2))==-1)
       return false;

    if (str.indexOf(" ")!=-1)
       return false;

    return true;                                    
 } // End 'echeck'


 ///////////////////////
 //
 ///////////////////////
 function isNumeric(sText)
 {
    var ValidChars = "0123456789";
    var IsNumber=true;
    var Char;
 
    for (i = 0; i < sText.length && IsNumber == true; i++) 
    { 
       Char = sText.charAt(i); 
       if (ValidChars.indexOf(Char) == -1) 
          IsNumber = false;
     }

     return IsNumber;
 } // End 'isNumeric'


 ///////////////////////
 //
 ///////////////////////
 function setCookie(name, value, expires, path, domain, secure) 
 {
    document.cookie = name + '=' + escape(value) +
                      ( (expires) ? ';expires=' + expires.toGMTString() : '') +
                      ( (path) ? ';path=' + path : '') +
                      ( (domain) ? ';domain=' + domain : '') +
                      ( (secure) ? ';secure' : '');
 } // End 'setCookie'


 ///////////////////////
 //
 ///////////////////////
 function readCookie(name) 
 {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i=0;i < ca.length;i++) 
    {
      var c = ca[i];
      while (c.charAt(0)==' ') c = c.substring(1,c.length);
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
 } // End 'readCookie'


 ///////////////////////
 //
 ///////////////////////
 function eraseCookie(name) 
 {
    setCookie(name,"",-1);
 } // End 'eraseCookie'
 
 function _emptyFunction()
 {
    return true;
 } // End '_emptyFunction'