//<SCRIPT LANGUAGE="JavaScript">
<!--
// Genaral validation functions

var digits = "0123456789";
var phoneNumberDelimiters = "()- ";
var validPhoneChars = digits + phoneNumberDelimiters;
// whitespace characters
var whitespace = " \t\n\r";

// WORKAROUND FUNCTION FOR NAVIGATOR 2.0.2 COMPATIBILITY.
// The below function *should* be unnecessary.  In general,
// avoid using it.  Use the standard method indexOf instead.
// However, because of an apparent bug in indexOf on
// Navigator 2.0.2, the below loop does not work as the
// body of LTrim:
// while ((i < s.length) && (whitespace.indexOf(s.charAt(i)) != -1))
//   i++;
//
// ... so we provide this workaround function charInString
// instead.
//
// Returns true if single character c (actually a string)
// is contained within string s.
function charInString(c, s) {
        var i
        for (i = 0; i < s.length; i++) {
                if (s.charAt(i) == c) return true
        }
        return false
}

// Removes initial (leading) whitespace characters from s
function LTrim(s) {
        var i = 0
        while ((i < s.length) && charInString(s.charAt(i), whitespace)) { i++ }
        return s.substring(i, s.length);
}

// Removes ending (trailing) whitespace characters from s
function RTrim(s) {
        var i = s.length - 1
        while ((i >= 0) && charInString(s.charAt(i), whitespace)) { i-- }
        return s.substring(0, i+1);
}

 // Returns string with both leading and trailing whitespaces removed from s
function Trim(s) {
        return RTrim(LTrim(s))
}

// Returns true if string s is empty
function isEmpty(s) {
        return ((s == null) || (s.length == 0))
}

// Returns true if character c is a digit
function isDigit(c) {
        return ((c >= "0") && (c <= "9"))
}

// Returns true if all characters in string s are numbers (non-signed integers only)
function isInteger(s) {
        if (isEmpty(s)) return false;
        for (var i = 0; i < s.length; i++) {
                var c = s.charAt(i) // Check that current character is number
                if (!isDigit(c)) return false;
        }
        // All characters are numbers.
        return true
}

// Returns true if string s is a positive float value
function isFloat(s,EmptyFlag) {
        if (EmptyFlag)
        {
           if (isEmpty(s)) return false;
        }
        if (s.length == 1 && !isDigit(s.charAt(0)))
            return false;
        var bDotPassed = false;
        for (var i=0; i<s.length; i++)
        {
                if (i==0 && s.charAt(i)=='-') continue;
                if (!isDigit(s.charAt(i)))
                        if (s.charAt(i) == '.' && !bDotPassed)
                                bDotPassed = true;
                        else
                                return false;
        }                
        return true;
}

// Returns true if all chars of string s belong to string bag
function CharsInBag(s, bag) {
        var i
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i)
        if (bag.indexOf(c) == -1) return false
    }
    return true
}

// Returns true if string s is empty or whitespace characters only
function isWhitespace(s) {
    if (isEmpty(s)) return true
        return CharsInBag(s,whitespace)
}

// Returns true if string s is a valid phone number
function isPhoneNumber(s) {
        return CharsInBag(s,validPhoneChars)
}

// Returns true if string s is a valid email address
function isEmail(s) {
        // there must be >= 1 character before @, so we
        // start looking at character position 1
        // (i.e. second character)
        var i = 1
        var sLength = s.length
        // look for @
        while ((i < sLength) && (s.charAt(i) != "@")) { i++ }
        if ((i >= sLength) || (s.charAt(i) != "@")) return false
        else i += 2
        // look for .
        while ((i < sLength) && (s.charAt(i) != ".")) { i++ }
        // there must be at least one character after the .
        if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false
        else return true
}

// Form specific validation functions

function emptyInput (input) {
        //alert (input.name + ": " + input.value + " " + input.type);
        switch (input.type) {
                case "hidden":
                case "password":
                case "text": return isWhitespace (input.value); break;
                case "file": return isWhitespace (input.value); break;
                case "select": //alert (input.selectedIndex);
                        return input.selectedIndex == -1; break;
                default:
                        if (input[0].type == "radio" || input[0].type == "checkbox") {
                                for (var i=0; i<input.length; i++)
                                        if (input[i].checked) return false;
                        }
                        return true;
        }
}

function alertInput (input, message) {
        alert (message);
        input.focus();
        if ((input.type == "text") || (input.type == "file") || (input.type == "password"))
                input.select ();
        return false;
}

function checkRequiredFields (form, fields, messages) {
        for (var i=0; i<fields.length; i++) {
                //alert (form.elements [fields[i]], " ",form.elements [fields[i]].value);
                if (emptyInput (form.elements [fields [i]])) {
                        alertInput (form.elements [fields [i]], messages [i]);
                        return false;
                }
        }
        return true;
}

function checkSearch(form,txt) {
        if (emptyInput(form.words))
                return alertInput(form.words, txt);
                return true;
}

// Returns whether the specified year is leap
function leapYear(yr) {
        if (((yr % 4 == 0) && yr % 100 != 0) || yr % 400 == 0)
                return true;
        else return false;
}

