window.addEvent('domready', function(){

    if($('content-navigation')) {
        new NavigationPanel('content-header', { panel: $('content-navigation'), wrapper: $('navi-wrapper') });
        $$('.content-nav ul').addEvents({
            'mouseenter' : function() {
                this.addClass('active');
            },
            'mouseleave' : function() {
                this.removeClass('active');
            }
        });
    }
    $$('#side-bar li').addEvents({
        'mouseenter' : function() {
            this.addClass('hover');
        },
        'mouseleave' : function() {
            this.removeClass('hover');
        }
    });


    var TopLevelMenus = $$('li.top-level');
	var zDepth = 900;

    if (TopLevelMenus) {
        TopLevelMenus.each(function(menu){
            var wrapper = menu.getElement('div.branch-mask');

			menu.getElements('.nav-branch').each(function(b){
				b.setStyle('z-index', (zDepth = zDepth-1));
			});

            if(wrapper){
                var panel = wrapper.getElement('div.nav-tree');
                new NavigationPanel(menu, { 
					'panel': panel, 
					'wrapper': wrapper,
					'onEnable' : function() {
						Carbranchs.each(function(branch){
							branch.active = true;
						});
					},
					'onDisable' : function() {
						Carbranchs.each(function(branch){
							branch.active = false;
						});
						wrapper.setStyle('overflow', 'hidden');
					}					
				});
            }
			menu.getElements('a').each(function(link){
				link.removeAttribute('title');
			});
        });

	$$('#vehicles li', '#shopping li', '#company li', '#owners_area li').addEvents({
		'mouseenter' : function() {
          	this.addClass('hover');
        },
        'mouseleave' : function() {
    	     this.removeClass('hover');
    	}
    });


    };
    
    var Carbranchs = $$('li.car-branch');

    if(Carbranchs)
    {
        
		Carbranchs.each(function(branch) {
            
            branch.active = false;

			branch.setStyle('z-index', (zDepth = zDepth-1));
			
            var teaserpanel = branch.getElement('div.car-menu');

            if (teaserpanel) 
            {
                teaserpanel.fade('hide').setStyle('z-index', (zDepth = zDepth-1));
                
                teaserpanel.setStyle('left', branch.getWidth());
                
                teaserpanel.getParents().each(function(tree){
                    if(tree.get('class') == 'branch-mask') branch.mask = tree;
                });

                branch.addEvents({
                    'mouseenter' : function() {
					 	if(this.active) { 
					 		if(this.mask.getStyle('overflow') != 'visible') {
					 			this.mask.setStyle('overflow', 'visible'); 
					 		}
					 		teaserpanel.fade('show');
					 	} 
                    },
                    'mouseleave' : function() {
                    	teaserpanel.fade('hide');
                    }
                });

            };
        });
        //Adding an active class to .nav-branch so we can highlight the column the 
        //column the user is currently over.
        $$('.nav-branch').addEvents({
            'mouseenter' : function() {
            	//alert('.nav-branch');
            	//$$('.nav-branch').addClass('nav-branch_hidden');
            	
            	$$('.nav-branch').set('tween', {transition: Fx.Transitions.Back.easeIn, duration: 1});
            	$$('.nav-branch').tween('opacity', 0.3);
                
              
                this.addClass('active');

                $$('.active').set('tween', {transition: Fx.Transitions.Back.easeIn, duration: 1});
            	$$('.active').tween('opacity', 1.0);

            	
                
                
            },
            'mouseleave' : function() {
            	//alert('.nav-branch');
            	//$$('.nav-branch').removeClass('nav-branch_hidden');
            	
            	$$('.nav-branch').set('tween', {transition: Fx.Transitions.Back.easeIn, duration: 100});
            	$$('.nav-branch').tween('opacity', 1.0);
            	
            	this.removeClass('active');
            }
        });
    }
    
    if($('search-site')) {
        $('search-site').addEvents({
            'mouseenter' : function() {
                this.addClass('hover');
                var field = this.getElement('input.search-field');
                field.set('value', (field.value != 'Search' ? field.value : '')).focus();
                this.getElement('#recommended_searches').removeClass('none');
            },
            'mouseleave' : function() {
                this.removeClass('hover');
                var field = this.getElement('input.search-field');
                field.set('value', (field.value == '' ? 'Search' : field.value)).blur();
                this.getElement('#recommended_searches').addClass('none');
            }
        });
    }

	if($('search-dealer-find')) {
		$('search-dealer-find').getElement('input.search-field').addEvents({
			'focus' : function() {
				this.set('value', (this.value != 'Postcode' ? this.value : ''));
			},
			'blur' : function() {
				this.set('value', (this.value == '' ? 'Postcode' : this.value));
			},
			'keyup' : function(event) {
				//console.debug(event.key);
			}
		}); 
	}
    if($('image_gallery_thumbs')) {

        if($$('#image_gallery_thumbs_items .image_gallery_thumbs_element').length > 5){

			var thumb_mover = $('image_gallery_thumbs_items');
			var thumb_pos = [];
		
			if(thumb_mover) {

				var basepos = 0;
				var slide_holder = $('image_gallery_thumbs_inner');

				var thumbWidth = 133;
				var tocLinks = $$('.image_gallery_thumbs_element');
				var tocWidth = (tocLinks.length * thumbWidth);
				var extra_slides = tocLinks.length - 5; //lets find out how many extra slides so we can calculate the animation duration
				 
								
				thumb_mover.mover = new Fx.Tween(thumb_mover, { transition: Fx.Transitions.Quart.easeOut, duration: (1000 * extra_slides) });

//thumb_mover.mover = new Fx.Tween(thumb_mover, { transition: Fx.Transitions.linear, duration: (200 * 1) });


				thumb_mover.pos = 5;
			
				thumb_mover.setStyles({
					'width' : tocWidth,
					'margin-left' : 0
					});
					
				slide_left = (tocWidth - slide_holder.getWidth()) * -1
				
				thumb_mover.addEvents({
					'slide_right' : function() {
						
						this.mover.pause().start('margin-left', slide_left);
						
						thumb_mover.prev.removeClass('disabled');
					},
					'slide_left' : function() {
						this.mover.pause().start('margin-left', 0);
						thumb_mover.next.removeClass('disabled');
					},
					'stop_slide' : function() {
						this.mover.pause();
						current_pos = thumb_mover.getStyle('margin-left').toInt();
						
						if(current_pos == slide_left) thumb_mover.next.addClass('disabled');
						
						if(current_pos == 0) thumb_mover.prev.addClass('disabled');
					},
					'reset' : function() {
						this.mover.start('margin-left', 0);
						this.pos = 7;
					}
				})
			}

            thumb_mover.prev = new Element('div', {
            	'class' : 'image_gallery_thumbs_back disabled',
            	events 	: {
					mouseover: function(e) {
						if(e) e.stop();
						thumb_mover.fireEvent('slide_left');						
					},
					mouseout: function(e) {
						if(e) e.stop();
						thumb_mover.fireEvent('stop_slide');						
					}
				}
            }).inject('image_gallery_thumbs');
            
            thumb_mover.next = new Element('div', {
            	'class' : 'image_gallery_thumbs_forward',
            	events 	: {
            		mouseover: function(e) {
            			if(e) e.stop();
            			thumb_mover.fireEvent('slide_right');
            		},
					mouseout: function(e) {
						if(e) e.stop();
						thumb_mover.fireEvent('stop_slide');						
					}
            	}
            }).inject('image_gallery_thumbs', 'top');
        }


        //photos
        $$('div#image_gallery_thumbs_items div.photo a').each(function(elt) {
            elt.addEvent('click', function(e) {
                e.stop();
                var listing_id=this.id.replace('gal_', '');
                setGalleryDetail('/ajax-photo-new?item='+listing_id);
                //setGalleryDetail('slideshow/'+listing_id + '.html');
            });
        });
        
        $$('div.gallery_wallpaper_opener a').each(function(elt){
        	elt.addEvent('click', function(e){
        		e.stop();
        		$('gallery_wallpapers').fade('toggle');
        		elt.toggleClass('active');
        	})
        });
        
        
        //videos
        $$('div#image_gallery_thumbs_items div.video a').each(function(elt) {
            elt.addEvent('click', function(e) {
                e.stop();
                var listing_id=this.id.replace('gal_', '');
                setGalleryDetail('/ajax-gallery-video/'+listing_id);
            });
        });
        
        //accessories
        $$('div#image_gallery_thumbs_items div.accessory a').each(function(elt) {
            elt.addEvent('click', function(e) {
                e.stop();
                var listing_id=this.id.replace('gal_', '');
                setGalleryDetail('/ajax-gallery-accessory/'+listing_id);
            });
        });
        
        //features
        $$('div#image_gallery_thumbs_items div.feature a').each(function(elt) {
            elt.addEvent('click', function(e) {
                e.stop();
                var listing_id=this.id.replace('gal_', '');
                setGalleryDetail('/ajax-gallery-feature/'+listing_id);
            });
        });
        
        //colours + trim
        $$('div#image_gallery_thumbs_items div.colour a').each(function(elt) {
            elt.addEvent('click', function(e) {
                e.stop();
                var listing_id=this.id.replace('gal_', '');
                setGalleryDetail('/ajax-gallery-colour/'+listing_id);
            });
        });
    }
    
    //opacity for IE
    if($('vehicle_range_gallery') && $('vehicle_range_gallery').getElement('.model_not_selected')){
        $('vehicle_range_gallery').getElement('.model_not_selected').setStyle('opacity', 0.3);
    }

    if($('image_gallery_detail') && $('image_gallery_detail').getElement('.gallery_caption')){
        $('image_gallery_detail').getElement('.gallery_caption').setStyle('opacity', 0.7);
    }

    //add drop shadows
    new TextDropShadow($$('.tds'));

	$$('form.user_data_form').each(function(frm){
	
		var form_checker = new FormCheck(frm.get('id'), {
			fieldErrorClass: 'required',
			trimValue: true,
			display: {
				addClassErrorToField: 1,
				indicateErrors:2,
				closeTipsButton:0,
				scrollToFirst: false,
				tipsOffsetX:0,
				tipsOffsetY:65
            },
            onValidateSuccess: function(){
                //create a loading indicator in the place of the button. store the button ic case something goes wrong
                var submitBtn = $('user_form_submit').clone();
                new Element('div', {
                    'id': 'form_sending',
                    'html': 'Sending'
                }).replaces($('user_form_submit'));
                //clear the error message
                $('error_container').set('html', '');
                //send the form through ajax
                new Request({
                    url: '/mmal_corporate/mvp_insert_form.php',
                    method: frm.getProperty('method'),
                    async : false,
                    data : frm.toQueryString(),
                    onFailure: function(instance){
                        event.stop();
                        //recreate the button
                        submitBtn.replaces($('form_sending'));
                    }
                }).send();
            },
            onValidateFailure: function(){
                setErrorClassOnSpans();
                $('error_container').set('html', "Sorry - your details are incomplete. Please make sure you've entered information into all mandatory fields highlighted and try again.");
			}
		});
		
		var time_pickers= new Array();
		frm.getElements('.profile-time').each(function(time_elt){
            time_pickers[time_pickers.length] = new TimePicker(time_elt, {
			'onHide': function() {
                    if(this.hour || this.minute){
                        time_elt.set('value', (this.hour || '00') + ':' + (this.minute || '00'));
			}
                }
            });
		});

        var date_pickers= new Array();
        frm.getElements('.profile-date').each(function(date_elt){
            date_pickers[date_pickers.length] = new DatePicker(date_elt, {
		 	'onPick': function() {
                    date_elt.set('value', this.day.toString().pad(2, '0', 'left') + '/' + this.month.toString().pad(2, '0', 'left') + '/' + this.year.toString().pad(2, '0', 'left'));
		 		}
		}); 	
        });

        frm.getElements('input[type=text], input[type=checkbox], select, textarea').each(function(el){
			el.addEvents({
				'focus' : function() {
                    date_pickers.each(function(dp){
                        dp.hide();
                    });
                    time_pickers.each(function(tp){
                        tp.hide();
					});
				},
				//show and hide error tooltips
				'mouseover' : function(){
					if(this.element){
                        //js cannot get the coordinates while the object is hidden. Display it, then set it to the right spot
                        this.element.setStyle('display', 'block');

						this.element.setStyles({
							'left':this.getCoordinates().right,
							'top':this.getCoordinates().top - 10
						});
					}
				},
				'mouseout' : function(){
					if(this.element){
						this.element.setStyle('display', 'none');
				}
				}

			});
		});
		
       
        //reset button
        frm.getElement('.reset_btn').addEvent('click', function(){
            $('error_container').set('html', '');
            $$('.user_data_form input[type=text]', '.user_data_form input[type=checkbox]', '.user_data_form select', '.user_data_form textarea').each(function(el){
                if(el.hasClass('required')){
                    form_checker.removeError(el);
	}
            });
            setErrorClassOnSpans();
        });
    });
		
	if($('pricing_legislation_link')){
		$('pricing_legislation_link').addEvent('click', function(e) {
		    e.stop();
			new MooDialog.Request('/new-pricing-legislation',{} , {
			size: {
			    width: 590,
			    height: 300
			}
		    });	
		});
	}
	
	
	if($('genuine_accessories_warranty')){
		$('genuine_accessories_warranty').addEvent('click', function(e) {
		    e.stop();
		    new Request({
                url: '/accessory-warranty-popup',
                update: $('dialog-content'),
				onComplete: function(){
					$('dialog-wrap').setStyle('display','block');
				}
            }).send();

		});
	}
	
	if($('dialog-wrap')){
		if($('dialog-wrap').getElement('#close')){
			$('dialog-wrap').getElement('#close').addEvent('click', function(e) {
			    e.stop();
			    $('dialog-wrap').setStyle('display','none');
			});
		}
	}
	
	
	/* START-UP Brochure Request Page functionality */
	if($('brochure-cart-items')) { BrochureRequestPage($('brochure-cart-items')); $$('.brochure-wrapper').setStyle('display', 'block'); }

	/* START-UP Finance Calculator Page functionality */
	if($('finance-calculator')) PrepareFinanceCalculator();
	
	/* Capped Price Calculator start-up */
	if($('capped-price-calculator')) PrepareCappedPriceCalculator();
	
		/* Capped Price FAQs start-up */
	if($('capped-price-faqs')) PrepareCappedPriceFAQs();
	
	/* *** Fleet Survey Calculate Total *** */
	if ($('fleet_survey_form')) {
		$$('.tablefield').each(function(el){
			el.addEvent('blur', function() {
				if (!isInteger(el.get('value'))) {
					el.set('value','');
				}
				calculateFleetTotalValues();
			});
		});
	}
	
	/* *** Fleet Survey Form Submit *** */
	if ($('fleet_survey_form')){

		var form_checker = new FormCheck('fleet_survey_form', {
			fieldErrorClass: 'required',
			trimValue: true,
			display: {
				addClassErrorToField: 1,
				indicateErrors:2,
				closeTipsButton:0,
				scrollToFirst: false,
				tipsOffsetX:0,
				tipsOffsetY:65
	        },
	        onValidateSuccess: function(){
	            //create a loading indicator in the place of the button. store the button ic case something goes wrong
	            var submitBtn = $('submit_button').clone();
	            new Element('div', {
	                'id': 'form_sending',
	                'html': 'Sending'
	            }).replaces($('submit_button'));
	            //clear the error message
	            $('error_container').set('html', '');
	            //send the form through ajax
	            new Request({
	                url: '/mmal_corporate/insert_fleetform.php',
	                method: $('fleet_survey_form').getProperty('method'),
	                async : false,
	                data : $('fleet_survey_form').toQueryString(),
	                onFailure: function(instance){
	                    event.stop();
	                    //recreate the button
	                    submitBtn.replaces($('form_sending'));
	                }
	            }).send();
	            
	        },
	        onValidateFailure: function(){
	            setErrorClassOnSpans();
	            $('error_container').set('html', "Sorry - your details are invalid. Please make sure highlighted fields are completed correctly and try again.");
	            var scroller = new Fx.Scroll(document.body);
				scroller.toTop();
			}
		});
		
	}
	
	/* *** Vehicle Evaluation Form Submit *** */
	if ($('vehicle-evaluation-form')){

		var form_checker = new FormCheck('vehicle-evaluation-form', {
			fieldErrorClass: 'required',
			trimValue: true,
			display: {
				addClassErrorToField: 1,
				indicateErrors:2,
				closeTipsButton:0,
				scrollToFirst: false,
				tipsOffsetX:0,
				tipsOffsetY:65
	        },
	        onValidateSuccess: function(){
	            //create a loading indicator in the place of the button. store the button ic case something goes wrong
	            var submitBtn = $('submit_button').clone();
	            new Element('div', {
	                'id': 'form_sending',
	                'html': 'Sending'
	            }).replaces($('submit_button'));
	            //clear the error message
	            $('error_container').set('html', '');
	            //send the form through ajax
	            new Request({
	                url: '/mmal_corporate/insert_vehicle_evaluation.php',
	                method: $('vehicle-evaluation-form').getProperty('method'),
	                async : false,
	                data : $('vehicle-evaluation-form').toQueryString(),
	                onFailure: function(instance){
	                    event.stop();
	                    //recreate the button
	                    submitBtn.replaces($('form_sending'));
	                }
	            }).send();
	            
	        },
	        onValidateFailure: function(){
	            setErrorClassOnSpans();
	            $('error_container').set('html', "Sorry - your details are invalid. Please make sure highlighted fields are completed correctly and try again.");
	            var scroller = new Fx.Scroll(document.body);
				scroller.toTop();
			}
		});
		
	}
	
});

