
//generic ajax and event handling functions
function getHTTPObject() {
  var xhr = false;
  if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    try {
      xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        xhr = false;
      }
    }
  }
  return xhr;
}


addLoadEvent(linkLogoToHomePage)


function linkLogoToHomePage(){

  addEvent(document.getElementById("logo"), "click", goToHomePage, false)
  document.getElementById("logo").title="Hyperion Home Page"

}

function goToHomePage(){
  document.location='index.asp'
}


function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  }
  else
  {
    window.onload = function() {
      func();
      oldonload();
     }
  }
}

function addEvent(obj, evType, fn, useCapture){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert(obj.id +"Handler could not be attached");
  }
}




function removeEvent(obj, evType, fn, useCapture){
  if (obj.removeEventListener){
    obj.removeEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.detachEvent){
    var r = obj.detachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be removed");
  }
}


function stopTheRest(e){
  if (window.event){
    window.event.cancelBubble = true;
    window.event.returnvalue = false;
  }
  if (e && e.stopPropagation && e.preventDefault){
    e.stopPropagation();
    e.preventDefault();
  }
  else
  {
  return false;
  }
}

function extractEl(e){

  var el;
  if (window.event && window.event.srcElement)
    el = window.event.srcElement;
  if (e && e.target)
    el = e.target;
  if(!el)
    return;
  return el;
}



//POST functions
function prepareForm(source,destination,file){

  if(!document.getElementById) {
    return;
  }
  if(!document.getElementById(source)) {
    return;
  }
  //this still uses onsubmit
  document.getElementById(source).onsubmit = function() {
    var data = "";
    for (var i=0; i<this.elements.length; i++) {
      data+= this.elements[i].name;
      data+= "=";
      data+= escape(this.elements[i].value);
      data+= "&";
    }
    data+= "blnAjax=Yes&"
    return !sendData(source,destination,file,data);
  };

}

function sendData(source,destination,file,data) {
  var request = getHTTPObject();
  if (request) {
    request.onreadystatechange = function() {
      parseResponse(source,destination,file,request);
    };
    request.open( "POST", file, true );
    request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    request.send(data);
    return true;
  } else {
    return false;
  }
}


function parseResponse(source,destination,file,request) {
  if (request.readyState == 4) {
    if (request.status == 200 || request.status == 304) {
      var container = document.getElementById(destination);
      container.innerHTML = request.responseText;
      
      prepareForm(source,destination,file);

    }
  }
}




//GET functions
function grabFile(destination,file) {
  var request = getHTTPObject();
  if (request) {
    request.onreadystatechange = function() {
      displayResponse(destination,request);
    };
    fltRandomNumber = Math.random();
    request.open("GET", file + "&fltDummy=" + fltRandomNumber, true);
    request.send(null);
  }
}




function displayResponse(destination,request) {
  if (request.readyState == 4) {

    if (request.status == 200 || request.status == 304) {
      document.getElementById(destination).innerHTML = request.responseText;
    }
  }
}


//CLASS functions


function hasClass(target, classValue)
{
	var pattern = new RegExp("(^| )" + classValue + "( |$)");

	if (target.className.match(pattern))
	{
		return true;
	}

	return false;
};




function addClass(target, classValue)
{
	if (!hasClass(target, classValue))
	{
		if (target.className == "")
		{
			target.className = classValue;
		}
		else
		{
			target.className += " " + classValue;
		}
	}

	return true;
};




function removeClass(target, classValue)
{
	var removedClass = target.className;
	var pattern = new RegExp("(^| )" + classValue + "( |$)");

	removedClass = removedClass.replace(pattern, "$1");
	removedClass = removedClass.replace(/ $/, "");

	target.className = removedClass;

	return true;
};


//DOM Builder

DomBuilder = {
  apply : function(o) { 
    o = o || {};
    var els = ("p|div|span|strong|em|img|table|tr|td|th|thead|tbody|tfoot|pre|code" + 
    "|h1|h2|h3|h4|h5|h6|ul|ol|li|form|input|textarea|legend|fieldset|" + 
    "select|option|blockquote|cite|br|hr|dd|dl|dt|address|a|button|abbr|acronym|" +
    "script|link|style|bdo|ins|del|object|param|col|colgroup|optgroup|caption|" + 
    "label|dfn|kbd|samp|var|iframe").split("|");
    var el, i=0;
    while (el = els[i++]) o[el.toUpperCase()] = DomBuilder.tagFunc(el);{
     return o;
     }
    },
    tagFunc : function(tag) {
      return function() {
      var a = arguments, at, ch; a.slice = [].slice; if (a.length>0) { 
        if (a[0].nodeName || typeof a[0] == "string") ch = a; else { at = a[0]; ch = a.slice(1); }
        }
        return DomBuilder.elem(tag, at, ch)
      }
    },
    elem : function(e, a, c) {
      a = a || {}; c = c || [];
      var el = document.createElement(e);
      for (var i in a) if (typeof a[i] != 'function') el.setAttribute(i, a[i]);
	for (var i=0; i<c.length; i++) {
	if (typeof c[i] == 'string') c[i] = document.createTextNode(c[i]);
	el.appendChild(c[i]);
	} 
	return el;
    }
}


//SUCKER FISH
sfFocus = function() 
{
  var sfEls = document.getElementsByTagName("INPUT");
  for (var i=0; i<sfEls.length; i++) 
  {
    if (sfEls[i].className != "pushbutton")
    {
      sfEls[i].onfocus=function() 
      {
        this.className+=" sffocus";
        frmMain.btn_Submit.disabled = false; 
        frmMain.btn_Cancel.disabled = false; 
      }
      sfEls[i].onblur=function() 
      {
        this.className=this.className.replace(new RegExp(" sffocus\\b"), "");
      }
    }
  }
  //not too sure about this
  var sfEls = document.getElementsByTagName("SELECT");
  for (var i=0; i<sfEls.length; i++) 
  {
    if (sfEls[i].className != "pushbutton")
    {
      sfEls[i].onfocus=function() 
      {
        this.className+=" sffocus";
        frmMain.btn_Submit.disabled = false; 
        frmMain.btn_Cancel.disabled = false; 
      }
      sfEls[i].onblur=function() 
      {
        this.className=this.className.replace(new RegExp(" sffocus\\b"), "");
      }
    }
  }
}
if (window.attachEvent) window.attachEvent("onload", sfFocus);

    addLoadEvent(addImageMouseovers);
    function addImageMouseovers(){
      if (document.getElementById("next")){
        addEvent(document.getElementById("next"),"mouseover",nextMouseover,false);
        addEvent(document.getElementById("next"),"mouseout",nextMouseout,false)
      }
      if (document.getElementById("previous")){
        addEvent(document.getElementById("previous"),"mouseover",previousMouseover,false);
        addEvent(document.getElementById("previous"),"mouseout",previousMouseout,false)
      }
    }
    
    function nextMouseover(){
      document.getElementById("next").src="../WebImages/NextSelected.png"
    }
    function nextMouseout(){
      document.getElementById("next").src="../WebImages/Next.png"
    }
    function previousMouseover(){
      document.getElementById("previous").src="../WebImages/PreviousSelected.png"
    }
    function previousMouseout(){
      document.getElementById("previous").src="../WebImages/Previous.png"
    }
    