﻿var _currentRow;
var _browser;

$(document).ready(function(){
    $("hr", ".right-col").wrap("<div class=\"hr\"></div>");

    $("body").addClass("js");
    _browser = jQuery.browser;
    
    $("table td:first", ".right-col").addClass("first");
    
    //carousel
    var _carouselWrapper = $("#carousel-wrapper");
    var _carousel = $("#carousel",_carouselWrapper);
    
    if(_carousel.length > 0)
    {
        $("body").addClass("with-carousel");
        var additionalOffset =_browser.msie == true ? 21 : 5;
        
        var carouselOffset = Math.round(_carouselWrapper.offset().top + additionalOffset);        
        $("#carousel-extended-background").css("background-position", "0px " + carouselOffset + "px");
        
        var titleHeight = $("#title").height();
        var innerTitleHeight = $("#title-inner", "#title").height();
        
        var paddingValue = (titleHeight - innerTitleHeight) / 2;
        
        $("#title-inner", "#title").css({"padding-top": paddingValue, "padding-bottom": paddingValue});
        
        if(_carouselWrapper.hasClass("home"))
        {
            //$(".carousel-items").carousel();
            InitCarouselHome(_carousel);
        }
        else if(_carouselWrapper.hasClass("team"))
        {
            InitCarouselTeam(_carousel);
        }
    }
    
    //Fleet Page
    var _fleetWrapper = $("#fleet-wrapper");
    var _fleetPages = $("div.fleet-page", _fleetWrapper);
    
    if(_fleetPages.length > 0)
    {
        InitFleetPage(_fleetPages, _fleetWrapper);
    }
    
    //vehicle
    var _vehiclePhotos = $(".photos img", "#vehicle");
    
    if(_vehiclePhotos.length > 0)
    {
        InitVehiclePhotoGallery(_vehiclePhotos);
    }
    
    //photo gallery
    var _photoGallery = $(".main-image", "#photo-gallery");
    
    if(_photoGallery.length > 0)
    {    
        $("#thumbnails .thumb a", "#photo-gallery").click(function(event){
            event.preventDefault();
            var _index = Number($(this).attr("rel"));
            PositionMainImage(_index);
            $(this).parent("div.thumb").addClass("active").siblings().removeClass("active");
        });
    }
    
    //form checkbox replacement   
    ReplaceCheckBoxes();
    FormatDateBox();
    SetOptionalCriteriaClass();
});

//Set up the Carousel for the home page;
function InitCarouselHome(_carousel)
{   
    var _items = $("li", _carousel);
    var _positions = new Array();
    
    $(_items).each(function(index, item)
    {
        var _this = $(item);
        
        var offset = index >= 3 ? (index * 128) + 125 : (index * 128);
        
        _this.css("left", offset);
        
        _positions[index] = {x: offset};
        
        $("a", _this).click(function(event){ 
            if(!_this.hasClass("active"))
            {
                event.preventDefault();
            }
        });
        
        $(_this).click(function(event) {
            if(!_this.hasClass("active"))
            {
                $("li.active",_carousel).removeClass("active");
                _this.addClass("active");                
                
                ReallocatePositions(index, _positions, $("li",_carousel));
            }
        });
    });
}

function ReallocatePositions(activeIndex, positions, carouselItems)
{    
    var modifier;    
    switch(activeIndex)
    {
        case 0: { modifier = 2; break; }
        case 1: { modifier = 1; break; }
        case 2: { modifier = 0; break; }
        case 3: { modifier = 4; break; }
        case 4: { modifier = 3; break; }
    }
     
    for(var i = 0; i < positions.length; i++)
    {
        var newPos = ((modifier + i) % positions.length);
        var currItem = $(carouselItems[i]);        
        var animOptions = {"left": positions[newPos].x};
        
        if(i == activeIndex)
        {
            currItem.css("z-index", 2);
        }
        else
        {
            if(i > newPos)
            {
                currItem.css("z-index", 0);
            }
            else
            {
                currItem.css("z-index", 1);
            }
        }
        
        currItem.animate(animOptions, "slow");
    }
}

