function stripCharsInBag(s, bag){
    var i;
    var returnString = "";
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function isInt(s){
    var i;
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    return true;
}

function isEmpty(field)
{
    stringValue = field.value;	
    return ((stringValue == null) || (stringValue.length == 0));
}

function isEmptyNoSpace(field)
{
	stringValue = field.value;	
    return ((stringValue == null) || (stringValue.length == 0));
	
}

function trim(field)
{
    field.value = trimValue(field.value);
}

function trimValue(value)
{

	var re = /^\s*$/
	var bReturn = value
	if(re.test(value))
	{
		bReturn = ""
    }
    else
    {
    	bReturn = value.replace(/^\s*((\S|.)*\S)\s*$/, '$1');
    }
    return bReturn;
}

function isValidLength(field, fieldlength)
{
	stringValue = field.value;
	return ((stringValue != null) && (stringValue.length > fieldlength));
}

function validateSearchFreeText(field)
{
	var msgInvalid = "";
	var validSpecialChars = "\"\-,.?'$@#^*!_ `~%()=+;:/\\{}"; 
	msgInvalid = validateSpecialCharacters(field.value, validSpecialChars)
	return msgInvalid
}

function validateTextBox (field)
{
  	var msgInvalid = "";
	var validSpecialChars = "\"\-,.?'$@#^*!_ ()%=+[];:/\%`\\~{}|\n\r";
	msgInvalid = validateSpecialCharacters(field.value, validSpecialChars)
	return msgInvalid
}

function validateName (field)
{
  	var msgInvalid = "";
	var validSpecialChars = "\"\-,.?'$@#^*!_ ()%=+[];:/\%`\\~{}|";
	msgInvalid = validateSpecialCharacters(field.value, validSpecialChars)
	return msgInvalid
}

function isValidCharacter(field)
{
    var bReturn = false;
    re = /^[A-Za-z0-9"-,.?’$@#^*!_()]/
    if (re.test(field.value))
    {
        bReturn = true;
    }
    return bReturn;
}

function isValidWebAddress (field)
{
	var bReturn = false;
	var validSpecialChars = "=%~+\",.?$@ #;^*':!_ \/-"
	msgInvalid = validateSpecialCharacters(field.value, validSpecialChars)
	return msgInvalid;
}

function checkSelectListNoMsg(field)
{
    var bReturn = true;
    if (trimValue(field.options[field.selectedIndex].value).length <= 0)
    {
        bReturn = false;
        field.focus();
    }
    return bReturn;
}

function getSelectValue(select)
{
    if (select.selectedIndex != null &&
          select.selectedIndex >= 0)
    {
        return select.options[select.selectedIndex].value;
    }
    return null;
}

function getRadioValue(rdoButton)
{
    var sValue = null;
    for (i=0; i < rdoButton.length;i++)
    {
        if (rdoButton[i].checked)
        {
            sValue = rdoButton[i].value;
        }
    }
    return sValue;
}

function chgFocus(field) {	
	field.focus();
	if (field.tagName != "SELECT")
	{
	    field.select();
	}
}

function validateSpecialCharacters(sStringToCheck, sValidSpecialChars) {
	var msgInvalidChars = "Please replace the characters %1% and try again.";
	re = /^[A-Za-z0-9]*$/
	varInvalidChars = ""
	for (i = 0; i < sStringToCheck.length; i++) {
		currentChar = sStringToCheck.charAt(i)
		if ((sValidSpecialChars.indexOf(currentChar,0) < 0) && (!(re.test(currentChar))))
		{		
			if (varInvalidChars.indexOf(currentChar,0) < 0)
			{
				varInvalidChars = varInvalidChars + currentChar
			}
		}
	}
	if (varInvalidChars != "")
	{
		varInvalidChars = varInvalidChars.replace(/ /, "(space)")
		varInvalidChars = varInvalidChars.replace(/\t/, "(tab)")
		varInvalidChars = varInvalidChars.replace(/\n/, "(newline)")
		varInvalidChars = varInvalidChars.replace(/\r/, "(newline)")

		return msgInvalidChars.replace(/%1%/, varInvalidChars)
	}
	else
	{
		return ""
	}
}

function validateEmail(email) {
	var msgInvalidChars = "I'm sorry, you have supplied an invalid email address. ";
	var msgInvalidFormat = "I'm sorry, you have supplied an invalid email address. Please supply a valid email address with an at character (@), and at least one fullstop (.) after the at character, and try again.";
	var msgInvalidLength = "I'm sorry, you have supplied an invalid email address. The email address field must be no longer than 60 characters. Please try again.";
	var validSpecialChars = "-.@_+$~%!#^=";
	var maxLength = 60;
	if (email.value != "") {
		if (email.value.length > maxLength)
		{
		    return msgInvalidLength;
		}	
		msgInvalid = validateSpecialCharacters(email.value, validSpecialChars)
		if (msgInvalid != "")
		{
			return msgInvalidChars + msgInvalid
		}

		atPos = email.value.indexOf("@",1)
		if (atPos == -1) {	 		
			return msgInvalidFormat;
		}
		
		if (email.value.indexOf("@",atPos+1) > -1) {			
			return msgInvalidFormat;
		}
		
		periodPos = email.value.indexOf(".",atPos)
		if (periodPos == -1) {	 		
			return msgInvalidFormat;
		}
		
		if (periodPos+3 > email.value.length) {			
			return msgInvalidFormat;
		}
	}
	return "";
}

function isInteger(field)
{
    var bReturn = false;
    re = /^\d+$/
    if (re.test(field.value))
    {
        bReturn = true;
        field.select();
    }
    return bReturn;
}

function isPhone (field)
{
	var bReturn = false;
	var validSpecialChars = "()+- "
	msgInvalid = validateSpecialCharacters(field.value, validSpecialChars)
	return msgInvalid;
}

function isNav4() {
    var agt=navigator.userAgent.toLowerCase();
    var is_major = parseInt(navigator.appVersion);
    var is_minor = parseFloat(navigator.appVersion);
    var is_nav  = ((agt.indexOf('mozilla')!=-1) && 
(agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && 
(agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1) && 
(agt.indexOf('hotjava')==-1));
    var is_nav2 = (is_nav && (is_major == 2));
    var is_nav3 = (is_nav && (is_major == 3));
    var is_nav4 = (is_nav && (is_major == 4));
    var is_nav4up = (is_nav && (is_major >= 4));
    var is_navonly      = (is_nav && ((agt.indexOf(";nav") != -1) ||
                          (agt.indexOf("; nav") != -1)) );
    var is_nav6 = (is_nav && (is_major == 5));
    var is_nav6up = (is_nav && (is_major >= 5));

    if (is_nav4 || is_nav3 || is_nav2 ) {
         return true;
    } else {
         return false;
    }
}

