//============================USERNAME MATCH CHECK===============================================
var unMatchCheck; //response = username match
var phoneNumberCheck = null; //response = valid / anything else if invalid error msg
function createRequestObject() {
	var ro;
 	var browser = navigator.appName;
 	if(browser == "Microsoft Internet Explorer"){
    	ro = new ActiveXObject("Microsoft.XMLHTTP");
 	}
 	else{
    	ro = new XMLHttpRequest();
 	}
 	return ro;
}

var httpRequest = createRequestObject();

function checkAvailable(un) {
	httpRequest.open("GET", "/CheckUsernameAvailable?username=" + un , true);		
	httpRequest.onreadystatechange = checkResponse;	
	httpRequest.send(null);	
}

function checkResponse() {
	if(httpRequest.readyState == 4){
		if(httpRequest.status == 200){	
			unMatchCheck = httpRequest.responseText;	//response = match				
		}
 	}
}

function checkPhoneNumber(phone) {	
	httpRequest.open("GET", "/CheckPhoneNumber?phone=" + phone , true);		
	httpRequest.onreadystatechange = checkPhoneNumberResponse;	
	httpRequest.send(null);	
}

function checkPhoneNumberResponse() {
	if(httpRequest.readyState == 4){
		if(httpRequest.status == 200){	
			phoneNumberCheck = httpRequest.responseText;
		}
 	}
}
// ==============================USER SIGNUP TIPS ===============================================
function commentTip(field, column, msg){
    document.getElementById(field).style.borderColor="#6A3B93";
	document.getElementById(column).className = "warnDiv2";
	document.getElementById(column).innerHTML = msg;		
}

function clearTip(column,errorID){
	
	var x = document.getElementById(errorID);
	document.getElementById(column).className='warnDiv';
	
	if (errorID=='username'){
		if (validateUsername(x)!= ""){		
			document.getElementById(column).innerHTML = validateUsername(x);
		}
		else if (validateUsername(x)== "") {
			document.getElementById(column).className = "warnDiv4";
			document.getElementById(column).innerHTML = "THANK YOU!";
		}
	}
	if (errorID=='password'){
		if (validatePassword(x)!= ""){		
			document.getElementById(column).innerHTML = validatePassword(x);
		}
		else if (validatePassword(x)== "") {
			document.getElementById(column).className = "warnDiv4";
			document.getElementById(column).innerHTML = "THANK YOU!";
		}
	}
	if (errorID=='email'){
		if (validateEmail(x)!= ""){		
			document.getElementById(column).innerHTML = validateEmail(x);
		}else if (validateEmail(x)== "") {
			document.getElementById(column).className = "warnDiv4";
			document.getElementById(column).innerHTML = "THANK YOU!";
			}
	}
	if (errorID=='phone'){
		var checkPhone = validatePhone(x);
		if (checkPhone != ""){		
			document.getElementById(column).innerHTML = checkPhone;
		}else if (validatePhone(x)== "") {
			document.getElementById(column).className = "warnDiv4";
			document.getElementById(column).innerHTML = "THANK YOU!";
		}
	}
	if (errorID=='male'||errorID=='female'){
		document.getElementById(column).innerHTML ="";
	}
	
	if (errorID =='yyyy'){		
		var yyyyEr = validateYear(document.getElementById('yyyy'));
		
		//all errors must be resolved before clearing			
		
		if (yyyyEr==""){
			document.getElementById(column).className = "warnDiv4";
			document.getElementById(column).innerHTML = "THANK YOU!";		}
		else {
			document.getElementById(column).innerHTML ="Don't forget your birth date!!";
		}
	}
}
//============================SIGNUP LOGIN VALIDATION===============================================

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}	
function checkForm(){
	//Prompt if missing userid and password
	if((document.login.username_login.value == "") && (document.login.password_login.value == ""))	{
		document.getElementById('login_err').innerHTML = "Please enter your username and password";
		document.login.username_login.focus();
		return false;
	}
	//Prompt if missing userid
	if(document.login.username_login.value == ""){
		document.getElementById('login_err').innerHTML = "Please enter your username";
		document.login.username_login.focus();
		return false;
	}	
	//Prompt if missing password
	if(document.login.password_login.value == "")	{
		document.getElementById('login_err').innerHTML = "Please enter your password";
		document.login.password_login.focus();
		return false;
	}
	return true;
} 


