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;
	}
}

function ValidateAlias(form) {
	document.getElementById("hiddentext_28").innerHTML = "";
	var str1 = str2 = '';
	hideAliasErrorMsgs();
	// 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) {
			//alert(form.jsalert22.value);
			showErrorMsg(22);
			//form.alias.focus();
		}else 
		// must contain alphanumeric characters only...
		if(!isAlphanumeric(str, alphanumchars + "") || (str1.charAt(0)=='c' && str1.charAt(1)=='m')) {
			//alert(form.jsalert23.value);
			showErrorMsg(23);
			//form.alias.focus();
			//form.alias.select();
		}else
			OnCheckAliasAvailability();
	}
}

function ValidatePassword(form) {
	hidePasswordErrorMsgs();
	var str1 = str2 = '';
	// PASSWORD
	if(form.password != null) {
		form.password.value = Trim(form.password.value);
		str = form.password.value;
		if (form.name != 'formPrfUpd') {
			if(str == '') {
				//alert(form.jsalert24.value);
				showErrorMsg(24);
				//form.password.focus();
			}
		}
		// must contain alphanumeric characters only...
		if(!isAlphanumeric(str, alphanumchars + '')) {
			//alert(form.jsalert25.value);
			showErrorMsg(25);
			//form.password.value="";
			form.password2.value="";
			//form.password.select();
			//form.password2.focus();
		} 
	}
}

function ValidatePassword2(form) {
	hidePassword2ErrorMsgs();
	var str1 = str2 = '';
	// 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)){
			//alert(form.jsalert26.value);
			showErrorMsg(26);
			//form.password.value="";
			form.password2.value="";
			//form.password2.focus();
		}
	}
}

function ValidateEmail(form) {
	hideEmailErrorMsgs();	
	document.getElementById("hiddentext_29").innerHTML = "";
	var str1 = str2 = '';
	// E-MAIL
	if(form.email != null) {
		form.email.value = Trim(form.email.value);
		str = form.email.value;
		if(!isAlphanumeric(str.toLowerCase(), 'abcdefghijklmnopqrstuvwxyz0123456789@._-< >')) {
			//alert(form.jsalert17.value);
			showErrorMsg(17);
			//form.email.focus();
			//form.email.select();
			
		}else if(str == '' || !isValidEmail(str)) {
			//alert(form.jsalert18.value);
			showErrorMsg(18);
			//form.email.focus();
			//form.email.select();
		} else
			OnCheckEmailAvailability();
	}
}

function ValidateReferral(form) {
	hideReferralErrorMsgs();
	var str1 = str2 = '';
	// 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)) {
			//alert(form.jsalert27.value);
			showErrorMsg(27);
			form.buddy.value = "";
			//form.buddy.focus();
		}
	}
}

function ValidateTypecode(form) {
	//OnCheckImageCodeAvailability();
	hideTypecodeErrorMsgs();
	var str1 = str2 = '';
	// TYPECODE
	if(form.typecode != null) {
		str = form.typecode.value;
		if(str == '') {
			//alert(form.jsalert22.value);
			showErrorMsg(31);
			//form.alias.focus();
			answer = false;
		}
	}
}