/* START Brochure Request Page functionality */

function BrochureRequestPage(BrochureCart) {
	var BrochureItems = $$('ul#brochure-listing li.item');
	var CartHolder = (BrochureItems.getParent().getParent())[0];
	
var OrderCart = BrochureCart.getParent().getElement('.order-brochure').setProperties({
		'disabled' : 'disabled',
		'src' : '/assets/images/brochure-request/order-brochures-button-disabled.gif'
		}).addClass('disabled');
		
var DownloadCart = BrochureCart.getParent().getElement('.download-brochure').setProperties({
		'disabled' : 'disabled',
		'src' : '/assets/images/brochure-request/download-brochures-button-disabled.gif'
		}).addClass('disabled');


	var maxamount = 3;
	var AddWarning = null;
	var zDepth = 800;

	BrochureCart.Items = [];
	
	
	OrderCart.addEvents({
				'click' : function(e) {
					var queryString;
					var first = true;
					BrochureCart.Items.each(function(item){
						if (first) {
							queryString = item.value;
							first = false;
						} else {
							queryString = queryString + ',';
							queryString = queryString + item.value;
						}
					});
					$('order-brochures-hidden').value = queryString;
					
				}
			});
	DownloadCart.addEvents({
				'click' : function(e) {
					var queryString;
					var first = true;
					BrochureCart.Items.each(function(item){
						if (first) {
							queryString = item.value;
							first = false;
						} else {
							queryString = queryString + ',';
							queryString = queryString + item.value;
						}
					});
					$('download-brochures-hidden').value = queryString;
					
				}
			});	
	
	
	BrochureCart.addEvents({
		'create' : function(item) {
			if(BrochureCart.Items.length < maxamount) {
				if(BrochureCart.Items.length > -1) {
					this.getElement('.empty').setStyle('display', 'none');
					OrderCart.removeProperty('disabled').set('src', '/assets/images/brochure-request/order-brochures-button.gif').removeClass('disabled');
					DownloadCart.removeProperty('disabled').set('src', '/assets/images/brochure-request/download-brochures-button.gif').removeClass('disabled');
				}
				
				//seperating value of checkbox to retreive description and URL
				var brochureString = item.value.split("|");
				
				item.cart_item = new Element('li',{'class':'cart-item'}).set('text', brochureString[0]).inject(this).highlight('#ff0000');
				var self = item;
				
				new Element('span', 
					{
						'class':'remover', 
						'text': 'remove'
					}
				).addEvents({
					'click' : function(){
						BrochureCart.fireEvent('remove', [self]);
					}
				}).inject(item.cart_item);
				
				
				BrochureCart.Items.push(item);					
			} else {
				item.checked = false;
				var pos = item.getPosition(CartHolder);
				if(!AddWarning) {
					AddWarning = new Element('div',{
						'class':'tool-tip'
						}).setStyles({
							'top' : ((Browser.Engine.trident && Browser.Engine.version <= 5 ) ? (pos.y + 55) : (pos.y - 62)) ,
							'left' : pos.x - ((Browser.Engine.trident && Browser.Engine.version <= 5) ? 57 : 61)
						}).set('text','Sorry you can only select '+ maxamount +' brochures.').inject(CartHolder);
					(function(){ AddWarning.fade((Browser.Engine.trident ? 'hide' : 'out')); }).delay(2000);
				} else {
					AddWarning.setStyles({
							'top' : ((Browser.Engine.trident && Browser.Engine.version <= 5) ? (pos.y + 55) : (pos.y - 62)) ,
							'left' : pos.x - ((Browser.Engine.trident && Browser.Engine.version <= 5) ? 57 : 61)
						}).fade((Browser.Engine.trident ? 'show' : 'in'));
					(function(){ AddWarning.fade((Browser.Engine.trident ? 'hide' : 'out')); }).delay(3000);
				}
			}				
		},
		'remove' : function(item) {
			item.checked = false;
			item.cart_item.destroy();
			item.cart_item = null;
			
			BrochureCart.Items.erase(item);
			if(BrochureCart.Items.length == 0) {
				this.getElement('.empty').setStyle('display', 'block');
				OrderCart.setProperties({
					'disabled': 'disabled',
					'src': '/assets/images/brochure-request/order-brochures-button-disabled.gif'
					}).addClass('disabled');
				DownloadCart.setProperties({
					'disabled': 'disabled',
					'src': '/assets/images/brochure-request/download-brochures-button-disabled.gif'
					}).addClass('disabled');
			}
			if(AddWarning) {
				AddWarning.fade('hide');
			}
		}
	});

	BrochureItems.each(function(item){
		var extras = item.getElement('.download-extras').addClass('download-active');
		var self = item;			

		extras.getElements('ul li:nth-child(2n)').addClass('alt-row');

		item.slide = new Fx.Slide(extras.getElement('ul'), {
			onComplete: function(){
				if(item.dropdownopen) {
					item.dropdownopen = false; 
				} else {
					item.dropdownopen = true;
				}
				if ((item.dropdownopen == true) && (item.open == false)) {
					item.fireEvent('hide');
				}
				if ((item.dropdownopen == false) && (item.open == true)) {
					item.fireEvent('show');
				}
			}
		}).hide();
		
		
		
		item.open = false;
		item.dropdownopen = false;
		item.cart_item = null;
		
		item.details = item.getElement('.item-details');
		item.checkboxs = item.getElements('input[type="checkbox"]');

		item.addEvents({
			'mouseenter': function() {
			//'click': function() {
				this.fireEvent((!item.open ? 'show' : 'hide'));
			},
			'mouseleave': function() {
			//'click': function() {
				this.fireEvent((!item.open ? 'show' : 'hide'));
			},
			'show' : function() {
				self.open = true;
				this.addClass('selected');
				self.slide.slideIn();
				if (self.open != true) {
					this.fireEvent('hide');
				}
				
			},
			'hide' : function() {
				this.removeClass('selected');
				self.slide.slideOut();
				self.open = false;
				
			}
		});
		
		item.details.addEvent('mouseleave', function(){
			//HACK: Work around for a tad bit of incompatibility in IE7 
			if(!(Browser.Engine.trident && Browser.Engine.version == 5)) {
				self.details.getElement('h4').fireEvent('hide');
			}	
		});

		
		//adds events to each checkbox within an item
		item.checkboxs.each(function(checkbox){
		
			checkbox.addEvents({
				'click' : function(e) {
					e.stopPropagation();
					this.fireEvent('create');
				},
				'create' : function() {
					var self = this;
					var fullBrochure = this.value.contains('Full Brochure');
					if (fullBrochure) {
						if (this.checked) {
							item.checkboxs.each(function(box){
								if (box != self) {
									box.setProperties({'disabled': 'disabled'});
									if(box.checked) {
										box.checked = false;
										BrochureCart.fireEvent('remove', [box]);
									}
								}
							});
						} else {
							item.checkboxs.each(function(box){
								box.removeProperty('disabled');
							});
						}
					} 
					
					
					
					
					if(this.checked) BrochureCart.fireEvent('create', [this]);
					else BrochureCart.fireEvent('remove', [this]);
				}
			});//.set('checked', false);		
			
			if(checkbox.checked) {
				checkbox.fireEvent('create');
			}
			
		});
		
		//Work around for z-index IE bug.
		//TODO: Make it only available to IE users.
		item.setStyle('z-index', (zDepth=zDepth-5));
	});
};

