//*******************************************************************************
//'* Purpose  : Commonly used Javascript Functions.
//'* Auth     : Paresh Bhurke
//'* Date     : 03-Sep-2004
//'* Author   : Paresh A Bhurke
//'* History      Auth        Date	Description
//'  --------     --------    ------- ---------------------------------------------
//'
//'*******************************************************************************
// Start
function alltrim(strLine) {
    var trimstr = ""
    trimstr = rtrim(ltrim(strLine))
    return trimstr
}

function isScrolledIntoView(elem) {
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    if (elemBottom <= docViewBottom) {
        return 0;
    }

    return (docViewTop + elemBottom - docViewBottom);
}

function ltrim(strLine) {
    var trimstr = ""
    var blkflg = 0
    var len = strLine.length
    for (var i = 0; i <= len - 1; i++) {
        if (strLine.charAt(i) != " ") {

            {
                trimstr = strLine.substring(i, len)
                blkflg = 1
                break
            }
        }
    }
    return trimstr
}

function rtrim(strLine) {
    var trimstr = ""
    var blkflg = 0
    var len = strLine.length - 1
    var i = len
    while (strLine.charAt(i) == " ") { i = i - 1 }
    trimstr = strLine.substring(0, i + 1)
    return trimstr
}

function isblank(objfld) {
    if (alltrim(objfld.value) == "") {
        var objType = objfld.type
        if (objType != 'hidden') {
            objfld.focus()
        }
        return true
    }
    else {
        return false
    }
}

function ispositive(strLineval) {
    var strLine1 = ltrim(rtrim(strLineval))
    if (isnumeric(strLine1)) {
        return (strLine1 > 0 ? true : false)
    }
    else {
        return false
    }
}

function ispositiveGTZero(strLineval) {
    var strLine1 = ltrim(rtrim(strLineval))
    if (isnumeric(strLine1)) {
        return (strLine1 >= 0 ? true : false)
    }
    else {
        return false
    }
}

function ContainOnlyAlphabets(strValue) {
    strValue = strValue.toUpperCase();
    for (i = 0; i < strValue.length; i++) {
        if (strValue.charAt(i) < "A" || strValue.charAt(i) > "Z") {
            return false;
        }
    }
    return true;
}

function isnegative(objfldval) {
    if (isnumeric(objfldval)) {
        return (objfldval < 0 ? true : false)
    }
    else {
        return false
    }
}

function isinteger(objfldval) {
    if (isnumeric(objfldval)) {
        return ((objfldval + "").indexOf(".") >= 0 ? false : true)
    }
    else {
        return false
    }
}

function isnumeric(objfldval) {
    return (isNaN(objfldval) ? false : true)
}

function isreal(strLineval) {
    if (isnumeric(strLineval)) {
        return (strLineval.indexOf(".") < 0 ? false : true)
    }
    else {
        return false
    }
}

function contains(strLine, strLine2) {
    return (strLine.indexOf(strLine2) >= 0 ? true : false)
}

function upper(strLine) {
    return (strLine.toUpperCase())
}

function lower(strLine) {
    return (strLine.toLowerCase())
}
function isEmail(strObject) {
    EStr = alltrim(strObject.value);

    if (EStr.length > 0) {
        var chkEmail = false;
        var RegExp = /(^[^\@,;]*){1,}@(([A-Za-z0-9\-]{2,}[-]{0,1})\.){1,}[A-Za-z]{2,6}$/; ///^([A-Za-z0-9]{1,}[_]{0,}([-_\.&'][A-Za-z0-9]{1,}){0,}){1,}@(([A-Za-z0-9\-]{2,}[-]{0,1})\.){1,}[A-Za-z]{2,6}$/;

        if (RegExp.test(EStr)) {
            chkEmail = true;
        } else {
            chkEmail = false;
        }
        return chkEmail;
    }
    return false;
}

function isValidMobile(mobile) {
    var telNumber = alltrim(mobile);
    var regex = /^(\+|00)[0-9]{8,15}$/;
    return regex.test(telNumber);
}

function CountSelectedItemsInList(listobj) {
    if (listobj != null) {
        var i
        var mulselect = 0
        for (i = 0; i < listobj.length; i++) {
            if (listobj.options[i].selected == true) {
                mulselect = mulselect + 1
            }
        }
        return mulselect
    }
}

function CountSelectedItemsInList(listobj) {
    if (listobj != null) {
        var i
        var mulselect = 0
        for (i = 0; i < listobj.length; i++) {
            if (listobj.options[i].selected == true) {
                mulselect = mulselect + 1
            }
        }
        return mulselect
    }
}

// End



function ShowLayer(sShowElement, aElements) {

    for (var i = 0; i < aElements.length; i++) {

        var dispStatus = document.getElementById(aElements[i]).style.display
        var obj
        if (sShowElement == aElements[i]) {
            obj = document.getElementById(aElements[i])
            obj.style.display = "";
        }
        else {
            document.getElementById(aElements[i]).style.display = "none";
            //this is to reset the other panel elements selected indexes if any
            if (document.getElementById(aElements[i]).hasChildNodes())
                document.getElementById(aElements[i]).firstChild.selectedIndex = 0;

        }
    }
}

//Function for value Trimming

function trim(strTrim) {

    while (strTrim.charAt(0) == " " || strTrim.charAt(eval(strTrim.length - 1)) == " ") {
        if (strTrim.charAt(0) == " ") {
            strTrim = strTrim.slice(1, strTrim.length)
        }
        if (strTrim.charAt(eval(strTrim.length - 1)) == " ") {
            strTrim = strTrim.slice(0, eval(strTrim.length - 1))
        }
    }
    return strTrim
}

