function showothcity()
{
	if(document.add_data.city.value=="Other")	
	{
		if(document.add_data.othercity.value == "") {
			document.add_data.othercity.value						= "Enter your city here";
		}
		document.getElementById("div_othcity").style.display		= "block";
		document.getElementById("div_othcity").style.visibility		= "visible";
	}
	else
	{
		document.add_data.othercity.value							= "";
		document.getElementById("div_othcity").style.display		= "none";
		document.getElementById("div_othcity").style.visibility		= "hidden";
	}
}

function isDate()	{
	var yy,mm,dd;
	var im,id,iy;
	var present_date = new Date();
	yy = 1900 + present_date.getYear();
	if (yy > 3000)	{
		yy = yy - 1900;
	}
	mm = present_date.getMonth();
	mm = mm + 1;
	dd = present_date.getDate();
	im = document.add_data.dob_month.selectedIndex;
	var entered_month = document.forms[0].dob_month.options[im].value;
	var invalid_month = document.forms[0].dob_month.options[im].value-1;
	var entered_day = document.forms[0].dob_day.value;
	var entered_year = document.forms[0].dob_year.value;
	if ( (entered_day == 0) || (entered_month == 0) || (entered_year == 0) )	{
		alert("Please enter your birthday");
		return false;
	}
	if ( is_valid_day(invalid_month,entered_day,entered_year) )	{
		return true;
	}
	return false;
}

function is_valid_day(entered_month,entered_day,entered_year)	{
	
	if ((entered_year % 4) == 0)
	{
		var days_in_month = "312931303130313130313031";
 	}
 	else	{

		var days_in_month = "312831303130313130313031";
 	}
	if (entered_month != -1)
	{
		if ( parseInt(entered_day) > parseInt(days_in_month.substring(2*entered_month,2*entered_month+2)) )
		{
			alert ("The birthday field is entered wrongly (the day field value exceeds the number of days for the month entered).");
			return false;
		}
	}
	return true;
}



// User Name Validator
function isLogin()	{
	var str = document.add_data.user_name.value;

if ((str == "") || (str.length < 4))
	{
		alert("\nThe user Name field is less than 4 chars.\n\nPlease enter your User Name.")
		document.add_data.user_name.focus();
		return false;
	}

	if (str == "")	{	// is not null
			alert("\User Name cannot be blank, please enter your desired User Name")
			document.add_data.user_name.focus();
			return false;
	}
	
	for (var i = 1; i < str.length; i++)	{ // shud contain only alphanumeric values and shud _ and .
		var ch = str.substring(i, i + 1);
		if ( ((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && (ch < "0" || "9" < ch) && (ch != '_') && (ch != '.'))
		{
			alert("\nThe User Name field  accepts letters,numbers & underscore.\n\nPlease re-enter your User Name.");
			document.add_data.user_name.select();
			document.add_data.user_name.focus();
			return false;
		}
	}
	
	var regex_login_end		= /[A-Za-z0-9]$/ ;
	var	regex_login_start	= /^[A-za-z]/;

	if(  document.add_data.user_name.value.search(regex_login_start) == -1 ) {
		alert("User Name should begin with an alphabetic character");
		document.add_data.user_name.focus;
		return false;
	}

	if(  document.add_data.user_name.value.search(regex_login_end) == -1 ) {
		alert("User Name should not end with special characters");
		document.add_data.user_name.focus;
		return false;

	}

//
	return true;
}


// Password Validator
function isPass()	{
	var str = document.add_data.password.value;
	if ((str == "") || (str.length < 6))
	{
		alert("\nThe password field is either empty or less than 6 chars.\n\nPlease enter your password.")
		document.add_data.password.focus();
		return false;
	}
	var str2 = document.add_data.re_password.value;
	if (str != str2)
	{
		alert("Passwords typed do not match, please re-enter your passwords.\n\n");
		return false;
	}
	return true;
}

// First Name Validator
function isFName()	{
	var name1 = document.add_data.f_name.value;
	var regex_for_name	= /^[A-Za-z]+ [A-Za-z]+$/
	var alt_regex_for_name	= /^[A-Za-z]+$/
	if(   (name1.search(regex_for_name) != -1)  || (name1.search(alt_regex_for_name) != -1 ) ) {
			return true;
	} else {
		alert("Name is invalid");
		document.add_data.f_name.focus();
		return	false;	
	}

}


// Last Name Validator
function isLName()	{
	var name1 = document.add_data.l_name.value;
	var regex_for_name	= /^[A-Za-z]+ [A-Za-z]+$/
	var alt_regex_for_name	= /^[A-Za-z]+$/
	if(   (name1.search(regex_for_name) != -1)  || (name1.search(alt_regex_for_name) != -1 ) ) {
			return true;
	} else {
		alert("Name is invalid");
		document.add_data.l_name.focus();
		return	false;	
	}

}

//Hint Question Validator
/*function ishintq()	{
	var name1 = document.add_data.hintq.value;
	var regex_for_name	= /^[A-Za-z]+ [A-Za-z]+$/
	var alt_regex_for_name	= /^[A-Za-z]+$/
	if(   (name1.search(regex_for_name) != -1)  || (name1.search(alt_regex_for_name) != -1 ) ) {
			return true;
	} else {
		alert("Hint Question is not selected");
		document.add_data.hintq.focus();
		return	false;	
	}

}
*/
//Hint Answer Validator
function ishinta()	{
	var name1 = document.add_data.hinta.value;
	var regex_for_name	= /^[A-Za-z]+ [A-Za-z]+$/
	var alt_regex_for_name	= /^[A-Za-z]+$/
	if(   (name1.search(regex_for_name) != -1)  || (name1.search(alt_regex_for_name) != -1 ) ) {
			return true;
	} else {
		alert("Hint Answer is invalid");
		document.add_data.hinta.focus();
		return	false;	
	}

}



// Mother's Maiden Name Validator
function ismaiden()	{
	var name1 = document.add_data.maiden.value;
	var regex_for_name	= /^[A-Za-z]+ [A-Za-z]+$/
	var alt_regex_for_name	= /^[A-Za-z]+$/
	if(   (name1.search(regex_for_name) != -1)  || (name1.search(alt_regex_for_name) != -1 ) ) {
			return true;
	} else {
		alert("Mother's Maiden is invalid");
		document.add_data.maiden.focus();
		return	false;	
	}

}
//State Validator
function isstate()	{
	var name1 = document.add_data.state.value;
	var regex_for_name	= /^[A-Za-z]+ [A-Za-z]+$/
	var alt_regex_for_name	= /^[A-Za-z]+$/
	if(   (name1.search(regex_for_name) != -1)  || (name1.search(alt_regex_for_name) != -1 ) ) {
			return true;
	} else {
		alert("State is invalid");
		document.add_data.state.focus();
		return	false;	
	}

}


// Phone No. Validator
function isphone()	{
	var str = document.add_data.phone.value;
	if ((str == "") || (str.length < 10))
	{
		alert("\nThe Phone no is either empty or less than 10 chars.\n\nPlease enter your Phone No.")
		document.add_data.password.focus();
		return false;
	}
}

// Address Validator
function isaddress()	{
var str = document.add_data.address.value;
	if ((str == "") || (str.length < 8))
	{
		alert("\nThe Address field is either empty or less than 8 chars.\n\nPlease enter your Address.")
		document.add_data.address.focus();
		return false;
	}
}

//Zip code Validator
function iszip()	{
	var name1 = document.add_data.zip.value;
	var regex_for_name	= /^[0-9]+ [0-9]+$/
	var alt_regex_for_name	= /^[0-9]+$/
	if(   (name1.search(regex_for_name) != -1)  || (name1.search(alt_regex_for_name) != -1 ) ) {
	//return true;
	var str = document.add_data.zip.value;
	if ((str == "") || (str.length < 5))
	{
		alert("\nThe Zip code is either empty or less than 5 chars.\n\nPlease enter your Zip Code.")
		document.add_data.zip.focus();
		return false;
	}

	} else {
		alert("Zip Code is invalid");
		document.add_data.zip.focus();
		return	false;	
	}

}

function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   alert("Invalid E-mail")
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid E-mail")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid E-mail")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid E-mail")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid E-mail")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid E-mail")
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Invalid E-mail")
		    return false
		 }

 		 return true					
	}