/* END: Brochure Request Page functionality */

/* START Finance Calculator Page functionality */

var price, EMP, deposit, tradeInValue, tradeInOwed, financeAmount, APR, term, calculate;

function fixUpNumber(num) {
	return num ? (num.split(",").join("")).toFloat() : 0;
}

function calcNetFinance() {
	total = (fixUpNumber(price.value) - fixUpNumber(deposit.value) - fixUpNumber(tradeInValue.value) + fixUpNumber(tradeInOwed.value));
	
	num = total.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	 
	
	financeAmount.value = (((sign)?'':'-') + '$' + num + '.' + cents);
	
	//financeAmount.value = '$' + total.numberFormat(2, '.', ',');
	
	if (calculate) { calculate.fireEvent('enabled', [((total > 0) ? true : false)]); };
}

function calculatePMT()	{
	// get APR as percent (0..1) per month
	var monthlyInterest = ( Number( APR.value ) / 100 ) / 12;
	
	// term is in years
	var paymentTermInMonths =  Number( term.value ) * 12;
	
	//Total Finance Amoount
	var totalFinance = Number( fixUpNumber(financeAmount.value.substr(1)) );
	
	
	num = PMT( monthlyInterest, paymentTermInMonths, totalFinance, 0, 0 ).toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	 
	
	EMP.value = (((sign)?'':'-') + '$' + num + '.' + cents);
	
	
	//EMP.value = '$' + PMT( monthlyInterest, paymentTermInMonths, totalFinance, 0, 0 ).numberFormat(2, '.', ',');
}

