﻿/// <reference path="jquery-1.4.1.js"/>

(function ($) {
    
    //Plug-in name
    var name_space = 'FadeInOutKO';

    var fadeinspeed  = 250;
    var fadeoutspeed = 200;

    $.fn[name_space] = function (options) {

        var elements = this;

        var settings = $.extend({
            menu_name : ''
        }, options);


        elements.each(function () {
            $(this).append('<div class="hover"><div class="hov"></div></div>').each(function () {
                var $span = $('> div.hover', this).css('opacity', 0);
                $(this).hover(function () {
                    $span.stop().fadeTo(fadeinspeed, 1);
                    $(options.menu_name).css('color', '#fff');
                    $(this).css("cursor", "pointer");
                }, function () {
                    $(options.menu_name).css('color', '#8b0000');
                    $span.stop().fadeTo(fadeoutspeed, 0);
                    $(this).css("cursor", "default");
                });
            });
        });

        //method chain
        return this;
    };

})(jQuery);

(function ($) {

    //Pluging name
    var name_space = 'SimpleHover';

    $.fn[name_space] = function (options) {

        var elements = this;

        elements.each(
            function () {
                $(this).hover(
                    function () { $(this).css('color', '#fff'); $(this).css("cursor", "pointer");},
                    function () { $(this).css('color', '#8b0000'); $(this).css("cursor", "default");}
                );
            }
        );

        return this;
    };

})(jQuery);


(function ($) {

    var name_space = 'komove';

    $.fn[name_space] =
    function (options) {
        var elements = this;

        options = $.extend({
            'stdevdiff': 1.0,
            'stdev': 20.0,
            'meanReversion': 0.05
        }, options);

        this.click(function () {
            var $this = $(this);
            var currentStdev = 7.0;
            var originalLeft = parseFloat($this.css('left'));
            var val = setInterval(
            function () {
                var left = parseFloat($this.css('left'));
                var normRand = easynormrand();
                var diff = left - originalLeft;
                var change = normRand * options.stdev - diff * options.meanReversion;

                var newleft = Math.round((left + change) * 100) / 100 + "px";

                $this.animate({ left: newleft }, 100);

                currentStdev = currentStdev - options.stdevdiff < 0.0 ? 0.0 : currentStdev - options.stdevdiff;

                if (currentStdev == 0.0 && diff == 0.0) {
                    clearInterval(val);
                }

            }, 100);
        });

        return this;
    };

})(jQuery);

function falling(objname, init_vx, topDiff)
{
    var target = new Array();
    
    target["top"] = "-=" + topDiff + "px";

    $(objname).animate( {top: "+700px"}, 1200, "easeInQuad" ).animate( {top: "10px"}, 1200, "easeOutQuad" ) ;    
}

function flashObjectRandom(objname, speedmin, speedmax, easingname, opacityFrom, opacityTo)
{
    var rand = Math.random();
    var speed = speedmin + ( speedmax - speedmin ) * rand;

    flashObject(objname, speed, easingname, opacityFrom, opacityTo);
}


function flashObject(objname, speed, easingname, opacityFrom, opacityTo) {
    //$(objname).animate( {opacity : 1.0 }, speed, easingname, function(){ $(objname).animate({opacity : 0.0 }, speed, easingname); }); 
    var x = new Array();
    x["opacity"] = opacityTo;

    var y = new Array();
    y["opacity"] = opacityFrom;

    $(objname).css("opacity","0").animate( {opacity : 0.8 }, speed, easingname, function(){ $(objname).animate({opacity : 0.0 }, speed, easingname); } );

}

function successiveAnimation() {

    return function (animationCommands, callback) {

    var numCommands = animationCommands.length;
    var functions = new Array();
    var _callback = callback;

    functions[numCommands] = _callback;

    for (var i=numCommands-1; i>=0; i--) 
    {
        var commandMap = animationCommands[i];

        var selector    = commandMap["selector"];
        var commandtype = commandMap["commandtype"]; // animate, effect ...
        var speed       = commandMap["speed"];

        if (commandtype=="animate" || typeof commandtype == 'undefined')
        {
            var easing      = commandMap["easing"]; // linear, swing, easeInQuad, easeOutQuad ...
            var propertyMap = commandMap["property"];

            if ( typeof easing == 'undefined')
                easing = "linear";
         
            functions[i] = (function(l, inselector, inmap, ineasing, inspeed){  
                var k = l;
                var m_map = inmap;
                var m_easing = ineasing;
                var m_speed  = inspeed;
                var m_selecotr  = inselector;
                return function() {
                    $(m_selecotr).animate( m_map, m_speed, m_easing, functions[k+1] );
                }
            })(i, selector, propertyMap, easing, speed);
        }
        else if (commandtype=="effect" )
        {
            var effecttype  = commandMap["effecttype"];
            var propertyMap = commandMap["property"];

            functions[i] = (function(l, inselector, ineffect, inmap, inspeed){  
                var k = l;
                var m_map = inmap;
                var m_speed  = inspeed;
                var m_selecotr  = inselector;
                var m_effect  = ineffect;
                return function() {
                  $(m_selecotr).effect( m_effect, m_map, m_speed, functions[k+1] );
                }
            })(i, selector, effecttype, propertyMap, speed);    
        }
        else if (commandtype=="toggle" )
        {
            var effecttype  = commandMap["effecttype"];
            var propertyMap = commandMap["property"];

            functions[i] = (function(l, inselector, ineffect, inmap, inspeed){  
                var k = l;
                var m_map = inmap;
                var m_speed  = inspeed;
                var m_selecotr  = inselector;
                var m_effect  = ineffect;
                return function() {
                  //$(m_selecotr).hide( m_effect, m_map, m_speed, functions[k+1] );
                  $(m_selecotr).toggle( m_speed, functions[k+1] );
                }
            })(i, selector, effecttype, propertyMap, speed);    
        }
        else if (commandtype=="show" )
        {
            var effecttype  = commandMap["effecttype"];
            var propertyMap = commandMap["property"];

            functions[i] = (function(l, inselector, ineffect, inmap, inspeed){  
                var k = l;
                var m_map = inmap;
                var m_speed  = inspeed;
                var m_selecotr  = inselector;
                var m_effect  = ineffect;
                return function() {
                  //$(m_selecotr).hide( m_effect, m_map, m_speed, functions[k+1] );
                  $(m_selecotr).show( m_speed, functions[k+1] );
                }
            })(i, selector, effecttype, propertyMap, speed);    
        }

    }

    return function() {   
        return functions[0]();
    }
}
}
