function hasValue(value) {
    if (value) {
        for (var i = 0; i < value.length; i++) {
            if (value.charAt(i) != " ") {
                return true;
            }
        }
    }
    return false;
}

function isNumber(value) {
    for (var i = 0; i < value.length; i++) {
        if (!(value.charAt(i) >= '0' && value.charAt(i) <= '9')) {
            return false;
        }
    }
    return true;
}

function isValidDate(value) {
    if (value.length != 10) {
        return false;
    }
    if (value.charAt(2) != '/' && value.charAt(5) != '/') {
        return false;
    }
    var day = value.charAt(0) + value.charAt(1);
    if (day < 1 && day > 31) {
        return false;
    }
    var month = value.charAt(3) + value.charAt(4);
    if (month < 1 && month > 12) {
        return false;
    }
    if (isFutureDate(value)) {
        return false;
    }
    return true;
}



function isValidEmail(addr) {
    var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
    for (i=0; i<invalidChars.length; i++) {
           if (addr.indexOf(invalidChars.charAt(i),0) > -1) {
              return false;
           }
    }
    for (i=0; i<addr.length; i++) {
        if (addr.charCodeAt(i) > 127) {
            return false;
           }
    }

    var atPos = addr.indexOf('@',0);
    if (atPos == -1) {
           return false;
    }
    if (atPos == 0) {
           return false;
    }
    if (addr.indexOf('@', atPos + 1) > -1) {
           return false;
    }
    if (addr.indexOf('.', atPos) == -1) {
           return false;
    }
    if (addr.indexOf('@.',0) != -1) {
           return false;
    }
    if (addr.indexOf('.@',0) != -1){
           return false;
    }
    if (addr.indexOf('..',0) != -1) {
           return false;
    }
    return true;
}

function hasQuotes(value){
    return (value.length > 0 ? value.indexOf("\"") >= 0 : false);
}

function isValidString(value){
    return !hasQuotes(value);
}

function isFutureDate(value) {
    var day = value.charAt(0) + value.charAt(1);
    var month = value.charAt(3) + value.charAt(4);
    var year = value.charAt(6) + + value.charAt(7) + value.charAt(8) + value.charAt(9);
    var date = new Date(year, month, day, 0, 0, 0);
    var now = new Date();
    return (date > now);
}

function isPastDate(value) {
    var day = value.charAt(0) + value.charAt(1);
    var month = value.charAt(3) + value.charAt(4);
    var year = value.charAt(6) + + value.charAt(7) + value.charAt(8) + value.charAt(9);
    var date = new Date(year, month, day, 0, 0, 0);
    var now = new Date();
    return (date < now);
}

function alertAndFocus(field, message) {
    alert(message);
    field.focus();
}

function checkMandatory(field, message) {
    var v = field.value;
    if (!hasValue(v)) {
        alertAndFocus(field, message);
        return false;
    }
    return true;
}

function validateEmail(field, message) {
    var email = field.value;
    if (email.length > 0 && !isValidEmail(email)) {
        alertAndFocus(field, message);
    }
}

/**
 * pattern ? match any uppercase alpha
 * pattern # match any numeric
 * pattern * match any uppercase alpha or numeric
 * pattern _ match any character
 */
function validate(field, pattern, message) {
    var code = field.value;
    code = code.toUpperCase();
    if (code.length == 0) {
        return;
    }
    if (code.length != pattern.length) {
        alertAndFocus(field, message);
        return;
    }
    for (var i = 0; i < pattern.length; i++) {
        if (pattern.charAt(i) == '*') {
            if (!(('A' <= code.charAt(i) && code.charAt(i) <= 'Z') || ('0' <= code.charAt(i) && code.charAt(i) <= '9'))) {
                alertAndFocus(field, message);
                return;
            }
        }
        if (pattern.charAt(i) == '?') {
           if (!('A' <= code.charAt(i) && code.charAt(i) <= 'Z')) {
                alertAndFocus(field, message);
                return;
            }
        } else if (pattern.charAt(i) == '#') {
            if (!('0' <= code.charAt(i) && code.charAt(i) <= '9')) {
                alertAndFocus(field, message);
                return;
            }
        } else if (pattern.charAt(i) == '_') {
           continue;
        } else {
            if (pattern.charAt(i) != code.charAt(i)) {
                alertAndFocus(field, message);
                return;
            }
        }
    }

    field.value = code;
}

