function loadXML(url, func, args) {
  var request = false;
  if(window.XMLHttpRequest) {
    request = new XMLHttpRequest();
    if(request.overrideMimeType) request.overrideMimeType('text/xml');
  }
  else if(window.ActiveXObject) {
    try { request = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) {
      try { request = new ActiveXObject("Microsoft.XMLHTTP"); }
      catch (e) {}
    }
  }
  if(!request) {
    alert('Error: could not create XMLHTTP object.');
    return false;
  }
  request.onreadystatechange = function() { eval(func + '(request, args)'); }
  request.open('GET', url, true);
  request.send(null);
}

function winOpen(url, name, width, height, print, loc) { 
    var left = (screen.width - width) / 2;
    var top  = (screen.height - height) / 2;
    var scrollbars = true;
    if (url.search('/stream') == 0) scrollbars = false;
    var attribs = 'left=' + left + ',' +
            'top=' + top + ',' +
            'resizable=yes,statusbar=no,scrollbars=' + (scrollbars ? 'yes' : 'no') + ',' +
            'width=' + width + ',' +
            'height=' + height;
    if (loc) url = url + '?loc=' + window.location;
    var remote = window.open(url, name, attribs);
    if (remote != null)  {
        if (remote.opener == null)
            remote.opener = self;
    }
    if (print) window.print();
    remote.focus();
}

function findPosX (object) {
    var curleft = 0;
    if (object.offsetParent) {
        while (object.offsetParent) {
            curleft += object.offsetLeft
            object = object.offsetParent;
        }
    }
    else if (object.x) {
        curleft += object.x;
    }
    return curleft;
}

function findPosY(object) {
    var curtop = 0;
    if (object.offsetParent) {
        while (object.offsetParent) {
            curtop += object.offsetTop
            object = object.offsetParent;
        }
    }
    else if (object.y) {
        curtop += object.y;
    }
    return curtop;
}

function htmlEscape(text) {
    text = text.replace(/&/g, '&amp;');
    text = text.replace(/</g, '&lt;');
    text = text.replace(/>/g, '&gt;');
    text = text.replace(/"/g, '&quot;');
    return text;
}

function htmlUnEscape(text) {
    text = text.replace(/&quot;/gi, '"');
    text = text.replace(/&gt;/gi, '>');
    text = text.replace(/&lt;/gi, '<');
    text = text.replace(/&amp;/gi, '&');
    return text;
}

function dateFire(event) {
  if (event.keyCode != 46 && event.keyCode != 9) {
    alert('Use the calendar to pick a day!');
    return false;
  }
}

function check_all(form, name, flag) {
  for (var i=0; i<form.elements.length; i++) {
    var e = form.elements[i];
    if (e.type == 'checkbox' && !e.disabled && e.name == name) e.checked = flag;
  }
}
function getScreenHeight() {
  if (window.innerHeight) return window.innerHeight;
  else if (document.documentElement.clientHeight) return document.documentElement.clientHeight;
  else if (window.clientHeight) return window.clientHeight;
  else if (document.body.clientHeight) return document.body.clientHeight;
  else return 0;
}

function getScreenWidth() {
  if (window.innerWidth) return window.innerWidth;
  else if (document.documentElement.clientWidth) return document.documentElement.clientWidth;
  else if (window.clientWidth) return window.clientWidth;
  else if (document.body.clientWidth) return document.body.clientWidth;
  else return 0;
}

function lightbox(formID, contentID, form, focusID) {
  var contactForm  = document.getElementById(formID);
  var screenHeight = getScreenHeight();
  var screenWidth  = getScreenWidth();
  contactForm.className = 'lightbox';

  document.body.style.overflow = 'hidden';
  var formHeight = contactForm.offsetHeight;
  var formWidth  = contactForm.offsetWidth;
  contactForm.style.top  = parseInt((screenHeight - formHeight) / 2) - (formHeight > 200 ? 0 : 100) + 'px';
  contactForm.style.left = parseInt((screenWidth - formWidth) / 2) + 'px';

  document.getElementById(contentID).className = 'disabled';
  if (document.getElementById('chart')) document.getElementById('chart').className = 'hidden';

  if (!form) return;
  for (var i=0; i<form.elements.length; i++) {
    if (form.elements[i].type != 'hidden') {
      form.elements[i].disabled = true;
      if (form.elements[i].type.search(/select/) >= 0) form.elements[i].style.visibility = 'hidden';
    }

  }
  document.getElementById(focusID).focus();
}

function lightboxClose(formID, contentID, form) {
  document.getElementById(formID).className = "hidden";
  document.getElementById(contentID).className = '';
  document.body.style.overflow = 'auto';
  if (document.getElementById('chart')) document.getElementById('chart').className = 'chart';
  if (!form) return;
  for (var i=0; i<form.elements.length; i++) {
    if (form.elements[i].type != 'hidden') {
      form.elements[i].disabled = false;
      if (form.elements[i].type.search(/select/) >= 0) form.elements[i].style.visibility = 'visible';
    }
  }
}



function tooltip ( icon_url, message ) {
/*----------------------------------------------------*/
/* Embeds icon_url into the page and hovering over it 
   will display the tooltip message                   */
/*----------------------------------------------------*/

    document.write( '<span style="z-index:1000" class="tooltext" onMouseOver="javascript:this.className=\'tooltexthover\'" onMouseOut="javascript:this.className=\'tooltext\'"><img src="');
    document.write( icon_url );
    document.write( '"><span>' );
    document.write( message );
    document.write( '</span></span>' );
}

function getStyleClass (className) {
/*----------------------------------------------------*/
/* Based upon a style class, returns the object reference
   to the class and allows the edit of any of the properties.

   Eg.

   getStyleClass('aStyleClass').style.display = 'block';

   Routine pulled from:

   http://www.faqts.com/knowledge_base/view.phtml/aid/2147/fid/128
*/
/*----------------------------------------------------*/
    for (var s = 0; s < document.styleSheets.length; s++) {
        if(document.styleSheets[s].rules) {
            for (var r = 0; r < document.styleSheets[s].rules.length; r++) {
                if (document.styleSheets[s].rules[r].selectorText == '.' + className) {
                    return document.styleSheets[s].rules[r];
                }
            }
        }
        else if(document.styleSheets[s].cssRules) {
            for (var r = 0; r < document.styleSheets[s].cssRules.length; r++) {
            if (document.styleSheets[s].cssRules[r].selectorText == '.' + className)
                return document.styleSheets[s].cssRules[r];
            }
        }
    }
    return null;
}

function toggle_visibility( name ) {
/*----------------------------------------------------*/
    var entity = document.getElementById( name );
    if ( entity.style.visibility != 'visible' ) {
        entity.style.visibility = 'visible';
        entity.style.display = 'block';
    }
    else {
        entity.style.visibility = 'hidden';
        entity.style.display = 'none';
    }
}

function toggle_row( name ) {
/*----------------------------------------------------*/
    var entity = document.getElementById( name );
    if ( entity.style.display != 'table-row' ) {
        entity.style.display = 'table-row';
    }
    else {
        entity.style.display= 'none';
    }
}
function parseHTML(html, value) {
    var parsed = html.replace(/%s/g, value);
    return parsed;
}

