$('body').addClass("js");

jQuery.validator.addMethod("createsend", function(value, element) {
	return this.optional(element) || /^[a-zA-Z0-9-_]+$/i.test(value);
}, "Letters, numbers, dashes and underscores only please");

jQuery.validator.addMethod("searchblog", function(value, element) {
	return this.optional(element) || value != "Search Blog";
}, "Please enter a search term");

jQuery.validator.addMethod("searchforum", function(value, element) {
	return this.optional(element) || value != "Search Forum";
}, "Please enter a search term");

$(document).ready(function() {

	$('input, textarea, select').focus(function() {
		$(this).addClass('active');
	}).blur(function() {
		$(this).removeClass('active')
	});

	toggleDefaults($('#search-blog #keywords'), 'Search Blog');
	toggleDefaults($('#z-z'), 'Email address');
	toggleDefaults($('#search-field'), 'Search Forum');
	toggleDefaults($('#question'), 'Ask a question');

	// $('.copy input:eq(0)').focus();
	
	$('#contact-form').validate({
		errorElement: "em",
		rules: {
			"contact_email": {
				required: true,
				email: true
			},
			"contact_name": "required",
			"contact_message": "required"
		},
		messages: {
			"contact_name": { required: "Please enter your first and last name"},
			"contact_message": { required: "Please enter your message"},
			"contact_email": {
				required: "Email Address is required",
				email: "Email Address is invalid"
			}
		},
		errorPlacement: function(error, element) {
			error.appendTo(element.parent());
		}
	});

	$('#form-sign-up').validate({
		errorElement: "em",
		rules: {
			email: {
				required: true,
				email: true
			},
			siteaddress: "createsend"
		},
		messages: {
			ContactName: { required: "Please enter your first and last name"},
			CompanyName: "Company Name is required",
			TimeZone: "Please select a Time Zone",
			username: "Username is required",
			password: "Password is required",
			country: "Please select a Country",
			ea: {
				required: "Email Address is required",
				email: "Email Address is invalid"
			}
		},
		errorPlacement: function(error, element) {
			error.appendTo(element.parent());
		}
	});

	$('#login').validate({
		errorElement: "em",
		rules: {
			AddressPrefix: "createsend"
		},
		messages: {
			Username: "The Username is required",
			Password: "The Password is required"
		},
		errorPlacement: function(error, element) {
			error.appendTo(element.parent());
		}
	});

	$("#form-forgotpassword").validate({
		errorElement: "em",
		rules : {
			email : {
				required: true,
				email: true
			}
		},
		messages : {
			email: {
				required: "Email Address is required",
				email: "Email Address is invalid"
			}
		},
		errorPlacement: function(error, element) {
			error.appendTo(element.parent());
		}
	});
	
	$('#form-site-address-confirmation').validate({
		errorElement: "em",
		rules: {
			siteaddress: {
				required: true,
				createsend: true
			}
		},
		errorPlacement: function(error, element) {
			error.appendTo(element.parent());
		}
	});

	$('#blog #comment_form').validate({
		errorElement: "em",
		rules : {
			comment : "required",
			name : "required"
		},
		messages : {
			comment : "Please enter a comment",
			name: "Your name is required"
		},
		errorPlacement: function(error, element) {
			error.appendTo(element.parent());
		}
	});
	
	$('#giving-back-form').validate({
		errorElement: "em",
		rules : {
			givingback_email : {
				required: true,
				email:true
			},
			givingback_name : "required",
			givingback_message: "required"
		},
		messages : {
			givingback_message : "Message is required",
			givingback_name: "Name is required",
			givingback_email: {
				required: "Email Address is required",
				email: "Email Address is invalid"
			}
		}
	});

	$('#search-blog').validate({
		errorElement: "em",
		rules : {
			keywords: {
				required : true,
				searchblog: true
			}
			
		},
		messages : {
			keywords : "Please enter a search term"
		}
	});

	$('#minisearch').validate({
		errorElement: "em",
		rules : {
			keywords: {
				required : true,
				searchforum: true
			}
			
		},
		messages : {
			keywords : "Please enter a search term"
		}
	});

	$('#forums form#request_pass').validate({
		errorElement: "em",
		rules : {
			req_email: {
				required: true,
				email: true
			}
		},
		messages : {
			req_email: {
				required: "Email Address is required",
				email: "Email Address is invalid"
			}
		}
		
	});
	
	$('#forums form#change_pass').validate({
		errorElement: "em",
		rules : {
			req_old_password : 
			{
				required : true
			},
			req_new_password1 :
			{
				required : true
			},
			req_new_password2 :
			{
				required : true
			}
		},
		messages : {
			req_old_password : 
			{
				required: "Please enter your old password"
			},
			req_new_password1 : 
			{
				required: "Please enter a new password"
			},
			req_new_password2 : 
			{
				required: "Please confirm your new password"
			}
		},
		errorPlacement: function(error, element) {
			error.appendTo(element.parent());
		}
	});

	$('#forums form#comment_form, #forums form#post').validate({
		errorElement: "em",
		rules : {
			req_message : 
			{
				required : true
			},
			req_subject :
			{
				required : true
			}
		},
		messages : {
			req_message : 
			{
				required: "Please enter a comment"
			},
			req_subject : 
			{
				required: "Please enter a subject"
			}
			
		},
		errorPlacement: function(error, element) {
			error.appendTo(element.parent());
		}
	});

	$('#forums form#register').validate({
		errorElement: "em",
		rules : {
			req_username : {
				required: true,
				minlength: 2
			},
			req_email1 : {
				required: true,
				email: true
			},
			req_password1 : {
				required: true,
				rangelength: [4, 16]
			},
			req_password2 : {
				required: true,
				rangelength: [4, 16]
			}
		},
		messages : {
			req_username: {
				required: "Username is required",
				minlength: "Username must be at least 2 characters"
			},
			req_password1 : {
				required: "Password is required",
				rangelength: "Password must be between 4 and 16 characters"
			},
			req_password2 : {
				required: "Password confirmation is required",
				rangelength: "Password confirmation must be between 4 and 16 characters"
			},
			req_email1: {
				required: "Email Address is required",
				email: "Email Address is invalid"
			}
		},
		errorPlacement: function(error, element) {
			error.appendTo(element.parent());
		}
	});
	
	$('#forums-login').validate({
		errorElement: "em",
		rules : {
			req_username : "required",
			req_password : "required"
		},
		messages : {
			req_username: "Username is required",
			req_password : "Password is required"
		},
		errorPlacement: function(error, element) {
			error.appendTo(element.parent());
		}
	});

});

