 /*
 * Personalisation
 */
 
var userDetailsKnown = $.cookie('userDetailsKnown');

var usingOfferSummaryModuleUserDetailsForm = false;
var newUser = false;
var bpyt;

/* MVT testing start */
//Delcaring variables to access them across all functions           	
var MVTTextPostcodeSuburb = 'Postcode / Suburb';
var MVTTextRegistrationType = 'Registration Type';
var MVTTextDealership = 'Your local dealers are:';
var MVTTestSection = '3.9% Postcode Entry';
var MVTTestCase = 'PE-V';
var MVTTrackingStartFlag = false;
var MVTTrackingEndFlag = false;
/* MVT testing end */

var personalisation = {
    user: {
        anon: function() {
            module.globalFooter.anonUser();
            module.userDetails.anonUser();
            module.pricing.anonUser();
            module.ownersPortalHome.genericUser();
            module.ownersPortalArticle.genericUser(); 
            module.showroomHeader.anonUser();
            module.homepageDealer.anonUser();
            module.specialOffersDealer.anonUser();
            // Start modification Panalysis
            tracking.event.receive({EventClass:"Personalisation",Action:"State",State:"Anon"});
            // End modification

            if(offers) {
                offers.activate();
            }
            if(bpyt) {
                bpyt.activate();
            }
        },
        known: function() {
            module.globalFooter.knownUser();
            module.userDetails.knownUser();
            module.specsPricing.knownUser();
            module.pricing.knownUser();
            module.dealerSummary.knownUser();
            module.ownersPortalHome.genericUser();
            module.ownersPortalArticle.genericUser();
            module.showroomHeader.knownUser();
            module.homepageDealer.knownUser();
            module.specialOffersDealer.knownUser();
            // Start modification Panalysis
            tracking.event.receive({EventClass:"Personalisation",Action:"State",State:"Known"});
            // End modification

            if(offers) {
                offers.activate();
            }
            if(bpyt) {
                bpyt.activate();
            }
        }
    },
    update: {
        dealerInfo: function(data) {
            userDetailsDealerId = data.id;
            userDetailsDealerName = data.name;
            userDetailsDealerPostcode = data.postcode;
            userDetailsDealerAddress = data.address;
            userDetailsDealerSuburb = data.suburb;
            userDetailsDealerState = data.state;
            userDetailsDealerRegionName = data.regionName;
            userDetailsDealerRegionType = data.regionType;
            userDetailsDealerEmail = data.email;
            userDetailsDealerTelephone = data.telephone;
            userDetailsDealerFax = data.fax;
            $.cookie('userDetailsDealerId', userDetailsDealerId, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerName', userDetailsDealerName, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerPostcode', userDetailsDealerPostcode, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerAddress', userDetailsDealerAddress, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerSuburb', userDetailsDealerSuburb, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerState', userDetailsDealerState, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerRegionName', userDetailsDealerRegionName, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerRegionType', userDetailsDealerRegionType, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerEmail', userDetailsDealerEmail, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerTelephone', userDetailsDealerTelephone, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerFax', userDetailsDealerFax, {expires: 7, path: '/'});
        },
        userInfo: function(data) {
            userDetailsPostcode = data.postcode;
            userDetailsSuburb = data.suburb;
            userDetailsState = data.state;
            userDetailsRegType = data.regType;
            $.cookie('userDetailsPostcode', userDetailsPostcode, {expires: 7, path: '/'});
            $.cookie('userDetailsSuburb', userDetailsSuburb, {expires: 7, path: '/'});
            $.cookie('userDetailsState', userDetailsState, {expires: 7, path: '/'});
            $.cookie('userDetailsRegType', userDetailsRegType, {expires: 7, path: '/'});
            // Start modification Panalysis
            tracking.event.receive({EventClass:"Personalisation",Action:"State",State:"Update"});
            // End modification

        }
    },
    erase: {
        dealerInfo: function() {
            userDetailsDealerId = null;
            userDetailsDealerName = null;
            userDetailsDealerPostcode = null;
            userDetailsDealerAddress = null;
            userDetailsDealerSuburb = null;
            userDetailsDealerState = null;
            userDetailsDealerRegionName = null;
            userDetailsDealerRegionType = null;
            userDetailsDealerEmail = null;
            userDetailsDealerTelephone = null;
            userDetailsDealerFax = null;
            $.cookie('userDetailsDealerId', userDetailsDealerId, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerName', userDetailsDealerName, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerPostcode', userDetailsDealerPostcode, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerAddress', userDetailsDealerAddress, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerSuburb', userDetailsDealerSuburb, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerState', userDetailsDealerState, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerRegionName', userDetailsDealerRegionName, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerRegionType', userDetailsDealerRegionType, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerEmail', userDetailsDealerEmail, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerTelephone', userDetailsDealerTelephone, {expires: 7, path: '/'});
            $.cookie('userDetailsDealerFax', userDetailsDealerFax, {expires: 7, path: '/'});
        },
        userInfo: function(data) {
            userDetailsPostcode = null;
            userDetailsSuburb = null;
            userDetailsState = null;
            userDetailsRegType = null;
            $.cookie('userDetailsPostcode', userDetailsPostcode, {expires: 7, path: '/'});
            $.cookie('userDetailsSuburb', userDetailsSuburb, {expires: 7, path: '/'});
            $.cookie('userDetailsState', userDetailsState, {expires: 7, path: '/'});
            $.cookie('userDetailsRegType', userDetailsRegType, {expires: 7, path: '/'});
        }
    },
    display: {
        form: function(element, tracking) {
            var regType = '';
            var changeText = '';
            
            if(userDetailsKnown) {
                changeText = '_Change';
            }
            
            var UserDetailsLocationValue = 'eg. 2000 or Sydney';
            if(userDetailsPostcode && userDetailsSuburb && userDetailsState) UserDetailsLocationValue = userDetailsSuburb+', '+userDetailsState+' '+userDetailsPostcode;
            var userDetailsPostcodeValue = '';
            if(userDetailsPostcode) userDetailsPostcodeValue = userDetailsPostcode;
            var userDetailsSuburbValue = '';
            if(userDetailsSuburb) userDetailsSuburbValue = userDetailsSuburb;
            var userDetailsStateValue = '';
            if(userDetailsState) userDetailsStateValue = userDetailsState;
            			
/* Pre MVT testing
 	        $(element).append('<div class="choose-a-dealer"><form id="personalisation"></form></div>');
            $(element).find('#personalisation').append('<div id="userInfo"></div>');
            $(element).find('#userInfo').append('<div class="location"></div>');
            $(element).find('#userInfo').append('<div class="regtype"></div>');
            $(element).find('#userInfo .location').append('<div class="hiddenFields"></div>');
            $(element).find('#userInfo .location .hiddenFields').append('<input type="hidden" value="'+userDetailsPostcodeValue+'" id="postcode" name="postcode" />');
            $(element).find('#userInfo .location .hiddenFields').append('<input type="hidden" value="'+userDetailsSuburbValue+'" id="suburb" name="suburb" />');
            $(element).find('#userInfo .location .hiddenFields').append('<input type="hidden" value="'+userDetailsStateValue+'" id="state" name="state" />');
            $(element).find('#userInfo .location').append('<label for="userInfoLocation">Postcode / Suburb</label>');
            $(element).find('#userInfo .location').append('<input class="text" type="text" value="'+UserDetailsLocationValue+'" id="userInfoLocation" name="userInfoLocation" autocomplete="off" />');
            $(element).find('#userInfo .regtype').append('<label>Registration Type</label>');
            $(element).find('#userInfo .regtype').append('<input class="radio" type="radio" value="PRIVATE" id="UserDetailsRegTypePrivate" name="UserDetailsRegType" /><label class="radio-label" for="UserDetailsRegTypePrivate">Private</label>');
            $(element).find('#userInfo .regtype').append('<input class="radio" type="radio" value="BUSINESS" id="UserDetailsRegTypeBusiness" name="UserDetailsRegType" /><label class="radio-label" for="UserDetailsRegTypeBusiness">Business</label><br /> ');
            $(element).find('#personalisation').append('<div id="dealerInfo"></div>');
            $(element).find('#personalisation').append('<input type="submit" disabled="true" value="Submit" id="personalisationSubmit" name="personalisationSubmit" />');
            $(element).find('#userInfo .errorMessage').hide();*/

/* MVT testing start */         
			
			if($(element).hasClass('entry-mvt')){
				var MVTStyleClass = $('#offer-group-entry').attr('class').split(' ').slice(-2);
				MVTStyleClass = MVTStyleClass[0];	
				switch (MVTStyleClass) {
					case 'offer-group-entry-1':
						$('body').addClass('special-offers-entry-variations special-offers-entry-1');
						MVTTestCase += '1';
					break;
					case 'offer-group-entry-2':
						$('body').addClass('special-offers-entry-variations special-offers-entry-2');
						MVTTestCase += '2';
					break;
					case 'offer-group-entry-3':
						$('body').addClass('special-offers-entry-variations special-offers-entry-3');
						MVTTestCase += '3';
					break;
					case 'offer-group-entry-4':
						$('body').addClass('special-offers-entry-variations special-offers-entry-4');
						MVTTestCase += '4';
					break;
					case 'offer-group-entry-5':
						$('body').addClass('special-offers-entry-variations special-offers-entry-5');
						MVTTestCase += '5';
					break;
				}

				var MVTCopyClass = $('#offer-group-entry').attr('class').split(' ').slice(-1);
				MVTCopyClass = MVTCopyClass[0];				
				switch(MVTCopyClass) {
					case 'copy-a':
						MVTTextPostcodeSuburb = 'Enter your Postcode/Suburb here';
						MVTTextRegistrationType = 'I want offers for:';
						MVTTextDealership = 'My preferred dealer location is:';
						MVTTestCase += 'A';
					break;
					case 'copy-b':
						MVTTextPostcodeSuburb = 'Enter a postcode or suburb';
						MVTTextRegistrationType = 'Select a registration type:';
						MVTTextDealership = 'Select a local dealer:';
						MVTTestCase += 'B';
					break;
					case 'copy-c':
						MVTTextPostcodeSuburb = 'Enter your Postcode/Suburb here';
						MVTTextRegistrationType = 'Private or Business use?';
						MVTTextDealership = 'Pick a dealership';
						MVTTestCase += 'C';
					break;
					case 'copy-d':
						MVTTextPostcodeSuburb = 'Locate a suburb by entering your postcode';
						MVTTextRegistrationType = 'Show offers for:';
						MVTTextDealership = 'Choose your dealership:';
						MVTTestCase += 'D';
					break;
					case 'copy-e':
						MVTTextPostcodeSuburb = 'Type a postcode to see suburb list';
						MVTTextRegistrationType = 'Display offers for:';
						MVTTextDealership = 'Choose a dealer to see details';
						MVTTestCase += 'E';
					break;
				}
								
	 	        $(element).append('<div class="choose-a-dealer"><form id="personalisation"><div class="min-height-wrapper"></div></form></div>');
	            $(element).find('#personalisation').find('.min-height-wrapper').append('<div class="box-form"><div class="box-inner"><div id="userInfo"></div></div><div class="box-bottom"><hr /></div></div>');
	            $(element).find('#userInfo').append('<div class="left"><div class="location"></div></div>');
	            $(element).find('#userInfo').append('<div class="right"><div class="regtype"></div></div>');
	            $(element).find('#userInfo .location').append('<div class="hiddenFields"></div>');
	            $(element).find('#userInfo .location .hiddenFields').append('<input type="hidden" value="'+userDetailsPostcodeValue+'" id="postcode" name="postcode" />');
	            $(element).find('#userInfo .location .hiddenFields').append('<input type="hidden" value="'+userDetailsSuburbValue+'" id="suburb" name="suburb" />');
	            $(element).find('#userInfo .location .hiddenFields').append('<input type="hidden" value="'+userDetailsStateValue+'" id="state" name="state" />');
	            $(element).find('#userInfo .location').append('<label for="userInfoLocation">'+MVTTextPostcodeSuburb+'</label>');
	            $(element).find('#userInfo .location').append('<input class="text" type="text" value="'+UserDetailsLocationValue+'" id="userInfoLocation" name="userInfoLocation" autocomplete="off" />');
	            $(element).find('#userInfo .regtype').append('<label>'+MVTTextRegistrationType+'</label>');
	            $(element).find('#userInfo .regtype').append('<input class="radio" type="radio" value="PRIVATE" id="UserDetailsRegTypePrivate" name="UserDetailsRegType" /><label class="radio-label" for="UserDetailsRegTypePrivate">Private</label>');
	            $(element).find('#userInfo .regtype').append('<input class="radio" type="radio" value="BUSINESS" id="UserDetailsRegTypeBusiness" name="UserDetailsRegType" /><label class="radio-label" for="UserDetailsRegTypeBusiness">Business</label><br /> ');
	            $(element).find('#personalisation').append('<div id="dealerInfo"></div>');
	            $(element).find('#personalisation').append('<div class="button-wrapper"><input style="display: none;" type="submit" disabled="true" value="Submit" id="personalisationSubmit" name="personalisationSubmit" /></div>');
	            $(element).find('#userInfo .errorMessage').hide();		   
			} else {
	 			$(element).append('<div class="choose-a-dealer"><form id="personalisation"></form></div>');
	            $(element).find('#personalisation').append('<div id="userInfo"></div>');
	            $(element).find('#userInfo').append('<div class="location"></div>');
	            $(element).find('#userInfo').append('<div class="regtype"></div>');
	            $(element).find('#userInfo .location').append('<div class="hiddenFields"></div>');
	            $(element).find('#userInfo .location .hiddenFields').append('<input type="hidden" value="'+userDetailsPostcodeValue+'" id="postcode" name="postcode" />');
	            $(element).find('#userInfo .location .hiddenFields').append('<input type="hidden" value="'+userDetailsSuburbValue+'" id="suburb" name="suburb" />');
	            $(element).find('#userInfo .location .hiddenFields').append('<input type="hidden" value="'+userDetailsStateValue+'" id="state" name="state" />');
	            $(element).find('#userInfo .location').append('<label for="userInfoLocation">Postcode / Suburb</label>');
	            $(element).find('#userInfo .location').append('<input class="text" type="text" value="'+UserDetailsLocationValue+'" id="userInfoLocation" name="userInfoLocation" autocomplete="off" />');
	            $(element).find('#userInfo .regtype').append('<label>Registration Type</label>');
	            $(element).find('#userInfo .regtype').append('<input class="radio" type="radio" value="PRIVATE" id="UserDetailsRegTypePrivate" name="UserDetailsRegType" /><label class="radio-label" for="UserDetailsRegTypePrivate">Private</label>');
	            $(element).find('#userInfo .regtype').append('<input class="radio" type="radio" value="BUSINESS" id="UserDetailsRegTypeBusiness" name="UserDetailsRegType" /><label class="radio-label" for="UserDetailsRegTypeBusiness">Business</label><br /> ');
	            $(element).find('#personalisation').append('<div id="dealerInfo"></div>');
	            $(element).find('#personalisation').append('<input style="display: none;" type="submit" disabled="true" value="Submit" id="personalisationSubmit" name="personalisationSubmit" />');
	            $(element).find('#userInfo .errorMessage').hide();				
			}
/* MVT testing end */ 		
   
            var _element = $(element).find('form#personalisation #userInfoLocation');
            //bindAutoComplete(_element, {url: '/service/autocomplete/suburbPostcode'}, postcodeListGenerator, simplePostcodeOnClickAction);
                
            function personalisationShowLoadError(obj, msg) {
                $(element).find('#userInfo .location').parent().find('.error-message').remove();
                if($('body').hasClass('special-offers-entry')) {
                    $(element).find('#userInfo .location').append('<div class="error-message" style="font-size: 11px; background-color: #FFFFFF; border: 1px solid #EEEEEE; padding: 5px; position: absolute; top: 54px; width: 234px;">'+msg+'</div>');
                } else {
                    $(element).find('#userInfo .location').append('<div class="error-message" style="font-size: 11px; margin-bottom: 5px;">'+msg+'</div>');
                }
            }

            function personalisationHideLoadError(obj) {
                $(element).find('#userInfo .location').parent().find('.error-message').remove();
            }
    
                
            $(_element).autocomplete({
                source: function( request, response ) {
                    personalisationHideLoadError('#userInfoLocation');
                    $.ajax({
                        url: '/service/autocomplete/suburbPostcode/'+request.term+'.json',
                        dataType: 'json',
                        type: 'GET',
                        success: function( data ) {
                            if (data.valid == false) {
                                personalisationShowLoadError('#userInfoLocation', data.error.message);
                            }
                            else {
                                if(data.data.length > 1) {
                                    response( $.map( data.data, function( item, index ) {
                                        return {
                                            label: item.suburb + ', ' + item.postcode + ' ' + item.state,
                                            value: item.postcode + '/' + encodeURI(item.suburb),
                                            postcode: item.postcode,
                                            suburb: item.suburb,
                                            state: item.state
                                        }
                                    }));
                                } else {
                                    $(_element).val( data.data[0].suburb + ', ' + data.data[0].postcode + ' ' + data.data[0].state );
                                    $(element).find('form#personalisation input[name="postcode"]').val(data.data[0].postcode);
                                    $(element).find('form#personalisation input[name="suburb"]').val(data.data[0].suburb);
                                    $(element).find('form#personalisation input[name="state"]').val(data.data[0].state);
                                    if(regType) {
                                        personalisation.display.dealerInfo.search(element);
                                    }
                                    return false;
                                    
                                }
                            }
                        },
                        error: function() {
                            personalisationShowLoadError('#userInfoLocation', 'List could not be loaded');
                        }
                    });
                },
                minLength: 3,
                select: function( event, ui ) {
                    if(ui.item.label != 'error') {
                        $(_element).val( ui.item.label );
                        $(element).find('form#personalisation input[name="postcode"]').val(ui.item.postcode);
                        $(element).find('form#personalisation input[name="suburb"]').val(ui.item.suburb);
                        $(element).find('form#personalisation input[name="state"]').val(ui.item.state);
                        if(regType) {
                            personalisation.display.dealerInfo.search(element);
                        }
                    } else {
                        $(_element).val( ui.item.value );
                    }
                    return false;
                },
                focus: function( event, ui ) {
                    $(_element).val( ui.item.label );
                    return false;
                }
            });

            
            if(userDetailsRegType) {
                var currentRegType = $('input[name="UserDetailsRegType"][value="'+userDetailsRegType+'"]');
                $('#userInfo label.radio-label').removeClass('current');
                $('label[for="'+currentRegType.attr('id')+'"]').addClass('current');
                currentRegType.attr('checked', 'checked');
                regType = userDetailsRegType;
            }
         
            var currentUserDetailsLocationValue;
            $(element).find('form#personalisation input[name="userInfoLocation"]').focus(function() {
                currentUserDetailsLocationValue = $(this).val();
                personalisationHideLoadError('#userInfoLocation');
                if ($(this).val() == 'Postcode / suburb' || $(this).val() == UserDetailsLocationValue) 
                    $(this).val('');
            }).blur(function() {
                if ($(this).val() == '') 
                    $(this).val(currentUserDetailsLocationValue);
                personalisationHideLoadError('#userInfoLocation');
            });
        
            $(element).find('#userInfo input.radio').click(function() {
                $(element).find('#userInfo label.radio-label').removeClass('current');
                $(element).find('label[for="'+$(this).attr('id')+'"]').addClass('current');
                regType = $(this).val();
                var postcode = $(element).find('form#personalisation input[name="postcode"]').val();
                var suburb = $(element).find('form#personalisation input[name="suburb"]').val();
                var state = $(element).find('form#personalisation input[name="suburb"]').val();
                if(postcode && suburb && state) {
                    personalisation.display.dealerInfo.search(element);
                }
                
                if(tracking.valid) {
                    hh_WT.trackEvent({'WT.ac':'Toyota_'+window.location.pathname.replace('/', '')+'_'+tracking.title+changeText+'_'+regType}, true);
                }
            });
            
            if(userDetailsKnown) {
                personalisation.display.dealerInfo.search(element);
            }
            
            $.validator.addMethod('locationFound', function() {
                var postcode = $(element).find('form#personalisation input[name="postcode"]').val();
                var suburb = $(element).find('form#personalisation input[name="suburb"]').val();
                var state = $(element).find('form#personalisation input[name="suburb"]').val();
                return postcode && suburb && state;
            }, 'Please enter a postcode or suburb then select a match');
      
            $(element).find('form#personalisation').validate({
                rules: {
                    UserDetailsLocation: 'locationFound',
                    UserDetailsRegType: 'required',
                    DealerDetailsDealer: 'required'
                },
                messages: {
                    UserDetailsRegType: 'Please select a registration type.'
                },
                errorContainment: $('#userInfo .errorMessage'),
                errorPlacement: function(error, element) {
                    $('#userInfo .errorMessage').append('<p>'+error+'</p>');
                },
                submitHandler: function(form) {  
                
                    if(tracking.valid) {
                        hh_WT.trackEvent({'WT.ac':'Toyota_'+window.location.pathname.replace('/', '')+'_'+tracking.title+changeText+'_Save'}, true);
                    }      
                    var userInfo = {};
                    userInfo.data = {};
                    userInfo.data.postcode = $(element).find('form#personalisation input[name="postcode"]').val();
                    userInfo.data.suburb = $(element).find('form#personalisation input[name="suburb"]').val();
                    userInfo.data.state = $(element).find('form#personalisation input[name="state"]').val();
                    userInfo.data.regType = regType;
                    personalisation.update.userInfo(userInfo.data);
                    var dealerInfo = $(element).find('form#personalisation input[name="DealerDetailsDealer"]:checked').data('dealerDetails');
                    personalisation.update.dealerInfo(dealerInfo);   
                    userDetailsKnown = 'true';
                    $.cookie('userDetailsKnown', userDetailsKnown, {expires: 7, path: '/'});
                    
					receiveTrackingEvent({EventClass: "Postcode", Action: "EnterPostcode", Postcode: userDetailsPostcode, Location: location.href});                        
                    
                    var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
                    var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);
                    if (jQuery.browser.msie && (ie55 || ie6)) {
                        $('.homepage-gallery-pagination').show();
                    }
                    
                    if($('body').hasClass('special-offers-entry')) {
						
/* MVT testing start */         
						if ($('.userDetailSearch').hasClass('entry-mvt')) {
							if(MVTTrackingEndFlag == false){
								try{
									wt.MVTGoal(MVTTestSection,MVTTestCase);
								} catch(err) {};
								MVTTrackingEndFlag = true;
							}							
						}	
/* MVT testing end */  							
						
                        setTimeout(function() {
                            var sPageId = $('body').attr('id');
                            switch(sPageId) {
                                case 'special-offers':
                                    function get_url_parameter(param){
                                        param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
                                        var r1 = "[\\?&]"+param+"=([^&#]*)";
                                        var r2 = new RegExp( r1 );
                                        var r3 = r2.exec( window.location.href );
                                        if( r3 == null ) { 
                                            return "";
                                        } else {
                                            return r3[1];
                                        }
                                    }
                                    var destination = get_url_parameter('destination');
                                    if (destination) { 
                                        destination = destination.split(';');
                                        window.location = '/special-offers/offer?'+destination[0]+'='+destination[1];
                                    } else {
                                        window.location = '/special-offers';
                                    }
                                    break;
                                case 'vehicles':
                                    var url = window.location;
                                    url = url.pathname.replace('/entry', '');
                                    window.location = url;
                                    break;
                            }
                        }, 500);
                    } else {
                        personalisation.user.known();
                    }
                }
            });				
        },
        info: {
            anonUser: {
                summary: function(element) {
                    if(element.length > 0) {
                        $(element).empty();
                        $(element).append('<p>To view prices, <span  class="chooseDealer">choose a dealer</span></p>');
                        $(element).find('span.chooseDealer').click(function() {
                            if($(element).find('div.chooseDealerPopup').length > 0) {
                                var _element = $(element).find('div.chooseDealerPopup');
                                $(_element).remove();
                            } else {
                                $(element).append('<div class="chooseDealerPopup"><a href="#" class="close">CLOSE X</a><div class="inner"></div></div>');
                                var _element = $(element).find('div.chooseDealerPopup div.inner');
                                personalisation.display.form(_element, {valid: false});
                                $(element).find('.chooseDealerPopup .close').click(function() {
                                    var _element = $(element).find('div.chooseDealerPopup');
                                    $(_element).remove();
                                    return false;
                                });
                            }
                            return false;
                        });
                    }
                }   
            },
            knownUser: {
                summary: function(element) {
                    if(element.length > 0) {
                        $(element).empty();
                        $(element).append('<p class="personalisationInfo"><span class="reg-type">'+userDetailsRegType.toLowerCase()+'</span> pricing shown for <span class="dealer">'+userDetailsDealerName+'</span> <span class="change">Change</span></p>');  
                        $(element).find('.personalisationInfo .dealer').click(function() {
                            if($(element).find('div.showDealerPopup').length > 0) {
                                var _element = $(element).find('div.showDealerPopup');
                                $(_element).remove();
                            } else {
                                $(element).append('<div class="showDealerPopup"><a href="#" class="close">CLOSE X</a><div class="inner"></div></div>');
                                var _element = $(element).find('div.showDealerPopup div.inner');
                                personalisation.display.dealerInfo.summary(_element, '153x139', '13', {valid: false});
                                $(element).find('.showDealerPopup .close').click(function() {
                                    var _element = $(element).find('div.showDealerPopup');
                                    $(_element).remove();
                                    return false;
                                });
                            }
                            return false;                   
                        });
                        
                        $(element).find('div.showDealerPopup').click(function() {
                            return false;
                        });

                        if($(element).find('div.showDealerPopup').length > 0) {
                            $('body').click(function() {
                                var _element = $(element).find('div.showDealerPopup');
                                $(_element).remove();
                            });
                        }
                        
                        $(element).find('.personalisationInfo .change').click(function() {
                            if($(element).find('div.chooseDealerPopup').length > 0) {
                                var _element = $(element).find('div.chooseDealerPopup');
                                $(_element).remove();
                            } else {
                                $(element).append('<div class="chooseDealerPopup"><a href="#" class="close">CLOSE X</a><div class="inner"></div></div>');
                                var _element = $(element).find('div.chooseDealerPopup div.inner');
                                personalisation.display.form(_element, {valid: false});
                                $(element).find('.chooseDealerPopup .close').click(function() {
                                    var _element = $(element).find('div.chooseDealerPopup');
                                    $(_element).remove();
                                    return false;
                                });
                            }
                            return false;                   
                        });
                    }
                }
            }
      
        },
        dealerInfo: {
            summary: function(element, mapSize, zoomLevel, tracking) {
                $(element).empty();
                $(element).append('<div class="dealerInfo"><p class="loading">Loading dealer...</p></div>');
                $.ajax({
                    type: "GET",
                    dataType: 'json',
                    url: '/service/dealer/'+userDetailsDealerId+'/postcode/'+userDetailsDealerPostcode+'/map'+mapSize+'.json?zoom='+zoomLevel,
                    success: function(response) {
                        var data = response.map_data;
                        mapImage = new Image();
                        mapImage.src = data.mapUri;
                        mapImage.onload = function() {
                            $(element).find('.dealerInfo').empty();
                            $(element).find('.dealerInfo').append('<h2>'+userDetailsDealerName+'</h2>');
                            $(element).find('.dealerInfo').append('<p>'+userDetailsDealerAddress+'<br />'+userDetailsDealerSuburb+', '+userDetailsDealerState+', '+userDetailsDealerPostcode+'</p>');
                            $(element).find('.dealerInfo').append('<p><strong>Ph: '+userDetailsDealerTelephone+'</strong><br /><strong>Fax: '+userDetailsDealerFax+'</strong></p>');
                            $(element).find('.dealerInfo').append('<p class="dealer-enquiry"><a href="/dealer-enquiry" class="more-link">DEALER ENQUIRY</a></p>');
                            $(element).find('.dealerInfo').append('<img src="'+data.mapUri+'" />');
                            var sectionId = $('body').attr('id');
                            if(tracking.valid) {
                                if(VEHICLE_ID){
                                    $('.dealerInfo p.dealer-enquiry a').attr('href', '/dealer-enquiry?vehicle-id='+VEHICLE_ID+'&WT.ac=Toyota_'+window.location.pathname.replace('/', '')+'_'+tracking.title+'_ViewDealerDetailsDealerEnquiry');
                                } else {
                                    $('.dealerInfo p.dealer-enquiry a').attr('href', '/dealer-enquiry?WT.ac=Toyota_'+window.location.pathname.replace('/', '')+'_'+tracking.title+'_ViewDealerDetailsDealerEnquiry');
                                }
                            } else {
                                if(VEHICLE_ID){
                                    $('.dealerInfo p.dealer-enquiry a').attr('href', '/dealer-enquiry?vehicle-id='+VEHICLE_ID+'&WT.ac=DealerEnqMap'+sectionId);
                                } else {
                                    $('.dealerInfo p.dealer-enquiry a').attr('href', '/dealer-enquiry?WT.ac=DealerEnqMap'+sectionId);
                                }
                            }
                        }
                    }
                });
            },
            full: function(element, mapSize, zoomLevel) {
                $(element).empty();
                $(element).append('<p class="loading">Loading dealer...</p>');
                $.ajax({
                    type: "GET",
                    dataType: 'json',
                    url: '/service/dealer/'+userDetailsDealerId+'/postcode/'+userDetailsDealerPostcode+'/map'+mapSize+'.json?zoom='+zoomLevel,
                    success: function(response) {
                        var data = response.map_data;
                        mapImage = new Image();
                        mapImage.src = data.mapUri;
                        mapImage.onload = function() {
                            $(element).empty();
                            $(element).append('<div class="contact-info"></div>');
                            $(element).append('<div class="map"></div>');
                            $(element).find('.contact-info').append('<h2>'+userDetailsDealerName+'</h2>');
                            $(element).find('.contact-info').append('<p>'+userDetailsDealerAddress+'<br />'+userDetailsDealerSuburb+', '+userDetailsDealerState+', '+userDetailsDealerPostcode+'</p>');
                            $(element).find('.contact-info').append('<p><strong>Ph: '+userDetailsDealerTelephone+'</strong><br /><strong>Fax: '+userDetailsDealerFax+'</strong></p>');
                            $(element).find('.contact-info').append('<p class="dealer-enquiry"><a href="/dealer-enquiry" class="more-link">DEALER ENQUIRY</a></p>');
                            $(element).find('.map').append('<img src="'+data.mapUri+'" />');
                            if(VEHICLE_ID){
                                $('.dealerInfo p.dealer-enquiry a').attr('href', '/dealer-enquiry?vehicle-id='+VEHICLE_ID);
                            }
                            $('.dealer-enquiry a.more-link').each(function(i,n) {
                                tracking.webtrends.link.morelink(n);
                            });
                        }
                    }
                });
            },
            search: function(element) {
                var postcode = $(element).find('form#personalisation input[name="postcode"]').val();
                var suburb = $(element).find('form#personalisation input[name="suburb"]').val();
                $(element).find('#dealerInfo').append('<p class="loading">Loading dealers..</p>');
                $.ajax({
                    type: "GET",
                    dataType: 'json',
                    url: '/service/autocomplete/dealer/'+postcode+'/'+suburb+'.json',
                    success: function(response) {
                        var dealerInfo = response;
                        if(dealerInfo.valid == true){
                            var i = 0;
                            while(dealerInfo.data[i] != null) {     
                                i++;
                            };              
                            userDetailsDealers = i;
                            $.cookie('userDetailsDealers', userDetailsDealers, {expires: 7, path: '/'});
                            if(userDetailsDealers == 1) {
                                $(element).find('#dealerInfo').empty();
/* Pre MVT testing
                                $(element).find('#dealerInfo').append('<p>Your local dealer is:</p>');
                                $(element).find('#dealerInfo').append('<div class="hiddenFields"><input class="radio" type="radio" name="DealerDetailsDealer" value="'+0+'" id="dealer-'+0+'" /></div>');
                                $(element).find('#dealerInfo').find('input[value="'+0+'"]').data('dealerDetails', dealerInfo.data[0]);
                                $(element).find('#dealerInfo').find('input[value="'+0+'"]').click();
                                $(element).find('#dealerInfo .hiddenFields').append('<label class="radio-label" for="dealer-'+0+'" name="dealer-'+0+'">'+dealerInfo.data[0].name+' <br /> '+response.data[0].suburb+' '+response.data[0].postcode+'</label>');
                                $(element).find('#dealerInfo').append('<p>'+dealerInfo.data[0].name+' <br /> '+response.data[0].suburb+' '+response.data[0].postcode+'</p>');
                                $(element).find('#personalisation input#personalisationSubmit').removeAttr('disabled');*/

/* MVT testing start */  
							if ($(element).hasClass('entry-mvt')) {
								$(element).find('#dealerInfo').append('<div class="box-form box-form-last"><div class="box-inner"></div><div class="box-bottom"><hr /></div></div>');
								$(element).find('#dealerInfo').find('.box-inner').append('<p>' + MVTTextDealership + '</p>');
                                $(element).find('#dealerInfo').find('.box-inner').append('<div class="hiddenFields"><input class="radio" type="radio" name="DealerDetailsDealer" value="'+0+'" id="dealer-'+0+'" /></div>');
                                $(element).find('#dealerInfo').find('input[value="'+0+'"]').data('dealerDetails', dealerInfo.data[0]);
                                $(element).find('#dealerInfo').find('input[value="'+0+'"]').click();
                                $(element).find('#dealerInfo .hiddenFields').append('<label class="radio-label" for="dealer-'+0+'" name="dealer-'+0+'">'+dealerInfo.data[0].name+' <br /> '+response.data[0].suburb+' '+response.data[0].postcode+'</label>');
                                $(element).find('#dealerInfo').find('.box-inner').append('<p>'+dealerInfo.data[0].name+' <br /> '+response.data[0].suburb+' '+response.data[0].postcode+'</p>');
								$(element).find('#personalisation input#personalisationSubmit').removeAttr('disabled').show();
							} else {
                                $(element).find('#dealerInfo').append('<p>Your local dealer is:</p>');
                                $(element).find('#dealerInfo').append('<div class="hiddenFields"><input class="radio" type="radio" name="DealerDetailsDealer" value="'+0+'" id="dealer-'+0+'" /></div>');
                                $(element).find('#dealerInfo').find('input[value="'+0+'"]').data('dealerDetails', dealerInfo.data[0]);
                                $(element).find('#dealerInfo').find('input[value="'+0+'"]').click();
                                $(element).find('#dealerInfo .hiddenFields').append('<label class="radio-label" for="dealer-'+0+'" name="dealer-'+0+'">'+dealerInfo.data[0].name+' <br /> '+response.data[0].suburb+' '+response.data[0].postcode+'</label>');
                                $(element).find('#dealerInfo').append('<p>'+dealerInfo.data[0].name+' <br /> '+response.data[0].suburb+' '+response.data[0].postcode+'</p>');
								$(element).find('#personalisation input#personalisationSubmit').removeAttr('disabled').show();
							}
/* MVT testing end */								
								
                            } else {
                                $(element).find('#dealerInfo').empty(); 
/* Pre MVT testing
                                $(element).find('#dealerInfo').append('<p>Your local dealers are:</p>');
                                
                                i = 0;
                                while(response.data[i] != null) {   
                                    $(element).find('#dealerInfo').find('.box-inner').append('<input class="radio" type="radio" name="DealerDetailsDealer" value="'+i+'" id="dealer-'+i+'" /><label class="radio-label" for="dealer-'+i+'" name="dealer-'+i+'">'+dealerInfo.data[i].name+' <br /> '+response.data[i].suburb+' '+response.data[i].postcode+'</label> <br />');
                                    if(userDetailsDealerId == dealerInfo.data[i].id && userDetailsDealerPostcode == dealerInfo.data[i].postcode) {
                                        $(element).find('#dealerInfo').find('input[name="DealerDetailsDealer"][value="'+i+'"]').attr('checked', 'checked');
                                        $(element).find('#dealerInfo').find('label[for="dealer-'+i+'"]').addClass('current');
                                    }
                                    $(element).find('#dealerInfo').find('input[value="'+i+'"]').data('dealerDetails', dealerInfo.data[i]);
                                    i++;
                                };  */
								
/* MVT testing start */  
							if ($(element).hasClass('entry-mvt')) {
								$(element).find('#dealerInfo').append('<div class="box-form box-form-last"><div class="box-inner"></div><div class="box-bottom"><hr /></div></div>');
								$(element).find('#dealerInfo').find('.box-inner').append('<p>' + MVTTextDealership + '</p>');
								
                                i = 0;
                                while(response.data[i] != null) {   
                                    $(element).find('#dealerInfo').find('.box-inner').append('<input class="radio" type="radio" name="DealerDetailsDealer" value="'+i+'" id="dealer-'+i+'" /><label class="radio-label" for="dealer-'+i+'" name="dealer-'+i+'">'+dealerInfo.data[i].name+' <br /> '+response.data[i].suburb+' '+response.data[i].postcode+'</label> <br />');
                                    if(userDetailsDealerId == dealerInfo.data[i].id && userDetailsDealerPostcode == dealerInfo.data[i].postcode) {
                                        $(element).find('#dealerInfo').find('input[name="DealerDetailsDealer"][value="'+i+'"]').attr('checked', 'checked');
                                        $(element).find('#dealerInfo').find('label[for="dealer-'+i+'"]').addClass('current');
                                    }
                                    $(element).find('#dealerInfo').find('input[value="'+i+'"]').data('dealerDetails', dealerInfo.data[i]);
                                    i++;
                                };  
							} else {
                                $(element).find('#dealerInfo').append('<p>Your local dealers are:</p>');
								
                                i = 0;
                                while(response.data[i] != null) {   
                                    $(element).find('#dealerInfo').append('<input class="radio" type="radio" name="DealerDetailsDealer" value="'+i+'" id="dealer-'+i+'" /><label class="radio-label" for="dealer-'+i+'" name="dealer-'+i+'">'+dealerInfo.data[i].name+' <br /> '+response.data[i].suburb+' '+response.data[i].postcode+'</label> <br />');
                                    if(userDetailsDealerId == dealerInfo.data[i].id && userDetailsDealerPostcode == dealerInfo.data[i].postcode) {
                                        $(element).find('#dealerInfo').find('input[name="DealerDetailsDealer"][value="'+i+'"]').attr('checked', 'checked');
                                        $(element).find('#dealerInfo').find('label[for="dealer-'+i+'"]').addClass('current');
                                    }
                                    $(element).find('#dealerInfo').find('input[value="'+i+'"]').data('dealerDetails', dealerInfo.data[i]);
                                    i++;
                                };  
							}
/* MVT testing end */
                                $(element).find('#dealerInfo input.radio').click(function() {
                                    $(element).find('#dealerInfo label.radio-label').removeClass('current');
                                    $(element).find('label[for="dealer-'+$(this).attr('value')+'"]').addClass('current');
                                    $(element).find('#personalisation input#personalisationSubmit').removeAttr('disabled').show();
                                });
                                
                            }
                            
                            if(userDetailsKnown) {
                                $(element).find('#personalisation input#personalisationSubmit').removeAttr('disabled').show();
                            }
                            
                        } else {
                            userDetailsDealers = 0;
                            $.cookie('userDetailsDealers', userDetailsDealers, {expires: 7, path: '/'});
                        }     
                    }
                });
            }
        },
        userInfo: {
            summary: function(element) {
                //displays a summary of all the informaiton collected.
            },
            full: function(element) {
                //displays full amount of informaiton collected.
            }
        },
        ownersPortalHomepage: function(element, type) {
            var ownersPortalKnown = $.cookie('ownersPortalDealer');
            if (ownersPortalKnown) {
                $(element).find('form#service-centre-search').hide();
                $(element).find('.info').remove();
                $(element).find('.email').remove();
                $(element).append('<p class="info"><strong>'+$.cookie('ownersPortalDealerName')+'</strong><br />'+$.cookie('ownersPortalDealerAddress')+'<br />'+$.cookie('ownersPortalDealerSuburb')+' '+$.cookie('ownersPortalDealerPostcode')+'<br />Ph: '+$.cookie('ownersPortalDealerTelephone')+'</p>');
                $(element).append('<p class="email"><a href="mailto: '+$.cookie('ownersPortalDealerEmail')+'">Email Service Centre</a></p>');
            } else {
                var _element = $(element).find('input.text');
                $(element).find('form#service-centre-search').append('<input type="hidden" id="postcode" name="postcode" />');
                $(element).find('form#service-centre-search').append('<input type="hidden" id="suburb" name="suburb" />');
                $(element).find('form#service-centre-search').append('<input type="hidden" id="state" name="state" />');
                $(element).find('form#service-centre-search input[type="submit"]').attr('disabled', 'disabled');
                
                //bindAutoComplete(_element, {url: '/service/autocomplete/suburbPostcode'}, postcodeListGenerator, simplePostcodeOnClickAction);
                
                $(_element).autocomplete({
                    source: function( request, response ) {
                        $.ajax({
                            url: '/service/autocomplete/suburbPostcode/'+request.term+'.json',
                            dataType: 'json',
                            type: 'GET',
                            success: function( data ) {
                                response( $.map( data.data, function( item, index ) {
                                    return {
                                        label: item.suburb + ', ' + item.postcode + ' ' + item.state,
                                        value: item.postcode + '/' + encodeURI(item.suburb),
                                        postcode: item.postcode,
                                        suburb: item.suburb,
                                        state: item.state
                                    }
                                }));
                            }
                        });
                    },
                    minLength: 3,
                    select: function( event, ui ) {
                        $(_element).val( ui.item.label );
                        $(element).find('form#service-centre-search input[name="postcode"]').val(ui.item.postcode);
                        $(element).find('form#service-centre-search input[name="suburb"]').val(ui.item.suburb);
                        $(element).find('form#service-centre-search input[name="state"]').val(ui.item.state);
                        $(element).find('form#service-centre-search input[type="submit"]').removeAttr('disabled');
                        return false;
                    },
                    focus: function( event, ui ) {
                        $(_element).val( ui.item.label );
                        return false;
                    }
                });
                
                $(element).find('form#service-centre-search').validate({
                    submitHandler: function(form) {
                        var userInfo = {};
                        userInfo.data = {};
                        userInfo.data.postcode = $(element).find('form#service-centre-search input[name="postcode"]').val();
                        userInfo.data.suburb = $(element).find('form#service-centre-search input[name="suburb"]').val();
                        userInfo.data.state = $(element).find('form#service-centre-search input[name="state"]').val();
                        switch(type) {
                        case 'modules':
                            var _element = $('.column-count-3');
                            break;
                        case 'banner':
                            var _element = $('.column-count-2');
                            break;
                        }
                        
                        hh_WT.trackEvent({'WT.ac':'OPRKSHPBBS'}, true);
                        
                        $(_element).append('<div class="service-centres"><div class="inner"><h2>Please choose your preferred Local Service Centre</h2><p class="loading">Loading service centres...</p></div></div>')
                        $.ajax({
                            type: "GET",
                            dataType: 'json',
                            url: '/service/autocomplete/dealer/'+userInfo.data.postcode+'/'+userInfo.data.suburb+'.json',
                            success: function(response) {
                                var dealerInfo = response;
                                if(dealerInfo.valid == true){
                                    var i = 0;
                                    while(dealerInfo.data[i] != null) {     
                                        i++;
                                    };              
                                    userDetailsDealers = i;
                                    if(userDetailsDealers == 1) {
                                        $('.service-centres').remove();
                                        $(element).find('form#service-centre-search').remove();
                                        $(element).append('<p class="info"><strong>'+response.data[0].name+'</strong><br />'+response.data[0].address+'<br />'+response.data[0].suburb+' '+response.data[0].postcode+'<br />Ph: '+response.data[0].telephone+'</p>');
                                        $(element).append('<p class="email"><a href="mailto: '+response.data[0].email+'">Email Service Centre</a></p>');
                                        $.cookie('ownersPortalDealer', 'true', {expires: 1, path: '/'});
                                        $.cookie('ownersPortalDealerName', response.data[0].name, {expires: 1, path: '/'});
                                        $.cookie('ownersPortalDealerEmail', response.data[0].email, {expires: 1, path: '/'});
                                        $.cookie('ownersPortalDealerAddress', response.data[0].address, {expires: 1, path: '/'});
                                        $.cookie('ownersPortalDealerSuburb', response.data[0].suburb, {expires: 1, path: '/'});
                                        $.cookie('ownersPortalDealerPostcode', response.data[0].postcode, {expires: 1, path: '/'});
                                        $.cookie('ownersPortalDealerTelephone',response.data[0].telephone, {expires: 1, path: '/'});
                                    } else {    
                                        var selected = null;
                                        $('.service-centres .loading').remove();
                                        $('.service-centres .inner').append('<div class="info"></div><div class="controls"><input type="button" class="cancel" /><input type="button" class="submit" /></div>');
                                        var i = 0;
                                        while(response.data[i] != null) {
                                            $('.service-centres .inner .info').append('<p><input type="radio" class="radio" name="centres" id="centre-'+i+'" value="'+i+'" /><strong>'+response.data[i].name+'</strong><br />'+response.data[i].address+'<br />'+response.data[i].suburb+' '+response.data[i].postcode+'<br />Ph: '+response.data[i].telephone+'</p>');
                                            i++;
                                        };
                                        $('.service-centres .cancel').click(function() {
                                            $(element).find('form#service-centre-search input[name="postcode"]').val('');
                                            $(element).find('form#service-centre-search input[name="suburb"]').val('');
                                            $(element).find('form#service-centre-search input[name="state"]').val('');
                                            $(element).find('form#service-centre-search input[type="submit"]').attr('disabled', 'disabled');
                                            $('.service-centres').remove();
                                        });
                                        $('.service-centres .inner .info input.radio').click(function() {
                                            selected = $(this).val();
                                        });
                                        $('.service-centres .submit').click(function() {
                                            var i = selected;
                                            if(i) {
                                                $('.service-centres').remove();
                                                $(element).find('form#service-centre-search').remove();
                                                $(element).append('<p class="info"><strong>'+response.data[i].name+'</strong><br />'+response.data[i].address+'<br />'+response.data[i].suburb+' '+response.data[i].postcode+'<br />Ph: '+response.data[i].telephone+'</p>');
                                                $(element).append('<p class="email"><a href="mailto: '+response.data[i].email+'">Email Service Centre</a></p>');
                                                $.cookie('ownersPortalDealer', 'true', {expires: 1, path: '/'});
                                                $.cookie('ownersPortalDealerName', response.data[0].name, {expires: 1, path: '/'});
                                                $.cookie('ownersPortalDealerEmail', response.data[0].email, {expires: 1, path: '/'});
                                                $.cookie('ownersPortalDealerAddress', response.data[0].address, {expires: 1, path: '/'});
                                                $.cookie('ownersPortalDealerSuburb', response.data[0].suburb, {expires: 1, path: '/'});
                                                $.cookie('ownersPortalDealerPostcode', response.data[0].postcode, {expires: 1, path: '/'});
                                                $.cookie('ownersPortalDealerTelephone',response.data[0].telephone, {expires: 1, path: '/'});
                                            }
                                        });
                                    }
                                }
                            }
                        });
                    }
                });
            }
        }
    }
};