function PMT( rate, nper, pv, fv, type ) {
	var payment = 0;
	if( rate == 0 ) payment = ( pv + fv ) / nper;
	else payment = ( pv * ( Math.pow( ( 1 + rate ), nper ) ) + fv ) / 
			   	   ( ( 1 + rate * type ) * ( Math.pow( ( 1 + rate ), nper ) - 1 ) / rate );			
	return payment;
}

function PrepareFinanceCalculator() {
	price		  = $('price');
	deposit       = $('deposit');
	tradeInValue  = $('tradeInValue');
	tradeInOwed   = $('tradeInOwed');
	financeAmount = $('financeAmount');
	EMP 		  = $('EMP');
	APR 		  = $('APR');
	term 		  = $('term');
	calculate	  = $$('input[name="Calculate"]');
	
	$$(price, deposit, tradeInValue, tradeInOwed).each(function(field){
		field.addEvents({
			'keyup' : function() {
				calcNetFinance();
			}
		});
	});
	
	calculate.addEvents({
		'click': function(e){
			if(e) e.stop();
		 	calculatePMT();
		
		},
		'enabled': function(state) {
			if(state) {
				// this.removeProperty('disabled');
				this.removeClass('disabled_dark_86');
			} else {
				// this.setProperty('disabled', 'disabled');
				this.addClass('disabled_dark_86');
			}
			
		}
	})/*.setProperty('disabled', 'disabled')*/.addClass('disabled_dark_86');
};

