// define browser vars
var browsrObj = new browserObject();
var fadeSpeed = 1000;
var targetDiv = ".mainPanelHolder"; // as a string
// setup a holding div
var mainPanelDiv = $(document.createElement('div'));
mainPanelDiv.leftX = "";
mainPanelDiv.rightX = "";
mainPanelDiv.leftGutterWidth = "";
mainPanelDiv.leftGutterMidPoint = "";
mainPanelDiv.rightGutterWidth = "";
mainPanelDiv.rightGutterMidPoint = "";

var minScreenWidth = 1024;

var leftBoxesX = "";
var rightBoxesX = "";

var ffMc2 = browsrObj.detectMac();
var pPanels = $(".pushpanel");


//ms helper object
var ms = new msHelper();
var pushControl = new pushController("push");


var filter = new Filter();


$(document).ready(function () {	
	

    //shortcuts
    var pane1 = $("#p1");
    var pane2 = $("#p2");
    var pane3 = $("#p3");
    var pane4 = $("#p4");

    mainPanelDiv = $(targetDiv);

    //initialise main content panel	- get position of panel in relation to screen
    initialiseContentPanel();


    // check for resolution / browser type and then display pushes	
    pushControl.initPushes();


    filter.init();


    // set up the nav dropdowns
    setupNav();

    // target individual pages 
    /* sort out rollovers on range page */
    $(".ovr").hover(function () {
        $(this).css({
            'background': 'url("../images/bkgd-range-shad-ovr.png") no-repeat'
        });
    }, function () {
        $(this).css({
            'background-image': 'none'
        });
    });



    /* cycles */

    if ($('#mod1').length > 0) {

        $('#mod1').cycle({
            fx: 'scrollDown',
            next: '#next1',
            prev: '#prev1',
            timeout: 0

        });
    }

    if ($('#mod2').length > 0) {
        $('#mod2').cycle({
            fx: 'scrollDown',
            next: '#next2',
            prev: '#prev2',
            timeout: 0
        });
    }

    if ($('#mod3').length > 0) {
        $('#mod3').cycle({
            fx: 'scrollDown',
            next: '#next3',
            prev: '#prev3',
            timeout: 0
        });
    }



    /* tooltips */

    var toolTip = new Tooltip();
    toolTip.init();


    /* home page form validation */


    //used on login	
    if ($('.formValidate').length > 0) {


        var container = $('div.error');

        jQuery.validator.messages.required = ""; 

        var validator = $(".formValidate").validate({
			
			
            errorContainer: container,
            errorLabelContainer: $("p", container),
            //wrapper: 'span',
            rules: {
                "login": {
                    required: true,
                    email: true
                },
                "password": {
                    required: true
                }
            },
            meta: "validate",
            messages: {
                "login": "Please enter a valid email.<br />",
                "password": "Please enter your password. "
            },
			invalidHandler: function (e, validator) {
                var errors = validator.numberOfInvalids();
                if (errors) {
                    var message = errors == 1 ? 'You missed 1 field.' : 'You missed ' + errors + ' fields.';
                    var message = "";
					$("div.error p").html(message);                  
                } else {
                  
                }
            },
			
            errorPlacement: function (error, element) {             
            },
            debug: false,
            unhighlight: function (element, errorClass) {            
				container.show();
				$(element).css({'border' : '1px solid #cccccc'})
            },
            highlight: function (element, errorClass) {
               // $(element).next('.excMark').show();
               // $(".errorCont").show();
				$(element).fadeIn().css({
                    'border': '2px solid red'
                })
            }
        });
		
		
		$.validator.addMethod("checkBoxCount", function(value) {
			//return value.toLowerCase().indexOf("anonymous") != 0;
		}, 'Please choose a maximum of 3 brochures.');
		
    }






    // forgot_password validator
    if ($('.passwordForm').length > 0) {


        var container = $('div.errorCont');
        // Override default error message
        jQuery.validator.messages.required = "";
        container.hide();
        $(".excMark").hide();
        var validator = $(".passwordForm").validate({

            errorContainer: container,
            errorLabelContainer: $("ol", container),
            wrapper: 'li',
            rules: {
                email: {
                    required: true,
                    email: true
                }
            },
            meta: "validate",
            messages: {
                email: "Please enter a valid email address, example: you@yourdomain.com"
            },
            errorPlacement: function (error, element) {
                errorDiv = $('div.errorCont');
                error.appendTo(errorDiv);
            },
            debug: false,
            unhighlight: function (element, errorClass) {
                $(element).next('.excMark').hide();
                if (validator.numberOfInvalids() == 0) {
                    $(".errorCont").hide();
                }
            },
            highlight: function (element, errorClass) {
                $(element).next('.excMark').show();
                $(".errorCont").show();
            }
        });
    }



    //used on signup	
    if ($('.registerForm').length > 0) {

        var container = $('div.errorCont');
        jQuery.validator.messages.required = "";
        $(".excMark").hide();

        var validator = $(".registerForm").validate({

            errorContainer: container,
            errorLabelContainer: $("ol", container),
            wrapper: 'li',
            rules: {
                "user[password]": {
                    required: true,
                    minlength: 6
                },
                "user[password_confirmation]": {
                    required: true,
                    equalTo: "#user_password"
                },
                "user[city]": {
                    required: true
                },
                "user[house_number]": {
                    required: true
                },
                "user[address1]": {
                    required: true
                },
                "user[telephone]": {
                    required: true
                }
            },
            meta: "validate",
            messages: {
                "user[password]": "Please enter a valid password 6 characters or more.",
                "user[password_confirmation]": "Passwords do not match",
                "user[city]": "Please enter your town or city",
                "user[house_number]": "Please enter a valid address",
                "user[address1]": "Please enter a valid town or city",
                "user[telephone]": "Please enter a valid telephone number"
            },
            errorPlacement: function (error, element) {
                errorDiv = $('div.errorCont');
                error.appendTo(errorDiv);
            },
            debug: false,
            unhighlight: function (element, errorClass) {
                $(element).next('.excMark').hide();
                if (validator.numberOfInvalids() == 0) {

                    $(".errorCont").hide();
                }
            },
            highlight: function (element, errorClass) {
                $(element).next('.excMark').show();
                $(".errorCont").show();
            }
        });
    }





    // contact-us validator
    if ($('.contactus').length > 0) {


        var container = $('div.errorCont');
        // Override default error message
        jQuery.validator.messages.required = "";
        container.hide();
        $(".excMark").hide();
        var validator = $(".contactus").validate({

            errorContainer: container,
            errorLabelContainer: $("ol", container),
            wrapper: 'li',
            rules: {
                email: {
                    required: true,
                    email: true
                },
                address1: {
                    required: true
                },
                city: {
                    required: true
                },
                postcode: {
                    required: true
                },
                telephone: {
                    required: true
                }
            },
            meta: "validate",
            messages: {
                email: "Please enter a valid email address, example: you@yourdomain.com",
                address1: "Please add a valid address",
                city: "Please add a valid town or city",
                postcode: "Please add a valid postcode",
                telephone: "Please add a valid telephone number"
            },
            errorPlacement: function (error, element) {
                errorDiv = $('div.errorCont');
                error.appendTo(errorDiv);
            },
            debug: false,
            unhighlight: function (element, errorClass) {
                $(element).next('.excMark').hide();
                if (validator.numberOfInvalids() == 0) {
                    $(".errorCont").hide();
                }
            },
            highlight: function (element, errorClass) {
                $(element).next('.excMark').show();
                $(".errorCont").show();
            }
        });
    }











    //used on accessories/enquiry-form?xxx	
    if ($('.accContForm').length > 0) {

        var container = $('div.errorCont');
        jQuery.validator.messages.required = "";
        $(".excMark").hide();

		var checkBoxes = $(".brochureChkBox");
        var validator = $(".accContForm").validate({

            errorContainer: container,
            errorLabelContainer: $("ol", container),
            wrapper: 'li',
            rules: {
                "email": {
                    required: true,
                    email: true
                },
                "address1": {
                    required: true,
                    equalTo: "#user_password"
                },
                "city": {
                    required: true
                },
                "postcode": {
                    required: true
                },
				
				"validateCheckboxes": {
					required: true
				}				
            },
            meta: "validate",
            messages: {
                "email": "Please enter a valid email address",
                "address1": "Please enter your address",
                "city": "Please enter your town or city",
                "postcode": "Please enter a valid postcode."

            },
            errorPlacement: function (error, element) {
                errorDiv = $('div.errorCont');
                error.appendTo(errorDiv);
            },
            debug: false,
            unhighlight: function (element, errorClass) {
                $(element).next('.excMark').hide();
                if (validator.numberOfInvalids() == 0) {

                    $(".errorCont").hide();
                }
            },
            highlight: function (element, errorClass) {
                $(element).next('.excMark').show();
                $(".errorCont").show();
            }
        });
		
	$.validator.addMethod("validateCheckboxes", function(value, element) {

			}, "End Date should be greater than Start Date.");
    }




    //used on login	
    if ($('.loginForm').length > 0) {

        var container = $('div.errorCont');
        jQuery.validator.messages.required = "";
        $(".excMark").hide();


        var validator = $(".loginForm").validate({

            errorContainer: container,
            errorLabelContainer: $("ol", container),
            wrapper: 'li',
            rules: {
                "login": {
                    required: true,
                    email: true
                },
                "password": {
                    required: true
                }

            },
            meta: "validate",
            messages: {
                "login": "Please enter a valid email",
                "password": "Please enter your password"


            },
            errorPlacement: function (error, element) {
                errorDiv = $('div.errorCont');
                error.appendTo(errorDiv);
            },
            debug: false,
            unhighlight: function (element, errorClass) {
                $(element).next('.excMark').hide();
                if (validator.numberOfInvalids() == 0) {

                    $(".errorCont").hide();
                }
            },
            highlight: function (element, errorClass) {
                $(element).next('.excMark').show();
                $(".errorCont").show();
            }
        });
    }




	
    //used on accessories/download-brochures
    if ($('.dlForm').length > 0) {

		
	
	
	//clear checkboxes first
	$(".brochureChkBox").attr('checked', false);
	
	
		

		


        var container = $('div.errorCont');
        jQuery.validator.messages.required = "";
        $(".excMark").hide();
		$(".errorCont").hide();


		// overwrite default messages
		$.extend($.validator.messages, {
			//required: "These fields are required",
			//equalTo: "Please retype your email address"
		});

		
		
		


        var validator = $(".dlForm").validate({

            errorContainer: container,
            errorLabelContainer: $("ol", container),
            wrapper: 'li',
            rules: {
				"salutation":{
					required: true					
				},
				"first_name":{
					required: true					
				},
				"last_name":{
					required: true					
				},																
                "email": {
                    required: true,
                    email: true
                },
				"dlreemail":{
                    required: true, 
					email: true 
                }
            },
            meta: "validate",
            messages: {
				"salutation" : "Please enter a title",				
				"first_name" : "Please enter a First Name",
				"last_name" : "Please enter a Last Name",				
                "email": "Please enter a valid email address",
                "equalTo": "Please retype your email address",                
				"address1": "Please enter your address",
                "city": "Please enter your town or city",
                "postcode": "Please enter a valid postcode."
            },
            errorPlacement: function (error, element) {
                errorDiv = $('div.errorCont');
                error.appendTo(errorDiv);
            },
            debug: false,
            unhighlight: function (element, errorClass) {
                $(element).next('.excMark').hide();
                if (validator.numberOfInvalids() == 0) {

                    $(".errorCont").hide();
                }
            },
            highlight: function (element, errorClass) {
                $(element).next('.excMark').show();
                $(".errorCont").show();
            }
			
        });
		
		
		
		$(".brochureChkBox").rules("add", {				
				 "checkChkBox": {
				 	required : true
				 },
				 required: {				 	
                    depends: function() {                       
                    }
                },
				 messages: {
				 	required: "Please Choose 1 - 3 Brochures to download",
					checkChkBox : "Please Choose 1 - 3 Brochures to download"					
				}	
		});
		
		 
    }

  	$(".brochureChkBox").click(function(){
   					
   				$(".dlForm").validate().form();
   	});
	
   $.validator.addMethod("checkChkBox",function(){ 
   	var checkboxes = $("input:checkbox:checked.brochureChkBox")	
		if(checkboxes.length == 0 || checkboxes.length > 3 ){				
				return false;
		} else {
			return true;
		} 
   });


    /* target buttons for lightbox overlay */
    $(".zoom").colorbox();

    /* accordion */
    $('.hidden').hide();
    $('.accordion .openBtn').click(function (e) {
        if ($(this).is(':visible')) {
            $(this).hide();
        }
        $(this).parents().next('.hidden').slideDown("slow");
        return false;
    });
    $('.accordion .closeBtn').click(function (e) {
        $(this).parents('.hidden').slideUp("slow");
        $(this).parents().siblings('.introText').find('.openBtn').show();
        return false;
    });
});


/* move pushes on resize */


$(window).resize(function () {
    if (resizeTimeout) clearTimeout(resizeTimeout);
    resizeTimeout = setTimeout(function () {
        pushControl.animatePushes();
    }, 1000);
    var resizeTimeout = null;
});