function toggleDefaults($els, value){
	$els.focus(function() {
		if ($(this).val() == value)
		{
			$(this).val('');
		}
	}).blur(function() {
		if ($(this).val() == '')
		{
			$(this).val(value);
		}
	});
}
/*
$('#number-of-credits').keyup(function() {
	// save value
	val = parseInt($(this).val());
	cost = 0;
	//console.clear();
	// check if value is a number

	if (isNaN(val) || val == 0) {
		return false;
	}

	if (val > 0){
		price = 1;
		count = (val < 50001) ? val : 50000;
		seg_cost = count * 1;
		cost += seg_cost;
		console.log(count + " x " + price + " = " + seg_cost);
	}

	if (val > 50000)
	{
		price = 0.8;
		count = (val < 100001) ? (val - 50000) : 50000;
		seg_cost = count * price;
		cost += seg_cost;
		console.log(count + " x " + price + " = " + seg_cost);
	}

	if (val > 100000){
		price = 0.7;
		count = (val < 250001) ? (val - 100000) : 150000;
		seg_cost = count * price;
		cost += seg_cost;
		console.log(count + " x " + price + " = " + seg_cost);
	}

	if(val > 250000){
		price = 0.6;
		count = (val < 500001) ? (val - 250000) : 250000;
		seg_cost = count * price;
		cost += seg_cost;
		console.log(count + " x " + price + " = " + seg_cost);
	}

	if(val > 500000){
		price = 0.5;
		count = val - 500000;
		seg_cost = count * price;
		cost += seg_cost;
		console.log(count + " x " + price + " = " + seg_cost);
	}

	console.log("Total Cost: $" + (cost / 100));
	console.log("\n");
	// if not show error
	// hide table
	// return
	// hide error
	// calculate value
	
	// show table
	// return
	//console.log(val);
});
*/