/*
*	Rollover
*	A JS class for preloading, highlighting, rollover images
*	
*	Requires jQuery library (http://www.jquery.com),
*   jQuery.Class plug-in (http://github.com/taylanpince/jquery-class)
*	
*	Taylan Pince (taylanpince at gmail dot com) - March 12, 2010
*/

$.namespace("core.RollOverMenu");

core.RollOverMenu = $.Class.extend({
    
    selector : "",
    active_menu : "",
	extension : "-on",
    
    rollover_path : function(src) {
        return src.replace(".png", this.extension + ".png");
    },
    
    rollout_path : function(src) {
        return src.replace(this.extension + ".png", ".png");
    },
    
    activate_rollover : function(elem) {
		if ($(elem).find("img").size() > 0) {
        	$(elem).find("img").attr("src", this.rollover_path($(elem).find("img").attr("src")));
		}
    },
    
    rollover : function(evt) {
        if (!$(evt.currentTarget).hasClass("active")) {
            this.activate_rollover(evt.currentTarget);
        }
    },
    
    rollout : function(evt) {
        if (!$(evt.currentTarget).hasClass("active") && $(evt.currentTarget).find("img").size() > 0) {
            $(evt.currentTarget).find("img").attr("src", this.rollout_path($(evt.currentTarget).find("img").attr("src")));
        }
    },
    
    preload : function(index, elem) {
        var img = new Image();
        
        img.src = this.rollover_path($(elem).attr("src"));
    },
    
    mark_active : function(index, elem) {
        if ($(elem).hasClass(this.active_menu)) {
            $(elem).addClass("active");
            
            this.activate_rollover(elem);
        }
    },
    
    init : function(selector, active_menu, extension, images) {
        this.selector = selector;
        
        if (active_menu && active_menu != "") {
            this.active_menu = active_menu;
            
            $(this.selector).find("a").each(this.mark_active.bind(this));
        }
		
		if (extension) {
			this.extension = extension;
		}
        
	    $(this.selector).find("img").each(this.preload.bind(this));
    	$(this.selector).find("a").not("active").hover(this.rollover.bind(this), this.rollout.bind(this));
    }
    
});

