 function addEvent(o,e,f){if(o.addEventListener){o.addEventListener(e,f,true);return true;}else if(o.attachEvent){return o.attachEvent("on"+e,f);}else{return false;}}

 function sendSyncAjax (scriptAndArgs) {
    var xmlhttp;
    if (window.XMLHttpRequest) {  // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
		alert("Your browser does not support XMLHTTP!");
	}
	xmlhttp.open("GET", scriptAndArgs, false);
	xmlhttp.send(null);
	return xmlhttp;
}

//calls the passed scriptAndArgs and populates the passed select object with options based on return values
// expected return from script is pipe-delimited text|value|text|value|...etc for the options
function sendAjaxSelect (scriptAndArgs,obj) {
	var xmlhttp = sendSyncAjax(scriptAndArgs); 
    var i = 0;
    var options = new String(xmlhttp.responseText);
    var ary = options.split("|");
    for (i=0; i<ary.length; i++)
 	  obj.options[obj.options.length] = new Option(ary[i],ary[++i]);
}

function getSelectIndex (sel,val) {
  for(var i=0; i< sel.options.length; i++) {
	if (sel.options[i].value == val) {
	   return i;
	}
  }
  return 0;
}

function clearOption(name, defval) {
	var val = document.getElementsByName(name)[0].value;
	if (val == defval) {
		document.getElementsByName(name)[0].value = '';
	}
}
