var RazsorLayoutJS = {};

RazsorLayoutJS.init = function() {
    RazsorLayoutJS.globalJS();
    RazsorLayoutJS.iePIEhook();
    RazsorLayoutJS.showCaseVehicleHideWelcomeText();
    RazsorLayoutJS.addSocialAndPrintButtons();
    RazsorLayoutJS.readMoreAndLess('.rzc-opening-times .additionalInformation');
    RazsorLayoutJS.fullFinanceForm();
    RazsorLayoutJS.setToBiggestWidth('ul.showcase-specs li strong');
    RazsorLayoutJS.createHTMLforAccordian();
    RazsorLayoutJS.expandWhenVideoPresent();
    RazsorLayoutJS.bindButtonsforAccordianClick();
    RazsorLayoutJS.behaviourOfForm();
    RazsorLayoutJS.setNumberOnlyInputs('.text-year');
    RazsorLayoutJS.createDateTimePicker('.selected-date');
    RazsorLayoutJS.techSpecBehaviour();
    RazsorLayoutJS.techAndSimilarVehiclesFunctionality();
    RazsorLayoutJS.createPrintDescription();
    RazsorLayoutJS.addressMiddle();
    RazsorLayoutJS.stocklistFinanceInformationDisplay();
    RazsorLayoutJS.stocklistFinanceCalculator();
};

RazsorLayoutJS.globalJS = function() {
    // mark as javascript enabled
    $("body").addClass("js");
    balanceHeightOfPromotionsAfterTimeout(250);
};


RazsorLayoutJS.addressMiddle = function() {
    if ($('.open-expand').not(":visible") && $('#contactPopup').is(":visible")) {
        $('.adr-clicker').addClass("in-middle");
        $('.adr-clicker').addClass("withbg");

    } else {
        $('.adr-clicker').removeClass("in-middle");
        $('.adr-clicker').addClass("withbg");
    }

};

RazsorLayoutJS.createPrintDescription = function() {
    // Detail page, truncate text
    $(".printversion").html($('.rzp-used-cars .rzc-advert .description .more p').html());
    $('.rzp-used-cars .rzc-advert .description .more p').trunc(320, '... <span class="trunc">[[More]]</span>', '<span  class="trunc hide">[[Hide]]</span>');
};

RazsorLayoutJS.setNumberOnlyInputs = function() {
    // Set the year text box to only accept numbers
    for (i = 0; i < arguments.length; i++) {
        $(arguments[i]).keyup(function() {
            this.value = this.value.replace(/[^0-9\.]/g, '');
        });
    }
};

RazsorLayoutJS.readMoreAndLess = function() {
    for (i = 0; i < arguments.length; i++) {
        $(arguments[i]).expandable();
    }

};

RazsorLayoutJS.createDateTimePicker = function() {
    for (i = 0; i < arguments.length; i++) {
        $(arguments[i]).datepicker({
            showOn : "button",
            dateFormat : 'dd/mm/yy'
        });
    }
};

RazsorLayoutJS.setToBiggestWidth = function() {
    for (i = 0; i < arguments.length; i++) {
        var max = 0;
        $(arguments[i]).each(function() {
            if ($(this).width() > max)
                max = $(this).width();
        });
        $(arguments[i]).width(max + 1);
    }
};

RazsorLayoutJS.iePIEhook = function() {
    if ($.browser.msie) {
        $('.rz-wm-colour').bind('change', function(event) {
            $('css3-container').each(function(index) {
                $(this).next().removeClass('non-existant-class');
            });
            $('.gradient-applied').each(function(index) {
                $(this).removeClass('non-existant-class');
            });

        });
        $('.rz-wm-colour').bind('click', function(event) {
            $('.gradient-applied').each(function(index) {
                $(this).removeClass('non-existant-class');
            });

        });
    }
};
RazsorLayoutJS.showCaseVehicleHideWelcomeText = function() {
    if ($('.left-content .showcase-vehicle-wrapper #showcaseVehicleTitleComponent').is(":visible")) {
        $('.left-content .showcase-vehicle-wrapper').show();
    }
    else $('.left-content .showcase-vehicle-wrapper').hide();
    };