var module = {
    globalFooter : {
        anonUser : function() {
            var element = $('#footer .global-pricing');
            if(element.length > 0) {
                personalisation.display.info.anonUser.summary(element);
            }
        },
        anonUserCallBack : function() {
        },
        knownUser : function() {
            var element = $('#footer .global-pricing');
            if(element.length > 0) {
                personalisation.display.info.knownUser.summary(element);
            }
        },
        knownUserCallBack : function() {
        }
    },
    
    bpyt : {
        anonUser : function() {
            var element = $('#footer .global-pricing');
            if(element.length > 0) {
                personalisation.display.form(element, {valid: false});
            }
        },
        anonUserCallBack : function() {
        },
        knownUser : function() {
            var element = $('#footer .global-pricing');
            if(element.length > 0) {
                personalisation.display.info.knownUser.summary(element);
            }
        },
        knownUserCallBack : function() {
        }
    },
    
    
    userDetails : {
        anonUser : function() {
            var element = $('#user-details.module');
            if(element.length > 0) {
                $(element).append('<h2>To view prices, choose a dealer</h2>');
                personalisation.display.form(element, {valid: false});
            }
        },
        anonUserCallBack : function() {
        },
        knownUser : function() {
            var element = $('#user-details.module');
            if(element.length > 0) {
                personalisation.display.info.knownUser.summary(element);
            }
        },
        knownUserCallBack : function() {
        }
    },
    specsPricing : {
        knownUser : function() {
            if($('body').hasClass('specifications')) {
                if($('body').hasClass('compare-grades')) {
                    $('.specifications .grade-pricing').each(function(i,n) {
                        var element = $(n); 
                        $(element).empty();
                        $.ajax({
                          type: 'GET',
                          url: '/service/pricing/specification/'+$(element).attr('rel')+'/'+userDetailsPostcode+'/'+userDetailsRegType+'.json',
                          data: 'suburb='+userDetailsSuburb,
                          success: function(response) {
                            var data = response.specificationsPricingDto;
                            if(data.valid == true){
                                if($('body').hasClass('compare-grades')){
                                    if (data.specialOffer == true) {
                                        if (!$(element).hasClass('special-offer-shown')) {
                                            $(element).parents('.selected-grades').find('.grade-pricing').addClass('special-offer-shown').removeClass('pricing-shown');
                                        }
                                    }                           
                                    else if(!($(element).hasClass('pricing-shown'))){
                                        $(element).parents('.selected-grades').find('.grade-pricing').addClass('pricing-shown');
                                    }
                                }
                                
                                $(element).html(data.html);
                                $('.grade-pricing').show();
                                $('#prices-disclaimer').show();
                                if(offers) {
                                    $(n).find('.offer a').click(function() {
                                        var sOfferId = $(n).find('.offer').attr('id').split('-')[1];
                                        var sSection = $('body').attr('id');
                                        createOverlay({customClass: 'offer-details'});
                                        showOverlay(deleteOverlay, offers.knownUser.show.details, {offerId: sOfferId, type: 'overlay', element: '', section: sSection, viewed: 'SpecOfferTile'});
                                        return false;
                                    });
                                }
                                if ((data.disclaimer != null) && (data.disclaimer != '')) {
                                    $('#special-offers-disclaimer').html(data.disclaimer);
                                }
                            }
                          }
                        }); 
                    });
                } else {
                    var element = $('.specifications .grade-pricing');
                    if(element.length > 0) {
                        $(element).empty();
                        $.ajax({
                          type: 'GET',
                          url: '/service/pricing/specification/'+$(element).attr('rel')+'/'+userDetailsPostcode+'/'+userDetailsRegType+'.json',
                          data: 'suburb='+userDetailsSuburb,
                          success: function(response) {
                            var data = response.specificationsPricingDto;
                            if(data.valid == true){
                                $(element).html(data.html);
                                $('.grade-pricing').show();
                                $('#prices-disclaimer').show();
                                if(offers) {
                                    $('.grade-pricing .offer a').click(function() {
                                        var sOfferId = $('.grade-pricing .offer').attr('id').split('-')[1];
                                        var sSection = $('body').attr('id');
                                        createOverlay({customClass: 'offer-details'});
                                        showOverlay(deleteOverlay, offers.knownUser.show.details, {offerId: sOfferId, type: 'overlay', element: '', section: sSection, viewed: 'SpecOfferTile'});
                                        return false;
                                    });
                                }
                                if ((data.disclaimer != null) && (data.disclaimer != '')) {
                                    $('#special-offers-disclaimer').html(data.disclaimer);
                                }
                            }
                          }
                        }); 
                    }
                }
            }
        },
        knownUserCallBack : function() {
        }
    },
    pricing : {
        anonUser : function() {
            var element = $('#pricing .personal-details');
            if(element.length > 0) {
                personalisation.display.form(element, {valid: false});
            }
        },
        anonUserCallBack : function() {
        },
        knownUser : function() {
            var element = $('#pricing .personal-details');
            if(element.length > 0) {
                personalisation.display.info.knownUser.summary(element);
                prices.prePopulate();
                prices.processGrade();
            }
        },
        knownUserCallBack : function() {
        }
    },
    pricingError : {
        knownUser : function() {
            var element = $('#pricing .error .local-dealer');
            if(element.length > 0) {
                personalisation.display.dealerInfo.summary(element, '327x204', '13', {valid: false});
                $(element).prepend('<p>Please contact your preferred local dealer:</p>');
            }
        }
    },
    dealerSummary : {
        knownUser : function() {
            var element = $('#dealer-summary.module');
            if(element.length > 0) {
                $(element).removeClass('noborder');
                personalisation.display.dealerInfo.summary(element, '173x140', '13', {valid: false});
            }
        },
        knownUserCallBack : function() {
        }
    },
    offersEntry : {
        anonUser : function() {
            var element = $('.offer-group-entry');
            var _element = $('.offer-group-entry .userDetailSearch');
            if(element.length > 0) {
                $(element).show();
                $(_element).empty();
                personalisation.display.form(_element, {valid: false});
            }
        },
        knownUser : function() {
            var element = $('.offer-group-entry');
            if(element.length > 0) {
                $(element).remove();
            }
        }
    },
    noOffers : {
        hide : function() {
            var element = $('.offer-group-nooffers');
            if(element.length > 0) {
                $(element).hide();
            }
        },
        remove : function() {
            var element = $('.offer-group-nooffers');
            if(element.length > 0) {
                $(element).remove();
            }
        },
        activate : function() {
            var element = $('.offer-group-nooffers');
            //var _element = $('.offer-group-nooffers .userDetailSearch');
            if(element.length > 0) {
                $(element).show();
                $(element).find('p').text('There are no offers in your area. Please contact your dealer.'); //need to update in page
                //$(_element).empty();
            }
        }
    },
    bpytEntry : {
        anonUser : function() {
            var element = $('.bpyt-entry');
            var _element = $('.bpyt-entry .userDetailSearch');
            if(element.length > 0) {
                $(element).show();
                $(_element).empty();
                personalisation.display.form(_element, {valid: false});
            }
        },
        knownUser : function() {
            var element = $('.bpyt-entry');
            if(element.length > 0) {
                $(element).remove();
            }
        }
    },
    ownersPortalHome : {
        genericUser : function() {
            var element = $('#vehicles.owners-portal .column-count-3 .dealer-search');
            if(element.length > 0) {
                personalisation.display.ownersPortalHomepage(element, 'modules');
            }
        }
    },
    ownersPortalArticle : {
        genericUser : function() {
            var element = $('#vehicles.owners-portal .article-banner .dealer-search');
            if(element.length > 0) {
                personalisation.display.ownersPortalHomepage(element, 'banner');
            }
            var _element = $('#vehicles.owners-portal .article-banner-default .dealer-search');
            if(_element.length > 0) {
                personalisation.display.ownersPortalHomepage(_element, 'banner');
            }
        }
    },
    homepageDealer : {
        anonUser : function() {
            var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
            var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);
            
            var element = $('#homepage .dealer-promo-tile');
            if(element.length > 0) {

                $(element).empty();
                $(element).append('<div class="heading"><h3>SELECT YOUR LOCAL DEALER</h3><p>For help with all your sales, service, parts, accessories and finance needs.</p></div>');
                $(element).append('<div class="find button"><a href="#">Find</a></div>');
                
                $(element).find('.find a').click(function() {
                    if($(element).find('div.chooseDealerPopup').length > 0) {
                        var _element = $(element).find('div.chooseDealerPopup');
                        $(_element).remove();
                        if (jQuery.browser.msie && (ie55 || ie6)) {
                            $('.homepage-gallery-pagination').show();
                        }
                    } else {
                        hh_WT.trackEvent({'WT.ac':'Toyota_'+window.location.pathname.replace('/', '')+'_SpecialOffers_ToyotaHomepage_ChooseADealer_Start'}, true);
                        if (jQuery.browser.msie && (ie55 || ie6)) {
                            $('.homepage-gallery-pagination').hide();
                        }
                        $(element).append('<div class="chooseDealerPopup"><a href="#" class="close">CLOSE X</a><div class="inner"></div></div>');
                        var _element = $(element).find('div.chooseDealerPopup div.inner');
                        personalisation.display.form(_element, {valid: true, title: 'SpecialOffers_ToyotaHomepage_ChooseADealer'});
                        $(element).find('.chooseDealerPopup .close').click(function() {
                            var _element = $(element).find('div.chooseDealerPopup');
                            $(_element).remove();
                            if (jQuery.browser.msie && (ie55 || ie6)) {
                                $('.homepage-gallery-pagination').show();
                            }
                            return false;
                        });
                    }
                    return false;
                });
                
            }
        },
        knownUser : function() {
            var element = $('#homepage .dealer-promo-tile');
            if(element.length > 0) {

                $(element).empty();

                $(element).append('<div class="heading"><p>Your local dealer is:</p><h3>'+userDetailsDealerName+' <span class="change"><a href="#">Change</a></span></h3></div>');
                $(element).append('<div class="view-details button"><a href="#" class="more-link">View Dealer Details</a></div>');

                
                $(element).find('.change a').click(function() {
                    if($(element).find('div.chooseDealerPopup').length > 0) {
                        var _element = $(element).find('div.chooseDealerPopup');
                        $(_element).remove();
                    } else {
                        hh_WT.trackEvent({'WT.ac':'Toyota_'+window.location.pathname.replace('/', '')+'_SpecialOffers_ToyotaHomepage_ChooseADealer_Change'}, true);
                        $(element).append('<div class="chooseDealerPopup changeDealerPopup"><a href="#" class="close">CLOSE X</a><div class="inner"></div></div>');
                        var position = $(element).find('.change a').position();
                        var _element = $(element).find('div.chooseDealerPopup div.inner');
                        personalisation.display.form(_element, {valid: true, title: 'SpecialOffers_ToyotaHomepage_ChooseADealer'});
                        $(element).find('div.chooseDealerPopup').css({'left': position.left});
                        $(element).find('.chooseDealerPopup .close').click(function() {
                            var _element = $(element).find('div.chooseDealerPopup');
                            $(_element).remove();
                            return false;
                        });
                    }
                    return false;
                });
                
                $(element).find('.view-details a').click(function() {
                    var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
                    var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);
                    
                    if($(element).find('div.showDealerPopup').length > 0) {
                        var _element = $(element).find('div.showDealerPopup');
                        $(_element).remove();
                        if (jQuery.browser.msie && (ie55 || ie6)) {
                            $('.homepage-gallery-pagination').show();
                        }
                    } else {
                        hh_WT.trackEvent({'WT.ac':'Toyota_'+window.location.pathname.replace('/', '')+'_SpecialOffers_ToyotaHomepage_ChooseADealer_ViewDealerDetails'}, true);
                        if (jQuery.browser.msie && (ie55 || ie6)) {
                            $('.homepage-gallery-pagination').hide();
                        }
                        $(element).append('<div class="showDealerPopup"><a href="#" class="close">CLOSE X</a><div class="inner"></div></div>');
                        var _element = $(element).find('div.showDealerPopup div.inner');
                        personalisation.display.dealerInfo.summary(_element, '153x139', '13', {valid: true, title: 'SpecialOffers_ToyotaHomepage_ChooseADealer'});
                        $(element).find('.showDealerPopup .close').click(function() {
                            var _element = $(element).find('div.showDealerPopup');
                            $(_element).remove();
                            if (jQuery.browser.msie && (ie55 || ie6)) {
                                $('.homepage-gallery-pagination').show();
                            }
                            return false;
                        });
                    }
                    return false;                   
                });
                
            }
        }
    },
    specialOffersDealer : {
        anonUser : function() {
            var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
            var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);
            
            var element = $('#special-offers .dealer-promo-tile');
            if(element.length > 0) {

                $(element).empty();
                $(element).append('<div class="heading"><h3>SELECT YOUR LOCAL DEALER <br /> FOR SPECIAL OFFERS NEAR YOU</h3></div>');
                $(element).append('<div class="find button"><a href="#">Find</a></div>');
                
                $(element).find('.find a').click(function() {
                    if($(element).find('div.chooseDealerPopup').length > 0) {
                        var _element = $(element).find('div.chooseDealerPopup');
                        $(_element).remove();
                        if (jQuery.browser.msie && (ie55 || ie6)) {
                            $('.homepage-gallery-pagination').show();
                        }
                    } else {
                        hh_WT.trackEvent({'WT.ac':'Toyota_'+window.location.pathname.replace('/', '')+'_SelectaLocalDealer_SpecialOffersModule_Start'}, true);
                        if (jQuery.browser.msie && (ie55 || ie6)) {
                            $('.homepage-gallery-pagination').hide();
                        }
                        $(element).append('<div class="chooseDealerPopup"><a href="#" class="close">CLOSE X</a><div class="inner"></div></div>');
                        var _element = $(element).find('div.chooseDealerPopup div.inner');
                        personalisation.display.form(_element, {valid: true, title: 'SelectaLocalDealer_SpecialOffersModule'});
                        $(element).find('.chooseDealerPopup .close').click(function() {
                            var _element = $(element).find('div.chooseDealerPopup');
                            $(_element).remove();
                            if (jQuery.browser.msie && (ie55 || ie6)) {
                                $('.homepage-gallery-pagination').show();
                            }
                            return false;
                        });
                    }
                    return false;
                });
                
            }
        },
        knownUser : function() {
            var element = $('#special-offers .dealer-promo-tile');
            if(element.length > 0) {

                $(element).empty();

                $(element).append('<div class="heading"><p>Your local dealer is:</p><h3>'+userDetailsDealerName+' <span class="change"><a href="#">Change</a></span></h3></div>');
                $(element).append('<div class="view-details button"><a href="#" class="more-link">View Dealer Details</a></div>');

                
                $(element).find('.change a').click(function() {
                    if($(element).find('div.chooseDealerPopup').length > 0) {
                        var _element = $(element).find('div.chooseDealerPopup');
                        $(_element).remove();
                    } else {
                        hh_WT.trackEvent({'WT.ac':'Toyota_'+window.location.pathname.replace('/', '')+'_SelectaLocalDealer_SpecialOffersModule_Change'}, true);
                        $(element).append('<div class="chooseDealerPopup changeDealerPopup"><a href="#" class="close">CLOSE X</a><div class="inner"></div></div>');
                        var position = $(element).find('.change a').position();
                        var _element = $(element).find('div.chooseDealerPopup div.inner');
                        personalisation.display.form(_element, {valid: true, title: 'SelectaLocalDealer_SpecialOffersModule'});
                        $(element).find('div.chooseDealerPopup').css({'left': position.left});
                        $(element).find('.chooseDealerPopup .close').click(function() {
                            var _element = $(element).find('div.chooseDealerPopup');
                            $(_element).remove();
                            return false;
                        });
                    }
                    return false;
                });
                
                $(element).find('.view-details a').click(function() {
                    var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
                    var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);
                    
                    if($(element).find('div.showDealerPopup').length > 0) {
                        var _element = $(element).find('div.showDealerPopup');
                        $(_element).remove();
                        if (jQuery.browser.msie && (ie55 || ie6)) {
                            $('.homepage-gallery-pagination').show();
                        }
                    } else {
                        hh_WT.trackEvent({'WT.ac':'Toyota_'+window.location.pathname.replace('/', '')+'_SelectaLocalDealer_HomepageModule_ViewDealerDetails'}, true);
                        if (jQuery.browser.msie && (ie55 || ie6)) {
                            $('.homepage-gallery-pagination').hide();
                        }
                        $(element).append('<div class="showDealerPopup"><a href="#" class="close">CLOSE X</a><div class="inner"></div></div>');
                        var _element = $(element).find('div.showDealerPopup div.inner');
                        personalisation.display.dealerInfo.summary(_element, '153x139', '13', {valid: true, title: 'SelectaLocalDealer_SpecialOffersModule'});
                        $(element).find('.showDealerPopup .close').click(function() {
                            var _element = $(element).find('div.showDealerPopup');
                            $(_element).remove();
                            if (jQuery.browser.msie && (ie55 || ie6)) {
                                $('.homepage-gallery-pagination').show();
                            }
                            return false;
                        });
                    }
                    return false;                   
                });
                
            }
        }
    },
    showroomHeader : {
        anonUser : function() {
            var element = $('#landing-page.showroom .showroom-heading .user-information');
            if(element.length > 0) {

                $(element).find('.showroom-special-offers a.more-link').click(function() {
                    if($(element).find('div.chooseDealerPopup').length > 0) {
                        var _element = $(element).find('div.chooseDealerPopup');
                        $(_element).remove();
                    } else {
                        var oBody = $('body');
                        var PAGE_NAME = '';
                        var PAGE_ABBR = '';
                        if (oBody.attr('id') == 'landing-page') {
                            if(oBody.hasClass('car')){
                                PAGE_NAME = 'Cars';
                                PAGE_ABBR = 'Cars';
                            }else if(oBody.hasClass('hybrids')){
                                PAGE_NAME = 'Hybrids';
                                PAGE_ABBR = 'Hybrids';
                            }else if(oBody.hasClass('suvs')){
                                PAGE_NAME = 'SUVSand4WDS';
                                PAGE_ABBR = 'SUVSand4WDS';
                            }else if(oBody.hasClass('utes')){
                                PAGE_NAME = 'UtesandVans';
                                PAGE_ABBR = 'UtesandVans';
                            }
                        }
                        
                        var trackingTitle = '';
                        
                        if($('#landing-page').hasClass('sem')) {
                            trackingTitle = 'SpecialOffers_SEMLandingPage_ChooseADealer';
                        } else {
                            trackingTitle = 'SpecialOffers_ShowroomPage_ChooseADealer';
                        }
                        
                        // hh_WT.trackEvent({'WT.ac':'Toyota_'+window.location.pathname.replace('/', '')+'_'+trackingTitle}, true);
                            
                        hh_WT.trackEvent({'WT.ac':'Toyota_'+window.location.pathname.replace('/', '')+'_'+trackingTitle+'_Start'}, true);
                            
                        $(element).append('<div class="chooseDealerPopup"><a href="#" class="close">CLOSE X</a><div class="inner"></div></div>');
                        var _element = $(element).find('div.chooseDealerPopup div.inner');
                        personalisation.display.form(_element, {valid: true, title: trackingTitle});
                        $(element).find('.chooseDealerPopup .close').click(function() {
                            var _element = $(element).find('div.chooseDealerPopup');
                            $(_element).remove();
                            return false;
                        });
                    }
                    
                    return false;
                });
                
            }
        },
        knownUser : function() {
            var element = $('#landing-page.showroom .showroom-heading .user-information');
            if(element.length > 0) {
                
                var userRegType = 'Private';
                if (userDetailsRegType == 'BUSINESS') {
                    userRegType = 'Business';
                }
                
                $(element).empty();
                $(element).append('<div class="general-promo-tile promo-tile showroom-dealer"><div class="heading"><h3>'+userRegType+' pricing shown for</h3><div class="dealer-container"></div></div>');
                
                var _element = $(element).find('.showroom-dealer .dealer-container');
                
                if($('#landing-page').hasClass('sem')) {
                    personalisation.display.form(_element, {valid: true, title: 'SpecialOffers_SEMLandingPage_ChooseADealer'});
                    personalisation.display.dealerInfo.summary(_element, '153x139', '13', {valid: true, title: 'SpecialOffers_SEMLandingPage_ChooseADealer'});
                } else {
                    personalisation.display.dealerInfo.summary(_element, '153x139', '13', {valid: true, title: 'SpecialOffers_ShowroomPage_ChooseADealer'});
                }
                
                
                $('.showroom-listing .item').each(function(i,n) {
                    var car_id = $(n).attr('rel');
                    car_id = car_id.replace('car-id-', '');
                    $.ajax({
                        url: '/service/offers/hasoffers/'+car_id,
                        error: function() {
                        
                        },
                        success: function(response) {
                            if(response == 'true') {
                                $(n).find('.links').addClass('special-offers');
                            } else {
                            }
                        }
                    });
                });
            }
        }
    }
};

$(document).ready(function() {
    if(userDetailsKnown != null) {
        if(!userDetailsRegType) {
            userDetailsRegType = 'PRIVATE';
            $.cookie('userDetailsRegType', userDetailsRegType, {expires: 7, path: '/'});
        }
        personalisation.user.known();
    } else {
        personalisation.user.anon();
    }
    
});
