var carslides = [];

function buildCarrotator(slideshow, options, carslide, cs_class) {
    // Read and set presets
    var presets = {};
    presets.animations = [];
    //console.log(slideshow);
    var preset = slideshow.presets.split("&");
    for (var i = 0; i < preset.length; i++) {
        var presetitms = preset[i].split("=");
        var thispreset = presets[presetitms[0]] = {};
        if (presetitms[0].substring(0, 1) == "a") {
            presets.animations.push({});
            thispreset = presets.animations[presets.animations.length - 1];
        }
        var presetvalues = presetitms[1].split(",");
        for (var ii = 0; ii < presetvalues.length; ii++) {
            if (presetitms[0].substring(0, 1) == "a") {
                //a9=Fade,bg,start,0,0,2000,0,100,easeOut,c&
                switch (ii) {
                    case 0: thispreset.action = presetvalues[ii];
                    case 1: thispreset.target = presetvalues[ii];
                    case 2: thispreset.start = presetvalues[ii];
                    case 3: thispreset.startdelay = presetvalues[ii];
                    case 4: thispreset.delay = presetvalues[ii];
                    case 5: thispreset.duration = presetvalues[ii];
                    case 6: thispreset.from = presetvalues[ii] / 100;
                    case 7: thispreset.to = presetvalues[ii] / 100;
                    case 8: thispreset.ease = presetvalues[ii];
                    case 9: thispreset.pos = presetvalues[ii];
                }
            } else {
                var splitvalues = presetvalues[ii].split(":");
                thispreset[splitvalues[0]] = splitvalues[1];
            }
        }
    }

    var textstyle = "";
    var addClip = false;
    if (options.width == 0) {
        options.width = $(carslide).width();
    }
    if (options.height == 0) {
        options.height = $(carslide).height();
    }
    options.innerheight = $(carslide).height();
    var flashsize = options;
    var flashmasksize = {};
    //presets.b = { "r": 10, "w": 10, "c": "000000" };
    if (presets.b) {
        textstyle += ".slideshowitem .slideshowborder{"
                            + "border:" + presets.b.w + "px solid #" + presets.b.c + ";"
                            + "width:" + (flashsize.width - presets.b.w * 2) + "px;"
                            + "height:" + (flashsize.height - presets.b.w * 2) + "px;"
                            + "-moz-border-radius: " + presets.b.r + "px; border-radius: " + presets.b.r + "px;"
                            + "}"
        presets.t.tbm = parseFloat(presets.t.tbm) + parseFloat(presets.b.w);
        flashmasksize.left = presets.b.w;
        flashmasksize.top = presets.b.w;
        flashmasksize.right = flashsize.width - presets.b.w;
        flashmasksize.bottom = flashsize.height - presets.b.w;

        flashsize.innerheight = flashsize.height - (presets.t.tbm * 2);
        addClip = true;
    }

    //var boxheight = ((presets.t.tbhpx / 100) * (flashsize.innerheight));

    /*
    s_img: 'w:160,h:,padleft:0,padright:0,padtop:0,padbottom:0,bg:'+bgcolor+',fadein:1,desaturate:0,hovercolor:1',
    s_box: 'h:120,bg:'+bgcolor+'',
    s_anim: 'delay:2000',
    s_txt: 'color:'+textcolor+',alpha:0,alphahover:100',
    s_txt0: 'color:'+textcolor+',bold:1,txt:fabrikat',
    s_txt1: 'color:'+textcolor+',bold:0,pretxt:Km.:,txt:km',
    s_txt2: 'color:'+textcolor+',bold:0,pretxt:År:,txt:aar',
    s_txt3: 'color:'+textcolor+',bold:0,pretxt:Kr.:,txt:pris',
    s_txtbox: 'color:'+bgcolor+',left:0,top:0,type:0,pad:5,alpha:60,fullheight:1',
    s_dots: 'color:'+bgcolor+',coloractive:'+bgcolor+',y:240,alpha:100,alphaactive:100',
    s_arrowbox: 'w:20,color:000000,alpha:0,coloractive:000000,alphaactive:30,colorhover:000000,alphahover:50',
    s_arrows: 'w:10,color:ffffff,alpha:0,coloractive:ffffff,alphaactive:100,colorhover:ffffff,alphahover:100'
    */
    var arrowstyle = {};
    arrowstyle.bg = "000";
    arrowstyle.arrow = "carrotator_arrows.png";
    if (options.s_box.bg == "ffffff") {
        arrowstyle.bg = "fff";
        arrowstyle.arrow = "carrotator_arrows_black.png";
    }
    textstyle += "" + cs_class + ""
                        + "{"
                            + "position: relative;"
                            + "height: " + options.s_box.h + "px;"
                            + "width: " + options.s_box.w + "px;"
                            + "overflow: hidden;"
                            + "white-space: nowrap;"
                        + "}"
                        + "" + cs_class + " .cs_container"
                        + "{"
                            + "position: relative;"
                            + "height: " + options.s_box.h + "px;"
                            + "width: " + options.s_img.w + "px;"
                            + "float: left;"
                            + "background-color: #" + options.s_box.bg + ";"
                        + "}"
                        + "" + cs_class + " .cs_arrow_left, " + cs_class + " .cs_arrow_right"
                        + "{"
                            + "position: absolute;"
                            + "top: 0px;"
                            + "left: 0px;"
                            + "width: 20px;"
                            + "height: " + options.s_box.h + "px;"
                            + "background-color: #" + arrowstyle.bg + ";"
                            + "z-index: 300;"
                            + "cursor: pointer;"
                            + "background-image: url(/graphics/shared/" + arrowstyle.arrow + ");"
                            + "background-position: left center;"
                            + "background-repeat: no-repeat;"
                        + "}"
                        + "" + cs_class + " .cs_arrow_right"
                        + "{"
                            + "left: auto;"
                            + "right: 0px;"
                            + "background-position: right center;"
                        + "}"
                        + "" + cs_class + " .cs_container .cs_image"
                        + "{"
                            + "position: absolute;"
                            + "width: " + options.s_img.w + "px;"
                            + "background-color: #" + options.s_img.bg + ";"
                        + "}"
                        + "" + cs_class + " .cs_container .cs_txtcontainer"
                        + "{"
                            + "position: absolute;"
                            + "display: block;"
                            + "left: 0px;"
                            + "" + ((options.s_txtbox.fullheight == 1) ? "bottom:0px" : ((!isNaN(options.s_txtbox.top)) ? "top:" + options.s_txtbox.top + "px" : "bottom:" + options.s_txtbox.bottom + "px")) + ";"
                            + "width: 100%;"
                            + "height: " + ((options.s_txtbox.fullheight == 1) ? "100%" : "" + options.s_txtbox.h + "px") + ";"
                            + "z-index: 100;"
                        + "}"
                        + "" + cs_class + " .cs_container .cs_txtcontainer .cs_txtbg"
                        + "{"
                            + "position: absolute;"
                            + "left: 0px;"
                            + "top: 0px;"
                            + "width: 100%;"
                            + "height: 100%;"
    if (!($.browser.msie && $.browser.version.substr(0, 1) <= 8)) {
        textstyle += '-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=' + options.s_txtbox.alpha + ')";'
                            + 'filter: alpha(opacity=' + options.s_txtbox.alpha + ');'
                            + 'opacity:' + (options.s_txtbox.alpha / 100) + ';'
    }
    textstyle += 'background-color: #' + options.s_txtbox.color + ';'
                            + "z-index: 110;"
                        + "}"
                        + "" + cs_class + " .cs_container .cs_txtcontainer .cs_txt"
                        + "{"
                            + "position: relative;"
                            + "left: 10px;"
                            + "top: 10px;"
                            + 'color: #' + options.s_txt0.color + ';'
                            + "width: " + (options.s_img.w - (10 * 2)) + "px !important;"
                            + "white-space: normal;"
                            + "z-index: 520;"
                        + "}"
                        + "" + cs_class + " .cs_maincontainer"
                        + "{"
                            + 'position: relative;'
                            + 'width: ' + (slideshow.images.length * options.s_img.w) + 'px;'
                            + "height: " + options.s_box.h + "px;"
                        + "}"


    $(carslide).append('<div class="cs_arrow_left"></div>');
    $(carslide).append('<div class="cs_arrow_right"></div>');
    $(carslide).append('<div class="cs_maincontainer"></div>');
    $("body").append("<style>" + textstyle + "</style>");
    for (var i = 0; i < slideshow.images.length; i++) {
        if (slideshow.images[i].price <= 100) {
            price = "Ring for pris"
        } else {
            price = Math.round(slideshow.images[i].price).formatMoney(0, ',', '.')
        }
        var txtbox = ''
                                + '<div class="cs_txt"><div class="cs_header">' + slideshow.images[i].make + '</div>'
                                + '<div class="cs_txt1">Km.: ' + (slideshow.images[i].km * 1000).formatMoney(0, ',', '.') + '</div>'
                                + '<div class="cs_txt2">År: ' + slideshow.images[i].year + '</div>'
                                + '<div class="cs_txt3">Kr.: ' + price + '</div>'
                                + '</div><div class="cs_txtbg">&nbsp;</div>'
        $(".cs_maincontainer", carslide).append('<div class="cs_container" ' + ((slideshow.images[i].link) != "" ? "onclick='document.location=\"" + slideshow.images[i].link + "\";' style='cursor:pointer;'" : "") + '><div class="cs_txtcontainer">' + txtbox + '</div><img src="' + slideshow.images[i].image + '?width=' + options.s_img.w + '" onerror="removeCSThumb(this);" class="cs_image"/></div>');
        //alert(options.width);
        //alert($(".slideshowitem",flashbanner).width());
    }
    //

    var showArrows = function () {
        if ($.browser.msie && $.browser.version.substr(0, 1) <= 8) {
            $('.cs_arrow_left', carslide).show();
            $('.cs_arrow_right', carslide).show();
        } else {
            $('.cs_arrow_left', carslide).fadeTo(500, 0.5);
            $('.cs_arrow_right', carslide).fadeTo(500, 0.5);
        }
    }
    var hideArrows = function () {
        if ($.browser.msie && $.browser.version.substr(0, 1) <= 8) {
            $('.cs_arrow_left', carslide).hide();
            $('.cs_arrow_right', carslide).hide();
        } else {
            $('.cs_arrow_left', carslide).fadeTo(50, 0);
            $('.cs_arrow_right', carslide).fadeTo(50, 0);
        }
    }

    hideArrows();
    if ((options.s_txt.alpha / 100) < 1) {
        if ($.browser.msie && $.browser.version.substr(0, 1) <= 8) {
            /*if((options.s_txt.alpha / 100) == 0){
            $('.cs_txtcontainer', carslide).hide();
            }*/
            $(".cs_txtcontainer").css({ opacity: (options.s_txt.alpha / 100) });
        } else {
            $('.cs_txtcontainer', carslide).fadeTo(1, (options.s_txt.alpha / 100));
        }
    }
    $(carslide).bind('mouseenter', function () { hovering = true; stopSlide(); showArrows(); });
    $(carslide).bind('mouseleave', function () { hovering = false; setTimeout(startSlide, 1000); hideArrows(); });

    $(".cs_arrow_left", carslide).bind('click', function () { slideMotion(-1); });
    $(".cs_arrow_right", carslide).bind('click', function () { slideMotion(1); });

    $(".cs_container", carslide).mouseenter(function () {
        if ($.browser.msie && $.browser.version.substr(0, 1) <= 8) {
            $('.cs_txtcontainer', this).css('filter', 'alpha(opacity=' + options.s_txt.alphahover + ')');
            //$(".cs_txtcontainer").css({ opacity: (options.s_txt.alphahover / 100)});
            //$(".cs_txtcontainer", this).show();
        } else {
            $(".cs_txtcontainer", this).fadeTo('fast', (options.s_txt.alphahover / 100));
        }
    });
    $(".cs_container", carslide).mouseleave(function () {
        if ($.browser.msie && $.browser.version.substr(0, 1) <= 8) {
            $('.cs_txtcontainer', this).css('filter', 'alpha(opacity=' + options.s_txt.alpha + ')');
            //$(".cs_txtcontainer").css({ opacity: (options.s_txt.alpha / 100) });
            /*if((options.s_txt.alpha / 100) == 0){
            $(".cs_txtcontainer", this).hide();
            }*/
        } else {
            $(".cs_txtcontainer", this).fadeTo('fast', (options.s_txt.alpha / 100));
        }
    });

    //$(".cs_txtcontainer").hide();
    //presets.s.ms = 6000;
    var leftpos = 0;
    var cs_maincontainer_width = $(".cs_maincontainer", carslide).width();
    var carslide_width = $(carslide).width();
    var zindex = 1;
    var hovering = false;
    //s=ms:7000,pc:666666,tt:txt1&
    //b=r:0,w:0,c:000000&
    //r=h:200,a:60,b:0,y:0&
    //t=hls:20,hlc:ffffff,ts:14,tc:cccccc,tbbc:000000,tbp:5,tbm:5,tba:80,tbalign:br,tbw:px,tbwpx:300,tbh:px,tbhpx:70&
    //a9=Fade,bg,start,0,0,2000,0,100,easeOut,c&
    //a10=Fade,textbox,start,1000,0,1000,0,100,easeOut,c&
    //a11=Fade,textbox,end,1000,0,1000,100,0,easeOut,c

    /*
    case 0: thispreset.action = presetvalues[ii];
    case 1: thispreset.target = presetvalues[ii];
    case 2: thispreset.start = presetvalues[ii];
    case 3: thispreset.startdelay = presetvalues[ii];
    case 4: thispreset.delay = presetvalues[ii];
    case 5: thispreset.duration = presetvalues[ii];
    case 6: thispreset.from = presetvalues[ii];
    case 7: thispreset.to = presetvalues[ii];
    case 8: thispreset.ease = presetvalues[ii];
    case 9: thispreset.pos = presetvalues[ii];
    */


    var startSlide = function () {
        rollCars();
        rollCarsInterval = window.clearInterval(rollCarsInterval);
        rollCarsInterval = window.setInterval(rollCars, options.s_anim.delay);
    }
    var stopSlide = function () {
        rollCarsInterval = window.clearInterval(rollCarsInterval);
    }
    var slideMotion = function (steps) {
        leftpos -= options.s_img.w * steps;
        if (leftpos < -(cs_maincontainer_width - carslide_width))
            leftpos = 0;
        if (leftpos > 0)
            leftpos = -(cs_maincontainer_width - carslide_width);
        //console.log("rollcars",leftpos);
        $(".cs_maincontainer", carslide).animate({ left: leftpos })
    }
    var rollCars = function () {
        //console.log("rollcars",leftpos);
        if (!hovering) {
            slideMotion(1);
        }
    }

    var rollCarsInterval;
    hideArrows();
    startSlide();
}