function validateFormOnSubmit(signup) {
	var ERRreason = "";
	  ERRreason += validateUsername(signup.username);
	  ERRreason += validatePassword(signup.password);
	  ERRreason += validateEmail(signup.email);
	  ERRreason += validatePhone(signup.phone);
//	  ERRreason += validateMonth(signup.month);  
//	  ERRreason += validateDay(signup.day);  
	  ERRreason += validateYear(signup.year);  
	  ERRreason += validateGender(signup.gender);  
	  var hey = signup.username; 
	
	  if (ERRreason != "") {
		  document.getElementById('usernameDiv').innerHTML = validateUsername(signup.username);		 
		  document.getElementById('passwordDiv').innerHTML = validatePassword(signup.password);
		  document.getElementById('emailDiv').innerHTML = validateEmail(signup.email);
		  document.getElementById('phoneDiv').innerHTML = validatePhone(signup.phone);
//		  document.getElementById('dobDiv').innerHTML = validateDay(signup.day);  
//		  document.getElementById('dobDiv').innerHTML = validateMonth(signup.month);
		  document.getElementById('dobDiv').innerHTML = validateYear(signup.year);
		  document.getElementById('genderDiv').innerHTML = validateGender(signup.gender);
		  return false;

	  }  else if (ERRreason == ""){
		  return true;
	  
	  }
	  
  return true;
}
//============================PROFILE UPDATE VALIDATION===============================================

function validateEditProfile(updateprofile) {
	//check if verify password matches
	var pwd1 = updateprofile.password;
	var pwd2 = updateprofile.password_verify;
	var mail= updateprofile.email;
	var errorReason = "";
		
	errorReason += validatePwdProfile(pwd1);
	errorReason += validateEmailProfile(mail);

	if (pwd1.value!=pwd2.value){
		errorReason += "Confirm your password correctly! \n";			
	}	 
	if (errorReason != "") {
		 alert (errorReason);
		 return false;
	}  
	
  return true;
}

function validatePwdProfile(fld) {
    var error = "";
    var varPW = new RegExp("^[\\w-_\\.?!@#$%^&*()+=]{1,25}$");
    if (fld.value == "") {
        fld.style.border = 'orange';
        error = "You didn't enter a password.\n";       
    } 
    else if ((fld.value.length < 4) || (fld.value.length > 25)) {
    	 fld.style.border = 'orange'; 
    	 error = "4 to 25 characters \n";      
    } 
    else if (fld.value.search(varPW) == -1) {
        fld.style.border = 'orange'; 
    }   
    else {
        fld.style.background = 'White';
    }
   return error;
} 

function validateEmailProfile(fld) {
    var error="";
    var tfld = trim(fld.value);                       
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;   
    if (fld.value == "") {
        fld.style.background = 'orange';     
        error = "What's your email address?\n";
    } else if (!emailFilter.test(tfld)) {             
        fld.style.background = 'orange';    	
        error = "Not a valid email address!\n";
    } else if (fld.value.match(illegalChars)) {
        fld.style.background = 'orange';   
        error = "No illegal characters please!\n";
    } else {
        fld.style.background = 'White';
    }
    return error;
}
//============================SIGNUP INFO VALIDATION===============================================
function validateEmpty(fld) {
    var error = "";
    if (fld.value.length == 0) {
        fld.style.background = 'orange'; 
        error = "The required field has not been filled in.\n"
    } 
    else {
        fld.style.background = 'White';
    }
    return error;  
}

function validateUsername(fld) {
    var error = "";
    var varUN = new RegExp("^[\\w-_\\.]{1,25}$");

    document.getElementById('username').style.borderColor="orange";
    document.getElementById('usernameDiv').className="warnDiv3";
          
    if(unMatchCheck==0 || unMatchCheck==null){    	
    	    	
	    if (fld.value == "") {	    
	        error = "Please create a username.\n";
	    } else if ((fld.value.length < 3) || (fld.value.length > 25)) {	     
	        error = "3 to 25 characters. \n";
	    } else if (fld.value.search(varUN) == -1) {	       
	        error = "No illegal characters.\n";
	    } else {
	    	checkAvailable(fld.value);
	    	var unMatchCheckAgain = unMatchCheck; // double check to remove cache errors
	    	
	    	if (unMatchCheckAgain==1){		    		
		    	error = "That username is taken.\n";
		    } else {
		        document.getElementById('usernameDiv').className="warnDiv";
		        document.getElementById('username').style.borderColor="#CCCCCC";
		    }
	    }
	    
    } else {    	
        error = "That username is taken.\n";
    }
    return error;
}

function validatePassword(fld) {
    var error = "";
    var varPW = new RegExp("^[\\w-_\\.?!@#$%^&*()+=]{1,25}$");
    
//    document.getElementById('password').className="formBorder";
    document.getElementById('password').style.borderColor="orange";
//    document.getElementById('passwordDiv').style.color="#FFFFFF";
    document.getElementById('passwordDiv').className="warnDiv3";
    
    if (fld.value == "") {       
        error = "Please create a password.\n";        
    } 
    else if ((fld.value.length < 4) || (fld.value.length > 25)) {    	
        error = "4 to 25 characters. \n";       
    } 
    else if (fld.value.search(varPW) == -1) {        
        error = "No illegal characters.\n";
    }
   else {
        document.getElementById('passwordDiv').className="warnDiv";
        document.getElementById('password').style.borderColor="#CCCCCC";
    }
   return error;
}  
    
