/*

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Created by: Lee Hinder, lee.hinder@ntlworld.com -->
<!-- Modified by: Fontaine Shu -->
*/

// field names
var BIRTHDATE_FIELD = "birth-date";
var BIRTHMONTH_FIELD = "birth-month";
var BIRTHYEAR_FIELD = "birth-year";

//set todays date
var Now = new Date();
var NowDay = Now.getDate();
var NowMonth = Now.getMonth() + 1;	// returns from 0-11
var NowYear = Now.getYear();
if (NowYear < 2000) NowYear += 1900; //for Netscape

//function for returning how many days there are in a month including leap years
function DaysInMonth(WhichMonth, WhichYear) {
	var DaysInMonth = 31;
	if (WhichMonth == "April" || WhichMonth == "June" || WhichMonth == "September" || WhichMonth == "November") DaysInMonth = 30;
	if (WhichMonth == "February" && (WhichYear/4) != Math.floor(WhichYear/4))	DaysInMonth = 28;
	if (WhichMonth == "February" && (WhichYear/4) == Math.floor(WhichYear/4))	DaysInMonth = 29;
	return DaysInMonth;
}

//function to change the available days in a months
function ChangeOptionDays() {
	var DaysObject = document.getElementById(BIRTHDATE_FIELD);
	var MonthObject = document.getElementById(BIRTHMONTH_FIELD);
	var YearObject = document.getElementById(BIRTHYEAR_FIELD);
	
	var Month = MonthObject[MonthObject.selectedIndex].text;
	var Year = YearObject[YearObject.selectedIndex].text;
	
	var DaysForThisSelection = DaysInMonth(Month, Year);
	var CurrentDaysInSelection = DaysObject.length;
	
	if (CurrentDaysInSelection > DaysForThisSelection) {
		for (i=0; i<(CurrentDaysInSelection-DaysForThisSelection); i++) {
		  	DaysObject.options[DaysObject.options.length - 1] = null
		}
	}
	
	if (DaysForThisSelection > CurrentDaysInSelection) {
		for (i=0; i < (DaysForThisSelection-CurrentDaysInSelection); i++) {
			NewOption = new Option(DaysObject.options.length + 1, DaysObject.options.length + 1);
			DaysObject.options[DaysObject.options.length] = NewOption;
		}
	}
	
	if (DaysObject.selectedIndex < 0) DaysObject.selectedIndex == 0;
	
	// check if not under 13, if over 13, show full name field
	if(isUnder13()) {
		document.getElementById('register-fullName').style.display = 'none';
		document.getElementById('register-zipcode').style.display = 'none';
		document.getElementById('register-email').style.display = 'none';
		document.getElementById('register-parent-email').style.display = 'block';
	}
	else {
		document.getElementById('register-fullName').style.display = 'block';
		document.getElementById('register-zipcode').style.display = 'block';
		document.getElementById('register-email').style.display = 'block';
		document.getElementById('register-parent-email').style.display = 'none';
	}
}

//function to write option years plus x
function WriteYearOptions(YearsPast, selectedYear) {
    if( document.getElementById("birth-year") ) {
        var selectOpt = document.createElement("option");
        selectOpt.innerHTML = 'select';
        document.getElementById("birth-year").appendChild(selectOpt);

        for (i = 0; i < YearsPast; i++) {
            var line = "";
            var opt = document.createElement("option");
            opt.value = NowYear - i;
            opt.innerHTML = NowYear - i;
        
            document.getElementById("birth-year").appendChild(opt);
            if( opt.value == selectedYear ) {
                opt.selected = true;
            }
        }
    }
}

// checks for age validity
function isUnder13() {
	var DaysObject = document.getElementById(BIRTHDATE_FIELD);
	var MonthObject = document.getElementById(BIRTHMONTH_FIELD);
	var YearObject = document.getElementById(BIRTHYEAR_FIELD);
	
	var d = DaysObject[DaysObject.selectedIndex].text;
	var m = MonthObject[MonthObject.selectedIndex].value;
	var y = YearObject[YearObject.selectedIndex].text;
	
	if ((NowYear - y) > 13) {
		return false;  
	}
	
	if ((NowYear - y) == 13 && NowMonth >= m && NowDay >= d) {
		return false;
	}
	
	return true;
}

function checkUsername(event)
{
    var keypressed;

    if( event ) {
        if( event.keyCode ) {
            keypressed = String.fromCharCode(event.keyCode);
        }
        else if( event.which ) {
            keypressed = String.fromCharCode(event.which);
        }
    }

    var username = document.getElementById("username").value;

    username += keypressed;

    // chekc for weirdness
    var url = "/validate/username/" + username;
    jQuery.getJSON(url, null, processUsername);
    username = "";
}

function processUsername(jsonData)
{
	/*var obj = document.getElementById("username_error");
	obj.className = "realNameMsg";
	obj.innerHTML = "";
    obj.innerHTML += "Please do not use your last name in your account name.";*/
	document.getElementById("username_error").innerHTML = "";
	
    if( jsonData['valid'] == false ) {
		var obj = document.getElementById("username_error");
        obj.innerHTML = "";
        obj.innerHTML += "The username has naughty words!!!";
    }

    if( jsonData['duplicate'] == true ) {
		var obj = document.getElementById("username_error");
        obj.innerHTML = "";
        obj.innerHTML += "The username you've selected already exists!!!";
    }
}

// initialize
$(document).ready(function(){
    if( selectedYear > 0) {
        WriteYearOptions(120, selectedYear);
        ChangeOptionDays();
    }
    else {
	    WriteYearOptions(120);
    }
});
