/* -----------------------------------------------------------------------
functions
----------------------------------------------------------------------- */
function set_heights () {
	$('.product').equalHeight();
}

function updateLayout() {
	set_heights();
}

/* -----------------------------------------------------------------------
document ready
----------------------------------------------------------------------- */
$(document).ready(function(){

	// search input text (for < html5)
	var input_search = $("#keywords");
	var default_text_search = "Search the Store";
	if($(input_search).attr("value") == "") $(input_search).attr("value", default_text_search);
	input_search.focus(function(){  
		if($(this).attr("value") == default_text_search) $(this).attr("value", "");
	});
	input_search.blur(function(){  
		if($(this).attr("value") == "") $(this).attr("value", default_text_search);
	});

	// for the occasional oddball image height...
	set_heights();

	// auto fill shipping info from billing...
	$('select[name=state]').attr('id', 'state');
	$('select[name=shipping_state]').attr('id', 'shipping_state');
	$("input#same").click(function(){ 
		if ($("input#same").is(':checked')) {
			// copy on check...
			$("input#shipping_first_name").val($("input#first_name").val());
			$("input#shipping_last_name").val($("input#last_name").val());
			$("input#shipping_address").val($("input#address").val());
			$("input#shipping_address2").val($("input#address2").val());
			$("input#shipping_city").val($("input#city").val());
			$.my_state = $("select#state option:selected").val();
			$("select#shipping_state").val($.my_state).attr("selected", "selected");
			$("input#shipping_zip").val($("input#zip").val());
		} else {
			// clear on uncheck...
			$("input#shipping_first_name").val("");
			$("input#shipping_last_name").val("");
			$("input#shipping_address").val("");
			$("input#shipping_address2").val("");
			$("input#shipping_city").val("");
			$("select#shipping_state").val("");
			$("input#shipping_zip").val("");
		}
	});


	// client-side validation...
	$("#checkout").validate({
		rules: {
			first_name: "required",
			last_name: "required",
			address: "required",
			city: "required",
			state: "required",
			zip: {
				required: true,
				digits: true,
				minlength: 5
			},
			//country_code: "required",
			shipping_first_name: "required",
			shipping_last_name: "required",
			shipping_address: "required",
			shipping_city: "required",
			shipping_state: "required",
			shipping_zip: {
				required: true,
				digits: true,
				minlength: 5
			},
			phone: {
				required: true,
				phoneUS: true
			},
			email_address: {
				required: true,
				email: true
			}
		},
		messages: {
			first_name: "Please provide your First Name",
			last_name: "Please provide your Last Name",
			address: "Please provide your Address",
			city: "Please provide your City",
			state: "Please select your State",
			zip: {
				required: "Please provide your 5-digit ZIP Code",
				digits: "Please provide your 5-digit ZIP Code",
				minlength: "Please provide your 5-digit ZIP Code"
			},
			phone: {
				required: "Please provide your Phone Number",
				phoneUS: "This is not a valid Phone Number"
			},
			email_address: {
				required: "Please provide your Email Address",
				email: "This is not a valid Email Address"
			},
			shipping_first_name: "Please provide your First Name",
			shipping_last_name: "Please provide your Last Name",
			shipping_address: "Please provide your Address",
			shipping_city: "Please provide your City",
			shipping_state: "Please select your State",
			shipping_zip: {
				required: "Please provide your 5-digit ZIP Code",
				digits: "Please provide your 5-digit ZIP Code",
				minlength: "Please provide your 5-digit ZIP Code"
			}
		}
	});

	$("#signup").validate({
		rules: {
			username: "required",
			email: {
				required: true,
				email: true
			},
			screen_name: "required",
			password: "required",
			password_confirm: "required"
		},
		messages: {
			username: "Please provide a Username",
			email: {
				required: "Please provide your Email Address",
				email: "This is not a valid Email Address"
			},
			screen_name: "Please provide your Full Name",
			password: "Please provide a Password",
			password_confirm: "Please enter the Password again"
		}
	});

	$("#login form").validate({
		rules: {
			username: "required",
			password: "required"
		},
		messages: {
			username: "Please provide your Username",
			password: "Please provide your Password"
		}
	});

	$("#forgot_password_form").validate({
		rules: {
			email: {
				required: true,
				email: true
			}
		},
		messages: {
			email: {
				required: "Please provide your Email Address",
				email: "This is not a valid Email Address"
			}
		}
	});

	$("label.error").closest("input").addClass("error");

	// Contact page slideshow...
	$.prev_next = '<p class="prev-next"><a class="prev" href="#">&lt;</a> <a class="next" href="#">&gt;</a></p>';
	$('#slideshow').before($.prev_next);
	$('#slideshow').cycle({ 
		fx: 'fade',
		speed: 'fast',
		timeout: 0,
		prev: '.prev',
		next: '.next'
	});

	// Product slideshow...
	$('#gallery').after('<ul class="filmstrip">').cycle({ 
		fx: 'fade',
		speed: 'fast',
		timeout: 0,
		pager:  '.filmstrip',
		// callback for thumbnails...
		pagerAnchorBuilder: function(idx, slide) {
			return '<li><a href="#"><img src="' + slide.src + '" width="150" height="150" /></a></li>';
		}
	});

	// show-hide toggles
	$(".why-signup").before('<p class="tell-me-more"><a href="" title="">Why do I need to sign up?</a></p>');
	$(".why-signup").addClass("hide");
	$(".tell-me-more a").click(function(event){
		$(".why-signup").toggle();
		return false;
	});

	// Are we on an iPhone?...
	if ($(window).width() <= 480) {
		$("body").addClass("smartphone");
	}
	$.clearfix = '<div style="clear:both"></div>';
	$('.smartphone #main').before($.clearfix);

	// rewrite post url for login form (this should happen server-side)...
	$.login_post_url = $("#login form").attr("action");
	$.login_post_url_ssl = $.login_post_url.replace('http://', 'https://');
	$("#login form").attr("action", $.login_post_url_ssl);

});

