var ConfirmBox = {
	
	init: function() {
		
		$('.confirm').click( function(e) {
			(window.console && window.console.log('confirmation triggered'));
			var data = $(this).metadata();
			// check if confirmation should happen at all
			if ( data.confirmTest && !window[data.confirmTest]() ) {
				if ($(this).attr('href')) {
					window.location = $(this).attr('href');
				}
			} else if ( !$('.confirmbox').data('confirmSelfTrigger') ) {
			    ConfirmBox.open( $(this) );
			    e.preventDefault();
			    return false;
			}
		} );
		
		$('.confirmbox .yes').click( function() {
			ConfirmBox.submit();
			return false;
		} );
		
		$('.confirmbox .no').click( function() {
			ConfirmBox.close();
		} );
		
	},
	
	open: function( obj ) {
		// save the target button reference
		$('.confirmbox').data('confirmTargetButton', obj);
		
		$('.header a').focus();
		$('.dimmed-overlay, .confirmbox-overlay').slideDown();
	
		var data = obj.metadata();
		
		$('.confirmbox .heading').html(data.confirmTitle);
		$('.confirmbox p').html(data.confirmQuestion);
		
		$('.confirmbox .yes span').html(data.confirmYesButtonText);
		$('.confirmbox .no span').html(data.confirmNoButtonText);
		
	},
	
	submit: function() {

		var targetButton = $('.confirmbox').data('confirmTargetButton');
		
		ConfirmBox.close();
		
		$('.confirmbox').data('confirmSelfTrigger', true);

        window.location = targetButton.attr('href');
	},
	
	close: function() {
	    $('.confirmbox').data('confirmTargetButton', null);
		$('.confirmbox-overlay, .dimmed-overlay').slideUp();
	}
	
};

$(document).ready( function() {
	
	ConfirmBox.init();
	
} );