(function($){
   $.paginateForm = function(params){ 
      var hiddenContentClass = params.hiddenContentClass;
      var navElements = params.navElements;
      var selectedClass = params.selectedClass;
      var nextButtonClass = params.nextButtonClass;
      var prevButtonClass = params.prevButtonClass;
      
                  
        $("."+hiddenContentClass+":eq(0)").css('display','block');
   	$(navElements+":eq(0)").addClass(selectedClass);   

		$(nextButtonClass).click(function(e){
         //Stop Form Submit
         e.preventDefault();
         
         //get current form 
         var currentNav = $(navElements+"."+selectedClass);
                           
         
         if( validateForm()){
            currentNav.removeClass(selectedClass).addClass('isSelectable');
            var currentElem = $("#"+currentNav.attr('title')).css('display','none');         
            jQuery.data(currentElem.get(0), "isClickable", true);

                       
            newNavIndex = jQuery.inArray(currentNav.get(0), $(navElements+":not('.hiddenStep')"));
            newNavIndex++;
            
            currentNav = $(navElements+":not('.hiddenStep'):eq("+newNavIndex+")").addClass(selectedClass).addClass('isSelectable');
            currentElem = $("#"+currentNav.attr('title'))
            currentElem.fadeIn();

            jQuery.data(currentElem.get(0), "isClickable", true);
         }         
      });
		$(prevButtonClass).click(function(e){
         //Stop Form Submit
         e.preventDefault();

         //get current form
         var currentNav = $(navElements+"."+selectedClass);

        currentNav.removeClass(selectedClass).removeClass('isSelectable');
        var currentElem = $("#"+currentNav.attr('title')).css('display','none');
        jQuery.data(currentElem.get(0), "isClickable", false);


        newNavIndex = jQuery.inArray(currentNav.get(0), $(navElements+":not('.hiddenStep')"));
        newNavIndex--;

        currentNav = $(navElements+":not('.hiddenStep'):eq("+newNavIndex+")").addClass(selectedClass).addClass('isSelectable');
        currentElem = $("#"+currentNav.attr('title'))
        currentElem.fadeIn();

        jQuery.data(currentElem.get(0), "isClickable", true);
      });


		$(navElements).each(function(){								
                    $(this).click(function(){
                        var title = $(this).attr('title');
			var targetElem = $("#"+title);

			if(jQuery.data(targetElem.get(0), "isClickable")){
                            if(validateForm()){
                                $(navElements).removeClass(selectedClass);

      				// hide all content
      				$("."+hiddenContentClass).css('display','none');      				
      				currentSelection = jQuery.inArray(this,$(navElements+":not('hiddenStep')"));
      				
      				// now lets show the desired information
      				$(this).addClass(selectedClass);      				   				
      				targetElem.fadeIn();
      				
      				return false;
                            }
   			}
                        return true;
                    })
		})      
   };
})(jQuery);	

var validateForm = function(e){
   var step = $("#quoteSteps .selected").attr('title');
   delete options;
   if(step == 'slide1'){
      options = {
      	rules: {
            namer: "required",
            address: "required",
            city: "required",
            state: "required",
            zipcode: "required",
            phone: "required"
      	},
      	messages: {
            namer: "Please enter your firstname",
            address: "required",
            city: "required",
            state: "required",
            zipcode: "required",
            phone: "required"    		
      	}
      };
   }
   else if(step == 'slide2'){
      options = {
      	rules: {
            "insuranceLines[]": "required"
      	},
      	messages: {
            "insuranceLines[]": "At least one insurance type is required"
      	},
         errorPlacement: function(error, element) {
             error.insertBefore(element.parent());
         },  
         highlight: function(element, errorClass) {
           $(element).parent().parent().addClass(errorClass);
         },
         unhighlight: function(element, errorClass) {
           $(element).parent().parent().removeClass(errorClass);
         }
             	
      };   
   }
   else if(step == 'slide3'){
      options = {
      	rules: {
            motorcycle_garaging: "required",
            motorcycle_makeModel: "required",
            motorcycle_nada: "required",
            motorcycle_engineSize: "required",
            motorcycle_vin: "required"            
      	},
      	messages: {
            motorcycle_garaging: "Required",
            motorcycle_makeModel: "required",
            motorcycle_nada: "required",
            motorcycle_engineSize: "required",
            motorcycle_vin: "required"            
      	}
      };   
   }
   else if(step == 'slide4'){
      options = {
      	rules: {
				autoYear1: "required",
				autoMake1: "required",
				autoModel1: "required",
				autoVin1: "required",
            auto_license: "required",
            auto_coverage: "required",
            auto_isHomeowner: "required"
      	},
      	messages: {
            auto_license: "required",
            auto_coverage: "required",
            auto_isHomeowner: "required"
      	}
      };
   }
   else if(step == 'slide5'){
      options = {
      	rules: {
            home_deededOwner: "required",
            home_ownerDOB: "required",
            home_ownerSSN: "required",
            home_propertyAddress: "required",
            home_county: "required",
            home_nonRenewed: "required",
            home_coverageAmount: "required",
            home_liabilityAmount: "required",
            home_medicalAmount: "required",
            home_deductible: "required"
      	},
      	messages: {
            home_deededOwner: "required",
            home_ownerDOB: "required",
            home_ownerSSN: "required",
            home_propertyAddress: "required",
            home_county: "required",
            home_nonRenewed: "required",
            home_nonRenewedReason: "required",
            home_coverageAmount: "required",
            home_liabilityAmount: "required",
            home_medicalAmount: "required",
            home_deductible: "required"
      	}
      };

   }
   if(typeof options != "undefined"){
      var form = $("#form");
      jQuery.removeData(form.get(0));
      var validator = $("#form").validate(options);
      return validator.form();
   }
   else return true;
   
}

