/*
   file: utility.js
   usage: utility javascript file
   created: October 12, 2009
   author: Calvin Chan
   copyright: Total Website Solutions Inc
*/

// adopted from Sons of Suckerfish
sfHover = function() {
  var objMenuh = document.getElementById("menuh");

  if ( objMenuh != null ) {
    var sfEls = objMenuh.getElementsByTagName("LI");
    for (var i=0; i<sfEls.length; i++) {
      sfEls[i].onmouseover=function() {
        this.className+=" sfhover";
      }
      sfEls[i].onmouseout=function() {
        this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
      }
    }
  }
}

function setWindowHeight()
{
  var mainDiv = document.getElementById("mainbody");
  var contentDiv = document.getElementById("maincontent");
  var winHeight = 0;
  var winWidth = 0;

  if ( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    winWidth = window.innerWidth;
    winHeight = window.innerHeight;
  } else if ( document.documentElement && 
              ( document.documentElement.clientWidth || 
                document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    winWidth = document.documentElement.clientWidth;
    winHeight = document.documentElement.clientHeight;
  } else if ( document.body && 
              ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    winWidth = document.body.clientWidth;
    winHeight = document.body.clientHeight;
  }

  var divHeight = winHeight - 190;

  contentDiv.style.maxHeight = "" + divHeight + "px";

  // center window horizontally
  var newSpace = winWidth - 980;
  var newGap = 0;

  if ( newSpace > 0 ) {
    newGap = newSpace / 2;
  }
  mainDiv.style.left = "" + newGap + "px";
}

function show_text( htmlText, elemName )
{
  document.getElementById(elemName).innerHTML = htmlText;
}

function contactFormResponse() 
{
  var dataStr;
  var form = document.EmailForm;
    
  form.submit.blur();
  form.submit.disabled = true;
  dataStr = form.elements[0].name;
  dataStr += "=";
  dataStr += encodeURIComponent(form.elements[0].value);
  for ( var i = 1; i < form.elements.length; i++ ) 
  {
      dataStr += "&";
      dataStr += form.elements[i].name;
      dataStr += "=";
      dataStr += encodeURIComponent(form.elements[i].value);
  }
    
  postDataGetText( 'cgi-bin/contact.cgi', dataStr, show_text, "maincontent" );
}

/*
                   Ajax Utility JavaScript Library

  This library supports these functions: 

  getText(urlToCall, functionToCallBack) 
    Uses the GET method to get text from the server. 

  getXml(urlToCall, functionToCallBack) 
    Uses the GET method to get XML from the server. 

  postDataReturnText(urlToCall, dataToSend, functionToCallBack) 
    Uses the POST method to send dataToSend to server, gets text back. 
    Pass the data to send in parameter/value pairs like this: "value=100".

  postDataReturnXml(urlToCall, dataToSend, functionToCallBack) 
    Uses the POST method to send dataToSend to server, gets XML back. 
    Pass the data to send in parameter/value pairs like this: "value=100".

*/

function getText(urlToCall, functionToCallBack, elemName)
{ 
  var XMLHttpRequestObject = false; 

  if (window.XMLHttpRequest) {
    XMLHttpRequestObject = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    XMLHttpRequestObject = new 
     ActiveXObject("Microsoft.XMLHTTP");
  }

  if(XMLHttpRequestObject) {
    XMLHttpRequestObject.open("GET", urlToCall); 

    XMLHttpRequestObject.onreadystatechange = function() 
    { 
      if (XMLHttpRequestObject.readyState == 4 && 
        XMLHttpRequestObject.status == 200) { 
          functionToCallBack(XMLHttpRequestObject.responseText, elemName); 
          delete XMLHttpRequestObject;
          XMLHttpRequestObject = null;
      } 
    } 

    XMLHttpRequestObject.send(null); 
  }
}

function getXml(urlToCall, functionToCallBack, elemName)
{ 
  var XMLHttpRequestObject = false; 

  if (window.XMLHttpRequest) {
    XMLHttpRequestObject = new XMLHttpRequest();
    XMLHttpRequestObject.overrideMimeType("text/xml");
  } else if (window.ActiveXObject) {
    XMLHttpRequestObject = new 
     ActiveXObject("Microsoft.XMLHTTP");
  }

  if(XMLHttpRequestObject) {
    XMLHttpRequestObject.open("GET", urlToCall); 

    XMLHttpRequestObject.onreadystatechange = function() 
    { 
      if (XMLHttpRequestObject.readyState == 4 && 
        XMLHttpRequestObject.status == 200) { 
          functionToCallBack(XMLHttpRequestObject.responseXML, elemName); 
          delete XMLHttpRequestObject;
          XMLHttpRequestObject = null;
      } 
    } 

    XMLHttpRequestObject.send(null); 
  }
}

function postDataGetText(urlToCall, dataToSend, functionToCallBack, elemName)
{ 
  var XMLHttpRequestObject = false; 

  if (window.XMLHttpRequest) {
    XMLHttpRequestObject = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    XMLHttpRequestObject = new 
     ActiveXObject("Microsoft.XMLHTTP");
  }

  if(XMLHttpRequestObject) {
    XMLHttpRequestObject.open("POST", urlToCall); 
    XMLHttpRequestObject.setRequestHeader('Content-Type', 
      'application/x-www-form-urlencoded'); 

    XMLHttpRequestObject.onreadystatechange = function() 
    { 
      if (XMLHttpRequestObject.readyState == 4 && 
        XMLHttpRequestObject.status == 200) {
          functionToCallBack(XMLHttpRequestObject.responseText, elemName); 
          delete XMLHttpRequestObject;
          XMLHttpRequestObject = null;
      } 
    }

    XMLHttpRequestObject.send(dataToSend); 
  }
}

function postDataGetXml(urlToCall, dataToSend, functionToCallBack, elemName)
{ 
  var XMLHttpRequestObject = false; 

  if (window.XMLHttpRequest) {
    XMLHttpRequestObject = new XMLHttpRequest();
    XMLHttpRequestObject.overrideMimeType("text/xml");
  } else if (window.ActiveXObject) {
    XMLHttpRequestObject = new 
     ActiveXObject("Microsoft.XMLHTTP");
  }

  if(XMLHttpRequestObject) {
    XMLHttpRequestObject.open("POST", urlToCall); 
    XMLHttpRequestObject.setRequestHeader('Content-Type', 
      'application/x-www-form-urlencoded'); 

    XMLHttpRequestObject.onreadystatechange = function() 
    { 
      if (XMLHttpRequestObject.readyState == 4 && 
        XMLHttpRequestObject.status == 200) {
          functionToCallBack(XMLHttpRequestObject.responseXML, elemName); 
          delete XMLHttpRequestObject;
          XMLHttpRequestObject = null;
      } 
    }

    XMLHttpRequestObject.send(dataToSend); 
  }
}


