var dynamicConfigDataProvider = function(myInputObject)	{
	switch(typeof myInputObject)	{
	case "function":
		return myInputObject();
	case "object":
		return shuffleObject(myInputObject);
	default:
		return myInputObject;
	}
};

var shuffleObject = function(myObject)	{
	return myObject[ (Math.random() * myObject.length) | 0 ];
};





var lineAnimatior = {
    count: null,
    elements: null,
    opacityStart: 0.4,
    opacityEnd: 1.0,
    animateTime: 2500,
    pauseTime: 160,
    easing: 'easeOutQuint',
	position: 0,
	animateEnd: 1000,
    startY: 50,
    heightY: 50,
	width: 956,
    timeDiffBetween: null,
	animateStart: null,

    init: function (configurationObject, css, colors) {
        var self = lineAnimatior = $.extend(true, lineAnimatior, configurationObject);
		var width = self.width = css.width;
        css.width += "px";
        css.height += "px";
        
        self.timeDiffBetween = self.animateTime;
        self.animateStart = (-width) + "px";
        self.animateEnd = (self.animateEnd + width) + "px";

		var l = self.count;
		var i = 0;
		var elements = Array(l);
		var first = $("body").children().first();

		do first = elements[i] = $("<div style='position:absolute;display:none'>&nbsp;</div>").insertBefore(first).css(css).css("background-color", colors[i++]);
		while(i != l);
        
        self.elements = elements;
                
        return self;
    },

    start: function () {
        var self = lineAnimatior;
        var elements = self.elements;
        var l = self.count;
        var waitTimeBetween = self.pauseTime;
        var timeDiffBetween = self.timeDiffBetween + waitTimeBetween;
        var fullTime = (self.animateTime + waitTimeBetween) * l;
        var i = 0;
        self.position = -1;

		do	{
			var time;
			setInterval(self.animateLine, fullTime + (time = i++ * timeDiffBetween));
			if(i == 0) self.animateLine();
			else setTimeout(self.animateLine, time);
		}
		while (i != l);
    },

	animateLine: function()	{
		var self = lineAnimatior;
		$(self.elements[ self.position = (self.position +1) % self.count ]).css({
			opacity: self.opacityStart,
			top: (self.startY + ((self.heightY * Math.random()) | 0)) + "px",
			left: self.animateStart
		}).show().animate({
			left: self.animateEnd,
			opacity: self.opacityEnd
		}, self.timeDiffBetween, dynamicConfigDataProvider(self.easing), self.animateLineEnd);
	},

	animateLineEnd: function()	{
		$(lineAnimatior.elements[ self.position ]).hide();
	}
};

$(function () {
    lineAnimatior.init({
    	count: 2,
		opacityStart: 1.0,
		opacityEnd: 0.8,
		animateTime: 7500,
		pauseTime: 1000,
		animateEnd: 1400,
		startY: 50,
		heightY: 500,
		easing: ['easeInQuad', 'easeOutQuad', 'easeInOutQuad', 'easeInExpo', 'easeOutExpo', 'easeInOutExpo', 'easeInBack', 'easeOutBack', 'easeInOutBack', 'easeInSine', 'easeOutSine', 'jswing', 'linear', 'swing'],
    }, {
		width: screen.width,
		height: 1,
		zIndex: -10
    }, ["#9ac841", "#969897"]).start();
});















