	var aReqObjs = new Array();

	function _ValidReg(){

		if(!document.getElementById){return;}
		if(!document.getElementById("r-form")){return;}

		var oRegForm 	= document.getElementById("r-form");
		var oInputList 	= oRegForm.getElementsByTagName('input');
		for(var j=0;j<oInputList.length;j++){


        	if(_hasClassOf(oInputList[j].parentNode,"r-upper")){
		     oInputList[j].onblur = capitalizeFirst(oInputList[j]);

		    }

            if(_hasClassOf(oInputList[j].parentNode,"r-upperAll")){
             _upperAll(oInputList[j]);


		    }


			if(_hasClassOf(oInputList[j].parentNode,"r-required") ){

				aReqObjs.push(oInputList[j]);

				if(oInputList[j]["type"] == "text" || oInputList[j]["type"] == "password"){

					oInputList[j].onblur = _ValidText;

					//if(!_hasClassOf(oInputList[j].parentNode,"r-email")){
					//	oInputList[j].onkeyup = _ValidText;
					//}

				}else if(oInputList[j]["type"] == "checkbox"){

					oInputList[j].onblur = _ValidCheck;
					oInputList[j].onclick = _ValidCheck;

				}else{
					alert(oInputList[j]["type"]);
				}



            }



		}

		var oInputList 	= oRegForm.getElementsByTagName('select');
		for(var j=0;j<oInputList.length;j++){

			if(_hasClassOf(oInputList[j].parentNode,"r-required")){

				aReqObjs.push(oInputList[j]);

				oInputList[j].onchange = _ValidSelect;
				oInputList[j].onblur = _ValidSelect;
			}
		}

		oRegForm.onsubmit = _ValidateForm;
	}

	function _ValidText(evt){

		var isValid = 1;

		if(this.value.length <= 0){isValid=0;}

		if(_hasClassOf(this,"input-password")){

			if ((this.value.length <6) || (this.value.length >15)) {

					isValid = 0;

			}

		}

		if(_hasClassOf(this.parentNode,"r-email")){
			var email_reg = new RegExp( "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,})+$" );
			if(!email_reg.test( this.value )){
				isValid = 0;
			}
		}

	    if(_hasClassOf(this.parentNode,"r-upper")){

	        		this.value = capitalizeFirst(this);
	        		/*this.value.substr(0, 1).toUpperCase() + this.value.substr(1) ; */

			}
  		if(_hasClassOf(this.parentNode,"r-upperAll")){

		       		this.value = _upperAll(this);
		       		/*this.value.substr(0, 1).toUpperCase() + this.value.substr(1) ; */

			}


		if(_hasClassOf(this.parentNode,"r-number")){
			var number = new RegExp( "^[0-9]" );
			if(!number.test( this.value )){
				isValid = 0;
			}
		}

		if(_hasClassOf(this.parentNode,"r-phonenumber")){
			var number = new RegExp( "^[0-9 ]+$" );
			if(!number.test( this.value )){
				isValid = 0;
			}
		}

		var getvalue=this.getAttribute("mustmatch");
		if(getvalue){
			if(document.getElementById(getvalue).value != this.value){
				isValid = 0;
			}
		}

		var minlength = this.getAttribute("minlength");
		if( minlength ) {
			if( this.value.length < minlength ) {
				isValid = 0;
			}
		}


		if(isValid == 1){_removeClassOf(this.parentNode,"r-error");}
		if(isValid == 0){_setClassOf(this.parentNode,"r-error");}

	}


    function _upperAll(){



        	     		this.value = this.value.toUpperCase();



    }
	function _ValidSelect(){

		var isValid = 1;

		if(!this.options[this.selectedIndex].value){isValid=0;}

		if(_hasClassOf(this.parentNode,"r-dob")){

			var oInputList 	= this.parentNode.getElementsByTagName('select');
			var aDob = new Array();
			var iFound = 0;
			var iAge = 0;
			for(var j=0;j<oInputList.length;j++){

				if(oInputList[j].options[oInputList[j].selectedIndex].value != 0){
					iFound++;
					aDob[j] = oInputList[j].options[oInputList[j].selectedIndex].value;
				}
			}

			if(iFound == 3){
				iAge = _GetAge(aDob.join("/"));
				if(_hasClassOf(this.parentNode,"r-min18")){
					if(iAge<18){
						isValid = 0;
					}
				}
			}

		}

		if(isValid == 1){_removeClassOf(this.parentNode,"r-error");}
		if(isValid == 0){_setClassOf(this.parentNode,"r-error");}

	}

	function _ValidCheck(){

		var isValid = 1;

		if(!this.checked){isValid=0;}

		if(isValid == 1){_removeClassOf(this.parentNode,"r-error");}
		if(isValid == 0){_setClassOf(this.parentNode,"r-error");}

	}

	function _ValidateForm(){

		var iError = 0;

		for(var j=0;j<aReqObjs.length;j++){

			if(aReqObjs[j]["type"] == "text" || aReqObjs[j]["type"] == "password"){

				if(aReqObjs[j].value == ""){
					iError = 1;
					_setClassOf(aReqObjs[j].parentNode,"r-error");
				}

			}else if(aReqObjs[j]["type"] == "select-one"){

				if(!aReqObjs[j].options[aReqObjs[j].selectedIndex].value){
					iError = 1;
					_setClassOf(aReqObjs[j].parentNode,"r-error");
				}

			}else if(aReqObjs[j]["type"] == "checkbox"){

				if(!aReqObjs[j].checked){
					iError = 1;
					_setClassOf(aReqObjs[j].parentNode,"r-error");
				}

			}
		}

		if(iError == 1){return false;}
		return true;
	}

	function _Chomp(raw_text){

		return raw_text.replace(/(\n|\r)+$/, '');

	}

	function _setClassOf(oObj,sClass){

		if(!oObj){return false;}

		var aClasses = oObj.className.split(" ");

		for(var j=0;j<aClasses.length;j++){
			if(aClasses[j] == sClass){
				return true;
			}
		}

		aClasses.push(sClass);
		oObj.className = aClasses.join(" ");
	}

	function _removeClassOf(oObj,sClass){

		if(!oObj){return false;}

		var aClasses = oObj.className.split(" ");

		for(var j=0;j<aClasses.length;j++){
			if(aClasses[j] == sClass){
				aClasses.splice(j,1);
			}
		}

		oObj.className = aClasses.join(" ");
	}

	function _hasClassOf(oObj,sClass){

		if(!oObj){return false;}

		var aClasses = oObj.className.split(" ");

		for(var j=0;j<aClasses.length;j++){
			if(aClasses[j] == sClass){
				return true;
			}
		}

		return false;
	}

	function _GetAge(bDay){
		now = new Date()
		bD = bDay.split('/');
		if(bD.length==3){
			born = new Date(bD[2], bD[1]*1-1, bD[0]);
			years = Math.floor((now.getTime() - born.getTime()) / (365.25 * 24 * 60 * 60 * 1000));
			return years;
		}
	}

	function ValidateForm(){

		var dt=document.frmSample.txtDate
		if (isDate(dt.value)==false){
			dt.focus()
			return false
		}
	    return true
	 }


	function _addLoadEvent(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload = function() {
				if (oldonload) {
					oldonload();
				}
				func();
			}
		}
	}

	function capitalizeFirst(inputBox) {
	        inputVal = inputBox.value;
            newVal=inputBox.value;

            if(inputVal.length > 1){
	            newVal = '';
	            inputVal = inputVal.split(' ');



	            for(var i=0; i < inputVal.length; i++) {
	                    newVal += inputVal[i].substring(0,1).toUpperCase() +  inputVal[i].substring(1,inputVal[i].length) + ' ';
	            }

            }
	        return newVal;
	}

	_addLoadEvent(_ValidReg);

