/*******************************************************************************

	CSS on Sails Framework
	Title: Apex
	Author: XHTMLized (http://www.xhtmlized.com/)
	Date: May 2011

*******************************************************************************/
var form_loading = false;
var Site = {
	init : function(){
	},
	
	formErrors : function( arr ){
		var error_msg = '<ul>';
		for (var i in arr) {
			error_msg += '<li>' + arr[i] + '</li>';
		}
		error_msg += '</ul>';
		return error_msg;
	},
	
	checkoutBillingToShipping : function(){
		$("#form-checkout-save-information input[name=shipping_first_name]").val( $("#form-checkout-save-information input[name=first_name]").val() );
		$("#form-checkout-save-information input[name=shipping_last_name]").val( $("#form-checkout-save-information input[name=last_name]").val() );
		$("#form-checkout-save-information input[name=shipping_address]").val( $("#form-checkout-save-information input[name=address]").val() );
		$("#form-checkout-save-information input[name=shipping_address2]").val( $("#form-checkout-save-information input[name=address2]").val() );
		$("#form-checkout-save-information input[name=shipping_city]").val( $("#form-checkout-save-information input[name=city]").val() );
		$("#form-checkout-save-information select[name=shipping_state]").val( $("#form-checkout-save-information select[name=state]").val() );
		$("#form-checkout-save-information input[name=shipping_zip]").val( $("#form-checkout-save-information input[name=zip]").val() );
		$("#form-checkout-save-information select[name=shipping_country_code]").val( $("#form-checkout-save-information select[name=country_code]").val() );
	},
	
	checkoutSaveInformation : function(){
		if (form_loading == false)
		{
			$("#form-checkout-save-information").ajaxSubmit({
				dataType: 'json',
				beforeSubmit: function(result) {
					Site.formAddLoading();
					$('#form-errors').slideUp('fast');
				},
				success: function(data) {
					Site.formEndLoading();
					if (data.success) {
						document.location.href = '/checkout/payment';
					} else {
						var rep_html = Site.formErrors( data.errors );
						$('#form-errors-dynamic').html(rep_html);
						$('#form-errors').slideDown('slow');
						$.scrollTo('#form-errors', {duration:500});
					}
				}
			});
		} else {Site.formProcessing();}	
	},
	
	checkoutCheckCC : function( val ){
		
		var cards = $('.cc');
		var card;
		
		cards.removeClass('inactive');
		
		if (/^4/.test(val)) { card = 'visa'; }
		else if (/^5/.test(val)) { card = 'mastercard'; }
		/*else if (/^(34|37)/.test(val)) { card = 'amex'; }*/
		
		if (card) {
			cards.not('.' + card).addClass('inactive');
		}
	},
	
	checkoutPayment : function(){
		var cart_empty = $("#form-checkout-payment input[name=return]").val();
		var declined_redirect = $("#form-checkout-payment input[name=declined_redirect]").val();
		var failed_redirect = $("#form-checkout-payment input[name=failed_redirect]").val();
		var authorized_redirect = $("#form-checkout-payment input[name=authorized_redirect]").val();
		if (form_loading == false)
		{
			$("#form-checkout-payment").ajaxSubmit({
				dataType: 'json',
				beforeSubmit: function( ) {
					Site.formAddLoading();
					$('#form-errors').slideUp('fast');
					$('#form-transaction').slideUp('fast');
				},
				success: function(data, textStatus, jqXHR) {
					Site.formEndLoading();
					if (data.authorized == true) {
						document.location.href = '/checkout/confirmation';
					} else if (data.declined == true || data.failed == true) {
						$('#form-transaction-dynamic').html('<p>'+data.error_message+'</p>');
						$('#form-transaction').slideDown('slow');
					} else {
						var rep_html = Site.formErrors( data.errors );
						$('#form-errors-dynamic').html(rep_html);
						$('#form-errors').slideDown('slow');
						$.scrollTo('#form-errors', {duration:500});	
					}
					
				}
			});
		} else {Site.formProcessing();}
	},
	
	formAddLoading : function(){
		form_loading = true;
		$('#loading-space').addClass('loading');
	},
	
	formEndLoading : function(){
		form_loading = false;
		$('#loading-space').removeClass('loading');
	},
	
	formProcessing : function(){
		alert('We are currently proccessing your form.\nWe\'re almost done, thanks for waiting.');
	}
}

