//document.write('<script type="text/javascript" src="/file/lib/jquery/jquery.validate.min.js"></script>'); 
document.write('<script type="text/javascript" src="/file/lib/json2.js"></script>'); 
// see http://valums.com/ajax-upload/
document.write('<script type="text/javascript" src="/file/lib/ajaxupload.3.5.js"></script>'); 
document.write('<script type="text/javascript" src="http://api.recaptcha.net/js/recaptcha_ajax.js"></script>'); 



document.write('<script type="text/javascript" src="/file/lib/ng/JSONService.js"></script>'); 
document.write('<script type="text/javascript" src="/file/lib/ng/Dispatcher.js"></script>'); 

document.write('<script type="text/javascript" src="/file/lib/ng/controller/SessionController.js"></script>'); 
document.write('<script type="text/javascript" src="/file/lib/ng/controller/BookController.js"></script>'); 


document.write('<script type="text/javascript" src="/file/lib/ng/view/SessionView.js"></script>'); 
document.write('<script type="text/javascript" src="/file/lib/ng/view/BookView.js"></script>'); 

var uploadURL = baseURL+ "/upload";
var ndjinURL = baseURL;
var ndjinServiceURL = ndjinURL+ "/service";
var lastFileUploaded;

/*
jQuery.validator.setDefaults({
	debug: true,
	success: "valid"
});;
*/