(function ($) {
    $.fn.carrotator = function (options) {
        var obj_options = {};
        for (var itm in options) {
            var optionsline = options[itm].split(',').join('","').split(':').join('":"').split('""').join('":"');
            obj_options[itm] = eval('({"' + optionsline + '"})');
        }
        var defaults = {
            width: 0,
            height: 0
        };
        var options = $.extend(defaults, obj_options);
        
        return this.each(function () {
            
            var carslide = $(this);
            $(carslide).addClass("flash-replaced");
            var cs_class = "#"+$(carslide).attr("id");
            //alert(cs_class);
            //var body = flashbanner.html();
            var carrotNodeId = options.s_anim.id;
            $.ajax({
                url: '/xml/carrotator.ashx',
                dataType: 'xml',
                success: function (data) {
                    var presets = data.getElementsByTagName("settings");
                    var slideshow = {};
                    if (presets.length > 0) {
                        slideshow.presets = presets[0].childNodes[0].nodeValue;
                        //alert(slideshow.presets);
                    }
                    slideshow.images = [];
                    var items = data.getElementsByTagName("vehicle");
                    for (var i = 0; i < items.length; i++) {
                        var id = items[i].getAttribute("id");
                        var make = items[i].getAttribute("make");
                        var km = items[i].getAttribute("km");
                        var pricetype = items[i].getAttribute("pricetype");
                        var price = items[i].getAttribute("price");
                        var year = items[i].getAttribute("year");
                        var image = items[i].getAttribute("image");
                        var link = items[i].getAttribute("link");
                        slideshow.images.push({ id: id, make: make, km: km, pricetype: pricetype, price: price, year: year, image: image, link: link });
                    }
                    buildCarrotator(slideshow, options, carslide, cs_class);
                },
                data: { 'id': carrotNodeId }
            });
            
            /*$(function () {
            $("#flashbanner").reflect({ height: 0.3, opacity: 0.4 });
            });*/
            
        });
    };
})(jQuery);

Number.prototype.formatMoney = function(c, d, t){
var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
   return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
 };
 
function removeCSThumb(img){
    $(img).hide();
}