function ValidateAltEmail() {

	var emailID=document.add_data.e_mail;
	
	if(emailID.value == '' ) {
		alert("Invalid E-mail");
		emailID.focus()
		return false;	
	}
	
	if (echeck(emailID.value)==false) {
			emailID.focus()
			return false
	}
	
	return true;
 }


function validate()	{

	if ( isFName() == false )	{	 // Checks the First Name
		return false;			
	} // End of check first Name

	if ( isLName() == false )	{	 // Checks the Last Name
		return false;			
	} // End of check Last Name

	if ( isLogin() == false )	{	 // Checks the User Name
		return false;			
	} // End of check user Name

	if (isPass() == false)	{	// Checks the password and Confirm Password
		return false;
	}

	if ( ValidateAltEmail() == false )	{	 // Checks E-mail
		return false;			
	} 


/*
	if ( ishintq() == false )	{	 // Checks the Hint Question
		return false;			
	}
*/
	if ( ishinta() == false )	{	 // Checks the Hint Answer
		return false;			
	}

	if ( ismaiden() == false )	{	 // Checks the Mother's Maiden Name
		return false;			
	}

	if ( isphone() == false )	{	 // Checks Phone No.
		return false;			
	}

	if ( isaddress() == false )	{	 // Checks Address.
		return false;			
	}

	if ( isstate() == false )	{	 // Checks State
		return false;			
	}


	if ( iszip() == false )		{	 // Checks Zip Code.
		return false;			
	}

/* Additional validations for Birth date begins*/
	if(document.add_data.dob_month.value == "")
	{
		alert("Select a month of birth");
		document.add_data.dob_month.focus();
		return false;	
	}
	if(isNaN(document.add_data.dob_day.value))
	{
		alert("Enter a valid date of birth");
		document.add_data.dob_day.value="";
		document.add_data.dob_day.focus();
		return false;
	}
	if(document.add_data.dob_day.value <= 0 || document.add_data.dob_day.value > 31 )
	{
		alert("Enter a valid date of birth");
		document.add_data.dob_day.value="";
		document.add_data.dob_day.focus();
		return false;
	}
	if(isNaN(document.add_data.dob_year.value))
	{
		alert("Enter a valid year of birth");
		document.add_data.dob_year.value="";
		document.add_data.dob_year.focus();
		return false;
	}
	var present_date = new Date();
	curr_year	= 1900 + present_date.getYear();
        if (curr_year > 3000)  {
                curr_year = curr_year - 1900;
        }
	if(document.add_data.dob_year.value <= 1900 || document.add_data.dob_year.value > curr_year )
	{
		alert("Enter a valid year of birth");
		document.add_data.dob_year.value="";
		document.add_data.dob_year.focus();
		return false;
	}
/* Additional validations for Birth date ends */

	if (isDate() == false)	{	// Checks the Date of Birth
		return false;
	}

	if(document.add_data.gender.value=="")	{
		alert("Please select gender.");
		document.add_data.gender.focus();
		return false;
	}

	if(document.add_data.country.value=="")	{
		alert("Please select country.");
		document.add_data.country.focus();
		return false;
	}




} // End of Function Validate