function ValidateForm(form) {
	hideErrorMsgs();
	var str1 = str2 = '';
	var answer = true;
	//ValidateEmail(document.getElementById("form1"));
	//if(document.getElementById("hiddentext_29").innerHTML == "")
		//ValidateAlias(document.getElementById("form1"));
		
	// E-MAIL
	if(form.email != null) {
		hideEmailErrorMsgs();
		form.email.value = Trim(form.email.value);
		str = form.email.value;
		if(!isAlphanumeric(str.toLowerCase(), 'abcdefghijklmnopqrstuvwxyz0123456789@._-< >')) {
			//alert(form.jsalert17.value);
			showErrorMsg(17);
			//form.email.focus();
			//form.email.select();
			answer = false;
		}
		if(str == '' || !isValidEmail(str)) {
			//alert(form.jsalert18.value);
			showErrorMsg(18);
			//form.email.select();
			answer = false;
		}
	}
	// ALIAS
	if(form.alias != null) {
		hideAliasErrorMsgs();
		// 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) {
			//alert(form.jsalert22.value);
			showErrorMsg(22);
			//form.alias.focus();
			answer = false;
		}
		// must contain alphanumeric characters only...
		if(!isAlphanumeric(str, alphanumchars + '') || (str1.charAt(0)=='c' && str1.charAt(1)=='m')) {
			//alert(form.jsalert23.value);
			showErrorMsg(23);
			//form.alias.focus();
			//form.alias.select();
			answer = false;
		}
		//
	}
	hidePassword2ErrorMsgs();
	hidePasswordErrorMsgs();
	// PASSWORD
		form.password.value = Trim(form.password.value);
		str = form.password.value;
		if (form.name != 'formPrfUpd') {
			if(str == '') {
				//alert(form.jsalert24.value);
				showErrorMsg(24);
				//form.password.focus();
				answer = false;
			}
		}
		// must contain alphanumeric characters only...
		if(!isAlphanumeric(str, alphanumchars + '')) {
			//alert(form.jsalert25.value);
			showErrorMsg(25);
			//form.password.value="";
			form.password2.value="";
			//form.password.select();
			//form.password2.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)){
			//alert(form.jsalert26.value);
			showErrorMsg(26);
			//form.password.value="";
			form.password2.value="";
			//form.password2.focus();
			answer = false;
		}
	}
	hidePlus18ErrorMsgs();
	hideTermsErrorMsgs();
	// TERMS
	if(form.broadcast1 != null) {
		if(form.broadcast1.checked != true) {
			showErrorMsg(30);
			answer = false;  
		}
	}
	// TERMS
	if(form.broadcast2 != null) {
		if(form.broadcast2.checked != true) {
			showErrorMsg(31);
			answer = false;  
		}
	}
	if(document.getElementById('hiddentext_28').innerHTML != "") {
		answer = false;
	}
	if(document.getElementById('hiddentext_29').innerHTML != "") {
		answer = false;
	}
	if(document.getElementById('hiddentext_17').style.display != "none") {
		answer = false;
	}
	if(document.getElementById('hiddentext_18').style.display != "none") {
		answer = false;
	}
	if(document.getElementById('hiddentext_22').style.display != "none") {
		answer = false;
	}
	if(document.getElementById('hiddentext_23').style.display != "none") {
		answer = 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;
		}
	}*/
	/*// TYPECODE
	if(form.typecode != null) {
		str = form.typecode.value;
		if(str == '') {
			//alert(form.jsalert22.value);
			showErrorMsg(31);
			form.alias.focus();
			answer = false;
		}
	}*/
	// TERMS
	/*
	if ((document.getElementById("hiddentext_28").innerHTML != "") || (document.getElementById("hiddentext_29").innerHTML != "")) {
		answer = false;
	}*/
	
	// All is valid, 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();
}

//********************************** JAVASCRIPT FOR AJAX *******************************************
//If our user enters data in the username input, then we need to enable our button
function OnChangedUsername()
{
	if(document.form1.newuserid.value == "")
	{
		document.form1.btnCheckAvailability.disabled = true;
	}
	else
	{
		document.form1.btnCheckAvailability.disabled = false;
	}
}

//Check Alias
function OnCheckAliasAvailability()
{
	if(window.XMLHttpRequest)
	{
	oRequest = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
	oRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}

	oRequest.open("POST", "/shared/ajax/alias.asp", true);
	oRequest.onreadystatechange = UpdateCheckAliasAvailability;

	oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var cleanCache = Math.floor(Math.random()*1001);
	var cleanCacheNumber = Math.floor(Math.random()*1001);
	oRequest.send("strCmd=availability&strUsername=" + document.form1.alias.value +"&"+cleanCache+"="+cleanCacheNumber);
}