/* END: Finance Calculator Page functionality */



/* *** START Capped Price Calculator Functions *** */

function PrepareCappedPriceCalculator() {
	
	//create hash table from xml file
	var root = XML.rootFromFile('/capped_price/capped_price.php');
	var hashes = XML.rootToHashes(root);
	
	
	//Populate Model Year Dropdown
	hashes.each(function(key,value){
		key.children[0].children.each(function(key, value){
			var modelYear = key.attributes.year;
			var newOption = new Element('option', {
			    'value': modelYear,
			    'html': modelYear
			});
			$('select-modelyear').getElement('select').grab(newOption);
		});
	});
	
	
	//Change event for Model Year Dropdown
	$('select-modelyear').getElement('select').addEvent('change', function(){

		$('select-vehicle').getElement('select').empty();
		$('select-details').setStyle('display','none');
		$('select-details').getElement('select').empty();
		$('capped-price-table').setStyle('display','none');
		$('photo-section').getElement('img').set('src','/assets/images/capped_price/photo-default-logo.gif');
		var newOption = new Element('option', {'value': '0','html': 'Please Select'});
		$('select-vehicle').getElement('select').grab(newOption);
		var newOption1 = new Element('option', {'value': '0','html': 'Please Select'});
		$('select-details').getElement('select').grab(newOption1);
		
		if(this.value != '0') {
			var chosenYear = this.value;
			hashes.each(function(key,value){
				key.children[0].children.each(function(key, value){
				
					if(key.attributes.year == chosenYear) {
						key.children[0].children.each(function(key, value){
							var vehicleName = key.attributes.name;
							var newOption = new Element('option', {'value': vehicleName,'html': vehicleName});
							$('select-vehicle').getElement('select').grab(newOption);
						});
					}
		    
				});
			});
			$('select-vehicle').setStyle('display','block');
		} else {
			$('select-vehicle').setStyle('display','none');
		}
	});
	
	
	//Change event for Vehicle Dropdown
	$('select-vehicle').getElement('select').addEvent('change', function(){
		
		$('select-details').getElement('select').empty();
		var newOption1 = new Element('option', {'value': '0','html': 'Please Select'});
		$('select-details').getElement('select').grab(newOption1);
		$('capped-price-table').getElement('tbody').empty();
			
		if (this.value!=0) {
			var chosenVehicle = this.value;
			var chosenYear = $('select-modelyear').getElement('select').value;
			hashes.each(function(key,value){
				key.children[0].children.each(function(key, value){
				
					if(key.attributes.year == chosenYear) {
						key.children[0].children.each(function(key, value){
							
							if(key.attributes.name == chosenVehicle) {
								if(key.attributes.img){
									$('photo-section').getElement('img').set('src',key.attributes.img);
								} else {
									$('photo-section').getElement('img').set('src','/assets/images/capped_price/photo-default-logo.gif');
								}
								if(key.children[0].children[1] != null){
									key.children[0].children.each(function(key, value){
										var moreInfoName = key.attributes.value;
										var newOption = new Element('option', {'value': moreInfoName,'html': moreInfoName});
										$('select-details').getElement('select').grab(newOption);
									});
									$('select-details').setStyle('display','block');
									$('capped-price-table').setStyle('display','none');
								} else {
									$('select-details').setStyle('display','none');
									count=1;
									key.children[0].children[0].children[0].children.each(function(key,value){
										var newTR = new Element('tr', {'class': 'row'});
										if (isEven(count)){newTR.addClass('altrow');}
										var nameTD = new Element('td', {'html': key.attributes.name});
										var priceTD = new Element('td', {'html': key.attributes.price});
										count++;
										newTR.grab(nameTD);
										newTR.grab(priceTD);
										$('capped-price-table').getElement('tbody').grab(newTR);
									});
									$('capped-price-table').setStyle('display','block');
								}
								
							}
						});
					}
		    
				});
			});
		} else {
			$('photo-section').getElement('img').set('src','/assets/images/capped_price/photo-default-logo.gif');
			$('capped-price-table').setStyle('display','none');
			$('select-details').setStyle('display','none');
		}
	});
	
	
	//Change event for Details Dropdown
	$('select-details').getElement('select').addEvent('change', function(){
		$('capped-price-table').getElement('tbody').empty();
		if (this.value!=0) {
			var chosenDetail = this.value;
			var chosenVehicle = $('select-vehicle').getElement('select').value;
			var chosenYear = $('select-modelyear').getElement('select').value;
			count = 1;
			hashes.each(function(key,value){
				key.children[0].children.each(function(key, value){
				
					if(key.attributes.year == chosenYear) {
						key.children[0].children.each(function(key, value){
							
							if(key.attributes.name == chosenVehicle) {
								
								key.children[0].children.each(function(key, value){
									if(key.attributes.value == chosenDetail) {
										
										key.children[0].children.each(function(key,value){
											var newTR = new Element('tr', {'class': 'row'});
											if (isEven(count)){newTR.addClass('altrow');}
											var nameTD = new Element('td', {'html': key.attributes.name});
											var priceTD = new Element('td', {'html': key.attributes.price});
											count++;
											newTR.grab(nameTD);
											newTR.grab(priceTD);
											$('capped-price-table').getElement('tbody').grab(newTR);
											});
									}
								});
								
							}
						});
					}
		    
				});
			});
			$('capped-price-table').setStyle('display','block');
		} else {
			$('capped-price-table').setStyle('display','none');
		}
	});
	
	
	var req = new Request.HTML({
		method: 'post',
		url: '/owners-area/diamond-advantage/capped-price-servicing/more-details', 
		update: $('detail-box-content')
	}).send();
	
	$$('.more-details-link').addEvents({
		'click' : function() {
			$('capped-price-details').setStyle('display', 'block');
			return false;
		}
	});
	
if (document.getElementById('close-button') != null) {
	$('close-button').addEvents({
		'click' : function() {
			$('capped-price-details').setStyle('display', 'none');
		}
	});
}

if (document.getElementById('book-a-service-button') != null) {
	$('book-a-service-button').addEvent('click', function() {
		if($('select-vehicle').getElement('select').value != '0') {
			window.location = "/owners-area/servicing/book-a-service?car="+$('select-vehicle').getElement('select').value;
			return false;
		}
	});
}

if (document.getElementById('start-again-button') != null) {
	$('start-again-button').addEvent('click', function() {
		location.reload(true);
		return false;
	});
}
};


