    function warning (field, str){
     	field.focus();
			Boxy.alert(str + "\n\n:" + " This is a required field. Please enter it.");
			return false;
    }

    function warnInvalid (field, str){
      field.focus();
			field.select();
			Boxy.alert(str);
			return false;
    }


    function isEmpty(str) {
        return ((str == null) || (str.length == 0));
    }
    
    function charInString (c, str){
      for (i = 0; i < str.length; i++) {
        if (str.charAt(i) == c) return true;
			}
			return false;
    }

    function isValidChar (field) {
			var s = field.value;
			var validChar="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";

      for (i = 0; i < s.length; i++){
			var c = s.charAt(i);

			if(validChar.indexOf(c)>=0)
				continue;
			else
				return warning (field, "Only [0-9],[a-z],[A-Z],[_],[-] is valid letters.");

			}

			return true;
    }

    function checkAllWhitespace (str) {
			var i;
			if (isEmpty(str)) return true;

        for (i = 0; i < str.length; i++){
                var c = str.charAt(i);

                if (c != ' ') return false;
        }

        return true;
    }

    function removeWhitespace (str){
    	var i = 0;
    	var j = 0;

			while ((i < str.length) && charInString (str.charAt(i), ' '))
				i++;

			s1 = str.substring (i, str.length);

			while ((j < s1.length) && charInString (s1.charAt(s1.length - j - 1), ' ') )
				j++;

			s2 = s1.substring (0, s1.length - j);
			return s2;
    }

    function checkString (field, str){
			if (checkAllWhitespace(field.value))
				return warning (field, str);
			else
				return true;
    }


    function checkUsrPw(field) {
      var s = field.value;
    	var str = '';

      if(!checkAllWhitespace(s)){
      	str = removeWhitespace(field.value);
          if(str.indexOf(' ')>=0)
          	return warnInvalid (field, "Username, Password and email can not include Space. Please re-enter it now.");
         	else if(str.length<4)
          	return warnInvalid(field, "Username and Password must be at least 4 characters long. Please re-enter it now.");
          else
          	return true;
     	} else {
      	return warnInvalid(field, "Username and Password must be at least 4 characters long. Please re-enter it now.");
      }
    }

    function checkConfirmPSW(field1, field2) {
    	if (field1.value != field2.value)
        	return warnInvalid(field2, "Confirm Password must be the same. Please re-enter it now.");
        else
        	return true;
    }

    function isEmail (str) {
			var i = 1;
			var sLength = str.length;

			while ((i < sLength) && (str.charAt(i) != "@"))
				i++;

			if ((i >= sLength) || (str.charAt(i) != "@")) return false;
			else i += 2;

			while ((i < sLength) && (str.charAt(i) != "."))
				i++;

			if ((i >= sLength - 1) || (str.charAt(i) != ".")) return false;
			else return true;
    }
    
    function checkEmail (field){
      var str = '';

			str = removeWhitespace(field.value);
			if(str.indexOf(' ')>=0)
				return warnInvalid (field, "Username, Password and email can not include Space. Please re-enter it now.");

      if (!isEmail(field.value))
				return warnInvalid (field, "The Email Address must be a valid one: xxx@xxx.com. Please re-enter it.");
			else return true;
    }

    function checkGender(field){
		  var radioLength = field.length;
			var checked=false;
		  for(var i = 0; i < radioLength; i++) {
				if(field[i].checked) {
						checked=true;
				}
			}
			if(checked==false){
				Boxy.alert("Please select gender.");
				return false;
			}else return true;
    }

    function checkSextype(field){
		  var radioLength = field.length;
			var checked=false;
		  for(var i = 0; i < radioLength; i++) {
				if(field[i].checked) {
						checked=true;
				}
			}
			if(checked==false){
				Boxy.alert("Please select sex orientation.");
				return false;
			}else return true;
    }

    function checkAgeConfirm(field){
			var checked=false;
				if(field.checked) {
						checked=true;
				}
			if(checked==false){
				Boxy.alert("You have confirm that you are over 18 years old.");
				return false;
			}else return true;
    }

    function validateForm1(form) {
				return (
          checkString(form.elements["user_name"],"Username") &&
          checkUsrPw(form.elements["user_name"]) &&
          isValidChar(form.elements["user_name"]) &&
          checkString(form.elements["password"],"Password") &&
          checkUsrPw(form.elements["password"]) &&
          checkConfirmPSW(form.elements["password"],form.elements["password1"])   &&
					checkEmail(form.elements["email"]) &&
					checkGender(form.elements["gender"]) &&
					checkSextype(form.elements["sex_type"]) &&
					checkAgeConfirm(form.elements["ageconfirm"])
        );
    }

    function checkAge(form) {
			var strYYYY = form.birthday_year.value;
			var strMM = form.birthday_month.value;
			var strDD = form.birthday_day.value;


			var birthday=new Date(strYYYY,strMM-1,strDD);
			var now=new Date();
			var nowYYYY=now.getFullYear();
			var nowMM=now.getMonth()+1;
			var nowDD=now.getDate();
			var age=nowYYYY-strYYYY;
			if(nowMM<strMM){
				age--;
			}
			if(nowMM==strMM){
				if(nowDD<strDD){
					age--;
				}
			}

			if(age<18){
				Boxy.alert("You're under 18 years old!");
				return false;
			}

			return true;
		}

    function validateForm2(form) {
				return (
					checkAge(form) &&
          checkString(form.elements["password"],"Password") &&
          checkUsrPw(form.elements["password"]) &&
          checkConfirmPSW(form.elements["password"],form.elements["password1"])
        );

    }

