//alert('formvalidation');
// JavaScript Document
var whitespace = " \t\n\r";
var urlregexp = /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?.*/i;
var emailregexp = /^(.+?)@([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+/i;
var imageFileNameRegexp = /^(.*)\.(gif|jpg|jpeg)/ig;
var phoneNumberDigits = "1234567890";
var usPhoneDigitNum = 10;

function checkPassword(object,text) {
	var success = true;

	if (!checkEmpty(object,text))
      success = false;
	else if (!checkMinLength(object,text,4))
    	success = false;

	return success;
}

function checkImageFileName(object, text) {
	var value = object.value;
	var result = value.match(imageFileNameRegexp);

    if (result != null)
        return true;
    else {
        displayError(object, 'Invalid ' + text + '. Only gif and jpg are supported.');
        return false;
    }
}

function checkPhoneNumber(object, text) {
	var success = checkEmpty(object, text);
	var value = object.value;

	if (success) {
		var cleanPhone = retainChars(value, phoneNumberDigits)
	   	if (cleanPhone != "") {
			if (cleanPhone.length == usPhoneDigitNum)
				object.value = format(cleanPhone, "", 3, "-", 3, "-", 4);
			return true;	      
		}

	    displayError(object, 'Please enter a valid ' + text + '.');	
	}

	return false;
}

function format(args)

{   var arg;
    var sPos = 0;
    var tmp = "";

	for (var i = 1; i < format.arguments.length; i++) {
		arg = format.arguments[i];
		if (i % 2 == 1) 
			tmp += arg;
		else {
		   tmp += args.substring(sPos, sPos + arg);
		   sPos += arg;
    	}
    }
    return tmp;
}

function retainChars(str, charsToRetain) {
    var tmp = "";
	for (var i = 0; i < str.length; i++) {   
		var c = str.charAt(i);
	    if (charsToRetain.indexOf(c) != -1) tmp += c;
    }

    return tmp;
}

function checkRadio(object, text) {						
	for (var i = 0; i < object.length; ++ i) {
		if (object[i].checked)
			return true;
	}

	displayError(object, 'Please select a ' + text);
	return false;
}

function checkSelect(object, text) {
	var value = object.value;
						
    if ((value == null) || (value.length == 0) ) {
		displayError(object, 'Please select a ' + text + '.');
		return false;
	}	

	return true;
}

function checkEmail(object,text) {
	var value = object.value;	
	var result = value.match(emailregexp);

    if (result != null)
        return true;
    else {
        displayError(object, 'Please enter a valid ' + text + '.');
        return false;
    }
}

// check for digit
function checkDigits(object,text) {
	var value = object.value;
	for (i = 0; i < value.length; i++)
    {   		
        var c = value.charAt(i);
        if (!isDigit(c)) {
			displayError(object, text + ' must contain digits only.');			
			return false;	
		}
    }
	return true;
}

function isDigit (c) { return ((c >= "0") && (c <= "9")) }
function isEmpty(s) { return ((s == null) || (s.length == 0)) }

// check for empty or fields with only whitespaces
function checkEmpty(object,text) {
	var value = object.value;

    if ((value == null) || (value.length == 0) ) {
		displayError(object, text + ' cannot be empty.');
		return false;
	}

    for (i = 0; i < value.length; i++)
    {   		
        var c = value.charAt(i);
        if (whitespace.indexOf(c) == -1)
			return true;	
    }

	displayError(object, text + ' cannot be empty.');
	return false;
}

function checkLength(object,text,maxlength) {
	var value = object.value;

    if (value.length > maxlength) {
		displayError(object, text + ' cannot exceed ' + maxlength + " characters.");
		return false;
	}

	return true;
}


function checkMinLength(object,text,minlength) {
	var value = object.value;

    if (value.length < minlength) {
		displayError(object, text + ' must contain be at least ' + minlength + " characters.");
		return false;
	}

	return true;
}

function checkMaxLength(object,text,maxlength) {
	var value = object.value;

    if (value.length > maxlength) {
		displayError(object, text + ' must be less than ' + maxlength + " characters.");
		return false;
	}

	return true;
}

function displayError(obj, errorText) {
	alert(errorText);
	if (navigator.appName.indexOf('Netscape') > -1) {
        obj.focus();
    }
}

function checkURL(object,text) {
	var value = object.value;
	
	var result = value.match(urlregexp);

    if (result != null)
        return true;
    else {
        displayError(object, 'Please enter a valid ' + text + '.');
        return false;
    }
}


function checkMinValue (object,text,minlength) {
	var value = object.value;

    if (value < minlength) {
		displayError(object, text + ' must be greater than ' + minlength + '.');
		return false;
	}

	return true;
}

function checkMaxValue (object,text,maxlength) {
	var value = object.value;

    if (value > maxlength) {
		displayError(object, text + ' must be less than ' + maxlength + '.');
		return false;
	}

	return true;
}


