/**
 * add jquery background-Position animation by @author Alexander Farkas
 * v. 1.22
 */

 (function($) {
    if (!document.defaultView || !document.defaultView.getComputedStyle) {
        // IE6-IE8
        var oldCurCSS = $.curCSS;
        $.curCSS = function(elem, name, force) {
            if (name === 'background-position') {
                name = 'backgroundPosition';
            }
            if (name !== 'backgroundPosition' || !elem.currentStyle || elem.currentStyle[name]) {
                return oldCurCSS.apply(this, arguments);
            }
            var style = elem.style;
            if (!force && style && style[name]) {
                return style[name];
            }
            return oldCurCSS(elem, 'backgroundPositionX', force) + ' ' + oldCurCSS(elem, 'backgroundPositionY', force);
        };
    }

    var oldAnim = $.fn.animate;
    $.fn.animate = function(prop) {
        if ('background-position' in prop) {
            prop.backgroundPosition = prop['background-position'];
            delete prop['background-position'];
        }
        if ('backgroundPosition' in prop) {
            prop.backgroundPosition = '(' + prop.backgroundPosition;
        }
        return oldAnim.apply(this, arguments);
    };

    function toArray(strg) {
        strg = strg.replace(/left|top/g, '0px');
        strg = strg.replace(/right|bottom/g, '100%');
        strg = strg.replace(/([0-9\.]+)(\s|\)|$)/g, "$1px$2");
        var res = strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);
        return [parseFloat(res[1], 10), res[2], parseFloat(res[3], 10), res[4]];
    }

    $.fx.step.backgroundPosition = function(fx) {
        if (!fx.bgPosReady) {
            var start = $.curCSS(fx.elem, 'backgroundPosition');
            if (!start) {
                //FF2 no inline-style fallback
                start = '0px 0px';
            }

            start = toArray(start);
            fx.start = [start[0], start[2]];
            var end = toArray(fx.end);
            fx.end = [end[0], end[2]];

            fx.unit = [end[1], end[3]];
            fx.bgPosReady = true;
        }
        //return;
        var nowPosX = [];
        nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
        nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];
        fx.elem.style.backgroundPosition = nowPosX[0] + ' ' + nowPosX[1];

    };
})(jQuery);

function changeImageCSS(objName, imageName, toolTip, visible)
 {
    if (document.images)
    {
        if (document.getElementById(objName))
        {
            document.getElementById(objName).style.background = "url(" + imageName + ") no-repeat";
            document.getElementById(toolTip).style.visibility = visible;
        }
    }
}

function changeImage(objName, imageName)
 {
    if (document.images)
    {
        if (document.getElementById(objName))
        {
            document.getElementById(objName).src = imageName;
        }
    }
}

var PreloadFlag = false;

function newImage(arg)
 {
    if (document.images)
    {
        rslt = new Image();
        rslt.src = arg;
        return rslt;
    }
}

function PreloadImages()
 {
    if (document.images)
    {
        // preload all rollover images
        img1 = newImage('images/h_icon_home.png');
        img2 = newImage('images/h_icon_about.png');
        img3 = newImage('images/h_icon_projects.png');
        img4 = newImage('images/h_icon_music.png');
        img5 = newImage('images/h_icon_arts.png');
        PreloadFlag = true;
    }
    return true;
}

// jquery parallax loop animation
jQuery.fn.parallax = function(settings) {
    var element = jQuery(this);
    var options = jQuery.extend({
        time: 1000,
        easing: 'linear',
    },
    settings);

    function loop() {
        element.animate(options.start, options.time, options.easing,
        function() {
            element.css(options.end);
            loop();
        })
    }
    loop();
}

$(document).ready(function() {
    // jquery animation fallback
    if (!Modernizr.cssanimations) {
        $('#soil').parallax({
            time: 40000,
            start: {
                backgroundPosition: '1760px 214px'
            },
            end: {
                'background-position': '214 135px'
            }
        });
        $('#trees1').parallax({
            time: 30000,
            start: {
                backgroundPosition: '1647px 135px'
            },
            end: {
                'background-position': '0 135px'
            }
        });
        $('#trees2').parallax({
            time: 28000,
            start: {
                backgroundPosition: '1647px 135px'
            },
            end: {
                'background-position': '0 135px'
            }
        });
        $('#mountains1').parallax({
            time: 20000,
            start: {
                backgroundPosition: '850px 100px'
            },
            end: {
                'background-position': '0 100px'
            }
        });
        $('#mountains2').parallax({
            time: 23000,
            start: {
                backgroundPosition: '850px 100px'
            },
            end: {
                'background-position': '0 100px'
            }
        });
        $('#clouds1').parallax({
            time: 50000,
            start: {
                backgroundPosition: '904px -20px'
            },
            end: {
                'background-position': '0 -20px'
            }
        });
        $('#clouds2').parallax({
            time: 29000,
            start: {
                backgroundPosition: '904px -20px'
            },
            end: {
                'background-position': '0 -20px'
            }
        });
        $('#sunset').animate({
            opacity: 1,
            'margin-top': -50
        },
        6000);
    }
});