// Returns number of days in specified month & year
// month = [1,12]
function numDaysIn(mth, yr) {
        if (mth==4 || mth==6 || mth==9 || mth==11) return 30;
        else if ((mth==2) && leapYear(yr)) return 29;
        else if (mth==2) return 28;
        else return 31;
}

//CheckDateFromArray
//DateArray - array{year, month, day}
function checkDateFromArray(DateArray){
        if (!isInteger(DateArray[0]))
                return false;
        if (!isInteger(DateArray[1]) || (DateArray[1] < 1) || (DateArray[1] > 12))
                return false;
        maxdays = numDaysIn(DateArray[1], DateArray[0]);
        if (!isInteger(DateArray[2]) || (DateArray[2] < 1) || (DateArray[2] > maxdays))
                return false;
        return true;
}
//==================================================================================== 
 function SelectAll(cntrl)
 {
        var flag = false;
        for (i = 0; i < cntrl.length; i++) 
                if (!cntrl.options[i].selected)
                        flag = true;
      for (i = 0; i < cntrl.length; i++) cntrl.options[i].selected = flag;
 }
 
//====================================================================================
function checkUdfFields(form, message)
{
    submitDualMultipleSelect(form);
        for(var i=0; i<form.elements.length; i++) 
        {
                var item=form.elements[i];
                var itemName = item.name;
                
                
                if (itemName.substr(0,7) == "Mantext") 
                {
                        var namecheck = "dFormUdf$" + itemName.substr(7);
                        var checkitem = form.elements[namecheck];
                        
                        if (emptyInput(checkitem))
                                return alertInput (checkitem, message);
                }

                if (itemName.substr(0,7) == "Manmemo") 
                {
                        var namecheck = "dFormUdf$" + itemName.substr(7);
                        var checkitem = form.elements[namecheck];
                        if (isEmpty(checkitem.value))
                                return alertInput (checkitem, message);
                }

                if (itemName.substr(0,7) == "Mannume") 
                {
                        var namecheck = "dFormUdf$" + itemName.substr(7);
                        var checkitem = form.elements[namecheck];
                        
                        if (emptyInput(checkitem))
                                return alertInput (checkitem, message);
                }

                if (itemName.substr(0,7) == "Manvaln") 
                {
                        var namecheck = "dFormUdf$" + itemName.substr(7);
                        var checkitem = form.elements[namecheck];
                        
                        if (!isFloat(checkitem.value, false))
                                return alertInput (checkitem, 'Please enter a valid number');
                }

                if (itemName.substr(0,7) == "Manmult") 
                {
                        var namecheck = "UDFDATE" + itemName.substr(7);
                        var checkitem = form.elements[namecheck];
                        
                        if (form.elements[namecheck])
                        {
                                //alert(checkitem.selectedIndex)
                                if (checkitem.selectedIndex==-1)
                                        return alertInput (checkitem, message);
                        }               
                } 

                if (itemName.substr(0,7) == "Manlist") 
                {
                        var namecheck = "UDFDATE" + itemName.substr(7);
                        var checkitem = form.elements[namecheck];

                        if (form.elements[namecheck])
                        {
                                if (checkitem.selectedIndex==-1 || checkitem.selectedIndex==0)
                                        return alertInput (checkitem, message);
                        }               
                } 

                if (itemName.substr(0,7) == "Mantime") 
                {
                        var namecheck = "enable_" + itemName.substr(7);
                        var checkitem = form.elements[namecheck];
                        
                        if (!checkitem.checked)
                                return alertInput (checkitem, message);
                } 

                if (itemName.substr(0,7) == "Mandate") 
                {
                        var namecheck = "enable_" + itemName.substr(7);
                        var checkitem = form.elements[namecheck];
                        
                        var nameday =  "UDFDATE" + itemName.substr(7) + "_day";
                        var namemonth =  "UDFDATE" + itemName.substr(7) + "_month";
                        var nameyear =  "UDFDATE" + itemName.substr(7) + "_year";
                        
                        if (checkitem.checked)
                        {
                                var dateArr = Array(form.elements[nameyear].value, form.elements[namemonth].value, form.elements[nameday].value);
                                if (!checkDateFromArray(dateArr)) 
                                        return alertInput (checkitem, "Please enter a valid date");
                        }               
                } 
                
        }
        return true;    
}
//====================================
function submitDualMultipleSelect(form)
{
        for(var i=0; i < form.elements.length; i++) 
        {
                var item=form.elements[i];
                var itemName = item.name;
                if (itemName.substr(0,7) == "selectf") 
                {
                        if (item.type == "select-multiple")
                        {
                            var namecheck = "UDFDATE" + itemName.substr(10);
                                submitSelectedOptions(form.elements[namecheck]);
                        }
                } 
        }
}
//================================
function selectAllOptions(SelectObj)
{
        for (var i = 0; i < SelectObj.length; i++)
        {
                SelectObj.options[i].selected= true;
        }

}
 
// -->
//</SCRIPT>