// Global jquery script
$(document).ready(function() {
	
	/*---------------------------------
		AJAX
	---------------------------------*/
	$.ajaxSetup({
		type: "POST",
		url: "http://www.babyheadrest.com/php/ajax.gateway",
		dataType: "json",
		global: false
	});
	
	/*---------------------------------
		Defuscate emails
	---------------------------------*/
	$('.defuscate').defuscate();
	
	/*---------------------------------
		jGrowl
	---------------------------------*/
	$.jGrowl.defaults.position = 'center';

	/*---------------------------------
		Where to buy
	---------------------------------*/
	$('.retailers_sidebar_showall').click(function() {
		$('div.retailer_item').slideDown();

		return false;
	});
	$('.retail_filter').click(function() {
		var set_filter = $(this).attr('set');		

		$('div.wtb-retailer').slideUp();
		$('.' + set_filter).slideDown();
		
		$('.retail_filter').removeClass('selected');
		$(this).addClass('selected');

		return false;
	});
	
	/*---------------------------------
		Contact Form
	---------------------------------*/
	$('#form_contact').submit(function(index, domEle) {
		var thisObj = this;
		$.ajax({
			data: "func=emailContact&"+$(this).serialize(),
			beforeSend: function(result) {
				$('#form_loading').addClass('loading');
				$(thisObj).find('.form_error').removeClass('form_error');
			},
			error: function(XMLHttpRequest, textStatus, errorThrown){	
				$.jGrowl('#form_contact; error: ' + textStatus + ', errorThrown:' + errorThrown, { 
					life: 5000
				});
			},
			success: function(response){	
				var resp_arr = new Array(); eval("resp_arr="+response);
				if (resp_arr.result == 'true') {
					$.jGrowl(resp_arr.msg, { 
						life: 2000,
						close: function(e,m,o) {}});
				} else if (resp_arr.result == 'msg') {
					$.jGrowl(resp_arr.msg, { 
						life: 5000
					});
				} else if (resp_arr.result == 'false') {
					var arr = resp_arr.data;
					for (var i in arr) {$(thisObj).find(':input[name=\''+i+'\']').addClass('form_error');}
					var error_msg = errorMsg(arr, resp_arr.msg);
					$.jGrowl(error_msg, { 
							 life: 5000
					});
				} // end if
			},
			complete: function(response){$('#form_loading').removeClass('loading');}
		});
        return false;
	});	
	
	
	// Update cart
	$("#btn-update").click(function(){
		$(this).closest('form').submit();
		return false; 
	});
	// Copy billing to shipping details
	$("#biling-to-shippping").click(function(){
		Site.checkoutBillingToShipping();
		return false; 
	});
	// Save checkout information
	$("#btn-save").click(function(){
		Site.checkoutSaveInformation();
		return false; 
	});
	
	// CC Check
	$('#credit_card_number').keyup(function() {
		var input = $(this), val = input.val();
		Site.checkoutCheckCC(val);
	});
	// Checkout payment
	//$(".tooltip-trigger").tooltip({ position: "top center", opacity: 0.9});
	$(".btn-bar a.place-order").click(function(){
		Site.checkoutPayment();
		return false; 
	});
	
});

/* Email Defuscator */
(function($){
	jQuery.fn.defuscate = function( settings ) {
		settings = jQuery.extend({
			link: true,
			find: /\b([A-Z0-9._%-]+)\([^)]+\)((?:[A-Z0-9-]+\.)+[A-Z]{2,6})\b/gi,
			replace: '$1@$2'
		}, settings);
		return this.each(function() {
			if ( $(this).is('a[@href]') ) {
				$(this).attr('href', $(this).attr('href').replace(settings.find, settings.replace));
				var is_link = true;
			}
			$(this).html($(this).html().replace(settings.find, (settings.link && !is_link ? '<a href="mailto:' + settings.replace + '">' + settings.replace + '</a>' : settings.replace)));
		});
	};
})(jQuery);

(function ($) {
$.fn.vAlign = function() {
	return this.each(function(i){
	var ah = $(this).height();
	var ph = $(this).parent().height();
	var mh = (ph - ah) / 2;
	$(this).css('margin-top', mh);
	});
};
})(jQuery);