function checkLength(textfield, len, msg){
    if(textfield.value.length == 0){
        return false;
    }
    if(textfield.value.length < len){
        alertAndFocus(textfield, msg);
        return false;
    }
    return true;
}

function checkRange(startfieldDD, startfieldMM, startfieldYYYY, endfieldDD, endfieldMM, endfieldYYYY, maxmonths, fmtmsg, rngmsg){
    
	var startDate = new Date(startfieldYYYY.value, startfieldMM.value - 1, startfieldDD.value);
	var endDate = new Date(endfieldYYYY.value, endfieldMM.value - 1, endfieldDD.value);
	
	if (startDate == 'Invalid Date') {
		alertAndFocus(startfieldDD, fmtmsg);
        return false;
	}
	
	if (endDate == 'Invalid Date') {
		alertAndFocus(endfieldDD, fmtmsg);
        return false;
	}
	
	var checkDate = new Date(startfieldYYYY.value, startfieldMM.value - 1, startfieldDD.value);
	checkDate.setMonth(checkDate.getMonth() + 12);
	
	if (checkDate.getTime() < endDate.getTime()) {
		alertAndFocus(startfieldDD, rngmsg);
		return false;
	}
    
    return true;
}


/**
 * pattern ? match any uppercase alpha
 * pattern # match any numeric
 * pattern * match any uppercase alpha or numeric
 * pattern _ match any character
 */
function validateCode(field, pattern, message, noAlert) {
    var code = field.value;
    if (code == undefined || code == null || code.length == 0 ) {
       return false;
      
    }
   code = code.toUpperCase();
    if (code.length != pattern.length) {
        if (!noAlert) alertAndFocus(field, message);
        return false;
    }
    for (var i = 0; i < pattern.length; i++) {
        if (pattern.charAt(i) == '*') {
            if (!(('A' <= code.charAt(i) && code.charAt(i) <= 'Z') || ('0' <= code.charAt(i) && code.charAt(i) <= '9'))) {
            	if (!noAlert) alertAndFocus(field, message);
                return false;
            }
        } else if (pattern.charAt(i) == '?') {
           if (!('A' <= code.charAt(i) && code.charAt(i) <= 'Z')) {
        	   if (!noAlert) alertAndFocus(field, message);
                return false;
            }
        } else if (pattern.charAt(i) == '#') {
            if (!('0' <= code.charAt(i) && code.charAt(i) <= '9')) {
            	if (!noAlert) alertAndFocus(field, message);
                return false;
            }
        } else if (pattern.charAt(i) == '_') {
           continue;
        } else {
            if (pattern.charAt(i) != code.charAt(i)) {
            	if (!noAlert) alertAndFocus(field, message);
                return false;
            }
        }
    }

    field.value = code;
    return true;
}

function showOrHideElement(id, flag) {
	var element = document.getElementById(id);
	if (element != null) {
		if (flag) {
			element.style.display = "block";
		} else {
			element.style.display = "none";
		}
	}
}

function isShow(element) {
	return element.style.display == "block";
}

function isHide(element) {
	return element.style.display == "none";
}

function showElement(id) {
   var element = document.getElementById(id);
   if (element != null) {
       element.style.display = "block";
   }
}

function hideElement(id) {
   var element = document.getElementById(id);
   if (element != null) {
       element.style.display = "none";
   }
}

function toggleElement(id) {
    var element = document.getElementById(id);
    if (element != null) {
        if (element.style.display == "none") {
            element.style.display = "block";
        } else {
            element.style.display = "none";
        }
    }
}

function toggleImage(id, imageId, showImage, hideImage) {
    var element = document.getElementById(id);
    var image = document.getElementById(imageId);
    if (element != null) {
        if (element.style.display == "none") {
            element.style.display = "block";
            image.src = hideImage;
        } else {
            element.style.display = "none";
            image.src = showImage;
        }
    }
}

