/***********************************************
* This function call is used to add validate that a field is an integer. 
* Example use: validateNumber($(DynamicForms_ShortFieldName))
***********************************************/


function validateNumber(fieldvalue) {
    if (!isNaN(fieldvalue) && (fieldvalue > 0))
        alert('This is a number greater than 0');
    else
        alert('This is not a number greater than 0');
}


/***********************************************
* This function call is used to add two decimal places to a field. For example 50.4 would be returned as 50.40 
* Example use: toTwoDecimals($(DynamicForms_ShortFieldName))
***********************************************/

function toTwoDecimals(n) {
    var s = "" + Math.round(n * 100) / 100
    var i = s.indexOf('.')
    if (i < 0) return s + ".00"
    var t = s.substring(0, i + 1) + s.substring(i + 1, i + 3)
    if (i + 2 == s.length) t += "0"
    return t
}


/***********************************************
* This function call is used to add commas to a number. For example 100000 would be returned as 100,000 
* Example use: addCommas($(DynamicForms_ShortFieldName))
***********************************************/

function addCommas(nStr) {
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}


/***********************************************
* This function call is used to return the value of a radio button. This function can be called for using calculations with radio buttons
* Example use: funcRadioCalc($(ShortFieldName_FieldID))
***********************************************/


function funcRadioCalc(RadioName) {
    var chkList1 = document.getElementById(RadioName);
    var arrayOfCheckBoxes = chkList1.getElementsByTagName("input");
    for (var i = 0; i < arrayOfCheckBoxes.length; i++) {

        if (arrayOfCheckBoxes[i].checked) {
            return arrayOfCheckBoxes[i].value;
        }
    }
}




/***********************************************
* This function call is used to calculate the total number of characters and notify the user that they exceeded their limitations.
***********************************************/


function countChars(dId, txtVal, limit) {
    var totalLen = txtVal.length + 1;

    if (totalLen < limit) {
        document.getElementById(dId).innerHTML = "<font color='red'>You have used " + totalLen + " of " + limit + " characters available.<br>You have " + (limit - totalLen) + " characters remaining.</font>";
    }
    else {
        document.getElementById(dId).innerHTML = "<font color='red'>You have exceeded the character limit for this field.</font>";
    }
}




/***********************************************
* This function call will format the number into a currency format
***********************************************/



function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num))
        num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100;
    num = Math.floor(num / 100).toString();
    if (cents < 10)
        cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + ',' +
num.substring(num.length - (4 * i + 3));
    return (((sign) ? '' : '-') + '$' + num + '.' + cents);
}



function validate_required(field, alerttxt) {
    with (field) {
        if (value == null || value == "") {
            alert(alerttxt); return false;
        }
        else {
            return true;
        }
    }
}
function validate_email(field, alerttxt) {
    with (field) {
        apos = value.indexOf("@");
        dotpos = value.lastIndexOf(".");
        if (apos < 1 || dotpos - apos < 2)
        { alert(alerttxt); return false; }
        else { return true; }
    }
}

function CalculateCheckBoxList(CheckBoxList) {
    var objChkBoxLst = document.getElementById(CheckBoxList);
    if (objChkBoxLst) {
        var objChkBoxes = objChkBoxLst.getElementsByTagName('input');
        var objChkLabels = objChkBoxLst.getElementsByTagName('label');
        var i; var numSum = 0;
        for (i = 0; i < objChkBoxes.length; i++) {
            if (objChkBoxes[i].checked) {
                numSum += GetLabelValue(objChkLabels, objChkBoxes[i].id);
            }
        }
    }
    numSum = Math.round(numSum * 100) / 100;
    return (numSum);
}
function GetLabelValue(objLabelList, strForValue) {
    if (objLabelList) {
        var i; var numActualVal; var strElemForValue;
        for (i = 0; i < objLabelList.length; i++) {
            if (objLabelList[i].htmlFor)
                strElemForValue = objLabelList[i].htmlFor;
            else
                strElemForValue = objLabelList[i].getAttribute('for');
            if (strElemForValue == strForValue) {
                numActualVal = objLabelList[i].innerHTML;
                if (numActualVal.indexOf('$') != -1); 
                {
                    numActualVal = numActualVal.substring(numActualVal.indexOf('$') + 1, numActualVal.length);
                }
                return (numActualVal * 1);
            }
        }
    }
    return (0);
}
function CalculateCheckBoxListValues(CheckBoxList, CheckBoxValField) {
    var objChkBoxLst = document.getElementById(CheckBoxList);
    var objChkBoxVals = document.getElementById(CheckBoxValField);
    var arrChkBoxVals = '';
    if (objChkBoxVals)
        arrChkBoxVals = objChkBoxVals.value.split('|');
    if (objChkBoxLst) {
        var objChkBoxes = objChkBoxLst.getElementsByTagName('input');
        var i; var numSum = 0;
        for (i = 0; i < objChkBoxes.length; i++) {
            if (objChkBoxes[i].checked) {
                numSum += GetCBValue(i, arrChkBoxVals);
            }
        }
    }
    numSum = Math.round(numSum * 100) / 100;
    return (numSum);
}
function GetCBValue(intIndex, arrChkValues) {
    if (arrChkValues) {
        var i;
        var arrTempVals;
        var numRetVal = 0;
        for (i = 0; i < arrChkValues.length; i++) {
            arrTempVals = arrChkValues[i].split(':');
            if (arrTempVals) {
                if (arrTempVals[0] == intIndex) {
                    numRetVal = arrTempVals[1];
                    if (numRetVal.indexOf('$') != -1); 
                    {
                        numRetVal = numRetVal.substring(numRetVal.indexOf('$') + 1, numRetVal.length);
                    }
                    return (numRetVal * 1);
                }
            }
        }
    }
    return (0);
}



