var browseManager;

/**

browseManager:
   Section specific file for browse behaviour

author: dedmondson
date:   17/01/2009
*/

// Object Def
function  browseManager(){
 

   // Private functions 
    var addProductSuccessCallback = function(data,catEntryId){
	  showBasketNotification(catEntryId);
	}
	 
	 // Private functions 
    var addBookshelfSuccessCallback = function(data,catEntryId){ 
	 showBookshelfNotification(catEntryId);
	}
	 
	 var basicErrorCallback = function(errorMessages){
	   sessionController.showErrorOverlay(errorMessages);
	 }
	 

  
	 var sentToFriendSuccessCallback = function(){
	 	
		 $('#friendForm').fadeOut('normal', function(){ $('#QS_friendThankyou').fadeIn('normal') } );
     }
		 
     var sentToFriendErrorCallback = function(errorMessages){
    	 sessionController.showErrorOverlay(errorMessages);
     }
     var sentReviewSuccessCallback = function(){
		 $('#reviewForm').fadeOut('normal', function(){ $('div.QS_reviewThanks').fadeIn('normal') } );
     }
		 
     var sentReviewErrorCallback = function(errorMessages){
    	 sessionController.showErrorOverlay(errorMessages);
     }
	 
	 var showBasketNotification = function(catEntryId) { 
	 	 $('div.QS_notification').stop().hide();
		 $('div#QS_addBasketNotification_'+catEntryId).stop().fadeIn('slow');
	 }
	  
	 var showBookshelfNotification = function(catEntryId) { 
	 	 $('div.QS_notification').stop().hide();
		 $('div#QS_addBookshelfNotification_'+catEntryId).stop().fadeIn('slow');
	 }
	 
	
  // Browse: Public functions
  return{
  
    addMultipleProduct:function(catEntryId){
      var qtyFieldSelector = '.QS_addMultipleProductQty_'+catEntryId;
      var qty = $(qtyFieldSelector).val();
      this.addProduct(catEntryId, qty); 
    },
    
    addSingleProduct:function(catEntryId){
      this.addProduct(catEntryId, 1);  
    },
    
    addToBookshelf:function(catEntryId){
      basketController.addToWishList(catEntryId, addBookshelfSuccessCallback, basicErrorCallback);
    },
    
    addProduct:function(catEntryId, qty){
      basketController.addProduct(catEntryId, qty, addProductSuccessCallback , basicErrorCallback);
    },
           
    submitSendToAFriend:function() {
      var form = $('#QS_sendToAFriendForm');
      if( form.validate().form()) {
    	basketController.sendToAFriend( form.find('input[name=title]').val(),
    									form.find('input[name=author]').val(),
    									form.find('input[name=ourPrice]').val(),
    									form.find('input[name=rrp]').val(),
    									form.find('input[name=save]').val(),
    									form.find('input[name=urlInEmail]').val(),
    									form.find('input[name=thumbnail]').val(),
    									form.find('input[name=fromname]').val(), 
    									form.find('input[name=toname]').val(), 
    									form.find('input[name=fromemail]').val(), 
    									form.find('input[name=toemail]').val(), 
    									form.find('textarea[name=emailMessage]').val(), 
 		       		 				    form.find('input[name=sendMeACopy]').val(),
 		       		 				    sentToFriendSuccessCallback,
 		       		 				    sentToFriendErrorCallback)
      }
    },
    
  /// start to modify review form
    submitReviewForm:function() {
        var reviewForm =  $('#QS_reviewForm');
        
        if( reviewForm.validate().form()) {
        	
        	var rating = reviewForm.find('select[name=rating]').val();
        	if (!rating) {
        		rating = '5';
        	}
        	
          	basketController.postReview( 
          			     reviewForm.find('input[name=productIds]').val(),
          			     reviewForm.find('input[name=productId]').val(),
	          			 reviewForm.find('input[name=itemName]').val(),
			      		 reviewForm.find('input[name=itemMaker]').val(),
			      		 reviewForm.find('input[name=productFeature]').val(),
			      		 reviewForm.find('input[name=reviewStatusRef]').val(),
			      		 reviewForm.find('input[name=reviewTypeRef]').val(),
			      		 rating,
			      		 reviewForm.find('input[name=foreName]').val(),
			      		 reviewForm.find('input[name=emailAddress]').val(), 
			      		 reviewForm.find('input[name=reviewTitle]').val(), 
			      		 reviewForm.find('textarea[name=reviewText]').val(), 
					     sentReviewSuccessCallback,
	 				     sentReviewErrorCallback)

        }
      },
      /// end section 1
    
    initValidation:function(){
        $("#QS_sendToAFriendForm").validate({errorClass: "errorHighlight",
			errorContainer: "#QS_sendToAFriendErrorSection",
			errorLabelContainer: "#QS_sendToAFriendErrors",
			onfocusout: false,
			onclick: false,
			onkeyup: false,
			wrapper: "li",
			highlight: function(element, errorClass) {
				$(element).addClass(errorClass);
			},
			rules: QS_Constants.validation_rules("#QS_sendToAFriendForm"),
		    messages: QS_Constants.validation_messages
		});
        

       
         
        $("#QS_reviewForm").validate({errorClass: "errorHighlight",
  			errorContainer: "#QS_reviewFormErrorSection",
  			errorLabelContainer: "#QS_reviewFormErrors",
  			onfocusout: false,
  			onclick: false,
  			onkeyup: false,
  			wrapper: "li",
  			highlight: function(element, errorClass) {
  				$(element).addClass(errorClass);
  			},
  			rules: QS_Constants.validation_rules("#QS_reviewForm"),
	        messages: QS_Constants.validation_messages
  		});

    	
    },
    
     hideBookshelfNotification:function(catEntryId) { 	
		 $('div#QS_addBookshelfNotification_'+catEntryId).stop().fadeOut('slow');
	 },
	 
	 hideBasketNotification:function(catEntryId) { 	
		 $('div#QS_addBasketNotification_'+catEntryId).stop().fadeOut('slow');
	 }
 
    
    
  }

}

// On page load
$(function(){
 browseManager = new browseManager();
 browseManager.initValidation();
 $('#QS_friendThankyou').hide();
 $('.reviewThanks').hide();
 $('.QS_notification').hide();
});
       