function UpdateCheckAliasAvailability()
{
	if(oRequest.readyState == 4)
	{
		if(oRequest.status == 200)
		{
			document.getElementById("hiddentext_28").innerHTML = oRequest.responseText;
		}
		else
		{
			if(oRequest.status == 2000)
			{
				//document.getElementById("hiddentext_28").innerHTML = "Correcto";
				//Alias Available now, it checks the Image Code
				document.getElementById("hiddentext_28").innerHTML = "";
			}
			else
			{
				document.getElementById("hiddentext_28").innerHTML = "";//"Asychronous Error";
			}
		}
	}
}

//Check Email
function OnCheckEmailAvailability()
{
	if(window.XMLHttpRequest)
	{
	oRequest = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
	oRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}

	oRequest.open("POST", "/shared/ajax/email.asp", true);
	oRequest.onreadystatechange = UpdateCheckEmailAvailability;

	oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var cleanCache = Math.floor(Math.random()*1001);
	var cleanCacheNumber = Math.floor(Math.random()*1001);
	oRequest.send("strCmd=availability&strUsername=" + document.form1.email.value +"&"+cleanCache+"="+cleanCacheNumber);
}

function UpdateCheckEmailAvailability()
{
	if(oRequest.readyState == 4)
	{
		if(oRequest.status == 200)
		{
			document.getElementById("hiddentext_29").innerHTML = oRequest.responseText;
		}
		else
		{
			if(oRequest.status == 2000)
			{
				//document.getElementById("hiddentext_29").innerHTML = "Correcto";
				//Email Available now, it checks the Alias
				document.getElementById("hiddentext_29").innerHTML = "";
			}
			else
			{
				document.getElementById("hiddentext_29").innerHTML = "";//"Asychronous Error";
			}
		}
	}
}

//********************************************************************************
//********************************************************************************
//********************************************************************************
function hideErrorMsgs()
{
	hideAliasErrorMsgs();
	hidePasswordErrorMsgs();
	hideEmailErrorMsgs();
	//hideReferralErrorMsgs();
	//hideTermsErrorMsgs();
}
function hideAliasErrorMsgs()
{
	var obj22 = document.getElementById('hiddentext_22');
	var obj23 = document.getElementById('hiddentext_23');
	obj22.style.display = 'none';
	obj23.style.display = 'none';
}
function hidePasswordErrorMsgs()
{
	var obj24 = document.getElementById('hiddentext_24');
	var obj25 = document.getElementById('hiddentext_25');
	obj24.style.display = 'none';
	obj25.style.display = 'none';
	var obj26 = document.getElementById('hiddentext_26');
	obj26.style.display = 'none';
}
function hidePassword2ErrorMsgs()
{
	var obj26 = document.getElementById('hiddentext_26');
	obj26.style.display = 'none';
}
function hideTermsErrorMsgs()
{
	var obj30 = document.getElementById('hiddentext_30');
	obj30.style.display = 'none';
}
function hidePlus18ErrorMsgs()
{
	var obj31 = document.getElementById('hiddentext_31');
	obj31.style.display = 'none';
}
/*function hideReferralErrorMsgs()
{
	var obj27 = document.getElementById('hiddentext_27');
	obj27.style.display = 'none';
}
function hideTypecodeErrorMsgs()
{
	var obj31 = document.getElementById('hiddentext_31');
	obj31.style.display = 'none';
}*/
function hideEmailErrorMsgs()
{
	var obj17 = document.getElementById('hiddentext_17');
	var obj18 = document.getElementById('hiddentext_18');
	obj17.style.display = 'none';
	obj18.style.display = 'none';
}
function hideTermsErrorMsgs()
{
	var obj30 = document.getElementById('hiddentext_30');
	obj30.style.display = 'none';
}
function showErrorMsg(id)
{
	var obj = document.getElementById('hiddentext_' + id);
	obj.style.display = 'block';
}
function showHide(id)
{
	var obj = document.getElementById('hiddentext_' + id);
	if (obj.style.display == 'none')
		obj.style.display = 'block';
	else
		obj.style.display = 'none';
}