/***********************************************
* Hint script - lifted from dynamic drive
***********************************************/

var horizontal_offset = "9px" //horizontal offset of hint box from anchor link

/////No further editting needed

var vertical_offset = "0" //horizontal offset of hint box from anchor link. No need to change.
var ie = document.all
var ns6 = document.getElementById && !document.all

function getposOffset(what, offsettype) {
    var totaloffset = (offsettype == "left") ? what.offsetLeft : what.offsetTop;
    var parentEl = what.offsetParent;
    while (parentEl != null) {
        totaloffset = (offsettype == "left") ? totaloffset + parentEl.offsetLeft : totaloffset + parentEl.offsetTop;
        parentEl = parentEl.offsetParent;
    }
    return totaloffset;
}

function iecompattest() {
    return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body
}

function clearbrowseredge(obj, whichedge) {
    var edgeoffset = (whichedge == "rightedge") ? parseInt(horizontal_offset) * -1 : parseInt(vertical_offset) * -1
    if (whichedge == "rightedge") {
        var windowedge = ie && !window.opera ? iecompattest().scrollLeft + iecompattest().clientWidth - 30 : window.pageXOffset + window.innerWidth - 40
        dropmenuobj.contentmeasure = dropmenuobj.offsetWidth
        if (windowedge - dropmenuobj.x < dropmenuobj.contentmeasure)
            edgeoffset = dropmenuobj.contentmeasure + obj.offsetWidth + parseInt(horizontal_offset)
    }
    else {
        var windowedge = ie && !window.opera ? iecompattest().scrollTop + iecompattest().clientHeight - 15 : window.pageYOffset + window.innerHeight - 18
        dropmenuobj.contentmeasure = dropmenuobj.offsetHeight
        if (windowedge - dropmenuobj.y < dropmenuobj.contentmeasure)
            edgeoffset = dropmenuobj.contentmeasure - obj.offsetHeight
    }
    return edgeoffset
}

function showhint(menucontents, obj, e, tipwidth) {
    if ((ie || ns6) && document.getElementById("hintbox")) {
        dropmenuobj = document.getElementById("hintbox")
        dropmenuobj.innerHTML = menucontents
        dropmenuobj.style.left = dropmenuobj.style.top = -500
        if (tipwidth != "") {
            dropmenuobj.widthobj = dropmenuobj.style
            dropmenuobj.widthobj.width = tipwidth
        }
        dropmenuobj.x = getposOffset(obj, "left")
        dropmenuobj.y = getposOffset(obj, "top")
        dropmenuobj.style.left = dropmenuobj.x - clearbrowseredge(obj, "rightedge") + obj.offsetWidth + "px"
        dropmenuobj.style.top = dropmenuobj.y - clearbrowseredge(obj, "bottomedge") + "px"
        dropmenuobj.style.visibility = "visible"
        obj.onmouseout = hidetip
    }
}

function hidetip(e) {
    dropmenuobj.style.visibility = "hidden"
    dropmenuobj.style.left = "-500px"
}

function createhintbox() {
    var divblock = document.createElement("div")
    divblock.setAttribute("id", "hintbox")
    document.body.appendChild(divblock)
}

if (window.addEventListener)
    window.addEventListener("load", createhintbox, false)
else if (window.attachEvent)
    window.attachEvent("onload", createhintbox)
else if (document.getElementById)
    window.onload = createhintbox