$(document).ready(function()
{
	globalAjaxCursorChange();
	var sessionController = new SessionController();
	var sessionView = new SessionView();
	var bookController = new BookController();
	var bookView = new BookView();
	


	// SIGN INOUT --------------
	
	$('#signInForm').submit( function (){ 
		sessionController.login( $('#signInForm input[name=email]').val(), $('#signIn input[name=password]').val() );
		return false;
	});
	
	$('#logoutButton').click( function (){ 
		sessionController.logout();
	});



	// CREATE COMMENT/BOOKMARKS --------------

	$('#createCommentForm').submit( function (){ 
		var form = $('#createCommentForm');
		var isbn =  form.find( 'input[name=isbn]').val();
		var ean10 =  form.find( 'input[name=ean10]').val();
		var title = form.find( 'input[name=title]').val();
		var author = form.find( 'input[name=author]').val();
		var urlThumb = form.find( 'input[name=urlThumb]').val();
		var pageNumber = form.find( 'input[name=pageNumber]').val();
		var content = form.find( 'textarea[name=content]').val();
		var urlPhoto = form.find( 'input[name=urlPhoto]').val();
		var urlVideo = form.find( 'input[name=urlVideo]').val();
		var isPrivate = form.find( 'input[name=isPrivate]').attr('checked');
		bookController.createComment( isbn, ean10, title, author, urlThumb, pageNumber, content, urlPhoto, urlVideo, isPrivate );
		return false;
	});
	 
	 /*
	$('#createCommentForm').validate({
	   rules: {
	     content: "required",
	   },
	   messages: {
	     content: "Le contenu ne peut �tre vide",
	   }
	});*/

	$('#createBookmarkForm').submit( function (){ 
		var form = $('#createBookmarkForm');
		var isbn = form.find( 'input[name=isbn]').val();
		var ean10 =  form.find( 'input[name=ean10]').val();
		var title = form.find( 'input[name=title]').val();
		var author = form.find( 'input[name=author]').val();
		var urlThumb = form.find( 'input[name=urlThumb]').val();
		var pageNumber = form.find( 'input[name=pageNumber]').val();
		var keywords = form.find( 'input[name=keywords]').val();
		var isPrivate = form.find( 'input[name=isPrivate]').attr('checked');
		bookController.createBookmark( isbn, ean10, title, author, urlThumb, pageNumber, keywords, isPrivate );
		return false;
	});

	$('#createCommentButton').click( function (){ 
		dispatcher.dispatch( CREATE_COMMENT_EVENT );
	});
	
	$('#cancelCreateCommentButton').click( function (){ 
		dispatcher.dispatch( CREATE_COMMENT_FINISHED_EVENT );
	});


	$('#createBookmarkButton').click( function (){ 
		dispatcher.dispatch( CREATE_BOOKMARK_EVENT );
	});

	$('#cancelCreateBookmarkButton').click( function (){ 
		dispatcher.dispatch( CREATE_BOOKMARK_FINISHED_EVENT );
	});
	
	// CREATE --------------

	$('#createAccountForm').submit( function (){ 
		if( sessionController.validateCaptcha( Recaptcha.get_challenge(), Recaptcha.get_response() ) )
		{
			var userAccount = {
				email: $('#createAccountForm input[name=email]').val(),
				password: $('#createAccountForm input[name=password]').val(),
				name: $('#createAccountForm input[name=name]').val(),
				photo: lastFileUploaded
			}
			sessionController.createUserAccount( userAccount );			
		}
		else
		{
			dispatcher.dispatch( CAPTCHA_NOT_VALID_EVENT );
		}
		return false;
	});
	
	new AjaxUpload('#createPhoto', {
		action: uploadURL,
		name: 'photo',
		autoSubmit: true,
		onSubmit: function(file, extension) {
			$("#createAccountForm input[type=submit]").attr("disabled","disabled");		
		},
		onComplete: function(file, response) {
			lastFileUploaded = file;
			$("#createAccountForm input[type=submit]").removeAttr("disabled");
		}
  	});

	$('#cancelCreateAccountButton').click( function (){ 
		dispatcher.dispatch( CREATE_ACCOUNT_FINISHED_EVENT );
	});

	$('#createNewAccountButton').click( function (){ 
		dispatcher.dispatch( CREATE_ACCOUNT_EVENT );
	});
	
	$('#forgetPasswordButton2').click( function (){ 
		dispatcher.dispatch( FORGET_PASSWORD_EVENT );
	});	

	$('#cancelForgetPasswordButton').click( function (){ 
		dispatcher.dispatch( FORGET_PASSWORD_CANCEL_EVENT );
	});	
	

	$('#forgetPasswordForm').submit( function (){ 
		sessionController.MailPassword( $('#forgetPasswordForm input[name=email]').val() );
		return false;
	});

	// MODIFY --------------

	$('#modifyAccountForm').submit( function (){ 
		var userAccount = {
			email: $('#modifyAccountForm input[name=email]').val(),
			password: $('#modifyAccountForm input[name=password]').val(),
			name: $('#modifyAccountForm input[name=name]').val(),
			description : $('#modifyAccountForm input[name=description]').val(),
			url : $('#modifyAccountForm input[name=url]').val(),
			photo: lastFileUploaded
		}
		sessionController.modifyUserAccount( userAccount );
		return false;
	});

	new AjaxUpload('#modifyPhoto', {
		action: uploadURL,
		name: 'photo',
		autoSubmit: true,
		onSubmit: function(file, extension) {
			$("#modifyAccountForm input[type=submit]").attr("disabled","disabled");		
		},
		onComplete: function(file, response) {
			lastFileUploaded = file;
			$("#modifyAccountForm input[type=submit]").removeAttr("disabled");
		}
  	});

	$('#modifyCurrentAccountButton').click( function (){ 
		dispatcher.dispatch( MODIFY_ACCOUNT_EVENT );
	});
	$('#cancelModifyAccountButton').click( function (){ 
		dispatcher.dispatch( MODIFY_ACCOUNT_FINISHED_EVENT );
	});
	

	Recaptcha.create("6LeUvwUAAAAAAPrUgDqy-5cUhfde0j6IYNy7oFCC", "recaptcha", 
		{
		   theme: "red",
		   lang: "fr",
		   callback: Recaptcha.focus_response_field
		}
	);
	
	sessionController.loadCurrentUser();
	
}); // document


function globalAjaxCursorChange()   
{  
	$("html").bind("ajaxSend", function()
	{ 
		$(this).addClass('busy');  
	}).bind("ajaxComplete", function()
	{  
		$(this).removeClass('busy');  
	});  
}  

