$(document).ready(function() {
	
	var notesWrap		= $("#notesDspWrap"); // div notes wrapper
	var notesFormWrap	= $("#notesFormWrap"); // notes form
	var notesDspWrap 	= $("#notesDsp"); // notes ul
	var msgWrap 		= $("#notesMsg"); // add note h2
	var addNoteMsg		= $('#noteanchor'); // add note form h2
	var showNotes		= $("#noteanchor"); // show notes link
	var addNotes		= $("#addnote"); // add notes link
	
	var addPage      = $('#addpage');
	
	var msg = [];
	msg['missing_text']  = 'Please add some text below..';
	msg['create_note']   = 'Create a note'; 
	msg['success']       = 'Note added';
	
	var numNotes = $('#dspNumNotes').html();
	var numPages = $('#dspNumPages').html();
	
	//if (numNotes > 0) {
	//	toggleSlide($('.notesShow'), true);
	//	expandNotes();
	//}

	// Toggle notes form if clicked
	addNotes.click(function() {
		if (toggleSlide(notesFormWrap)=='on') {
			showMsg('normal', msg['create_note']);
		}
	});
	
	// Toggle existing notes
	showNotes.click(function() {
		if (toggleSlide($('.notesShow'))=='off') retractNotesList();		
		else expandNotes();
	});

	// Ajax post form if clicked (notes)
	$("#submit").click(function() {  
	   
      	// Validate
      	var note = $("textarea#note").val();
       	if (note == "") {    
       		$("textarea#note").focus();
       		showMsg('bad', msg['missing_text']);
			return false;  
     	}  
     	
     	// Post
     	var dataString = 'note='+ note + '&page_id=' + $("input#page_id").val();

		$.ajax({
      type: "POST",
			url: bUrl + "pagetools/add-note/",
			data: dataString,
			
			// Response
			success: function(r) {
				response = eval('(' + r + ')');

				// Deal with return of zend_form->processAjax()
				if (r=='true') {
					showMsg('good', msg['success']);
					$("textarea#note").val('');

					expandNotes();
					toggleSlide($('.notesShow'), true);
					addNote(note);
					updateDspNotesNum();
					setTimeout(function() { toggleSlide(notesFormWrap) }, 1500);
				} else {
					var errMsg = '';
					$.each(response, function(label, errObj) {
						$.each(errObj, function() {
							errMsg = errMsg + '<div>' + label + ': ' + this + '</div>';
						});
					});
					
					if (errMsg.length) {
						showMsg('bad', errMsg);
					}
					
				}
      		}
		});
    	return false;
	});
	
	// Add page
	addPage.click(function() {
	  var dataString = 'page_id=' + $("input#page_id").val();
    $.ajax({
	    type: "POST",
	    url: bUrl + "pagetools/add-page/",
	    data: dataString,
	    
	    // Response
	    success: function(r) {
        if (r=='exists') {
          showMsg('good', 'page already in basket', $('#msg'));
          setTimeout(function() { toggleSlide($('#msg')) }, 1500);
        } else if (r=='true') {
		      showMsg('good', 'page added', $('#msg'));
		      setTimeout(function() { toggleSlide($('#msg')) }, 1500);
		      updateDspNumPages();
		    } else {
		      showMsg('bad', 'problem adding page', $('#msg'), true);
		      setTimeout(function() { toggleSlide($('#msg')) }, 3000);
		    }
	    }
	  });
        
	});
	
	function showMsg(status, msg, msgWrapper, slideIn) {
		
		if (msgWrapper) msgContainer = msgWrapper;
		else msgContainer = msgWrap; 
		
		$(msgContainer).removeClass();
		
		if (status == 'good') $(msgContainer).addClass('good');
		else if (status == 'bad') $(msgContainer).addClass('bad');

		$(msgContainer).html(msg);
		if (slideIn) toggleSlide(msgContainer, true);
		else $(msgContainer).show();
	}

	
	function expandNotes() {
		toggleSlide(notesWrap, true);
		toggleSlide(notesDspWrap, true);
		expandNotesList()
	}


	function addNote(s) {
		notesDspWrap.prepend('<li>'+s+'</li>');
		toggleSlide(notesDspWrap, true);
	}

	function toggleSlide(o, force) {
		if (o.is(":hidden") || force) {
			o.slideDown();
			return 'on';
		} else {
			o.slideUp();
			return 'off';
		}
	}

	function updateDspNotesNum() {
		++numNotes;
		$('#dspNumNotes').html(numNotes);
	}
	
	function updateDspNumPages() {
    ++numPages;
    $('#dspNumPages').html(numPages);
  }
	
	function expandNotesList() {
		addNoteMsg.removeClass('off');
		addNoteMsg.addClass('on');
	}

	function retractNotesList() {
		addNoteMsg.removeClass('on');
		addNoteMsg.addClass('off');
	}
	
});
