/**
* swapImage - jQuery plugin for swapping image
*
* Copyright (c) 2008 tszming (tszming@gmail.com)
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
var lastImage;
(function(j$) {
    j$.swapImage = function(i, preload, repeat, swapInEvent) {
        j$.swapImage.files = {};
        j$.swapImage.data = {};
        j$.swapImage.init = function() {
            var id = j$.data(this);
            var data = j$(this).metadata();
            j$.swapImage.data[id] = j$.swapImage.data[id] || {};
            if (typeof data.src != "undefined") {
                j$.swapImage.data[id]["src"] = data.src;
                j$.swapImage.files[data.src] = false
            }
            j$.each
            (
                j$.grep([[data.sin, "sin"]], function(n) {
                    return (typeof n[0] != "undefined" && n[0].length > 0)
                }
                ),
                function() {
                    var arr = this[0];
                    var vname = this[1];
                    for (var i = 0; i < arr.length; i++) {
                        var idx = data[vname][i].indexOf("|");
                        var selection = data[vname][i].substring(0, idx);
                        var remainingselection = data[vname][i].substring(idx + 1);
                        var idx1 = remainingselection.indexOf("|");
                        var file, selectionalt;
                        if (idx1 == -1) {
                            file = remainingselection.substring(0);
                            selectionalt = '';
                        }
                        else {
                            file = remainingselection.substring(0, idx1)
                            selectionalt = remainingselection.substring(idx1 + 1);
                        }
                        j$.swapImage.data[id][vname] = j$.swapImage.data[id][vname] || [];
                        if (idx > 1) {
                            j$.swapImage.data[id][vname].push([selection, file, selectionalt]);
                            j$.swapImage.files[file] = false
                        }
                        else {
                            j$.swapImage.data[id][vname].push([file])
                        }
                    }
                }
            )
        };
        j$.swapImage.preload = function() {
            j$.each(j$.swapImage.files, function(k, v) {
                if (v == false) {
                    j$.swapImage.files[k] = true;
                    var img = new Image();
                    img.src = k;
                }
            }
            )
        };
        j$.swapImage.swapIn = function() {
            j$.swapImage.swap(this, "sin")
        };
        StartFade1 = function(varMain, varSrc, varAlt) {
            varMain.attr("src", varSrc)
            if (varAlt != '') {
                varMain.attr("alt", varAlt)
                varMain.attr("title", varAlt)
            }
        }
        StartFade = function(varMain, varSrc, varAlt) {
            varMain.stop();

            varMain.fadeTo(500, 0, function() {
                StartFade1(varMain, varSrc, varAlt);
            });
            varMain.fadeTo(500, 1, function() {
                StartFade1(varMain, varSrc, varAlt);
            });
        };
        j$.swapImage.swap = function(obj, a) {
            var id = j$.data(obj);
            if (typeof j$.swapImage.data[id][a] != "undefined") {
                for (var i = 0; i < j$.swapImage.data[id][a].length; i++) {
                    if (j$.swapImage.data[id][a][i].length > 1) {
                        if (lastImage != j$.swapImage.data[id][a][i][1]) {
                            lastImage = j$.swapImage.data[id][a][i][1];
                            j$(j$.swapImage.data[id][a][i][0]).stop();
                            StartFade(j$(j$.swapImage.data[id][a][i][0]), j$.swapImage.data[id][a][i][1], j$.swapImage.data[id][a][i][2]);
                            j$(j$.swapImage.data[id][a][i][0]).blur();
                            return false;
                        }
                    }
                    else {
                        j$(j$.swapImage.data[id][a][i][0]).each(j$.swapImage._swap)
                    }
                }
            }
            else {
                j$.swapImage._swap.call(obj)
            }
        };
        j$.swapImage._swap = function(obj) {
            var id = j$.data(this);
            var data = j$.swapImage.data[id];
            if (typeof data.src != "undefined") {
                var tmp = data.src;
                data.src = this.src;
                this.src = tmp
            }
        };
        j$(document).ready(function() {
            if (typeof repeat == "undefined") {
                repeat = true
            }
            if (typeof preload == "undefined") {
                preload = true
            }
            j$(i).each(j$.swapImage.init);
            if (typeof swapInEvent == "undefined" && typeof swapInEvent == "undefined") {
                swapInEvent = "mouseenter";
            }
            if (repeat) {
                j$(i).bind(swapInEvent, j$.swapImage.swapIn)
            }
            else {
                j$(i).one(swapInEvent, j$.swapImage.swapIn)
            }
            if (preload) {
                j$(i).each(j$.swapImage.preload)
            }
        }
        )
    }
}
)(jQuery);