/* *** END Capped Price Calculator Functions *** */


/* *** START Capped Price FAQs Functions *** */
function PrepareCappedPriceFAQs() {

	var faqListings = $$('.faq-listing');
	
	faqListings.each(function(listing){
	
		var self = listing;
		
				
		listing.slide = new Fx.Slide(self.getElement('.question-section'));
		
		listing.getElement('a').addEvents({
			'click' : function() {
				if (listing.slide.open) {
					this.fireEvent('hide');
				} else {
					this.fireEvent('show');
				}
				return false;
			},
			'show' : function() {
				self.addClass('selected');
				self.slide.slideIn();
			},
			'hide' : function() {
				self.removeClass('selected');
				self.slide.slideOut();
			}
		});
		
	});
	
	$$('.faq-listing').each(function(listing){listing.slide.hide();});
	
};

/* *** END Capped Price Calculator Functions *** */


function setErrorClassOnSpans(){
    $$('form span > input[type=text]', 'form span > input[type=checkbox]', 'form span > select', 'form span > textarea').each(function(el){
        var parent = el.getParent();
        if(el.hasClass('required')){
            parent.addClass('required_fix');
        }
        else{
            parent.removeClass('required_fix');
        }
    });
}

function setGalleryDetail(detail_url){
    var elt= new Element('div', {id: 'gallery_loading'}).setStyles({'height': $('image_gallery_detail').getHeight(), 'opacity': 0.5});
    elt.inject('image_gallery_detail');
     new Request.HTML({
         url: detail_url,
         method: 'get',
         update: 'image_gallery_detail',
         onComplete: function(){
             if($('image_gallery_detail').getElement('.gallery_caption')){
                 $('image_gallery_detail').getElement('.gallery_caption').setStyle('opacity', 0.7);
		        $$('div.gallery_wallpaper_opener a').each(function(elt){
		        	elt.addEvent('click', function(e){
		        		e.stop();
		        		$('gallery_wallpapers').fade('toggle');
		        		elt.toggleClass('active');
		        	})
		        });
             }
         }
     }).send();
}