function InitCarouselTeam(_carousel)
{
    var _rowItems = $("ul.carousel-items", _carousel);
    var _items = $("li", _carousel);
    var _teamMembersCount = _teamMembers.length;
    _currentRow = GetRow();
    
    //set up class switching
    $(_items).each(function(index, item)
    {
        var _this = $(item);    
    });
    
    //position the menu items;
    PositionRows(_currentRow, false);
    ToggleArrows(_currentRow, _teamMembersCount, $("div.left a"), $("div.right a"));
    //arrow logic
    $("div.left a, div.right a", _carousel).each(function(index, item){
        var _this = $(item);
        var _type = _this.parent("div").attr("class");
        
        $(item).click(function(event)
        {
            event.preventDefault();
            var newRow = (_type == "left") ? _currentRow - 1 : _currentRow + 1;
            
            if(_this.hasClass("inactive") == false)
            {
                PositionRows(newRow, true);
                ToggleArrows(_currentRow, _teamMembersCount, $("div.left a"), $("div.right a"));
            }            
        });      
    });
}

//Team Carousel Functions
function GetRow()
{
    for(var i = 0; i < _teamMembers.length; i++)
    {
        for(var j = 0; j < _teamMembers[i].row.length; j++)
        {
            var currentItem = _teamMembers[i].row[j].member;
            if(currentItem == _currentTeamMember)
            {
                return i;
            }
        }    
    }
    
    return 0;
}
function PositionRows(newRow, animate)
{
    if(newRow >= 0 && newRow < _teamMembers.length)
    {
        $("ul.carousel-items", "#carousel-inner").each(function(index, item){
            var multiplier = -(newRow - index);  
            
            var position = multiplier * 719;
            if(animate)
            {
                $(item).animate({"left": position}, "slow");
            }
            else
            {
                $(item).css("left", position);
            }
            
            if(multiplier == 0 && animate)
            {
                var idealOption = $("a[rel = " + _currentTeamMember + "].team-member", $(item));
                
                $(idealOption).parent("li").addClass("active").click();
            }
        });
        _currentRow = newRow;
    }
}

function ToggleArrows(current, max, leftArrow, rightArrow)
{
    ToggleArrowsMain(current, max, leftArrow, rightArrow, true);
}
function ToggleArrowsNonZero(current, max, leftArrow, rightArrow)
{
    ToggleArrowsMain(current, max, leftArrow, rightArrow, false);
}

function ToggleArrowsMain(current, max, leftArrow, rightArrow, zeroIndexed)
{
    if(current == 0 && zeroIndexed || current == 1 && !zeroIndexed || max == 1)
    {
        leftArrow.addClass("inactive");
    }
    else
    {
        leftArrow.removeClass("inactive");
    }
    
    if(current == (max -1) && zeroIndexed || current == max && !zeroIndexed || max == 1)
    {
        rightArrow.addClass("inactive");
    }
    else
    {
        rightArrow.removeClass("inactive");
    }
}

function InitFleetPage(fleetPages, fleetWrapper)
{
    var _currentPageIndex = 0;
    var _fleetPagesCount = fleetPages.length;
    var pageHeights = new Array();
    var leftArrow = $("div.navi a.previous", fleetWrapper);
    var rightArrow = $("div.navi a.next", fleetWrapper);
    
    $(fleetPages).each(function(index, item){
        pageHeights[index] = $(item).height();
        
        if(index > 0)
        {
            $(item).hide();
        }
    });
    
    if(pageHeights.length > 0)
    {
        PositionPages(_currentPageIndex, pageHeights, _fleetPagesCount, false);
        //set up the arrows
        ToggleArrows(_currentPageIndex, _fleetPagesCount, leftArrow, rightArrow);
    
        //set up clicks
        $("div.navi a.previous, div.navi a.next", fleetWrapper).each(function(index, item){
            var _this = $(item);
            var _type = _this.parent("li").attr("class");
            
            $(item).click(function(event)
            {
                event.preventDefault();
                var newPageIndex = (_this.hasClass("previous")) ? _currentPageIndex - 1 : _currentPageIndex + 1;
                
                if(_this.hasClass("inactive") == false && PositionPages(newPageIndex, pageHeights, _fleetPagesCount, true))
                {
                    _currentPageIndex = newPageIndex;
                    ToggleArrows(_currentPageIndex, _fleetPagesCount, leftArrow, rightArrow);
                }
            });      
        });
    }
}

