var alphanumchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÁáÉéÍíÓóÚúñÑÀÂÈÊàâèêôû0123456789";
var alphachars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÁáÉéÍíÓóÚúñÑÀÂÈÊàâèêôû";
var numchars = "0123456789";

function isValidAccount(s, valid_chars, valid_nums) {
	var allValid = true;
	var ch = '';
	if (s == '') {
		allValid = true;
	}
	else {
		if (s.length == 9) {
			for (i = 0;  i < 3;  i++) {
				ch = s.charAt(i);
				for (j = 0;  j < valid_chars.length;  j++)
					if (ch == valid_chars.charAt(j))
						break;
					if (j == valid_chars.length) {
						allValid = false;
					break;
				}
			}
			for (i = 3;  i < 9;  i++) {
				ch = s.charAt(i);
				for (j = 0;  j < valid_nums.length;  j++)
					if (ch == valid_nums.charAt(j))
						break;
					if (j == valid_nums.length) {
						allValid = false;
					break;
				}
			}
			if (s.match("--")){
				allValid = false;
			}
		}
		else {
			allValid = false;
		}
	}
	return allValid;
}

function isAlphanumeric(s, valid_chars) {
	var allValid = true;
	var ch = '';
	for (i = 0;  i < s.length;  i++) {
		ch = s.charAt(i);
		for (j = 0;  j < valid_chars.length;  j++)
			if (ch == valid_chars.charAt(j))
				break;
			if (j == valid_chars.length) {
				allValid = false;
			break;
		}
	}
	if (s.match("--")){
		allValid = false;
	}
	return allValid;
}

function isValidEmail(s){
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(s)){
		return true;
	} else {
		return false;
	}

}

function LTrim(str) {
    var s = new String(str);
    var whitespace = new String(' \t\n\r');

    // Strip all leading white-space characters
    if (whitespace.indexOf(s.charAt(0)) != -1) {

        var j=0, i = s.length;
    
        // Iterate from the left until we have no more whitespace...
        while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
            j++;

        // Get the substring from the first non-whitespace 
        // character to the end of the string...
        s = s.substring(j, i);
    }
    return s;
}

function RTrim(str) {
    var s = new String(str);
    var whitespace = new String(' \t\n\r');

    // Strip all trailing white-space characters
    if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {

        var i = s.length - 1;

        // Iterate from the right until we have no more whitespace...
        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
            i--;

        // Get the substring from the beginning of the string to
        // where the last non-whitespace character
        s = s.substring(0, i+1);
    }
    return s;
}

function Trim(str) {
    // Strip away all leading and trailing white-space characters
    return RTrim(LTrim(str));
}

//used to control max input of characters for password
function textCounter(field, maxlimit) {
	if (field.value.length > maxlimit) {
		field.value = field.value.substring(0, field.value.length - 1)	
	//remove the last character entered because it's the maxlimit + 1 character
	alert(form.jsalert1.value + maxlimit + form.jsalert2.value);
	return true;
	}
}

//used to control max input of characters for password
function accountCounter(field) {
	if (field.value.length == 8) {
	return true;
	}
	else {
	return false;
	}
}