function loadVideo(video_path){
    var so = new SWFObject('/assets/images/gallery/player.swf','mpl','729','424','9');
    so.addParam('allowfullscreen','true');
    so.addParam('allowscriptaccess','always');
    so.addParam('wmode','opaque');
    so.addVariable('file', video_path);
    so.addVariable('autostart','false');
    so.addVariable('stretching', 'exactfit');
    so.addVariable('controlbar', 'over');
    so.addVariable('skin', '/assets/images/gallery/schoon.swf');
    so.addVariable('fullscreen', 'true');
    so.addVariable('shownavigation', 'false');
    so.write('gallery_video');
}

function loadVideoWithImage(video_path, image_path){
    var so = new SWFObject('/assets/images/gallery/player.swf','mpl','729','424','9');
    so.addParam('allowfullscreen','true');
    so.addParam('allowscriptaccess','always');
    so.addParam('wmode','opaque');
    so.addVariable('file', video_path);
    so.addVariable('image', image_path);
    so.addVariable('autostart','false');
    so.addVariable('stretching', 'exactfit');
    so.addVariable('controlbar', 'over');
    so.addVariable('skin', '/assets/images/gallery/schoon.swf');
    so.addVariable('fullscreen', 'true');
    so.addVariable('shownavigation', 'false');
    so.write('gallery_video');
}

