$(function(){
	$(".join-cde").click(function(e){
		$.facebox({ ajax: '/cdeprofile/profile_register/ajax/register.html?action=index&r='+rd+'&reqid='+Math.random()});
		e.preventDefault();
		return false;
	});
});

var email_exists = false;
var check_second = false;
var checkpassword = false;
var username_exists = false;
var Birth_Updated = false;
var state_not_province = true;
var consent_required = false;
function show_popup(URL){
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=400,height=600,left = 440,top = 212');");
}


function change_css(theClass,element,value) {
	//documentation for this script at http://www.shawnolson.net/a/503/
	var cssRules;
	if (document.all) {
		cssRules = 'rules';
	}
	else if (document.getElementById) {
		cssRules = 'cssRules';
	}
	for (var S = 0; S < document.styleSheets.length; S++){
		for (var R = 0; R < document.styleSheets[S][cssRules].length; R++) {
			if (document.styleSheets[S][cssRules][R].selectorText == theClass) {
				document.styleSheets[S][cssRules][R].style[element] = value;
			}
		}
	}
}

function is_numeric(sText)

{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
}

function check_username()
{
	var username = document.getElementById('username').value;

	if (username.length > 21) {
		document.getElementById('username_available').innerHTML = 'max username length is 21 characters';
	}
	else {
		var d = new Date();
        var t = d.getTime();
		sendRequestTextGet('/cdeprofile/ajax_check_username.html', 'time=' + t + '&username=' + escape(username), 'ajax_checkUserName');
	}
}

function check_referrer()
{
	var username = document.getElementById('referrer').value;
	sendRequestTextGet('/cdeprofile/ajax_check_referrer.html', 'username=' + escape(username), 'ajax_checkReferrer');
}

function check_user_email()
{
	if (check_second && document.getElementById('email').value != '' &&  document.getElementById('confirm_email').value != '' )
	{
		if (document.getElementById('email').value != document.getElementById('confirm_email').value) {
			document.getElementById('c_email_label').style.color = 'red';
			document.getElementById('c_email_available').innerHTML = "Sorry your emails do not match";
		} else
		{
			document.getElementById('c_email_label').style.color = 'white';
			document.getElementById('c_email_available').innerHTML = '';
		}
	}
	var email = document.getElementById('email').value;
	//var yahoo_email=/yahoo.com$/ 
	if (email.length > 45) {
	    document.getElementById('email_label').style.color = 'red';
		document.getElementById('email_available').innerHTML = 'max email length is 45 characters';
	}
//	else if (yahoo_email.test(email))
   // {
    //    document.getElementById('email_label').style.color = 'red';
   //     document.getElementById('email_available').innerHTML = 'We are temporarily unable to confirm Yahoo e-mail addresses. Please try another e-mail address';
  //  }
    else{

        document.getElementById('email_label').style.color = 'white';
		document.getElementById('email_available').innerHTML = '';

		sendRequestTextGet('/cdeprofile/ajax_check_email.html', 'email=' + escape(email), 'ajax_checkEmail');
	}
}

function does_not_require_consent()
{
	consent_required = false;
	change_css('.cdeprofiletable_parent_table','display','none');
}

function requires_consent()
{
	consent_required = true;
	change_css('.cdeprofiletable_parent_table','display','block');
}

function old_enough(dob_year,dob_month,dob_day_of_month,finalCheck)
{
	var currentTime = new Date();
	var current_year = currentTime.getFullYear();
	var current_month = currentTime.getMonth()+1;
	var current_day_of_month = currentTime.getDate();
	// nested if statements perform this function fast!!
	if ( dob_year >= (current_year - 13))
	{
		if (dob_year == (current_year - 13))
		{
			if (dob_month <=  (current_month))
			{
				if (dob_month == current_month)
				{
					if (dob_day_of_month <= (current_day_of_month) )
					{
						if (dob_day_of_month == current_day_of_month) // HAPPY BIRTHDAY
						{
							if(finalCheck == 'true') {
								alert('Happy Birthday from Cartoon Doll Emporium!!!');
							}
						}
					} else { return false; } // not 13
				}
			} else { return false; } // not 13
		} else { return false; } // not 13
	}
	return true;
}




function check_second_email()
{
	check_second = true;
	check_user_email();
}

function check_password()
{
   if( checkpassword && document.getElementById('first_password').value  != '' &&  document.getElementById('confirm_password').value != '' )
   {
	if (document.getElementById('first_password').value != document.getElementById('confirm_password').value) {
		document.getElementById('c_password_label').style.color = 'red';
		document.getElementById('c_password_notes').innerHTML = "<br/>Sorry your passwords do not match";
	} else
	{
		document.getElementById('c_password_label').style.color = 'white';
		document.getElementById('c_password_notes').innerHTML = "";
	}
   }

}

function check_second_password()
{
	checkpassword = true;
	check_password();
}


function check_field_birthset()
{
	var error_msg = '';


	if (Birth_Updated == false)
	{
		error_msg += "<div class='errortop'></div><div class='errormessage'>Please fill out your birthdate.</div>";
	}
	return error_msg;

}


