(function($) { 
	preloadImages = ["../image/tabOff.png", 
						"../image/tabOn.png", 
						"../image/dataBg.png", 
						"../image/noPhoto.png"]

	var preload = function(imgArray){
		var cache = [], cacheImg = '';
		for(var i=0; i < imgArray.length; i++){
			cacheImg = document.createElement('img');
			cacheImg.src = imgArray[i];
			cache.push(cacheImg);
		}
	}
	var tabHoverOn = function(){
		var elementId = $(this).attr('id').split('_');
		if(elementId[2] != 1){
			/* If clicked tab is not the first id */
			$(this).addClass('hover');
		} else {
			/* Otherwise change background on parent element */
			$(this).parent('div').addClass('hover');
		}
	}
	var tabHoverOff = function(){
		var elementId = $(this).attr('id').split('_');
		if(elementId[2] != 1){
			/* If clicked tab is not the first tab */
			$(this).removeClass('hover');
		} else {
			/* Otherwise change background on parent element */
			$(this).parent('div').removeClass('hover');
		}
	}
	var tabClick = function(){
		var elementId = $(this).attr('id').split('_');
		var link = $('a', this);
		var tabControl = $(this).parent('div');
		var vehicleDiv = $('#vehicleDiv_'+elementId[1]);
		var callback = null;
		var tabNum = elementId[2];
		
		//Default all tabs to unselected
		vehicleDiv.attr('class', 'vehicleDiv selTab'+elementId[2]);
		$(this).siblings(':not(.tabDividerDiv)').removeClass('select').parent('div').removeClass('select');
		
		//Change clicked tab to selected
		if(tabNum != 1){
			$(this).addClass('select');
		} else {
			tabControl.addClass('select');
		}
		
		if(tabNum == 3){
			/* If photo tab */
			callback = function(){
				var photoDiv = $(".mediaDownloadSection",this);
				var index = photoDiv.data('index');
				var heading = photoDiv.siblings('.mediaDownloadHeading').eq(0);
				if(typeof(heading.data('pageCount')) == 'undefined'){
					var pageCount = setStripWidth.call(photoDiv);
				} else {
					var pageCount = heading.data('pageCount');
				}
				if(pageCount > 1){
					if (typeof(heading.data("page"))=='undefined'){
						heading.data("page",1).data("pageCount",pageCount);
						heading.find('.page_num').html('1');
						heading.find('.page_count').html(pageCount);
						$("div img",heading).ifixpng();	
					} else {
						heading.data("page",1).data("pageCount",pageCount);
						heading.find('.page_num').html('1');
						$('.mediaDownloadStrip', photoDiv).css('left', '0');
						setStripWidth.call(photoDiv);
						$("img:first",heading).iunfixpng().each(function(){ this.src=this.src.replace("prev.png","prev-off.png"); }).ifixpng();
						$("img:last",heading).iunfixpng().each(function(){ this.src=this.src.replace("-off.png",".png"); }).ifixpng();
					}
					heading.show();
				}
			}
		}
		//Hide all data div's
		$('> div', tabControl.siblings('.dataTextDiv')).hide()
		$('> div', tabControl.siblings('.dataTextDiv').eq(0)).eq(tabNum-1).fadeIn("slow",callback);		
	}
	jQuery.cookie = function(cookiename,value,options){
		if(typeof value!='undefined'){
			options=options||{};
			if(value===null){
				value='';
				options.expires=-1;
			}
			var expires='';
			if(cookiename != "nklauth" && options.expires && (typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}
			expires='; expires='+date.toUTCString();}
			var path=options.path?'; path='+options.path:'; path=/';var domain=options.domain?'; domain='+options.domain:'';var secure=options.secure?'; secure':'';document.cookie=[cookiename,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,cookiename.length+1)==(cookiename+'=')){cookieValue=decodeURIComponent(cookie.substring(cookiename.length+1));break;}}}
			return cookieValue;}};

	jQuery.fn.preview = function(options) {
        var $$ = jQuery(this);
        options = jQuery.extend({
            offset: {
                x: 10,
                y: 15
            },
            attribute: "rel",
            type: "image",
            id: "previewPluginPreviewElement",
            trigger: "hover",
            style: "simple",
            closeText: "X",
            position: "offset"
        },
        options);
        $$.cloneableData("preview.options", options);
        if (options.trigger == "hover") {
            $$.hover(jQuery.fn.preview.hoverIn, jQuery.fn.preview.hoverOut).mousemove(jQuery.fn.preview.mousemove);
        }
        if (options.trigger == "toggle") {
            $$.toggle(jQuery.fn.preview.hoverIn, jQuery.fn.preview.hoverOut);
        }
        return this;
    };
    jQuery.fn.preview.hoverIn = function(e) {
        var options = jQuery(this).data("preview.options");
        var $$ = jQuery(this);
        var preview = [];
        this.title = (options && options.title) ? options.title: (this.title ? this.title: (this.alt ? this.alt: ""));
        preview.push("<div id=\"" + options.id + "\">");
        if (options.trigger == "toggle") {
            preview.push("<a class=\"closeButton\" href=\"javascript:void(null)\">" + options.closeText + "</a>");
        }
        switch (options.type) {
        case "image":
        case "img":
			if(options.attribute != 'href'){
            	var attr = $$.attr(options.attribute).split("|");
			} else {
				var attr = [jQuery(this).parent('a').attr('href')];
			}
            preview.push("<img src=\"" + attr[0] + "\"");
            if (attr.length > 2) {
                preview.push(" width=\"" + attr[1] + "\" height=\"" + attr[2] + "\"");
            }
            preview.push(">");
            break;
        case "html":
            preview.push(jQuery($$.attr(options.attribute)).html());
            break;
        }
        if (options.style == "slideshow") {
            preview.push("<div class=\"slideshow\">");
            if ($$.data("prev")) {
                preview.push("<img src=\"" + cmsContext + "/image/icons/page-prev.png\" alt=\"&lt;\" />");
            } else {
                preview.push("<img src=\"" + cmsContext + "/image/icons/page-prev-off.png\" alt=\"&lt;\" />");
            }
            if ($$.data("next")) {
                preview.push("<img src=\"" + cmsContext + "/image/icons/page-next.png\" alt=\"&gt;\" />");
            } else {
                preview.push("<img src=\"" + cmsContext + "/image/icons/page-next-off.png\" alt=\"&gt;\" />");
            }
            preview.push("</div>");
        }
        if (this.title.length > 0) {
            preview.push("<p>" + this.title + "</p>");
        }
        preview.push("</div>");
        jQuery("body").append(preview.join(""));
        var $p = jQuery("#" + options.id);
        if (options.trigger == "toggle") {
            $p.get(0).triggerElement = $$;
            $p.click(function() {
                this.triggerElement.click();
            });
        }
        if (options.style == "slideshow") {
            var slideshowImg = jQuery(".slideshow img");
            slideshowImg.each(function(index) {
                var t = jQuery(this);
                t.cloneableData("triggerElement", $$);
                if (jQuery.fn.ifixpng) {
                    t.ifixpng();
                }
                if (index === 0) {
                    t.click(function() {
                        jQuery(jQuery(this).data("triggerElement").click().data("prev")).click();
                        return false;
                    });
                }
                if (index === 1) {
                    t.click(function() {
                        jQuery(jQuery(this).data("triggerElement").click().data("next")).click();
                        return false;
                    });
                }
            });
        }
        if (options.callback) {
            options.callback.apply(this);
        }
        switch (options.position) {
        case "offset":
            $p.css({
                "left":
                (e.pageX + options.offset.x) + "px",
                "top": (e.pageY + options.offset.y) + "px"
            }).show();
            break;
        case "center":
            var top = jQuery(window).scrollTop() + ((jQuery(window).height() - jQuery("#" + options.id).height()) / 2);
            var left = jQuery(window).scrollLeft() + ((jQuery(window).width() - jQuery("#" + options.id).width()) / 2);
            $p.css({
                "left": left + "px",
                "top": top + "px"
            }).show();
            break;
        }
    };
    jQuery.fn.preview.hoverOut = function(e) {
        var options = jQuery(this).data("preview.options");
        jQuery("#" + options.id).hide().remove();
    };
    jQuery.fn.preview.mousemove = function(e) {
        var options = jQuery(this).data("preview.options");
        jQuery("#" + options.id).css({
            "left": (e.pageX + options.offset.x) + "px",
            "top": (e.pageY + options.offset.y) + "px"
        });
    };
	jQuery.fn.cloneableData = function(dataTerm, data) {
        var t = jQuery(this);
        switch (arguments.length) {
        case 2:
            if (!t.data("cloneableData")) {
                t.data("cloneableData", []);
            }
            var tData = t.data("cloneableData");
            tData.push(dataTerm);
            t.data(dataTerm, data);
            t.data("cloneableData", tData);
            break;
        case 1:
            dataTerm.data("events", t.data("events"));
            if (t.data("cloneableData")) {
                for (var cloneable in t.data("cloneableData")) {
                    if (t.data(cloneable)) {
                        dataTerm.cloneableData(cloneable, t.data(cloneable));
                    }
                }
            }
            break;
        }
        return t;
    };
	function setPreviewCaption() {
		var options = $(this).data("preview.options");
		$("p", "#"+options.id).fadeTo(10,0.5);
		jQuery('#previewPluginPreviewElement img').load(function(){
			var cont = $('#previewPluginPreviewElement');
			var mW = cont.width();
			var mH = cont.height();
			cont.css({'left': ($(window).width()-mW)/2+'px'});
		})
	}

	function setStripWidth() {
		var sectionLeft = $(this).offset().left;
		
		var mediaItems = $("img",this);
		var sectionWidth = 540;
		var pageCount = 1;
		for (var i = 0; i < mediaItems.size(); i++) {
			
			var media = mediaItems.eq(i);
			var offsetLeft = sectionLeft + (media.width()+parseInt(media.parent().parent().css('marginRight')) * i);
			if (media.offset().left >= 0) {
				
				$(this).children("div").css({width: (media.offset().left+media.width()+2-sectionLeft)+"px"});

				if (offsetLeft < sectionWidth) {
					$(this).css({"width":(offsetLeft+2-sectionLeft)+"px"});
					pageCount = Math.ceil(mediaItems.size() / (i+1));
				} else {
					break;
				}
			}
		}
		$(".mediaDownloadStrip",this).css({"width":(pageCount*sectionWidth)+"px"});
		return pageCount;
	}

	function slideStrip(direction) {
		var heading = $(this).parents('.mediaDownloadHeading');
		var page = heading.data("page");
		var pageCount = heading.data("pageCount");
		
		if ((page==1 && direction=="+=") || (page==pageCount && direction=="-=")){
			return false;
		}
			
		var div = heading.children("div");		

		$('.page_num', div).html((direction=="+="?page-1:page+1));
		$('.page_count', div).html(pageCount);
		
		$(".mediaDownloadStrip",heading.parent()).each(function () {
				var strip = $(this);
				strip.animate({left: direction+(strip.parent().width()+20)+"px"},400);
		});

		page = page + (direction=="+=" ? -1 : 1);
		heading.data("page",page);
		$("img",div).iunfixpng().each(function(){ this.src=this.src.replace("-off",""); }).ifixpng();
		if (page==pageCount) $("img:last",div).iunfixpng().each(function(){ this.src=this.src.replace(".png","-off.png"); }).ifixpng();
		if (page==1) $("img:first",div).iunfixpng().each(function(){ this.src=this.src.replace(".png","-off.png"); }).ifixpng();
	}
	
	$(function(){
		preload(preloadImages);
		$(".pre-owned ul.mediaDownloadStrip img").preload();
		
		$(".pre-owned .mediaDownloadSection").each(function(index) { $(this).data("index",index); });
		$('.pre-owned .tabControlDiv div:not(.tabDividerDiv)').mouseover(tabHoverOn).mouseout(tabHoverOff).click(tabClick);
		
		$('.pre-owned div.mediaDownloadSection img').each(function(){
			var parent = $(this).parents('div.mediaDownloadSection');
			var parentId = parent.attr('id');
			var allImages = parent.find('img');
			var myIdx = parseInt(allImages.index(this));
			
			$(this).data('idInt', myIdx+1).data('intMax', allImages.length);
			if(myIdx > 0){ $(this).data('prev', allImages.eq(myIdx-1)); }
			if(myIdx+1 < allImages.length){ $(this).data('next', allImages.eq(myIdx+1)); }
			
			allImages.preview( {
				trigger:"toggle",
				style:"slideshow",
				position:"center",
				autoPosition: true,
				type:"image",
				attribute:"href",
				offset:{
					x: -200,
					y: 15
				},
				callback:setPreviewCaption,
				ofWord:"/",
				nextLabel:"<",
				prevLabel:">"
			});
		})
		$('.pre-owned .go_prev').click(function(){ slideStrip.call(this, '+='); })
		$('.pre-owned .go_next').click(function(){ slideStrip.call(this, '-='); })
	});


