﻿function preloadImage(url, load, error) {
    var img = new Image();
    img.src = url;
    if(load) $(img).load(load);
    if(error) $(img).error(error);
}

function preloadAndInitializeCycle(selector, opt) {

    // This object will fire off the callback function
    // when Starter::mark() is called @required times or when
    // @maxTimeout milliseconds have passed, whichever
    // happens first. Callback is only invoked once.
    var Starter = function(required, maxTimeout, callback)
    {
        var invokeCallback = function()
        {
            if(!this._started && callback) {
                this._started = true;
                callback();
            }
        }
        
        this.mark = function() {
            this._marks++;
            if(this._marks >= this._required) {
                invokeCallback();
            }
        }
        
        this._started = false;
        this._required = required;
        this._callback = callback;
        this._marks = 0;
        if(this._required == 0)
        {
            invokeCallback();
        }
        
        setTimeout(invokeCallback, maxTimeout);
    }
    
    // Default Options
    var options = {
        fx: 'fade',
        speed: 900,
        timeout: 9000,
        next: '#banner_next',
        prev: '#banner_prev',
        pager: '#banner_navigation_pager',
        before: function (curr, next, options) {
            $('#banner_slides').removeClass('loading_black');
            $('#banner_title').html('');
        },
        after: function () {
            //$('#banner_title').html($(this).attr('title'));
            var idx = $('#banner_slides .slide').index(this);
            $('#banner_title').html($('#banner_navigation_pager a:eq(' + idx + ') span').html());
            $('#banner_slides').addClass('loading_black');
        },
        pagerAnchorBuilder: function(idx, slide) {
            return '#banner_navigation_pager a:eq(' + idx + ')';
        },
        
        // Not jQuery.Cycle parameters:
        preload: 4,                             // Number to attempt to preload before cycling.
        maxTimeout:3000,                        // Maximum preload time(ms) before cycling.
        attrname: 'rmibkgimg',                  // Attribute of the DOM element that contains the image url to be loaded.
        slideSelector: '#banner_slides .slide'  // jQuery selector for the slides.
    };
    
    $.extend(options, opt);
    
    

    // Retrieve all slides as an array of DOM elements.
    var slides = $(options.slideSelector).get();
    
    // Initialize Starter object.
    var starter = new Starter(options.preload, options.maxTimeout, function () {
        // Callback sets the background images 
        // for all slides and begins cycling.
        $.each(slides, function() {
            var obj = $(this);
            obj.css('backgroundImage','url(' + obj.attr(options.attrname) + ')');
        });
        
        $(selector).cycle(options);
    });
    
    // Try to preload starting from 0. If # of preloads exceeds number of
    // slides, preload all slides.
    var end = slides.length < options.preload ? slides.length : options.preload;
    
    var markIt = function() {
        starter.mark();  
    };
    
    for(var i = 0; i < end; ++i) {
        var obj = $(slides[i]);
        preloadImage(obj.attr(options.attrname), markIt, markIt);
    }
}

var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])

function fixPNG(myImage) 
{
    if ((version >= 5.5) && (version < 7) && (document.body.filters)) 
    {
       var imgID = (myImage.id) ? "id='" + myImage.id + "' " : ""
	   var imgClass = (myImage.className) ? "class='" + myImage.className + "' " : ""
	   var imgTitle = (myImage.title) ? 
		             "title='" + myImage.title  + "' " : "title='" + myImage.alt + "' "
	   var imgStyle = "display:inline-block;" + myImage.style.cssText
	   var strNewHTML = "<span " + imgID + imgClass + imgTitle
                  + " style=\"" + "width:" + myImage.width 
                  + "px; height:" + myImage.height 
                  + "px;" + imgStyle + ";"
                  + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
                  + "(src=\'" + myImage.src + "\', sizingMethod='scale');\"></span>"
	   myImage.outerHTML = strNewHTML	  
    }
}