//function trim(s){
//  return s.replace(/^\s+|\s+$/, '');
//}

function validateEmail(fld) {
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;  
    
//    document.getElementById('emailDiv').style.color="#FFFFFF";
//    document.getElementById('email').className="formBorder";
    document.getElementById('email').style.borderColor="orange";
    document.getElementById('emailDiv').className="warnDiv3";
    
    if (fld.value == "") {
        error = "Please enter your email.\n";
    } 
    else if (!emailFilter.test(tfld)) {              //test email for illegal characters
        error = "Email not valid.\n";
    } 
    else if (fld.value.match(illegalChars)) {
        error = "No illegal characters.\n";
    } 
    else {
        document.getElementById('emailDiv').className="warnDiv";
    	document.getElementById('email').style.borderColor="#CCCCCC";
    }
    return error;
}

function validatePhone(fld) {
	var error = "";
	var phoneFilter =  /^[2-9]{1}[0-9]{2}[2-9]{1}[0-9]{6}$/;
	
	fld =  fld.value.replace(/\s/g, '');
	fld =  fld.replace(/-/g, '');
	
    document.getElementById('phone').style.borderColor="orange";
    document.getElementById('phoneDiv').className="warnDiv3";

	if (phoneNumberCheck==null){
		if (!phoneFilter.test(fld)) {        
	        error = "Please enter your phone #.\n";
	    }else {
	        document.getElementById('phoneDiv').className="warnDiv";
	        document.getElementById('phone').style.borderColor="#CCCCCC";
	    }
	}else if(phoneNumberCheck == 1){
        document.getElementById('phoneDiv').className="warnDiv";
        document.getElementById('phone').style.borderColor="#CCCCCC";
        error = "";
	}else {
		error = phoneNumberCheck;
	}
		return error;
}

/*
function validateMonth(fld) {
    var error = ""; 
    if (fld.value == 0) {
    	  document.getElementById('dobDiv').className="warnDiv3";
//          document.getElementById('dobDiv').style.color="#FFFFFF"; 
          document.getElementById('mm').className="dobBorder";
          error = "Don't forget your birth date!";
    } 
    else {
        fld.style.background = 'White';
        document.getElementById('mm').className="DOBbox";
    }
    return error;
}

function validateDay(fld) {
    var error = ""; 
    if (fld.value == 0) {
    	  document.getElementById('dobDiv').className="warnDiv3";
//          document.getElementById('dobDiv').style.color="#FFFFFF"; 
          document.getElementById('dd').className="dobBorder";
          error = "Don't forget your birth date!";
    } 
    else {
        fld.style.background = 'White';
        document.getElementById('dd').className="DOBbox";
    }
    return error;
}
*/

function validateYear(fld) {
    var error = ""; 
    if (fld.value == 0) {    
        document.getElementById('dobDiv').className="warnDiv3";
        document.getElementById('yyyy').style.borderColor = "orange";
        error = "Don't forget your birth year!";
    } else {
        document.getElementById('dobDiv').className="warnDiv";
        document.getElementById('yyyy').style.borderColor = "#CCCCCC";

//    	document.getElementById('dobDiv').style.color="white";
//        document.getElementById('yyyy').className="DOBbox";
    }
    return error;
}

function validateGender(btn) {
    var error = "";
    var cnt = -1;
    for (var i=btn.length-1; i > -1; i--){
    	if (btn[i].checked) {cnt = i; i = -1;}
 	} 
    if (cnt > -1) {
        document.getElementById('genderDiv').className ="warnDiv";
 	} 
    else {
    	error = "Please choose your gender.\n";
    	document.getElementById('genderDiv').className="warnDiv3";
 	}
 	return error;
}


function buttonMouseOut() {
	document.getElementById('submit').src="/img/button_create-account.gif";
}


function buttonMouseOver() {
	document.getElementById('submit').src="/img/button_create-account2.gif";
}

               
/*function validateAge(fld)  {
	var error = "";	
	if (!document.getElementById("age").checked){
        fld.style.background = 'orange'; 
        document.getElementById('colComDOB').style.background="#E0E0E0";
        document.getElementById('colComDOB').style.color="#CC0033";
        error = "You must agree to the age requirements";
	} else {
        fld.style.background = 'White';
	}
	return error;
}	*/
//====================================================================================