function PositionPages(newPageIndex, pageHeights, max, animate)
{
    var retVal = false;
    var visiblePage = $(".fleet-page:visible").get(0);
    var newPage = $(".fleet-page")[newPageIndex];

    if(newPageIndex >= 0 && newPageIndex < max && pageHeights != null)
    {        
        var container = $("#fleet-inner");
        if(animate)
        {
            container.height(pageHeights[newPageIndex]);
            $(visiblePage).hide(); 
            $(newPage).show();
        }
        else
        {
            container.height(pageHeights[newPageIndex]);
        }
        
        //resize window
        retVal = true;    
    }
    
    return retVal;
}

function InitVehiclePhotoGallery(photos)
{
    var leftArrow = $("div.navi a.previous", "#vehicle .left-col");
    var rightArrow = $("div.navi a.next", "#vehicle .left-col");
    var photoWrapper = $("#vehicle .left-col");
    var photosCount = photos.length;
    var currentPhotoIndex = 1;
    
    ToggleArrowsNonZero(currentPhotoIndex, photosCount, leftArrow, rightArrow);
    PositionPhotos(currentPhotoIndex, photosCount);
    
    $("li a", photoWrapper).click(function(event){
        event.preventDefault();
        var newIndex = Number($(this).text());
        if(newIndex > 0 && PositionPhotos(newIndex, photosCount))
        {
            currentPhotoIndex = newIndex;
        }
        ToggleArrowsNonZero(currentPhotoIndex, photosCount, leftArrow, rightArrow);        
    });
    
    
    $("div.navi a.previous, div.navi a.next", photoWrapper).each(function(index, item){
        var _this = $(item);
        
        $(item).click(function(event)
        {
            event.preventDefault();
            var newIndex = (_this.hasClass("previous")) ? currentPhotoIndex - 1 : currentPhotoIndex + 1;
            
            if(_this.hasClass("inactive") == false && PositionPhotos(newIndex, photosCount))
            {
                currentPhotoIndex = newIndex;
                ToggleArrowsNonZero(currentPhotoIndex, photosCount, leftArrow, rightArrow);
            }
        });
    });
        
}

function PositionPhotos(index, max)
{
    var retVal = false;
    if(index >= 0 && index <= max)
    { 
        var position = -((index -1) * 242);
        $("ul.photos", "#vehicle").css("left", position);
        
        $("a:contains(" + index + ")", "div.photo-paging").parent("li").addClass("active").siblings("li").removeClass("active");
        retVal = true;
    }
    return retVal;
}

function PositionMainImage(index)
{
    var position = -((index -1) * 256);
    $("#main-image", "#main-image-wrapper").css("top", position);
}

function ReplaceCheckBoxes()
{
    var _checkboxes = $("input:checkbox",".contact-form-wrapper");
    if(_checkboxes.length > 0)
    {   
        $(_checkboxes).each(function(index, item){
            var _this = $(item).get(0);
            var _wrapper = $("<div class=\"checkbox-wrapper\"></div>");            
            
            if(_this.checked)
            {
                $(_wrapper).addClass("active");
            }
            
            $(_this).wrap(_wrapper);
            
            $(_this).parent(".checkbox-wrapper").click(function(event)
            {
                _this.click();
                ReplaceCheckBoxes();
            });
        });
    }
}

function FormatDateBox()
{
    var _dateBoxes = $("input.date-box");
    var _defaultValue = "DD/MM/YYYY";
    $(_dateBoxes).each(function(index, item){
        var _item = $(item).get(0);
        
        if(_item.value.length == 0)
        {
            _item.value = _defaultValue;
        }
        
        $(_item).focus(function()
        {
            if(_item.value == _defaultValue)
            {
                _item.value = "";
            }
        });
        
        $(_item).blur(function()
        {
            if(_item.value.length == 0)
            {
                _item.value = _defaultValue;
            }
        }); 
    });
}
function SetOptionalCriteriaClass()
{
    $(".optional-criteria:last", ".contact-form-wrapper").addClass("last").siblings(".optional-criterial").removeClass("last");
}