//Function for Quote display

function quote(fieldvalue) {

    if (fieldvalue.match(squote) != null) return 0
    else return 1
}

var whitespace = " \t\n\r";

function isEmpty(s) {
    return ((s == null) || (s.length == 0))
}


function isWhitespace(s) {
    var i;
    if (isEmpty(s)) return true;
    for (i = 0; i < s.length; i++) {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1) return false;
    }
    // All characters are whitespace.
    return true;
}


//End


function TrapEnterKey(btn, event) {
    if (document.all) {
        if (event.keyCode == 13) {
            event.returnValue = false;
            event.cancel = true;
            document.getElementById(btn).click();
        }
    }
    else if (document.getElementById) {
        if (event.which == 13) {
            event.returnValue = false;
            event.cancel = true;
            document.getElementById(btn).click();
        }
    }
    else if (document.layers) {
        if (event.which == 13) {
            event.returnValue = false;
            event.cancel = true;
            document.getElementById(btn).click();
        }
    }
}

//****************************************************************************************
//* Function:	 fnCheckEmail 
//* Description: Returns true if the input string is a represents a valid email otherwise false.
//*				 e.g. abc@yahoo.co.in 
//* Added by pravin for EmailProfile Pages
//*****************************************************************************************
function fnCheckEmail(sField) {
    EStr = alltrim(sField);
    var RegExp = /^([0-9a-zA-Z_-]([-.\w]*[0-9a-zA-Z_-])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;
    /*var rx = new RegExp("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
    var matches = rx.exec(value);
    var succ = (matches != null && value == matches[0]);    
    alert(succ);
    return succ;*/

    if (EStr.length > 0) {
        var chkEmail = false;
        if (RegExp.test(EStr)) {
            chkEmail = true;
        }
        else {
            chkEmail = false;
        }
        return chkEmail;
    }
    return false;
}

function textCounter(field, maxlimit, displayfield, evt) {
    if (evt.shiftKey) { //alert(evt.keyCode);
        if ((evt.keyCode < 33 || evt.keyCode > 40) && (field.value.length >= maxlimit)) {
            displayfield.innerHTML = field.value.length + " / " + maxlimit;
            return false;
        }
        displayfield.innerHTML = field.value.length + " / " + maxlimit;
        return true;
    }
    var allowKey = false;
    if ((field.value.length > 0) && (field.value.length < maxlimit))
        allowKey = true;
    else {
        var keyCode = document.layers ? evt.which : evt.keyCode;
        if ((keyCode <= 40 && keyCode != 13 && keyCode != 32) || keyCode == 46)
            allowKey = true;
        else {
            field.value = field.value.substring(0, maxlimit);
            allowKey = field.value.length < maxlimit;
        }
    }
    displayfield.innerHTML = field.value.length + " / " + maxlimit;
    return allowKey;
}


function isDate(dateStr, monthName) {
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat);

    if (matchArray == null) {
        alert(Message8072);
        return false;
    }

    month = matchArray[3];
    day = matchArray[1];
    year = matchArray[5];

    if (year < 1900) {
        alert(Message8108);
        return false;
    }

    if (month < 1 || month > 12) {
        alert(Message8073);
        return false;
    }

    if (day < 1 || day > 31) {
        alert(Message8074);
        return false;
    }

    if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) {
        alert("Month " + monthName + ". doesn't have 31 days!")
        return false;
    }

    if (month == 2) {
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day == 29 && !isleap)) {
            alert("February " + year + " doesn't have " + day + " days!");
            return false;
        }
    }
    return true;
}



function CompareDates(FromDateValue, ToDateValue, CompareOperator) {

    if (FromDateValue.indexOf("-") > -1) {
        FromDateValue = getUSDate(FromDateValue);
    }
    // if passed date is in DD-MMM-YYYY format then change it to mm/dd/yyyy using getUSDate()
    if (ToDateValue.indexOf("-") > -1) {
        ToDateValue = getUSDate(ToDateValue);
    }

    var blnFlag = true
    eval("blnFlag=Date.parse(FromDateValue) " + CompareOperator + " Date.parse(ToDateValue)")
    if (blnFlag == true) {
        return true;
    }
    else {
        if (FromDateValue == "" || ToDateValue == "") {
            return false
        }
        else {
            return false
        }
    }
    return false
}


function getUSDate(strDate) {
    strDateArray = strDate.split("-");
    if (strDateArray.length == 3) {
        strDay = strDateArray[0];
        strMonth = strDateArray[1];
        strYear = strDateArray[2];
        var intMonth = getIntegerMonth(strMonth)
        return intMonth + "/" + strDay + "/" + strYear
    }
    else {
        return strDate
    }

}



function getIntegerMonth(strMonth) {
    var intMonth

    var strMonthArray = new Array(12);
    strMonthArray[0] = "Jan";
    strMonthArray[1] = "Feb";
    strMonthArray[2] = "Mar";
    strMonthArray[3] = "Apr";
    strMonthArray[4] = "May";
    strMonthArray[5] = "Jun";
    strMonthArray[6] = "Jul";
    strMonthArray[7] = "Aug";
    strMonthArray[8] = "Sep";
    strMonthArray[9] = "Oct";
    strMonthArray[10] = "Nov";
    strMonthArray[11] = "Dec";

    for (i = 0; i < 12; i++) {
        if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
            intMonth = i + 1;
            strMonth = strMonthArray[i];
            i = 12;
        }
    }
    if (isNaN(intMonth)) {
        err = 3;
        return false;
    }

    return intMonth
}