function ValidateForm(form) {
	hideErrorMsgs();
	var str1 = str2 = '';
	var answer = true;
	// FIRST NAME
	if(form.first != null) {
		form.first.value = Trim(form.first.value);
		str = form.first.value;
		if(str == '' || str.length < 1) {
			alert(form.jsalert3.value);
			form.first.focus();
			return false;
		}
		if(!isAlphanumeric(str, alphachars + '-.` \'')) {
			alert(form.jsalert4.value);
			form.first.focus();
			form.first.select();
			return false;    
		}
	}
	// LAST NAME
	if(form.last != null) {
		form.last.value = Trim(form.last.value);
		str = form.last.value;
		if(str == '' || str.length < 1) {
			alert(form.jsalert5.value);
			form.last.focus();
			return false;
		}
		if(!isAlphanumeric(str, alphachars + '-.` \'')) {
			alert(form.jsalert6.value);
			form.last.focus();
			form.last.select();
			return false;    
		}
	}
	// ADDRESS
	if(form.address != null) {
		form.address.value = Trim(form.address.value);
		str = form.address.value;
		if(str == '' || str.length < 1) {
			alert(form.jsalert7.value);
			form.address.focus();
			return false;
		}
		if(!isAlphanumeric(str, alphanumchars + '-.` \',#')) {
			alert(form.jsalert8.value);
			form.address.focus();
			form.address.select();
			return false;    
		}
	}
	// CITY
	if(form.city != null) {
		form.city.value = Trim(form.city.value);
		str = form.city.value;
		if(str == '' || str.length < 1) {
			alert(form.jsalert9.value);
			form.city.focus();
			return false;
		}
		if(!isAlphanumeric(str, alphachars + '-.` \',#')) {
			alert(form.jsalert10.value);
			form.city.focus();
			form.city.select();
			return false;    
		}
	}
	// PROVINCE/STATE
	if(form.state != null) {
		if(form.state.selectedIndex == 0) { // first item selected
			alert(form.jsalert11.value);
			form.state.focus();
			return false;
		}       
	}
	// COUNTRY
	if(form.country != null) {
		if(form.country.selectedIndex == 0) { // first item selected
			alert(form.jsalert12.value);
			form.country.focus();
			return false;
		}
	}
	// POSTAL / ZIP
	if(form.zip != null) {
		if(form.country.selectedIndex <= 2) {
			form.zip.value = Trim(form.zip.value);
			str = form.zip.value;
			if(str == '') {
				alert(form.jsalert13.value);
				form.zip.focus();
				return false;
			}
			if(!isAlphanumeric(str.toUpperCase(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 -')) {
				alert(form.jsalert14.value);
				form.zip.focus();
				form.zip.select();				
				return false;    
			}
		}
	}
	// PHONE
	if(form.phone != null) {
		form.phone.value = Trim(form.phone.value);
		str = form.phone.value;
		if(str == '') {
			alert(form.jsalert15.value);
			form.phone.focus();
			return false;
		}
		if(!isAlphanumeric(str, '0123456789 -().#+')) {
			alert(form.jsalert16.value);
			form.phone.focus();
			form.phone.select();
			return false;    
		}
	}
	// TERMS
	if(form.broadcast1 != null) {
		if(form.broadcast1.checked != true) {
			showErrorMsg(28);
			//alert(form.jsalert17.value);
			answer = false;  
		}
	}
	// DATE OF BIRTH (MONTH)
	if(form.birthmonth != null) {
		if(form.birthmonth.selectedIndex == 0) { // first item selected
			alert(form.jsalert20.value);
			form.birthmonth.focus();
			return false;
		}
	}
	// DATE OF BIRTH (DAY)
	if(form.birthday != null) {
		if(form.birthday.selectedIndex == 0) { // first item selected
			alert(form.jsalert21.value);
			form.birthday.focus();
			return false;
		}
	}
	// REFERRAL
	if(form.buddy != null) {
		form.buddy.value = Trim(form.buddy.value);
		str = form.buddy.value;
		// must contain alphanumeric characters only...
		//if(!isAlphanumeric(str.toUpperCase(), alphanumchars)) {
		if(!isValidAccount(str.toUpperCase(), alphachars, numchars)) {
			showErrorMsg(27);
			//alert(form.jsalert27.value);
			form.buddy.value = "";
			form.buddy.focus();
			answer = false;
		}
	}
	// E-MAIL
	if(form.email != null) {
		form.email.value = Trim(form.email.value);
		str = form.email.value;
		if(!isAlphanumeric(str.toLowerCase(), 'abcdefghijklmnopqrstuvwxyz0123456789@._-< >')) {
			showErrorMsg(17);
			//alert(form.jsalert17.value);
			form.email.focus();
			form.email.select();
			answer = false;  
		}
		if(str == '' || !isValidEmail(str)) {
			showErrorMsg(18);
			//alert(form.jsalert18.value);
			form.email.select();
			answer = false;
		}
	}
	// E-MAIL2
	if(form.email2 != null) {
		form.email.value = Trim(form.email.value);
		form.email2.value = Trim(form.email2.value);
		str1 = form.email.value;
		str2 = form.email2.value;
		if (!(str1 == str2)) {
			showErrorMsg(19);
			//alert(form.jsalert19.value);
			form.email2.value="";
			form.email2.focus();
			answer = false;    
		}
	}
	// PASSWORD
	if(form.password != null) {
		form.password.value = Trim(form.password.value);
		str = form.password.value;
		if (form.name != 'formPrfUpd') {
			if(str == '') {
				showErrorMsg(24);
				//alert(form.jsalert24.value);
				form.password.focus();
				answer = false;
			}
		}
		// must contain alphanumeric characters only...
		if(!isAlphanumeric(str, alphanumchars + '~`!@#$*^(),.?')) {
			showErrorMsg(25);
			//alert(form.jsalert25.value);
			form.password.value="";
			form.password2.value="";
			form.password.select();
			form.password.focus();
			answer = false;
		} 
	}
	// PASSWORD2
	if(form.password2 != null){
		form.password.value = Trim(form.password.value);
		form.password2.value = Trim(form.password2.value);
		str1 = form.password.value;
		str2 = form.password2.value;
		if (!(str1==str2)){
			showErrorMsg(26);
			//alert(form.jsalert26.value);
			form.password.value="";
			form.password2.value="";
			form.password.focus();
			answer = false;
		}
	}
	// ALIAS
	if(form.alias != null) {
		// required; must be 3 to 15 characters in length...
		form.alias.value = Trim(form.alias.value);
		str = form.alias.value;
		str1 = str.toLowerCase();
		if(str == '' || str.length < 3) {
			showErrorMsg(22);
			//alert(form.jsalert22.value);
			form.alias.focus();
			answer = false;
		}
		// must contain alphanumeric characters only...
		if(!isAlphanumeric(str, alphanumchars + ' ~`!@$*^(),.?') || (str1.charAt(0)=='c' && str1.charAt(1)=='m')) {
			showErrorMsg(23);
			//alert(form.jsalert23.value);
			form.alias.focus();
			form.alias.select();
			answer = false;
		}
	}
	// submit form
	return answer;
}

// focus cursor on first field when page loads
function focusAlias(){
	document.form1.alias.focus();
	document.form1.alias.select();
}

function focusEmail(){
	document.form1.email.focus();
	document.form1.email.select();
}

function focusBuddy(){
	document.form1.buddy.select();
	document.form1.buddy.focus();
}

function focusFirst(){
	document.form1.first.focus();
}
function focusImageCode(){
	document.form1.typecode.focus();
	document.form1.typecode.select();
}
