var bo_ns_id = 0;

function isIE() { var strBrowser = navigator.userAgent.toLowerCase(); if (strBrowser.indexOf("msie") > -1 && strBrowser.indexOf("mac") < 0) { return true; } else { return false; } }
function startIeFix() { if (isIE()) { document.write('<div id="bo_ns_id_' + bo_ns_id + '"><!-- '); } }
function endIeFix() { if (isIE()) { document.write('</div>'); var theObject = document.getElementById("bo_ns_id_" + bo_ns_id++); var theCode = theObject.innerHTML; theCode = theCode.substring(4 ,9+theCode.indexOf("</object>")); document.write(theCode); } }

function getObject(elementId) { if (document.getElementById) { return document.getElementById(elementId); } else if (document.all) { return document.all[elementId]; } else if (document.layers) { return document.layers[elementId]; } }
function getObjectByName(elementName) { if (document.getElementByName) { return document.getElementByName(elementName); } else if (document.all) { return document.all[elementName]; } else if (document.layers) { return document.layers[elementName]; } }
function getObjectHeight(i) { return i.offsetHeight; }
function getObjectWidth(i)  { return i.offsetWidth;  }
function getObjectLeft(i)   { var curleft = 0; if(i.offsetParent) { while(1) { curleft += i.offsetLeft; if(!i.offsetParent) break; i = i.offsetParent; } } else if(i.x) { curleft += i.x; }	return curleft; }
function getObjectTop(i)    { var curtop  = 0; if(i.offsetParent) { while(1) { curtop  += i.offsetTop;  if(!i.offsetParent) break; i = i.offsetParent; } } else if(i.y) { curtop  += i.y; } return curtop;  }
function getObjectRight(i)  { return getObjectLeft(i) + getObjectWidth(i); }
function getObjectBottom(i) { return getObjectTop(i) + getObjectHeight(i); }

function getObjectsByTagAndClass(tag, cls) { var array = document.getElementsByTagName(tag); var output = new Array(); var matches = 0; for(var i=0;i<array.length;i++) { var parts = array[i].className.split(' '); for(var j=0;j<parts.length;j++) { if(parts[j]==cls) { output[matches++]=array[i]; } } } return output; }
function getTargetFromEvent(e) { if (!e) var e = window.event; if (e.target) var tg = e.target; else if (e.srcElement) var tg = e.srcElement; while (tg.nodeType != 1) tg = tg.parentNode; return tg; }
function getBrowserWidth() { if(window.innerWidth) return window.innerWidth; else if(document.body.clientWidth) return document.body.clientWidth; else return -1; }
function getBrowserHeight() { return document.documentElement.clientHeight; }
function getBodyHeight() { if(document.body.clientHeight) return document.body.clientHeight; else return -1; }
function getBodyWidth() { if(document.body.clientWidth) return document.body.clientWidth; else return -1; }