RazsorLayoutJS.techAndSimilarVehiclesFunctionality = function() {
    // The tech-spec or similar vehicles switch
    $("#advertDetailComponent a.advert-section-vehicle").click(function() {
        $(".rzc-advert .tech-spec-box-inner").slideUp();
        $(".rzc-advert .rzc-advert-summary .description").slideDown();
        $("#advertDetailComponent a.advert-section-vehicle").addClass('tab-on');
        $("#advertDetailComponent a.advert-section-tech").removeClass('tab-on');
        return false;
    });
    $("#advertDetailComponent a.advert-section-tech").click(function() {
        $(".rzc-advert .rzc-advert-summary .description").slideUp();
        $(".rzc-advert .tech-spec-box-inner").slideDown();
        $("#advertDetailComponent a.advert-section-tech").addClass('tab-on');
        $("#advertDetailComponent a.advert-section-vehicle").removeClass('tab-on');
        return false;
    });
    $(".rzc-advert .more-details .tech-spec-box-inner").hide();
};

RazsorLayoutJS.openExpand = function() {
    if ($(".rzc-opening-times:animated").length < 1 && $(".right .rzc-contact-details .adr:animated").length < 1) {
        $(".rzc-opening-times").slideDown('slow');
        $(".right-col-wrap .rzc-link-button").hide();
        $(".right .rzc-contact-details .adr").hide();
        $(".right .rzc-contact-details .adr-clicker").show();
        $(".open-expand").css('display', 'none');
        if ($('#contactPopup').is(":visible")) {
            $('.adr-clicker').addClass("in-middle");

        } else {
            $('.adr-clicker').removeClass("in-middle");
        }
        $.cookie("selectedItemForecourt", "2", {
            expires : 7,
            path : '/'
        });
    }
};

RazsorLayoutJS.addExpand = function() {
    if ($(".rzc-opening-times:animated").length < 1 && $(".right .rzc-contact-details .adr:animated").length < 1) {
        if ($('.open-expand').not(":visible")) {
            $('.adr-clicker').addClass("in-middle");

        } else {
            $('.adr-clicker').removeClass("in-middle");
        }
        $(".right .rzc-contact-details .adr-clicker, .right .rzc-opening-times").hide();
        $(".right .rzc-contact-details .adr").slideDown('slow');
        $(".right-col-wrap .rzc-link-button").fadeIn('slow', function() {
            if ($(".right .rzc-contact-details .adr").is(':hidden')) {
                $(".right-col-wrap .rzc-link-button").hide();
            }
        });
        $(".open-expand").show();

        $.cookie("selectedItemForecourt", "1", {
            expires : 7,
            path : '/'
        });
    }

};

RazsorLayoutJS.addSocialAndPrintButtons = function() {
    // Add print button to main menu
    $(".rzc-main-menu ul.social-menu").append('<li class="print"><a href="#"><span>Print page</span></a></li>');

    // Open print dialog
    $(".rzc-main-menu ul .print").click(function() {
        window.print();
        return false;
    });

    $(".stockFacebook, .stockTwitter").click(function() {
        return false;
    });
};

RazsorLayoutJS.showCaseVehicleHideWelcomeText = function() {
    if ($('.left-content .showcase-vehicle-wrapper #showcaseVehicleTitleComponent').is(":visible")) {
        $('.left-content .showcase-vehicle-wrapper').next().hide();
    }
};

RazsorLayoutJS.techSpecBehaviour = function() {
    // Detail page, tech specs
    $('.rzc-advert .more-details h3:eq(0)').addClass('on');
    $('.rzc-advert .more-details .box:not(:eq(0))').hide();
    $('.rzc-advert .more-details h3').click(function() {
        if ($(this).hasClass('on')) {
            $(this).removeClass('on');
            $(this).next().slideUp();
        } else {
            $(this).parent().find('h3').removeClass('on');
            $(this).parent().find('.box').slideUp();
            $(this).addClass('on');
            $(this).next().slideDown();
        }
    });
    $(".rzc-advert .more-details table tbody tr:even").addClass('alt');
};

