var green_check = "<img src='/images/green_check.png' height='20px' width='20px' />";
var red_x = "<img src='/images/red_x.png' height='20px' width='20px' />";
var ajax_reg_file = "/register";
var ajax_login_file = "/login";
var user_ok = false;
var email_ok = false;
jQuery.fn.center = function () {
        this.css("position","absolute");
		var top = Math.max(($(window).height() - this.height() ) / 3+$(window).scrollTop(),0);
		var left = Math.max(($(window).width() - this.width() ) / 2+$(window).scrollLeft(),0);
        this.css("top",   top+ "px");
        this.css("left",  left + "px");
        return this;
    }
jQuery.fn.overlay = function (callback) {
		if (typeof callback =='string' ){			
				if(callback == 'close'){
					$("#overlay").fadeOut();
					return;
				}	
		}
        if($("#overlay").length==0){
			$('body').append("<div id='overlay'/>");
		}
		$("#overlay").show("blind");
		
		$("#overlay").click(function(){
			
			$(this).fadeOut();
			if(typeof callback == 'function'){
				callback();
			}
		});

    }
function checkUsername(){
	var val = $("[name=username_reg]").val();
	if(val.length>=4){
		if (val.match(/^[a-zA-Z0-9]{4}/)!=null)
		{
			$.ajax({
				type:"POST",
				url:ajax_reg_file,
				data:"username_check=true&username="+val,
				success:function(msg){
					if(msg==0){
						$("#username_check").html(green_check);
						user_ok=true;
						return true;
					}else{
						$("#username_check").html(red_x+"<div style='width:90px' class='fr'>Username already taken</div>");
						user_ok=false;
						return false;
					}
				},
				error:function(msg){
											$("#username_check").html(red_x+"<div style='width:90px' class='fr'>Error not available</div>");
				}
			});
		}
		else
		{
			$("#username_check").html(red_x+"<div style='width:90px' class='fr'>Invalid Username</div>");
			user_ok=false;
			return false;
		} 
	}else{
		$("#username_check").html(red_x+"<div style='width:90px' class='fr'>Must be at least 4 characters long</div>");
		user_ok=false;
		return false;
	}
}
function checkEmail(){
	var val = $("[name=email]").val();
	if (val.match(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i)!=null)
		{
			$.ajax({
				type:"POST",
				url:ajax_reg_file,
				data:"email_check=true&email="+val,
				success:function(msg){
					if(msg==0){
						$("#email_check").html(green_check);
						email_ok=true;
						return true;
					}else{
						$("#email_check").html(red_x+"<div style='width:90px' class='fr'>Email already taken</div>");
						email_ok=false;
						return false;
					}
				},
				error:function(msg){
						$("#email_check").html(red_x+"<div style='width:90px' class='fr'>Error not available</div>");
						email_ok=false;
						return false;
				}
			});
		}else{
			$("#email_check").html(red_x+"<div style='width:90px' class='fr'>Invalid Email</div>");
			email_ok=false;
			return false;
		}

}
function checkPassword(){
	if($("[name=password1]").val().length>=8){
		if($("[name=password1]").val().match(/^[a-zA-Z0-9]{8}/)==null){
			$("#password_1_check").html(red_x+"<div style='width:90px' class='fr'>Numbers and Letters only</div>");
			return false;
		}
		$("#password_1_check").html(green_check);
		return true;
	}else{
		$("#password_1_check").html(red_x+"<div style='width:90px' class='fr'>Must be at least 8 characters long</div>");
		return false;
	}
		
}
function checkPasswordMatch(){
	if($("[name=password1]").val().length){
		if($("[name=password1]").val()==$("[name=password2]").val()){
			$("#password_2_check").html(green_check);
			return true;
		}else{
			$("#password_2_check").html(red_x+"<div style='width:90px' class='fr'>Passwords don't match</div>");
			return false;
		}	
	}else{
		$("#password_1_check").html(red_x);
		$("#password_2_check").html(red_x);
		return false;
	}
}
function checkGender(){
	if($("input[name=gender]:checked").length==0){
		$("#female_check").html(red_x);
		return false;
	}
	if($("input[name=gender]:checked").val()=="Female"){
		$("#male_check").html("");
		$("#female_check").html(green_check);
		return true;
	}
	if($("input[name=gender]:checked").val()=="Male"){
		$("#female_check").html("");
		$("#male_check").html(green_check);
		return true;
	}
}
function checkAge(){
	var pmonth = $("select[name=reg_month] option:selected").val();
	var pday = $("select[name=reg_day] option:selected").val();
	var pyear = $("select[name=reg_year] option:selected").val();	
	
	var today = new Date();
	year = today.getFullYear() ;
	month = today.getMonth();
	day = today.getDate();

	if ( month < pmonth ){
	age = year - pyear - 1;
	}
	else if ( month > pmonth ){
	age = year - pyear;
	}
	else if ( month == pmonth ){
	if ( day < pday ){
	age = year - pyear - 1;
	}
	else if ( day > pday ){
	age = year - pyear;
	}
	else if ( day == pday ){
	age = year - pyear;
	}
	}
	if(age>18){
		$("#age_check").html(green_check);
		return true;
	}else{
		$("#age_check").html(red_x);
		return false;
	}
}