function checkstr(rex, str) { if (rex == null || rex == "" || str == null || str == "") return false; for (var i=0; i < str.length; i++ )  { if( rex.indexOf(str.substring(i,i+1)) < 0) return false; } return true; }
function checknumeric(num) { if (isNaN(num)) return false; return true; }
function checkchar(str) { if (checkstr('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', str)) return true; return false; }
function checkemail(email) { if (email.length == 0) return false; if (email.indexOf("@") < 0) return false; if (email.indexOf(".") < 0) return false; if (!checkstr('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_-.@', email)) return false; if (email.search(/(\S+)@(\S+)\.(\S+)/) == -1) return false; return true; }
function checkDate(fld) {
    var mo, day, yr;
    var entry = fld.value;
    var reLong = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{4}\b/;
    var reShort = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{2}\b/;
    var valid = (reLong.test(entry)) || (reShort.test(entry));
    if (valid) {
        var delimChar = (entry.indexOf("/") != -1) ? "/" : "-";
        var delim1 = entry.indexOf(delimChar);
        var delim2 = entry.lastIndexOf(delimChar);
        mo = parseInt(entry.substring(0, delim1), 10);
        day = parseInt(entry.substring(delim1+1, delim2), 10);
        yr = parseInt(entry.substring(delim2+1), 10);
        // handle two-digit year
        if (yr < 100) {
            var today = new Date();
            // get current century floor (e.g., 2000)
            var currCent = parseInt(today.getFullYear() / 100) * 100;
            // two digits up to this year + 15 expands to current century
            var threshold = (today.getFullYear() + 15) - currCent;
            if (yr > threshold) {
                yr += currCent - 100;
            } else {
                yr += currCent;
            }
        }
        var testDate = new Date(yr, mo-1, day);
        if (testDate.getDate() == day) {
            if (testDate.getMonth() + 1 == mo) {
                if (testDate.getFullYear() == yr) {
                    // fill field with database-friendly format
                    fld.value = mo + "/" + day + "/" + yr;
                    return true;
                } else {
                    alert("There is a problem with the year entry.");
                }
            } else {
                alert("There is a problem with the month entry.");
            }
        } else {
            alert("There is a problem with the date entry.");
        }
    } else {
        alert("Incorrect date format. Enter as mm/dd/yyyy.");
    }
    return false;
}

function getRadioValue(nm) { var obj = getObjectByName(nm); var val = ""; if (obj != null) { if (typeof(obj.length) != "undefined") { for (var i=0;i<obj.length;i++) { if (obj[i].checked) { val = obj[i].value; break; } } } else { if (obj.checked) val = obj[i].value; } } return val; }
function getCheckValue(nm) { var obj = getObjectByName(nm);	var val = ""; var cnt = 0; if (obj != null) { if (typeof(obj.length) != "undefined") { for (var i=0;i<obj.length;i++) { if (obj[i].checked) { if (cnt == 0) { val += obj[i].value; } else { val += "," + obj[i].value; } cnt++; } } } else { if (obj.checked) val = obj.value; } } return val; }
function setCheckValue(nm, chk) { var checked = false; var obj = getObjectByName(nm); if (obj != null) { if (typeof(obj.length) != "undefined") { for (var i=0;i<obj.length;i++) { if (!obj[i].checked) checked = true; } if (checked) { for (var j=0;j<obj.length;j++) obj[j].checked = chk; }	else { for (var k=0;k<obj.length;k++) obj[k].checked = !chk; } } else { if (obj.checked) { obj.checked = false; } else { obj.checked = true; } } } }
function setCheckValue(p, nm, chk) { var checked = false; var obj = getObjectByName(nm); if (obj != null) { if (typeof(obj.length) != "undefined") { if (p.checked) { for (var i=0;i<obj.length;i++) { obj[i].checked = true; } } else { for (var i=0;i<obj.length;i++) { obj[i].checked = false; } } } else { if (p.checked) { obj.checked = true; } else { obj.checked = false; } } } }

// function from http://www-128.ibm.com/developerworks/kr/library/j-ajax1/index.html
function GetXMLHttpRequest() { var xmlreq = false; if (window.XMLHttpRequest) { xmlreq = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { xmlreq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e1) { try { xmlreq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { } } } return xmlreq; }
function urlDecode(str){ str=str.replace(new RegExp('\\+','g'),' '); return unescape(str); }
function urlEncode(str){ str=escape(str); str=str.replace(new RegExp('\\+','g'),'%2B'); return str.replace(new RegExp('%20','g'),'+'); }
function ShowMain(page, wndname, w, h, scroll)
{
    var x     = (screen.width  - w) / 2;
    var y     = (screen.height - h) / 2;

    y -= 20;

    var param = 'height=' + h + ',width=' + w + ',top=' + y + ',left=' + x + ',scrollbars=' + scroll + ',resizable=no,directories=no,status=no,toolbar=no,menubar=no,location=no';

    var hWnd  = window.open('', wndname, param);

    if (hWnd != null)
        hWnd.location.href = page;

    if (parseInt(navigator.appVersion) >= 4) {
        hWnd.window.focus();
   }
}