RazsorLayoutJS.createHTMLforAccordian = function() {
    $('.rzc-opening-times .wrap').after('<div class="contract-button"></div>');
    $('.right .rzc-contact-details dl dt.adr').append('<div class="contract-button"></div>');
    $('.right .rzc-contact-details dl dt.email, #contactPopup').append('<div class="contract-button"></div>');
    $('.right .rzc-contact-details dl dt.email, #contactPopup').append('<div class="contract-button2"></div>');
    $(".open-expand").addClass('withbg');
    $(".open-expand").append('<a href="#"><div class="opening"><span class="opening-icon">&nbsp;</span><span class="opening">Opening times</span><span class="toggle-icon">&nbsp;</span></div></a>');
    $('.right .rzc-contact-details dl dt.adr').before('<dd class="adr-clicker"><span class="adr-icon">&nbsp;</span><a href="#"><span class="address">Address: Click Here</span><div class="contract-button2"></div></a></dd>');

    // Check the cookie and update the view of the right section
    if ($.cookie("selectedItemForecourt") != null) {
        if ($.cookie("selectedItemForecourt") == 1) {
            RazsorLayoutJS.addExpand();
        } else {
            RazsorLayoutJS.openExpand();
        }
    } else {
        RazsorLayoutJS.addExpand();
    }

    if ($.cookie("mailExpand") != null) {

        if ($.cookie("mailExpand") == 1) {
            $(".right #contactPopup, .right .rzc-contact-details dl dt.email .contract-button").show();
            $(".right .rzc-contact-details dl dt.email .contract-button2").hide();
            $(".right .rzc-contact-details dl dt.email a, .right .rzc-contact-details dl dt.email").addClass("tog");
        } else {
            $(".right .rzc-contact-details dl dd.email, .right #contactPopup, .right .rzc-contact-details dl dt.email .contract-button").hide();
            $(".right .rzc-contact-details dl dt.email .contract-button2").show();
            $(".right .rzc-contact-details dl dt.email, .right .rzc-contact-details dl dt.email a").removeClass("tog");
        }
    } else {
    	   $(".right .rzc-contact-details dl dd.email, .right #contactPopup, .right .rzc-contact-details dl dt.email .contract-button").hide();
           $(".right .rzc-contact-details dl dt.email .contract-button2").show();
           $(".right .rzc-contact-details dl dt.email, .right .rzc-contact-details dl dt.email a").removeClass("tog");
       // $(".open-expand").show();
    }
};

RazsorLayoutJS.bindButtonsforAccordianClick = function() {
    $(".right .rzc-contact-details dl dt.email a, .right .rzc-contact-details dl dt.email .contract-button2, .right .rzc-contact-details dl dt.email .contract-button").click(function() {
        RazsorLayoutJS.contactDealer();
        return false;
    });
    $(".right .rzc-contact-details dl dd.adr-clicker a, .right .rzc-opening-times .contract-button, .right .rzc-opening-times .toggle-icon").click(function() {
        RazsorLayoutJS.addExpand();
        return false;
    });
    $(".open-expand, .right .rzc-contact-details .adr .contract-button").click(

    function() {
        RazsorLayoutJS.openExpand();
        return false;
    });

    // Right panel contact form button actions
    $(".right .form-button-ok").live('click', function() {
        $(".email-form").show();
        $(".email-thankyou").hide();
        $('.right #contactPopup form').get(0).reset();

    });
    $(".email-popup .form-button-ok").live('click', function() {
        $('#colorbox').hide();
        $('#cboxOverlay').hide();
    });

};

RazsorLayoutJS.expandWhenVideoPresent = function() {
    if ($(".right-col-wrap .rzc-video").height() < 52) {
        $(".right-col-wrap .open-expand, .right .rzc-contact-details .adr-clicker").hide();
        $(".right .rzc-opening-times span.opening span.toggle-icon").hide();
        $(".right .rzc-contact-details .adr, .rzc-opening-times, .right-col-wrap .rzc-link-button").show();
        $(".right .rzc-video .box").css({
            'border-style' : 'none',
            'padding' : '0'
        });
    } else {
        $(".right .rzc-video .box").css({
            'border-style' : 'solid',
            'padding' : '4px'
        });
    }
};

RazsorLayoutJS.contactDealer = function() {
    $(".right #contactPopup").slideToggle(function() {
        if ($('.right .rzc-contact-details #contactPopup').is(':visible')) {

            $.cookie("mailExpand", "1", {
                expires : 7,
                path : '/'
            });
        } else {
            $.cookie("mailExpand", "0", {
                expires : 7,
                path : '/'
            });
        }
    });

    $(".right .rzc-contact-details dl dt.email .contract-button, .right #contactPopup").toggle();
    $(".right .rzc-contact-details dl dt.email .contract-button2").toggle();
    $(".right .rzc-contact-details dl dd.email").hide();
    $(".right .rzc-contact-details dl dt.email a").toggleClass("tog");
    $(".right .rzc-contact-details dl dt.email").toggleClass("tog");
    if ($('.open-expand').not(":visible") && $('.adr-clicker').hasClass("in-middle")) {

        $('.adr-clicker').removeClass("in-middle");
        $('.adr-clicker').addClass("withbg");
    } else {

        $('.adr-clicker').addClass("in-middle");
        $('.adr-clicker').removeClass("wtihbg");
    }
};

