function CheckValue(){
	var form = document.joinSessionForm;
	var sessionnumber = form.sessionid;
	if(!isValidLocalValue(form.firstname,"First name","true",32,"true"))
		return false;

	form.submit();
}


function isValidEmail(fieldObj, fieldName, required, maxlength)
{
	if(fieldObj == null || fieldObj == "undefined" ){
		return true;
	}
	value = fieldObj.value;
	if(required == "true"){
		if(!isValidValue(fieldObj, fieldName ,required,maxlength)){
			return false;
		}
	}else{
    	if(atTrim(value) == ""){
        	return true;
        }
	}

    if(!isValidLocalLength(fieldObj, fieldName,maxlength)){
        return false;
    }
	str=atTrim(value);
	var reCheck = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-\_0-9]+\.)+[a-zA-Z\_]{2,}))$/; //#Fixed for bug #90471
	if (reCheck.test(str))
	return true;
	else
	alert("The email address is not in the correct format.");
	fieldObj.focus();
	return false;
}

function isValidLength(fieldObj, fieldName,maxlength){
	fieldValue = fieldObj.value;
	if(atTrim(fieldValue).length>maxlength){
		alertOutOfLength(fieldName, maxlength);
		fieldObj.focus();
		return false;
	}
	return true;
}

function isValidLocalLength(fieldObj, fieldName,maxlength){
	fieldValue = atTrim(fieldObj.value);

    len=0;
    for (i=0;i<fieldValue.length;i++) {
        if (fieldValue.charCodeAt(i)>255) {
            len+=2;
        }else {
            len++;
        }
    }

    if(len>maxlength){
		alertOutOfLength(fieldName, maxlength);
		fieldObj.focus();
		return false;
	}

	return true;
}

function isValidValue(fieldObj, fieldName,required,maxlength){
	if(fieldObj == null || fieldObj == "undefined" ){
		return true;
	}
	fieldValue = fieldObj.value;
	if(required=="true" && atTrim(fieldValue) == ""){
		alertRequired(fieldName);
		fieldObj.focus();
		return false;
	}
	if(!isValidLength(fieldObj,fieldName,maxlength)){
		return false;
	}
	return true;
}

function isValidLocalValue(fieldObj, fieldName,required,maxlength,verifyLocalLength){
	if(fieldObj == null || fieldObj == "undefined" ){
		return true;
	}
	fieldValue = fieldObj.value;
	if(required=="true" && atTrim(fieldValue) == ""){
		alertRequired(fieldName);
		fieldObj.focus();
		return false;
	}
    if(verifyLocalLength == 'true'){
		if(!isValidLocalLength(fieldObj,fieldName,maxlength)){
			return false;
		}
    }else{
		if(!isValidLength(fieldObj,fieldName,maxlength)){
			return false;
		}
    }
	return true;
}

function isValidOptions(fieldObj, fieldName,required){
    
	if(fieldObj == null || fieldObj == "undefined" ){
            return true;
	}
    

	bool=0;
	if(required == "false"){
		return true;
	}

    if (typeof(fieldObj.length) == 'undefined') {
      	if (fieldObj.checked) {
   			bool=1;
      	}
 	} else {

		for(var i=0;i<fieldObj.length;i++){
			if (fieldObj[i].checked){
				bool=1;
				break;
			}
		}
 	}
	if(bool==0){
		alertRequired(fieldName);
		return false;
	}
	return true;
}


function atTrim(s)
{
	var r1, r2, s1, s2, s3;
	r1 = new RegExp("^ *");
	r2 = new RegExp(" *$");
	s1 = ""+s+"";
	s2 = s1.replace(r1, "");
	s3 = s2.replace(r2, "");
	r1 = null;
	r2 = null;
	return(s3);
}

function alertRequired(requiredField){
	altRequiredMsg = "{0} field is empty. Please input a value.";
	alert(replaceStr(altRequiredMsg,'{0}',requiredField) );
}

function alertOutOfLength(fieldName, maxlength){
	altOutOfLengthMsg = "The maximum length of {0} field is {1} characters";
	altOutOfLengthMsg = replaceStr(altOutOfLengthMsg,'{0}',fieldName );
	altOutOfLengthMsg = replaceStr(altOutOfLengthMsg,'{1}',maxlength );
	alert( altOutOfLengthMsg );
}

function replaceStr(source, oldstr, newstr){
	if(source == null){
		return source;
	}
	while (source.indexOf(oldstr) != -1) {
		pos1 = source.indexOf(oldstr);
		pos2 = oldstr.length + pos1;
		substr1 = source.substring(0, pos1);
		substr2 = source.substring(pos2);
		source = substr1 + newstr + substr2;
	}
	return source;
	
}
