    Function.prototype.Bind = function() {
        var method = this, args = Array.Clone(arguments), context = args.shift();
        return function() {
		    method.apply(context, args);
	    }
    }

    Array.Clone = function(iterable) {
        if (!iterable) return [];
            if (iterable.toArray) {
                return iterable.toArray();
            } else {
            var results = [];
            for (var i = 0; i < iterable.length; i++)
                results.push(iterable[i]);
            return results;
        }
    }

    var Events = {
	    __events: [],

	    AddEventListener: function(source, type, delegate, captures) {
		    captures = captures? captures : false;
		    if(document.addEventListener) source.addEventListener(type, delegate, captures);
		    else if(document.attachEvent) source.attachEvent('on' + type, delegate);
		    else source['on' + type] = delegate;

		    Events.__events.push({s:source,e:type,d:delegate});
	    },

	    RemoveEventListener: function(source, type, delegate) {
		    if(document.addEventListener) source.removeEventListener(type, delegate, false);
		    else if(document.attachEvent) source.detachEvent('on' + type, delegate);
		    else source['on' + type] = null;
	    },

	    Dispose: function() {
		    for(var i=0; i<Events.__events.length; i++) {
			    var e = Events.__events[i];
			    Events.RemoveEventListener(e.s, e.e, e.d);
		    }
	    }
    }
    Events.AddEventListener(window, 'unload', Events.Dispose);

    function getElementsByClass(searchClass,node,tag) {
	    var classElements = new Array();
	    if ( node == null )
		    node = document;
	    if ( tag == null )
		    tag = '*';
	    var els = node.getElementsByTagName(tag);
	    var elsLen = els.length;
	    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	    for (i = 0, j = 0; i < elsLen; i++) {
		    if ( pattern.test(els[i].className) ) {
			    classElements[j] = els[i];
			    j++;
		    }
	    }
	    return classElements;
    }

    function showChart(ch, lk, mode) {
        var x = document.getElementById(ch);
        if (x) { 
            if (mode == 1) {
                x.className = "main_links_items_chart_display";
            } else {
                x.className = "main_links_items_chart";
            }
        }
        x = document.getElementById(lk);
        if (x) { 
            if (mode == 1) {
                x.className = "main_links_items_story_display";
            } else {
                x.className = "main_links_items_story";
            }
        }    
        return false;
    }

    function MoneyMainPromo() {    
        var arrDivs = getElementsByClass("main_links_items"); 
        for(var i = 0; i < arrDivs.length; ++i) {
            var elDiv = arrDivs[i];
            var cht = elDiv.getAttribute("chart");
            var lnk = elDiv.getAttribute("link");
            elDiv.removeAttribute("chart");            
            Events.AddEventListener(elDiv, "mouseover", showChart.Bind(null,cht,lnk,1))
            Events.AddEventListener(elDiv, "mouseout", showChart.Bind(null,cht,lnk,2))
        }       
        return false;
    }
    MoneyMainPromo();