//validate date of birth more
function get_valid_date(year,month)
{
	var validDate = 31;
	
	if(month == 4 || month == 6 || month == 9 || month == 11)
	{
		validDate = 30;
	}
	
	if(month == 2)
	{
		validDate = days_in_february(year);
	}

	return validDate;
}
function days_in_february(year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}





function date_acceptable(year,month,day)
{
        var birthdate_msg = '';
        var error_msg = true;
        var currentTime = new Date();
		var validDate = get_valid_date(year,month);
        /** 
        * @todo replace these with atomitized functions check_year, check_month, etc. Use for this and check_field_Birth()
        *
        */

        if (  year!= 'yyyy' &&  ((year > currentTime.getFullYear()) || (year < (currentTime.getFullYear()  - 150) ) || !is_numeric(year))      )
        {
              error_msg = false;
              birthdate_msg += "<br/>Please select a valid birth year." ;
        }

        if ( month > 12 || month < 0 || !is_numeric(month) )
        {
             error_msg =  false;
             birthdate_msg += "<br/>Please select a valid birth month.";
        }

        if  ( day != 'dd' && (day > validDate || day < 0 || !is_numeric(day)) )
        {
             error_msg =  false;
             birthdate_msg += "<br/>Please select a valid day of month.";
        }

       if ( year == 'yyyy' || day == 'dd' ) error_msg = false;

       document.getElementById('birthdate_message').innerHTML = birthdate_msg;
       return error_msg;
}

function check_field_birth()
{
	var error_msg = '';
	var year = document.getElementById('year').value;
	var month = document.getElementById('month').value;
	var day = document.getElementById('day').value;
	var validDate = get_valid_date(year,month);
	
	var currentTime = new Date();


	if ( (year > currentTime.getFullYear()) || (year < currentTime.getFullYear()  - 150 ) || !is_numeric(year)   )
	{
		error_msg += "<div class='errortop'></div><div class='errormessage'>Please enter your correct birth year in yyyy format. Example 1995</div>";
	}

	if ( month > 12 || month < 0  || !is_numeric(month) )
	{
		error_msg += "<div class='errortop'></div><div class='errormessage'>Please enter your correct birth month mm in mm format. </div>";
	}

	if  (day > validDate || day < 0 || !is_numeric(day) )
	{
		error_msg += "<div class='errortop'></div><div class='errormessage'>Please enter your correct birth day of month.</div>";
	}
	/*
	if (!old_enough(year,month,day,'true') && !document.getElementById('parent_consent').checked)
	{
		document.getElementById('month').style.color = 'red';
		document.getElementById('day').style.color = 'red';
		document.getElementById('year').style.color = 'red';
		error_msg += "<div class='errortop'></div><div class='errormessage'>You must be over the age of 13 or have your parents consent to be on this site.</div>";
	} else if ( !old_enough(year,month,day,'true')  && document.getElementById('parent_consent').checked )
	{
		if( document.getElementById('parent_email').value == '') 		error_msg += "<div class='errortop'></div><div class='errormessage'>Your parent must enter their email address.</div>";
		if( document.getElementById('parent_email').value == '') 		error_msg += "<div class='errortop'></div><div class='errormessage'>Your parent must enter their name.</div>";
	}
	*/
	return error_msg;
}

function check_field_username()
{
	var error_msg = '';
	if (document.getElementById('username').value == '') {
		error_msg += "<div class='errortop'></div><div class='errormessage'>You must enter a username (max length 21 characters).</div>";
		document.getElementById('username_label').style.color = 'red';
	}
	else {

		// replace with if (username_exists != true)
   testvar = 'ok';
		if (!username_exists ) {
			document.getElementById('username_label').style.color = 'red';
			error_msg +=  "<div class='errortop'></div><div class='errormessage'>You must provide a valid username!</div>";
		}


		var un = document.getElementById('username').value;
		if (un.length > 21) {
			error_msg += "<div class='errortop'></div><div class='errormessage'>Your username has a max length of 21 characters.</div>";
			document.getElementById('username_label').style.color = 'red';
		}

		var numcheck = /[^a-zA-Z0-9_]/
		if (numcheck.test(un)) {
			error_msg += "<div class='errortop'></div><div class='errormessage'>Your username may only contain letters, numbers and _.</div>";
			document.getElementById('username_label').style.color = 'red';
		}
	}
	return error_msg;
}

function check_field_email()
{
	var error_msg = '';
	if (email_exists == true) {
		//      email_exists = false;
		error_msg += "<div class='errortop'></div><div class='errormessage'> Email address already registered.</div>";
		document.getElementById('email_label').style.color = 'red';
	}

	if (document.getElementById('email').value == '' || document.getElementById('email').value.indexOf('@') == -1) {
		error_msg += "<div class='errortop'></div><div class='errormessage'>You must provide a valid email address.</div>";
		document.getElementById('email_label').style.color = 'red';
	}

	if (document.getElementById('email').value != document.getElementById('confirm_email').value) {
		error_msg += "<div class='errortop'></div><div class='errormessage'>The email addresses you entered do not match.</div>";
		document.getElementById('email_label').style.color = 'red';
		document.getElementById('c_email_label').style.color = 'red';
	}
	return error_msg;
}