function calculateFleetTotalValues() {
	if ($('passengerHolden').get('value') == '') var passengerHolden = 0; else var passengerHolden = +($('passengerHolden').get('value'));
	if ($('passengerMitsubishi').get('value') == '') var passengerMitsubishi = 0; else var passengerMitsubishi = +($('passengerMitsubishi').get('value'));
	if ($('passengerVW').get('value') == '') var passengerVW = 0; else var passengerVW = +($('passengerVW').get('value'));
	if ($('passengerMazda').get('value') == '') var passengerMazda = 0; else var passengerMazda = +($('passengerMazda').get('value'));
	if ($('passengerSubaru').get('value') == '') var passengerSubaru = 0; else var passengerSubaru = +($('passengerSubaru').get('value'));
	if ($('passengerNissan').get('value') == '') var passengerNissan = 0; else var passengerNissan = +($('passengerNissan').get('value'));
	if ($('passengerToyota').get('value') == '') var passengerToyota = 0; else var passengerToyota = +($('passengerToyota').get('value'));
	if ($('passengerFord').get('value') == '') var passengerFord = 0; else var passengerFord = +($('passengerFord').get('value'));
	if ($('passengerHyundai').get('value') == '') var passengerHyundai = 0; else var passengerHyundai = +($('passengerHyundai').get('value'));
	if ($('passengerOther').get('value') == '') var passengerOther = 0; else var passengerOther = +($('passengerOther').get('value'));
	if ($('commercialHolden').get('value') == '') var commercialHolden = 0; else var commercialHolden = +($('commercialHolden').get('value'));
	if ($('commercialMitsubishi').get('value') == '') var commercialMitsubishi = 0; else var commercialMitsubishi = +($('commercialMitsubishi').get('value'));
	if ($('commercialVW').get('value') == '') var commercialVW = 0; else var commercialVW = +($('commercialVW').get('value'));
	if ($('commercialMazda').get('value') == '') var commercialMazda = 0; else var commercialMazda = +($('commercialMazda').get('value'));
	if ($('commercialSubaru').get('value') == '') var commercialSubaru = 0; else var commercialSubaru = +($('commercialSubaru').get('value'));
	if ($('commercialNissan').get('value') == '') var commercialNissan = 0; else var commercialNissan = +($('commercialNissan').get('value'));
	if ($('commercialToyota').get('value') == '') var commercialToyota = 0; else var commercialToyota = +($('commercialToyota').get('value'));
	if ($('commercialFord').get('value') == '') var commercialFord = 0; else var commercialFord = +($('commercialFord').get('value'));
	if ($('commercialHyundai').get('value') == '') var commercialHyundai = 0; else var commercialHyundai = +($('commercialHyundai').get('value'));
	if ($('commercialOther').get('value') == '') var commercialOther = 0; else var commercialOther = +($('commercialOther').get('value'));

	var totalHolden = passengerHolden + commercialHolden;
	var totalMitsubishi = passengerMitsubishi + commercialMitsubishi;
	var totalVW = passengerVW + commercialVW;
	var totalMazda = passengerMazda + commercialMazda;
	var totalSubaru = passengerSubaru + commercialSubaru;
	var totalNissan = passengerNissan + commercialNissan;
	var totalToyota = passengerToyota + commercialToyota;
	var totalFord = passengerFord + commercialFord;
	var totalHyundai = passengerHyundai + commercialHyundai;
	var totalOther = passengerOther + commercialOther;
	var totalPassenger = passengerHolden + passengerMitsubishi + passengerVW + passengerMazda + passengerSubaru + passengerNissan + passengerToyota + passengerFord + passengerHyundai + passengerOther;
	var totalCommercial = commercialHolden + commercialMitsubishi + commercialVW + commercialMazda + commercialSubaru + commercialNissan + commercialToyota + commercialFord + commercialHyundai + commercialOther;
	var grandTotal = totalPassenger + totalCommercial;
		
	if (totalHolden == 0) $('holdenTotal').set('text', ''); else $('holdenTotal').set('text', totalHolden);
	if (totalMitsubishi == 0) $('mitsubishiTotal').set('text', ''); else $('mitsubishiTotal').set('text', totalMitsubishi);
	if (totalVW == 0) $('vwTotal').set('text', ''); else $('vwTotal').set('text', totalVW);
	if (totalMazda == 0) $('mazdaTotal').set('text', ''); else $('mazdaTotal').set('text', totalMazda);
	if (totalSubaru == 0) $('subaruTotal').set('text', ''); else $('subaruTotal').set('text', totalSubaru);
	if (totalNissan == 0) $('nissanTotal').set('text', ''); else $('nissanTotal').set('text', totalNissan);
	if (totalToyota == 0) $('toyotaTotal').set('text', ''); else $('toyotaTotal').set('text', totalToyota);
	if (totalFord == 0) $('fordTotal').set('text', ''); else $('fordTotal').set('text', totalFord);
	if (totalHyundai == 0) $('hyundaiTotal').set('text', ''); else $('hyundaiTotal').set('text', totalHyundai);
	if (totalOther == 0) $('otherTotal').set('text', ''); else $('otherTotal').set('text', totalOther);
	if (totalPassenger == 0) $('passengerTotal').set('text', ''); else $('passengerTotal').set('text', totalPassenger);
	if (totalCommercial == 0) $('commercialTotal').set('text', ''); else $('commercialTotal').set('text', totalCommercial);
	if (grandTotal == 0) $('grandTotal').set('text', ''); else $('grandTotal').set('text', grandTotal);
}

function isEven(value){
	if (value%2 == 0)
		return true;
	else
		return false;
}

function isInteger(s) {
  return (s.toString().search(/^-?[0-9]+$/) == 0);
}

function movepic(img_name,img_src) {
	document.getElementById(img_name).src = img_src;
	}

function movepic_all(text_name,img_name,img_src) {
	document.getElementById(img_name).src = img_src;
	document. getElementById(text_name) .style. color = "#E90004";
	}

function movepic_all_leave(text_name,img_name,img_src) {
	document.getElementById(img_name).src = img_src;
	document. getElementById(text_name) .style. color = "#FFFFFF";
	}
