
$(document).ready(function() {
	$('.screenshot').smartbox();
	
	$('.account_type a').click(setAccountType);
	
	$('.gotoStep1').click(formStepOne);
	$('.gotoStep2').click(formStepTwo);
	$('.gotoStep3').click(formStepThree);
	
	$('#bookmarklet a').hover(function() {
		$('#bookmarklet .arrow').fadeIn(150);
	}, function() {
		$('#bookmarklet .arrow').fadeOut(150);
	});
	
	$('._blank').TargetBlank();
	$(".bookmark_install").click(function() { return false; });
	
	if($("#loadTweets").length > 0)
	{
		loadTweets();
	}
});

//ACCOUNT TYPE
function setAccountType() 
{
	if(!$(this).hasClass('selected'))
	{
		var selectedType = $(this).attr('name');
		$('.account_type a.selected').removeClass('selected');
		$(this).addClass('selected');
		$('#account_type').val(selectedType);
				
		selectedType = '.plan_' + selectedType;		
		$('.step2 .col3').find('ul').hide();
		$('.step2 .col3').find(selectedType).css({display: 'block'});
	}
	return false;
}


//FORM CHECK
function formStepOne() {
	if (!$(this).parent('li').hasClass('disabled')) {
		if ($('#account_type').val() == '2') { 

		} else {
			$('.signup_tabs .account').addClass('active').removeClass('complete');
			$('.signup_tabs .payment').removeClass('active').removeClass('complete');
			$('.signup_tabs .confirmation').removeClass('active').removeClass('complete');
			
			$('.signup_form .step1').show();
			$('.signup_form .step2').hide();
			$('.signup_form .step3').hide();
			return false;
		}
	} else {
		return false;
	}
}

function formStepTwo() {
	if (validateForm($('.step1')) && !$(this).parent('li').hasClass('disabled')) {
		if ($('#account_type').val() == '2') {
			$("#signup_form").submit();
		} else {
			$('.signup_tabs .account').removeClass('active').addClass('complete');
			$('.signup_tabs .payment').addClass('active').removeClass('complete');
			$('.signup_tabs .confirmation').removeClass('active').removeClass('complete');
			
			$('.signup_form .step1').hide();
			$('.signup_form .step2').show();
			$('.signup_form .step3').hide();
		}
	}

	return false;
}

function formStepThree() {
	
	if ($("li.account").hasClass("active")) {
		formStepTwo();
		return false;
	}

	if(validateForm($('.step2')) && !$(this).parent('li').hasClass('disabled'))
	{
/*
		$('.signup_tabs .payment').removeClass('active').addClass('complete');
		$('.signup_tabs .confirmation').addClass('active').removeClass('complete');
		
		$('.signup_form .step1').hide();
		$('.signup_form .step2').hide();
		$('.signup_form .step3').show();
*/
	}
	else
	{
		return false;
	}
}


//Form Validation

function validateForm(_formPart)
{
	var allGood = true;
	var passwordCheck = '';
	_formPart.find('input, textarea, select').not('.not_req, .submit').each(function() {
		if($(this).val() == '')
		{
			showError($(this));
			allGood = false;
		}
		else if($(this).hasClass('email') && !checkEmail($(this).val()))
		{
			showError($(this));
			allGood = false;
		}
		else if($(this).hasClass('phone') && !checkPhone($(this).val()))
		{
			showError($(this));
			allGood = false;
		}
		else if($(this).hasClass('password'))
		{
			passwordCheck = $(this).val();
			clearError($(this));
		}
		else if($(this).hasClass('cpassword'))
		{
			if($(this).val() != passwordCheck)
			{
				showError($(this));
				allGood = false;
			}
			else
			{
				clearError($(this));
			}
		}
		else
		{
			clearError($(this));
		}
	});
	
	if(!allGood)
	{
		if($('.signup_errors').length < 1)
		{
			$('.signup_form').prepend('<div class="signup_errors"><p class="js_error">Please complete all required fields before submitting</p></a>');
		}
		else
		{
			if($('.js_error').length < 1)
			{
				$('.signup_errors').show().append('<p class="js_error">Please complete all required fields before re-submitting.</p>')
			}
			else
			{
				$('.signup_errors, .signup_form .js_error').show();
			}
		}
	}
	else
	{
		$('.js_error').hide();
		if($('.signup_errors p').length < 2)
		{
			$('.signup_errors').hide();
		}
	}
	return allGood;
}


function checkEmail(email) {
	var filter = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
	if (filter.test(email)) {
		return true;
	}
	else
	{
		return false;
	}
}

function checkPhone(phone) {
	var filter = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;
	if (filter.test(phone)) {
		return true;
	}
	else
	{
		return false;
	}
}

function showError(el)
{
	el.addClass('error');
	el.prev('label').addClass('error');
}

function clearError(el)
{
	el.removeClass('error')
	el.prev('label').removeClass('error');
}



function loadTweets()
{
	var username = "denoteapp";
	var url = "http://twitter.com/statuses/user_timeline/" + username + ".json?callback=?";
	$.getJSON(url, function(data) {
		var html = '';
		var length = (data.length > 3) ? 3 : data.length;
		
		for(var i = 0; i < length; i++)
		{	
			html += '<div class="tweet"><div class="inner">';
			html += '<img src="' + data[i].user.profile_image_url + '" alt="' + data[i].from_user + '" class="icon" />';
			html += '<p>' + data[i].text + '</p>';
			html += '<span class="author">' + data[i].user.screen_name + ' about ' + prettyDate(data[i].created_at) + '</span>';
			html += '</div></div>';
			
		}
		$("#loadTweets").html(html);
		
		$.get("http://www.denoteapp.com/ajax/tweets/", { data: html }, function(data) {
			console.log("cached", data);
		});
	});
}

	function prettyDate(time){
		var date = new Date((time || "").replace(/-/g,"/").replace(/TZ/g," ")),
			diff = (((new Date()).getTime() - date.getTime()) / 1000),
			day_diff = Math.floor(diff / 86400);
				
		if ( isNaN(day_diff) || day_diff < 0 || day_diff >= 31 )
			return;
		var v = day_diff == 0 && (
				diff < 60 && "just now" ||
				diff < 120 && "1 minute ago" ||
				diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
				diff < 7200 && "1 hour ago" ||
				diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
			day_diff == 1 && "Yesterday" ||
			day_diff < 7 && day_diff + " days ago" ||
			day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago";
		if (!v)
			window.console && console.log(time);
		return v ? v : '';
	}



/**
 * jQuery TargetBlank plugin
 * Open links in new window while maintaining valid strict doc type
 * 
 * Copyright (c) 2009 Ben Plum <benjaminplum@gmail.com>
 */ 
(function($) {
	$.fn.TargetBlank = function() {
		return this.each(function () {
			//open links in new window
			$(this).click(function () {
				window.open($(this).attr('href'));
				return false;
			})
		});
	}
})(jQuery);
