
function fixRadioCheck() {
    // Firefox compatible
    elm = document.getElementsByTagName("INPUT");

    for (i = 0; i < elm.length - 1; ++i) {
        if (elm[i].type == 'checkbox' || elm[i].type == 'radio') {
            elm[i].style.border = '0';
        }
    }
}
// ********************** 	 DateDiff *******************************************
function DateDiff(startDate, endDate, dateFormat) {
    var startArr = startDate.split('/');
    var endArr = endDate.split('/');
    var stDate, enDate;
    var retVal;
    var pFromNumber, pToNumber;
    var number;

    if (dateFormat == 'dd/mm/yyyy') {
        stDate = startArr[1] + '/' + startArr[0] + '/' + startArr[2];
        enDate = endArr[1] + '/' + endArr[0] + '/' + endArr[2];
    }
    else {
        stDate = startDate;
        enDate = endDate;
    }

    pFromNumber = Date.parse(stDate);
    pToNumber = Date.parse(enDate);

    number = pToNumber - pFromNumber;
    retVal = parseInt(number / 86400000);
    return retVal;
}


/**** scrolled messages in status bar ***/

var scroll_TimerID;
var scroll_Enabled;
var scroll_Msg;

function startScrollStatus(msg) {
    scroll_Enabled = true;
    scroll_Msg = msg;
    scrollit(10)
}

function stopScrollStatus() {
    scroll_Enabled = false;
    window.clearTimeout(scroll_TimerID);
    window.status = "";
}

function scrollit(seed) {
    if (!scroll_Enabled) return;

    var out = " ";
    var c = 1;
    var cmd;

    if (seed > 100) {
        seed--;
        cmd = 'scrollit(' + seed + ')';
        scroll_TimerID = window.setTimeout(cmd, 100);
    }
    else if (seed <= 100 && seed > 0) {
        for (c = 0; c < seed; c++) {
            out += ' ';
        }
        out += scroll_Msg;
        seed--;
        window.status = out;
        cmd = 'scrollit(' + seed + ')';
        scroll_TimerID = window.setTimeout(cmd, 100);
    }
    else if (seed <= 0) {
        if (-seed < scroll_Msg.length) {
            out += scroll_Msg.substring(-seed, scroll_Msg.length);
            seed--;
            window.status = out;
            cmd = 'scrollit(' + seed + ')';
            scroll_TimerID = window.setTimeout(cmd, 100);
        }
        else {
            window.status = ' ';
            scroll_TimerID = window.setTimeout('scrollit(100)', 75);
        }
    }
}


function disableInputTags(obj, flag) {
    var i;
    var all_INPUT = obj.getElementsByTagName("INPUT");
    for (i = 0; i < all_INPUT.length; i++) {
        all_INPUT[i].disabled = flag;
    }
}


//31/07/05 open a window in the center of the screen
function openwindowcenter(sUrl, iWidth, iHeight, sParams) {
    var s;
    var h = (screen.availHeight - iHeight) / 2;
    var l = (screen.availWidth - iWidth) / 2;
    s = "top=" + h.toString();
    s = s + ",left=" + l.toString();
    s = s + ",height=" + iHeight.toString();
    s = s + ",width=" + iWidth.toString();
    s = s + "," + sParams;
    window.open(sUrl, "", s);
}


// remove leading spaces
function stringLeftTrim(s) {
    return (typeof (s) != "string") ? null : s.replace(/^ +/, "");
}

// remove trailing spaces
function stringRightTrim(s) {
    return (typeof (s) != "string") ? null : s.replace(/ +$/, "");
}

// remove leading and trailing spaces
function stringTrim(s) {
    return stringRightTrim(stringLeftTrim(s));
}

// v2.23.01 - rafi
// check/uncheck all checkboxes in a control
// chk: checkbox.checked , 
//v2.64.01 - boaz : check/unchek just at ebabled mode
function ReverseCheckAll(chk, containerName, doc, filterPattern) {
    var allInputs;
    allInputs = doc.getElementById(containerName).getElementsByTagName('input');
    for (i = 0; i < allInputs.length; i++) {
        o = allInputs[i];
        try {
            if (filterPattern == undefined) {
                if (o.type == "checkbox" && o.disabled == false) {
                    o.checked = chk;
                }
            }
            else {
                if (o.type == "checkbox" && o.id.indexOf(filterPattern) != -1 && o.disabled == false) {
                    o.checked = chk;
                }
            }
        }
        catch (er) {
        }
    }

}

// incremental lookup in list

function lookupItem(el, dest) {
    var isDHTML = true;

    if (!isDHTML) {
        el.blur();
        el.focus(); //depending on browser type
    }

    var curValue = el.value.toLowerCase()
    var found = false
    var index = dest.selectedIndex
    var numOptions = dest.options.length
    var pos = 0

    if (curValue != "") {
        while ((!found) && (pos < numOptions)) {
            search_str = dest.options[pos].text.toLowerCase()

            found = (search_str.indexOf(curValue) == 0)
            if (found)
                index = pos

            pos++
        }
    }
    else
        dest.selectedIndex = pos

    el.focus();
    if (found)
        dest.selectedIndex = index
}

function ValidateDigits(evt) {
    //only digits alowed for this input
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    return true;
}

//v2.60.01 - boaz: if the element's string matches the regular expression it is numbers and letters
function isAlphanumeric(evt) {
    var key = (evt.which) ? evt.which : evt.keyCode;
    var keyName = String.fromCharCode(key);
    if (!keyName.match(/^[0-9a-zA-Z]+/)) {
        return false;
    }
    return true;
}

//v2.60.01 - boaz: if the element's string matches the regular expression it is numbers and letters
function isAlphanumericUpper(evt) {
    var key = (evt.which) ? evt.which : evt.keyCode;
    var keyName = String.fromCharCode(key);
    if (!keyName.match(/^[0-9A-Z]+/)) {
        return false;
    }
    return true;
}


//v2.53.1 boaz : Adding generic function that returns the modal dialog features
function GroupHierarchyDialogFeatures() {
    return "dialogHeight:600px;dialogWidth:450px;center:yes;help:no;resizable:yes; status:no;scroll:0"
}


function centerElementOnScreen(elementName) {
    var element = document.getElementById(elementName)
    if (!element) return;
    var scrollTop = document.body.scrollTop;
    var scrollLeft = document.body.scrollLeft;
    var viewPortHeight = document.body.clientHeight;
    var viewPortWidth = document.body.clientWidth;
    if (document.compatMode == "CSS1Compat") {
        viewPortHeight = document.documentElement.clientHeight;
        viewPortWidth = document.documentElement.clientWidth;
        scrollTop = document.documentElement.scrollTop;
        scrollLeft = document.documentElement.scrollLeft;
    }
    var topOffset = Math.ceil(viewPortHeight / 2 - element.offsetHeight / 2);
    var leftOffset = Math.ceil(element.offsetWidth / 2);
    var top = scrollTop + topOffset; // - 40;
    var left = scrollLeft + leftOffset; // - 70;
    element.style.position = "absolute";
    element.style.top = top + "px";
    element.style.left = left + "px";
}

/*
v2.68 - rafi: good for single child within each element. for example:
<td><span><font><b>text here</b></font></span></td>
it return a reference to elemts <b>
*/
function findMostInnerElement(root) {
    if (root.childNodes.length == 0) return root;
    return findMostInnerElement(root.childNodes[0]);
}