jQuery.infiniti = {};
    jQuery.infiniti.promoPopup = function(options) {
        options = jQuery.extend({
            url: "",
            size: "fullscreen",
            height: "auto",
            width: "auto",
            top: "0",
            left: "0",
            name: "popup",
            cookie: null,
            autofocus: false,
            extra: ""
        },
        options);
        if (options.cookie !== null && options.cookie.length > 0 && jQuery.cookie && jQuery.cookie(options.cookie) !== null && (jQuery.cookie(options.cookie).length > 0 || jQuery.cookie("nopopups") == "true")) {
            return jQuery;
        }
        var size = "";
        switch (options.size) {
        case "fullscreen":
            size = "fullscreen,type=fullWindow";
            break;
        case "fixed":
        default:
            size = "width=" + options.width + ",height=" + options.height + ",top=" + options.top + ",left=" + options.left;
        }
		//check the cookie - if no cookie value is set, or if the value isn't correct show the popup
		var myName = options.name;
		var cookieVal = jQuery.cookie(myName);
		
		if(!cookieVal){
	        var win = window.open(options.url, options.name.replace(/\s*/ig, ""), size + (options.extra.length > 0 ? "," + options.extra: ""));
	        if (!win) {
	            win = window.open('', options.name.replace(/\s*/ig, ""), size + (options.extra.length > 0 ? "," + options.extra: ""));
	            if (win) {
	                win.location.href = options.url;
	            }
	        }
	        if (options.autofocus !== null && options.autofocus && win) {
	            win.focus();
	        }


			jQuery.cookie(myName, myName)
		};
		

        return jQuery;
    };


    jQuery.fn.flashEvent = function(options) {
        var $$ = jQuery(this);
        if (typeof(options) == 'function') {
            $$.bind("flashEvent", options);
        } else {
            $$.trigger("flashEvent", [options]);
        }
    };
	
	jQuery.fn.iefiximg = function(returnType) {
        jQuery(this).ifixpng();
    };
    jQuery.iefiximg = function(iteration) {
		jQuery("img").ifixpng();
    };


    var $preload = $.preload = function(original, settings) {
        if (typeof(original) == 'undefined') {
            return original;
        }
        settings = $.extend({},
        $preload.defaults, settings);
        var sources = $.map(original,
        function(source) {
            if (!source) {
                return;
            }
            if (source.split)
            {
                return settings.base + source + settings.ext;
            }
            var url = source.src || source.href;
            if (typeof settings.placeholder == 'string' && source.src)
            {
                source.src = settings.placeholder;
            }
            if (settings.rel)
            {
                url = source.rel;
            }
			if (settings.href){
				url = $(source).parents('a').attr('href');
			}
            if (url && settings.find)
            {
                url = url.replace(settings.find, settings.replace);
            }
            return url || null;
        });
        var data = {
            loaded: 0,
            failed: 0,
            next: 0,
            done: 0,
            total: sources.length
        };
        if (!data.total) {
            return finish();
        }
        var imgs = '<img/>',
        thres = settings.threshold;
        while (--thres > 0) {
            imgs += '<img/>';
        }
        imgs = $(imgs).load(handler).error(handler).bind('abort', handler).each(fetch);
        function handler(e) {
            data.found = e.type == 'load';
            data.image = this.src;
            var orig = data.original = original[this.index];
            data[data.found ? 'loaded': 'failed']++;
            data.done++;
            if (settings.placeholder && orig.src) {
                orig.src = data.found ? data.image: settings.notFound || orig.src;
            }
            if (settings.onComplete) {
                settings.onComplete(data);
            }
            if (data.done < data.total) {
                fetch(0, this);
            } else {
                if (imgs.unbind) {
                    imgs.unbind('load').unbind('error').unbind('abort');
                }
                imgs = null;
                finish();
            }
        }
        function fetch(i, img, retry) {
            if ($.browser.msie && data.next && data.next % $preload.gap === 0 && !retry) {
                setTimeout(function() {
                    fetch(i, img, true);
                },
                0);
                return false;
            }
            if (data.next == data.total) {
                return false;
            }
            img.index = data.next;
            img.src = sources[data.next++];
            if (settings.onRequest) {
                data.image = img.src;
                data.original = original[data.next - 1];
                settings.onRequest(data);
            }
            return false;
        }
        function finish() {
            if (settings.onFinish) {
                settings.onFinish(data);
            }
        }
    };
    $preload.gap = 14;
    $preload.defaults = {
        threshold: 2,
        base: '',
        ext: '',
        replace: ''
    };
    $.fn.preload = function(settings) {
        $preload(this, settings);
        return this;
    };

    jQuery.ifixpng = function(customPixel) {
        jQuery.ifixpng.pixel = customPixel;
    };
    jQuery.ifixpng.getPixel = function() {
        return jQuery.ifixpng.pixel || (typeof(cmsContext) != "undefined" ? cmsContext: cmsContext = "") + '/image/global/spacer.gif';
    };
    var hack = {
        ltie7: jQuery.browser.msie && (/MSIE\s(5\.5|6\.)/).test(navigator.userAgent),
        filter: function(src, method) {
            return "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod='" + method + "',src='" + src + "')";
        }
    };
    jQuery.fn.ifixpng = hack.ltie7 ?
    function() {
        return this.each(function() {
            var $$ = jQuery(this);
            var base = jQuery('base').attr('href');
            if ($$.is('img') || $$.is('input')) {
                if ($$.attr('src')) {
                    if ($$.attr('src').match(/.*\.png([?].*)?$/i)) {
                        var source = (base && $$.attr('src').substring(0, 1) != '/') ? base + $$.attr('src') : $$.attr('src');
                        var w = $$.width();
                        var h = $$.height();
                        if (w === 0) {
                            w = $$.attr("width");
                        }
                        if (h === 0) {
                            h = $$.attr("height");
                        }
                        if (w === 0) {
                            w = "auto";
                        }
                        if (h === 0) {
                            h = "auto";
                        }
                        $$.css({
                            filter: hack.filter(source, "image"),
                            width: w,
                            height: h
                        }).attr({
                            src: jQuery.ifixpng.getPixel()
                        }).positionFix();
                    }
                }
            } else {
                var image = $$.css('backgroundImage');
                if (image.match(/^url\(["']?(.*\.png([?].*)?)["']?\)$/i)) {
                    image = RegExp.$1;
                    $$.css({
                        backgroundImage: 'none',
                        filter: hack.filter(image, "scale")
                    }).children().positionFix();
                }
            }
        });
    }: function() {
        return this;
    };
    jQuery.fn.iunfixpng = hack.ltie7 ?
    function() {
        return this.each(function() {
            var $$ = jQuery(this);
            var src = $$.css('filter');
            if (src.match(/src=["']?(.*\.png([?].*)?)["']?/i)) {
                src = RegExp.$1;
                if ($$.is('img') || $$.is('input')) {
                    $$.attr({
                        src: src
                    }).css({
                        filter: ''
                    });
                } else {
                    $$.css({
                        filter: '',
                        background: 'url(' + src + ')'
                    });
                }
            }
        });
    }: function() {
        return this;
    };
    jQuery.fn.positionFix = function() {
        return this.each(function() {
            var $$ = jQuery(this);
            var position = $$.css('position');
            if (position != 'absolute' && position != 'relative') {
                $$.css({
                    position: 'relative'
                });
            }
        });
    };
	jQuery.infiniti.sendToAFriend = function(formpage) {
		//CR42318 start
    	tt_copybarepageName = "";
		tt_copychannel = "";
		if(tt.barepageName && tt_copybarepageName.length == 0){
			tt_copybarepageName = tt.barepageName;
		} else {
			tt_copybarepageName = '';
		}

		if(tt.siteSection){
			tt_copychannel = tt.siteSection;
		} else {
			tt_copychannel = '';
		}
		//CR42318 end
			jQuery('#stafContent').empty().remove();
			jQuery("body").append("<a href='#' id='stafPopup'></a><div id='stafContent'><div id='stafContentCopy' class='copy'></div></div>");

            jQuery.infiniti.followCursor(cmsContext + "/image/global/spinner04.gif");
            
			jQuery(function() {
				jQuery('#stafPopup').click(function (e) {
					e.preventDefault();
					jQuery('#stafContent').modal({
						closeHTML: "<a href='#' title='Close' class='modal_close' id='closeStaf'><img src='/image/icons/close-x-white.gif' alt='' /></a>", 
						position: ["15%",]
					});
				});
			});
			jQuery("#stafPopup").click();
			jQuery.ajax({
                url: formpage,
                dataType: 'html',
                success: function(responseText, responseCode) {
                    jQuery("#stafContent").append(responseText);
                    jQuery.infiniti.followCursor.stop();
                },
                type: "GET"
            });

			jQuery("#stafPopup").remove();
        
    };
    jQuery.infiniti.followCursor = function(img) {
        var ix = jQuery("body").append("<img class=\"followCursor\" src=\"" + img + "\"/>").find(".followCursor:last");
        ix.css({
            position: "absolute",
            top: "0px",
            left: "0px",
            "z-index": 10000
        });
        jQuery("body").mousemove(mousemove);
        function mousemove(e) {
            if (ix) {
                ix.css({
                    top: (e.pageY + 10) + "px",
                    left: (e.pageX + 10) + "px"
                });
            }
        }
        jQuery.infiniti.followCursor.stop = function() {
            jQuery("body").unbind("mousemove", mousemove);
            jQuery(ix).remove();
        };
    };
})(jQuery);

jQuery(function(){
	jQuery('img').ifixpng();
})