RazsorLayoutJS.fullFinanceForm = function () {

    // hide full enquiry form
    $(".rzc-finance .full").hide();
    $(".rzp-finance .submit-and-warning button.submit span").text("Send my finance enquiry");

    // show correct form on page load
    var formToShow = $("#formToShow").attr("value");

    if (formToShow !== null && formToShow === "full") {
    	$("#full-enquiry-form").attr("value","true");
        $(".rzc-finance .quick").hide();
        $(".rzc-finance .full").show();
    } else {
    	$("#full-enquiry-form").attr("value", "false");
    	$(".rzc-finance .quick").show();
        $(".rzc-finance .full").hide();
    }

    // show hide forms on click
    var fullLink = $(".quick .switch a");
    fullLink.click(function () {
        $(".quick").fadeOut('fast',function () {
            $(".rzc-finance .full").show();
            $("#fields > .full").slideDown(1000);
            formToShow = "full";
            $("#full-enquiry-form").attr("value", "true");
            $('.common-field').removeClass("highlight-error");
            $('#finance-form .form-warning').empty();
        });
    });
    var quickLink = $(".full .switch a");
    quickLink.click(function () {
        $(".full").fadeOut('fast', function () {
            $(".rzc-finance .quick").show();
            $("#fields > .quick").slideDown();
            $("#full-enquiry-form").attr("value","false");
            formToShow = "quick";
            $('.common-field').removeClass("highlight-error");
            $('#finance-form .form-warning').empty();
        });
    });

    $(".current-address").change(function () {
        var yearsCheckAddress = parseInt($(".current-address").val(), 10);
        if (yearsCheckAddress > 3) {
            $(".previous-address input").attr("disabled", "disabled");
            $(".previous-address input").attr("style", "background:#EBEBE4;");
        } else {
            $(".previous-address input").removeAttr("disabled");
            $(".previous-address input").removeAttr("style");
        }
    });

    $(".current-employer").change(function () {
        var yearsCheckEmp = parseInt($(".current-employer").val(), 10);
        if (yearsCheckEmp > 2) {
            $(".previous-employer input").attr("disabled", "disabled");
            $(".previous-employer input").attr("style", "background:#EBEBE4;");
        } else {
            $(".previous-employer input").removeAttr("disabled");
            $(".previous-employer input").removeAttr("style");
        }
    });
    
    $(".dob").datepicker({
		dateFormat : 'dd/mm/yy' ,
		changeMonth: true,
		changeYear: true,
		yearRange: '-111:+0'
	});

};

RazsorLayoutJS.behaviourOfForm = function() {
    $(".email-form .text-your-email").focus(function() {
        if ($(this).val() == "Your email") {
            $(this).val("");
        }
    });

    $(".email-form .text-subject").focus(function() {
        if ($(this).val() == "Email subject") {
            $(this).val("");
        }
    });

    $(".email-form textarea").focus(function() {
        if ($(this).val() == "Message") {
            $(this).val("");
        }
    });
};

RazsorLayoutJS.stocklistFinanceInformationDisplay = function(){
	$(".rzc-stocklist .financeIllustration").prepend('<a class="finance-info-button-outer"><span class="finance-info-button finance-hidden">Click here to view finance information for this vehicle</span></a>');
    $(".financeIllustrationWrapper").hide();
    $(".finance-info-button").live('click',function(event){
    	event.preventDefault();
    	if($(this).hasClass("finance-hidden")){
    		$(this).html("Click here to hide finance information for this vehicle").removeClass("finance-hidden");
    		$(this).parent().parent().find(".financeIllustrationWrapper").slideDown(); 
    	}
    	else{
    		$(this).html("Click here to view finance information for this vehicle").addClass("finance-hidden");
    		$(this).parent().parent().find(".financeIllustrationWrapper").slideUp();
    	}   	
    });
};

RazsorLayoutJS.stocklistFinanceCalculator = function() {
	if (!$(".finance-calculator .box-calculator").hasClass("rzc-hidden")) {
	$(".finance-calculator").append('<div class="finance-calculator-show-hide"><span>Adjust finance options</span</div>')
	$(".finance-calculator .wrapper").hide();
	$(".finance-calculator-show-hide").live('click',function(){
	 	if($(".finance-calculator .wrapper").hasClass("down")){		
			$(".finance-calculator .wrapper").slideUp().removeClass("down");
			$(this).find("span").html("Adjust finance options");
			$(this).css("bottom","-20px");
		} else {
			$(".finance-calculator .wrapper").slideDown().addClass("down");
			$(this).find("span").html("Close finance options");
			$(this).css("bottom","-30px");
		}
	});
	}
	$(".rzc-stocklist .calculateFinance").click(function(){		
		$(this).val("Updating...");	
	});
}

$(document).ready(function() {
    RazsorLayoutJS.init();
});