function check_field_password()
{
	var error_msg = '';

	if (document.getElementById('first_password').value != document.getElementById('confirm_password').value) {
		error_msg += "<div class='errortop'></div><div class='errormessage'>The passwords you entered do not match.</div>";
		document.getElementById('password_label').style.color = 'red';
		document.getElementById('c_password_label').style.color = 'red';
	}

	if (document.getElementById('first_password').value == '') {
		error_msg += "<div class='errortop'></div><div class='errormessage'>You must enter a password.</div>";
		document.getElementById('password_label').style.color = 'red';
	}
	else {
		var pw = document.getElementById('first_password').value;
		if (pw.length <6) {
			error_msg += "<div class='errortop'></div><div class='errormessage'>Your password must be at least 6 characters in length.</div>";
			document.getElementById('password_label').style.color = 'red';
		}
		if (pw.length > 16) {
			error_msg += "<div class='errortop'></div><div class='errormessage'>Your password has a max length of 16 characters.</div>";
			document.getElementById('password_label').style.color = 'red';
		}

		var numcheck = /[^a-zA-Z0-9_]/
		if (numcheck.test(pw)) {
			error_msg += "<div class='errortop'></div><div class='errormessage'>Your password may only contain letters, numbers and _. No special characters.</div>";
			document.getElementById('password_label').style.color = 'red';
		}
	}
	return error_msg;

}


function check_field_name()
{
	var error_msg = '';

	if (document.getElementById('name').value == '') {
		error_msg += 'You must enter a name.<br />';
		document.getElementById('name_label').style.color = 'red';
	}

	return error_msg;
}

function check_field_terms()
{
	var error_msg = '';
	if (!document.getElementById('terms_and_conditions').checked) {
		error_msg += "<div class='errortop'></div><div class='errormessage'>You must agree to the terms and conditions.</div>";
		//    document.getElementById('terms_label').style.color = 'red';
	}
	return error_msg;
}

function check_field_parents()
{
	var error_msg = '';

	// parent or guardian consent
	if (consent_required == true ) {
		if (document.getElementById('parent_email').value == '' || document.getElementById('parent_email').value.indexOf('@') == -1) {
			error_msg += "<div class='errortop'></div><div class='errormessage'>Your parent or guardian must provide a valid email address.</div>";
			document.getElementById('parent_email_label').style.color = 'red';
		}
		if (document.getElementById('parent_name').value == '') {
			error_msg += "<div class='errortop'></div><div class='errormessage'>Your parent or guardian must provide thier name.</div>";
			document.getElementById('parent_name_label').style.color = 'red';
		} else
		{
			var un = document.getElementById('parent_name').value;
			var namecheck = /[^a-zA-Z \'\.,]/
			if (namecheck.test(un))
			{
				error_msg += "<div class='errortop'></div><div class='errormessage'>Your parent or guardian may only have letters in their name.</div>";
				document.getElementById('parent_name_label').style.color = 'red';
			}
		}
		if(!document.getElementById('parent_consent').checked) {
			error_msg += "<div class='errortop'></div><div class='errormessage'>Your parent or guardian must agree to the terms and conditions.</div>";
		}
	}

	return error_msg;
}

function check_old_enough()
{
	var year = document.getElementById('year').value;
	var month = document.getElementById('month').value;
	var day = document.getElementById('day').value;
	Birth_Updated = true;

	if ( date_acceptable(year,month,day) && (!old_enough(year,month,day,'false') || isNaN(parseInt(year)) ) )
	{
	//	document.getElementById('underage_yes').checked = 'checked';
        document.getElementById('age'). value = 0;
        //sendRequestTextGet('set_under_13.php', '', 'none');
		//requires_consent()
	} else {
		//does_not_require_consent()
		document.getElementById('age'). value = 1;

	//	document.getElementById('underage_no').checked = 'checked';
	}
}

function form_check( page )
{
	switch (page)
	{
		case 0: // Main Page
		return check_main_page();
		break;
		
		case 1:
		return check_parent_consent_page();
		break;
		
		case 2:
		return check_register_page();
		break;
	}

}

function check_parent_consent_page()
{
	error_msg = '';
	consent_required = true;
	var error_msg = '';
	error_msg += check_field_parents();
	document.getElementById('error').innerHTML = error_msg;
	return( error_msg == '' );
}

function check_register_page()
{
	error_msg = '';
	var error_msg = '';
	error_msg += check_field_terms();
	document.getElementById('error').innerHTML = error_msg;
	return( error_msg == '' );
}

function check_main_page()
{
	error_msg = '';
	var error_msg = '';
	error_msg += check_field_username();
	error_msg += check_field_email();
	error_msg += check_field_password();

	error_msg += check_field_birthset();
	
	if(Birth_Updated) error_msg += check_field_birth(); // This is only called if the user has set their birthday otherwise they are asked to set their birthday.
 
	//error_msg += check_field_parents();
	document.getElementById('error').innerHTML = error_msg;
	return( error_msg == '' );
}