$(function(){

	$("#login,#logged_in").live("click",function(){
		if($("#login_top").is(":hidden")){
			$("#login_arrow").animate({rotate: '90deg',paddingTop:10,marginBottom:0,marginLeft:0,marginRight:10}, 500);
			$("#login_top").show("blind");
		}else{
			$("#login_top").hide(200);
			$("#login_arrow").animate({rotate: '0deg',paddingTop:0,marginBottom:10,marginLeft:7,marginRight:0}, 500);
		}
		
	});
	$("#register").live("click",function(){
		$("#login_top").hide(200);
		$("#login_arrow").animate({rotate: '0deg',paddingTop:0,marginBottom:10,marginLeft:7,marginRight:0}, 500);
		
		$().overlay(function(){
			$("#registration_form").fadeOut();
		});
		$(".close_button").live("click",function(){
			$("#registration_form").fadeOut();
			$().overlay("close");
		});
		$("#registration_form").center().show("blind");
	});
	$("#register_button").live("click",function(){
		if(!user_ok){
			 checkUsername();
		}
		if(!email_ok){
			 checkEmail();
		}
		if(user_ok&&email_ok&&checkPasswordMatch()&&checkGender()&&checkAge()){
			if($("[name=terms_check]:checked").length){
				$("#term_wrap").css("border","");
				var time = new Date()
				time =  time.getTime();
				var data = "tz="+encodeURIComponent(time)+
							"&recaptcha_challenge_field="+
							encodeURIComponent($("[name=recaptcha_challenge_field]").val())+
							"&recaptcha_response_field="+
							encodeURIComponent($("[name=recaptcha_response_field]").val())+
							"&username_reg="+encodeURIComponent($("[name=username_reg]").val())+
							"&email="+encodeURIComponent($("[name=email]").val())+
							"&reg_month="+encodeURIComponent($("select[name=reg_month] option:selected").val())+
							"&reg_day="+encodeURIComponent($("select[name=reg_day] option:selected").val())+
							"&reg_year="+encodeURIComponent($("select[name=reg_year] option:selected").val())+
							"&gender="+encodeURIComponent($("input[name=gender]:checked").val())+
							"&password1="+encodeURIComponent($("[name=password1]").val())+
							"&password2="+encodeURIComponent($("[name=password2]").val())+
							"&terms_check="+encodeURIComponent($("[name=terms_check]:checked").length)+
							"&is_ajax=true";
				loadAjax(ajax_reg_file,data);
				$("#registration_form").fadeOut();
				$().overlay("close");
			}else{
				$("#term_wrap").css("border","1px solid red");
			}
		}else{
			return false;
		}
		
	});
	$("[name=password]").live("keypress",function(e)
	        {
        code= (e.keyCode ? e.keyCode : e.which);
        if (code == 13) login();
        
    });
	$("#login_button").live("click",function(){
		login();
	});
});
function login(){
	if($("[name=username]").val().length>=4 && $("[name=password]").val().length>=8){
		loadAjax("/login","is_ajax=true&username="+$("[name=username]").val()+"&password="+$("[name=password]").val());
	}else if(!$(".ui-effects-wrapper").length){
		$("#top_lr_buttons").effect("shake",{times:3,distance:5},30);
	}
}
function updateDays()
{
    //Create variables needed
    var monthSel = document.getElementById('reg_month');
    var daySel   = document.getElementById('reg_day');
    var yearSel  = document.getElementById('reg_year');
    var monthVal = monthSel.value;
    var yearVal  = yearSel.value;
    
    //Determine the number of days in the month/year
    var daysInMonth = 31;
    if (monthVal==2)
    {
        daysInMonth = (yearVal%4==0 && (yearVal%100!=0 || yearVal%400==0)) ? 29 : 28;
    }
    else if (monthVal==4 || monthVal==6 || monthVal==9 || monthVal==11)
    {
        daysInMonth = 30;
    }
    
    //Add/remove options from days select list as needed
    if(daySel.options.length > daysInMonth)
    {   //Remove excess days, if needed
        daySel.options.length = daysInMonth;
    }
    while (daySel.options.length != daysInMonth)
    {   //Add additional days, if needed
        daySel.options[daySel.length] = new Option(daySel.length+1, daySel.length+1, false);
    }
    
    return;
}
