var cn = "";

function doCheckName() {
	cn = "";
	var uname = $('accountForm').username.value;
	
	
	if (uname.length < 4) {
		$('available').innerHTML = '';
	} else {
		$('available').innerHTML = 'Checking Availability... <img src="http://images.freewebs.com/Images/Base/smallload.gif">';
		new ajax('/checkUsername.jsp?username='+escape(uname), {onComplete: function(flag) {
			flag = flag.trim();
			var av = $('available');
			if (flag=='-1') {
				av.innerHTML = '';
			} else if (flag == '0') {
				av.innerHTML = '<span style="color: green;">available!</span>';
			} else if (flag == '1') {
				av.innerHTML = '<span style="color: red;">unavailable</span>';
			} else if (flag == '2') {
				av.innerHTML = '<span style="color: red;">contains invalid characters</span>';
			} else if (flag == '3') {
				av.innerHTML = '<span style="color: red;">must be at least 4 characters</span>';
			} else {
				av.innerHTML = 'unavailable_' + flag;
			}
		}}).request();
	}
}

function checkName() {
	if (cn != "") {
		clearTimeout(cn);
		cn = "";
	}
	if ($('accountForm').username.value.length > 2) {
		cn = setTimeout('doCheckName();', 300);
	}
}

function checkEmpty(ele) {
	var frm = $('accountForm');
	
	if (frm[ele].value == '') {
		if (ele == 'birthdate') {
			$(ele+'_error').innerHTML = 'please select birth year';
		} else {
			$(ele+'_error').innerHTML = 'please enter ' + ele;
		}
		return false;
	} else {
		$(ele+'_error').innerHTML = '';
		return true;
	}
}

function checkLength(ele, len) {
	var frm = $('accountForm');
	
	if (frm[ele].value == '' || frm[ele].value.length < len) {
		$(ele+'_error').innerHTML = 'must be at least ' + len + ' characters';
		return false;
	} else {
		$(ele+'_error').innerHTML = '';
		return true;
	}
}

function checkPassword(ele, len) {
	var frm = $('accountForm');
	
	if (frm[ele].value == '' || frm[ele].value.length < len) {
		$(ele+'_error').innerHTML = 'must be at least ' + len + ' characters';
		return false;
	} else if (!(frm[ele].value.match(/^[A-Za-z0-9 ,.\/<>?;':"\[\]{}\\|`~!@#$%^&*()-_=+]+$/))) {
		$(ele+'_error').innerHTML = 'contains invalid characters';
		return false;
	} else {
		$(ele+'_error').innerHTML = '';
		return true;
	}
}

function checkCheck(ele) {
	var frm = $('accountForm');
	
	if (frm[ele].checked != true) {
		$(ele+'_error').innerHTML = 'please accept ' + ele;
		return false;
	} else {
		$(ele+'_error').innerHTML = '';
		return true;
	}
}

function checkRadio(ele) {
	var frm = $('accountForm');
	
	var radios = frm[ele];
	for (i=0;i < radios.length;i++) {
		if (radios[i].checked == true) {
			$(ele+'_error').innerHTML = '';
			return true;
		}
	}
	
	$(ele+'_error').innerHTML = 'please specify ' + ele + '<br>';
	return false;
}

function isValidEmail(ele) {
	var frm = $('accountForm');
	
	emailAddress = frm[ele].value;
    var re = /^(([^<>()[\]\\.,;:\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,}))$/
    /*\'"*/
    if (re.test(emailAddress)) {
    	$(ele+'_error').innerHTML = '';
    	return true;
    } else {
    	$(ele+'_error').innerHTML = 'please enter a valid e-mail';
    	return false;
    }
}

function checkAvatar(){
	var filename = $('accountForm').avatar.value.trim();
	if(filename){
		var ext = filename.substr(filename.length-3).toLowerCase();
	}
	if(ext && ext!='jpg' && ext!='jpeg' && ext!='png' && ext!='gif'){
		$('avatar_error').innerHTML = 'invalid file extension';
		return false;
	}
	
	$('avatar_error').innerHTML = '';
	return true;
}

function checkUserName() {
	var username = $('accountForm').username.value;
    var re = /^[a-z0-9][a-z0-9_-]*$/
    var ret = re.test(username.toLowerCase());
    if (!ret) {
    	$('username_error').innerHTML = 'contains invalid characters';
    } else {
    	return checkLength('username', 4);
    }
    return ret;
}

var creatingAccount = false;

function createAccount() {
	$('accountForm').cval.value = 'fcval';

	if (creatingAccount == false) {
		var pc = checkPassword('password', 4);
		var em = isValidEmail('emailaddress');
		var gc = checkRadio('gender');
		var bc = checkEmpty('birthdate');
		var tc = checkCheck('terms');
		var vuc = checkUserName();
		var ac = checkAvatar();
		if (pc && gc && bc && tc && em && vuc && ac) {
			//parent.showPage3();
			$('accountForm').submit();
			/*
			$('loadingImg').style.visibility='visible';
			
			creatingAccount = true;
			new ajax($('accountForm').action+'?'+$('accountForm').toQueryString(), {onComplete: function(resp) {
				eval(resp);
				$('loadingImg').style.visibility='hidden';
			}}).request();
			*/
		}
	}
	
}

