/**
 *
 * MGH Base Javascript Functionality
 *
 */

 // Global AJAX holder
 var req    = null;

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

    return true;
 } // End 'ShowDiv'


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

    return true;
 } // End 'HideDiv'


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


 function swapStyle(id, st)
 {
    $$(id).className = st;

    return true;
 } // 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'


 // Loader Function
 function loadXMLDoc(url, _f)
 {  
    if(window.XMLHttpRequest)
    {
       try
       {
          req = new XMLHttpRequest();
       }
       catch(e)
       {
          req = false;
       }
    }
    else if(window.ActiveXObject)
    {
       try
       {
          req = new ActiveXObject('Msxml2.XMLHTTP');
       }
       catch(e)
       {
          try
          {
             req = new ActiveXObject('Microsoft.XMLHTTP');
          } 
          catch(e)
          {
             req = false;
          }
       }
    }

    if(req)
    {
       req.onreadystatechange = _f;
       req.open('GET', url, true);
       req.send('');
    }

    return true;
 } // End 'loadXMLDoc'

 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 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 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);
 }
